summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-15 09:41:34 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-15 09:41:34 +0000
commitcf178685aca107aa37c748de11da01562e78c46c (patch)
tree84d60b39c1744edcbdd4dbfc5026583914432dba
parentAdding upstream version 5.6.1+really5.4.5. (diff)
downloadxz-utils-upstream.tar.xz
xz-utils-upstream.zip
Adding upstream version 5.6.2.upstream/5.6.2upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--AUTHORS49
-rw-r--r--CMakeLists.txt1115
-rw-r--r--COPYING103
-rw-r--r--COPYING.0BSD11
-rw-r--r--ChangeLog17568
-rw-r--r--INSTALL220
-rw-r--r--Makefile.am85
-rw-r--r--Makefile.in150
-rw-r--r--NEWS716
-rw-r--r--PACKAGERS30
-rw-r--r--README57
-rw-r--r--THANKS13
-rw-r--r--TODO4
-rw-r--r--aclocal.m46
-rwxr-xr-xautogen.sh22
-rwxr-xr-xbuild-aux/config.guess102
-rwxr-xr-xbuild-aux/config.rpath2
-rwxr-xr-xbuild-aux/config.sub239
-rw-r--r--build-aux/ltmain.sh361
-rw-r--r--build-aux/manconv.sh6
-rw-r--r--build-aux/version.sh6
-rw-r--r--cmake/remove-ordinals.cmake5
-rw-r--r--cmake/tuklib_common.cmake7
-rw-r--r--cmake/tuklib_cpucores.cmake7
-rw-r--r--cmake/tuklib_integer.cmake76
-rw-r--r--cmake/tuklib_large_file_support.cmake7
-rw-r--r--cmake/tuklib_mbstr.cmake7
-rw-r--r--cmake/tuklib_physmem.cmake7
-rw-r--r--cmake/tuklib_progname.cmake7
-rw-r--r--config.h.in112
-rwxr-xr-xconfigure4752
-rw-r--r--configure.ac316
-rw-r--r--debug/Makefile.am9
-rw-r--r--debug/Makefile.in29
-rw-r--r--debug/crc32.c5
-rw-r--r--debug/full_flush.c5
-rw-r--r--debug/hex2bin.c5
-rw-r--r--debug/known_sizes.c5
-rw-r--r--debug/memusage.c5
-rw-r--r--debug/repeat.c5
-rw-r--r--debug/sync_flush.c5
-rw-r--r--debug/testfilegen-arm64.c116
-rw-r--r--debug/translation.bash5
-rw-r--r--doc/api/annotated.html68
-rw-r--r--doc/api/base_8h.html580
-rw-r--r--doc/api/bc_s.pngbin675 -> 0 bytes
-rw-r--r--doc/api/bc_sd.pngbin604 -> 0 bytes
-rw-r--r--doc/api/bcj_8h.html105
-rw-r--r--doc/api/block_8h.html758
-rw-r--r--doc/api/check_8h.html340
-rw-r--r--doc/api/classes.html60
-rw-r--r--doc/api/closed.pngbin132 -> 0 bytes
-rw-r--r--doc/api/container_8h.html1279
-rw-r--r--doc/api/delta_8h.html132
-rw-r--r--doc/api/dir_b17a1d403082bd69a703ed987cf158fb.html104
-rw-r--r--doc/api/doc.svg12
-rw-r--r--doc/api/docd.svg12
-rw-r--r--doc/api/doxygen.css2017
-rw-r--r--doc/api/doxygen.svg28
-rw-r--r--doc/api/files.html74
-rw-r--r--doc/api/filter_8h.html1342
-rw-r--r--doc/api/folderclosed.svg11
-rw-r--r--doc/api/folderclosedd.svg11
-rw-r--r--doc/api/folderopen.svg17
-rw-r--r--doc/api/folderopend.svg12
-rw-r--r--doc/api/functions.html210
-rw-r--r--doc/api/functions_vars.html210
-rw-r--r--doc/api/globals.html272
-rw-r--r--doc/api/globals_defs.html119
-rw-r--r--doc/api/globals_enum.html71
-rw-r--r--doc/api/globals_eval.html103
-rw-r--r--doc/api/globals_func.html177
-rw-r--r--doc/api/globals_type.html68
-rw-r--r--doc/api/hardware_8h.html123
-rw-r--r--doc/api/index.html53
-rw-r--r--doc/api/index_8h.html1268
-rw-r--r--doc/api/index__hash_8h.html311
-rw-r--r--doc/api/lzma12_8h.html436
-rw-r--r--doc/api/lzma_8h.html109
-rw-r--r--doc/api/nav_f.pngbin167 -> 0 bytes
-rw-r--r--doc/api/nav_fd.pngbin144 -> 0 bytes
-rw-r--r--doc/api/nav_g.pngbin95 -> 0 bytes
-rw-r--r--doc/api/nav_h.pngbin97 -> 0 bytes
-rw-r--r--doc/api/nav_hd.pngbin104 -> 0 bytes
-rw-r--r--doc/api/open.pngbin121 -> 0 bytes
-rw-r--r--doc/api/splitbar.pngbin309 -> 0 bytes
-rw-r--r--doc/api/splitbard.pngbin278 -> 0 bytes
-rw-r--r--doc/api/stream__flags_8h.html348
-rw-r--r--doc/api/structlzma__allocator.html153
-rw-r--r--doc/api/structlzma__block.html347
-rw-r--r--doc/api/structlzma__filter.html114
-rw-r--r--doc/api/structlzma__index__iter.html407
-rw-r--r--doc/api/structlzma__mt.html256
-rw-r--r--doc/api/structlzma__options__bcj.html95
-rw-r--r--doc/api/structlzma__options__delta.html113
-rw-r--r--doc/api/structlzma__options__lzma.html363
-rw-r--r--doc/api/structlzma__stream.html251
-rw-r--r--doc/api/structlzma__stream__flags.html134
-rw-r--r--doc/api/sync_off.pngbin857 -> 0 bytes
-rw-r--r--doc/api/sync_on.pngbin851 -> 0 bytes
-rw-r--r--doc/api/tab_a.pngbin135 -> 0 bytes
-rw-r--r--doc/api/tab_ad.pngbin133 -> 0 bytes
-rw-r--r--doc/api/tab_b.pngbin178 -> 0 bytes
-rw-r--r--doc/api/tab_bd.pngbin157 -> 0 bytes
-rw-r--r--doc/api/tab_h.pngbin179 -> 0 bytes
-rw-r--r--doc/api/tab_hd.pngbin168 -> 0 bytes
-rw-r--r--doc/api/tab_s.pngbin208 -> 0 bytes
-rw-r--r--doc/api/tab_sd.pngbin171 -> 0 bytes
-rw-r--r--doc/api/tabs.css62
-rw-r--r--doc/api/version_8h.html239
-rw-r--r--doc/api/vli_8h.html323
-rw-r--r--doc/examples/01_compress_easy.c7
-rw-r--r--doc/examples/02_decompress.c5
-rw-r--r--doc/examples/03_compress_custom.c5
-rw-r--r--doc/examples/04_compress_easy_mt.c5
-rw-r--r--doc/examples/11_file_info.c205
-rw-r--r--doc/examples/Makefile6
-rw-r--r--doc/examples_old/xz_pipe_comp.c127
-rw-r--r--doc/examples_old/xz_pipe_decomp.c123
-rw-r--r--doc/lzma-file-format.txt16
-rw-r--r--doc/man/pdf-a4/lzmainfo-a4.pdfbin16384 -> 0 bytes
-rw-r--r--doc/man/pdf-a4/xz-a4.pdfbin114746 -> 0 bytes
-rw-r--r--doc/man/pdf-a4/xzdec-a4.pdfbin19978 -> 0 bytes
-rw-r--r--doc/man/pdf-a4/xzdiff-a4.pdfbin17200 -> 0 bytes
-rw-r--r--doc/man/pdf-a4/xzgrep-a4.pdfbin18338 -> 0 bytes
-rw-r--r--doc/man/pdf-a4/xzless-a4.pdfbin15029 -> 0 bytes
-rw-r--r--doc/man/pdf-a4/xzmore-a4.pdfbin15203 -> 0 bytes
-rw-r--r--doc/man/pdf-letter/lzmainfo-letter.pdfbin16394 -> 0 bytes
-rw-r--r--doc/man/pdf-letter/xz-letter.pdfbin115882 -> 0 bytes
-rw-r--r--doc/man/pdf-letter/xzdec-letter.pdfbin19970 -> 0 bytes
-rw-r--r--doc/man/pdf-letter/xzdiff-letter.pdfbin17227 -> 0 bytes
-rw-r--r--doc/man/pdf-letter/xzgrep-letter.pdfbin18322 -> 0 bytes
-rw-r--r--doc/man/pdf-letter/xzless-letter.pdfbin15022 -> 0 bytes
-rw-r--r--doc/man/pdf-letter/xzmore-letter.pdfbin15159 -> 0 bytes
-rw-r--r--doc/man/txt/lzmainfo.txt10
-rw-r--r--doc/man/txt/xz.txt752
-rw-r--r--doc/man/txt/xzdec.txt12
-rw-r--r--doc/man/txt/xzdiff.txt49
-rw-r--r--doc/man/txt/xzgrep.txt66
-rw-r--r--doc/man/txt/xzless.txt13
-rw-r--r--doc/man/txt/xzmore.txt31
-rw-r--r--doc/xz-file-format.txt33
-rw-r--r--dos/Makefile5
-rw-r--r--dos/config.h20
-rw-r--r--doxygen/Doxyfile2672
-rwxr-xr-xdoxygen/update-doxygen137
-rwxr-xr-xextra/7z2lzma/7z2lzma.bash6
-rw-r--r--extra/scanlzma/scanlzma.c2
-rw-r--r--lib/Makefile.am14
-rw-r--r--lib/Makefile.in19
-rw-r--r--lib/getopt-cdefs.h72
-rw-r--r--lib/getopt-core.h98
-rw-r--r--lib/getopt-ext.h79
-rw-r--r--lib/getopt-pfx-core.h68
-rw-r--r--lib/getopt-pfx-ext.h72
-rw-r--r--lib/getopt.c1142
-rw-r--r--lib/getopt.in.h230
-rw-r--r--lib/getopt1.c62
-rw-r--r--lib/getopt_int.h111
-rw-r--r--m4/ax_check_capsicum.m485
-rw-r--r--m4/ax_pthread.m42
-rw-r--r--m4/build-to-host.m479
-rw-r--r--m4/getopt.m481
-rw-r--r--m4/gettext.m493
-rw-r--r--m4/host-cpu-c-abi.m4245
-rw-r--r--m4/iconv.m438
-rw-r--r--m4/intlmacosx.m418
-rw-r--r--m4/lib-ld.m414
-rw-r--r--m4/lib-link.m434
-rw-r--r--m4/lib-prefix.m429
-rw-r--r--m4/libtool.m4234
-rw-r--r--m4/ltoptions.m46
-rw-r--r--m4/ltsugar.m42
-rw-r--r--m4/ltversion.m412
-rw-r--r--m4/lt~obsolete.m42
-rw-r--r--m4/nls.m42
-rw-r--r--m4/po.m43
-rw-r--r--m4/posix-shell.m42
-rw-r--r--m4/progtest.m410
-rw-r--r--m4/tuklib_common.m411
-rw-r--r--m4/tuklib_cpucores.m411
-rw-r--r--m4/tuklib_integer.m445
-rw-r--r--m4/tuklib_mbstr.m411
-rw-r--r--m4/tuklib_physmem.m411
-rw-r--r--m4/tuklib_progname.m413
-rw-r--r--m4/visibility.m415
-rwxr-xr-xmacosx/build.sh113
-rw-r--r--po/Makefile.in.in24
-rw-r--r--po/Makevars57
-rw-r--r--po/POTFILES.in4
-rw-r--r--po/ca.gmobin26876 -> 22289 bytes
-rw-r--r--po/ca.po554
-rw-r--r--po/cs.gmobin17576 -> 15436 bytes
-rw-r--r--po/cs.po520
-rw-r--r--po/da.gmobin12015 -> 11042 bytes
-rw-r--r--po/da.po516
-rw-r--r--po/de.gmobin28599 -> 32560 bytes
-rw-r--r--po/de.po536
-rw-r--r--po/eo.gmobin26139 -> 29979 bytes
-rw-r--r--po/eo.po567
-rw-r--r--po/es.gmobin27192 -> 31175 bytes
-rw-r--r--po/es.po573
-rw-r--r--po/fi.gmobin25923 -> 21441 bytes
-rw-r--r--po/fi.po554
-rw-r--r--po/fr.gmobin22307 -> 19342 bytes
-rw-r--r--po/fr.po590
-rw-r--r--po/hr.gmobin26682 -> 30343 bytes
-rw-r--r--po/hr.po713
-rw-r--r--po/hu.gmobin27374 -> 31658 bytes
-rw-r--r--po/hu.po549
-rw-r--r--po/it.gmobin22043 -> 19130 bytes
-rw-r--r--po/it.po536
-rw-r--r--po/ko.gmobin27394 -> 31480 bytes
-rw-r--r--po/ko.po658
-rw-r--r--po/pl.gmobin26643 -> 30611 bytes
-rw-r--r--po/pl.po548
-rw-r--r--po/pt.gmobin21887 -> 18992 bytes
-rw-r--r--po/pt.po536
-rw-r--r--po/pt_BR.gmobin26890 -> 22302 bytes
-rw-r--r--po/pt_BR.po554
-rw-r--r--po/ro.gmobin28538 -> 32640 bytes
-rw-r--r--po/ro.po597
-rw-r--r--po/sr.gmobin27551 -> 23849 bytes
-rw-r--r--po/sr.po536
-rw-r--r--po/sv.gmobin26576 -> 30379 bytes
-rw-r--r--po/sv.po565
-rw-r--r--po/tr.gmobin26545 -> 22029 bytes
-rw-r--r--po/tr.po554
-rw-r--r--po/uk.gmobin35322 -> 40332 bytes
-rw-r--r--po/uk.po574
-rw-r--r--po/vi.gmobin28619 -> 32859 bytes
-rw-r--r--po/vi.po570
-rw-r--r--po/xz.pot494
-rw-r--r--po/xz.pot-header7
-rw-r--r--po/zh_CN.gmobin25247 -> 22476 bytes
-rw-r--r--po/zh_CN.po557
-rw-r--r--po/zh_TW.gmobin24823 -> 20613 bytes
-rw-r--r--po/zh_TW.po554
-rw-r--r--po4a/.gitignore2
-rw-r--r--po4a/de.po5366
-rw-r--r--po4a/fr.po5646
-rw-r--r--po4a/ko.po5011
-rw-r--r--po4a/man/de/lzmainfo.15
-rw-r--r--po4a/man/de/xz.1364
-rw-r--r--po4a/man/de/xzdec.17
-rw-r--r--po4a/man/de/xzdiff.163
-rw-r--r--po4a/man/de/xzgrep.176
-rw-r--r--po4a/man/de/xzless.114
-rw-r--r--po4a/man/de/xzmore.153
-rw-r--r--po4a/man/fr/lzmainfo.17
-rw-r--r--po4a/man/fr/xz.1537
-rw-r--r--po4a/man/fr/xzdec.119
-rw-r--r--po4a/man/fr/xzdiff.143
-rw-r--r--po4a/man/fr/xzless.117
-rw-r--r--po4a/man/fr/xzmore.141
-rw-r--r--po4a/man/ko/lzmainfo.15
-rw-r--r--po4a/man/ko/xz.1301
-rw-r--r--po4a/man/ko/xzdec.19
-rw-r--r--po4a/man/ko/xzdiff.152
-rw-r--r--po4a/man/ko/xzgrep.163
-rw-r--r--po4a/man/ko/xzless.112
-rw-r--r--po4a/man/ko/xzmore.144
-rw-r--r--po4a/man/pt_BR/lzmainfo.16
-rw-r--r--po4a/man/pt_BR/xz.1388
-rw-r--r--po4a/man/pt_BR/xzdec.18
-rw-r--r--po4a/man/pt_BR/xzdiff.144
-rw-r--r--po4a/man/pt_BR/xzgrep.163
-rw-r--r--po4a/man/pt_BR/xzless.116
-rw-r--r--po4a/man/pt_BR/xzmore.139
-rw-r--r--po4a/man/ro/lzmainfo.136
-rw-r--r--po4a/man/ro/xz.11205
-rw-r--r--po4a/man/ro/xzdec.140
-rw-r--r--po4a/man/ro/xzdiff.173
-rw-r--r--po4a/man/ro/xzgrep.189
-rw-r--r--po4a/man/ro/xzless.134
-rw-r--r--po4a/man/ro/xzmore.163
-rw-r--r--po4a/man/uk/lzmainfo.15
-rw-r--r--po4a/man/uk/xz.1358
-rw-r--r--po4a/man/uk/xzdec.17
-rw-r--r--po4a/man/uk/xzdiff.159
-rw-r--r--po4a/man/uk/xzgrep.175
-rw-r--r--po4a/man/uk/xzless.113
-rw-r--r--po4a/man/uk/xzmore.154
-rw-r--r--po4a/po4a.conf16
-rw-r--r--po4a/pt_BR.po5192
-rw-r--r--po4a/ro.po5337
-rw-r--r--po4a/uk.po5252
-rwxr-xr-xpo4a/update-po60
-rw-r--r--po4a/xz-man.pot3429
-rw-r--r--src/Makefile.am6
-rw-r--r--src/Makefile.in7
-rw-r--r--src/common/common_w32res.rc5
-rw-r--r--src/common/mythread.h30
-rw-r--r--src/common/sysdefs.h18
-rw-r--r--src/common/tuklib_common.h27
-rw-r--r--src/common/tuklib_config.h2
-rw-r--r--src/common/tuklib_cpucores.c5
-rw-r--r--src/common/tuklib_cpucores.h5
-rw-r--r--src/common/tuklib_exit.c5
-rw-r--r--src/common/tuklib_exit.h9
-rw-r--r--src/common/tuklib_gettext.h5
-rw-r--r--src/common/tuklib_integer.h56
-rw-r--r--src/common/tuklib_mbstr.h5
-rw-r--r--src/common/tuklib_mbstr_fw.c5
-rw-r--r--src/common/tuklib_mbstr_width.c5
-rw-r--r--src/common/tuklib_open_stdxxx.c5
-rw-r--r--src/common/tuklib_open_stdxxx.h5
-rw-r--r--src/common/tuklib_physmem.c25
-rw-r--r--src/common/tuklib_physmem.h5
-rw-r--r--src/common/tuklib_progname.c5
-rw-r--r--src/common/tuklib_progname.h5
-rw-r--r--src/liblzma/Makefile.am8
-rw-r--r--src/liblzma/Makefile.in100
-rw-r--r--src/liblzma/api/Makefile.am25
-rw-r--r--src/liblzma/api/Makefile.in63
-rw-r--r--src/liblzma/api/lzma.h31
-rw-r--r--src/liblzma/api/lzma/base.h25
-rw-r--r--src/liblzma/api/lzma/bcj.h10
-rw-r--r--src/liblzma/api/lzma/block.h5
-rw-r--r--src/liblzma/api/lzma/check.h5
-rw-r--r--src/liblzma/api/lzma/container.h45
-rw-r--r--src/liblzma/api/lzma/delta.h5
-rw-r--r--src/liblzma/api/lzma/filter.h11
-rw-r--r--src/liblzma/api/lzma/hardware.h5
-rw-r--r--src/liblzma/api/lzma/index.h42
-rw-r--r--src/liblzma/api/lzma/index_hash.h5
-rw-r--r--src/liblzma/api/lzma/lzma12.h7
-rw-r--r--src/liblzma/api/lzma/stream_flags.h5
-rw-r--r--src/liblzma/api/lzma/version.h9
-rw-r--r--src/liblzma/api/lzma/vli.h10
-rw-r--r--src/liblzma/check/Makefile.inc15
-rw-r--r--src/liblzma/check/check.c5
-rw-r--r--src/liblzma/check/check.h5
-rw-r--r--src/liblzma/check/crc32_arm64.h122
-rw-r--r--src/liblzma/check/crc32_fast.c158
-rw-r--r--src/liblzma/check/crc32_small.c5
-rw-r--r--src/liblzma/check/crc32_table.c34
-rw-r--r--src/liblzma/check/crc32_table_be.h4
-rw-r--r--src/liblzma/check/crc32_table_le.h4
-rw-r--r--src/liblzma/check/crc32_tablegen.c23
-rw-r--r--src/liblzma/check/crc32_x86.S5
-rw-r--r--src/liblzma/check/crc64_fast.c446
-rw-r--r--src/liblzma/check/crc64_small.c5
-rw-r--r--src/liblzma/check/crc64_table.c16
-rw-r--r--src/liblzma/check/crc64_table_be.h4
-rw-r--r--src/liblzma/check/crc64_table_le.h4
-rw-r--r--src/liblzma/check/crc64_tablegen.c15
-rw-r--r--src/liblzma/check/crc64_x86.S5
-rw-r--r--src/liblzma/check/crc_common.h137
-rw-r--r--src/liblzma/check/crc_macros.h30
-rw-r--r--src/liblzma/check/crc_x86_clmul.h428
-rw-r--r--src/liblzma/check/sha256.c19
-rw-r--r--src/liblzma/common/Makefile.inc6
-rw-r--r--src/liblzma/common/alone_decoder.c5
-rw-r--r--src/liblzma/common/alone_decoder.h5
-rw-r--r--src/liblzma/common/alone_encoder.c5
-rw-r--r--src/liblzma/common/auto_decoder.c5
-rw-r--r--src/liblzma/common/block_buffer_decoder.c5
-rw-r--r--src/liblzma/common/block_buffer_encoder.c5
-rw-r--r--src/liblzma/common/block_buffer_encoder.h5
-rw-r--r--src/liblzma/common/block_decoder.c5
-rw-r--r--src/liblzma/common/block_decoder.h5
-rw-r--r--src/liblzma/common/block_encoder.c5
-rw-r--r--src/liblzma/common/block_encoder.h5
-rw-r--r--src/liblzma/common/block_header_decoder.c5
-rw-r--r--src/liblzma/common/block_header_encoder.c5
-rw-r--r--src/liblzma/common/block_util.c5
-rw-r--r--src/liblzma/common/common.c5
-rw-r--r--src/liblzma/common/common.h5
-rw-r--r--src/liblzma/common/easy_buffer_encoder.c5
-rw-r--r--src/liblzma/common/easy_decoder_memusage.c5
-rw-r--r--src/liblzma/common/easy_encoder.c5
-rw-r--r--src/liblzma/common/easy_encoder_memusage.c5
-rw-r--r--src/liblzma/common/easy_preset.c5
-rw-r--r--src/liblzma/common/easy_preset.h10
-rw-r--r--src/liblzma/common/file_info.c5
-rw-r--r--src/liblzma/common/filter_buffer_decoder.c7
-rw-r--r--src/liblzma/common/filter_buffer_encoder.c5
-rw-r--r--src/liblzma/common/filter_common.c16
-rw-r--r--src/liblzma/common/filter_common.h5
-rw-r--r--src/liblzma/common/filter_decoder.c28
-rw-r--r--src/liblzma/common/filter_decoder.h5
-rw-r--r--src/liblzma/common/filter_encoder.c54
-rw-r--r--src/liblzma/common/filter_encoder.h11
-rw-r--r--src/liblzma/common/filter_flags_decoder.c5
-rw-r--r--src/liblzma/common/filter_flags_encoder.c5
-rw-r--r--src/liblzma/common/hardware_cputhreads.c5
-rw-r--r--src/liblzma/common/hardware_physmem.c5
-rw-r--r--src/liblzma/common/index.c5
-rw-r--r--src/liblzma/common/index.h5
-rw-r--r--src/liblzma/common/index_decoder.c16
-rw-r--r--src/liblzma/common/index_decoder.h5
-rw-r--r--src/liblzma/common/index_encoder.c5
-rw-r--r--src/liblzma/common/index_encoder.h5
-rw-r--r--src/liblzma/common/index_hash.c5
-rw-r--r--src/liblzma/common/lzip_decoder.c5
-rw-r--r--src/liblzma/common/lzip_decoder.h5
-rw-r--r--src/liblzma/common/memcmplen.h37
-rw-r--r--src/liblzma/common/microlzma_decoder.c5
-rw-r--r--src/liblzma/common/microlzma_encoder.c5
-rw-r--r--src/liblzma/common/outqueue.c5
-rw-r--r--src/liblzma/common/outqueue.h10
-rw-r--r--src/liblzma/common/stream_buffer_decoder.c5
-rw-r--r--src/liblzma/common/stream_buffer_encoder.c5
-rw-r--r--src/liblzma/common/stream_decoder.c5
-rw-r--r--src/liblzma/common/stream_decoder.h5
-rw-r--r--src/liblzma/common/stream_decoder_mt.c5
-rw-r--r--src/liblzma/common/stream_encoder.c5
-rw-r--r--src/liblzma/common/stream_encoder_mt.c25
-rw-r--r--src/liblzma/common/stream_flags_common.c5
-rw-r--r--src/liblzma/common/stream_flags_common.h5
-rw-r--r--src/liblzma/common/stream_flags_decoder.c5
-rw-r--r--src/liblzma/common/stream_flags_encoder.c5
-rw-r--r--src/liblzma/common/string_conversion.c26
-rw-r--r--src/liblzma/common/vli_decoder.c5
-rw-r--r--src/liblzma/common/vli_encoder.c5
-rw-r--r--src/liblzma/common/vli_size.c5
-rw-r--r--src/liblzma/delta/Makefile.inc6
-rw-r--r--src/liblzma/delta/delta_common.c5
-rw-r--r--src/liblzma/delta/delta_common.h5
-rw-r--r--src/liblzma/delta/delta_decoder.c10
-rw-r--r--src/liblzma/delta/delta_decoder.h5
-rw-r--r--src/liblzma/delta/delta_encoder.c5
-rw-r--r--src/liblzma/delta/delta_encoder.h5
-rw-r--r--src/liblzma/delta/delta_private.h5
-rw-r--r--src/liblzma/liblzma.pc.in6
-rw-r--r--src/liblzma/liblzma_generic.map7
-rw-r--r--src/liblzma/liblzma_linux.map7
-rw-r--r--src/liblzma/liblzma_w32res.rc5
-rw-r--r--src/liblzma/lz/Makefile.inc6
-rw-r--r--src/liblzma/lz/lz_decoder.c48
-rw-r--r--src/liblzma/lz/lz_decoder.h116
-rw-r--r--src/liblzma/lz/lz_encoder.c13
-rw-r--r--src/liblzma/lz/lz_encoder.h21
-rw-r--r--src/liblzma/lz/lz_encoder_hash.h5
-rw-r--r--src/liblzma/lz/lz_encoder_hash_table.h4
-rw-r--r--src/liblzma/lz/lz_encoder_mf.c5
-rw-r--r--src/liblzma/lzma/Makefile.inc6
-rw-r--r--src/liblzma/lzma/fastpos.h5
-rw-r--r--src/liblzma/lzma/fastpos_table.c4
-rw-r--r--src/liblzma/lzma/fastpos_tablegen.c17
-rw-r--r--src/liblzma/lzma/lzma2_decoder.c5
-rw-r--r--src/liblzma/lzma/lzma2_decoder.h5
-rw-r--r--src/liblzma/lzma/lzma2_encoder.c8
-rw-r--r--src/liblzma/lzma/lzma2_encoder.h5
-rw-r--r--src/liblzma/lzma/lzma_common.h41
-rw-r--r--src/liblzma/lzma/lzma_decoder.c760
-rw-r--r--src/liblzma/lzma/lzma_decoder.h5
-rw-r--r--src/liblzma/lzma/lzma_encoder.c18
-rw-r--r--src/liblzma/lzma/lzma_encoder.h5
-rw-r--r--src/liblzma/lzma/lzma_encoder_optimum_fast.c5
-rw-r--r--src/liblzma/lzma/lzma_encoder_optimum_normal.c7
-rw-r--r--src/liblzma/lzma/lzma_encoder_presets.c5
-rw-r--r--src/liblzma/lzma/lzma_encoder_private.h9
-rw-r--r--src/liblzma/rangecoder/Makefile.inc6
-rw-r--r--src/liblzma/rangecoder/price.h5
-rw-r--r--src/liblzma/rangecoder/price_table.c4
-rw-r--r--src/liblzma/rangecoder/price_tablegen.c22
-rw-r--r--src/liblzma/rangecoder/range_common.h14
-rw-r--r--src/liblzma/rangecoder/range_decoder.h839
-rw-r--r--src/liblzma/rangecoder/range_encoder.h5
-rw-r--r--src/liblzma/simple/Makefile.inc10
-rw-r--r--src/liblzma/simple/arm.c5
-rw-r--r--src/liblzma/simple/arm64.c5
-rw-r--r--src/liblzma/simple/armthumb.c5
-rw-r--r--src/liblzma/simple/ia64.c5
-rw-r--r--src/liblzma/simple/powerpc.c5
-rw-r--r--src/liblzma/simple/riscv.c755
-rw-r--r--src/liblzma/simple/simple_coder.c5
-rw-r--r--src/liblzma/simple/simple_coder.h22
-rw-r--r--src/liblzma/simple/simple_decoder.c5
-rw-r--r--src/liblzma/simple/simple_decoder.h5
-rw-r--r--src/liblzma/simple/simple_encoder.c5
-rw-r--r--src/liblzma/simple/simple_encoder.h5
-rw-r--r--src/liblzma/simple/simple_private.h5
-rw-r--r--src/liblzma/simple/sparc.c5
-rw-r--r--src/liblzma/simple/x86.c16
-rw-r--r--src/liblzma/validate_map.sh6
-rw-r--r--src/lzmainfo/Makefile.am32
-rw-r--r--src/lzmainfo/Makefile.in60
-rw-r--r--src/lzmainfo/lzmainfo.14
-rw-r--r--src/lzmainfo/lzmainfo.c5
-rw-r--r--src/lzmainfo/lzmainfo_w32res.rc5
-rw-r--r--src/scripts/Makefile.am6
-rw-r--r--src/scripts/Makefile.in7
-rw-r--r--src/scripts/xzdiff.195
-rw-r--r--src/scripts/xzdiff.in19
-rw-r--r--src/scripts/xzgrep.1119
-rw-r--r--src/scripts/xzgrep.in8
-rw-r--r--src/scripts/xzless.112
-rw-r--r--src/scripts/xzless.in21
-rw-r--r--src/scripts/xzmore.178
-rw-r--r--src/scripts/xzmore.in3
-rw-r--r--src/xz/Makefile.am10
-rw-r--r--src/xz/Makefile.in57
-rw-r--r--src/xz/args.c186
-rw-r--r--src/xz/args.h8
-rw-r--r--src/xz/coder.c607
-rw-r--r--src/xz/coder.h42
-rw-r--r--src/xz/file_io.c144
-rw-r--r--src/xz/file_io.h21
-rw-r--r--src/xz/hardware.c11
-rw-r--r--src/xz/hardware.h5
-rw-r--r--src/xz/list.c31
-rw-r--r--src/xz/list.h5
-rw-r--r--src/xz/main.c91
-rw-r--r--src/xz/main.h5
-rw-r--r--src/xz/message.c94
-rw-r--r--src/xz/message.h16
-rw-r--r--src/xz/mytime.c105
-rw-r--r--src/xz/mytime.h11
-rw-r--r--src/xz/options.c7
-rw-r--r--src/xz/options.h5
-rw-r--r--src/xz/private.h26
-rw-r--r--src/xz/sandbox.c355
-rw-r--r--src/xz/sandbox.h43
-rw-r--r--src/xz/signals.c29
-rw-r--r--src/xz/signals.h5
-rw-r--r--src/xz/suffix.c17
-rw-r--r--src/xz/suffix.h5
-rw-r--r--src/xz/util.c36
-rw-r--r--src/xz/util.h19
-rw-r--r--src/xz/xz.1469
-rw-r--r--src/xz/xz_w32res.rc5
-rw-r--r--src/xzdec/Makefile.am6
-rw-r--r--src/xzdec/Makefile.in7
-rw-r--r--src/xzdec/lzmadec_w32res.rc5
-rw-r--r--src/xzdec/xzdec.16
-rw-r--r--src/xzdec/xzdec.c180
-rw-r--r--src/xzdec/xzdec_w32res.rc5
-rw-r--r--tests/Makefile.am21
-rw-r--r--tests/Makefile.in65
-rw-r--r--tests/bcj_test.c65
-rw-r--r--tests/compress_prepared_bcj_sparcbin1240 -> 0 bytes
-rw-r--r--tests/compress_prepared_bcj_x86bin1388 -> 0 bytes
-rw-r--r--tests/create_compress_files.c5
-rw-r--r--tests/files/README30
-rw-r--r--tests/files/good-1-sparc-lzma2.xzbin612 -> 0 bytes
-rw-r--r--tests/files/good-1-x86-lzma2.xzbin716 -> 0 bytes
-rw-r--r--tests/ossfuzz/Makefile18
-rw-r--r--tests/ossfuzz/config/fuzz.dict2
-rw-r--r--tests/ossfuzz/config/fuzz.options2
-rw-r--r--tests/ossfuzz/config/fuzz_decode_alone.options5
-rw-r--r--tests/ossfuzz/config/fuzz_decode_stream.options4
-rw-r--r--tests/ossfuzz/config/fuzz_encode_stream.options4
-rw-r--r--tests/ossfuzz/config/fuzz_lzma.dict22
-rw-r--r--tests/ossfuzz/config/fuzz_xz.dict4
-rw-r--r--tests/ossfuzz/fuzz.c82
-rw-r--r--tests/ossfuzz/fuzz_common.h55
-rw-r--r--tests/ossfuzz/fuzz_decode_alone.c41
-rw-r--r--tests/ossfuzz/fuzz_decode_stream.c53
-rw-r--r--tests/ossfuzz/fuzz_encode_stream.c86
-rw-r--r--tests/test_bcj_exact_size.c5
-rw-r--r--tests/test_block_header.c7
-rw-r--r--tests/test_check.c5
-rwxr-xr-xtests/test_compress.sh68
-rwxr-xr-xtests/test_compress_generated_abc1
-rwxr-xr-xtests/test_compress_generated_random1
-rwxr-xr-xtests/test_compress_generated_text1
-rwxr-xr-xtests/test_compress_prepared_bcj_sparc3
-rwxr-xr-xtests/test_compress_prepared_bcj_x863
-rwxr-xr-xtests/test_files.sh29
-rw-r--r--tests/test_filter_flags.c42
-rw-r--r--tests/test_filter_str.c104
-rw-r--r--tests/test_hardware.c5
-rw-r--r--tests/test_index.c192
-rw-r--r--tests/test_index_hash.c5
-rw-r--r--tests/test_lzip_decoder.c85
-rw-r--r--tests/test_memlimit.c5
-rw-r--r--tests/test_microlzma.c568
-rwxr-xr-xtests/test_scripts.sh17
-rw-r--r--tests/test_stream_flags.c5
-rwxr-xr-xtests/test_suffix.sh192
-rw-r--r--tests/test_vli.c5
-rw-r--r--tests/tests.cmake198
-rw-r--r--tests/tests.h5
-rw-r--r--tests/tuktest.h18
-rw-r--r--windows/INSTALL-MSVC.txt44
-rw-r--r--windows/INSTALL-MinGW-w64_with_Autotools.txt49
-rw-r--r--windows/INSTALL-MinGW-w64_with_CMake.txt203
-rw-r--r--windows/INSTALL-MinGW.txt138
-rw-r--r--windows/README-Windows.txt116
-rw-r--r--windows/build-with-cmake.bat35
-rw-r--r--windows/build.bash209
-rw-r--r--windows/liblzma-crt-mixing.txt70
-rw-r--r--windows/vs2013/config.h157
-rw-r--r--windows/vs2013/liblzma.vcxproj363
-rw-r--r--windows/vs2013/liblzma_dll.vcxproj398
-rw-r--r--windows/vs2013/xz_win.sln48
-rw-r--r--windows/vs2017/config.h157
-rw-r--r--windows/vs2017/liblzma.vcxproj363
-rw-r--r--windows/vs2017/liblzma_dll.vcxproj398
-rw-r--r--windows/vs2017/xz_win.sln48
-rw-r--r--windows/vs2019/config.h157
-rw-r--r--windows/vs2019/liblzma.vcxproj364
-rw-r--r--windows/vs2019/liblzma_dll.vcxproj399
-rw-r--r--windows/vs2019/xz_win.sln51
597 files changed, 47716 insertions, 67830 deletions
diff --git a/AUTHORS b/AUTHORS
index 69bbfc3..5eff238 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -2,22 +2,20 @@
Authors of XZ Utils
===================
- XZ Utils is developed and maintained by Lasse Collin
- <lasse.collin@tukaani.org> and Jia Tan <jiat0218@gmail.com>.
+ XZ Utils is developed and maintained by
+ Lasse Collin <lasse.collin@tukaani.org>.
Major parts of liblzma are based on code written by Igor Pavlov,
specifically the LZMA SDK <https://7-zip.org/sdk.html>. Without
this code, XZ Utils wouldn't exist.
- The SHA-256 implementation in liblzma is based on the code found from
- 7-Zip <https://7-zip.org/>, which has a modified version of the SHA-256
- code found from Crypto++ <https://www.cryptopp.com/>. The SHA-256 code
- in Crypto++ was written by Kevin Springle and Wei Dai.
+ The SHA-256 implementation in liblzma is based on code written by
+ Wei Dai in Crypto++ Library <https://www.cryptopp.com/>.
- 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.
+ A few scripts have been adapted from GNU gzip. The original
+ versions were written by Jean-loup Gailly, Charles Levert, and
+ Paul Eggert. Andrew Dudman helped adapting the scripts and their
+ man pages for XZ Utils.
The initial version of the threaded .xz decompressor was written
by Sebastian Andrzej Siewior.
@@ -25,15 +23,36 @@ Authors of XZ Utils
The initial version of the .lz (lzip) decoder was written
by Michał Górny.
- CLMUL-accelerated CRC code was contributed by Ilya Kurdyukov.
+ Architecture-specific CRC optimizations were contributed by
+ Ilya Kurdyukov, Hans Jansen, and Chenxi Mao.
Other authors:
- Jonathan Nieder
- Joachim Henke
- The GNU Autotools-based build system contains files from many authors,
- which I'm not trying to list here.
+ Special author: Jia Tan was a co-maintainer in 2022-2024. He and
+ the team behind him inserted a backdoor (CVE-2024-3094) into
+ XZ Utils 5.6.0 and 5.6.1 releases. He suddenly disappeared when
+ this was discovered.
- Several people have contributed fixes or reported bugs. Most of them
- are mentioned in the file THANKS.
+ Many people have contributed improvements or reported bugs.
+ Most of these people are mentioned in the file THANKS.
+
+ The translations of the command line tools and man pages have been
+ contributed by many people via the Translation Project:
+
+ - https://translationproject.org/domain/xz.html
+ - https://translationproject.org/domain/xz-man.html
+
+ The authors of the translated man pages are in the header comments
+ of the man page files. In the source package, the authors of the
+ translations are in po/*.po and po4a/*.po files.
+
+ Third-party code whose authors aren't listed here:
+
+ - GNU getopt_long() in the 'lib' directory is included for
+ platforms that don't have a usable getopt_long().
+
+ - The build system files from GNU Autoconf, GNU Automake,
+ GNU Libtool, GNU Gettext, Autoconf Archive, and related files.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b214d71..59ecf01 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,32 +1,88 @@
+# SPDX-License-Identifier: 0BSD
+
#############################################################################
#
-# Very limited CMake support for building some parts of XZ Utils
+# CMake support for building XZ Utils
+#
+# The complete CMake-based build hasn't been tested much yet and
+# thus it's still slightly experimental. Testing this especially
+# outside GNU/Linux and Windows would be great now.
+#
+# A few things are still missing compared to the Autotools-based build:
+#
+# - 32-bit x86 assembly code for CRC32 and CRC64 isn't used by default.
+# Use the option -DENABLE_X86_ASM=ON on the CMake command line to
+# enable the assembly files. They are compatible with Linux, *BSDs,
+# Cygwin, MinGW-w64, and Darwin. They are NOT compatible with MSVC.
+#
+# NOTE: The C code includes a generic version compatible with all
+# processors and CLMUL version that requires a new enough processor
+# with the PCLMULQDQ instruction. If the 32-bit x86 assembly files
+# are used, the CLMUL version in the C code is NOT built. On modern
+# processors with CLMUL support, the C code should be faster than
+# the assembly code while on old processors the assembly code wins.
+#
+# - External SHA-256 code isn't supported but it's disabled by
+# default in the Autotools build too (--enable-external-sha256).
+#
+# - Extra compiler warning flags aren't added by default.
+#
+# About CMAKE_BUILD_TYPE:
#
-# For now, this is intended 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.
+# - CMake's standard choices are fine to use for production builds,
+# including "Release" and "RelWithDebInfo".
#
-# On some platforms this builds also xz and xzdec, but these are
-# highly experimental and meant for testing only:
-# - No replacement getopt_long(), libc must have it
-# - No sandboxing support
-# - No translations
+# NOTE: While "Release" uses -O3 by default with some compilers,
+# this file overrides -O3 to -O2 for "Release" builds if
+# CMAKE_C_FLAGS_RELEASE is not defined by the user. At least
+# with GCC and Clang/LLVM, -O3 doesn't seem useful for this
+# package as it can result in bigger binaries without any
+# improvement in speed compared to -O2.
#
-# Other missing things:
-# - No xzgrep or other scripts or their symlinks
-# - No xz tests (liblzma tests only)
+# - Empty value (the default) is handled slightly specially: It
+# adds -DNDEBUG to disable debugging code (assert() and a few
+# other things). No optimization flags are added so an empty
+# CMAKE_BUILD_TYPE is an easy way to build with whatever
+# optimization flags one wants, and so this method is also
+# suitable for production builds.
#
-# 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).
+# If debugging is wanted when using empty CMAKE_BUILD_TYPE,
+# include -UNDEBUG in the CFLAGS environment variable or
+# in the CMAKE_C_FLAGS CMake variable to override -DNDEBUG.
+# With empty CMAKE_BUILD_TYPE, the -UNDEBUG option will go
+# after the -DNDEBUG option on the compiler command line and
+# thus NDEBUG will be undefined.
+#
+# - Non-standard build types like "None" aren't treated specially
+# and thus won't have -DNEBUG. Such non-standard build types
+# SHOULD BE AVOIDED FOR PRODUCTION BUILDS. Or at least one
+# should remember to add -DNDEBUG.
+#
+# If building from xz.git instead of a release tarball, consider
+# the following *before* running cmake:
+#
+# - To get translated messages, install GNU gettext tools (the
+# command msgfmt is needed). Alternatively disable translations
+# by setting ENABLE_NLS=OFF.
+#
+# - To get translated man pages, run po4a/update-po which requires
+# the po4a tool. The build works without this step too.
#
# This file provides the following installation components (if you only
# need liblzma, install only its components!):
-# - liblzma_Runtime
+# - liblzma_Runtime (shared library only)
# - liblzma_Development
-# - xz (on some platforms only)
-# - xzdec (on some platforms only)
+# - liblzma_Documentation (examples and Doxygen-generated API docs as HTML)
+# - xz_Runtime (xz, the symlinks, and possibly translation files)
+# - xz_Documentation (xz man pages and the symlinks)
+# - xzdec_Runtime
+# - xzdec_Documentation (xzdec *and* lzmadec man pages)
+# - lzmadec_Runtime
+# - lzmainfo_Runtime
+# - lzmainfo_Documentation (lzmainfo man pages)
+# - scripts_Runtime (xzdiff, xzgrep, xzless, xzmore)
+# - scripts_Documentation (their man pages)
+# - Documentation (generic docs like README and licenses)
#
# To find the target liblzma::liblzma from other packages, use the CONFIG
# option with find_package() to avoid a conflict with the FindLibLZMA module
@@ -40,12 +96,10 @@
#
# 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.27 FATAL_ERROR)
+# NOTE: Translation support is disabled with CMake older than 3.20.
+cmake_minimum_required(VERSION 3.14...3.29 FATAL_ERROR)
include(CMakePushCheckState)
include(CheckIncludeFile)
@@ -75,9 +129,28 @@ string(REGEX REPLACE
.*$"
"\\1.\\2.\\3" PACKAGE_VERSION "${PACKAGE_VERSION}")
+# With several compilers, CMAKE_BUILD_TYPE=Release uses -O3 optimization
+# which results in bigger code without a clear difference in speed. If
+# no user-defined CMAKE_C_FLAGS_RELEASE is present, override -O3 to -O2
+# to make it possible to recommend CMAKE_BUILD_TYPE=Release.
+if(NOT DEFINED CMAKE_C_FLAGS_RELEASE)
+ set(OVERRIDE_O3_IN_C_FLAGS_RELEASE ON)
+endif()
+
# Among other things, this gives us variables xz_VERSION and xz_VERSION_MAJOR.
project(xz VERSION "${PACKAGE_VERSION}" LANGUAGES C)
+if(OVERRIDE_O3_IN_C_FLAGS_RELEASE)
+ # Looking at CMake's source, there aren't any _FLAGS_RELEASE_INIT
+ # entries where "-O3" would appear as part of some other option,
+ # thus a simple search and replace should be fine.
+ string(REPLACE -O3 -O2 CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
+
+ # Update the cache value while keeping its docstring unchanged.
+ set_property(CACHE CMAKE_C_FLAGS_RELEASE
+ PROPERTY VALUE "${CMAKE_C_FLAGS_RELEASE}")
+endif()
+
# We need a compiler that supports enough C99 or newer (variable-length arrays
# aren't needed, those are optional in C17). Setting CMAKE_C_STANDARD here
# makes it the default for all targets. It doesn't affect the INTERFACE so
@@ -86,9 +159,21 @@ project(xz VERSION "${PACKAGE_VERSION}" LANGUAGES C)
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)
+# Support 32-bit x86 assembly files.
+if(NOT MSVC)
+ option(ENABLE_X86_ASM "Enable 32-bit x86 assembly code" OFF)
+ if(ENABLE_X86_ASM)
+ enable_language(ASM)
+ endif()
+endif()
+
# On Apple OSes, don't build executables as bundles:
set(CMAKE_MACOSX_BUNDLE OFF)
+# Set CMAKE_INSTALL_LIBDIR and friends. This needs to be done before
+# the LOCALEDIR_DEFINITION workaround below.
+include(GNUInstallDirs)
+
# windres from GNU binutils can be tricky with command line arguments
# that contain spaces or other funny characters. Unfortunately we need
# a space in PACKAGE_NAME. Using \x20 to encode the US-ASCII space seems
@@ -116,10 +201,15 @@ if((MINGW OR CYGWIN OR MSYS) AND (
# Keep the original PACKAGE_NAME intact for generation of liblzma.pc.
string(APPEND CMAKE_RC_FLAGS " --use-temp-file")
string(REPLACE " " "\\x20" PACKAGE_NAME_DEFINITION "${PACKAGE_NAME}")
+
+ # Use octal because "Program Files" would become \x20F.
+ string(REPLACE " " "\\040" LOCALEDIR_DEFINITION
+ "${CMAKE_INSTALL_FULL_LOCALEDIR}")
else()
# Elsewhere a space is safe. This also keeps things compatible with
# EBCDIC in case CMake-based build is ever done on such a system.
set(PACKAGE_NAME_DEFINITION "${PACKAGE_NAME}")
+ set(LOCALEDIR_DEFINITION "${CMAKE_INSTALL_FULL_LOCALEDIR}")
endif()
# Definitions common to all targets:
@@ -165,32 +255,80 @@ set(LIBS)
# Check for clock_gettime(). Do this before checking for threading so
# that we know there if CLOCK_MONOTONIC is available.
-if(NOT WIN32)
- 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.
- # Add librt for the next check for HAVE_CLOCK_GETTIME. If it is
- # found after including the library, we know that librt is required.
- list(INSERT CMAKE_REQUIRED_LIBRARIES 0 rt)
- check_symbol_exists(clock_gettime time.h HAVE_CLOCK_GETTIME_LIBRT)
-
- # If it was found now, add librt to all targets and keep it in
- # CMAKE_REQUIRED_LIBRARIES for further tests too.
- if(HAVE_CLOCK_GETTIME_LIBRT)
- link_libraries(rt)
- set(LIBS "-lrt") # For liblzma.pc
- else()
- list(REMOVE_AT CMAKE_REQUIRED_LIBRARIES 0)
- endif()
+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.
+ # Add librt for the next check for HAVE_CLOCK_GETTIME. If it is
+ # found after including the library, we know that librt is required.
+ list(INSERT CMAKE_REQUIRED_LIBRARIES 0 rt)
+ check_symbol_exists(clock_gettime time.h HAVE_CLOCK_GETTIME_LIBRT)
+
+ # If it was found now, add librt to all targets and keep it in
+ # CMAKE_REQUIRED_LIBRARIES for further tests too.
+ if(HAVE_CLOCK_GETTIME_LIBRT)
+ link_libraries(rt)
+ set(LIBS "-lrt") # For liblzma.pc
+ else()
+ list(REMOVE_AT CMAKE_REQUIRED_LIBRARIES 0)
endif()
+endif()
- if(HAVE_CLOCK_GETTIME OR HAVE_CLOCK_GETTIME_LIBRT)
- add_compile_definitions(HAVE_CLOCK_GETTIME)
+if(HAVE_CLOCK_GETTIME OR HAVE_CLOCK_GETTIME_LIBRT)
+ add_compile_definitions(HAVE_CLOCK_GETTIME)
- # Check if CLOCK_MONOTONIC is available for clock_gettime().
- check_symbol_exists(CLOCK_MONOTONIC time.h HAVE_CLOCK_MONOTONIC)
- tuklib_add_definition_if(ALL HAVE_CLOCK_MONOTONIC)
+ # Check if CLOCK_MONOTONIC is available for clock_gettime().
+ check_symbol_exists(CLOCK_MONOTONIC time.h HAVE_CLOCK_MONOTONIC)
+ tuklib_add_definition_if(ALL HAVE_CLOCK_MONOTONIC)
+endif()
+
+# Translation support requires CMake 3.20 because it added the Intl::Intl
+# target so we don't need to play with the individual variables.
+#
+# The definition ENABLE_NLS is added only to those targets that use it, thus
+# it's not done here. (xz has translations, xzdec doesn't.)
+if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.20")
+ find_package(Intl)
+ find_package(Gettext)
+
+ if(Intl_FOUND)
+ option(ENABLE_NLS "Native Language Support (translated messages)" ON)
+
+ # If translation support is enabled but neither gettext tools or
+ # pre-generated .gmo files exist, translation support cannot be
+ # enabled.
+ #
+ # The detection of pre-generated .gmo files is done by only
+ # checking for the existence of a single .gmo file; Ukrainian
+ # is one of many translations that gets regular updates.
+ if(ENABLE_NLS AND NOT GETTEXT_FOUND AND
+ NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/po/uk.gmo")
+ # This only sets the variable, not the cache variable!
+ set(ENABLE_NLS OFF)
+
+ # This message is shown only when new enough CMake is used and
+ # library support for translations was found. The assumptions is
+ # that in this situation the user might have interest in the
+ # translations. This also keeps this code simpler.
+ message(WARNING "Native language support (NLS) has been disabled. "
+ "NLS support requires either gettext tools or "
+ "pre-generated .gmo files. The latter are only "
+ "available in distribution tarballs. "
+ "To avoid this warning, NLS can be explicitly "
+ "disabled by passing -DENABLE_NLS=OFF to cmake.")
+ endif()
+
+ # Warn if NLS is enabled but translated man pages are missing.
+ if(UNIX AND ENABLE_NLS AND
+ NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/po4a/man")
+ message(WARNING "Native language support (NLS) has been enabled "
+ "but pre-generated translated man pages "
+ "were not found and thus they won't be installed. "
+ "Run 'po4a/update-po' to generate them.")
+ endif()
+
+ # The *installed* name of the translation files is "xz.mo".
+ set(TRANSLATION_DOMAIN "xz")
endif()
endif()
@@ -207,14 +345,69 @@ endif()
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_integer.h
- src/common/tuklib_physmem.c
- src/common/tuklib_physmem.h
+if(NOT WIN32)
+ # Symbol versioning only affects ELF shared libraries. The option is
+ # ignored for static libraries.
+ #
+ # Determine the default value so that it's always set with
+ # shared libraries in mind which helps if the build dir is reconfigured
+ # from static to shared libs without resetting the cache variables.
+ set(SYMBOL_VERSIONING_DEFAULT OFF)
+
+ if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND
+ (CMAKE_SYSTEM_PROCESSOR MATCHES "[Mm]icro[Bb]laze" OR
+ CMAKE_C_COMPILER_ID STREQUAL "NVHPC"))
+ # As a special case, GNU/Linux on MicroBlaze gets the generic
+ # symbol versioning because GCC 12 doesn't support the __symver__
+ # attribute on MicroBlaze. On Linux, CMAKE_SYSTEM_PROCESSOR comes
+ # from "uname -m" for native builds (should be "microblaze") or from
+ # the CMake toolchain file (not perfectly standardized but it very
+ # likely has "microblaze" in lower case or mixed case somewhere in
+ # the string).
+ #
+ # NVIDIA HPC Compiler doesn't support symbol versioning but
+ # it uses the linked from the system so the linker script
+ # can still be used to get the generic symbol versioning.
+ set(SYMBOL_VERSIONING_DEFAULT "generic")
+
+ elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ # GNU/Linux-specific symbol versioning for shared liblzma.
+ # This includes a few extra compatibility symbols for RHEL/CentOS 7
+ # which are pointless on non-glibc non-Linux systems.
+ #
+ # Avoid symvers on Linux with non-glibc like musl and uClibc.
+ # In Autoconf it's enough to check that $host_os equals linux-gnu
+ # instead of, for example, linux-musl. CMake doesn't provide such
+ # a method.
+ #
+ # This check is here for now since it's not strictly required
+ # by anything else.
+ check_c_source_compiles(
+ "#include <features.h>
+ #if defined(__GLIBC__) && !defined(__UCLIBC__)
+ int main(void) { return 0; }
+ #else
+ compile error
+ #endif
+ "
+ IS_LINUX_WITH_GLIBC)
+
+ if(IS_LINUX_WITH_GLIBC)
+ set(SYMBOL_VERSIONING_DEFAULT "linux")
+ endif()
+
+ elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
+ set(SYMBOL_VERSIONING_DEFAULT "generic")
+ endif()
+
+ set(SYMBOL_VERSIONING "${SYMBOL_VERSIONING_DEFAULT}" CACHE STRING
+ "Enable ELF shared library symbol versioning (OFF, generic, linux)")
+
+ # Show a dropdown menu in CMake GUI:
+ set_property(CACHE SYMBOL_VERSIONING PROPERTY STRINGS "OFF;generic;linux")
+endif()
+
+set(LIBLZMA_API_HEADERS
src/liblzma/api/lzma.h
src/liblzma/api/lzma/base.h
src/liblzma/api/lzma/bcj.h
@@ -230,9 +423,22 @@ add_library(liblzma
src/liblzma/api/lzma/stream_flags.h
src/liblzma/api/lzma/version.h
src/liblzma/api/lzma/vli.h
+)
+
+add_library(liblzma
+ src/common/mythread.h
+ src/common/sysdefs.h
+ src/common/tuklib_common.h
+ src/common/tuklib_config.h
+ src/common/tuklib_integer.h
+ src/common/tuklib_physmem.c
+ src/common/tuklib_physmem.h
+ ${LIBLZMA_API_HEADERS}
src/liblzma/check/check.c
src/liblzma/check/check.h
- src/liblzma/check/crc_macros.h
+ src/liblzma/check/crc_common.h
+ src/liblzma/check/crc_x86_clmul.h
+ src/liblzma/check/crc32_arm64.h
src/liblzma/common/block_util.c
src/liblzma/common/common.c
src/liblzma/common/common.h
@@ -294,11 +500,16 @@ if(ENABLE_SMALL)
target_sources(liblzma PRIVATE src/liblzma/check/crc32_small.c)
else()
target_sources(liblzma PRIVATE
- 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
)
+
+ if(ENABLE_X86_ASM)
+ target_sources(liblzma PRIVATE src/liblzma/check/crc32_x86.S)
+ else()
+ target_sources(liblzma PRIVATE src/liblzma/check/crc32_fast.c)
+ endif()
endif()
if("crc64" IN_LIST ADDITIONAL_CHECK_TYPES)
@@ -308,11 +519,16 @@ if("crc64" IN_LIST ADDITIONAL_CHECK_TYPES)
target_sources(liblzma PRIVATE src/liblzma/check/crc64_small.c)
else()
target_sources(liblzma PRIVATE
- 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
)
+
+ if(ENABLE_X86_ASM)
+ target_sources(liblzma PRIVATE src/liblzma/check/crc64_x86.S)
+ else()
+ target_sources(liblzma PRIVATE src/liblzma/check/crc64_fast.c)
+ endif()
endif()
endif()
@@ -451,6 +667,7 @@ set(SIMPLE_FILTERS
powerpc
ia64
sparc
+ riscv
)
# The SUPPORTED_FILTERS are shared between Encoders and Decoders
@@ -746,6 +963,114 @@ if(LZIP_DECODER)
)
endif()
+
+##############
+# Sandboxing #
+##############
+
+# ON Use sandboxing if a supported method is available in the OS.
+# OFF Disable sandboxing.
+# capsicum Require Capsicum (FreeBSD >= 10.2) and fail if not found.
+# pledge Require pledge(2) (OpenBSD >= 5.9) and fail if not found.
+# landlock Require Landlock (Linux >= 5.13) and fail if not found.
+set(SUPPORTED_SANDBOX_METHODS ON OFF capsicum pledge landlock)
+
+set(ENABLE_SANDBOX ON CACHE STRING
+ "Sandboxing method to use in 'xz', 'xzdec', and 'lzmadec'")
+
+set_property(CACHE ENABLE_SANDBOX
+ PROPERTY STRINGS "${SUPPORTED_SANDBOX_METHODS}")
+
+if(NOT ENABLE_SANDBOX IN_LIST SUPPORTED_SANDBOX_METHODS)
+ message(FATAL_ERROR "'${ENABLE_SANDBOX}' is not a supported "
+ "sandboxing method")
+endif()
+
+# When autodetecting, the search order is fixed and we must not find
+# more than one method.
+if(ENABLE_SANDBOX STREQUAL "OFF")
+ set(SANDBOX_FOUND ON)
+else()
+ set(SANDBOX_FOUND OFF)
+endif()
+
+# Since xz and xzdec can both use sandboxing, the compile definition needed
+# to use the sandbox must be added to both targets.
+set(SANDBOX_COMPILE_DEFINITION OFF)
+
+# Sandboxing: Capsicum
+if(NOT SANDBOX_FOUND AND ENABLE_SANDBOX MATCHES "^ON$|^capsicum$")
+ check_symbol_exists(cap_rights_limit sys/capsicum.h
+ HAVE_CAP_RIGHTS_LIMIT)
+ if(HAVE_CAP_RIGHTS_LIMIT)
+ set(SANDBOX_COMPILE_DEFINITION "HAVE_CAP_RIGHTS_LIMIT")
+ set(SANDBOX_FOUND ON)
+ endif()
+endif()
+
+# Sandboxing: pledge(2)
+if(NOT SANDBOX_FOUND AND ENABLE_SANDBOX MATCHES "^ON$|^pledge$")
+ check_symbol_exists(pledge unistd.h HAVE_PLEDGE)
+ if(HAVE_PLEDGE)
+ set(SANDBOX_COMPILE_DEFINITION "HAVE_PLEDGE")
+ set(SANDBOX_FOUND ON)
+ endif()
+endif()
+
+# Sandboxing: Landlock
+if(NOT SANDBOX_FOUND AND ENABLE_SANDBOX MATCHES "^ON$|^landlock$")
+ # A compile check is done here because some systems have
+ # linux/landlock.h, but do not have the syscalls defined
+ # in order to actually use Linux Landlock.
+ check_c_source_compiles("
+ #include <linux/landlock.h>
+ #include <sys/syscall.h>
+ #include <sys/prctl.h>
+
+ void my_sandbox(void)
+ {
+ (void)prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0);
+ (void)SYS_landlock_create_ruleset;
+ (void)SYS_landlock_restrict_self;
+ (void)LANDLOCK_CREATE_RULESET_VERSION;
+ return;
+ }
+
+ int main(void) { return 0; }
+ "
+ HAVE_LINUX_LANDLOCK)
+
+ if(HAVE_LINUX_LANDLOCK)
+ set(SANDBOX_COMPILE_DEFINITION "HAVE_LINUX_LANDLOCK")
+ set(SANDBOX_FOUND ON)
+
+ # Of our three sandbox methods, only Landlock is incompatible
+ # with -fsanitize. FreeBSD 13.2 with Capsicum was tested with
+ # -fsanitize=address,undefined and had no issues. OpenBSD (as
+ # of version 7.4) has minimal support for process instrumentation.
+ # OpenBSD does not distribute the additional libraries needed
+ # (libasan, libubsan, etc.) with GCC or Clang needed for runtime
+ # sanitization support and instead only support
+ # -fsanitize-minimal-runtime for minimal undefined behavior
+ # sanitization. This minimal support is compatible with our use
+ # of the Pledge sandbox. So only Landlock will result in a
+ # build that cannot compress or decompress a single file to
+ # standard out.
+ if(CMAKE_C_FLAGS MATCHES "-fsanitize=")
+ message(SEND_ERROR
+ "CMAKE_C_FLAGS or the environment variable CFLAGS "
+ "contains '-fsanitize=' which is incompatible "
+ "with Landlock sandboxing. Use -DENABLE_SANDBOX=OFF "
+ "as an argument to 'cmake' when using '-fsanitize'.")
+ endif()
+ endif()
+endif()
+
+if(NOT SANDBOX_FOUND AND NOT ENABLE_SANDBOX MATCHES "^ON$|^OFF$")
+ message(SEND_ERROR "ENABLE_SANDBOX=${ENABLE_SANDBOX} was used but "
+ "support for the sandboxing method wasn't found.")
+endif()
+
###
# Put the tuklib functions under the lzma_ namespace.
@@ -798,6 +1123,7 @@ if(USE_WIN95_THREADS AND ENABLE_SMALL AND NOT HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR)
"__attribute__((__constructor__))")
endif()
+
# cpuid.h
check_include_file(cpuid.h HAVE_CPUID_H)
tuklib_add_definition_if(liblzma HAVE_CPUID_H)
@@ -840,16 +1166,84 @@ calculation if supported by the system" ON)
return _mm_clmulepi64_si128(a, b, 0);
}
int main(void) { return 0; }
- "
- HAVE_USABLE_CLMUL)
+ "
+ HAVE_USABLE_CLMUL)
tuklib_add_definition_if(liblzma HAVE_USABLE_CLMUL)
endif()
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)
+# ARM64 C Language Extensions define CRC32 functions in arm_acle.h.
+# These are supported by at least GCC and Clang which both need
+# __attribute__((__target__("+crc"))), unless the needed compiler flags
+# are used to support the CRC instruction.
+option(ALLOW_ARM64_CRC32 "Allow ARM64 CRC32 instruction if supported by \
+the system" ON)
+
+if(ALLOW_ARM64_CRC32)
+ check_c_source_compiles("
+ #include <stdint.h>
+
+ #ifndef _MSC_VER
+ #include <arm_acle.h>
+ #endif
+
+ #if (defined(__GNUC__) || defined(__clang__)) && !defined(__EDG__)
+ __attribute__((__target__(\"+crc\")))
+ #endif
+ uint32_t my_crc(uint32_t a, uint64_t b)
+ {
+ return __crc32d(a, b);
+ }
+ int main(void) { return 0; }
+ "
+ HAVE_ARM64_CRC32)
+
+ if(HAVE_ARM64_CRC32)
+ target_compile_definitions(liblzma PRIVATE HAVE_ARM64_CRC32)
+
+ # Check for ARM64 CRC32 instruction runtime detection.
+ # getauxval() is supported on Linux.
+ check_symbol_exists(getauxval sys/auxv.h HAVE_GETAUXVAL)
+ tuklib_add_definition_if(liblzma HAVE_GETAUXVAL)
+
+ # elf_aux_info() is supported on FreeBSD.
+ check_symbol_exists(elf_aux_info sys/auxv.h HAVE_ELF_AUX_INFO)
+ tuklib_add_definition_if(liblzma HAVE_ELF_AUX_INFO)
+
+ # sysctlbyname("hw.optional.armv8_crc32", ...) is supported on Darwin
+ # (macOS, iOS, etc.). Note that sysctlbyname() is supported on FreeBSD,
+ # NetBSD, and possibly others too but the string is specific to
+ # Apple OSes. The C code is responsible for checking
+ # defined(__APPLE__) before using
+ # sysctlbyname("hw.optional.armv8_crc32", ...).
+ check_symbol_exists(sysctlbyname sys/sysctl.h HAVE_SYSCTLBYNAME)
+ tuklib_add_definition_if(liblzma HAVE_SYSCTLBYNAME)
+ endif()
+endif()
+
+
+# Symbol visibility support:
+#
+# The C_VISIBILITY_PRESET property takes care of adding the compiler
+# option -fvisibility=hidden (or equivalent) if and only if it is supported.
+#
+# HAVE_VISIBILITY should always be defined to 0 or 1. It tells liblzma
+# if __attribute__((__visibility__("default")))
+# and __attribute__((__visibility__("hidden"))) are supported.
+# Those are useful only when the compiler supports -fvisibility=hidden
+# or such option so HAVE_VISIBILITY should be 1 only when both option and
+# the attribute support are present. HAVE_VISIBILITY is ignored on Windows
+# and Cygwin by the liblzma C code; __declspec(dllexport) is used instead.
+#
+# CMake's GenerateExportHeader module is too fancy since liblzma already
+# has the necessary macros. Instead, check CMake's internal variable
+# CMAKE_C_COMPILE_OPTIONS_VISIBILITY (it's the C-specific variant of
+# CMAKE_<LANG>_COMPILE_OPTIONS_VISIBILITY) which contains the compiler
+# command line option for visibility support. It's empty or unset when
+# visibility isn't supported. (It was added to CMake 2.8.12 in the commit
+# 0e9f4bc00c6b26f254e74063e4026ac33b786513 in 2013.) This way we don't
+# set HAVE_VISIBILITY to 1 when visibility isn't actually supported.
+if(BUILD_SHARED_LIBS AND CMAKE_C_COMPILE_OPTIONS_VISIBILITY)
set_target_properties(liblzma PROPERTIES C_VISIBILITY_PRESET hidden)
target_compile_definitions(liblzma PRIVATE HAVE_VISIBILITY=1)
else()
@@ -891,8 +1285,7 @@ if(WIN32)
# Disable __declspec(dllimport) when linking against static liblzma.
target_compile_definitions(liblzma INTERFACE LZMA_API_STATIC)
endif()
-elseif(BUILD_SHARED_LIBS AND CMAKE_SYSTEM_NAME STREQUAL "Linux")
- # GNU/Linux-specific symbol versioning for shared liblzma.
+elseif(BUILD_SHARED_LIBS AND SYMBOL_VERSIONING STREQUAL "linux")
# Note that adding link options doesn't affect static builds
# but HAVE_SYMBOL_VERSIONS_LINUX must not be used with static builds
# because it would put symbol versions into the static library which
@@ -908,9 +1301,7 @@ elseif(BUILD_SHARED_LIBS AND CMAKE_SYSTEM_NAME STREQUAL "Linux")
set_target_properties(liblzma PROPERTIES
LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/liblzma_linux.map"
)
-elseif(BUILD_SHARED_LIBS AND CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
- # Symbol versioning for shared liblzma for non-GNU/Linux.
- # FIXME? What about Solaris?
+elseif(BUILD_SHARED_LIBS AND SYMBOL_VERSIONING STREQUAL "generic")
target_link_options(liblzma PRIVATE
"-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/src/liblzma/liblzma_generic.map"
)
@@ -975,9 +1366,6 @@ endif()
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/liblzma-config.cmake"
"${LZMA_CONFIG_CONTENTS}")
-# Set CMAKE_INSTALL_LIBDIR and friends.
-include(GNUInstallDirs)
-
# Create liblzma.pc.
set(prefix "${CMAKE_INSTALL_PREFIX}")
set(exec_prefix "${CMAKE_INSTALL_PREFIX}")
@@ -1031,19 +1419,204 @@ endif()
#############################################################################
-# getopt_long
+# Helper functions for installing files
#############################################################################
-# The command line tools needs this.
+# For each non-empty element in the list LINK_NAMES, creates symbolic links
+# ${LINK_NAME}${LINK_SUFFIX} -> ${TARGET_NAME} in the directory ${DIR}.
+# The target file should exist because on Cygwin and MSYS2 symlink creation
+# can fail under certain conditions if the target doesn't exist.
+function(my_install_symlinks COMPONENT DIR TARGET_NAME LINK_SUFFIX LINK_NAMES)
+ install(CODE "set(D \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${DIR}\")
+ foreach(L ${LINK_NAMES})
+ file(CREATE_LINK \"${TARGET_NAME}\"
+ \"\${D}/\${L}${LINK_SUFFIX}\"
+ SYMBOLIC)
+ endforeach()"
+ COMPONENT "${COMPONENT}")
+endfunction()
+
+# Installs a man page file of a given language ("" for the untranslated file)
+# and optionally its alternative names as symlinks. This is a helper function
+# for my_install_man() below.
+function(my_install_man_lang COMPONENT SRC_FILE MAN_LANG LINK_NAMES)
+ # Get the man page section from the filename suffix.
+ string(REGEX REPLACE "^.*\.([^/.]+)$" "\\1" MAN_SECTION "${SRC_FILE}")
+
+ # A few man pages might be missing from translations.
+ # Don't attempt to install them or create the related symlinks.
+ if(NOT MAN_LANG STREQUAL "" AND NOT EXISTS "${SRC_FILE}")
+ return()
+ endif()
+
+ # Installing the file must be done before creating the symlinks
+ # due to Cygwin and MSYS2.
+ install(FILES "${SRC_FILE}"
+ DESTINATION "${CMAKE_INSTALL_MANDIR}/${MAN_LANG}/man${MAN_SECTION}"
+ COMPONENT "${COMPONENT}")
+
+ # Get the basename of the file to be used as the symlink target.
+ get_filename_component(BASENAME "${SRC_FILE}" NAME)
+
+ # LINK_NAMES don't contain the man page filename suffix (like ".1")
+ # so it needs to be told to my_install_symlinks.
+ my_install_symlinks("${COMPONENT}"
+ "${CMAKE_INSTALL_MANDIR}/${MAN_LANG}/man${MAN_SECTION}"
+ "${BASENAME}" ".${MAN_SECTION}" "${LINK_NAMES}")
+endfunction()
+
+# Installs a man page file and optionally its alternative names as symlinks.
+# Does the same for translations if ENABLE_NLS.
+function(my_install_man COMPONENT SRC_FILE LINK_NAMES)
+ my_install_man_lang("${COMPONENT}" "${SRC_FILE}" "" "${LINK_NAMES}")
+
+ if(ENABLE_NLS)
+ # Find the translated versions of this man page.
+ get_filename_component(BASENAME "${SRC_FILE}" NAME)
+ file(GLOB MAN_FILES "po4a/man/*/${BASENAME}")
+
+ foreach(F ${MAN_FILES})
+ get_filename_component(MAN_LANG "${F}" DIRECTORY)
+ get_filename_component(MAN_LANG "${MAN_LANG}" NAME)
+ my_install_man_lang("${COMPONENT}" "${F}" "${MAN_LANG}"
+ "${LINK_NAMES}")
+ endforeach()
+ endif()
+endfunction()
+
+
+#############################################################################
+# libgnu (getopt_long)
+#############################################################################
+
+# This mirrors how the Autotools build system handles the getopt_long
+# replacement, calling the object library libgnu since the replacement
+# version comes from Gnulib.
+add_library(libgnu OBJECT)
+
+# CMake requires that even an object library must have at least once source
+# file. So we give it a header file that results in no output files.
+#
+# NOTE: Using a file outside the lib directory makes it possible to
+# delete lib/*.h and lib/*.c and still keep the build working if
+# getopt_long replacement isn't needed. It's convenient if one wishes
+# to be certain that no GNU LGPL code gets included in the binaries.
+target_sources(libgnu PRIVATE src/common/sysdefs.h)
+
+# The Ninja Generator requires setting the linker language since it cannot
+# guess the programming language of just a header file. Setting this
+# property avoids needing an empty .c file or an non-empty unnecessary .c
+# file.
+set_target_properties(libgnu PROPERTIES LINKER_LANGUAGE C)
+
+# Create /lib directory in the build directory and add it to the include path.
+file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib")
+target_include_directories(libgnu PUBLIC "${CMAKE_CURRENT_BINARY_DIR}/lib")
+
+# Include /lib from the source directory. It does no harm even if none of
+# the Gnulib replacements are used.
+target_include_directories(libgnu PUBLIC lib)
+
+# The command line tools need getopt_long in order to parse arguments. If
+# the system does not have a getopt_long implementation we can use the one
+# from Gnulib instead.
check_symbol_exists(getopt_long getopt.h HAVE_GETOPT_LONG)
+if(NOT HAVE_GETOPT_LONG)
+ # Set the __GETOPT_PREFIX definition to "rpl_" (replacement) to avoid
+ # name conflicts with libc symbols. The same prefix is set if using
+ # the Autotools build (m4/getopt.m4).
+ target_compile_definitions(libgnu PUBLIC "__GETOPT_PREFIX=rpl_")
+
+ # Create a custom copy command to copy the getopt header to the build
+ # directory and re-copy it if it is updated. (Gnulib does it this way
+ # because it allows choosing which .in.h files to actually use in the
+ # build. We need just getopt.h so this is a bit overcomplicated for
+ # a single header file only.)
+ add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/lib/getopt.h"
+ COMMAND "${CMAKE_COMMAND}" -E copy
+ "${CMAKE_CURRENT_SOURCE_DIR}/lib/getopt.in.h"
+ "${CMAKE_CURRENT_BINARY_DIR}/lib/getopt.h"
+ MAIN_DEPENDENCY "${CMAKE_CURRENT_SOURCE_DIR}/lib/getopt.in.h"
+ VERBATIM)
+
+ target_sources(libgnu PRIVATE
+ lib/getopt1.c
+ lib/getopt.c
+ lib/getopt_int.h
+ lib/getopt-cdefs.h
+ lib/getopt-core.h
+ lib/getopt-ext.h
+ lib/getopt-pfx-core.h
+ lib/getopt-pfx-ext.h
+ "${CMAKE_CURRENT_BINARY_DIR}/lib/getopt.h"
+ )
+endif()
+
+
+#############################################################################
+# xzdec and lzmadec
+#############################################################################
+
+if(HAVE_DECODERS AND (NOT MSVC OR MSVC_VERSION GREATER_EQUAL 1900))
+ foreach(XZDEC xzdec lzmadec)
+ 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 libgnu)
+
+ if(WIN32)
+ # Add the Windows resource file for xzdec.exe or lzmadec.exe.
+ target_sources("${XZDEC}" PRIVATE src/xzdec/xzdec_w32res.rc)
+ set_target_properties("${XZDEC}" PROPERTIES
+ LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/common/common_w32res.rc"
+ )
+ endif()
+
+ if(SANDBOX_COMPILE_DEFINITION)
+ target_compile_definitions("${XZDEC}" PRIVATE
+ "${SANDBOX_COMPILE_DEFINITION}")
+ endif()
+
+ tuklib_progname("${XZDEC}")
+
+ install(TARGETS "${XZDEC}"
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+ COMPONENT "${XZDEC}_Runtime")
+ endforeach()
+
+ # This is the only build-time difference with lzmadec.
+ target_compile_definitions(lzmadec PRIVATE "LZMADEC")
+
+ if(UNIX)
+ # NOTE: This puts the lzmadec.1 symlinks into xzdec_Documentation.
+ # This isn't great but doing them separately with translated
+ # man pages would require extra code. So this has to suffice for now.
+ my_install_man(xzdec_Documentation src/xzdec/xzdec.1 lzmadec)
+ endif()
+endif()
+
#############################################################################
-# xzdec
+# lzmainfo
#############################################################################
-if(HAVE_GETOPT_LONG AND HAVE_DECODERS)
- add_executable(xzdec
+if(HAVE_DECODERS AND (NOT MSVC OR MSVC_VERSION GREATER_EQUAL 1900))
+ add_executable(lzmainfo
src/common/sysdefs.h
src/common/tuklib_common.h
src/common/tuklib_config.h
@@ -1052,34 +1625,44 @@ if(HAVE_GETOPT_LONG AND HAVE_DECODERS)
src/common/tuklib_gettext.h
src/common/tuklib_progname.c
src/common/tuklib_progname.h
- src/xzdec/xzdec.c
+ src/lzmainfo/lzmainfo.c
)
- target_include_directories(xzdec PRIVATE
+ target_include_directories(lzmainfo PRIVATE
src/common
src/liblzma/api
)
- target_link_libraries(xzdec PRIVATE liblzma)
+ target_link_libraries(lzmainfo PRIVATE liblzma libgnu)
if(WIN32)
- # Add the Windows resource file for xzdec.exe.
- target_sources(xzdec PRIVATE src/xzdec/xzdec_w32res.rc)
- set_target_properties(xzdec PROPERTIES
+ # Add the Windows resource file for lzmainfo.exe.
+ target_sources(lzmainfo PRIVATE src/lzmainfo/lzmainfo_w32res.rc)
+ set_target_properties(lzmainfo PROPERTIES
LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/common/common_w32res.rc"
)
endif()
- tuklib_progname(xzdec)
+ tuklib_progname(lzmainfo)
+
+ # NOTE: The translations are in the "xz" domain and the .mo files are
+ # installed as part of the "xz" target.
+ if(ENABLE_NLS)
+ target_link_libraries(lzmainfo PRIVATE Intl::Intl)
- install(TARGETS xzdec
+ target_compile_definitions(lzmainfo PRIVATE
+ ENABLE_NLS
+ PACKAGE="${TRANSLATION_DOMAIN}"
+ LOCALEDIR="${LOCALEDIR_DEFINITION}"
+ )
+ endif()
+
+ install(TARGETS lzmainfo
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
- COMPONENT xzdec)
+ COMPONENT lzmainfo_Runtime)
if(UNIX)
- install(FILES src/xzdec/xzdec.1
- DESTINATION "${CMAKE_INSTALL_MANDIR}/man1"
- COMPONENT xzdec)
+ my_install_man(lzmainfo_Documentation src/lzmainfo/lzmainfo.1 "")
endif()
endif()
@@ -1088,7 +1671,7 @@ endif()
# xz
#############################################################################
-if(NOT MSVC AND HAVE_GETOPT_LONG)
+if(NOT MSVC OR MSVC_VERSION GREATER_EQUAL 1900)
add_executable(xz
src/common/mythread.h
src/common/sysdefs.h
@@ -1122,6 +1705,8 @@ if(NOT MSVC AND HAVE_GETOPT_LONG)
src/xz/options.c
src/xz/options.h
src/xz/private.h
+ src/xz/sandbox.c
+ src/xz/sandbox.h
src/xz/signals.c
src/xz/signals.h
src/xz/suffix.c
@@ -1142,7 +1727,7 @@ if(NOT MSVC AND HAVE_GETOPT_LONG)
)
endif()
- target_link_libraries(xz PRIVATE liblzma)
+ target_link_libraries(xz PRIVATE liblzma libgnu)
target_compile_definitions(xz PRIVATE ASSUME_RAM=128)
@@ -1154,6 +1739,10 @@ if(NOT MSVC AND HAVE_GETOPT_LONG)
)
endif()
+ if(SANDBOX_COMPILE_DEFINITION)
+ target_compile_definitions(xz PRIVATE "${SANDBOX_COMPILE_DEFINITION}")
+ endif()
+
tuklib_progname(xz)
tuklib_mbstr(xz)
@@ -1212,15 +1801,76 @@ if(NOT MSVC AND HAVE_GETOPT_LONG)
endif()
endif()
+ if(ENABLE_NLS)
+ target_link_libraries(xz PRIVATE Intl::Intl)
+
+ target_compile_definitions(xz PRIVATE
+ ENABLE_NLS
+ PACKAGE="${TRANSLATION_DOMAIN}"
+ LOCALEDIR="${LOCALEDIR_DEFINITION}"
+ )
+
+ file(STRINGS po/LINGUAS LINGUAS)
+
+ # Where to find .gmo files. If msgfmt is available, the .po files
+ # will be converted as part of the build. Otherwise we will use
+ # the pre-generated .gmo files which are included in XZ Utils
+ # tarballs by Autotools.
+ set(GMO_DIR "${CMAKE_CURRENT_SOURCE_DIR}/po")
+
+ if(GETTEXT_FOUND)
+ # NOTE: gettext_process_po_files' INSTALL_DESTINATION is
+ # incompatible with how Autotools requires the .po files to
+ # be named. CMake would require each .po file to be named with
+ # the translation domain and thus each .po file would need its
+ # own language-specific directory (like "po/fi/xz.po"). On top
+ # of this, INSTALL_DESTINATION doesn't allow specifying COMPONENT
+ # and thus the .mo files go into "Unspecified" component. So we
+ # can use gettext_process_po_files to convert the .po files but
+ # installation needs to be done with our own code.
+ #
+ # Also, the .gmo files will go to root of the build directory
+ # instead of neatly into a subdirectory. This is hardcoded in
+ # CMake's FindGettext.cmake.
+ foreach(LANG IN LISTS LINGUAS)
+ gettext_process_po_files("${LANG}" ALL
+ PO_FILES "${CMAKE_CURRENT_SOURCE_DIR}/po/${LANG}.po")
+ endforeach()
+
+ set(GMO_DIR "${CMAKE_CURRENT_BINARY_DIR}")
+ endif()
+
+ foreach(LANG IN LISTS LINGUAS)
+ install(
+ FILES "${GMO_DIR}/${LANG}.gmo"
+ DESTINATION "${CMAKE_INSTALL_LOCALEDIR}/${LANG}/LC_MESSAGES"
+ RENAME "${TRANSLATION_DOMAIN}.mo"
+ COMPONENT xz_Runtime)
+ endforeach()
+ endif()
+
+ # This command must be before the symlink creation to keep things working
+ # on Cygwin and MSYS2 in all cases.
+ #
+ # - Cygwin can encode symlinks in multiple ways. This can be
+ # controlled via the environment variable "CYGWIN". If it contains
+ # "winsymlinks:nativestrict" then symlink creation will fail if
+ # the link target doesn't exist. This mode isn't the default though.
+ # See: https://cygwin.com/faq.html#faq.api.symlinks
+ #
+ # - MSYS2 supports the same winsymlinks option in the environment
+ # variable "MSYS" (not "MSYS2). The default in MSYS2 is to make
+ # a copy of the file instead of any kind of symlink. Thus the link
+ # target must exist or the creation of the "symlink" (copy) will fail.
+ #
+ # Our installation order must be such that when a symbolic link is created
+ # its target must already exists. There is no race condition for parallel
+ # builds because the generated cmake_install.cmake executes serially.
install(TARGETS xz
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
- COMPONENT xz)
+ COMPONENT xz_Runtime)
if(UNIX)
- install(FILES src/xz/xz.1
- DESTINATION "${CMAKE_INSTALL_MANDIR}/man1"
- COMPONENT xz)
-
option(CREATE_XZ_SYMLINKS "Create unxz and xzcat symlinks" ON)
option(CREATE_LZMA_SYMLINKS "Create lzma, unlzma, and lzcat symlinks"
ON)
@@ -1234,150 +1884,165 @@ if(NOT MSVC AND HAVE_GETOPT_LONG)
list(APPEND XZ_LINKS "lzma" "unlzma" "lzcat")
endif()
- # With Windows Cygwin and MSYS2 the symlinking is complicated. Both
- # of these environments set the UNIX variable so they will try to
- # make the symlinks. The ability for Cygwin and MSYS2 to make
- # broken symlinks is determined by the CYGWIN and MSYS2 environment
- # variables, respectively. Broken symlinks are needed for the man
- # page symlinks and for determining if the xz and lzma symlinks need
- # to depend on the xz target or not. If broken symlinks cannot be
- # made then the xz binary must be created before the symlinks.
- set(ALLOW_BROKEN_SYMLINKS ON)
-
- if(CMAKE_SYSTEM_NAME STREQUAL "CYGWIN")
- # The Cygwin env variable can be set to four possible values:
- #
- # 1. "lnk". Create symlinks as Windows shortcuts.
- #
- # 2. "native". Create symlinks as native Windows symlinks
- # if supported by the system. Fallback to "lnk" if native
- # symlinks are not supported.
- #
- # 3. "nativestrict". Create symlinks as native Windows symlinks
- # if supported by the system. If the target of the symlink
- # does not exist or the creation of the symlink fails for any
- # reason, do not create the symlink.
- #
- # 4. "sys". Create symlinks as plain files with a special
- # system attribute containing the path to the symlink target.
- #
- # So, the only case we care about for broken symlinks is
- # "nativestrict" since all other values mean that broken
- # symlinks are allowed. If the env variable is not set the
- # default is "native". If the env variable is set but not
- # assigned one of the four values, then the default is the same
- # as option 1 "lnk".
- string(FIND "$ENV{CYGWIN}" "winsymlinks:nativestrict" SYMLINK_POS)
- if(SYMLINK_POS GREATER -1)
- set(ALLOW_BROKEN_SYMLINKS OFF)
- endif()
- elseif(CMAKE_SYSTEM_NAME STREQUAL "MSYS")
- # The MSYS env variable behaves similar to the CYGWIN but has a
- # different default behavior. If winsymlinks is set but not
- # assigned one of the four supported values, the default is to
- # *copy* the target to the symlink destination. This will fail
- # if the target does not exist so broken symlinks cannot be
- # allowed.
- string(FIND "$ENV{MSYS}" "winsymlinks" SYMLINK_POS)
- if(SYMLINK_POS GREATER -1)
- string(FIND "$ENV{MSYS}" "winsymlinks:nativestrict"
- SYMLINK_POS)
- if(SYMLINK_POS GREATER -1)
- set(ALLOW_BROKEN_SYMLINKS OFF)
- endif()
- else()
- set(ALLOW_BROKEN_SYMLINKS OFF)
- endif()
- endif()
-
- # Create symlinks in the build directory and then install them.
+ # On Cygwin, don't add the .exe suffix to the symlinks.
#
- # The symlinks do not likely need any special extension since
- # even on Windows the symlink can still be executed without
- # the .exe extension.
- foreach(LINK IN LISTS XZ_LINKS)
- add_custom_target("create_${LINK}" ALL
- "${CMAKE_COMMAND}" -E create_symlink
- "$<TARGET_FILE_NAME:xz>" "${LINK}"
- BYPRODUCTS "${LINK}"
- VERBATIM)
- install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${LINK}"
- DESTINATION "${CMAKE_INSTALL_BINDIR}"
- COMPONENT xz)
-
- # Only create the man page symlinks if the symlinks can be
- # created broken. The symlinks will not be valid until install
- # so they cannot be created on these system environments.
- if(ALLOW_BROKEN_SYMLINKS)
- add_custom_target("create_${LINK}.1" ALL
- "${CMAKE_COMMAND}" -E create_symlink "xz.1" "${LINK}.1"
- BYPRODUCTS "${LINK}.1"
- VERBATIM)
- install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${LINK}.1"
- DESTINATION "${CMAKE_INSTALL_MANDIR}/man1"
- COMPONENT xz)
- else()
- # Add the xz target as dependency when broken symlinks
- # cannot be made. This ensures parallel builds do not fail
- # since it will enforce the order of creating xz first, then
- # the symlinks.
- add_dependencies("create_${LINK}" xz)
- endif()
- endforeach()
+ # FIXME? Does this make sense on MSYS & MSYS2 where "ln -s"
+ # by default makes copies? Inside MSYS & MSYS2 it is possible
+ # to execute files without the .exe suffix but not outside
+ # (like in Command Prompt). Omitting the suffix matches
+ # what configure.ac has done for many years though.
+ my_install_symlinks(xz_Runtime "${CMAKE_INSTALL_BINDIR}"
+ "xz${CMAKE_EXECUTABLE_SUFFIX}" "" "${XZ_LINKS}")
+
+ # Install the man pages and (optionally) their symlinks
+ # and translations.
+ my_install_man(xz_Documentation src/xz/xz.1 "${XZ_LINKS}")
endif()
endif()
#############################################################################
-# Tests
+# Scripts
#############################################################################
-include(CTest)
-
-if(BUILD_TESTING)
- set(LIBLZMA_TESTS
- test_bcj_exact_size
- test_block_header
- test_check
- test_filter_flags
- test_filter_str
- test_hardware
- test_index
- test_index_hash
- test_lzip_decoder
- test_memlimit
- test_stream_flags
- test_vli
- )
+if(UNIX)
+ # NOTE: This isn't as sophisticated as in the Autotools build which
+ # uses posix-shell.m4 but hopefully this doesn't need to be either.
+ # CMake likely won't be used on as many (old) obscure systems as the
+ # Autotools-based builds are.
+ if(CMAKE_SYSTEM_NAME STREQUAL "SunOS" AND EXISTS "/usr/xpg4/bin/sh")
+ set(POSIX_SHELL_DEFAULT "/usr/xpg4/bin/sh")
+ else()
+ set(POSIX_SHELL_DEFAULT "/bin/sh")
+ endif()
- foreach(TEST IN LISTS LIBLZMA_TESTS)
- add_executable("${TEST}" "tests/${TEST}.c")
+ set(POSIX_SHELL "${POSIX_SHELL_DEFAULT}" CACHE STRING
+ "Shell to use for scripts (xzgrep and others)")
- target_include_directories("${TEST}" PRIVATE
- src/common
- src/liblzma/api
- src/liblzma
- )
+ # Guess the extra path to add from POSIX_SHELL. Autotools-based build
+ # has a separate option --enable-path-for-scripts=PREFIX but this is
+ # enough for Solaris.
+ set(enable_path_for_scripts)
+ get_filename_component(POSIX_SHELL_DIR "${POSIX_SHELL}" DIRECTORY)
- target_link_libraries("${TEST}" PRIVATE liblzma)
+ if(NOT POSIX_SHELL_DIR STREQUAL "/bin" AND
+ NOT POSIX_SHELL_DIR STREQUAL "/usr/bin")
+ set(enable_path_for_scripts "PATH=${POSIX_SHELL_DIR}:\$PATH")
+ endif()
- # Put the test programs into their own subdirectory so they don't
- # pollute the top-level dir which might contain xz and xzdec.
- set_target_properties("${TEST}" PROPERTIES
- RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/tests_bin"
- )
+ set(XZDIFF_LINKS xzcmp)
+ set(XZGREP_LINKS xzegrep xzfgrep)
+ set(XZMORE_LINKS)
+ set(XZLESS_LINKS)
+
+ if(CREATE_LZMA_SYMLINKS)
+ list(APPEND XZDIFF_LINKS lzdiff lzcmp)
+ list(APPEND XZGREP_LINKS lzgrep lzegrep lzfgrep)
+ list(APPEND XZMORE_LINKS lzmore)
+ list(APPEND XZLESS_LINKS lzless)
+ endif()
- add_test(NAME "${TEST}"
- COMMAND "${CMAKE_CURRENT_BINARY_DIR}/tests_bin/${TEST}"
+ set(xz "xz")
+
+ foreach(S xzdiff xzgrep xzmore xzless)
+ configure_file("src/scripts/${S}.in" "${S}"
+ @ONLY
+ NEWLINE_STYLE LF)
+
+ install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/${S}"
+ DESTINATION "${CMAKE_INSTALL_BINDIR}"
+ COMPONENT scripts_Runtime)
+ endforeach()
+
+ # file(CHMOD ...) would need CMake 3.19 so use execute_process instead.
+ # Using +x is fine even if umask was 077. If execute bit is set at all
+ # then "make install" will set it for group and other access bits too.
+ execute_process(COMMAND chmod +x xzdiff xzgrep xzmore xzless
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
+
+ unset(xz)
+ unset(POSIX_SHELL)
+ unset(enable_path_for_scripts)
+
+ my_install_symlinks(scripts_Runtime "${CMAKE_INSTALL_BINDIR}" xzdiff ""
+ "${XZDIFF_LINKS}")
+
+ my_install_symlinks(scripts_Runtime "${CMAKE_INSTALL_BINDIR}" xzgrep ""
+ "${XZGREP_LINKS}")
+
+ my_install_symlinks(scripts_Runtime "${CMAKE_INSTALL_BINDIR}" xzmore ""
+ "${XZMORE_LINKS}")
+
+ my_install_symlinks(scripts_Runtime "${CMAKE_INSTALL_BINDIR}" xzless ""
+ "${XZLESS_LINKS}")
+
+ my_install_man(scripts_Documentation src/scripts/xzdiff.1 "${XZDIFF_LINKS}")
+ my_install_man(scripts_Documentation src/scripts/xzgrep.1 "${XZGREP_LINKS}")
+ my_install_man(scripts_Documentation src/scripts/xzmore.1 "${XZMORE_LINKS}")
+ my_install_man(scripts_Documentation src/scripts/xzless.1 "${XZLESS_LINKS}")
+endif()
+
+
+#############################################################################
+# Documentation
+#############################################################################
+
+if(UNIX)
+ option(ENABLE_DOXYGEN "Use Doxygen to generate liblzma API docs" OFF)
+
+ if (ENABLE_DOXYGEN)
+ file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/doc")
+
+ add_custom_command(
+ VERBATIM
+ COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/doxygen/update-doxygen"
+ ARGS "api"
+ "${CMAKE_CURRENT_SOURCE_DIR}"
+ "${CMAKE_CURRENT_BINARY_DIR}/doc"
+ OUTPUT doc/api/index.html
+ DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/doxygen/update-doxygen"
+ "${CMAKE_CURRENT_SOURCE_DIR}/doxygen/Doxyfile"
+ ${LIBLZMA_API_HEADERS}
)
- # Set srcdir environment variable so that the tests find their
- # input files from the source tree.
- #
- # Set the return code for skipped tests to match Automake convention.
- set_tests_properties("${TEST}" PROPERTIES
- ENVIRONMENT "srcdir=${CMAKE_CURRENT_SOURCE_DIR}/tests"
- SKIP_RETURN_CODE 77
+ add_custom_target(
+ liblzma-doc-api ALL
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/doc/api/index.html"
)
- endforeach()
+
+ install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/doc/api"
+ DESTINATION "${CMAKE_INSTALL_DOCDIR}"
+ COMPONENT liblzma_Documentation)
+ endif()
endif()
+
+install(DIRECTORY doc/examples
+ DESTINATION "${CMAKE_INSTALL_DOCDIR}"
+ COMPONENT liblzma_Documentation)
+
+# GPLv2 applies to the scripts. If GNU getopt_long is used then
+# LGPLv2.1 applies to the command line tools but, using the
+# section 3 of LGPLv2.1, GNU getopt_long can be handled as GPLv2 too.
+# Thus GPLv2 should be enough here.
+install(FILES AUTHORS
+ COPYING
+ COPYING.0BSD
+ COPYING.GPLv2
+ NEWS
+ README
+ THANKS
+ doc/faq.txt
+ doc/history.txt
+ doc/lzma-file-format.txt
+ doc/xz-file-format.txt
+ DESTINATION "${CMAKE_INSTALL_DOCDIR}"
+ COMPONENT Documentation)
+
+
+#############################################################################
+# Tests
+#############################################################################
+
+# Tests are in a separate file so that it's possible to delete the whole
+# "tests" directory and still have a working build, just without the tests.
+include(tests/tests.cmake OPTIONAL)
diff --git a/COPYING b/COPYING
index e54eeac..aed2153 100644
--- a/COPYING
+++ b/COPYING
@@ -3,74 +3,81 @@ 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!):
+ is a summary of which licenses apply to which parts of this package:
- - liblzma is in the public domain.
+ - liblzma is under the BSD Zero Clause License (0BSD).
- - 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 command line tools xz, xzdec, lzmadec, and lzmainfo are
+ under 0BSD except that, on systems that don't have a usable
+ getopt_long, GNU getopt_long is 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+.
+ adapted from GNU gzip. These scripts (xzgrep, xzdiff, xzless,
+ and xzmore) are under GNU GPLv2+. The man pages of the scripts
+ are under 0BSD; they aren't based on the man pages of GNU gzip.
- - All the documentation in the doc directory and most of the
- XZ Utils specific documentation files in other directories
- are in the public domain.
+ - Most of the XZ Utils specific documentation that is in
+ plain text files (like README, INSTALL, PACKAGERS, NEWS,
+ and ChangeLog) are under 0BSD unless stated otherwise in
+ the file itself. The files xz-file-format.txt and
+ lzma-file-format.xt are in the public domain but may
+ be distributed under the terms of 0BSD too.
- Note: The JavaScript files (under the MIT license) have
- been removed from the Doxygen-generated HTML version of the
- liblzma API documentation. Doxygen itself is under the GNU GPL
- but the remaining files generated by Doxygen are not affected
- by the licenses used in Doxygen because Doxygen licensing has
- the following exception:
+ - Translated messages and man pages are under 0BSD except that
+ some old translations are in the public domain.
- "Documents produced by doxygen are derivative works
- derived from the input used in their production;
- they are not affected by this license."
+ - Test files and test code in the 'tests' directory, and
+ debugging utilities in the 'debug' directory are under
+ the BSD Zero Clause License (0BSD).
- - Translated messages are in the public domain.
+ - The GNU Autotools based build system contains files that are
+ under GNU GPLv2+, GNU GPLv3+, and a few permissive licenses.
+ These files don't affect the licensing of the binaries being
+ built.
- - 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.
+ - The 'extra' directory contains files that are under various
+ free software licenses. These aren't built or installed as
+ part of XZ Utils.
- - Test files and test code in the tests directory, and debugging
- utilities in the debug directory are in the public domain.
+ For the files under the BSD Zero Clause License (0BSD), if
+ a copyright notice is needed, the following is sufficient:
- - The extra directory may contain public domain files, and files
- that are under various free software licenses.
+ Copyright (C) The XZ Utils authors and contributors
- 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
+ If you copy significant amounts of 0BSD-licensed 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:
+ it is not legally required by the license terms. 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.0BSD: BSD Zero Clause License
- 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.
+ A note about old XZ Utils releases:
+
+ XZ Utils releases 5.4.6 and older and 5.5.1alpha have a
+ significant amount of code put into the public domain and
+ that obviously remains so. The switch from public domain to
+ 0BSD for newer releases was made in Febrary 2024 because
+ public domain has (real or perceived) legal ambiguities in
+ some jurisdictions.
+
+ There is very little *practical* difference between public
+ domain and 0BSD. The main difference likely is that one
+ shouldn't claim that 0BSD-licensed code is in the public
+ domain; 0BSD-licensed code is copyrighted but available under
+ an extremely permissive license. Neither 0BSD nor public domain
+ require retaining or reproducing author, copyright holder, or
+ license notices when distributing the software. (Compare to,
+ for example, BSD 2-Clause "Simplified" License which does have
+ such requirements.)
+
+ If you have questions, don't hesitate to ask for more information.
+ The contact information is in the README file.
diff --git a/COPYING.0BSD b/COPYING.0BSD
new file mode 100644
index 0000000..4322122
--- /dev/null
+++ b/COPYING.0BSD
@@ -0,0 +1,11 @@
+Permission to use, copy, modify, and/or distribute this
+software for any purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
+THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/ChangeLog b/ChangeLog
index 4dd0978..c779597 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,11756 +1,12662 @@
-commit 49053c0a649f4c8bd2b8d97ce915f401fbc0f3d9
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-10-31 22:30:29 +0800
+commit 3ec664d3f652133136587a51d4505b1abe1acdd7
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-29 18:03:51 +0300
- Bump version and soname for 5.4.5.
+ Bump version and soname for 5.6.2
src/liblzma/Makefile.am | 2 +-
src/liblzma/api/lzma/version.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
-commit 84c0cfc556287628df871703672879e530d0391f
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-11-01 20:18:30 +0800
+commit 3cc0aa702e50b786c52c6f3d3f831a635c4df197
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-29 18:03:04 +0300
- Add NEWS for 5.4.5.
+ Add NEWS for 5.6.2
- NEWS | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 74 insertions(+)
+ NEWS | 130 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 130 insertions(+)
-commit d90ed84db9770712e2421e170076b43bda9b64a7
+commit 526d3f7f2c2d5e134157d08b37fb5fd0b125799e
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-10-31 21:41:09 +0200
+Date: 2024-05-29 18:03:04 +0300
- liblzma: Fix compilation of fastpos_tablegen.c.
-
- The macro lzma_attr_visibility_hidden has to be defined to make
- fastpos.h usable. The visibility attribute is irrelevant to
- fastpos_tablegen.c so simply #define the macro to an empty value.
-
- fastpos_tablegen.c is never built by the included build systems
- and so the problem wasn't noticed earlier. It's just a standalone
- program for generating fastpos_table.c.
-
- Fixes: https://github.com/tukaani-project/xz/pull/69
- Thanks to GitHub user Jamaika1.
+ Add NEWS for 5.4.7
- src/liblzma/lzma/fastpos_tablegen.c | 2 ++
- 1 file changed, 2 insertions(+)
+ NEWS | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 89 insertions(+)
-commit 9b1268538b0b2c6c0a121f95165de65fc71ad23c
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-10-31 21:51:40 +0800
+commit 660b09279e8f544acf120d29194d5c3051b484eb
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-29 18:03:04 +0300
- Build: Fix text wrapping in an output message.
+ Add NEWS for 5.2.13
- configure.ac | 9 +++++----
- 1 file changed, 5 insertions(+), 4 deletions(-)
+ NEWS | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 115 insertions(+)
-commit 068ee436f4a8a706125ef43e8228b30001b1554e
+commit 7d76282dac766c0ced8ae24e0f7ce0005f3e377d
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-10-22 17:59:11 +0300
+Date: 2024-05-29 17:47:13 +0300
- liblzma: Use lzma_always_inline in memcmplen.h.
+ Translations: Run po4a/update-po
+
+ Now the files are in the new formatting without source file
+ line numbers. Future updates should keep the diffs much smaller.
- src/liblzma/common/memcmplen.h | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
+ po4a/de.po | 1592 ++++++++++---------
+ po4a/fr.po | 4450 +++++++++++++++++-----------------------------------
+ po4a/ko.po | 1592 ++++++++++---------
+ po4a/pt_BR.po | 4817 ++++++++++++++++++---------------------------------------
+ po4a/ro.po | 1592 ++++++++++---------
+ po4a/uk.po | 1592 ++++++++++---------
+ 6 files changed, 6114 insertions(+), 9521 deletions(-)
-commit 6cdf0a7b7974baf58c1fd20ec3278f3b84ae56e5
+commit 4470c3f7d8954bb47b280ec07ad0bd4be2223083
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-10-30 17:43:03 +0200
+Date: 2024-05-29 17:44:53 +0300
- liblzma: #define lzma_always_inline in common.h.
+ Translations: Run "make -C po update-po"
+
+ In the past this wasn't done before releases; the Git repository
+ just contained the files from the Translation Project. But this
+ way it is clearer when comparing release tarballs against the
+ Git repository. In future releases this might no longer be necessary
+ within a stable branch as the .po files won't change so easily anymore
+ when creating a tarball.
- src/liblzma/common/common.h | 17 +++++++++++++++++
- 1 file changed, 17 insertions(+)
+ po/ca.po | 567 +++++++++++++++++++++++++---------------
+ po/cs.po | 821 +++++++++++++++++++++++++++++++++++++--------------------
+ po/da.po | 809 +++++++++++++++++++++++++++++++++++---------------------
+ po/de.po | 403 ++++++++++++++--------------
+ po/eo.po | 403 ++++++++++++++--------------
+ po/es.po | 403 ++++++++++++++--------------
+ po/fi.po | 578 +++++++++++++++++++++++++---------------
+ po/fr.po | 538 +++++++++++++++++++++++---------------
+ po/hr.po | 403 ++++++++++++++--------------
+ po/hu.po | 403 ++++++++++++++--------------
+ po/it.po | 854 +++++++++++++++++++++++++++++++++++++++---------------------
+ po/ko.po | 403 ++++++++++++++--------------
+ po/pl.po | 403 ++++++++++++++--------------
+ po/pt.po | 842 +++++++++++++++++++++++++++++++++++++++--------------------
+ po/pt_BR.po | 567 +++++++++++++++++++++++++---------------
+ po/ro.po | 403 ++++++++++++++--------------
+ po/sr.po | 838 ++++++++++++++++++++++++++++++++++++++--------------------
+ po/sv.po | 403 ++++++++++++++--------------
+ po/tr.po | 567 +++++++++++++++++++++++++---------------
+ po/uk.po | 403 ++++++++++++++--------------
+ po/vi.po | 403 ++++++++++++++--------------
+ po/zh_CN.po | 417 +++++++++++++++--------------
+ po/zh_TW.po | 558 ++++++++++++++++++++++++---------------
+ 23 files changed, 7257 insertions(+), 5132 deletions(-)
-commit 33daad3961a4f07f3902b40f13e823e6e43e85da
+commit 33b8a85face5392b5ac843bdbe3a72f024cad6ef
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-10-22 17:15:32 +0300
+Date: 2024-05-29 16:33:24 +0300
- liblzma: Use lzma_attr_visibility_hidden on private extern declarations.
+ Build: Update po/*.po files only when needed
- These variables are internal to liblzma and not exposed in the API.
+ When po/xz.pot doesn't exist, running "make" or "make dist" will
+ create it. Then the .po files will be updated but only if they
+ actually would change more than the POT-Creation-Date line.
+ Then the .gmo files would be generated from the .po files.
+ This is the case before and after this commit.
+
+ However, "make dist" and thus "make mydist" did a forced update
+ to the files, updating them even if the only change was the
+ POT-Creation-Date line. This had pros and cons: It made it clear
+ that the .po file really is in sync with the recent strings in
+ the package. On the other hand, it added noise in form of changed
+ files in the source tree and distribution tarballs. It can be
+ ignored with something like "diff -I'^"POT-Creation-Date: '" but
+ it's still a minor annoyance *if* there's not enough value in
+ having the most recent timestamp.
+
+ Setting DIST_DEPENDS_ON_UPDATE_PO = no means that such forced
+ update won't happen in "make dist" anymore. However, the "mydist"
+ target will use xz.pot-update target which is the same target that
+ is run when xz.pot doesn't exist at all yet. Thus "mydist" will
+ ensure that the translations are up to date, without noise from
+ changes that would affect only the POT-Creation-Date line.
+
+ Note that po4a always uses msgmerge with --update, so POT-Creation-Date
+ in the man page translations is never the only change in .po files.
+ In that sense this commit makes the message translations behave more
+ similarly to the man page translations.
+
+ Distribution tarballs will still have non-reproducible POT-Creation-Date
+ in po/xz.pot and po4a/xz-man.pot but those are just two files. Even they
+ could be made reproducible from a Git timestamp if desired.
+
+ (cherry picked from commit 9284f1aea31f0eb23e2ea72f7218b271e2234762)
- src/liblzma/check/check.h | 7 +++++++
- src/liblzma/common/stream_flags_common.h | 3 +++
- src/liblzma/lz/lz_encoder_hash.h | 1 +
- src/liblzma/lzma/fastpos.h | 1 +
- src/liblzma/rangecoder/price.h | 1 +
- 5 files changed, 13 insertions(+)
+ Makefile.am | 3 ++-
+ po/Makevars | 6 +++++-
+ 2 files changed, 7 insertions(+), 2 deletions(-)
-commit 6961a5ac7df178bfc2b7a181c40575847bc3035f
+commit 09daebd66b55799bbc495b84310a86c91bbfc1c8
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-10-22 17:08:39 +0300
+Date: 2024-05-28 21:10:33 +0300
- liblzma: #define lzma_attr_visibility_hidden in common.h.
+ po4a/update-po: Disable wrapping in .pot and .po files
- In ELF shared libs:
+ The .po files from the Translation Project come with unwrapped
+ strings so this matches it.
- -fvisibility=hidden affects definitions of symbols but not
- declarations.[*] This doesn't affect direct calls to functions
- inside liblzma as a linker can replace a call to lzma_foo@plt
- with a call directly to lzma_foo when -fvisibility=hidden is used.
-
- [*] It has to be like this because otherwise every installed
- header file would need to explictly set the symbol visibility
- to default.
+ This may reduce the noise in diffs too. When the beginning of
+ a paragraph had changed, the rest of the lines got rewrapped
+ in msgsid. Now it's just one very long line that changes when
+ a paragraph has been edited.
- When accessing extern variables that aren't defined in the
- same translation unit, compiler assumes that the variable has
- the default visibility and thus indirection is needed. Unlike
- function calls, linker cannot optimize this.
+ The --add-location=file option was removed as redundant. The line
+ numbers don't exist in the .pot file due to --porefs file and thus
+ they cannot get copied to the .po files either.
- Using __attribute__((__visibility__("hidden"))) with the extern
- variable declarations tells the compiler that indirection isn't
- needed because the definition is in the same shared library.
-
- About 15+ years ago, someone told me that it would be good if
- the CRC tables would be defined in the same translation unit
- as the C code of the CRC functions. While I understood that it
- could help a tiny amount, I didn't want to change the code because
- a separate translation unit for the CRC tables was needed for the
- x86 assembly code anyway. But when visibility attributes are
- supported, simply marking the extern declaration with the
- hidden attribute will get identical result. When there are only
- a few affected variables, this is trivial to do. I wish I had
- understood this back then already.
+ (cherry picked from commit 4beba1cd62d7f8f7a6f1e899b68292d94c53b599)
- src/liblzma/common/common.h | 11 +++++++++++
- 1 file changed, 11 insertions(+)
+ po4a/update-po | 15 +++++++++++----
+ 1 file changed, 11 insertions(+), 4 deletions(-)
-commit 5b9e16764905d06fa8e8339ba185ddfee304e5fb
+commit 51ad72dae4e516e9292f6f399bd1e4970b77f7c1
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-09-30 22:54:28 +0300
+Date: 2024-05-28 18:36:53 +0300
- liblzma: Refer to MinGW-w64 instead of MinGW in the API headers.
+ Update contact info in README
- MinGW (formely a MinGW.org Project, later the MinGW.OSDN Project
- at <https://osdn.net/projects/mingw/>) has GCC 9.2.0 as the
- most recent GCC package (released 2021-02-02). The project might
- still be alive but majority of people have switched to MinGW-w64.
- Thus it seems clearer to refer to MinGW-w64 in our API headers too.
- Building with MinGW is likely to still work but I haven't tested it
- in the recent years.
+ (cherry picked from commit b14c130a58a649f9a73392eeb122cb252327c569)
- src/liblzma/api/lzma.h | 4 ++--
- src/liblzma/api/lzma/version.h | 2 +-
- 2 files changed, 3 insertions(+), 3 deletions(-)
+ README | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
-commit 36fabdbe67c8a8fbdc3ac695a91fc443a1328cc4
+commit 18463917f9b255b8f925fa54ab9388319735b14a
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-09-27 00:58:17 +0300
+Date: 2024-05-28 13:25:07 +0300
- CMake: Use -D_FILE_OFFSET_BITS=64 if (and only if) needed.
+ Translations: Use --package-name=xz-man with po4a
- A CMake option LARGE_FILE_SUPPORT is created if and only if
- -D_FILE_OFFSET_BITS=64 affects sizeof(off_t).
+ This is to match reality. See the added comment.
- This is needed on many 32-bit platforms and even with 64-bit builds
- with MinGW-w64 to get support for files larger than 2 GiB.
+ (cherry picked from commit 75f5f2e014b0ee646963f36bc6a9c840fb272353)
- CMakeLists.txt | 7 ++++-
- cmake/tuklib_large_file_support.cmake | 52 +++++++++++++++++++++++++++++++++++
- 2 files changed, 58 insertions(+), 1 deletion(-)
+ po4a/update-po | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
-commit 989c8c354cbd2d20fbae4a432a3e31f5bc1cb9bf
+commit 26bbcb13cd2bbb56fe406544a484b4edfc7e0837
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-09-30 02:14:25 +0300
+Date: 2024-05-28 13:03:40 +0300
- CMake: Generate and install liblzma.pc if not using MSVC.
+ Translations: Omit --package-name from po/Makevars
- Autotools based build uses -pthread and thus adds it to Libs.private
- in liblzma.pc. CMake doesn't use -pthread at all if pthread functions
- are available in libc so Libs.private doesn't get -pthread either.
+ This is closer to the reality in the po/*.po files.
+
+ (cherry picked from commit eb217d016cfbbba1babc19a61095b3ea25898af6)
- CMakeLists.txt | 21 +++++++++++++++++++++
- 1 file changed, 21 insertions(+)
+ po/Makevars | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
-commit 983f3b458dc79c5976a4237fdfe4f8079f8d8830
+commit c35ee804b89556d15bc8cdc16867f4316e69392f
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-09-30 01:13:13 +0300
+Date: 2024-05-28 01:17:45 +0300
- CMake: Rearrange the PACKAGE_ variables.
+ Translations: Omit man page line numbers from .pot and .po files
- The windres workaround now replaces spaces with \x20 so
- the package name isn't repeated.
+ (cherry picked from commit 9114267038deaecf4832a5cacb5acbe6591ac839)
+
+ po4a/update-po | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit 0f4429d47f9cfe2cdfbad115a7bc2f11221cb217
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-28 01:06:30 +0300
+
+ Translations: Use the xgettext option --add-location=file
- These changes will help with creation of liblzma.pc.
+ (cherry picked from commit 093490b58271e9424ce38a7b1b38bcf61b9c86c6)
- CMakeLists.txt | 26 +++++++++++++++-----------
- 1 file changed, 15 insertions(+), 11 deletions(-)
+ po/Makevars | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
-commit 4083c8e9501a48934a5fb563d2c3ce2ae143cd27
+commit a93e2c2d1d34a6f609d24a8e62072ce78df7a734
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-09-29 20:46:11 +0300
+Date: 2024-05-28 00:43:53 +0300
- liblzma: Add Cflags.private to liblzma.pc.in for MSYS2.
+ Translations: Use the msgmerge option --add-location=file
- It properly adds -DLZMA_API_STATIC when compiling code that
- will be linked against static liblzma. Having it there on
- systems other than Windows does no harm.
+ This way the PO file diffs are less noisy but the locations of the
+ strings are still present at file level, just without line numbers.
- See: https://www.msys2.org/docs/pkgconfig/
+ The option is available since gettext 0.19 (2014).
+ configure.ac requires 0.19.6.
+
+ (cherry picked from commit fccebe2b4fd513488fc920e4dac32562ed3c7637)
- src/liblzma/liblzma.pc.in | 1 +
- 1 file changed, 1 insertion(+)
+ po/Makevars | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 661549ecb7a9b136d72a01c137d9776c75d52d51
+commit d4389895592e9a8e0f6391fdad816ae0537bb07b
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-09-27 22:46:20 +0300
+Date: 2024-05-27 12:22:08 +0300
- CMake: Create liblzma.def when building liblzma.dll with MinGW-w64.
+ Build: Use $(SHELL) instead of sh to run scripts in Makefile.am
+
+ (cherry picked from commit f361d9ae85707a87eb28db400eb7229cec103d58)
- CMakeLists.txt | 20 ++++++++++++++++++++
- cmake/remove-ordinals.cmake | 26 ++++++++++++++++++++++++++
- 2 files changed, 46 insertions(+)
+ Makefile.am | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
-commit 0e546eb4da05c52b7d257e5bd85e15c51c4d86a3
+commit 5781414b6e3120098b0060d073aa2b0580ff6f40
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-10-26 21:44:42 +0300
+Date: 2024-05-23 17:25:13 +0300
- CMake: Change one CMAKE_CURRENT_SOURCE_DIR to CMAKE_CURRENT_LIST_DIR.
+ Translations: Change the home page URLs in man page translations
- In this case they have identical values.
+ Since the source strings have changed, these would get marked as
+ fuzzy and the original string would be used instead. The original
+ and translated strings are identical in this case so it wouldn't
+ matter. But patching the translations helps still because then
+ po4a will show the correct translation percentage.
+
+ (cherry picked from commit a26dece34793a09aac2476f954d162d03e9cf62b)
- CMakeLists.txt | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ po4a/de.po | 8 ++++----
+ po4a/fr.po | 4 ++--
+ po4a/ko.po | 4 ++--
+ po4a/pt_BR.po | 4 ++--
+ po4a/ro.po | 8 ++++----
+ po4a/uk.po | 8 ++++----
+ 6 files changed, 18 insertions(+), 18 deletions(-)
-commit da4d04e4d6e199d28b58bd2e0df4e120c52dd5d7
+commit 3670e0616eb9d86e7519d2b76242fd32c6e0c1ae
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-10-01 19:10:57 +0300
+Date: 2024-05-23 15:15:18 +0300
- CMake/Windows: Fix the import library filename.
+ CMake: Add manual support for 32-bit x86 assembly files
- Both PREFIX and IMPORT_PERFIX have to be set to "" to get
- liblzma.dll and liblzma.dll.a.
+ One has to pass -DENABLE_X86_ASM=ON to cmake to enable the
+ CRC assembly code. Autodetection isn't done. Looking at
+ CMAKE_SYSTEM_PROCESSOR might not work as it comes from uname
+ unless cross-compilation is done using a CMake toolchain file.
+
+ On top of this, if the code is run on modern processors that support
+ the CLMUL instruction, then the C code should be faster (but then
+ one should also be using a x86-64 build if possible).
+
+ (cherry picked from commit 24387c234b4eed1ef9a7eaa107391740b4095568)
- CMakeLists.txt | 1 +
- 1 file changed, 1 insertion(+)
+ CMakeLists.txt | 34 +++++++++++++++++++++++++++++++---
+ 1 file changed, 31 insertions(+), 3 deletions(-)
-commit 007558a358c48a0175cc8d47d11798d7967282ab
+commit c1b001b09e902ecacabb8a2ae1fc991018a4d1f8
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-10-11 19:47:44 +0300
+Date: 2024-05-23 14:26:45 +0300
- CMake: Don't shadow the cache entry ENABLE_THREADS with a normal variable.
+ CMake: Rename USE_DOXYGEN to ENABLE_DOXYGEN
- Using set(ENABLE_THREADS "posix") is confusing because it sets
- a new normal variable and leaves the cache entry with the same
- name unchanged. The intent wasn't to change the cache entry so
- this switches to a different variable name.
+ It's more consistent with the other option() uses.
+
+ (cherry picked from commit 0fb3c9c3f684f5a25bd425ed079a20a79f0c969d)
- CMakeLists.txt | 10 +++++++---
- 1 file changed, 7 insertions(+), 3 deletions(-)
+ CMakeLists.txt | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit 7d01de67ee3dd76cfc12c23220e2e4cdc59708f1
+commit 7213fe39c717d4623c92af715484a71d9a6ff8d0
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-10-09 21:12:31 +0300
+Date: 2024-05-22 15:21:53 +0300
- CMake: Edit threading related messages.
+ Use more confident language in COPYING
- It's mostly to change from "thread method" to "threading method".
+ (cherry picked from commit 62733592a1cc6f0b41f46ef52e06d1a6fe1ff38a)
- CMakeLists.txt | 19 ++++++++++---------
- 1 file changed, 10 insertions(+), 9 deletions(-)
+ COPYING | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
-commit f8edcf3da689aad4b21e139197725450f2c456a0
+commit 15358be94a4e3f9c20f331b64b3980f3e5283760
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-10-09 20:59:24 +0300
+Date: 2024-04-29 17:16:38 +0300
- CMake: Use FATAL_ERROR if user-supplied options aren't understood.
+ Add SPDX license identifiers to files under tests/ossfuzz
- This way typos are caught quickly and compounding error messages
- are avoided (a single typo could cause more than one error).
+ (cherry picked from commit 9ae2ebc1e504a1814b0788de95fb5c58c0328dde)
+
+ tests/ossfuzz/Makefile | 2 ++
+ tests/ossfuzz/config/fuzz_decode_alone.options | 2 ++
+ tests/ossfuzz/config/fuzz_decode_stream.options | 2 ++
+ tests/ossfuzz/config/fuzz_encode_stream.options | 2 ++
+ tests/ossfuzz/config/fuzz_lzma.dict | 2 ++
+ tests/ossfuzz/config/fuzz_xz.dict | 2 ++
+ 6 files changed, 12 insertions(+)
+
+commit 1aa92c7ffd0bf8f9738ebf3bd1263bd6f5f096a2
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-29 17:16:06 +0300
+
+ Add SPDX license identifier to .codespellrc
- This keeps using SEND_ERROR when the system is lacking a feature
- (like threading library or sandboxing method). This way the whole
- configuration log will be generated in case someone wishes to
- report a problem upstream.
+ (cherry picked from commit 9000d70eb9815bd7f43ffddc1c3316c507aa0e05)
- CMakeLists.txt | 28 ++++++++++++++--------------
- 1 file changed, 14 insertions(+), 14 deletions(-)
+ .codespellrc | 2 ++
+ 1 file changed, 2 insertions(+)
-commit 1695021e4a233a9388ddd428654c1447f0ea3bfb
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-10-19 16:09:01 +0800
+commit 3c7e400fdcabc0a1b78863948fc17964667a9401
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-22 15:12:09 +0300
- CMake: Add ALLOW_CLMUL_CRC option to enable/disable CLMUL.
+ Move entries po4a/.gitignore to the top level .gitignore
- The option is enabled by default, but will only be visible to a user
- listing cache variables or using a CMake GUI application if the
- immintrin.h header file is found.
+ The po4a directory is in EXTRA_DIST and thus all files there
+ are included in the package. .gitignore doesn't belong in the
+ package so keep that file out of the po4a directory.
- This mirrors our Autotools build --disable-clmul-crc functionality.
+ (cherry picked from commit 903c16fcfa5bfad0cdb2a7383d941243bcb12e76)
- CMakeLists.txt | 40 +++++++++++++++++++++++-----------------
- 1 file changed, 23 insertions(+), 17 deletions(-)
+ .gitignore | 4 ++++
+ po4a/.gitignore | 3 ---
+ 2 files changed, 4 insertions(+), 3 deletions(-)
-commit 5056bc51071d1a07097c5667a0d5bd85242e31b9
+commit 8a99272d4a9358dabdb5bc0b72f4c5240a9dc066
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-10-14 17:56:59 +0300
+Date: 2024-05-20 16:55:00 +0300
- tuklib_integer: Revise unaligned reads and writes on strict-align archs.
+ CMake: Add comments
- In XZ Utils context this doesn't matter much because
- unaligned reads and writes aren't used in hot code
- when TUKLIB_FAST_UNALIGNED_ACCESS isn't #defined.
+ (cherry picked from commit 9d997d6f9d4f042412e45c7b7a23a14ad2e4f9aa)
- src/common/tuklib_integer.h | 256 ++++++++++++++++++++++++++++++++------------
- 1 file changed, 189 insertions(+), 67 deletions(-)
+ tests/tests.cmake | 2 ++
+ 1 file changed, 2 insertions(+)
-commit 9e14743ee5ba79181076bc33952245d5b18fbc58
+commit c35259c9e2400f6f88c269d95ecafdb223ff45d2
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-09-23 02:21:49 +0300
+Date: 2024-05-20 16:55:00 +0300
- tuklib_integer: Add missing write64be and write64le fallback functions.
+ CMake: Remove the note that some tests aren't run
+
+ They are now in the common build configurations.
+
+ (cherry picked from commit d35368b33e54bad2f566df99fac29ffea38e34de)
- src/common/tuklib_integer.h | 34 ++++++++++++++++++++++++++++++++++
- 1 file changed, 34 insertions(+)
+ CMakeLists.txt | 2 --
+ 1 file changed, 2 deletions(-)
-commit 4cc91ceb3992ef4f51302b56178c3b2c2aeaaaad
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-10-12 20:12:18 +0800
+commit 30982a215395f19b3837c3da540e1cb3f913569f
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-20 16:55:00 +0300
- Build: Update visibility.m4 from Gnulib.
+ CMake: Add support for test_files.sh
- Updating from version 6 -> 8 from upstream. Declarations for variables
- and function bodies were added to avoid unnecessary failures with
- -Werror.
+ (cherry picked from commit dc232d584619b2819a9c52d6ad5d8b5d56b392ba)
- m4/visibility.m4 | 9 +++++++--
- 1 file changed, 7 insertions(+), 2 deletions(-)
+ tests/tests.cmake | 20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
-commit 1824a6007cb1c8d5d7abcc7bf649148bc06fa72c
+commit 3a8f81e0ad4cd1c102a03ff09e703cf8cb074afc
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-10-06 19:36:35 +0300
+Date: 2024-05-20 16:55:00 +0300
- Update THANKS.
+ Tests: Make test_files.sh more flexible
+
+ Add a new optional argument to specify the directory of the xz and
+ xzdec executables.
+
+ If ../config.h doesn't exist, assume that all encoders and decoders
+ are available.
+
+ (cherry picked from commit a7e9230af9d1f87f474fe38886eb977d4149dc9b)
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ tests/test_files.sh | 18 +++++++++++++-----
+ 1 file changed, 13 insertions(+), 5 deletions(-)
-commit 8fdc71a27d07b10a3da52432432e080b6d577642
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-09-29 20:14:39 +0800
+commit 0644675c829143112c85455f8a6aa91bfc4e1bbb
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-20 16:55:00 +0300
- CMake: Rename xz and man page symlink custom targets.
+ CMake: Add support for test_compress.sh tests
- The Ninja Generator for CMake cannot have a custom target and its
- BYPRODUCTS have the same name. This has prevented Ninja builds on
- Unix-like systems since the xz symlinks were introduced in
- 80a1a8bb838842a2be343bd88ad1462c21c5e2c9.
+ (cherry picked from commit b40e6efbb48d740b9b5b303e59e344801cbb5bd8)
- CMakeLists.txt | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
+ tests/tests.cmake | 26 ++++++++++++++++++++++++++
+ 1 file changed, 26 insertions(+)
-commit 38171492ded6426ddf53d0c200fa8c93fcd02a60
+commit dcc02a6ca0e0ac4e330e820683754badbcf9815b
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-09-27 19:54:35 +0300
+Date: 2024-05-20 16:55:00 +0300
- CMake: Fix Windows build with Clang/LLVM 17.
+ Tests: Make test_compress.sh more flexible
- llvm-windres 17.0.0 has more accurate emulation of GNU windres, so
- the hack for GNU windres must now be used with llvm-windres too.
+ Add a new optional second argument: directory of the xz and xzdec
+ executables. This is need with the CMake build where the binaries
+ end up in the top-level build directory.
- LLVM 16.0.6 has the old behavior and there likely won't be more
- 16.x releases. So we can simply check for >= 17.0.0.
+ If ../config.h doesn't exist, assume that all encoders and decoders
+ are available. This will make this script usable from CMake in the
+ most common build configuration.
- The workaround must not be used with Clang that is acting in
- MSVC mode. This checks for the known environments that need
- the workaround instead of using "NOT MSVC".
+ NOTE: Since the existence of ../config.h is checked, the working
+ directory of the test script must be a subdir in the build tree!
+ Otherwise ../config.h would look outside the build tree.
- See also:
- https://github.com/llvm/llvm-project/commit/2bcc0fdc58a220cb9921b47ec8a32c85f2511a47
+ Use the default check type instead of forcing CRC32 or CRC64.
+ Now the script doesn't need to check if CRC64 is available.
+
+ (cherry picked from commit ac3222d2cb1ff3a15eb6d58f9ea9bc78e8bc3bb2)
- CMakeLists.txt | 26 ++++++++++++++------------
- 1 file changed, 14 insertions(+), 12 deletions(-)
+ tests/test_compress.sh | 41 +++++++++++++++++++++++++++++------------
+ 1 file changed, 29 insertions(+), 12 deletions(-)
-commit 1bce6fe48334b5df33d0487a9cbe41950122230e
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-09-27 00:02:11 +0800
+commit c761b7051fb2ebb6da3cbecafe695fb5af7b2c9c
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-20 16:55:00 +0300
- liblzma: Avoid compiler warning without creating extra symbol.
+ CMake: Prepare to support the test_*.sh tests
- When the generic fast crc64 method is used, then we omit
- lzma_crc64_table[][].
+ This is a bit hacky since the scripts grep config.h to know which
+ features were built but the CMake build doesn't create config.h.
+ So instead those test scripts will be run only when all relevant
+ features have been enabled.
- The C standards don't allow an empty translation unit which can be
- avoided by declaring something, without exporting any symbols.
+ (cherry picked from commit 006040b29c83104403621e950ada0c8956c56b3d)
- src/liblzma/check/crc64_table.c | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
+ tests/tests.cmake | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 49 insertions(+)
-commit dce95a593e6cd9779110aa1e314abd8b35c75f6b
+commit a71bc2d75b95f85fe046f0fd1fb25d36be2b20ba
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-09-26 17:24:15 +0300
+Date: 2024-05-20 16:55:00 +0300
- Build: Update the comment about -Werror usage in checks.
+ Tests: test_suffix.sh: Add a comment
+
+ (cherry picked from commit 6167607a6ea72fb74eefb943c4566e3cab528cd2)
- configure.ac | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
+ tests/test_suffix.sh | 3 +++
+ 1 file changed, 3 insertions(+)
-commit f3c32762ae309afa2fe330e7fb397acfdedc4d37
+commit 8fda5ce872632e464a1f9660b3ab8dac939a03c6
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-09-26 13:51:31 +0300
+Date: 2024-05-18 00:34:07 +0300
- Build: Fix underquoted AC_LANG_SOURCE.
+ Fix typos
- It made no practical difference in this case.
+ Thanks to xx on #tukaani.
+
+ (cherry picked from commit 4e9023857d287f624562156b60dc23d2b64c0f10)
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ src/common/mythread.h | 2 +-
+ src/common/tuklib_integer.h | 2 +-
+ src/liblzma/api/lzma/base.h | 2 +-
+ src/liblzma/common/filter_buffer_decoder.c | 2 +-
+ src/liblzma/common/filter_common.c | 2 +-
+ src/scripts/xzgrep.in | 2 +-
+ 6 files changed, 6 insertions(+), 6 deletions(-)
-commit 7dd57f2f2c8fde93fa42b4dbf6d9860717723b41
+commit 2729079bcb8dd1c3ab1a79426690d17f6f8e6f7d
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-09-26 13:14:37 +0300
+Date: 2024-05-18 00:23:52 +0300
- Build: Silence Autoconf warning.
+ liblzma: Fix white space
- There was a use of AC_COMPILE_IFELSE that didn't use
- AC_LANG_SOURCE and Autoconf warned about this. The omission
- had been intentional but it turned out that this didn't do
- what I thought it would.
-
- Autoconf 2.71 manual gives an impression that AC_LANG_SOURCE
- inserts all #defines that have been made with AC_DEFINE so
- far (confdefs.h). The idea was that omitting AC_LANG_SOURCE
- would mean that only the exact code included in the
- AC_COMPILE_IFELSE call would be compiled.
-
- With C programs this is not true: the #defines get added without
- AC_LANG_SOURCE too. There seems to be no neat way to avoid this.
- Thus, with the C language at least, adding AC_LANG_SOURCE makes
- no other difference than silencing a warning from Autoconf. The
- generated "configure" remains identical. (Docs of AC_LANG_CONFTEST
- say that the #defines have been inserted since Autoconf 2.63b and
- that AC_COMPILE_IFELSE uses AC_LANG_CONFTEST. So the behavior is
- documented if one also reads the docs of macros that one isn't
- calling directly.)
+ Thanks to xx on #tukaani.
- Any extra code, including #defines, can cause problems for
- these two tests because these tests must use -Werror.
- CC=clang CFLAGS=-Weverything is the most extreme example.
- It enables -Wreserved-macro-identifier which warns about
- It's possible to write a test file that passes -Weverything but
- it becomes impossible when Autoconf inserts confdefs.h.
-
- So this commit adds AC_LANG_SOURCE to silence Autoconf warnings.
- A different solution is needed for -Werror tests.
+ (cherry picked from commit b14d08fbbc254485ace9ccfe7908674f608a62ae)
- configure.ac | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
+ src/liblzma/simple/simple_coder.h | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
-commit edec253e418562f3164a01ecc8805295fa022efa
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-09-26 00:47:26 +0800
+commit a289c4dfeb3ded35e129c48b13f46605f0138704
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-13 17:15:04 +0300
- Build: Remove Gnulib dependency from tests.
+ xz: Document the static function get_chains_memusage()
- The tests do not use any Gnulib replacements so they do not need to link
- libgnu.a or have /lib in the include path.
+ (cherry picked from commit 142e670a413a7bce1a2647f1cf1f33f8ee2dbe88)
- tests/Makefile.am | 7 +------
- 1 file changed, 1 insertion(+), 6 deletions(-)
+ src/xz/coder.c | 14 ++++++++++++--
+ 1 file changed, 12 insertions(+), 2 deletions(-)
-commit 46cb133ce7360496eecca1255b364c05f0205855
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-09-26 00:43:43 +0800
+commit 6f0db31713845386ce2419c55b2df89b53b80dd3
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-13 17:07:22 +0300
- CMake: Remove /lib from tests include path.
+ xz: Rename filters_memusage_max() to get_chains_memusage()
- The tests never included anything from /lib, so this was not needed.
+ (cherry picked from commit 78e984399a64bfee5d11e7308e0bdbc1006db2ca)
- CMakeLists.txt | 1 -
- 1 file changed, 1 deletion(-)
+ src/xz/coder.c | 14 ++++++--------
+ 1 file changed, 6 insertions(+), 8 deletions(-)
-commit 4ae13cfe0dedb8ddc3cf9ded8cd1ac09361b3bd1
+commit d7e2bf7e2dc9289a7a5dd0311d19d10de6d7ea1b
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-09-24 16:32:32 +0300
+Date: 2024-05-13 17:04:05 +0300
- sysdefs.h: Update the comment about __USE_MINGW_ANSI_STDIO.
+ xz: Rename filter_memusages to chains_memusages
+
+ (cherry picked from commit 54c3db0a83d3e67d89aba92a0957f2dce9b111a7)
- src/common/sysdefs.h | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
+ src/xz/coder.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
-commit 660c8c29e57d30dbd5009ef1f0ec1bbe195ccef6
+commit 58f200b6d1dc4cbc1ab3315a359120ab6eb84878
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-09-22 02:33:29 +0300
+Date: 2024-05-12 22:26:30 +0300
- xz: Windows: Don't (de)compress to special files like "con" or "nul".
+ xz: Simplify the memory usage scaling code
- Before this commit, the following writes "foo" to the
- console and deletes the input file:
+ This is closer to what it was before the --filtersX support was added,
+ just extended to support for scaling all filter chains. The method
+ before this commit was an extended version of the original too but
+ it was done in a more complex way for no clear reason. In case of
+ an error, the complex version printed fewer informative messages
+ (a good thing) but it's not a sigificant benefit.
- echo foo | xz > con_xz
- xz --suffix=_xz --decompress con_xz
+ In the limit is too low even for single-threaded mode, the required
+ amount of memory is now reported like in 5.4.x instead of like in
+ 5.5.1alpha - 5.6.1 which showed the original non-scaled usage. It
+ had been a FIXME in the old code but it's not clear what message
+ makes the most sense.
- It cannot happen without --suffix because names like con.xz
- are also special and so attempting to decompress con.xz
- (or compress con to con.xz) will already fail when opening
- the input file.
-
- Similar thing is possible when compressing. The following
- writes to "nul" and the input file "n" is deleted.
-
- echo foo | xz > n
- xz --suffix=ul n
-
- Now xz checks if the destination is a special file before
- continuing. DOS/DJGPP version had a check for this but
- Windows (and OS/2) didn't.
+ Fixes: 5f0c5a04388f8334962c70bc37a8c2ff8f605e0a
+ (cherry picked from commit d9e1ae79ec90d6a7eafeaceaf0ece4f0c83d4417)
- src/xz/file_io.c | 35 ++++++++++++++++++++++++++++-------
- 1 file changed, 28 insertions(+), 7 deletions(-)
+ src/xz/coder.c | 163 ++++++++++++++++++++-------------------------------------
+ 1 file changed, 57 insertions(+), 106 deletions(-)
-commit b7ce6e80786fc0c08ed129e8ee262ea96a5473a1
+commit 41bdc9fa5cc2fc2a70f4331329ac724773cc2f26
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-09-21 20:42:52 +0300
+Date: 2024-05-13 12:14:00 +0300
- CMake: Wrap two overlong lines that are possible to wrap.
+ xz: Edit comments
+
+ (cherry picked from commit 0ee56983d198b776878432703de664049b1be32e)
- CMakeLists.txt | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
+ src/xz/coder.h | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
-commit 1595f454d5c8257c668cccd6a86dd68175d5c430
+commit 52e40c1912dfdbf8c7aa85e3a4c3eb138fa73d5d
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-09-21 20:36:31 +0300
+Date: 2024-05-13 12:03:51 +0300
- CMake: Add a comment about threads on Cygwin.
+ xz: Rename chain_idx to chain_num
+
+ (cherry picked from commit ec82a49c3553f7206104582dbfb8b64fa433b491)
- CMakeLists.txt | 1 +
- 1 file changed, 1 insertion(+)
+ src/xz/coder.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
-commit 5be6275f19784cdd5a954f0188045c8ff4934d54
+commit 8a019633319c694423691f58c55fa23a46e45ded
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-09-12 21:12:34 +0300
+Date: 2024-05-12 22:29:11 +0300
- CMake: Bump maximum policy version to 3.27.
-
- There are several new policies. CMP0149 may affect the Windows SDK
- version that CMake will choose by default. The new behavior is more
- predictable, always choosing the latest SDK version by default.
+ xz: Edit coding style
- The other new policies shouldn't affect this package.
+ (cherry picked from commit a731a6993c34bbbd55abaf9c166718682b1da24f)
- CMakeLists.txt | 2 +-
+ src/xz/coder.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-commit e515643d7524851d1eb7dab73453e26d8521324c
+commit e3ad7eda74caea29849e2e9ec01212f5f7d0f574
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-09-08 19:08:57 +0300
+Date: 2024-05-12 22:16:05 +0300
- Doxygen: Add more C macro names to PREDEFINED.
+ xz: Edit comments
+
+ Fixes: 5f0c5a04388f8334962c70bc37a8c2ff8f605e0a
+ (cherry picked from commit 32eb176b89243fce3112347fe43a8ad14a9fd2be)
- doxygen/Doxyfile | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
+ src/xz/coder.c | 8 ++------
+ 1 file changed, 2 insertions(+), 6 deletions(-)
-commit e3478ae4f36cd06522a2fef023860893f068434d
+commit 09cabae2ab47a06f6eee02419a815d4bfd0d9490
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-09-11 18:47:26 +0300
+Date: 2024-05-12 21:57:49 +0300
- liblzma: Move a few __attribute__ uses in function declarations.
+ xz: Fix grammar in a comment
- The API headers have many attributes but these were left
- as is for now.
+ Fixes: cb3111e3ed84152912b5138d690c8d9f00c6ef02
+ (cherry picked from commit b90339f4daa510d2b1b8c550f855a99667f1d004)
- src/liblzma/common/common.c | 6 ++++--
- src/liblzma/common/common.h | 8 ++++----
- src/liblzma/common/memcmplen.h | 3 ++-
- 3 files changed, 10 insertions(+), 7 deletions(-)
+ src/xz/coder.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit b71b8922ef3971e5ccffd1e213888d44abe21d11
+commit c10b66fbf9b2442741a1f052bdb4ce7009af9cda
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-09-11 19:03:35 +0300
+Date: 2024-05-12 21:46:56 +0300
- xz, xzdec, lzmainfo: Use tuklib_attr_noreturn.
+ xz: Rename filter_memusages to encoder_memusages
- For compatibility with C23's [[noreturn]], tuklib_attr_noreturn
- must be at the beginning of declaration (before "extern" or
- "static", and even before any GNU C's __attribute__).
-
- This commit also moves all other function attributes to
- the beginning of function declarations. "extern" is kept
- at the beginning of a line so the attributes are listed on
- separate lines before "extern" or "static".
+ (cherry picked from commit 4c0bdaf13d651b22ba13bd93f8379724d6ccdc13)
- src/lzmainfo/lzmainfo.c | 6 ++++--
- src/xz/coder.c | 3 ++-
- src/xz/hardware.h | 3 ++-
- src/xz/message.h | 30 +++++++++++++++++-------------
- src/xz/options.c | 3 ++-
- src/xz/util.h | 8 ++++----
- src/xzdec/xzdec.c | 9 ++++++---
- 7 files changed, 37 insertions(+), 25 deletions(-)
+ src/xz/coder.c | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
-commit 359e5c6cb128dab64ea6070d21d1c240f96cea6b
+commit 9132ce3564b2c003bffd6de6294a3d98dccf314e
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-09-11 18:53:31 +0300
+Date: 2024-05-12 21:42:05 +0300
- Remove incorrect uses of __attribute__((__malloc__)).
+ xz: Edit coding style
- xrealloc() is obviously incorrect, modern GCC docs even
- mention realloc() as an example where this attribute
- cannot be used.
+ (cherry picked from commit b54aa023e0ec291b06e976e5f094ab0549e7b09b)
+
+ src/xz/coder.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit d642e13874e93b03959d1de523f1c8ebe9428838
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-12 21:31:02 +0300
+
+ xz: Rename filters_index to chain_num
- liblzma's lzma_alloc() and lzma_alloc_zero() would be
- correct uses most of the time but custom allocators
- may use a memory pool or otherwise hold the pointer
- so aliasing issues could happen in theory.
+ The reason is the same as in bd0782c1f13e52cd0fd8415208e30e47004a4c68.
- The xstrdup() case likely was correct but I removed it anyway.
- Now there are no __malloc__ attributes left in the code.
- The allocations aren't in hot paths so this should make
- no practical difference.
+ (cherry picked from commit 49f67d3d3f42b640a7dfc4ca04c8934f658e10ce)
- src/liblzma/common/common.c | 4 ++--
- src/liblzma/common/common.h | 4 ++--
- src/xz/util.h | 4 ++--
- 3 files changed, 6 insertions(+), 6 deletions(-)
+ src/xz/args.c | 8 ++++----
+ src/xz/coder.c | 8 ++++----
+ src/xz/coder.h | 2 +-
+ 3 files changed, 9 insertions(+), 9 deletions(-)
-commit 589b4cba22fccb1dbc919df5d134aefb2b5a6b01
+commit 47599f3b73f0a2bc18e0a8367d723f1eb0f11b63
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-09-19 14:03:45 +0300
+Date: 2024-05-12 21:22:43 +0300
- Update THANKS.
+ xz: Replace a few uint32_t with "unsigned" to reduce the number of casts
+
+ These hold only tiny values.
+
+ (cherry picked from commit ff9e8b3d069ecfa52ec43dcdb198542d1692a492)
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ src/xz/args.c | 2 +-
+ src/xz/coder.c | 17 ++++++++---------
+ src/xz/coder.h | 2 +-
+ 3 files changed, 10 insertions(+), 11 deletions(-)
-commit 43728ed2267e921fbdfa699ee1e91b105ab0e98b
+commit 8f5ab75c454ea8676ed09c7f6eda8afe87b008ad
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-09-14 16:35:46 +0300
+Date: 2024-05-12 21:10:45 +0300
- Update THANKS.
+ xz: Rename filters_used_mask to chains_used_mask
+
+ The reason is the same as in bd0782c1f13e52cd0fd8415208e30e47004a4c68.
+
+ (cherry picked from commit b5e6c1113b1ba02c282bd9163eccdb521c937a78)
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ src/xz/coder.c | 30 +++++++++++++++---------------
+ 1 file changed, 15 insertions(+), 15 deletions(-)
-commit caf00e0988ba47842cfd93dfbb17f7d30120d6e7
+commit 3eb7cf9dd5b90a074f741234225d7de51ad88774
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-09-14 16:34:07 +0300
+Date: 2024-05-12 17:14:43 +0300
- liblzma: Mark crc64_clmul() with __attribute__((__no_sanitize_address__)).
+ xz: Move the setting of "check" in coder_set_compression_settings()
- Thanks to Agostino Sarubbo.
- Fixes: https://github.com/tukaani-project/xz/issues/62
+ It's more logical to do it in the beginning instead of in the middle
+ of the filter chain handling.
+
+ Fixes: d6af7f347077b22403133239592e478931307759
+ (cherry picked from commit 32500dfaadae2ea36fda2e17b49ae7d9ac1acf52)
- src/liblzma/check/crc64_fast.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
+ src/xz/coder.c | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
-commit a70e96d2da761b8b3a77bf14e08002d871e5950b
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-09-12 22:36:12 +0800
+commit 067961ee0e1adaa66a43fbf8c3be31697554a839
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-12 17:09:17 +0300
- CMake: Fix time.h checks not running on second CMake run.
+ xz: Rename "filters" to "chains"
- If CMake was configured more than once, HAVE_CLOCK_GETTIME and
- HAVE_CLOCK_MONOTONIC would not be set as compile definitions. The check
- for librt being needed to provide HAVE_CLOCK_GETTIME was also
- simplified.
+ The convention is that
+
+ lzma_filter filters[LZMA_FILTERS_MAX + 1];
+
+ contains the filters of a single filter chain.
+ It was so here as well before the commit
+ d6af7f347077b22403133239592e478931307759.
+ It changes "filters" to a ten-element array of filter chains.
+ It's clearer to call this array-of-arrays "chains".
+
+ This also renames "filter_idx" to "chain_idx" which is used
+ as an index as in chains[chain_idx].
+
+ (cherry picked from commit ad146b1f42bbb678175a503a45ce525e779f9b8b)
- CMakeLists.txt | 18 ++++++++++--------
- 1 file changed, 10 insertions(+), 8 deletions(-)
+ src/xz/coder.c | 68 +++++++++++++++++++++++++++++-----------------------------
+ 1 file changed, 34 insertions(+), 34 deletions(-)
-commit d5275d83bd2a9701c5feb8666785007c074b1359
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-09-12 22:34:06 +0800
+commit 6822f6f891d43c97ea379a51223ce8ea69439161
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-12 16:56:15 +0300
- CMake: Fix unconditionally defining HAVE_CLOCK_MONOTONIC.
+ xz: Clean up a comment
- If HAVE_CLOCK_GETTIME was defined, then HAVE_CLOCK_MONOTONIC was always
- added as a compile definition even if the check for it failed.
+ (cherry picked from commit 5a4ae4e4d0105404184e9a82ee08f94e1b7783e0)
- CMakeLists.txt | 8 +++-----
- 1 file changed, 3 insertions(+), 5 deletions(-)
+ src/xz/coder.c | 9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
-commit 1f6e7c68fbdeeaa9482fc77de090be63d90912fd
+commit 0e5e3e7bdcfcdc4b4607665ff0f6ad794e5195af
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-08-31 19:50:05 +0300
+Date: 2024-05-12 16:52:09 +0300
- xz: Refactor thousand separator detection and disable it on MSVC.
+ xz: Add clarifying assertions
- Now the two variations of the format strings are created with
- a macro, and the whole detection code can be easily disabled
- on platforms where thousand separator formatting is known to
- not work (MSVC has no support, and on DJGPP 2.05 it can have
- problems in some cases).
+ (cherry picked from commit 2de80494ed9a4dc7db395a32a5efb770ce769804)
- src/xz/util.c | 89 ++++++++++++++++++++++++++++++-----------------------------
- 1 file changed, 45 insertions(+), 44 deletions(-)
+ src/xz/coder.c | 4 ++++
+ 1 file changed, 4 insertions(+)
-commit ef71f83973a20cc28a3221f85681922026ea33f5
+commit 77bcf6b76a26833923e62b2dec717474d5d44700
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-08-31 18:14:43 +0300
+Date: 2024-05-10 20:23:33 +0300
- xz: Fix a too relaxed assertion and remove uses of SSIZE_MAX.
+ xz: Add a clarifying assertion
- SSIZE_MAX isn't readily available on MSVC. Removing it means
- that there is one thing less to worry when porting to MSVC.
+ Fixes: 5f0c5a04388f8334962c70bc37a8c2ff8f605e0a
+ (cherry picked from commit 1eaad004bf7748976324672db028e34f42802e61)
- src/xz/file_io.c | 5 ++---
- src/xz/file_io.h | 4 ++--
- 2 files changed, 4 insertions(+), 5 deletions(-)
+ src/xz/coder.c | 1 +
+ 1 file changed, 1 insertion(+)
-commit cf8ba7c3a89e37736b926dfbe85dffeff725db47
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-08-28 23:14:45 +0800
+commit df3efc058a256629ea0153b4750d3df308757038
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-12 16:47:17 +0300
- Tests: Improve invalid unpadded size check in test_lzma_index_append().
+ xz: Clarify a comment
- This check was extended to test the code added to fix a failing assert
- in 68bda971bb8b666a009331455fcedb4e18d837a4.
+ (cherry picked from commit 605094329b986244833c967c04963cacc41a868d)
- tests/test_index.c | 26 +++++++++++++++++++++++---
- 1 file changed, 23 insertions(+), 3 deletions(-)
+ src/xz/coder.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
-commit 4a4180ce74788e97e90b9aab579bfd7c6dce3f59
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-08-28 21:54:41 +0800
+commit 4ebfe11cd33439675f03e1e3725abf03d6f8251b
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-12 16:28:25 +0300
- Tests: Improve comments in test_index.c.
+ xz: Use the info collected in parse_block_list()
+
+ This is slightly simpler and it avoids looping through
+ the opt_block_list array.
+
+ (cherry picked from commit 8fac2577f2dbb9491afd8500f60d004c9071df3b)
- tests/test_index.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
+ src/xz/coder.c | 95 ++++++++++++++++++++++++----------------------------------
+ 1 file changed, 39 insertions(+), 56 deletions(-)
-commit 4b23b84b89e39a5117e16f66c3b01db4f08ed3e7
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-08-28 21:52:54 +0800
+commit bfea6913618357a7034a1d79079bccb688262124
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-12 15:48:45 +0300
- Update THANKS.
+ xz: Remember the filter chains and the largest Block in parse_block_list()
+
+ (cherry picked from commit 81d350dab864b985b740742772f3b132d4c52914)
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ src/xz/args.c | 18 ++++++++++++++++++
+ src/xz/coder.c | 2 ++
+ src/xz/coder.h | 13 +++++++++++++
+ 3 files changed, 33 insertions(+)
-commit 773f1e8622cb1465df528cb16a749517650acd93
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-08-28 21:50:16 +0800
+commit d4e33e73922427a0f5277b91b239af538fd41c06
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-12 15:38:48 +0300
- liblzma: Update assert in vli_ceil4().
+ xz: Update a comment and initialization of filters_used_mask
- The argument to vli_ceil4() should always guarantee the return value
- is also a valid lzma_vli. Thus the highest three valid lzma_vli values
- are invalid arguments. All uses of the function ensure this so the
- assert is updated to match this.
+ (cherry picked from commit 46ab56968f7dfdac187710a1223659d832fa1565)
- src/liblzma/common/index.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ src/xz/coder.c | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
-commit 68bda971bb8b666a009331455fcedb4e18d837a4
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-08-28 21:31:25 +0800
+commit 3c130737c9bb4a5021bb14eb19e9ceae30ffef3a
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-12 15:08:10 +0300
- liblzma: Add overflow check for Unpadded size in lzma_index_append().
+ xz: parse_block_list: Edit integer type casting
- This was not a security bug since there was no path to overflow
- UINT64_MAX in lzma_index_append() or when it calls index_file_size().
- The bug was discovered by a failing assert() in vli_ceil4() when called
- from index_file_size() when unpadded_sum (the sum of the compressed size
- of current Stream and the unpadded_size parameter) exceeds LZMA_VLI_MAX.
-
- Previously, the unpadded_size parameter was checked to be not greater
- than UNPADDED_SIZE_MAX, but no check was done once compressed_base was
- added.
-
- This could not have caused an integer overflow in index_file_size() when
- called by lzma_index_append(). The calculation for file_size breaks down
- into the sum of:
-
- - Compressed base from all previous Streams
- - 2 * LZMA_STREAM_HEADER_SIZE (size of the current Streams header and
- footer)
- - stream_padding (can be set by lzma_index_stream_padding())
- - Compressed base from the current Stream
- - Unpadded size (parameter to lzma_index_append())
-
- The sum of everything except for Unpadded size must be less than
- LZMA_VLI_MAX. This is guarenteed by overflow checks in the functions
- that can set these values including lzma_index_stream_padding(),
- lzma_index_append(), and lzma_index_cat(). The maximum value for
- Unpadded size is enforced by lzma_index_append() to be less than or
- equal UNPADDED_SIZE_MAX. Thus, the sum cannot exceed UINT64_MAX since
- LZMA_VLI_MAX is half of UINT64_MAX.
-
- Thanks to Joona Kannisto for reporting this.
+ (cherry picked from commit e89293a0baeb8663707c6b4a74fbb310ec698a8f)
- src/liblzma/common/index.c | 6 ++++++
- 1 file changed, 6 insertions(+)
+ src/xz/args.c | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
-commit b41bb79c602481d7ea93d65f5b3e3f08dc54233b
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-08-28 22:18:29 +0800
+commit 40c8513b4ee42b8c0fae9b2a229e078ac7e0f87a
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-12 14:51:37 +0300
- Translations: Update the Esperanto translation.
+ xz: Make filter_memusages a local variable
+
+ (cherry picked from commit 87011e40c168255cd2edea129ee68c901770603b)
- po/eo.po | 47 +++++++++++++++++++++++++++++------------------
- 1 file changed, 29 insertions(+), 18 deletions(-)
+ src/xz/coder.c | 35 +++++++++++++++++++++--------------
+ 1 file changed, 21 insertions(+), 14 deletions(-)
-commit 6614e6d4bf8e2b5af6eb73930148e0ffc8d2265a
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-08-09 20:55:36 +0800
+commit cacaf25aa71cd1110cc049d037c11e4075602c35
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-10 20:33:08 +0300
- Docs: Update INSTALL for --enable-threads method win95.
+ xz: Remove unused code and simplify
- The Autotools build allows win95 threads and --enable-small together now
- if the compiler supports __attribute__((__constructor__)).
+ opt_mode == MODE_COMPRESS isn't possible when HAVE_ENCODERS isn't
+ defined. Thus, when *encoding*, the message about *decoder* memory
+ usage is possible to show only when both encoder and decoder have
+ been built.
+
+ Since the message is shown only at V_DEBUG, skip the memusage
+ calculation if verbosity level isn't high enough.
+
+ Fixes: 5f0c5a04388f8334962c70bc37a8c2ff8f605e0a
+ (cherry picked from commit 347b412a9374e0456bef9da0d7d79174c0b6f1a5)
- INSTALL | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
+ src/xz/coder.c | 16 ++++------------
+ 1 file changed, 4 insertions(+), 12 deletions(-)
-commit bfb623ad96fa6f1dbc0c560403c4296e3c8e26c9
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-08-09 20:54:15 +0800
+commit 3495a6b291f49079485854bb185a52c29d06cd2f
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-10 20:22:58 +0300
- CMake: Conditionally allow win95 threads and --enable-small.
+ xz: Fix integer type from uint64_t to uint32_t
+
+ lzma_options_lzma.dict_size is uint32_t so use it here too.
+
+ Fixes: 5f0c5a04388f8334962c70bc37a8c2ff8f605e0a
+ (cherry picked from commit 31358c057c9de9d6aba96bae112b2d17942de7cb)
- CMakeLists.txt | 27 +++++++++++++++++++--------
- 1 file changed, 19 insertions(+), 8 deletions(-)
+ src/xz/coder.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit e919ebb29ac9f5270cd7176a39d0d3b4cea875a9
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-08-09 20:35:16 +0800
+commit 2861d856deb557734f067c5c471d670f0b0c6684
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-08 21:40:07 +0300
- Build: Conditionally allow win95 threads and --enable-small.
+ debug/translation.bash: Remove an outdated test command
- When the compiler supports __attribute__((__constructor__))
- mythread_once() is never used, even with --enable-small. A configuration
- with win95 threads and --enable-small will compile and be thread safe so
- it can be allowed.
+ Since 5.3.5beta, "xz --lzma2=mf=bt4,nice=2" works even though bt4 needs
+ at least nice=4. It is rounded up internally by liblzma when needed.
- This isn't a very common configuration since MSVC does not support
- __attribute__((__constructor__)), but MINGW32 and CLANG32 environments
- for MSYS2 can use win95 threads and have
- __attribute__((__constructor__)) support.
+ Fixes: 5cd9f0df78cc4f8a7807bf6104adea13034fbb45
+ (cherry picked from commit 3f71e0f3a118e1012526f94fd640a626d30cb599)
- configure.ac | 21 +++++++++++++--------
- 1 file changed, 13 insertions(+), 8 deletions(-)
+ debug/translation.bash | 1 -
+ 1 file changed, 1 deletion(-)
-commit c0c0cd4a483a672b66a13761583bc4f84d86d501
-Author: Jamaika1 <lukaszcz18@wp.pl>
-Date: 2023-08-08 14:07:59 +0200
+commit 54546babc3feb2786e541b80f9e7216b8f1bd543
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-07 20:41:28 +0300
- mythread.h: Fix typo error in Vista threads mythread_once().
+ Fix the date of NEWS for 5.4.5
- The "once_" variable was accidentally referred to as just "once". This
- prevented building with Vista threads when
- HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR was not defined.
+ (cherry picked from commit b05a516830095a0e1937aeb31c937fb0400408b6)
- src/common/mythread.h | 2 +-
+ NEWS | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-commit d93fbefcc48a8737fdf5678ce66d1c1d605752a0
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-08-03 20:10:21 +0800
+commit a7e58d1fdb493d58854ac599347cf64da0cecca4
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-07 16:21:15 +0300
- Tests: Style fixes to test_lzip_decoder.c.
+ Build: Update visibility.m4 from Gnulib
+
+ This fixes the syntax of the "serial" line and renames
+ a temporary variable.
+
+ (cherry picked from commit 6d336aeb97b69c496ddc626af403f6f21c753658)
- tests/test_lzip_decoder.c | 36 ++++++++++++++++++++++++------------
- 1 file changed, 24 insertions(+), 12 deletions(-)
+ m4/visibility.m4 | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
-commit 65981d8e45741fd1502e007609469e1d60312e69
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-08-03 15:56:20 +0800
+commit 07a9cda037042b262ba6c8c18fae4a5b3333d508
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-07 15:05:21 +0300
- Translations: Update the Chinese (simplified) translation.
+ po4a/update-po: Delete the *.po.authors files
+
+ These are temporary files that are needed only when running po4a.
+ The top-level Makefile.am puts the whole po4a directory into
+ distribution tarball (it's simpler) so deleting these temporary
+ files is needed to prevent them from getting into tarballs.
+
+ (cherry picked from commit ab51e8ee610e2a893906859848f93d5cb0d5ba83)
- po/zh_CN.po | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ po4a/update-po | 4 ++++
+ 1 file changed, 4 insertions(+)
-commit a108ed589171d683c34238a87e358b87f69e39a0
+commit 1b4e7dca243d8ef297a245b5ee3ce9cd1ca20f56
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-08-02 17:15:12 +0300
+Date: 2024-05-07 13:12:17 +0300
- xz: Omit an empty paragraph on the man page.
+ xz: Edit comments and coding style
+
+ (cherry picked from commit e4780244a17420cc95d5498cd6e02ad10eac6e5f)
- src/xz/xz.1 | 1 -
- 1 file changed, 1 deletion(-)
+ src/xz/coder.c | 25 ++++++++++++-------------
+ 1 file changed, 12 insertions(+), 13 deletions(-)
-commit 03c51c5c08fe3579d8bbc8eea8251a1128001330
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-08-02 20:32:20 +0800
+commit 18683525a78e96ec6d7c2b4e841e94ad39be7096
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-06 23:08:22 +0300
- Bump version and soname for 5.4.4.
+ xz: Omit an incorrect comment
+
+ It likely was a leftover from a development version of the code.
+
+ Fixes: 183819bfd9efac8c184d9bf123325719b7eee30f
+ (cherry picked from commit fe4d8b0c80eaeca3381be302eeb89aba871a7e7c)
- src/liblzma/Makefile.am | 2 +-
- src/liblzma/api/lzma/version.h | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
+ src/xz/coder.c | 6 +-----
+ 1 file changed, 1 insertion(+), 5 deletions(-)
-commit d7fa3f1b58a77f79b1a4e12452418b5555632e18
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-08-02 20:30:07 +0800
+commit 005f0398645b0342c9c1915d422743c77ec1d435
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-06 23:04:31 +0300
- Add NEWS for 5.4.4.
+ xz: Add braces to a for-statement and to an if-statement
+
+ No functional changes.
+
+ Fixes: 5f0c5a04388f8334962c70bc37a8c2ff8f605e0a
+ Fixes: 479fd58d60622331fcbe48fddf756927b9f80d9a
+ (cherry picked from commit 9bef5b8d17dd5e009d6a6b2becc2dc535da53937)
- NEWS | 43 +++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 43 insertions(+)
+ src/xz/coder.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
-commit 6a1093c0004c42eeaef312456c295671496dd67a
+commit 34be4e6aa62376314fde250ea4f142c18274272f
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-08-02 15:19:43 +0300
+Date: 2024-05-06 23:00:09 +0300
- build-aux/manconv.sh: Fix US-ASCII and UTF-8 output.
+ liblzma: Omit an unneeded array from the x86 filter
- groff defaults to SGR escapes. Using -P-c passes -c to grotty
- which restores the old behavior. Perhaps there is a better way to
- get pure plain text output but this works for now.
+ Fixes: 6aa2a6deeba04808a0fe4461396e7fb70277f3d4
+ (cherry picked from commit de06b9f0c0a3f72569829ecadbc9c0a3ef099f57)
- build-aux/manconv.sh | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ src/liblzma/simple/x86.c | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
-commit f6f9f5651a7e2d89f588981533155ab850e063f7
+commit 79e329b771210c30ea317dd4d99e8968f3e6f9b2
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-08-01 19:10:43 +0300
+Date: 2024-05-06 22:56:31 +0300
- Update THANKS.
+ CMake: Add test_suffix.sh to the tests
+
+ (cherry picked from commit 7da488cb933fdf51cfc14cb5810beb0766224380)
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ tests/tests.cmake | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
-commit 0dd83ba8767dad722e0f0f94e0e4146e290a28cb
+commit 86f33bb90c6cfe6950f1d36c9e5dd7fdc9798124
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-08-01 18:22:24 +0300
+Date: 2024-05-06 22:55:54 +0300
- Update THANKS.
+ Test: Add CMake support to test_suffix.sh
+
+ It needs to find the xz executable from a different directory
+ and work without config.h.
+
+ (cherry picked from commit a805594ed0b4cbf7b81aa28ff46a8ab3c83c6876)
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ tests/test_suffix.sh | 12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
-commit 4170a80785cc69edfc5fdfe498bed5f40db6a7ef
-Author: ChanTsune <41658782+ChanTsune@users.noreply.github.com>
-Date: 2023-08-01 18:17:17 +0300
+commit 1e243ab378e8f78ebb3af741fb38354954cf20f9
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-06 20:45:34 +0300
- mythread.h: Disable signal functions in builds targeting Wasm + WASI.
+ Update INSTALL about MINIX 3
- signal.h in WASI SDK doesn't currently provide sigprocmask()
- or sigset_t. liblzma doesn't need them so this change makes
- liblzma and xzdec build against WASI SDK. xz doesn't build yet
- and the tests don't either as tuktest needs setjmp() which
- isn't (yet?) implemented in WASI SDK.
+ The latest stable is 3.3.0 and it's from 2014.
+ Don't mention the older versions in INSTALL.
+ 3.3.0 ships with Clang already.
- Closes: https://github.com/tukaani-project/xz/pull/57
- See also: https://github.com/tukaani-project/xz/pull/56
+ Testing with 3.4.0beta6 shows that tuklib_physmem
+ works too so omit comments about that from INSTALL.
+ Visibility warnigns weren't a problem either.
- (The original commit was edited a little by Lasse Collin.)
+ Thus it's enough to mention the need for --disable-threads
+ as configure doesn't autodetect the lack of pthreads.
+
+ (cherry picked from commit 50e19489387774bab3c4a988397d0d9c7a142a46)
- src/common/mythread.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ INSTALL | 20 +++++++-------------
+ 1 file changed, 7 insertions(+), 13 deletions(-)
-commit 0db6fbe0be1545a4f25fcd6993371155b37bbb26
-Author: Dimitri Papadopoulos Orfanos <3234522+DimitriPapadopoulos@users.noreply.github.com>
-Date: 2023-07-31 14:02:21 +0200
+commit 8595b5ab3ba766eb6daed890bfe91a16fe329c2c
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-02 23:00:16 +0300
- Docs: Fix typos found by codespell
+ Windows: Remove the "doc/api" line from README-Windows.txt
+
+ Fixes: 252aa1d67bc015eeba462803ab72edeb7744d864
+ (cherry picked from commit 68d18aea1422a2b86b98b71d0b019233d84e01b0)
- CMakeLists.txt | 4 ++--
- NEWS | 2 +-
- configure.ac | 2 +-
- src/liblzma/api/lzma/container.h | 4 ++--
- src/liblzma/api/lzma/filter.h | 2 +-
- src/liblzma/api/lzma/lzma12.h | 4 ++--
- src/liblzma/common/block_buffer_encoder.c | 2 +-
- src/liblzma/common/common.h | 2 +-
- src/liblzma/common/file_info.c | 2 +-
- src/liblzma/common/lzip_decoder.c | 2 +-
- src/liblzma/common/stream_decoder_mt.c | 8 ++++----
- src/liblzma/common/string_conversion.c | 6 +++---
- src/liblzma/lz/lz_encoder.h | 2 +-
- src/liblzma/lzma/lzma_encoder.c | 4 ++--
- src/xz/hardware.c | 4 ++--
- tests/test_filter_flags.c | 4 ++--
- tests/test_index.c | 2 +-
- tests/test_vli.c | 2 +-
- 18 files changed, 29 insertions(+), 29 deletions(-)
+ windows/README-Windows.txt | 2 --
+ 1 file changed, 2 deletions(-)
-commit 84a3a1f4e4f146b3b5fa73fe708cacb0d9f829f3
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-26 20:26:23 +0800
+commit a3f163a4ad97189744107e964e4dea505fbcc252
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-02 22:59:04 +0300
- Update .gitignore.
+ Build: Don't copy doc/api from source tree to distribution tarball
+
+ It was copied if it existed. This was intentional when autogen.sh
+ still built liblzma API docs with Doxygen.
+
+ Fixes: d3a77ebc04bf1db8d52de2d9b0f07877bc4fd139
+ (cherry picked from commit 8ede961374613aa302a13571d662cfaea1cf91f7)
- .gitignore | 4 ++++
- 1 file changed, 4 insertions(+)
+ Makefile.am | 5 -----
+ 1 file changed, 5 deletions(-)
-commit 962b3d41e0c27355ba3052ef7b7d9a887de807e5
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-28 22:03:08 +0800
+commit cb0e847fe07099c1ef6d8076f6a46e17bc431acb
+Author: Sam James <sam@gentoo.org>
+Date: 2024-05-02 13:26:40 +0100
- CMake: Conditionally allow the creation of broken symlinks.
+ ci: add SPDX headers
- The CMake build will try to create broken symlinks on Unix and Unix-like
- platforms. Cygwin and MSYS2 are Unix-like, but may not be able to create
- broken symlinks. The value of the CYGWIN or MSYS environment variables
- determine if broken symlinks are valid.
+ I've checked over each of these and they're straightforward applications
+ of the relevant Github Actions.
- The default for MSYS2 does not allow for broken symlinks, so the CMake
- build has been broken for MSYS2 since commit
- 80a1a8bb838842a2be343bd88ad1462c21c5e2c9.
+ (cherry picked from commit 9a6761aa35ed84d30bd2fda2333a4fdf3f46ecdc)
- CMakeLists.txt | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++-----
- 1 file changed, 75 insertions(+), 7 deletions(-)
+ .github/workflows/freebsd.yml | 2 ++
+ .github/workflows/netbsd.yml | 2 ++
+ .github/workflows/openbsd.yml | 2 ++
+ 3 files changed, 6 insertions(+)
-commit 19899340cf74d98304f9f5b726c72e85c7017d72
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-24 21:43:44 +0800
+commit c3c854dc759fe0c5549aa0a730be9e259243edb6
+Author: Yaroslav Halchenko <debian@onerussian.com>
+Date: 2024-03-29 14:37:24 -0400
- liblzma: Prevent an empty translation unit in Windows builds.
+ codespell: Ignore the THANKS file and debbugs.gnu.org URL
- To workaround Automake lacking Windows resource compiler support, an
- empty source file is compiled to overwrite the resource files for static
- library builds. Translation units without an external declaration are
- not allowed by the C standard and result in a warning when used with
- -Wempty-translation-unit (Clang) or -pedantic (GCC).
+ This way "codespell -i 0" is silent.
+
+ This is the first commit from
+ https://github.com/tukaani-project/xz/pull/93
+ with trivial edits by Lasse Collin.
+
+ (cherry picked from commit 81efe6119f86e3274e512c9eca5ec22b2196c2b3)
- src/liblzma/Makefile.am | 6 +++++-
+ .codespellrc | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
-commit ef7fbe83937abd7f55f1637c1d08b559f1d3d6cc
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-21 18:05:44 +0800
+commit 3216301aa20fcf9d5a7485e35a295d5c451d9658
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-30 14:37:11 +0300
- Tests: Skip .lz files in test_files.sh if not configured.
+ Add .gitattributes to clean up git-archive output
- Previously if the lzip decoder was not configured then test_files.sh
- would pass the lzip tests instead of skipping them.
+ (cherry picked from commit 905bfc74fe2670fd9c39014803017ab53d325401)
- tests/test_files.sh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ .gitattributes | 7 +++++++
+ 1 file changed, 7 insertions(+)
-commit e49815ba7aa610b72e8724025eceee23c27e7b23
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-20 22:11:13 +0800
+commit f99e7c69ada9e0db0ee1ebbc38c8ce9390cd9788
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-19 12:11:09 +0300
- Tests: Add ARM64 filter test to test_compress.sh.
+ xzdec: Support Landlock ABI version 4
+
+ This was added to xz in 02e3505991233901575b7eabc06b2c6c62a96899
+ but I forgot to do the same in xzdec.
+
+ The Landlock sandbox in xzdec could be stricter as now it's
+ active only for the last file being decompressed. In xz,
+ read-only sandbox is used for multi-file case. On the other hand,
+ xz doesn't go to the strictest mode when processing the last file
+ when more than one file was specified; xzdec does.
+
+ (cherry picked from commit 3334c71d3d4294a4f6569df3ba9bcf2443dfa501)
- tests/test_compress.sh | 1 +
- 1 file changed, 1 insertion(+)
+ src/xzdec/xzdec.c | 18 ++++++++++++++----
+ 1 file changed, 14 insertions(+), 4 deletions(-)
-commit db5b57b827c2b084586c51da1b8a3ab0984bdb40
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-22 18:37:56 +0800
+commit bfe9be7a46cfd3b3069c15f7ba1432192bca1f5b
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-30 22:22:45 +0300
- Translations: Update the Vietnamese translation.
+ liblzma: Fix incorrect function type error from sanitizer
+
+ Clang 17 with -fsanitize=address,undefined:
+
+ src/liblzma/common/filter_common.c:366:8: runtime error:
+ call to function encoder_find through pointer to incorrect
+ function type 'const lzma_filter_coder *(*)(unsigned long)'
+ src/liblzma/common/filter_encoder.c:187: note:
+ encoder_find defined here
+
+ Use a wrapper function to get the correct type neatly.
+ This reduces the number of casts needed too.
+
+ This issue could be a problem with control flow integrity (CFI)
+ methods that check the function type on indirect function calls.
+
+ Fixes: 3b34851de1eaf358cf9268922fa0eeed8278d680
+ (cherry picked from commit 278563ef8f2b8d98d7f2c85e1a64ec1bc21d26d8)
- po/vi.po | 45 ++++++++++++++++++++++++++++-----------------
- 1 file changed, 28 insertions(+), 17 deletions(-)
+ src/liblzma/common/filter_decoder.c | 15 ++++++++++++---
+ src/liblzma/common/filter_encoder.c | 17 +++++++++++++----
+ 2 files changed, 25 insertions(+), 7 deletions(-)
-commit e6ba5014081c98cb068253b3e5f9e372dd157f3c
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-20 20:30:05 +0800
+commit 882eadc5b820b6b1495fc91ba3573ac2aa6c1df3
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-30 21:41:11 +0300
- Translations: Update the Croatian translation.
+ xz: Avoid arithmetic on a null pointer
+
+ It's undefined behavior. The result wasn't ever used as it occurred
+ in the last iteration of a loop.
+
+ Clang 17 with -fsanitize=address,undefined:
+
+ $ src/xz/xz --block-list=123
+ src/xz/args.c:164:12: runtime error: applying non-zero offset 1
+ to null pointer
+
+ Fixes: 88ccf47205d7f3aa314d358c72ef214f10f68b43
+ Co-authored-by: Sam James <sam@gentoo.org>
+ (cherry picked from commit 77c8f60547decefca8f2d0c905d9c708c38ee8ff)
- po/hr.po | 49 ++++++++++++++++++++++++++++++-------------------
- 1 file changed, 30 insertions(+), 19 deletions(-)
+ src/xz/args.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
-commit 82657a1f10a25050a3e9c246c41deb785cccba3a
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-20 20:28:32 +0800
+commit ec5458e1c9b2beb416781e81ad4ff22b0149b99d
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-27 20:42:00 +0300
- Translations: Update the Korean man page translations.
+ CMake: Support building liblzma API docs using Doxygen
+
+ This is disabled by default to match the default in Autotools.
+ Use -DUSE_DOXYGEN=ON to enable Doxygen usage.
+
+ This uses the update-doxygen script, thus this is under if(UNIX)
+ although Doxygen itself can run on Windows too.
+
+ (cherry picked from commit 64503cc2b76a388ced4ec5f68234a07f0dcddcd5)
- po4a/ko.po | 1255 ++++++++++++++++++++++++++++++------------------------------
- 1 file changed, 629 insertions(+), 626 deletions(-)
+ CMakeLists.txt | 40 +++++++++++++++++++++++++++++++---------
+ 1 file changed, 31 insertions(+), 9 deletions(-)
-commit fab35907d13efbe7c457e00a310123335d7bae3e
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-20 20:25:24 +0800
+commit 8c93ced56bcb23df723dab23b7477d580720f522
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-20 23:36:39 +0300
- Translations: Update the Korean translation.
+ CMake: List API headers in LIBLZMA_API_HEADERS variable
+
+ This way the same list will be usable in more than one location.
+
+ (cherry picked from commit 0a7f5a80d8532a1d8cfa0a902c9d1ad7651eca37)
- po/ko.po | 45 ++++++++++++++++++++++++++++-----------------
- 1 file changed, 28 insertions(+), 17 deletions(-)
+ CMakeLists.txt | 21 ++++++++++++---------
+ 1 file changed, 12 insertions(+), 9 deletions(-)
-commit f530fe1964c34797fa3b775ec5804d68007c1579
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-20 20:24:05 +0800
+commit f7c9bab0372db357511e42c9c610a2cfe5fca9b1
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-19 15:16:42 +0300
- Translations: Update the Polish translation.
+ PACKAGERS: Document the optional Doxygen usage
+
+ Also add a note that packagers should check the licensing
+ of the Doxygen output.
+
+ (cherry picked from commit 541406bee3f09e9813103c6406b10fc6ab2e0d30)
- po/pl.po | 47 +++++++++++++++++++++++++++++------------------
- 1 file changed, 29 insertions(+), 18 deletions(-)
+ PACKAGERS | 19 ++++++++++---------
+ 1 file changed, 10 insertions(+), 9 deletions(-)
-commit 10b3500cc2617aabdbc802a63164ce0a3683ad2b
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-20 20:22:23 +0800
+commit 28e7d130cb843e96d7e6b0358f8dd58bd1b2a275
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-27 17:47:09 +0300
- Translations: Update the German man page translations.
+ Build: Add --enable-doxygen to generate and install API docs
+
+ It requires Doxygen. This option is disabled by default.
+
+ (cherry picked from commit e21efdf96f39378fe417479f89e97046680406f5)
- po4a/de.po | 1255 ++++++++++++++++++++++++++++++------------------------------
- 1 file changed, 629 insertions(+), 626 deletions(-)
+ INSTALL | 6 ++++++
+ configure.ac | 10 +++++++++-
+ src/liblzma/api/Makefile.am | 19 +++++++++++++++++++
+ 3 files changed, 34 insertions(+), 1 deletion(-)
-commit 3d14e8a34dba176f975326924ae28a3ab5fee165
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-20 20:18:44 +0800
+commit cca7e6c05bc6cc51c0271c36856b7fe29f65c648
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-19 15:15:17 +0300
- Translations: Update the German translation.
+ Doxygen: update-doxygen: Support out-of-tree builds
+
+ Also, now $0 is used to refer to the script itself.
+
+ (cherry picked from commit 0ece09a575d7e542bda8825808ddd6cf7de8cc4b)
- po/de.po | 47 +++++++++++++++++++++++++++++------------------
- 1 file changed, 29 insertions(+), 18 deletions(-)
+ doxygen/update-doxygen | 110 ++++++++++++++++++++++++++++++-------------------
+ 1 file changed, 68 insertions(+), 42 deletions(-)
-commit bdcc180a2da15039c47455c1cafd1ce9aff442e4
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-20 20:17:10 +0800
+commit 8090d3dc7f0eea4a3a61f4f6d46a0d0866e345fe
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-28 21:08:00 +0300
- Translations: Update the Chinese (simplified) translation.
+ Doxygen: Simplify Doxyfile and add SPDX license identifier
+
+ This omits all comments and a few non-default options that weren't
+ needed. Now it contains no copyrighted content from Doxygen itself.
+
+ (cherry picked from commit 2c519f641f266fd897edf680827d9c905f411440)
- po/zh_CN.po | 47 +++++++++++++++++++++++++++++------------------
- 1 file changed, 29 insertions(+), 18 deletions(-)
+ doxygen/Doxyfile | 2698 +-----------------------------------------------------
+ 1 file changed, 25 insertions(+), 2673 deletions(-)
-commit 844240350d33cb46ba8827b74dc8758e2abed9e5
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-20 20:15:47 +0800
+commit 0721b8bfe558502669f06c97601fe59ad0d52541
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-19 15:14:02 +0300
- Translations: Update the Swedish translation.
+ Doxygen: Don't strip JavaScript anymore
+
+ The stripping method worked well with Doxygen 1.8 and 1.9 but
+ it doesn't work with Doxygen 1.10 anymore. Since we won't ship
+ pre-generated liblzma API docs anymore, the extra bloat and
+ extra license info of the JavaScript files won't affect the
+ upstream source package anymore.
+
+ (cherry picked from commit bdba39a57530d11b88440df8024002be3d09e4a1)
- po/sv.po | 47 +++++++++++++++++++++++++++++------------------
- 1 file changed, 29 insertions(+), 18 deletions(-)
+ doxygen/update-doxygen | 21 ---------------------
+ 1 file changed, 21 deletions(-)
-commit bdc7952bcfbc20c134f723ff5cbf84ab690fb4fc
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-20 20:14:00 +0800
+commit 1ddb40f6fd286c3c6ef510735112db1ac1b60936
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-19 17:26:41 +0300
- Translations: Update the Ukrainian man page translations.
+ Build: Remove old Doxygen rules from top-level Makefile.am
+
+ (cherry picked from commit d3a77ebc04bf1db8d52de2d9b0f07877bc4fd139)
- po4a/uk.po | 1253 ++++++++++++++++++++++++++++++------------------------------
- 1 file changed, 628 insertions(+), 625 deletions(-)
+ Makefile.am | 12 ------------
+ 1 file changed, 12 deletions(-)
-commit 143396e070c8d8afb56e3a5f688b214222cf71e0
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-20 20:09:15 +0800
+commit 092af76234b1bc79380427456b3215aa0b80f339
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-19 15:10:06 +0300
- Translations: Update the Ukrainian translation.
+ Update COPYING to match the autogen.sh and mydist changes
+
+ (cherry picked from commit fd7faa4c338a42a6a40e854b837d285ae2e8c609)
- po/uk.po | 45 ++++++++++++++++++++++++++++-----------------
- 1 file changed, 28 insertions(+), 17 deletions(-)
+ COPYING | 11 -----------
+ 1 file changed, 11 deletions(-)
-commit 1b8146d64eaac51b40079f5788b85c1eb79e35de
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-20 20:06:57 +0800
+commit 77bce9a0a250cfb20333ee0dca036b3193dd4941
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-19 17:23:43 +0300
- Translations: Update the Spanish translation.
+ Build: Don't run update-doxygen as part of "make mydist"
+
+ (cherry picked from commit b2bc55d8a0a9f2f59bfd4302067300e650f6baa3)
- po/es.po | 47 +++++++++++++++++++++++++++++------------------
- 1 file changed, 29 insertions(+), 18 deletions(-)
+ Makefile.am | 1 -
+ 1 file changed, 1 deletion(-)
-commit f947ce09d79ef8fa6549d350c4d72e4a8a9fa697
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-20 20:05:19 +0800
+commit 3a2fc62f59b2e8cc45f8d8fd9988b4305efe4bff
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-19 15:09:48 +0300
- Translations: Update the Romanian translation.
+ autogen.sh: Don't generated Doxygen docs anymore
+
+ (cherry picked from commit e9be74f5b129fe8a5388d588e68b1b7f5168a310)
- po/ro.po | 48 ++++++++++++++++++++++++++++++------------------
- 1 file changed, 30 insertions(+), 18 deletions(-)
+ autogen.sh | 18 +++---------------
+ 1 file changed, 3 insertions(+), 15 deletions(-)
-commit f681301a368def3f597a7c7bea7cb3f7a2f933e7
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-20 20:02:56 +0800
+commit b04c16f9a5a8675a87783305568cadfa3f17d999
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-19 17:41:36 +0300
- Translations: Update the Romanian man page translations.
+ windows/build.bash: Omit Doxygen docs from the package
+
+ They will be omitted from the source tarball and I don't want
+ to make Doxygen a dependency of build.bash.
+
+ (cherry picked from commit 252aa1d67bc015eeba462803ab72edeb7744d864)
- po4a/ro.po | 1254 ++++++++++++++++++++++++++++++------------------------------
- 1 file changed, 629 insertions(+), 625 deletions(-)
+ windows/build.bash | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit 8bc3146c6be920b56283f4ee846456cb34ae4b6f
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-13 21:26:47 +0800
+commit d4dd3c8f6169adf50cad8fe6872e0f5fcb82475c
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-19 14:14:47 +0300
- xz: Update man page Authors and date.
+ README: Don't mention PDF man pages anymore
+
+ (cherry picked from commit 634095364d87444d62d8ec54c134c0cd4705f5d7)
- src/xz/xz.1 | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
+ README | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
-commit c2905540ef905412b54c76488758712d3e2a0f9d
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-18 23:19:09 +0800
+commit be90720d6cd7fbb1b170794445815f579b444a6f
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-19 14:10:39 +0300
- xz: Slight reword in xz man page for consistency.
+ Build: Omit PDF man pages from the package
- Changed will print => prints in xz --robot --version description to
- match --robot --info-memory description.
+ pdf-local rule was added to create the PDFs still with "make pdf".
+ The install rules are missing but that likely doesn't matter at all.
+
+ (cherry picked from commit dc684bf76ea23574ee9d88382057381e04e6089a)
- src/xz/xz.1 | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ Makefile.am | 29 +++++++++++++++++++----------
+ 1 file changed, 19 insertions(+), 10 deletions(-)
-commit 2600d3352449faf57d9cb3fa00cbe40548a1310f
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-18 22:49:57 +0800
+commit f724552d0c1ae2e3aa693d80d8d0da962dfac4e8
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-19 13:54:39 +0300
- liblzma: Improve comment in string_conversion.c.
+ windows/build.bash: Don't copy PDF man pages to the package
- The comment used "flag" when referring to decoder options. Just
- referring to them as options is more clear and consistent.
+ (cherry picked from commit e3531ab4125cbd5c01ebd3200791350960547189)
- src/liblzma/common/string_conversion.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ windows/README-Windows.txt | 2 +-
+ windows/build.bash | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
-commit 98fc14541eec3e1dcf694075c8533f19a3cee552
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-05-13 21:21:54 +0800
+commit 00e774819c6550a8eac219e9f6f083ab2b155505
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-28 01:34:50 +0300
- liblzma: Reword lzma_str_list_filters() documentation.
+ Tests: test_index: Fix failures when features are disabled
- Reword "options required" to "options read". The previous wording
- may have suggested that the options listed were all required when
- the filters are used for encoding or decoding. Now it should be
- more clear that the options listed are the ones relevant for
- encoding or decoding.
+ Fixes: cd88423e76d54eb72aea037364f3ebb21f122503
+ (cherry picked from commit 710a4573ef2cbd19c66318c3b2d1388e418e26c7)
- src/liblzma/api/lzma/filter.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ tests/test_index.c | 13 ++++++++-----
+ 1 file changed, 8 insertions(+), 5 deletions(-)
-commit 1ac79b4cbaecf3f4930a5d8ce6f7e1f2b63c2a01
+commit 51133ad71eecc19bdb3ab287a0732fd9441753f4
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-07-18 17:37:33 +0300
+Date: 2024-04-20 17:09:11 +0300
- xz: Translate the second "%s: " in message.c since French needs "%s : ".
+ CMake: Keep the build working if the "tests" directory is missing
- This string is used to print a filename when using "xz -v" and
- stderr isn't a terminal.
+ This moves the tests section as is from CMakeLists.txt into
+ tests/tests.cmake. CMakeLists.txt now includes tests/tests.cmake
+ if the latter file exists.
+
+ Now it's possible to delete the whole "tests" directory and
+ building with CMake will still work normally, just without
+ the tests. This way the tests are readily available for those
+ who want them, and those who won't run the tests anyway have
+ a straightforward way to ensure that nothing from the "tests"
+ directory can affect the build process.
+
+ (cherry picked from commit aaff75c3486c4489ce88b0efb36b41cf138af7c3)
- src/xz/message.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ CMakeLists.txt | 76 ++---------------------------------------------
+ tests/Makefile.am | 1 +
+ tests/tests.cmake | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 92 insertions(+), 73 deletions(-)
-commit 97851be2c6c64494f23c3a735601c13d4387820b
+commit 85b5595b67f0081b2a900104ed7589de4bb75e12
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-07-18 14:35:33 +0300
+Date: 2024-04-20 13:12:50 +0300
- xz: Make "%s: %s" translatable because French needs "%s : %s".
+ Tests: Remove x86 and SPARC BCJ tests
+
+ These are very old but the exact test file isn't easy to reproduce
+ as it was compiled from a short C program (bcj_test.c) long ago.
+ These tests weren't very good anyway, just a little better than nothing.
+
+ (cherry picked from commit a5f2aa5618fe9183706c9c514c3067985f6c338b)
- src/xz/args.c | 5 ++++-
- src/xz/coder.c | 8 ++++----
- src/xz/file_io.c | 8 ++++----
- src/xz/list.c | 11 ++++++-----
- 4 files changed, 18 insertions(+), 14 deletions(-)
+ tests/Makefile.am | 7 ----
+ tests/bcj_test.c | 64 ---------------------------------
+ tests/compress_prepared_bcj_sparc | Bin 1240 -> 0 bytes
+ tests/compress_prepared_bcj_x86 | Bin 1388 -> 0 bytes
+ tests/files/README | 8 -----
+ tests/files/good-1-sparc-lzma2.xz | Bin 612 -> 0 bytes
+ tests/files/good-1-x86-lzma2.xz | Bin 716 -> 0 bytes
+ tests/test_compress_prepared_bcj_sparc | 4 ---
+ tests/test_compress_prepared_bcj_x86 | 4 ---
+ 9 files changed, 87 deletions(-)
-commit b406828a6dfd3caa4f77efe3ff3e3eea263eee62
+commit d8228d1ea08155a17acaadd76ed95805d3b0a929
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-07-18 13:57:54 +0300
+Date: 2024-04-27 18:30:40 +0300
- liblzma: Tweak #if condition in memcmplen.h.
+ Tests: test_index: Edit a misleading test
- Maybe ICC always #defines _MSC_VER on Windows but now
- it's very clear which code will get used.
+ (cherry picked from commit d879686469c9c4bf2a7c0bb6420ebe4530fc8f07)
- src/liblzma/common/memcmplen.h | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ tests/test_index.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
-commit ef4a07ad9434f81417395f6fe0bb331e027a703b
+commit 2358ef8238f166c49e66f438e7494d4d352eb113
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-07-18 13:49:43 +0300
+Date: 2024-04-27 16:46:01 +0300
- liblzma: Omit unnecessary parenthesis in a preprocessor directive.
+ Tests: test_index: Use minimal values to test integer overflow
+
+ (cherry picked from commit 612005bbdb0dea9dc09e9e2e9cc16a15c1480acd)
- src/liblzma/common/memcmplen.h | 4 ++--
+ tests/test_index.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-commit 64ee0caaea06654b28afaee850fb187a11bf9cb2
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-06-28 20:22:38 +0800
+commit 54f4a4162aae8796580489013583d6148be5a473
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-27 15:13:39 +0300
- liblzma: Prevent warning for MSYS2 Windows build.
-
- In lzma_memcmplen(), the <intrin.h> header file is only included if
- _MSC_VER and _M_X64 are both defined but _BitScanForward64() was
- previously used if _M_X64 was defined. GCC for MSYS2 defines _M_X64 but
- not _MSC_VER so _BitScanForward64() was used without including
- <intrin.h>.
+ Tests: test_index: Test lzma_index_buffer_decode() more
- Now, lzma_memcmplen() will use __builtin_ctzll() for MSYS2 GCC builds as
- expected.
+ (cherry picked from commit 4ad88b2544c2aaf8de8f38af54587098cbe66c1d)
- src/liblzma/common/memcmplen.h | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
+ tests/test_index.c | 29 ++++++++++++++++++++++++++---
+ 1 file changed, 26 insertions(+), 3 deletions(-)
-commit ba177057643dae6e9c167ee26471181c199c8a00
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-14 23:20:33 +0800
+commit 85ab59a6b70db33f320a3ea7a854249cb693dea2
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-27 15:08:29 +0300
- Docs: Add a new section to INSTALL for Tests.
+ Tests: test_index: Test that *i = NULL is done on LZMA_PROG_ERROR
- The new Tests section describes basic information about the tests, how
- to run them, and important details when cross compiling. We have had a
- few questions about how to compile the tests without running them, so
- hopefully this information will help others with the same question in the
- future.
+ On LZMA_DATA_ERROR from lzma_index_buffer_decode(), *i = NULL was
+ already done but this adds a test for that case too.
- Fixes: https://github.com/tukaani-project/xz/issues/54
+ (cherry picked from commit 575b11b0d291e66c5fce31ce7a72f11436d57c83)
- INSTALL | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++--------------
- 1 file changed, 64 insertions(+), 17 deletions(-)
+ tests/test_index.c | 31 +++++++++++++++++++++++++++----
+ 1 file changed, 27 insertions(+), 4 deletions(-)
-commit 0745b900fafa5ac2c31e8ec3cfba3053457c8b1f
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-14 21:10:27 +0800
+commit fb42599e44dde417305c7d92fd782147ca923079
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-27 15:01:25 +0300
- Docs: Update README.
+ Tests: test_index: Test lzma_index_buffer_encode() with empty output buf
- This adds an entry to "Other implementations of the .xz format" for
- XZ for Java.
+ (cherry picked from commit 2c970debdb285823f01f75e875561d893345ac2b)
- README | 4 ++++
- 1 file changed, 4 insertions(+)
+ tests/test_index.c | 3 +++
+ 1 file changed, 3 insertions(+)
-commit c972d44103c4edf88e73917ef08bde69db9d06cb
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-18 13:27:46 +0300
+commit 20cac20f63a96a39391f2d613bef0f7bd6553495
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-27 14:59:55 +0300
- xz: Fix typo in man page.
+ Tests: test_index: Replace if-statements with tuktest assertions
- The Memory limit information section described three output
- columns when it actually has six. This was reworded to
- "multiple" to make it more future proof.
+ (cherry picked from commit cd88423e76d54eb72aea037364f3ebb21f122503)
- src/xz/xz.1 | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ tests/test_index.c | 22 +++++++++-------------
+ 1 file changed, 9 insertions(+), 13 deletions(-)
-commit 6e21f1b4e2c580b64d258e3b81ac9e44d53b9283
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-14 21:30:25 +0800
+commit 91e3ea8735752db5d0373991e84607196070aeaa
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-27 14:56:16 +0300
- Tests: Improve feature testing for skipping.
+ Tests: test_index: Make it clear that my_alloc() has no integer overflows
- Fixed a bug where test_compress_* would all fail if arm64 or armthumb
- filters were enabled for compression but arm was disabled. Since the
- grep tests only checked for "define HAVE_ENCODER_ARM", this would match
- on HAVE_ENCODER_ARM64 or HAVE_ENCODER_ARMTHUMB.
+ liblzma guarantees that the product of the allocation size arguments
+ will fit in size_t.
- Now the config.h feature test requires " 1" at the end to prevent the
- prefix problem. have_feature() was also updated for this even though
- there were known current bugs affecting it. This is just in case future
- features have a similar prefix problem.
-
- tests/test_compress.sh | 4 ++--
- tests/test_files.sh | 2 +-
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-commit 26c37d290c0884a4518a26b949575420a77fb938
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-10 20:56:28 +0800
-
- Translations: Update the Chinese (traditional) translation.
+ Putting the pre-increment in the if-statement was clearly wrong
+ although in practice it didn't matter here as the function is
+ called only a couple of times.
+
+ (cherry picked from commit 7f865577a6224fbbb5f5ca52574b62ea8ac9bf51)
- po/zh_TW.po | 659 ++++++++++++++++++++++++++++++++++--------------------------
- 1 file changed, 377 insertions(+), 282 deletions(-)
+ tests/test_index.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
-commit 2ec65181e28335692a3a4fac4fefc4303111d355
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-07-08 20:03:59 +0800
+commit df1659a6c8367db69e82e2ea59ad5f959cf4e615
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-27 14:51:52 +0300
- Translations: Update the Vietnamese translation.
+ Tests: test_index: Verify also iter.block.number_in_stream
+
+ (cherry picked from commit 12313a3b6596cdcf012e180597f84d231f8730d3)
- po/vi.po | 620 +++++++++++++++++++++++++++++++++++----------------------------
- 1 file changed, 349 insertions(+), 271 deletions(-)
+ tests/test_index.c | 2 ++
+ 1 file changed, 2 insertions(+)
-commit c44c7e7590db1b89c97e106f5c516bf69189e233
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-06-28 20:46:31 +0800
+commit e083e95dbfda73900109cca4c82c8713d0a1da21
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-27 14:51:06 +0300
- Tests: Fix memory leaks in test_index.
+ Tests: test_index: Check cases that aren't a multiple of 4 bytes
- Several tests were missing calls to lzma_index_end() to clean up the
- lzma_index structs. The memory leaks were discovered by using
- -fsanitize=address with GCC.
+ (cherry picked from commit ad2654010d9d641ce1601beeff00630027e6bcd4)
- tests/test_index.c | 11 +++++++++++
- 1 file changed, 11 insertions(+)
+ tests/test_index.c | 33 +++++++++++++++++++++++++--------
+ 1 file changed, 25 insertions(+), 8 deletions(-)
-commit b9499c94fccc03eba5311b5305f04149a7c5af65
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-06-28 20:43:29 +0800
+commit b0d3b86ecf1881d10e6614b64b0fcc6c16a3b08f
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-27 14:40:25 +0300
- Tests: Fix memory leaks in test_block_header.
+ Tests: test_index: Edit comments and white space
- test_block_header was not properly freeing the filter options between
- calls to lzma_block_header_decode(). The memory leaks were discovered by
- using -fsanitize=address with GCC.
+ (cherry picked from commit 2524fcf2b68b662035437cee8edbe80067c0c240)
- tests/test_block_header.c | 38 ++++++++++++++++++++++----------------
- 1 file changed, 22 insertions(+), 16 deletions(-)
+ tests/test_index.c | 18 +++++++++++-------
+ 1 file changed, 11 insertions(+), 7 deletions(-)
-commit 1155471651ad456c5f90aee6435931fae65682bf
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-06-28 20:31:11 +0800
+commit bae288ea6ffb976c36e2387c03d75ce84a8a1034
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-27 14:33:38 +0300
- liblzma: Prevent uninitialzed warning in mt stream encoder.
+ liblzma: index_decoder: Fix missing initializations on LZMA_PROG_ERROR
- This change only impacts the compiler warning since it was impossible
- for the wait_abs struct in stream_encode_mt() to be used before it was
- initialized since mythread_condtime_set() will always be called before
- mythread_cond_timedwait().
+ If the arguments to lzma_index_decoder() or lzma_index_buffer_decode()
+ were such that LZMA_PROG_ERROR was returned, the lzma_index **i
+ argument wasn't touched even though the API docs say that *i = NULL
+ is done if an error occurs. This obviously won't be done even now
+ if i == NULL but otherwise it is best to do it due to the wording
+ in the API docs.
- Since the mythread.h code is different between the POSIX and
- Windows versions, this warning was only present on Windows builds.
+ In practice this matters very little: The problem can occur only
+ if the functions are called with invalid arguments, that is,
+ the calling application must already have a bug.
- Thanks to Arthur S for reporting the warning and providing an initial
- patch.
-
- src/liblzma/common/stream_encoder_mt.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 62dd1c9bf0c66679ceeebc8b99bca136ca43bcb9
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-06-07 00:10:38 +0800
-
- Update THANKS.
+ (cherry picked from commit 71eed2520e2eecae89bade9dceea16e56cfa2ea0)
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ src/liblzma/common/index_decoder.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
-commit d04eb78ab3892d3678c180437dd66379efa051fd
-Author: Benjamin Buch <bebuch@users.noreply.github.com>
-Date: 2023-06-06 15:32:45 +0200
+commit f10cb93f335900a29e50f990b751996ef026b3a3
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-26 18:25:18 +0300
- CMake: Protects against double find_package
+ CMake: Bump maximum policy version to 3.29
- Boost iostream uses `find_package` in quiet mode and then again uses
- `find_package` with required. This second call triggers a
- `add_library cannot create imported target "LibLZMA::LibLZMA"
- because another target with the same name already exists.`
-
- This can simply be fixed by skipping the alias part on secondary
- `find_package` runs.
-
- CMakeLists.txt | 16 +++++++++-------
- 1 file changed, 9 insertions(+), 7 deletions(-)
-
-commit 12ea1fb29763dd72376aca73d69621aff01eaa7f
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-05-31 20:26:42 +0800
-
- Translations: Update the Esperanto translation.
+ (cherry picked from commit 0478473953f50716a2bc37b619b1c7dc2682b1ad)
- po/eo.po | 185 +++++++++++++++++++++++++++++++--------------------------------
- 1 file changed, 92 insertions(+), 93 deletions(-)
-
-commit a4d45c07c1e4aa0ea9410b4eed7301c97e960319
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-05-31 20:25:00 +0800
-
- Translations: Update the Croatian translation.
-
- po/hr.po | 2 +-
+ CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-commit f51b7bcea6f948db9529b3e6d850e76a30cc0e96
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-05-31 20:15:53 +0800
+commit 59055d70cdd3df091264ae9da793821bfd65314d
+Author: Sam James <sam@gentoo.org>
+Date: 2024-04-13 22:30:44 +0100
- Translations: Update the Chinese (simplified) translation.
+ ci: add NetBSD
+
+ (cherry picked from commit a607e2b40d23f7d998dbaba76692aa30b4c3d9d3)
- po/zh_CN.po | 317 ++++++++++++++++++++++++++++++------------------------------
- 1 file changed, 157 insertions(+), 160 deletions(-)
+ .github/workflows/netbsd.yml | 29 +++++++++++++++++++++++++++++
+ 1 file changed, 29 insertions(+)
-commit d5b81c19a7594fbb913bb3450360bc2145f29568
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-05-17 23:12:13 +0800
+commit 812c1f95f37751aaa1e020fc2360949a674842fd
+Author: Sam James <sam@gentoo.org>
+Date: 2024-04-13 23:49:26 +0100
- Translations: Update German translation of man pages.
+ ci: add FreeBSD
+
+ (cherry picked from commit 72c210336de26fb87a928160d025fa10a638d23b)
- po4a/de.po | 52 ++++++++++++----------------------------------------
- 1 file changed, 12 insertions(+), 40 deletions(-)
+ .github/workflows/freebsd.yml | 29 +++++++++++++++++++++++++++++
+ 1 file changed, 29 insertions(+)
-commit 36860a3e30d5675b4dba3a343159458d8864bceb
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-05-17 23:09:18 +0800
+commit d2a4f963c28b864aa179464f7827cc10c6e1365d
+Author: Sam James <sam@gentoo.org>
+Date: 2024-04-13 23:16:08 +0100
- Translations: Update the German translation.
+ ci: add OpenBSD
+
+ (cherry picked from commit b526ec2dbfb5889845ea60548c4f5b1f97d84ab2)
- po/de.po | 189 +++++++++++++++++++++++++++++++--------------------------------
- 1 file changed, 94 insertions(+), 95 deletions(-)
+ .github/workflows/openbsd.yml | 31 +++++++++++++++++++++++++++++++
+ 1 file changed, 31 insertions(+)
-commit f05641ef0d4990c4c58f459039d412475b94b37d
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-05-17 20:30:01 +0800
+commit 493bc57c33385bda5ad32d01ab73dcfe8f5e7ced
+Author: Sam James <sam@gentoo.org>
+Date: 2024-04-15 05:53:01 +0100
- Translations: Update the Croatian translation.
+ liblzma: outqueue: add header guard
+
+ Reported by github's codeql.
+
+ (cherry picked from commit c7ef767c49351743d8d011574abb9e200bf6b24f)
- po/hr.po | 187 +++++++++++++++++++++++++++++++--------------------------------
- 1 file changed, 93 insertions(+), 94 deletions(-)
+ src/liblzma/common/outqueue.h | 5 +++++
+ 1 file changed, 5 insertions(+)
-commit b852f6f11d43cafce871cd158c80488f86619a63
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-05-17 20:26:54 +0800
+commit cede418d4f8e1fb4c8a30839fa5d3b14743e83d4
+Author: Sam James <sam@gentoo.org>
+Date: 2024-04-15 05:53:56 +0100
- Translations: Update Korean translation of man pages.
+ liblzma: easy_preset: add header guard
+
+ Reported by github's codeql.
+
+ (cherry picked from commit 55dcae3056d95cb2ddb8b560c12ba7596bc79f2c)
- po4a/ko.po | 3015 ++++++++++++------------------------------------------------
- 1 file changed, 568 insertions(+), 2447 deletions(-)
+ src/liblzma/common/easy_preset.h | 5 +++++
+ 1 file changed, 5 insertions(+)
-commit fdcb78fb6f5313eda363869690685471d7ab9731
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-05-17 20:13:01 +0800
+commit 6e76a25df28b47407a201bf0381fa6d3c80cb0bb
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-25 14:00:57 +0300
- Translations: Update the Korean translation.
+ tuklib_integer: Rename bswapXX to byteswapXX
+
+ The __builtin_bswapXX from GCC and Clang are preferred when
+ they are available. This can allow compilers to emit the x86 MOVBE
+ instruction instead of doing a load + byteswap as two instructions
+ (which would happen if the byteswapping is done in inline asm).
+
+ bswap16, bswap32, and bswap64 exist in system headers on *BSDs
+ and Darwin. #defining bswap16 on NetBSD results in a warning about
+ macro redefinition. It's safest to avoid this namespace conflict
+ completely.
+
+ No OS supported by tuklib_integer.h uses byteswapXX names and
+ a web search doesn't immediately find any obvious danger of
+ namespace conflicts. So let's try these still-pretty-short names
+ for the macros.
+
+ Thanks to Sam James for pointing out the compiler warning on
+ NetBSD 10.0.
+
+ (cherry picked from commit 4ffc60f32397371769b7d6b5e3ed8626292d58df)
- po/ko.po | 319 +++++++++++++++++++++++++++++++--------------------------------
- 1 file changed, 158 insertions(+), 161 deletions(-)
+ src/common/tuklib_integer.h | 47 ++++++++++++++++++++------------------
+ src/liblzma/check/crc32_fast.c | 4 ++--
+ src/liblzma/check/crc32_tablegen.c | 2 +-
+ src/liblzma/check/crc64_fast.c | 4 ++--
+ src/liblzma/check/crc64_tablegen.c | 2 +-
+ 5 files changed, 31 insertions(+), 28 deletions(-)
-commit 9e39cebe3ccdd4bc320ce6e7eea989bdd167c8b2
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-05-16 23:49:09 +0800
+commit 0ca14871f306b97ce81bfe44c4a39b6b2af31bb3
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-24 01:20:26 +0300
- Translations: Update the Spanish translation.
+ liblzma: API doc cleanups
+
+ (cherry picked from commit 08ab0966a75b501aa7c717622223f0c13a113c75)
- po/es.po | 319 +++++++++++++++++++++++++++++++--------------------------------
- 1 file changed, 158 insertions(+), 161 deletions(-)
+ src/liblzma/api/lzma/container.h | 2 +-
+ src/liblzma/api/lzma/index.h | 6 +++---
+ src/liblzma/api/lzma/vli.h | 5 ++---
+ 3 files changed, 6 insertions(+), 7 deletions(-)
-commit 7a578d1d8293fc1cf7c6f9df76bc6a0e55c51a14
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-05-16 23:47:23 +0800
+commit 94a462850bc8718f5dd5b30116bce2165b2403c2
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-23 16:35:33 +0300
- Translations: Update the Romanian translation.
+ Tests: test_filter_str: Add a few assertions
+
+ (cherry picked from commit 3ac8a9bb4cccbee88350696dc9c645c48d77c989)
- po/ro.po | 195 ++++++++++++++++++++++++++++++++-------------------------------
- 1 file changed, 98 insertions(+), 97 deletions(-)
+ tests/test_filter_str.c | 4 ++++
+ 1 file changed, 4 insertions(+)
-commit 362320fea5383bae179763763625532bad6d10e8
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-05-16 23:45:43 +0800
+commit 72058ca22a7f3c9c67ed58be624f8302c6337cd7
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-23 16:35:08 +0300
- Translations: Update Romanian translation of man pages.
+ Tests: test_filter_str: Move one assertion and add a comment
+
+ (cherry picked from commit 26c69be80523b05c84dea86c47c4ddd9a10945d7)
- po4a/ro.po | 19 ++++++++++---------
- 1 file changed, 10 insertions(+), 9 deletions(-)
+ tests/test_filter_str.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
-commit 29c5a870be23d0a565b959404b34a8b1babef7df
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-05-16 23:43:51 +0800
+commit c59ebbe1c6dd18b78a046aae3133702dd52c352e
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-23 16:26:06 +0300
- Translations: Update Ukrainian translation of man pages.
+ Tests: test_filter_str: Tweak comments and white space
+
+ (cherry picked from commit 4f6af853bc99904efb8b6c28a0af7b81a8476c1b)
- po4a/uk.po | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
+ tests/test_filter_str.c | 3 +++
+ 1 file changed, 3 insertions(+)
-commit 5ee57572773207371712b1bbcd9b5b8c1baad2cc
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-05-16 23:37:54 +0800
+commit ceda860934b0272689d0722ceeb490cf9c559956
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-23 16:25:22 +0300
- Translations: Update the Ukrainian translation.
+ Tests: test_filter_str: Add missing RISC-V case
+
+ Fixes: 89ea1a22f4ed3685b053b7260bc5acf6c75d1664
+ (cherry picked from commit c92663aa1bd576e0615498a4189acf0df12e84b9)
- po/uk.po | 321 +++++++++++++++++++++++++++++++--------------------------------
- 1 file changed, 159 insertions(+), 162 deletions(-)
+ tests/test_filter_str.c | 3 +++
+ 1 file changed, 3 insertions(+)
-commit dfc257bdb224780d3c8cdeca5a8e52848b9adc0a
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-05-16 23:07:35 +0800
+commit 2234b7cc472e62f3401216a71261579342fa2959
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-22 22:23:32 +0300
- Translations: Update the Polish translation.
+ Tests: test_filter_str: Test *error_pos more thoroughly
+
+ (cherry picked from commit b0366df1d7ed26268101f9303a001c91c0806dfc)
- po/pl.po | 316 +++++++++++++++++++++++++++++++--------------------------------
- 1 file changed, 155 insertions(+), 161 deletions(-)
+ tests/test_filter_str.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 76 insertions(+), 1 deletion(-)
-commit f6df4c4ab7378d2971ae1606f4eecc011ea5fc6d
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-05-16 22:52:14 +0800
+commit 3ba3ef57f929670adb1f9c5e5207a81a29374237
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-22 21:54:39 +0300
- Translations: Update the Swedish translation.
+ liblzma: lzma_str_to_filters: Set *error_pos on all errors
+
+ The API docs clearly say that if error_pos isn't NULL then *error
+ is always set on any error. However, it wasn't touched if str == NULL
+ or filters == NULL or unsupported flags were specified.
+
+ Fixes: cedeeca2ea6ada5b0411b2ae10d7a859e837f203
+ (cherry picked from commit 70d12dd069bb9bb0d6bb1c8fafc4e6f77780263d)
- po/sv.po | 319 +++++++++++++++++++++++++++++++--------------------------------
- 1 file changed, 158 insertions(+), 161 deletions(-)
+ src/liblzma/common/string_conversion.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
-commit 25da22e0521ec698dae4eb5e994b4cd3f4708b60
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-05-16 21:21:38 +0800
+commit 57ad820e15381344a812c78ce9b67a77a60b9cf3
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-22 20:31:25 +0300
- Translations: Update the Esperanto translation.
+ liblzma: Clean up white space
+
+ (cherry picked from commit ed8e552395701fbf046027cebc8be4a6755b263f)
- po/eo.po | 34 +++++++++++++++++-----------------
- 1 file changed, 17 insertions(+), 17 deletions(-)
+ src/liblzma/lz/lz_encoder.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 4f57a9c9915b7b9267885cf9fca58e5c8208458d
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-05-11 23:49:23 +0800
+commit ba0b5bfe7cb3cdbd9a4e3c268e10c304cb834e8a
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-22 18:35:19 +0300
- liblzma: Adds lzma_nothrow to MicroLZMA API functions.
+ Tests: test_filter_flags: Edit comments and style
- None of the liblzma functions may throw an exception, so this
- attribute should be applied to all liblzma API functions.
+ (cherry picked from commit 2f06920f20b1ad63b7953dc09569e1d424998849)
- src/liblzma/api/lzma/container.h | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
+ tests/test_filter_flags.c | 13 +++++++++----
+ 1 file changed, 9 insertions(+), 4 deletions(-)
-commit 238b4e5458b4bd2cadefb768b8ea7c6b70a191ac
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-05-04 20:38:52 +0800
+commit d2ed6759596185ac6a9c69ea713c27cd4bd1d9ba
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-22 16:39:44 +0300
- Translations: Update the Croatian translation.
+ Tests: Fix C99/C11 compatibility when features are disabled
+
+ The array could become empty and then the initializer would be
+ simply {} which is allowed only in GNU-C and C23.
+
+ (cherry picked from commit b101e1d1dbc81577c0c9aa0cb89cf2e46a15eb82)
- po/hr.po | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
+ tests/test_filter_flags.c | 18 ++++++++----------
+ 1 file changed, 8 insertions(+), 10 deletions(-)
-commit 0cee63c3c6c4f9084a5e7fa7c15a1863ac8e5ffc
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-05-04 19:50:42 +0800
+commit 9a70e93fef3fd5943484e56f1881a7c6e3296027
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-21 20:32:16 +0300
- Bump version and soname for 5.4.3.
+ DOS: Omit useless defines from config.h
+
+ (cherry picked from commit f8f3a220ac8afcb8cb2812917d3b77e00c2eab0d)
- src/liblzma/Makefile.am | 2 +-
- src/liblzma/api/lzma/version.h | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
+ dos/config.h | 12 ------------
+ 1 file changed, 12 deletions(-)
-commit 01f937ea9a49005c5091c0165fa0c1e572dd1749
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-05-02 20:39:56 +0800
+commit dc4740f720e08bdd496aa2736db3b7aea6dd3d1e
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-21 20:27:50 +0300
- Add NEWS for 5.4.3.
+ Build: Omit useless checks for fcntl.h, limits.h, and sys/time.h
+
+ (cherry picked from commit fc1921b04b8840caaa777c2bd5340d41b259da20)
- NEWS | 10 ++++++++++
- 1 file changed, 10 insertions(+)
+ configure.ac | 6 ------
+ 1 file changed, 6 deletions(-)
-commit e9b9ea953179502d5245b4e6ca4f5ffe9d5797b1
+commit 6e210d5766b25d36729152a13c5889bb0605a1e3
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-05-03 22:46:42 +0300
+Date: 2024-04-19 22:04:21 +0300
- tuklib_integer.h: Fix a recent copypaste error in Clang detection.
+ liblzma: Silence a warning from Coverity static analysis
- Wrong line was changed in 7062348bf35c1e4cbfee00ad9fffb4a21aa6eff7.
- Also, this has >= instead of == since ints larger than 32 bits would
- work too even if not relevant in practice.
+ It is logical why it cannot know for sure that the value has
+ to be at most 4 if it is less than 16.
+
+ The x86 filter is based on a very old LZMA SDK version. Newer
+ ones have quite a different implementation for the same filter.
+
+ Thanks to Sam James.
+
+ (cherry picked from commit 6aa2a6deeba04808a0fe4461396e7fb70277f3d4)
- src/common/tuklib_integer.h | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ src/liblzma/simple/x86.c | 12 +++++-------
+ 1 file changed, 5 insertions(+), 7 deletions(-)
-commit be6e39a8622f0d905072874ec25b1ffd155b12e1
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-04-20 20:15:00 +0800
+commit 4019b012f29008ea6545aba6fe6c141a2d920ae2
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-19 23:18:19 +0300
- Update THANKS.
+ Update .gitignore
+
+ (cherry picked from commit e89d3e83b4496d0b5410870634970c0aa9721d59)
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ .gitignore | 21 ++++++++-------------
+ 1 file changed, 8 insertions(+), 13 deletions(-)
-commit 9e343a46cf87a345799222c0b0b3a6f3358dde0c
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-04-19 22:22:16 +0800
+commit 09a0311a1e8cdefbcfab9e490cdd41c97a459d24
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-19 20:53:24 +0300
- Windows: Include <intrin.h> when needed.
+ Tests: test_lzip_decoder: Tweak coding style and comments
- Legacy Windows did not need to #include <intrin.h> to use the MSVC
- intrinsics. Newer versions likely just issue a warning, but the MSVC
- documentation says to include the header file for the intrinsics we use.
-
- GCC and Clang can "pretend" to be MSVC on Windows, so extra checks are
- needed in tuklib_integer.h to only include <intrin.h> when it will is
- actually needed.
+ (cherry picked from commit 86fc4ee859709da0ff9617a1490f13ddac0a109b)
- src/common/tuklib_integer.h | 6 ++++++
- src/liblzma/common/memcmplen.h | 10 ++++++++++
- 2 files changed, 16 insertions(+)
+ tests/test_lzip_decoder.c | 58 +++++++++++++++++++++++------------------------
+ 1 file changed, 28 insertions(+), 30 deletions(-)
-commit 12321a9390acc076b414035a46df9d7545ac379f
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-04-19 21:59:03 +0800
+commit 3117336a0291309ddd2a54d2966a589f9f806850
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-19 20:51:36 +0300
- tuklib_integer: Use __builtin_clz() with Clang.
-
- Clang has support for __builtin_clz(), but previously Clang would
- fallback to either the MSVC intrinsic or the regular C code. This was
- discovered due to a bug where a new version of Clang required the
- <intrin.h> header file in order to use the MSVC intrinsics.
+ Tests: test_lzip_decoder: Remove redundant initializations
- Thanks to Anton Kochkov for notifying us about the bug.
+ (cherry picked from commit 38be573a279bd7b608ee7d8509ec10884e6fb0d5)
- src/common/tuklib_integer.h | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
+ tests/test_lzip_decoder.c | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
-commit d1f0e01c395960efd6c29ff144eda4f4c8c1c6d3
+commit f78081eb12c804ec4f5a3dc569b859646b16e9e5
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-04-14 18:42:33 +0300
+Date: 2024-04-19 20:47:24 +0300
- liblzma: Update project maintainers in lzma.h.
+ Tests: test_lzip_decoder: Remove unneeded tuktest_malloc() calls
- AUTHORS was updated earlier, lzma.h was simply forgotten.
+ (cherry picked from commit d7e4bc53eacfab9f3de95d8252bdfdc9419079c9)
- src/liblzma/api/lzma.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ tests/test_lzip_decoder.c | 12 ++----------
+ 1 file changed, 2 insertions(+), 10 deletions(-)
-commit 8204c5d1304e1e3b7487801b4acaf8e3179a6c52
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-04-13 20:45:19 +0800
+commit 7413383e4280065b79ca70abe4d8ebc78055b35a
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-15 20:35:07 +0300
- liblzma: Cleans up old commented out code.
+ xz: Fix white space error.
+
+ Thanks to xx on #tukaani.
+
+ (cherry picked from commit eeca8f7c5baf1ad69606bb734d5001763466d58f)
- src/liblzma/common/alone_encoder.c | 11 -----------
- 1 file changed, 11 deletions(-)
+ src/xz/args.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 32980d1562bc031013306be1c787761fa63da87d
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-03-28 22:32:40 +0800
+commit eed2f26c0edb6e31a50d48bab4ff619778690a1e
+Author: Sam James <sam@gentoo.org>
+Date: 2024-04-11 23:01:44 +0100
- CMake: Update liblzma-config.cmake generation.
+ xz: add missing noreturn for message_filters_help
- Now that the threading is configurable, the liblzma CMake package only
- needs the threading library when using POSIX threads.
+ Fixes: a165d7df1964121eb9df715e6f836a31c865beef
+ (cherry picked from commit 462ca9409940a19f743daee6b3bcc611277d0007)
- CMakeLists.txt | 33 ++++++++++++++++++++++-----------
- 1 file changed, 22 insertions(+), 11 deletions(-)
+ src/xz/message.h | 1 +
+ 1 file changed, 1 insertion(+)
-commit 023907faa965476fb921a6344253c50e0ba795f9
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-03-28 22:25:33 +0800
+commit 2633d8df616405bd54fd748d7bf887ebc4505b88
+Author: Sam James <sam@gentoo.org>
+Date: 2024-04-11 19:34:04 +0100
- CMake: Allows setting thread method.
+ xz: signals: suppress -Wsign-conversion on macOS
- The thread method is now configurable for the CMake build. It matches
- the Autotools build by allowing ON (pick the best threading method),
- OFF (no threading), posix, win95, and vista. If both Windows and
- posix threading are both available, then ON will choose Windows
- threading. Windows threading will also not use:
+ On macOS, we get:
+ ```
+ signals.c: In function 'signals_init':
+ signals.c:76:17: error: conversion to 'sigset_t' {aka 'unsigned int'} from 'int' may change the sign of the result [-Werror=sign-conversion]
+ 76 | sigaddset(&hooked_signals, sigs[i]);
+ | ^~~~~~~~~
+ signals.c:81:17: error: conversion to 'sigset_t' {aka 'unsigned int'} from 'int' may change the sign of the result [-Werror=sign-conversion]
+ 81 | sigaddset(&hooked_signals, message_progress_sigs[i]);
+ | ^~~~~~~~~
+ signals.c:86:9: error: conversion to 'sigset_t' {aka 'unsigned int'} from 'int' may change the sign of the result [-Werror=sign-conversion]
+ 86 | sigaddset(&hooked_signals, SIGTSTP);
+ | ^~~~~~~~~
+ ```
- target_link_libraries(liblzma Threads::Threads)
+ We use `int` for `hooked_signals` but we can't just cast to whatever
+ `sigset_t` is because `sigset_t` is an opaque type. It's an unsigned int
+ on macOS. On macOS, `sigaddset` is implemented as a macro.
- since on systems like MinGW-w64 it would link the posix threads
- without purpose.
+ Just suppress -Wsign-conversion for `signals_init` for macOS given
+ there's no real nice way of fixing this.
+
+ (cherry picked from commit 863f13d2828b99b0539ce73f9cf85bde32358034)
- CMakeLists.txt | 144 +++++++++++++++++++++++++++++++++++++++++----------------
- 1 file changed, 104 insertions(+), 40 deletions(-)
+ src/xz/signals.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
-commit ba176d77cbb164b13006516660fc1ff6c59dedb5
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-03-24 20:05:59 +0800
+commit 50fb269c7a9cf62a9f3fe08859e2aa4348b600a7
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-13 22:19:40 +0300
- CMake: Only build xzdec if decoders are enabled.
+ Tests: test_microlzma: Add a "FIXME?" about LZMA_FINISH handling
+
+ (cherry picked from commit fcbd0d199933a69713cb293cbd7409a757d854cd)
- CMakeLists.txt | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ tests/test_microlzma.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
-commit c99d697df800e9bc47e09facf88bcfdb9e0264a5
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-03-22 15:42:04 +0800
+commit 3e2ff2d38c54c8fc7ce15aaf91185dc105d9c92c
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-13 18:05:31 +0300
- Build: Removes redundant check for LZMA1 filter support.
+ Tests: test_microlzma: Tweak comments, coding style, and minor details
+
+ A few lines were reordered, a few ARRAY_SIZE were changed to sizeof,
+ and a few uint32_t were changed to size_t. No real functional changes
+ were intended.
+
+ (cherry picked from commit 0fe2dfa68355d2b165544b2bc8babf77dcc2039e)
- src/liblzma/lzma/Makefile.inc | 5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
+ tests/test_microlzma.c | 149 +++++++++++++++++++++++++++----------------------
+ 1 file changed, 83 insertions(+), 66 deletions(-)
-commit 54a2fd8c850e626343b79c4cc8fcac2f638ec890
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-03-23 15:14:29 +0200
+commit ebc8b8de19d641c37ab7959a224bcd0ff4c0833f
+Author: Ryan Carsten Schmidt <git@ryandesign.com>
+Date: 2024-04-12 19:31:13 -0500
- CMake: Bump maximum policy version to 3.26.
+ CI: Use only the active CPUs on macOS
- It adds only one new policy related to FOLDERS which we don't use.
- This makes it clear that the code is compatible with the policies
- up to 3.26.
+ hw.ncpu counts all CPUs including inactive ones. hw.activecpu counts
+ only the active CPUs.
+
+ (cherry picked from commit 97f0ee0f1f903f4e7c4ea23e9b89d687025d2992)
- CMakeLists.txt | 2 +-
+ build-aux/ci_build.bash | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-commit 622d0fdc02d5f565c2872d79bc70c669c95c8284
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-03-21 23:36:00 +0800
+commit 1e63f7d53648beb6dd5acb5771850d7c4bc30477
+Author: Sam James <sam@gentoo.org>
+Date: 2024-04-10 18:33:55 +0100
- CMake: Conditionally build xz list.* files if decoders are enabled.
+ ci: rename ci_build.sh -> ci_build.bash
+
+ We discussed the name and it's less cognitive load to just call it '.bash'
+ so you don't have an immediate question about if bashisms are OK.
+
+ (cherry picked from commit 73f629e321b74f68c9954728fa4f19261afccf46)
- CMakeLists.txt | 9 +++++++--
- 1 file changed, 7 insertions(+), 2 deletions(-)
+ .github/workflows/ci.yml | 52 ++++++++++++++++----------------
+ .github/workflows/windows-ci.yml | 20 ++++++------
+ build-aux/{ci_build.sh => ci_build.bash} | 0
+ 3 files changed, 36 insertions(+), 36 deletions(-)
-commit 3e2dc523c596cd770a6a7c58cacc0d0d8761e853
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-25 11:46:50 +0800
+commit aea54a4724414466a20afd7493156d40d0a2741c
+Author: Sam James <sam@gentoo.org>
+Date: 2024-04-10 17:42:23 +0100
- CMake: Allow configuring features as cache variables.
+ ci: build in parallel by default
- This allows users to change the features they build either in
- CMakeCache.txt or by using a CMake GUI. The sources built for
- liblzma are affected by this too, so only the necessary files
- will be compiled.
+ (cherry picked from commit 8709407a9ef8e7e8aec117879400e4dd3e227ada)
- CMakeLists.txt | 528 ++++++++++++++++++++++++++++++++++++++++++---------------
- 1 file changed, 391 insertions(+), 137 deletions(-)
+ build-aux/ci_build.sh | 2 ++
+ 1 file changed, 2 insertions(+)
-commit 0c053f97337fa4ead77acefb577e8e86f8ef388d
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-03-21 14:07:51 +0200
+commit 4381fcf00b2fabb6dcc9fd5cf35d520feb9e775a
+Author: Sam James <sam@gentoo.org>
+Date: 2024-04-10 15:41:08 +0100
- Build: Add a comment that AC_PROG_CC_C99 is needed for Autoconf 2.69.
+ ci: default to -O2
- It's obsolete in Autoconf >= 2.70 and just an alias for AC_PROG_CC
- but Autoconf 2.69 requires AC_PROG_CC_C99 to get a C99 compiler.
+ We need this for when we're passing sanitizer flags or -gdwarf-4 for Clang
+ with Valgrind. Just always start with -O2 if CFLAGS isn't set in the
+ environment and append what was passed on the command line.
+
+ (cherry picked from commit 65bf7e0a1ca6386f17608e8afb84ac470c18d23f)
- configure.ac | 3 +++
- 1 file changed, 3 insertions(+)
+ build-aux/ci_build.sh | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
-commit 915d4f6058d52f84d2b58b0a5f3c8272eaa6c1bd
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-03-21 14:04:37 +0200
+commit 752ba5ed99ec754bafbdc4d87a2876cb2566ecc4
+Author: Sam James <sam@gentoo.org>
+Date: 2024-04-10 15:17:47 +0100
- Build: configure.ac: Use AS_IF and AS_CASE where required.
+ ci: make automake's test runner verbose on failures
- This makes no functional difference in the generated configure
- (at least with the Autotools versions I have installed) but this
- change might prevent future bugs like the one that was just
- fixed in the commit 5a5bd7f871818029d5ccbe189f087f591258c294.
+ This is a lot easier to work with than the save-logs thing the action
+ tries to do...
+
+ (cherry picked from commit bc899f9e0700ad153bd65f4804c4de7515c8a847)
- configure.ac | 30 +++++++++++++++---------------
- 1 file changed, 15 insertions(+), 15 deletions(-)
+ build-aux/ci_build.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit b848c039586ed2cddb6fb033680dac107cc5143f
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-03-21 13:12:03 +0200
+commit cc21af171599ffe0419fc32a30edd3ef7d479865
+Author: Sam James <sam@gentoo.org>
+Date: 2024-04-10 12:38:51 +0100
- Update THANKS.
+ ci: make UBSAN abort on errors
+
+ Unfortunately, UBSAN doesn't do this by default. See also the change
+ I made in Meson for this in October [0].
+
+ [0] https://github.com/mesonbuild/meson/commit/7b7d2e060b447de9c2642848847370a58711ac1c
+
+ (cherry picked from commit b5e3470442531717b2457b40ab412740296af1bc)
- THANKS | 1 +
+ .github/workflows/ci.yml | 1 +
1 file changed, 1 insertion(+)
-commit c775ba1602a74f29dbc2088bbe4d02c23fc32ba1
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-03-21 13:11:49 +0200
+commit 2d2d5f14b392cd1aeddab7ce34fd50ba5422e5b5
+Author: Sam James <sam@gentoo.org>
+Date: 2024-04-10 11:43:10 +0100
- Build: Fix --disable-threads breaking the building of shared libs.
+ ci: test Valgrind
- This is broken in the releases 5.2.6 to 5.4.2. A workaround
- for these releases is to pass EGREP='grep -E' as an argument
- to configure in addition to --disable-threads.
+ Using `--trace-children=yes` has a trade-off here, as it makes
+ `test_scripts.sh` pretty slow when calling various non-xz utilities.
- The problem appeared when m4/ax_pthread.m4 was updated in
- the commit 6629ed929cc7d45a11e385f357ab58ec15e7e4ad which
- introduced the use of AC_EGREP_CPP. AC_EGREP_CPP calls
- AC_REQUIRE([AC_PROG_EGREP]) to set the shell variable EGREP
- but this was only executed if POSIX threads were enabled.
- Libtool code also has AC_REQUIRE([AC_PROG_EGREP]) but Autoconf
- omits it as AC_PROG_EGREP has already been required earlier.
- Thus, if not using POSIX threads, the shell variable EGREP
- would be undefined in the Libtool code in configure.
+ But I also feel like it's not useless to have Valgrind used there and it's
+ not easy to exclude Valgrind just for that one test...
- ax_pthread.m4 is fine. The bug was in configure.ac which called
- AX_PTHREAD conditionally in an incorrect way. Using AS_CASE
- ensures that all AC_REQUIREs get always run.
+ I did consider using AX_VALGRIND_CHECK [0][1] but I couldn't get it working
+ immediately with some conditionally-built tests and I wondered if it was
+ worth spending time on at least while we're debating xz's future build
+ system situation.
- Thanks to Frank Busse for reporting the bug.
- Fixes: https://github.com/tukaani-project/xz/issues/45
+ [0] https://www.gnu.org/software/autoconf-archive/ax_valgrind_check.html
+ [1] https://tecnocode.co.uk/2014/12/23/automatically-valgrinding-code-with-ax_valgrind_check/
+
+ (cherry picked from commit 6c095a98fbec70b790253a663173ecdb669108c4)
- configure.ac | 16 ++++++++--------
- 1 file changed, 8 insertions(+), 8 deletions(-)
+ .github/workflows/ci.yml | 11 ++++++++++-
+ build-aux/ci_build.sh | 8 +++++---
+ 2 files changed, 15 insertions(+), 4 deletions(-)
-commit 0673c9ec98b6bae12b33dc295564514aaa26e2fc
+commit 5d20a612051fac3ca6d99abe3cd7e0e3370e5b67
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-03-19 22:45:59 +0200
+Date: 2024-04-10 23:20:02 +0300
- liblzma: Silence -Wsign-conversion in SSE2 code in memcmplen.h.
+ liblzma: CRC: Simplify table omission macros
- Thanks to Christian Hesse for reporting the issue.
- Fixes: https://github.com/tukaani-project/xz/issues/44
+ A macro is useful to prevent a single #if directive from
+ getting too ugly but only one macro is needed for all archs.
+
+ (cherry picked from commit 6286c1900c2d2ca33d9b1b397122c7bcdb9a4d59)
- src/liblzma/common/memcmplen.h | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
+ src/liblzma/check/crc32_table.c | 10 ++++------
+ src/liblzma/check/crc64_table.c | 4 ++--
+ src/liblzma/check/crc_common.h | 5 +++--
+ 3 files changed, 9 insertions(+), 10 deletions(-)
-commit 6ca8046ecbc7a1c81ee08f544bfd1414819fb2e8
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-03-18 23:22:06 +0800
+commit 2a80827e23169c624560ac89714bf5084cbead43
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-10 23:09:40 +0300
- Bump version and soname for 5.4.2.
+ liblzma: ARM64 CRC: Fix omission of CRC32 table
+
+ The macro name had an odd typo so the table wasn't omitted
+ when it should have.
+
+ Fixes: 1940f0ec28f08c0ac72c1413d9706fb82eabe6ad
+ (cherry picked from commit 45da936c879acf4f053a3055665bf1b10ded4462)
- src/liblzma/Makefile.am | 2 +-
- src/liblzma/api/lzma/version.h | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
+ src/liblzma/check/crc32_table.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit ce4f246600db10e77fc93d492ea045b4c9830bc6
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-03-18 22:10:57 +0800
+commit a54117377151356c1e2494ba1febc245cb71b51c
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-10 22:21:51 +0300
- Add NEWS for 5.4.2.
+ Build: If ARM64 feature detection func is found, stop looking for others
+
+ This can speed up configure a tiny bit.
+
+ Fixes: c5f6d79cc9515a7f22d7ea4860c6cc394b295732
+ (cherry picked from commit 308a9af85400b0e2019f0f012c8354e831d06d65)
- NEWS | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 48 insertions(+)
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 3634fe330788fc0df217acdb6581031a851600a3
+commit 9223ad6e78a666cc9f9aba135d1755fec184a24a
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-03-18 16:00:54 +0200
+Date: 2024-04-10 22:04:27 +0300
- Update the copy of GNU GPLv3 from gnu.org to COPYING.GPLv3.
+ liblzma: ARM64 CRC32: Change style of the macOS code to match FreeBSD
+
+ I didn't test this but it shouldn't change any functionality.
+
+ Fixes: 761f5b69a4c778c8bcb09279b845b07c28790575
+ (cherry picked from commit fc43cecd32bf9d5f8caa599206b15c9569af1eb6)
- COPYING.GPLv3 | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
+ src/liblzma/check/crc32_arm64.h | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
-commit 97679d25ce7cb014328f1455bb338903c003d54f
+commit 32ceb2c36a0e450037bbe906c2a1ea42607b9d21
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-03-18 15:51:57 +0200
+Date: 2024-04-10 21:59:27 +0300
- Change a few HTTP URLs to HTTPS.
+ liblzma: ARM64 CRC32: Add error checking to FreeBSD-specific code
- The xz man page timestamp was intentionally left unchanged.
+ Also add parenthesis to the return statement.
+
+ I didn't test this.
+
+ Fixes: 761f5b69a4c778c8bcb09279b845b07c28790575
+ (cherry picked from commit 1024cd4cd966b998fedec51e385e9ee9a49b3c57)
- INSTALL | 2 +-
- README | 8 ++++----
- configure.ac | 2 +-
- dos/INSTALL.txt | 4 ++--
- src/liblzma/api/lzma.h | 8 ++++----
- src/liblzma/check/sha256.c | 2 +-
- src/xz/xz.1 | 2 +-
- windows/INSTALL-MinGW.txt | 10 +++++-----
- 8 files changed, 19 insertions(+), 19 deletions(-)
+ src/liblzma/check/crc32_arm64.h | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
-commit 01a67e89a56c3ebf5f6681bd06f0edc22a1ae594
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-03-18 00:40:28 +0800
+commit 42915101e914dba353c236925bc1d5e4826d3f7a
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-10 21:56:33 +0300
- CMake: Fix typo in a comment.
+ liblzma: ARM64 CRC32: Use negation instead of subtracting from 8
+
+ Subtracting from 0 is negation, this just keeps warnings away.
+
+ Fixes: 761f5b69a4c778c8bcb09279b845b07c28790575
+ (cherry picked from commit 2337f7021c860b026e3e849e60a9ae8d09ec0ea0)
- CMakeLists.txt | 2 +-
+ src/liblzma/check/crc32_arm64.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-commit 5dca3f5cbab31105196c89cd6df0a9bbc3307c05
+commit 42a9482b48f0171852fbaddbdc729a56f2daa547
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-03-17 18:36:22 +0200
+Date: 2024-04-10 21:55:10 +0300
- Windows: build.bash: Copy liblzma API docs to the output package.
+ liblzma: ARM64 CRC32: Tweak coding style and comments
+
+ (cherry picked from commit d8fffd01aa1a3c18e437a222abd34699e23ff5e7)
- windows/build.bash | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
+ src/liblzma/check/crc32_arm64.h | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
-commit ae252862b30b509ab88b2bbcaa08e8d51b57e928
+commit 38a3ec5a7e2ddeee3686be64b037aa1377f31fd1
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-03-17 08:53:38 +0200
+Date: 2024-04-09 17:47:01 +0300
- Windows: Add microlzma_*.c to the VS project files.
+ CI: Remove ifunc support.
- These should have been included in 5.3.2alpha already.
+ (cherry picked from commit 986865ea2f9d1f8dbef4a130926df106b0f6d41a)
- windows/vs2013/liblzma.vcxproj | 2 ++
- windows/vs2013/liblzma_dll.vcxproj | 2 ++
- windows/vs2017/liblzma.vcxproj | 2 ++
- windows/vs2017/liblzma_dll.vcxproj | 2 ++
- windows/vs2019/liblzma.vcxproj | 2 ++
- windows/vs2019/liblzma_dll.vcxproj | 2 ++
- 6 files changed, 12 insertions(+)
+ .github/workflows/ci.yml | 13 +++----------
+ build-aux/ci_build.sh | 5 +----
+ 2 files changed, 4 insertions(+), 14 deletions(-)
-commit 147d282cc3733e2723df82622b6540ddfb52635e
+commit 34d1252f093944ff350a88a6196539f95902ad41
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-03-17 08:43:51 +0200
+Date: 2024-04-09 17:43:16 +0300
- CMake: Add microlzma_*.c to the build.
+ liblzma: Remove ifunc support.
- These should have been included in 5.3.2alpha already.
+ This is *NOT* done for security reasons even though the backdoor
+ relied on the ifunc code. Instead, the reason is that in this
+ project ifunc provides little benefits but it's quite a bit of
+ extra code to support it. The only case where ifunc *might* matter
+ for performance is if the CRC functions are used directly by an
+ application. In normal compression use it's completely irrelevant.
+
+ (cherry picked from commit 689ae2427342a2ea1206eb5ca08301baf410e7e0)
- CMakeLists.txt | 2 ++
- 1 file changed, 2 insertions(+)
+ CMakeLists.txt | 79 ---------------------------------------
+ INSTALL | 8 ----
+ configure.ac | 79 ---------------------------------------
+ src/liblzma/check/crc32_fast.c | 48 +++---------------------
+ src/liblzma/check/crc64_fast.c | 21 -----------
+ src/liblzma/check/crc_common.h | 9 +----
+ src/liblzma/check/crc_x86_clmul.h | 11 +-----
+ 7 files changed, 8 insertions(+), 247 deletions(-)
-commit 4523a5ee29f45c0256af67a15771bc8bbd25ba53
+commit a594b39685051cd1ec866360bc4dd6c22f301bb4
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-03-17 08:41:36 +0200
+Date: 2024-04-08 22:04:41 +0300
- Build: Update comments about unaligned access to mention 64-bit.
+ tests/files/README: Update the main heading.
+
+ (cherry picked from commit 6b4c859059a7eb9b0547590c081668e14ecf8af6)
- cmake/tuklib_integer.cmake | 7 +++----
- m4/tuklib_integer.m4 | 4 ++--
- 2 files changed, 5 insertions(+), 6 deletions(-)
+ tests/files/README | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit 82aacb40367dc580b09c5a7b270f6c98b63e49b9
+commit fa76e3ef597ee2e9d150461a42d270a386204042
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-03-17 00:02:30 +0200
+Date: 2024-04-08 22:02:45 +0300
- Tests: Update .gitignore.
+ tests/files/README: Explain how to recreate the ARM64 test files.
+
+ (cherry picked from commit 2a851e06b891ce894f918faff32a6cca6fdecee6)
- .gitignore | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
+ tests/files/README | 15 ++++++++++++++-
+ 1 file changed, 14 insertions(+), 1 deletion(-)
-commit 5d022c24921eec938604a8cb10d70aa08dbd8575
+commit 112fa0aba6be30968811c9131f1b995cf9e92e75
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-03-14 20:04:03 +0200
+Date: 2024-04-08 21:51:55 +0300
- po4a/update-po: Display the script name consistently in error messages.
+ debug: Add generator for the ARM64 test file data.
+
+ (cherry picked from commit 3d09b721b94e18fe1f853a04799697f5de10b291)
- po4a/update-po | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ debug/Makefile.am | 3 +-
+ debug/testfilegen-arm64.c | 116 ++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 118 insertions(+), 1 deletion(-)
-commit 896295117324f323c0b8db6a31ad6ebfaa88793d
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-03-17 01:30:36 +0800
+commit 1a1f3d0323d5991a3238566e8f517d5116358b5c
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-08 21:19:38 +0300
- Doc: Rename Doxygen HTML doc directory name liblzma => api.
+ xz man page: Use .ft CR instead of CW to silence warnings from groff.
- When the docs are installed, calling the directory "liblzma" is
- confusing since multiple other files in the doc directory are for
- liblzma. This should also make it more natural for distros when they
- package the documentation.
+ (cherry picked from commit 31ef676567c9d6fcc4ec9fc833c312f7a7c21c48)
- .gitignore | 2 +-
- Makefile.am | 18 +++++++++---------
- PACKAGERS | 4 ++--
- doxygen/Doxyfile | 2 +-
- doxygen/update-doxygen | 18 +++++++++---------
- 5 files changed, 22 insertions(+), 22 deletions(-)
+ src/xz/xz.1 | 32 ++++++++++++++++----------------
+ 1 file changed, 16 insertions(+), 16 deletions(-)
-commit 94097157fae308b2c1a5edb4e8597c68b45eeaea
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-03-16 22:07:15 +0800
+commit 9f9203f574f895c40a86a83c45c6bb79c25bb5d2
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-08 19:28:35 +0300
- liblzma: Remove note from lzma_options_bcj about the ARM64 exception.
+ Fix NEWS for 5.6.0 and 5.6.1.
- This was left in by mistake since an early version of the ARM64 filter
- used a different struct for its options.
+ (cherry picked from commit 780cbf29d5a88db2b546e9b7b019c4c33ca72685)
- src/liblzma/api/lzma/bcj.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ NEWS | 6 ++++++
+ 1 file changed, 6 insertions(+)
-commit da16d0b73b79d7785ece6f78a577fadd1fb59d0e
+commit 12876b33c79e36d7e51e8ba6ab7162bd2129cb5b
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-03-15 19:19:13 +0200
+Date: 2024-04-08 19:22:26 +0300
- COPYING: Add a note about the included Doxygen-generated HTML.
+ Remove the XZ logo.
+
+ (cherry picked from commit bfd0c7c478e93a1911b845459549ff94587b6ea2)
- COPYING | 11 +++++++++++
- 1 file changed, 11 insertions(+)
+ COPYING | 5 -
+ COPYING.CC-BY-SA-4.0 | 427 ---------------------------------------------------
+ Makefile.am | 2 -
+ README | 2 -
+ doc/xz-logo.png | Bin 6771 -> 0 bytes
+ doxygen/Doxyfile | 6 +-
+ doxygen/footer.html | 13 --
+ 7 files changed, 3 insertions(+), 452 deletions(-)
-commit e57c74f9ef19201f72c106f2c347596f40229936
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-03-16 21:41:09 +0800
+commit 879295d91f06c241fd8a8fc1ca95776dbeb45f93
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-08 18:27:39 +0300
- Doc: Update PACKAGERS with details about liblzma API docs install.
+ Update maintainer and author info.
+
+ The other maintainer suddenly disappeared.
+
+ (cherry picked from commit 77a294d98a9d2d48f7e4ac273711518bf689f5c4)
- PACKAGERS | 22 ++++++++++++++++------
- 1 file changed, 16 insertions(+), 6 deletions(-)
+ AUTHORS | 9 +++++++--
+ README | 10 +++-------
+ THANKS | 1 -
+ src/liblzma/api/lzma.h | 2 +-
+ 4 files changed, 11 insertions(+), 11 deletions(-)
-commit 7e2fa48bb73edb25457232e2e62a4f81c6b95281
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-03-16 21:38:32 +0800
+commit 859617d30d81317236e004b323fed0883f932dcf
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-08 18:05:32 +0300
- liblzma: Add set lzma.h as the main page for Doxygen documentation.
+ Docs: Update .xz file format specification to 1.2.1.
- The \mainpage command is used in the first block of comments in lzma.h.
- This changes the previously nearly empty index.html to use the first
- comment block in lzma.h for its contents.
+ This only reverts the XZ URL changes.
- lzma.h is no longer documented separately, but this is for the better
- since lzma.h only defined a few macros that users do not need to use.
- The individual API header files all have a disclaimer that they should
- not be #included directly, so there should be no confusion on the fact
- that lzma.h should be the only header used by applications.
-
- Additionally, the note "See ../lzma.h for information about liblzma as
- a whole." was removed since lzma.h is now the main page of the
- generated HTML and does not have its own page anymore. So it would be
- confusing in the HTML version and was only a "nice to have" when
- browsing the source files.
+ (cherry picked from commit 8dd03d4484ccf80022722a16d0ed9b37f2b58072)
- src/liblzma/api/lzma.h | 1 +
- src/liblzma/api/lzma/base.h | 2 --
- src/liblzma/api/lzma/bcj.h | 2 --
- src/liblzma/api/lzma/block.h | 2 --
- src/liblzma/api/lzma/check.h | 2 --
- src/liblzma/api/lzma/container.h | 2 --
- src/liblzma/api/lzma/delta.h | 2 --
- src/liblzma/api/lzma/filter.h | 2 --
- src/liblzma/api/lzma/hardware.h | 2 --
- src/liblzma/api/lzma/index.h | 2 --
- src/liblzma/api/lzma/index_hash.h | 4 +---
- src/liblzma/api/lzma/lzma12.h | 2 --
- src/liblzma/api/lzma/stream_flags.h | 2 --
- src/liblzma/api/lzma/version.h | 2 --
- src/liblzma/api/lzma/vli.h | 2 --
- 15 files changed, 2 insertions(+), 29 deletions(-)
+ doc/xz-file-format.txt | 12 ++++++++----
+ 1 file changed, 8 insertions(+), 4 deletions(-)
-commit d42977c7acfdf7fd9acc8803cf411eca7dc10478
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-03-16 21:37:32 +0800
+commit eeb74fba1f6ea334a519015938b4a26c6ba5d4eb
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-08 17:33:56 +0300
- Build: Generate doxygen documentation in autogen.sh.
+ Update website URLs back to tukaani.org.
- Another command line option (--no-doxygen) was added to disable
- creating the doxygen documenation in cases where it not wanted or
- if the doxygen tool is not installed.
+ The XZ projects were moved back to their original URLs.
+
+ (cherry picked from commit 17aa2e1a796d3f758802df29afc89dcf335db567)
- autogen.sh | 35 +++++++++++++++++++++++++++++------
- 1 file changed, 29 insertions(+), 6 deletions(-)
+ CMakeLists.txt | 2 +-
+ COPYING | 3 +--
+ README | 4 ++--
+ configure.ac | 2 +-
+ doc/faq.txt | 2 +-
+ doc/lzma-file-format.txt | 12 ++++++------
+ dos/config.h | 2 +-
+ src/liblzma/api/lzma.h | 2 +-
+ src/xz/xz.1 | 6 +++---
+ src/xzdec/xzdec.1 | 4 ++--
+ windows/README-Windows.txt | 2 +-
+ 11 files changed, 20 insertions(+), 21 deletions(-)
-commit 8fc712fcf41d821069c670f22b8bf628e7a4a877
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-03-16 21:35:55 +0800
+commit a7b9cd70004bfc1abadc7e865dfce765f7b8b59d
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-08 17:07:08 +0300
- Build: Create doxygen/update-doxygen script.
-
- This is a helper script to generate the Doxygen documentation. It can be
- run in 'liblzma' or 'internal' mode by setting the first argument. It
- will default to 'liblzma' mode and only generate documentation for the
- liblzma API header files.
+ xzdec: Tweak coding style and comments.
- The helper script will be run during the custom mydist hook when we
- create releases. This hook already alters the source directory, so its
- fine to do it here too. This way, we can include the Doxygen generated
- files in the distrubtion and when installing.
-
- In 'liblzma' mode, the JavaScript is stripped from the .html files and
- the .js files are removed. This avoids license hassle from jQuery and
- other libraries that Doxygen 1.9.6 puts into jquery.js in minified form.
+ (cherry picked from commit 2739db981023373a2ddabc7b456c7e658bb4f582)
- Makefile.am | 1 +
- doxygen/update-doxygen | 111 +++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 112 insertions(+)
+ src/xzdec/xzdec.c | 32 +++++++++++++++++++++-----------
+ 1 file changed, 21 insertions(+), 11 deletions(-)
-commit 77d2c025d19fbac7277c63239cfb1338f02c66c0
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-03-16 21:34:36 +0800
+commit ebe9d6d8cb27168706078009b3f64da8fde63833
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-04-08 15:53:46 +0300
- Build: Install Doxygen docs and include in distribution if generated.
-
- Added a install-data-local target to install the Doxygen documentation
- only when it has been generated. In order to correctly remove the docs,
- a corresponding uninstall-local target was added.
+ tests/ossfuzz: Tiny fix to a comment.
- If the doxygen docs exist in the source tree, they will also be included
- in the distribution now too.
+ (cherry picked from commit 408b6adb2a07d07c6535f859571cca38837caaf3)
- Makefile.am | 18 ++++++++++++++++++
- 1 file changed, 18 insertions(+)
+ tests/ossfuzz/fuzz_decode_stream.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 9af8f6f947a43974a4ff025f4c896f2fb4c91b4f
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-03 20:37:30 +0800
+commit 78ab47d65d916207233abbcdb0ccfd6efb946c05
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-03-30 14:36:28 +0200
- Doxygen: Refactor Doxyfile.in to doxygen/Doxyfile.
+ CMake: Fix sabotaged Landlock sandbox check.
- Instead of having Doxyfile.in configured by Autoconf, the Doxyfile
- can have the tags that need to be configured piped into the doxygen
- command through stdin with the overrides after Doxyfile's contents.
-
- Going forward, the documentation should be generated in two different
- modes: liblzma or internal.
-
- liblzma is useful for most users. It is the documentation for just
- the liblzma API header files. This is the default.
+ It never enabled it.
- internal is for people who want to understand how xz and liblzma work.
- It might be useful for people who want to contribute to the project.
+ (cherry picked from commit f9cf4c05edd14dedfe63833f8ccbe41b55823b00)
- .gitignore | 3 +-
- Doxyfile.in | 1234 -------------------------
- Makefile.am | 1 -
- configure.ac | 1 -
- doxygen/Doxyfile | 2684 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 5 files changed, 2686 insertions(+), 1237 deletions(-)
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 1c558a26928b753fcf1c0d4bce9c0643285edd86
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-28 23:22:36 +0800
+commit 5f178c364c3b5c6fe87099b7624d5c76995ff8e6
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-05-22 14:08:33 +0300
- Tests: Remove unused macros and functions.
+ Delete SECURITY.md from v5.6
+
+ It's too easily out of date in the stable branches.
+ It's not included in the release packages anyway.
- tests/tests.h | 75 -----------------------------------------------------------
- 1 file changed, 75 deletions(-)
+ .github/SECURITY.md | 29 -----------------------------
+ 1 file changed, 29 deletions(-)
-commit 7479a69a45a1b8fdb9a209e11f247dce11ac1ba0
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-12 22:29:07 +0800
+commit b3a756188004a16de5956c368e3b0efd1a9bccb0
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-03-22 17:46:30 +0200
- Tests: Refactors existing lzma_index tests.
+ liblzma: memcmplen.h: Add a comment why subtraction is used.
- Converts the existing lzma_index tests into tuktests and covers every
- API function from index.h except for lzma_file_info_decoder, which can
- be tested in the future.
+ (cherry picked from commit 0b99783d63f27606936bb79a16c52d0d70c0b56f)
- tests/test_index.c | 2036 ++++++++++++++++++++++++++++++++++++++--------------
- 1 file changed, 1492 insertions(+), 544 deletions(-)
+ src/liblzma/common/memcmplen.h | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
-commit fd56d5353360279c10e8e5e05f5bc6ea03f64584
+commit 94939a145f362ff8b09fb37fc72901743f7f5cb2
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-03-07 19:59:23 +0200
+Date: 2024-03-15 17:43:39 +0200
- xz: Make Capsicum sandbox more strict with stdin and stdout.
+ INSTALL: Document arguments of --enable-symbol-versions.
+
+ (cherry picked from commit 8a25ba024d55610c448c6e4f1400a00bae51b493)
- src/xz/file_io.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
+ INSTALL | 43 +++++++++++++++++++++++++++++++++++++++----
+ 1 file changed, 39 insertions(+), 4 deletions(-)
-commit d1bdaaebc68cae7f0ba457fa990b520df2186fd1
+commit fa14c8aaf0d0266b7e0c3b7c766159299c1a0f18
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-03-11 19:31:40 +0200
+Date: 2024-03-15 17:15:50 +0200
- xz: Don't fail if Capsicum is enabled but kernel doesn't support it.
+ Build: Use only the generic symbol versioning with NVIDIA HPC Compiler.
- (This commit combines related commits from the master branch.)
+ This does the previous commit with CMake.
- If Capsicum support is missing from the kernel or xz is being run
- in an emulator that lacks Capsicum suport, the syscalls will fail
- and set errno to ENOSYS. Previously xz would display and error and
- exit, making xz unusable. Now it will check for ENOSYS and run
- without sandbox support. Other tools like ssh behave similarly.
+ AC_EGREP_CPP uses AC_REQUIRE so the outermost if-commands must
+ be changed to AS_IF to ensure that things wont break some day.
+ See 5a5bd7f871818029d5ccbe189f087f591258c294.
- Displaying a warning for missing Capsicum support was considered
- but such extra output would quickly become annoying. It would also
- break test_scripts.sh in "make check".
-
- Also move cap_enter() to be the first step instead of the last one.
- This matches the example in the cap_rights_limit(2) man page. With
- the current code it shouldn't make any practical difference though.
-
- Thanks to Xin Li for the bug report, suggesting a fix, and testing:
- https://github.com/tukaani-project/xz/pull/43
-
- Thanks to Jia Tan for most of the original commits.
+ (cherry picked from commit 49324b711f9d42b3543bf2f3ae598eaa03360bd5)
- src/xz/file_io.c | 15 ++++++++++++---
- 1 file changed, 12 insertions(+), 3 deletions(-)
+ configure.ac | 18 +++++++++++++-----
+ 1 file changed, 13 insertions(+), 5 deletions(-)
-commit 5d351c69c19d212ddd2cf1f3bdb24900820c6776
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-04 21:06:35 +0800
+commit 73baa8d99b51c7623ed95afe6411302d9ff56864
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-03-15 16:36:35 +0200
- Build: Adjust CMake version search regex.
+ CMake: Use only the generic symbol versioning with NVIDIA HPC Compiler.
- Now, the LZMA_VERSION_MAJOR, LZMA_VERSION_MINOR, and LZMA_VERSION_PATCH
- macros do not need to be on consecutive lines in version.h. They can be
- separated by more whitespace, comments, or even other content, as long
- as they appear in the proper order (major, minor, patch).
-
- CMakeLists.txt | 2 ++
- 1 file changed, 2 insertions(+)
-
-commit b82d4831e3f2339c4cdbc47776c99462088c11b7
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-26 09:50:21 +0800
-
- liblzma: Improve documentation for version.h.
+ It doesn't support the __symver__ attribute or __asm__(".symver ...").
+ The generic symbol versioning can still be used since it only needs
+ linker support.
- Specified parameter and return values for API functions and documented
- a few more of the macros.
+ (cherry picked from commit c273123ed0ebaebf49994057a7fe98aae7f42c40)
- src/liblzma/api/lzma/version.h | 29 ++++++++++++++++++++++-------
- 1 file changed, 22 insertions(+), 7 deletions(-)
+ CMakeLists.txt | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
-commit 2caba3efe3e0c2d7c6dca00e22c56812326a34e6
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-24 23:46:23 +0800
+commit 886633f42376f4648d931917733c8a59fb2e1f6c
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-03-13 21:38:24 +0200
- liblzma: Clarify lzma_lzma_preset() documentation in lzma12.h.
-
- lzma_lzma_preset() does not guarentee that the lzma_options_lzma are
- usable in an encoder even if it returns false (success). If liblzma
- is built with default configurations, then the options will always be
- usable. However if the match finders hc3, hc4, or bt4 are disabled, then
- the options may not be usable depending on the preset level requested.
+ Update THANKS.
- The documentation was updated to reflect this complexity, since this
- behavior was unclear before.
+ (cherry picked from commit df7f487648d18a3992386a59b8a061edca862d17)
- src/liblzma/api/lzma/lzma12.h | 5 +++++
- 1 file changed, 5 insertions(+)
+ THANKS | 1 +
+ 1 file changed, 1 insertion(+)
-commit 594f904673ba55a833adfa60bbab6b60d4902d08
+commit 760f622f0d73632df2347aaca7ac7ff5761e98b6
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-02-27 18:38:35 +0200
+Date: 2024-03-13 21:30:18 +0200
- CMake: Require that the C compiler supports C99 or a newer standard.
+ liblzma: Minor comment edits.
- Thanks to autoantwort for reporting the issue and suggesting
- a different patch:
- https://github.com/tukaani-project/xz/pull/42
+ (cherry picked from commit 3217b82b3ec023bf8338249134a076bea0ea30ec)
- CMakeLists.txt | 8 ++++++++
- 1 file changed, 8 insertions(+)
+ src/liblzma/common/string_conversion.c | 4 ++--
+ src/liblzma/delta/delta_decoder.c | 2 ++
+ 2 files changed, 4 insertions(+), 2 deletions(-)
-commit 88101143cb774bca6b7006c8335b09dc3f334140
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-24 18:10:37 +0800
+commit 403b4c78b81f67bc3787542f55f555407253316c
+Author: Sergey Kosukhin <sergey.kosukhin@mpimet.mpg.de>
+Date: 2024-03-13 13:07:13 +0100
- Tests: Small tweak to test-vli.c.
+ liblzma: Fix building with NVHPC (NVIDIA HPC SDK).
- The static global variables can be disabled if encoders and decoders
- are not built. If they are not disabled and -Werror is used, it will
- cause an usused warning as an error.
+ NVHPC compiler has several issues that make it impossible to
+ build liblzma:
+ - the compiler cannot handle unions that contain pointers that
+ are not the first members;
+ - the compiler cannot handle the assembler code in range_decoder.h
+ (LZMA_RANGE_DECODER_CONFIG has to be set to zero);
+ - the compiler fails to produce valid code for delta_decode if the
+ vectorization is enabled, which results in failed tests.
+
+ This introduces NVHPC-specific workarounds that address the issues.
+
+ (cherry picked from commit 096bc0e3f8fb4bfc4d2f3f64a7f219401ffb4c31)
- tests/test_vli.c | 2 ++
- 1 file changed, 2 insertions(+)
+ src/liblzma/common/string_conversion.c | 6 ++++--
+ src/liblzma/delta/delta_decoder.c | 3 +++
+ src/liblzma/rangecoder/range_decoder.h | 1 +
+ 3 files changed, 8 insertions(+), 2 deletions(-)
-commit 4042dbf03a06e019ccdd1e9d1b94cf613d62d5a9
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-06 21:46:43 +0800
+commit 1888fb49f629340758e98e69d5aa328f6f73c5e1
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-03-13 21:17:10 +0200
- liblzma: Replace '\n' -> newline in filter.h documentation.
+ CMake: Disable symbol versioning on non-glibc Linux.
- The '\n' renders as a newline when the comments are converted to html
- by Doxygen.
+ This better matches what configure.ac does. For example, musl has
+ only basic symbol versioning support:
+
+ https://wiki.musl-libc.org/functional-differences-from-glibc.html#Symbol_versioning
+
+ configure.ac tries to enable symbol versioning only with glibc
+ so now CMake does the same.
+
+ (cherry picked from commit 2ad7fad67080e88fa7fc191f9d613d8b7add9c62)
- src/liblzma/api/lzma/filter.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ CMakeLists.txt | 22 ++++++++++++++++++++--
+ 1 file changed, 20 insertions(+), 2 deletions(-)
-commit 3971f5c5024750ce8286891c6f79ae1661047483
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-06 21:45:37 +0800
+commit 4b3c84e8eebbcf712fc2396dbb8117cce2d72464
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-03-13 20:32:46 +0200
- liblzma: Shorten return description for two functions in filter.h.
+ CMake: Make symbol versioning configurable.
- Shorten the description for lzma_raw_encoder_memusage() and
- lzma_raw_decoder_memusage().
+ (cherry picked from commit 82f0c0d39eb2c026b1d96ee706f70ace868d4ed4)
- src/liblzma/api/lzma/filter.h | 8 ++------
- 1 file changed, 2 insertions(+), 6 deletions(-)
+ CMakeLists.txt | 62 +++++++++++++++++++++++++++++++++++++++-------------------
+ 1 file changed, 42 insertions(+), 20 deletions(-)
-commit 5e61b39432752b6cd1a7b518f0f9e4f0c3f0f242
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-06 21:44:45 +0800
+commit 69d1e20208eb9bd1f4f1c8ee4e49cc82d681a877
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-03-13 19:47:36 +0200
- liblzma: Reword a few lines in filter.h
+ Build: Style tweaks to configure.ac.
+
+ The AC_MSG_ERROR line is overlong anyway as are a few other
+ AC_MSG_ERROR lines already.
+
+ (cherry picked from commit 45d33bfc45e4295b8ad743bc2ae61cc724f98076)
- src/liblzma/api/lzma/filter.h | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
+ configure.ac | 16 +++++++++-------
+ 1 file changed, 9 insertions(+), 7 deletions(-)
-commit 8a53533869defa1191b41f176a0312cb53a139e2
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-06 21:35:06 +0800
+commit 051d6b5c85a874c78249693865fd751088f403a2
+Author: Sergey Kosukhin <sergey.kosukhin@mpimet.mpg.de>
+Date: 2024-03-12 20:03:49 +0100
- liblzma: Improve documentation in filter.h.
+ Build: Let the users override the symbol versioning variant.
- All functions now explicitly specify parameter and return values.
- The notes and code annotations were moved before the parameter and
- return value descriptions for consistency.
+ There are cases when the users want to decide themselves whether
+ they want to have the generic (even on GNU/Linux) or the linux
+ (even if we do not recommend that) symbol versioning variant.
+ The former might be needed to circumvent compiler issues (i.e.
+ the compiler does not support all features that are required
+ for the linux versioning), the latter might help in overriding
+ the assumptions made in the configure script.
- Also, the description above lzma_filter_encoder_is_supported() about
- not being able to list available filters was removed since
- lzma_str_list_filters() will do this.
+ (cherry picked from commit f56ed6fac6619b56b005878d3b5210e2f0d721c0)
- src/liblzma/api/lzma/filter.h | 226 ++++++++++++++++++++++++++----------------
- 1 file changed, 143 insertions(+), 83 deletions(-)
+ configure.ac | 91 +++++++++++++++++++++++++++++++++---------------------------
+ 1 file changed, 50 insertions(+), 41 deletions(-)
-commit 6d05b08b17ac8cb93165ee8f310fdd925b0b258f
+commit 95dcea4b5df0b180af461e4584d2bcf7725e3aef
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-02-23 20:46:16 +0200
+Date: 2024-04-09 18:22:16 +0300
Update THANKS.
THANKS | 1 +
1 file changed, 1 insertion(+)
-commit dfc9a54082e0fc7b3b796ea15336b5075acc79d5
+commit 1107712e372f7593ad729764c0c2644d0e4aa675
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-02-21 22:57:10 +0200
+Date: 2024-04-08 15:32:58 +0300
- liblzma: Avoid null pointer + 0 (undefined behavior in C).
+ Remove the backdoor found in 5.6.0 and 5.6.1 (CVE-2024-3094).
- In the C99 and C17 standards, section 6.5.6 paragraph 8 means that
- adding 0 to a null pointer is undefined behavior. As of writing,
- "clang -fsanitize=undefined" (Clang 15) diagnoses this. However,
- I'm not aware of any compiler that would take advantage of this
- when optimizing (Clang 15 included). It's good to avoid this anyway
- since compilers might some day infer that pointer arithmetic implies
- that the pointer is not NULL. That is, the following foo() would then
- unconditionally return 0, even for foo(NULL, 0):
+ While the backdoor was inactive (and thus harmless) without inserting
+ a small trigger code into the build system when the source package was
+ created, it's good to remove this anyway:
- void bar(char *a, char *b);
+ - The executable payloads were embedded as binary blobs in
+ the test files. This was a blatant violation of the
+ Debian Free Software Guidelines.
- int foo(char *a, size_t n)
- {
- bar(a, a + n);
- return a == NULL;
- }
+ - On machines that see lots bots poking at the SSH port, the backdoor
+ noticeably increased CPU load, resulting in degraded user experience
+ and thus overwhelmingly negative user feedback.
- In contrast to C, C++ explicitly allows null pointer + 0. So if
- the above is compiled as C++ then there is no undefined behavior
- in the foo(NULL, 0) call.
+ - The maintainer who added the backdoor has disappeared.
- To me it seems that changing the C standard would be the sane
- thing to do (just add one sentence) as it would ensure that a huge
- amount of old code won't break in the future. Based on web searches
- it seems that a large number of codebases (where null pointer + 0
- occurs) are being fixed instead to be future-proof in case compilers
- will some day optimize based on it (like making the above foo(NULL, 0)
- return 0) which in the worst case will cause security bugs.
+ - Backdoors are bad for security.
- Some projects don't plan to change it. For example, gnulib and thus
- many GNU tools currently require that null pointer + 0 is defined:
+ This reverts the following without making any other changes:
- https://lists.gnu.org/archive/html/bug-gnulib/2021-11/msg00000.html
+ 6e636819 Tests: Update two test files.
+ a3a29bbd Tests: Test --single-stream can decompress bad-3-corrupt_lzma2.xz.
+ 0b4ccc91 Tests: Update RISC-V test files.
+ 8c9b8b20 liblzma: Fix typos in crc32_fast.c and crc64_fast.c.
+ 82ecc538 liblzma: Fix false Valgrind error report with GCC.
+ cf44e4b7 Tests: Add a few test files.
+ 3060e107 Tests: Use smaller dictionary size in RISC-V test files.
+ e2870db5 Tests: Add two RISC-V Filter test files.
- https://www.gnu.org/software/gnulib/manual/html_node/Other-portability-assumptions.html
+ The RISC-V test files also have real content that tests the filter
+ but the real content would fit into much smaller files. A generator
+ program would need to be available as well.
- In XZ Utils null pointer + 0 issue should be fixed after this
- commit. This adds a few if-statements and thus branches to avoid
- null pointer + 0. These check for size > 0 instead of ptr != NULL
- because this way bugs where size > 0 && ptr == NULL will likely
- get caught quickly. None of them are in hot spots so it shouldn't
- matter for performance.
-
- A little less readable version would be replacing
-
- ptr + offset
-
- with
-
- offset != 0 ? ptr + offset : ptr
-
- or creating a macro for it:
-
- #define my_ptr_add(ptr, offset) \
- ((offset) != 0 ? ((ptr) + (offset)) : (ptr))
-
- Checking for offset != 0 instead of ptr != NULL allows GCC >= 8.1,
- Clang >= 7, and Clang-based ICX to optimize it to the very same code
- as ptr + offset. That is, it won't create a branch. So for hot code
- this could be a good solution to avoid null pointer + 0. Unfortunately
- other compilers like ICC 2021 or MSVC 19.33 (VS2022) will create a
- branch from my_ptr_add().
-
- Thanks to Marcin Kowalczyk for reporting the problem:
- https://github.com/tukaani-project/xz/issues/36
+ Thanks to Andres Freund for finding and reporting it and making
+ it public quickly so others could act without a delay.
+ See: https://www.openwall.com/lists/oss-security/2024/03/29/4
- src/liblzma/common/block_decoder.c | 5 ++++-
- src/liblzma/common/block_encoder.c | 7 +++++--
- src/liblzma/common/common.c | 20 ++++++++++++++------
- src/liblzma/common/index_decoder.c | 13 ++++++++++---
- src/liblzma/common/index_encoder.c | 11 +++++++++--
- src/liblzma/common/index_hash.c | 13 ++++++++++---
- src/liblzma/common/lzip_decoder.c | 6 +++++-
- src/liblzma/delta/delta_decoder.c | 7 ++++++-
- src/liblzma/delta/delta_encoder.c | 12 ++++++++++--
- src/liblzma/simple/simple_coder.c | 6 ++++--
- 10 files changed, 77 insertions(+), 23 deletions(-)
+ src/liblzma/check/crc32_fast.c | 7 +++++--
+ src/liblzma/check/crc64_fast.c | 4 +++-
+ src/liblzma/check/crc_common.h | 25 -------------------------
+ tests/files/README | 27 ---------------------------
+ tests/files/bad-3-corrupt_lzma2.xz | Bin 512 -> 0 bytes
+ tests/files/bad-dict_size.lzma | Bin 41 -> 0 bytes
+ tests/files/good-1-riscv-lzma2-1.xz | Bin 7424 -> 0 bytes
+ tests/files/good-1-riscv-lzma2-2.xz | Bin 7432 -> 0 bytes
+ tests/files/good-2cat.xz | Bin 136 -> 0 bytes
+ tests/files/good-large_compressed.lzma | Bin 35421 -> 0 bytes
+ tests/files/good-small_compressed.lzma | Bin 258 -> 0 bytes
+ tests/test_files.sh | 11 -----------
+ 12 files changed, 8 insertions(+), 66 deletions(-)
-commit f6dce49cb656b358e2fb2a3032e35e20af34dc84
+commit fd1b975b7851e081ed6e5cf63df946cd5cbdbb94
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-07 00:00:44 +0800
+Date: 2024-03-09 11:42:50 +0800
- liblzma: Adjust container.h for consistency with filter.h.
+ Bump version and soname for 5.6.1.
- src/liblzma/api/lzma/container.h | 20 +++++++++-----------
- 1 file changed, 9 insertions(+), 11 deletions(-)
+ src/liblzma/Makefile.am | 2 +-
+ src/liblzma/api/lzma/version.h | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
-commit 173d240bb4763aedc8c01df4d9c83e311d954c33
+commit a2cda572498e96163fe4e2bde096d5dd7b814668
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-07 00:00:09 +0800
+Date: 2024-03-09 11:27:27 +0800
- liblzma: Fix small typos and reword a few things in filter.h.
+ Add NEWS for 5.6.1
- src/liblzma/api/lzma/container.h | 13 ++++++-------
- 1 file changed, 6 insertions(+), 7 deletions(-)
+ NEWS | 26 ++++++++++++++++++++++++++
+ 1 file changed, 26 insertions(+)
-commit 17797bacde3f7264048ef0976c137a600148d6cf
+commit 8583c6021124e388bce044a09f00ebabfd6165a7
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-06 23:42:08 +0800
+Date: 2024-03-09 10:43:20 +0800
- liblzma: Convert list of flags in lzma_mt to bulleted list.
+ Translations: Add missing --riscv option to man page translations.
- src/liblzma/api/lzma/container.h | 9 ++++++---
- 1 file changed, 6 insertions(+), 3 deletions(-)
+ po4a/de.po | 702 +++++++++++++++++++++++++++++-----------------------------
+ po4a/fr.po | 549 ++++++++++++++++++++++-----------------------
+ po4a/ko.po | 702 +++++++++++++++++++++++++++++-----------------------------
+ po4a/pt_BR.po | 641 +++++++++++++++++++++++++++--------------------------
+ po4a/ro.po | 702 +++++++++++++++++++++++++++++-----------------------------
+ po4a/uk.po | 702 +++++++++++++++++++++++++++++-----------------------------
+ 6 files changed, 2024 insertions(+), 1974 deletions(-)
-commit 37da0e727161b401b8bfd8dccf163a4b2fc0460b
+commit 74b138d2a6529f2c07729d7c77b1725a8e8b16f1
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-26 23:17:41 +0800
+Date: 2024-03-09 10:18:29 +0800
- liblzma: Fix typo in documentation in container.h
+ Tests: Update two test files.
- lzma_microlzma_decoder -> lzma_microlzma_encoder
+ The original files were generated with random local to my machine.
+ To better reproduce these files in the future, a constant seed was used
+ to recreate these files.
- src/liblzma/api/lzma/container.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ tests/files/bad-3-corrupt_lzma2.xz | Bin 484 -> 512 bytes
+ tests/files/good-large_compressed.lzma | Bin 35430 -> 35421 bytes
+ 2 files changed, 0 insertions(+), 0 deletions(-)
-commit b8331077c626e6bf14f4671d09b561146eaf816a
+commit 3ec6dfd656bdd40ede2a5f11e6be338988e38be4
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-26 23:16:34 +0800
+Date: 2024-03-09 10:08:32 +0800
- liblzma: Improve documentation for container.h
+ Tests: Test --single-stream can decompress bad-3-corrupt_lzma2.xz.
- Standardizing each function to always specify parameters and return
- values. Also moved the parameters and return values to the end of each
- function description.
+ The first stream in this file is valid, so this tests that xz properly
+ stops after decompressing it.
- src/liblzma/api/lzma/container.h | 146 +++++++++++++++++++++++++--------------
- 1 file changed, 93 insertions(+), 53 deletions(-)
+ tests/test_files.sh | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
-commit b9a3511bb61d3b6ce49abd33dce6155a573f5272
+commit a67dcce6109c2f932a0a86abb0d7a95d3c31fb3e
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-22 20:59:41 +0800
-
- CMake: Add LZIP decoder test to list of tests.
-
- CMakeLists.txt | 1 +
- 1 file changed, 1 insertion(+)
-
-commit cd82ef2fb48b174c57cd03b84a9a0f978772cb89
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-02-17 20:56:49 +0200
-
- Update THANKS.
-
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
-
-commit 076e911ba25cadf2cbdfbd0f65991a002e210c0b
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-02-17 20:48:28 +0200
+Date: 2024-03-09 10:05:32 +0800
- Build: Use only the generic symbol versioning on MicroBlaze.
-
- On MicroBlaze, GCC 12 is broken in sense that
- __has_attribute(__symver__) returns true but it still doesn't
- support the __symver__ attribute even though the platform is ELF
- and symbol versioning is supported if using the traditional
- __asm__(".symver ...") method. Avoiding the traditional method is
- good because it breaks LTO (-flto) builds with GCC.
+ Tests: Update RISC-V test files.
- See also: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101766
-
- For now the only extra symbols in liblzma_linux.map are the
- compatibility symbols with the patch that spread from RHEL/CentOS 7.
- These require the use of __symver__ attribute or __asm__(".symver ...")
- in the C code. Compatibility with the patch from CentOS 7 doesn't
- seem valuable on MicroBlaze so use liblzma_generic.map on MicroBlaze
- instead. It doesn't require anything special in the C code and thus
- no LTO issues either.
-
- An alternative would be to detect support for __symver__
- attribute in configure.ac and CMakeLists.txt and fall back
- to __asm__(".symver ...") but then LTO would be silently broken
- on MicroBlaze. It sounds likely that MicroBlaze is a special
- case so let's treat it as a such because that is simpler. If
- a similar issue exists on some other platform too then hopefully
- someone will report it and this can be reconsidered.
-
- (This doesn't do the same fix in CMakeLists.txt. Perhaps it should
- but perhaps CMake build of liblzma doesn't matter much on MicroBlaze.
- The problem breaks the build so it's easy to notice and can be fixed
- later.)
-
- Thanks to Vincent Fazio for reporting the problem and proposing
- a patch (in the end that solution wasn't used):
- https://github.com/tukaani-project/xz/pull/32
-
- configure.ac | 12 ++++++++++--
- 1 file changed, 10 insertions(+), 2 deletions(-)
-
-commit bc34e5ac9996667d2c1ec9a7895ec5931ac4caea
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-02-16 21:09:00 +0200
+ This increases code coverage and tests for possible shifting bugs.
- liblzma: Very minor API doc tweaks.
-
- Use "member" to refer to struct members as that's the term used
- by the C standard.
-
- Use lzma_options_delta.dist and such in docs so that in Doxygen's
- HTML output they will link to the doc of the struct member.
-
- Clean up a few trailing white spaces too.
-
- src/liblzma/api/lzma/block.h | 6 +++---
- src/liblzma/api/lzma/delta.h | 6 +++---
- src/liblzma/api/lzma/index.h | 10 +++++-----
- src/liblzma/api/lzma/stream_flags.h | 6 +++---
- 4 files changed, 14 insertions(+), 14 deletions(-)
+ tests/files/good-1-riscv-lzma2-1.xz | Bin 7512 -> 7424 bytes
+ tests/files/good-1-riscv-lzma2-2.xz | Bin 7512 -> 7432 bytes
+ 2 files changed, 0 insertions(+), 0 deletions(-)
-commit d31fbd28be5b79eb682db50004b0fb7aad5299ec
+commit 058337b0f1da9f166049ecc972fa5c499c1af08c
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-17 00:54:33 +0800
+Date: 2024-03-09 09:52:32 +0800
- liblzma: Adjust spacing in doc headers in bcj.h.
+ liblzma: Fix typos in crc32_fast.c and crc64_fast.c.
- src/liblzma/api/lzma/bcj.h | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
+ src/liblzma/check/crc32_fast.c | 4 ++--
+ src/liblzma/check/crc64_fast.c | 3 +--
+ 2 files changed, 3 insertions(+), 4 deletions(-)
-commit 701e9be6bede19771895f756082db0c017f86f07
+commit cd5de9c1bbab3dd41b34b37a89c193fb6ff51ca5
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-17 00:44:44 +0800
+Date: 2024-03-09 09:49:55 +0800
- liblzma: Adjust documentation in bcj.h for consistent style.
+ Tests: Replace HAVE_MICROLZMA usage in CMake and Autotools builds.
+
+ This reverts commit adaacafde6661496ca2814b1e94a3ba5186428cb.
- src/liblzma/api/lzma/bcj.h | 43 ++++++++++++++++++++++---------------------
- 1 file changed, 22 insertions(+), 21 deletions(-)
+ CMakeLists.txt | 15 ++++++++++-----
+ configure.ac | 9 ++-------
+ tests/Makefile.am | 9 ++++++---
+ tests/test_microlzma.c | 12 ++++--------
+ 4 files changed, 22 insertions(+), 23 deletions(-)
-commit 762c4d0b62d2694cf3a01e030fdfe68e09e7b503
+commit 651a1545c8b6150051a0b44857136efd419afc6f
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-17 00:36:05 +0800
+Date: 2024-03-09 09:20:57 +0800
- liblzma: Rename field => member in documentation.
+ liblzma: Fix false Valgrind error report with GCC.
- Also adjusted preset value => preset level.
+ With GCC and a certain combination of flags, Valgrind will falsely
+ trigger an invalid write. This appears to be due to the omission of
+ instructions to properly save, set up, and restore the frame pointer.
+
+ The IFUNC resolver is a leaf function since it only calls a function
+ that is inlined. So sometimes GCC omits the frame pointer instructions
+ in the resolver unless this optimization is explictly disabled.
+
+ This fixes https://bugzilla.redhat.com/show_bug.cgi?id=2267598.
- src/liblzma/api/lzma/base.h | 18 +++++++--------
- src/liblzma/api/lzma/block.h | 44 ++++++++++++++++++-------------------
- src/liblzma/api/lzma/container.h | 26 +++++++++++-----------
- src/liblzma/api/lzma/delta.h | 12 +++++-----
- src/liblzma/api/lzma/index.h | 30 ++++++++++++-------------
- src/liblzma/api/lzma/lzma12.h | 28 +++++++++++------------
- src/liblzma/api/lzma/stream_flags.h | 32 +++++++++++++--------------
- 7 files changed, 95 insertions(+), 95 deletions(-)
+ src/liblzma/check/crc32_fast.c | 9 +++------
+ src/liblzma/check/crc64_fast.c | 7 +++----
+ src/liblzma/check/crc_common.h | 25 +++++++++++++++++++++++++
+ 3 files changed, 31 insertions(+), 10 deletions(-)
-commit 0ce1db0223854d94b4a0d17737ac0486a75d9e6a
+commit 6e97b299f1b22e366ec42ba5dc5b9d0746e87b84
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-02-16 17:59:50 +0200
+Date: 2024-03-05 23:21:26 +0200
- liblzma: Silence a warning from MSVC.
-
- It gives C4146 here since unary minus with unsigned integer
- is still unsigned (which is the intention here). Doing it
- with substraction makes it clearer and avoids the warning.
-
- Thanks to Nathan Moinvaziri for reporting this.
+ liblzma: Fix a typo in a comment in the RISC-V filter.
- src/liblzma/check/crc64_fast.c | 2 +-
+ src/liblzma/simple/riscv.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-commit d83da006b3e8dbad9112e6cde6b27049d193c9ec
+commit 4e1c97052b5f14f4d6dda99d12cbbd01e66e3712
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-16 21:04:54 +0800
+Date: 2024-03-05 00:34:46 +0800
- liblzma: Improve documentation for stream_flags.h
+ liblzma: Use attribute no_profile_instrument_function with ifunc.
- Standardizing each function to always specify parameters and return
- values. Also moved the parameters and return values to the end of each
- function description.
-
- A few small things were reworded and long sentences broken up.
+ Thanks to Sam James for determining this was the attribute needed to
+ workaround the GCC bug and for his version of the patch in Gentoo.
- src/liblzma/api/lzma/stream_flags.h | 76 ++++++++++++++++++++++---------------
- 1 file changed, 46 insertions(+), 30 deletions(-)
+ src/liblzma/check/crc32_fast.c | 5 +++++
+ src/liblzma/check/crc64_fast.c | 3 +++
+ 2 files changed, 8 insertions(+)
-commit 2796bb4736f645d34939b5d62d5958f534e41e69
+commit ed957d39426695e948b06de0ed952a2fbbe84bd1
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-14 21:50:16 +0800
+Date: 2024-03-05 00:27:31 +0800
- liblzma: Improve documentation in lzma12.h.
+ Build: Require attribute no_profile_instrument_function for ifunc usage.
- All functions now explicitly specify parameter and return values.
-
- src/liblzma/api/lzma/lzma12.h | 32 +++++++++++++++++++++++---------
- 1 file changed, 23 insertions(+), 9 deletions(-)
-
-commit ebebaa8d9381afea440eb1b01917117551adf68f
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-27 22:44:06 +0800
-
- liblzma: Improve documentation in check.h.
+ Using __attribute__((__no_profile_instrument_function__)) on the ifunc
+ resolver works around a bug in GCC -fprofile-generate:
+ it adds profiling code even to ifunc resolvers which can make
+ the ifunc resolver crash at program startup. This attribute
+ was not introduced until GCC 7 and Clang 13, so ifunc won't
+ be used with prior versions of these compilers.
- All functions now explicitly specify parameter and return values.
- Also moved the note about SHA-256 functions not being exported to the
- top of the file.
-
- src/liblzma/api/lzma/check.h | 41 ++++++++++++++++++++++++++++-------------
- 1 file changed, 28 insertions(+), 13 deletions(-)
-
-commit 765fa2865aab97ea713c1715922e322b3cf599a7
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-08 21:33:52 +0800
-
- liblzma: Improve documentation in index.h
+ This bug was brought to our attention by:
- All functions now explicitly specify parameter and return values.
+ https://bugs.gentoo.org/925415
+
+ And was reported to upstream GCC by:
+
+ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=11411
- src/liblzma/api/lzma/index.h | 177 ++++++++++++++++++++++++++++++-------------
- 1 file changed, 126 insertions(+), 51 deletions(-)
+ CMakeLists.txt | 7 +++++++
+ configure.ac | 7 +++++++
+ 2 files changed, 14 insertions(+)
-commit 918e208af5960728b6def01e692b395f7d8e3701
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-08 20:35:32 +0800
+commit e98ddaf85a1a8fb3cc863637f83356cc9db31e13
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-03-04 19:23:18 +0200
- liblzma: Reword a comment in index.h.
+ liblzma: Fix a comment in the RISC-V filter.
- src/liblzma/api/lzma/index.h | 4 ++--
+ src/liblzma/simple/riscv.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-commit 1f157d214bc09338876d2467b549935679abc0bf
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-08 20:30:23 +0800
+commit 319cec142f67fe294e0486402f1569f223d9a83d
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-29 16:35:52 +0200
- liblzma: Omit lzma_index_iter's internal field from Doxygen docs.
-
- Add \private above this field and its sub-fields since it is not meant
- to be modified by users.
+ CMake: Warn if translated man pages are missing.
- src/liblzma/api/lzma/index.h | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
+ CMakeLists.txt | 9 +++++++++
+ 1 file changed, 9 insertions(+)
-commit 28757fa46d8e0f0a9c17628b2b6af9bcb3cd96fc
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-21 21:32:03 +0800
+commit 46c3e113d8eeb1a731a60829fa7f5d1b519f7f26
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-29 16:35:52 +0200
- liblzma: Fix documentation for LZMA_MEMLIMIT_ERROR.
+ CMake: Warn if gettext tools and pre-created .gmo files are missing.
- LZMA_MEMLIMIT_ERROR was missing the "<" character needed to put
- documentation after a member.
-
- src/liblzma/api/lzma/base.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 135d5a1a65a9e199b9a5550c1f788cf43cd81018
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-21 00:29:38 +0800
-
- liblzma: Improve documentation for base.h.
+ It's only done with CMake >= 3.20 and if library support
+ for translation was already found.
- Standardizing each function to always specify params and return values.
- Also fixed a small grammar mistake.
+ Sort of fixes: https://github.com/tukaani-project/xz/issues/82
- src/liblzma/api/lzma/base.h | 30 +++++++++++++++++++++++++-----
- 1 file changed, 25 insertions(+), 5 deletions(-)
+ CMakeLists.txt | 25 +++++++++++++++++++++++++
+ 1 file changed, 25 insertions(+)
-commit 2287d5668384e289d51e72724997dc920483768e
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-14 00:08:33 +0800
+commit 86bec8334bb1dcb6d9293a11cdccd895b17f364b
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-28 18:26:25 +0200
- liblzma: Minor improvements to vli.h.
-
- Added [out] annotations to parameters that are pointers and can have
- their value changed. Also added a clarification to lzma_vli_is_valid.
+ xz: Add comments.
- src/liblzma/api/lzma/vli.h | 15 ++++++++-------
- 1 file changed, 8 insertions(+), 7 deletions(-)
+ src/xz/coder.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
-commit 7124b8a16ae60cb2e93218ff531868eebd673bde
+commit 5c91b454c24e043ca8f2cc7d2b09bd091dafe655
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-10 21:38:02 +0800
+Date: 2024-02-27 23:42:41 +0800
- liblzma: Add comments for macros in delta.h.
+ xz: Change logging level for thread reduction to highest verbosity only.
- Document LZMA_DELTA_DIST_MIN and LZMA_DELTA_DIST_MAX for completeness
- and to avoid Doxygen warnings.
-
- src/liblzma/api/lzma/delta.h | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-commit 59c7bb8931159fdb1a31bbbeaed0e6984e2d3c81
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-10 21:35:23 +0800
-
- liblzma: Improve documentation in index_hash.h.
+ Now that multi threaded encoding is the default, users do not need to
+ see a warning message everytime the number of threads is reduced. On
+ some machines, this could happen very often. It is not unreasonable for
+ users to need to set double verbose mode to see this kind of
+ information.
- All functions now explicitly specify parameter and return values.
- Also reworded the description of lzma_index_hash_init() for readability.
+ To see these warning messages -vv or --verbose --verbose must be passed
+ to set xz into the highest possible verbosity mode.
+
+ These warnings had caused automated testing frameworks to fail when they
+ expected no output to stderr.
+
+ Thanks to Sebastian Andrzej Siewior for reporting this and for the
+ initial version of the patch.
- src/liblzma/api/lzma/index_hash.h | 36 +++++++++++++++++++++++++++---------
- 1 file changed, 27 insertions(+), 9 deletions(-)
+ src/xz/coder.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit e970c28ac3cb2e8051925f81db2fe953664c2645
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-03 00:33:32 +0800
+commit d0e57b2f159f8fd03a9a89f2f593a768d0487898
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-26 23:06:13 +0200
- liblzma: Fix bug in lzma_str_from_filters() not checking filters[] length.
-
- The bug is only a problem in applications that do not properly terminate
- the filters[] array with LZMA_VLI_UNKNOWN or have more than
- LZMA_FILTERS_MAX filters. This bug does not affect xz.
+ Fix sorting in THANKS.
- src/liblzma/common/string_conversion.c | 7 +++++++
- 1 file changed, 7 insertions(+)
+ THANKS | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit 85e01266a96689448abb249da6c6abc3afcd4a4e
+commit d416be55ac02af1144fed455fb18b710147bb490
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-03 00:32:47 +0800
+Date: 2024-02-26 23:39:29 +0800
- Tests: Create test_filter_str.c.
-
- Tests lzma_str_to_filters(), lzma_str_from_filters(), and
- lzma_str_list_filters() API functions.
+ Update THANKS.
- CMakeLists.txt | 1 +
- tests/Makefile.am | 2 +
- tests/test_filter_str.c | 593 ++++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 596 insertions(+)
+ THANKS | 1 +
+ 1 file changed, 1 insertion(+)
-commit 3fa0f3ba12dd3383f62dbfa18a864f9b4217fa0a
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-22 08:49:00 +0800
+commit f06b33edd2aeabdb11836a2bf0b681768dad29d3
+Author: Chien Wong <m@xv97.com>
+Date: 2024-02-25 21:38:13 +0800
- liblzma: Fix typos in comments in string_conversion.c.
+ xz: Add missing RISC-V on the filter list in the man page
+
+ Signed-off-by: Chien Wong <m@xv97.com>
- src/liblzma/common/string_conversion.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ src/xz/xz.1 | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
-commit 32dbe045d74e94f75c53236fa2a6c0454d7b6d9e
+commit a100f9111c8cc7f5b5f0e4a5e8af3de7161c7975
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-03 00:20:20 +0800
+Date: 2024-02-26 23:02:06 +0800
- liblzma: Clarify block encoder and decoder documentation.
+ Build: Fix Linux Landlock feature test in Autotools and CMake builds.
- Added a few sentences to the description for lzma_block_encoder() and
- lzma_block_decoder() to highlight that the Block Header must be coded
- before calling these functions.
+ The previous Linux Landlock feature test assumed that having the
+ linux/landlock.h header file was enough. The new feature tests also
+ requires that prctl() and the required Landlock system calls are
+ supported.
- src/liblzma/api/lzma/block.h | 15 +++++++++++----
- 1 file changed, 11 insertions(+), 4 deletions(-)
+ CMakeLists.txt | 25 ++++++++++++++++++++++---
+ configure.ac | 27 ++++++++++++++++++++++++++-
+ src/xz/sandbox.c | 2 +-
+ src/xz/sandbox.h | 2 +-
+ src/xzdec/xzdec.c | 8 ++++----
+ 5 files changed, 54 insertions(+), 10 deletions(-)
-commit ccf12acbfa7331b1bbb99ec55879186eb35f879f
+commit d85efdc8911e6e8964ec920af44c8a6fe0a4c3c2
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-03 00:12:24 +0800
+Date: 2024-02-26 20:06:10 +0800
- Update lzma_block documentation for lzma_block_uncomp_encode().
+ Tests: Add test_microlzma to .gitignore and CMakeLists.txt.
- src/liblzma/api/lzma/block.h | 3 +++
- 1 file changed, 3 insertions(+)
+ .gitignore | 1 +
+ CMakeLists.txt | 1 +
+ 2 files changed, 2 insertions(+)
-commit 6a0b168dd9dc1ef437255c4bfdc6eff8b96fdb24
+commit 42ee4256739779005a7f921946c8a8e483d1f2ed
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-03 00:11:37 +0800
+Date: 2024-02-26 19:56:25 +0800
- liblzma: Minor edits to lzma_block header_size documentation.
+ Tests: Correct license header in test_microlzma.c.
- src/liblzma/api/lzma/block.h | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
+ tests/test_microlzma.c | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
-commit 84ce36f90e68471fec1f0e61cd93ac7ed9ab4883
+commit c83349dfd9cf9c495005b6d30e2fd34a9cafc18a
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-03 00:11:07 +0800
+Date: 2024-02-25 21:41:55 +0800
- liblzma: Enumerate functions that read version in lzma_block.
+ Fix typos in NEWS and CMakeLists.
- src/liblzma/api/lzma/block.h | 13 +++++++++++--
- 1 file changed, 11 insertions(+), 2 deletions(-)
+ CMakeLists.txt | 2 +-
+ NEWS | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
-commit d6620774682830d606f57109861b6763805b3492
+commit 2d7d862e3ffa8cec4fd3fdffcd84e984a17aa429
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-03 00:10:34 +0800
+Date: 2024-02-24 15:55:08 +0800
- liblzma: Clarify comment in block.h.
+ Bump version and soname for 5.6.0.
- src/liblzma/api/lzma/block.h | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
+ src/liblzma/Makefile.am | 2 +-
+ src/liblzma/api/lzma/version.h | 6 +++---
+ src/liblzma/liblzma_generic.map | 2 +-
+ src/liblzma/liblzma_linux.map | 2 +-
+ 4 files changed, 6 insertions(+), 6 deletions(-)
-commit 880adb5aa25f66a53d81c2f3acc716f7a4d373d1
+commit a18fb1edef0d0aac12a09eed05e9c448c777af7b
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-03 00:07:23 +0800
+Date: 2024-02-24 15:50:36 +0800
- liblzma: Improve documentation for block.h.
-
- Standardizing each function to always specify params and return values.
- Output pointer parameters are also marked with doxygen style [out] to
- make it clear. Any note sections were also moved above the parameter and
- return sections for consistency.
+ Add NEWS for 5.6.0.
- src/liblzma/api/lzma/block.h | 96 ++++++++++++++++++++++++++++++++++----------
- 1 file changed, 75 insertions(+), 21 deletions(-)
+ NEWS | 143 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 143 insertions(+)
-commit b5b1b1f061c342271e4977ce5cba604a19c0ca52
+commit 24355c5280bc95e3d594432d60bb8432aa6af173
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-02-01 23:38:30 +0800
+Date: 2024-02-22 22:27:01 +0800
- liblzma: Clarify a comment about LZMA_STR_NO_VALIDATION.
+ Translations: Remove obsolete and fuzzy matches from some translations.
- The flag description for LZMA_STR_NO_VALIDATION was previously confusing
- about the treatment for filters than cannot be used with .xz format
- (lzma1) without using LZMA_STR_ALL_FILTERS. Now, it is clear that
- LZMA_STR_NO_VALIDATION is not a super set of LZMA_STR_ALL_FILTERS.
+ The French and Brazilian Portuguese man page translations have not been
+ updated since the switch from public domain to 0BSD. The old GPLv2
+ strings have now been removed from these files.
- src/liblzma/api/lzma/filter.h | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
+ po4a/fr.po | 4702 +++++++++++++++++++++++++++++++++++++----------------
+ po4a/pt_BR.po | 4987 ++++++++++++++++++++++++++++++++++++++++-----------------
+ 2 files changed, 6832 insertions(+), 2857 deletions(-)
-commit e904e778b82b14f2779aab80d6c8f3c01a3fc54b
+commit 02ca4a7d7b703e2ec63e00b70feec825e919dbc1
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-27 20:14:51 +0800
+Date: 2024-02-21 00:31:54 +0800
- Translations: Add Brazilian Portuguese translation of man pages.
+ Translations: Patch man pages to avoid fuzzy matches.
- Thanks to Rafael Fontenelle.
+ This will be fixed in the next round of translations, but this avoids
+ having a fuzzy match or not fixing the English version.
- po4a/po4a.conf | 2 +-
- po4a/pt_BR.po | 3677 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 3678 insertions(+), 1 deletion(-)
+ po4a/de.po | 2 +-
+ po4a/ko.po | 2 +-
+ po4a/ro.po | 2 +-
+ po4a/uk.po | 2 +-
+ 4 files changed, 4 insertions(+), 4 deletions(-)
-commit e9c47e79c9584ba1126f5fa0dbe6c96e67411aa6
+commit 898aad9fc711e03452d24d9e2c5b7f77a6f9ce64
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-24 20:48:50 +0800
+Date: 2024-02-21 00:30:43 +0800
- liblzma: Fix documentation in filter.h for lzma_str_to_filters()
+ xzmore: Fix typo in xzmore.1.
- The previous documentation for lzma_str_to_filters() was technically
- correct, but misleading. lzma_str_to_filters() returns NULL on success,
- which is in practice always defined to 0. This is the same value as
- LZMA_OK, but lzma_str_to_filters() does not return lzma_ret so we should
- be more clear.
+ Thanks to Yuri Chornoivan.
- src/liblzma/api/lzma/filter.h | 2 +-
+ src/scripts/xzmore.1 | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-commit 99575947a58a60416c570eb78038d18a1ea4cef4
+commit 5631aa206c8d16b4eeab85a46b8b698f4fc4cdba
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-07 21:55:06 +0800
+Date: 2024-02-24 12:12:16 +0800
- xz: Refactor duplicated check for custom suffix when using --format=raw
+ Translations: Update the Vietnamese translation.
- src/xz/args.c | 8 ++++++++
- src/xz/suffix.c | 26 ++++++++------------------
- src/xz/suffix.h | 8 ++++++++
- 3 files changed, 24 insertions(+), 18 deletions(-)
+ po/vi.po | 505 ++++++++++++++++++++++++++++++++++++++-------------------------
+ 1 file changed, 309 insertions(+), 196 deletions(-)
-commit 76dec92fcca4a9ccd2063ed6d5d9e3474665baad
+commit a65fd7ce9d6228e87faf61dc56a35984d0088248
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-20 21:53:14 +0800
+Date: 2024-02-24 12:06:40 +0800
- liblzma: Set documentation on all reserved fields to private.
-
- This prevents the reserved fields from being part of the generated
- Doxygen documentation.
+ Translations: Update the Esperanto translation.
- src/liblzma/api/lzma/base.h | 17 +++++++++++++++
- src/liblzma/api/lzma/block.h | 43 +++++++++++++++++++++++++++++++++++++
- src/liblzma/api/lzma/container.h | 24 +++++++++++++++++++++
- src/liblzma/api/lzma/delta.h | 12 +++++++++++
- src/liblzma/api/lzma/index.h | 27 +++++++++++++++++++++++
- src/liblzma/api/lzma/lzma12.h | 22 +++++++++++++++++++
- src/liblzma/api/lzma/stream_flags.h | 28 ++++++++++++++++++++++++
- 7 files changed, 173 insertions(+)
+ po/eo.po | 502 ++++++++++++++++++++++++++++++++++++++-------------------------
+ 1 file changed, 306 insertions(+), 196 deletions(-)
-commit bd213d06ebf92cf42eeb97e7c578bddc857f8ea8
+commit cf44e4b7f5dfdbf8c78aef377c10f71e274f63c0
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-12-21 23:59:43 +0800
+Date: 2024-02-23 23:09:59 +0800
- liblzma: Highlight liblzma API headers should not be included directly.
-
- This improves the generated Doxygen HTML files to better highlight
- how to properly use the liblzma API header files.
+ Tests: Add a few test files.
- src/liblzma/api/lzma/base.h | 5 +++--
- src/liblzma/api/lzma/bcj.h | 5 +++--
- src/liblzma/api/lzma/block.h | 5 +++--
- src/liblzma/api/lzma/check.h | 5 +++--
- src/liblzma/api/lzma/container.h | 5 +++--
- src/liblzma/api/lzma/delta.h | 5 +++--
- src/liblzma/api/lzma/filter.h | 5 +++--
- src/liblzma/api/lzma/hardware.h | 5 +++--
- src/liblzma/api/lzma/index.h | 5 +++--
- src/liblzma/api/lzma/index_hash.h | 5 +++--
- src/liblzma/api/lzma/lzma12.h | 5 +++--
- src/liblzma/api/lzma/stream_flags.h | 5 +++--
- src/liblzma/api/lzma/version.h | 5 +++--
- src/liblzma/api/lzma/vli.h | 5 +++--
- 14 files changed, 42 insertions(+), 28 deletions(-)
+ tests/files/README | 19 +++++++++++++++++++
+ tests/files/bad-3-corrupt_lzma2.xz | Bin 0 -> 484 bytes
+ tests/files/bad-dict_size.lzma | Bin 0 -> 41 bytes
+ tests/files/good-2cat.xz | Bin 0 -> 136 bytes
+ tests/files/good-large_compressed.lzma | Bin 0 -> 35430 bytes
+ tests/files/good-small_compressed.lzma | Bin 0 -> 258 bytes
+ 6 files changed, 19 insertions(+)
-commit 257dbff0ba1a7bc45a74d203ece015c9f70c88cd
+commit 39f4a1a86ad80b2d064b812cee42668e6c8b8c73
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-19 20:35:09 +0800
+Date: 2024-02-23 20:58:36 +0800
- tuklib_physmem: Silence warning from -Wcast-function-type on MinGW-w64.
-
- tuklib_physmem depends on GetProcAddress() for both MSVC and MinGW-w64
- to retrieve a function address. The proper way to do this is to cast the
- return value to the type of function pointer retrieved. Unfortunately,
- this causes a cast-function-type warning, so the best solution is to
- simply ignore the warning.
+ Tests: Add MicroLZMA test.
- src/common/tuklib_physmem.c | 18 ++++++++++++++++++
- 1 file changed, 18 insertions(+)
+ tests/Makefile.am | 4 +-
+ tests/test_microlzma.c | 548 +++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 551 insertions(+), 1 deletion(-)
-commit 720ad4a44282a7ee59aa9920eaf495d85d245d97
+commit adaacafde6661496ca2814b1e94a3ba5186428cb
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-16 21:35:45 +0800
+Date: 2024-02-23 20:57:59 +0800
- xz: Add missing comment for coder_set_compression_settings()
+ Build: Define HAVE_MICROLZMA when it is configured.
- src/xz/coder.h | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
+ CMakeLists.txt | 4 ++++
+ configure.ac | 9 +++++++--
+ 2 files changed, 11 insertions(+), 2 deletions(-)
-commit 88dc19163421282369c0989e997c05f9a447edc6
+commit eea78216d27182ca917bf00e02feaab058a4d21e
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-16 20:55:10 +0800
+Date: 2024-02-23 20:27:15 +0800
- xz: Do not set compression settings with raw format in list mode.
+ xz: Fix Capsicum sandbox compile error.
- Calling coder_set_compression_settings() in list mode with verbose mode
- on caused the filter chain and memory requirements to print. This was
- unnecessary since the command results in an error and not consistent
- with other formats like lzma and alone.
+ user_abort_pipe[] was still being used instead of the parameters.
- src/xz/args.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
+ src/xz/sandbox.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit 039e0ab13efb144642f9d99eeeb9c668e76bb430
+commit 32b0a3ce19224f9074d01a4ffbc1655b05fcb82d
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-13 20:37:06 +0800
+Date: 2024-02-23 16:12:32 +0800
- Translations: Update the Brazilian Portuguese translation.
-
- po/pt_BR.po | 603 ++++++++++++++++++++++++++++++++++--------------------------
- 1 file changed, 344 insertions(+), 259 deletions(-)
-
-commit 718f7a60e740b26b8353965edaaddc7d4deb4d85
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-12 13:04:05 +0200
-
- Build: Omit -Wmissing-noreturn from the default warnings.
+ Build: Fix ARM64 CRC32 instruction feature test.
- It's not that important. It can be annoying in builds that
- disable many features since in those cases the tests programs
- will correctly trigger this warning with Clang.
-
- configure.ac | 1 -
- 1 file changed, 1 deletion(-)
-
-commit 3ccedb09724c998c39d708c945f6da5852c39e13
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-12 06:05:58 +0200
-
- xz: Use ssize_t for the to-be-ignored return value from write(fd, ptr, 1).
+ Old versions of Clang reported the unsupported function attribute and
+ __crc32d() function as warnings instead of errors, so the feature test
+ passed when it shouldn't have, causing a compile error at build time.
+ -Werror was added to this feature test to fix this. The change is not
+ needed for CMake because check_c_source_compiles() also performs
+ linking and the error is caught then.
- It makes no difference here as the return value fits into an int
- too and it then gets ignored but this looks better.
+ Thanks to Sebastian Andrzej Siewior for reporting this.
- src/xz/file_io.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 09fbd2f0527def89e839c8907de4fe7ef6bc5019
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-12 06:01:12 +0200
-
- xz: Silence warnings from -Wsign-conversion in a 32-bit build.
-
- src/common/tuklib_mbstr_fw.c | 2 +-
- src/xz/list.c | 4 ++--
- 2 files changed, 3 insertions(+), 3 deletions(-)
+ configure.ac | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
-commit 683d3f178ef1487b5418be49f331b0131a101b40
+commit 4c81c9611f8b2e1ad65eb7fa166afc570c58607e
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-12 05:38:48 +0200
+Date: 2024-02-22 19:16:35 +0200
- liblzma: Silence another warning from -Wsign-conversion in a 32-bit build.
+ CMake: Add LOCALEDIR to the windres workaround.
- It doesn't warn on a 64-bit system because truncating
- a ptrdiff_t (signed long) to uint32_t is diagnosed under
- -Wconversion by GCC and -Wshorten-64-to-32 by Clang.
-
- src/liblzma/lz/lz_encoder_mf.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-commit 2b8062ef94a38d0f9ad0d1b309e8748db52f5c15
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-12 04:46:45 +0200
+ LOCALEDIR may contain spaces like in "C:\Program Files".
- liblzma: Silence a warning from -Wsign-conversion in a 32-bit build.
-
- src/common/mythread.h | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ CMakeLists.txt | 16 +++++++++++-----
+ 1 file changed, 11 insertions(+), 5 deletions(-)
-commit b16b9c0d22227012518595c2222facc73bd833a8
+commit de4337fd89ca7db5feb97b5c40143404f6e22986
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-12 04:17:24 +0200
+Date: 2024-02-22 15:18:25 +0200
- Build: Make configure add more warning flags for GCC and Clang.
+ xz: Landlock: Fix error message if input file is a directory.
- -Wstrict-aliasing was removed from the list since it is enabled
- by -Wall already.
+ If xz is given a directory, it should look like this:
- A normal build is clean with these on GNU/Linux x86-64 with
- GCC 12.2.0 and Clang 14.0.6.
-
- configure.ac | 36 +++++++++++++++++++++++++++++++-----
- 1 file changed, 31 insertions(+), 5 deletions(-)
-
-commit c47ecd6d3909d0d3ff48dfd6e2ee41e7c7130b94
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-12 04:14:18 +0200
-
- Tests: Fix warnings from clang --Wassign-enum.
+ $ xz /usr/bin
+ xz: /usr/bin: Is a directory, skipping
- Explicitly casting the integer to lzma_check silences the warning.
- Since such an invalid value is needed in multiple tests, a constant
- INVALID_LZMA_CHECK_ID was added to tests.h.
+ The Landlock rules didn't allow opening directories for reading:
- The use of 0x1000 for lzma_block.check wasn't optimal as if
- the underlying type is a char then 0x1000 will be truncated to 0.
- However, in these test cases the value is ignored, thus even with
- such truncation the test would have passed.
-
- tests/test_block_header.c | 6 +++---
- tests/test_check.c | 2 +-
- tests/test_stream_flags.c | 8 ++++----
- tests/tests.h | 9 +++++++++
- 4 files changed, 17 insertions(+), 8 deletions(-)
-
-commit 34e13ce015232968731de2a9ec3440a08b0084b1
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-12 03:51:07 +0200
-
- Tests: Silence warnings from -Wsign-conversion.
+ $ xz /usr/bin
+ xz: /usr/bin: Permission denied
- Note that assigning an unsigned int to lzma_check doesn't warn
- on GNU/Linux x86-64 since the enum type is unsigned on that
- platform. The enum can be signed on some other platform though
- so it's best to use enumeration type lzma_check in these situations.
+ The simplest fix was to allow opening directories for reading.
+ While it's a bit silly to allow it solely for the error message,
+ it shouldn't make the sandbox significantly weaker.
+
+ The single-file use case (like when called from GNU tar) is
+ still as strict as possible: all Landlock restrictions are
+ enabled before (de)compression starts.
- tests/test_check.c | 6 +++---
- tests/test_stream_flags.c | 10 +++++-----
- 2 files changed, 8 insertions(+), 8 deletions(-)
+ src/xz/sandbox.c | 15 ++++++++++++++-
+ 1 file changed, 14 insertions(+), 1 deletion(-)
-commit 6671d0fe46b77f0fafce860836b7a12dc3cda14a
+commit 120da10ae139ea52ca4275452adf8eda02d07cc8
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-12 03:19:59 +0200
+Date: 2024-02-22 14:41:29 +0200
- liblzma: Silence warnings from clang -Wconditional-uninitialized.
+ liblzma: Disable branchless C version in range decoder.
- This is similar to 2ce4f36f179a81d0c6e182a409f363df759d1ad0.
- The actual initialization of the variables is done inside
- mythread_sync() macro. Clang doesn't seem to see that
- the initialization code inside the macro is always executed.
+ Thanks to Sebastian Andrzej Siewior and Sam James for
+ benchmarking on various systems.
- src/liblzma/common/stream_decoder_mt.c | 8 +++++---
- src/liblzma/common/stream_encoder_mt.c | 2 +-
- 2 files changed, 6 insertions(+), 4 deletions(-)
+ src/liblzma/rangecoder/range_decoder.h | 13 ++++++++++---
+ 1 file changed, 10 insertions(+), 3 deletions(-)
-commit d3e833ca1d2abda54648494c33aca73a40a47efe
+commit 00440f52be9ac2c7438c7b0cb1082f12399632c6
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-12 03:11:40 +0200
+Date: 2024-02-21 17:41:32 +0200
- Fix warnings from clang -Wdocumentation.
+ INSTALL: Clarify that --disable-assembler affects only 32-bit x86.
- src/liblzma/check/check.h | 4 ----
- src/liblzma/lz/lz_encoder_mf.c | 4 ++--
- src/xz/options.c | 4 ++--
- 3 files changed, 4 insertions(+), 8 deletions(-)
+ INSTALL | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
-commit 977dd2e26bc50efec8d30fb90380394042d24558
+commit 11405be84ea294497e12d03d7219f607063f4a00
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-12 03:04:28 +0200
+Date: 2024-02-19 18:41:37 +0200
- Tests: test_lzip_decoder: Remove trailing white-space.
+ Windows: build.bash: Include COPYING.0BSD in the package.
- tests/test_lzip_decoder.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ windows/build.bash | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit c55157ed7437ab14f2afb7fecf331e321f2edf9a
+commit c27cf64e3e27f4968431d65be7098a12a3a80d30
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-12 03:03:55 +0200
+Date: 2024-02-18 17:59:46 +0200
- Tests: test_lzip_decoder: Silence warnings from -Wsign-conversion.
+ Windows: build.bash: include liblzma-crt-mixing.txt in the package.
- tests/test_lzip_decoder.c | 13 +++++++------
- 1 file changed, 7 insertions(+), 6 deletions(-)
+ windows/build.bash | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
-commit 18b845e69752c975dfeda418ec00eda22605c2ee
+commit 8d38941baed05de4ff7cc775de14833108f62184
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-11 18:52:54 +0200
-
- Bump version and soname for 5.4.1.
-
- src/liblzma/Makefile.am | 2 +-
- src/liblzma/api/lzma/version.h | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
+Date: 2024-02-18 17:17:43 +0200
-commit 4080bbb844fb36701ffb978f0c41ea2c2c9f8960
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-11 23:58:16 +0800
+ Windows: Major update to Windows build instructions.
- Add NEWS for 5.4.1.
+ INSTALL | 68 ++++-----
+ windows/INSTALL-MSVC.txt | 23 +--
+ windows/INSTALL-MinGW-w64_with_Autotools.txt | 49 +++++++
+ windows/INSTALL-MinGW-w64_with_CMake.txt | 203 +++++++++++++++++++++++++++
+ windows/INSTALL-MinGW.txt | 138 ------------------
+ windows/README-Windows.txt | 2 +
+ windows/build-with-cmake.bat | 35 +++++
+ windows/liblzma-crt-mixing.txt | 70 +++++++++
+ 8 files changed, 404 insertions(+), 184 deletions(-)
- NEWS | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 70 insertions(+)
-
-commit 674c89fdb8c457ebc3a0652e235d8b6cd7b7dee2
+commit 4b5b0d352348ff510ffb50a3b5b71788857d37a1
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-10 11:56:11 +0200
+Date: 2024-02-18 15:15:04 +0200
- sysdefs.h: Don't include strings.h anymore.
-
- On some platforms src/xz/suffix.c may need <strings.h> for
- strcasecmp() but suffix.c includes the header when it needs it.
+ Windows: Update windows/README-Windows.txt.
- Unless there is an old system that otherwise supports enough C99
- to build XZ Utils but doesn't have C89/C90-compatible <string.h>,
- there should be no need to include <strings.h> in sysdefs.h.
+ It's for binary packages built with windows/build.bash.
- src/common/sysdefs.h | 6 ------
- 1 file changed, 6 deletions(-)
+ windows/README-Windows.txt | 104 ++++++++++++++++++---------------------------
+ 1 file changed, 41 insertions(+), 63 deletions(-)
-commit 2a6b938084fac9ddb39cd69c9beeed15c3b6f6f6
+commit 1ee716f74085223c8fbcae1d5a384e6bf53c0f6a
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-10 11:23:41 +0200
+Date: 2024-02-18 15:15:04 +0200
- xz: Include <strings.h> in suffix.c if needed for strcasecmp().
+ Windows: Update windows/build.bash.
- SUSv2 and POSIX.1‐2017 declare only a few functions in <strings.h>.
- Of these, strcasecmp() is used on some platforms in suffix.c.
- Nothing else in the project needs <strings.h> (at least if
- building on a modern system).
+ Support for the old MinGW was dropped. Only MinGW-w64 with GCC
+ is supported now.
- sysdefs.h currently includes <strings.h> if HAVE_STRINGS_H is
- defined and suffix.c relied on this.
+ The script now supports also cross-compilation from GNU/Linux
+ (tests are not run). MSYS2 and also the old MSYS 1.0.11 work
+ for building on Windows. The i686 and x86_64 toolchains must
+ be in PATH to build both 32-bit and 64-bit versions.
- Note that dos/config.h doesn't #define HAVE_STRINGS_H even though
- DJGPP does have strings.h. It isn't needed with DJGPP as strcasecmp()
- is also in <string.h> in DJGPP.
+ Parallel builds are done if "nproc" from GNU coreutils is available.
+
+ MinGW-w64 runtime copyright information file was renamed from
+ COPYING-Windows.txt to COPYING.MinGW-w64-runtime.txt which
+ is the filename used by MinGW-w64 itself. Its existence
+ is now mandatory, it's checked at the beginning of the script.
+
+ The file TODO is no longer copied to the package.
- src/xz/suffix.c | 3 +++
- 1 file changed, 3 insertions(+)
+ windows/build.bash | 191 +++++++++++++++++++++++++++++++----------------------
+ 1 file changed, 112 insertions(+), 79 deletions(-)
-commit aea639e81beb548e3114c74b6d9a894d6e036189
+commit 60462e42609a1d961868a1d1ebecc713c6d27e2e
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-11 22:46:48 +0800
+Date: 2024-02-20 23:32:22 +0800
- xz: Fix warning -Wformat-nonliteral on clang in message.c.
-
- clang and gcc differ in how they handle -Wformat-nonliteral. gcc will
- allow a non-literal format string as long as the function takes its
- format arguments as a va_list.
+ Translations: Update the Romanian man page translations.
- src/xz/message.c | 9 +++++++++
- 1 file changed, 9 insertions(+)
+ po4a/ro.po | 1715 +++++++++++++++++++++++++++++++-----------------------------
+ 1 file changed, 875 insertions(+), 840 deletions(-)
-commit e3b42bfcb0f67988beee7c7022fed0361282be45
+commit 10d733e5b8929c642e00891cfa9ead9c2cdd2e05
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-11 20:58:31 +0800
+Date: 2024-02-20 23:30:25 +0800
- Tests: Fix test_filter_flags copy/paste error.
+ Translations: Update the Korean man page translations.
- tests/test_filter_flags.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ po4a/ko.po | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
-commit 21625b7e11d004788e40eb5eb88d9d89f65fe347
+commit 797a34b72ac6baff237d7a546fa941d8f78f2f62
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-11 20:42:29 +0800
+Date: 2024-02-20 21:03:53 +0800
- Tests: Fix type-limits warning in test_filter_flags.
-
- This only occurs in test_filter_flags when the BCJ filters are not
- configured and built. In this case, ARRAY_SIZE() returns 0 and causes a
- type-limits warning with the loop variable since an unsigned number will
- always be >= 0.
+ Translations: Update the Spanish translation.
- tests/test_filter_flags.c | 13 ++++++++++---
- 1 file changed, 10 insertions(+), 3 deletions(-)
+ po/es.po | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
-commit c337983e928682d56ce3470b286a8d5b8646e0ad
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-10 22:14:03 +0200
+commit 5c3751d019f023e091df9a653e2bb1f6ea8b0d49
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-20 20:18:07 +0800
- liblzma: CLMUL CRC64: Work around a bug in MSVC, second attempt.
-
- This affects only 32-bit x86 builds. x86-64 is OK as is.
-
- I still cannot easily test this myself. The reporter has tested
- this and it passes the tests included in the CMake build and
- performance is good: raw CRC64 is 2-3 times faster than the
- C version of the slice-by-four method. (Note that liblzma doesn't
- include a MSVC-compatible version of the 32-bit x86 assembly code
- for the slice-by-four method.)
-
- Thanks to Iouri Kharon for figuring out a fix, testing, and
- benchmarking.
+ Translations: Update the Romanian translation.
- src/liblzma/check/crc64_fast.c | 18 ++++++++++++++++++
- 1 file changed, 18 insertions(+)
+ po/ro.po | 470 ++++++++++++++++++++++++++++++---------------------------------
+ 1 file changed, 227 insertions(+), 243 deletions(-)
-commit b7fb438ea0e3ee02e3a164f3b72fae456cbe34d7
+commit e2d31154ecc750935436e8b62c6b073b2cfa84e3
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-11 01:18:50 +0800
+Date: 2024-02-20 20:15:50 +0800
- Tests: Fix unused function warning in test_block_header.
-
- One of the global arrays of filters was only used in a test that
- required both encoders and decoders to be configured in the build.
+ Translations: Update the Croatian translation.
- tests/test_block_header.c | 4 ++++
- 1 file changed, 4 insertions(+)
+ po/hr.po | 648 ++++++++++++++++++++++++++++++++++-----------------------------
+ 1 file changed, 355 insertions(+), 293 deletions(-)
-commit 68e9ef036d18d7c3952bff0b391d5989b86934da
+commit 704500f994d5ac271bfcfd592275c5a7da4dc8d2
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-11 01:08:03 +0800
+Date: 2024-02-20 20:05:44 +0800
- Tests: Fix unused function warning in test_index_hash.
-
- test_index_hash does not use fill_index_hash() unless both encoders
- and decoders are configured in the build.
+ Translations: Update the German man page translations.
- tests/test_index_hash.c | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
+ po4a/de.po | 1696 +++++++++++++++++++++++++++++++-----------------------------
+ 1 file changed, 873 insertions(+), 823 deletions(-)
-commit a387707cd8cdefbffb5b7429bda4b7fcc192954a
+commit 1cfd3dca3fef321b06db73c3c9e13f347c2e2f5f
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-20 19:58:25 +0800
+
+ Translations: Update the German translation.
+
+ po/de.po | 427 +++++++++++++++++++++++++++++++++------------------------------
+ 1 file changed, 225 insertions(+), 202 deletions(-)
+
+commit 28b9b3f16cc7c6e5b42e691994569c17f4561c9a
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-20 19:56:52 +0800
+
+ Translations: Update the Hungarian translation.
+
+ po/hu.po | 556 ++++++++++++++++++++++++++++++++++++++-------------------------
+ 1 file changed, 338 insertions(+), 218 deletions(-)
+
+commit 00b06cd0af6ad2ee93d3006bf80417db060c2b04
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-10 00:33:14 +0200
+Date: 2024-02-19 16:48:05 +0200
- Windows: Update INSTALL-MSVC.txt to recommend CMake over project files.
+ CMake: Fix building of lzmainfo when translations are enabled.
- windows/INSTALL-MSVC.txt | 19 ++++++++++++-------
- 1 file changed, 12 insertions(+), 7 deletions(-)
+ CMakeLists.txt | 2 ++
+ 1 file changed, 2 insertions(+)
-commit 52902ad69518255a14b0144f0a2379e06fde5b6e
+commit b0d1422b6037bfea6f6723683bd82a8e6d77026c
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-10 12:47:16 +0200
+Date: 2024-02-19 13:38:42 +0200
- Revert "liblzma: CLMUL CRC64: Workaround a bug in MSVC (VS2015-2022)."
+ CMake: Don't assume that -fvisibility=hidden is supported outside Windows.
- This reverts commit 36edc65ab4cf10a131f239acbd423b4510ba52d5.
+ The original code was good enough for supporting GNU/Linux
+ and a few others but it wasn't very portable.
- It was reported that it wasn't a good enough fix and MSVC
- still produced (different kind of) bad code when building
- for 32-bit x86 if optimizations are enabled.
-
- Thanks to Iouri Kharon.
+ CMake doesn't support Solaris Studio's -xldscope=hidden.
+ If it ever does, things should still work with this commit
+ as Solaris Studio supports not only its own __global but also
+ the GNU C __attribute__((visibility("default"))). Support for the
+ attribute was added in 2007 to Sun Studio 12 compiler version 5.9.
- src/liblzma/check/crc64_fast.c | 6 ------
- 1 file changed, 6 deletions(-)
+ CMakeLists.txt | 26 ++++++++++++++++++++++----
+ 1 file changed, 22 insertions(+), 4 deletions(-)
-commit e81b9fc48ca70f9228308d3f1871cd81f9a5a496
+commit 2ced9d34bef4dce52ecbbf84d0903ab0aae1442c
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-10 10:05:13 +0200
+Date: 2024-02-19 12:20:59 +0200
- sysdefs.h: Fix a comment.
+ CMake: Revise the component splitting.
- src/common/sysdefs.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ CMakeLists.txt | 57 +++++++++++++++++++++++++++++++--------------------------
+ 1 file changed, 31 insertions(+), 26 deletions(-)
-commit 6e89ab58b031aa046308a0b3504ff0a5be042571
+commit 426bdc709c169d39b31dec410016779de117ef69
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-10 10:04:06 +0200
+Date: 2024-02-17 21:45:07 +0200
- sysdefs.h: Don't include memory.h anymore even if it were available.
-
- It quite probably was never needed, that is, any system where memory.h
- was required likely couldn't compile XZ Utils for other reasons anyway.
-
- XZ Utils 5.2.6 and later source packages were generated using
- Autoconf 2.71 which no longer defines HAVE_MEMORY_H. So the code
- being removed is no longer used anyway.
+ CMake: Update the main comment and document CMAKE_BUILD_TYPE=Release.
- src/common/sysdefs.h | 8 ++------
- 1 file changed, 2 insertions(+), 6 deletions(-)
+ CMakeLists.txt | 79 ++++++++++++++++++++++++++++++++++++++++++++++------------
+ 1 file changed, 63 insertions(+), 16 deletions(-)
-commit 65c59ad429aa59f9df0326d9fc82931ba4a9d123
+commit 4430e075f7ccfc47972d6ca0aa1c3779fc265e10
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-10 08:50:26 +0200
+Date: 2024-02-17 21:27:48 +0200
- CMake/Windows: Add a workaround for windres from GNU binutils.
+ CMake: Use -O2 instead of -O3 in CMAKE_BUILD_TYPE=Release.
- This is combined from the following commits in the master branch:
- 443dfebced041adc88f10d824188eeef5b5821a9
- 6b117d3b1fe91eb26d533ab16a2e552f84148d47
- 5e34774c31d1b7509b5cb77a3be9973adec59ea0
+ -O3 doesn't seem useful for speed but it makes the code bigger.
+ CMake makes is difficult for users to simply override the
+ optimization level: CFLAGS / CMAKE_C_FLAGS aren't helpful because
+ they go before CMAKE_C_FLAGS_RELEASE. Of course, users can override
+ CMAKE_C_FLAGS_RELEASE directly but then they have to remember to
+ add also -DNDEBUG to disable assertions.
- Thanks to Iouri Kharon for the bug report, the original patch,
- and testing.
+ This commit changes -O3 to -O2 in CMAKE_C_FLAGS_RELEASE if and only if
+ CMAKE_C_FLAGS_RELEASE cache variable doesn't already exist. So if
+ a custom value is passed on the command line (or reconfiguring an
+ already-configured build), the cache variable won't be modified.
- CMakeLists.txt | 32 +++++++++++++++++++++++++++++++-
- 1 file changed, 31 insertions(+), 1 deletion(-)
+ CMakeLists.txt | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
-commit 43521e77acc907863fa4f94aae276366172cb9ee
+commit 025eb6d7879e4c4e8cb29716b371e0f4c1aea660
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-06 22:53:38 +0200
+Date: 2024-02-18 14:59:52 +0200
- Tests: test_filter_flags: Clean up minor issues.
+ CMake: Handle symbol versioning on MicroBlaze specially.
- Here are the list of the most significant issues addressed:
- - Avoid using internal common.h header. It's not good to copy the
- constants like this but common.h cannot be included for use outside
- of liblzma. This is the quickest thing to do that could be fixed later.
-
- - Omit the INIT_FILTER macro. Initialization should be done with just
- regular designated initializers.
-
- - Use start_offset = 257 for BCJ tests. It demonstrates that Filter
- Flags encoder and decoder don't validate the options thoroughly.
- 257 is valid only for the x86 filter. This is a bit silly but
- not a significant problem in practice because the encoder and
- decoder initialization functions will catch bad alignment still.
- Perhaps this should be fixed but it's not urgent and doesn't need
- to be in 5.4.x.
-
- - Various tweaks to comments such as filter id -> Filter ID
+ This is to match configure.ac.
- tests/test_filter_flags.c | 153 +++++++++++++++++++++++-----------------------
- 1 file changed, 78 insertions(+), 75 deletions(-)
+ CMakeLists.txt | 23 +++++++++++++++++++----
+ 1 file changed, 19 insertions(+), 4 deletions(-)
-commit 6b44cead95d767414272dc3a67898a36bfdf95b3
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-12-29 23:33:33 +0800
+commit 2edd1a35b2507d1ce68b52dbaebe23c4850a74ce
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-17 22:18:12 +0200
- Tests: Refactors existing filter flags tests.
-
- Converts the existing filter flags tests into tuktests.
+ CMake: Keep build working even if lib/*.[ch] are removed.
- tests/test_filter_flags.c | 655 ++++++++++++++++++++++++++++++++--------------
- 1 file changed, 457 insertions(+), 198 deletions(-)
+ CMakeLists.txt | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
-commit 1bbefa9659b202ba31bd244a9d0e4f0d37ff3ed7
+commit d753e2ce4715552884afadc4ed6fbf8ccca6efac
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-08 00:32:29 +0200
+Date: 2024-02-17 18:10:40 +0200
- Tests: tuktest.h: Support tuktest_malloc(0).
-
- It's not needed in XZ Utils at least for now. It's good to support
- it still because if such use is needed later, it wouldn't be
- caught on GNU/Linux since malloc(0) from glibc returns non-NULL.
+ CMake: Install documentation.
- tests/tuktest.h | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ CMakeLists.txt | 32 ++++++++++++++++++++++++++++++++
+ 1 file changed, 32 insertions(+)
-commit ce3a3fbc7c2c399aeed644d54f3bd56ac914dfee
+commit 7a0405bea9cb0df9318b70f779f82b2c473e98ac
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-07 21:57:11 +0200
+Date: 2024-02-17 15:35:35 +0200
- CMake: Update cmake_minimum_required from 3.13...3.16 to 3.13...3.25.
+ CMake: Bump maximum policy version to 3.28.
- The changes listed on cmake-policies(7) for versions 3.17 to 3.25
- shouldn't affect this project.
+ CMP0154 doesn't affect us since we don't use FILE_SET.
CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-commit 99fcd57f2ea35eaa94e09f674d5364329c880fa2
+commit c2264ffbe3892d28930b89b0123efc369cabc143
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-08 00:24:23 +0200
+Date: 2024-02-17 15:35:35 +0200
- Update THANKS.
+ CMake: Build lzmainfo.
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ CMakeLists.txt | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 54 insertions(+)
-commit c0c13d9d82eb8a4302c8bbb8b4c5178d285fe9ab
+commit 998d0b29536094a89cf385a3b894e157db1ccefe
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-07 19:50:35 +0200
+Date: 2024-02-17 15:35:35 +0200
- Update THANKS.
+ CMake: Build lzmadec.
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ CMakeLists.txt | 76 ++++++++++++++++++++++++++++++++--------------------------
+ 1 file changed, 42 insertions(+), 34 deletions(-)
-commit 3d45987451b1c3bb42697b29341824c0e5484cba
+commit 74e8bc7417a0f37ca7ed5ee0127d33c69b3100b9
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-09 11:27:24 +0200
+Date: 2024-02-17 15:35:35 +0200
- CMake: Fix a copypaste error in xzdec Windows resource file handling.
+ CMake: Add test_scripts.sh to the tests.
- It was my mistake. Thanks to Iouri Kharon for the bug report.
+ In contrast to Automake, skipping of this test when decoders
+ are disabled is handled at CMake side instead of test_scripts.sh
+ because CMake-build doesn't create config.h.
- CMakeLists.txt | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ CMakeLists.txt | 14 ++++++++++++++
+ tests/test_scripts.sh | 13 ++++++++-----
+ 2 files changed, 22 insertions(+), 5 deletions(-)
-commit 706bce5018d7cf83094e13454a0731169ec119b5
+commit 4808f238a731befcd46c2117c62a1caaf4403989
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-07 19:50:03 +0200
+Date: 2024-02-17 15:35:35 +0200
- CMake/Windows: Add resource files to xz.exe and xzdec.exe.
+ CMake: Install scripts.
- The command line tools cannot be built with MSVC for now but
- they can be built with MinGW-w64.
-
- Thanks to Iouri Kharon for the bug report and the original patch.
+ Compared to the Autotools-based build, this has simpler handling
+ for the shell (@POSIX_SHELL@) and extra PATH entry for the scripts
+ (configure has --enable-path-for-scripts=PREFIX). The simpler
+ metho should be enough for non-ancient systems and Solaris.
- CMakeLists.txt | 16 ++++++++++++++++
- 1 file changed, 16 insertions(+)
+ CMakeLists.txt | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 82 insertions(+), 1 deletion(-)
-commit e96dee55df04113c33b387ccdb6cb70935422d91
+commit 3462362ebd94d835c664e94ad8f414cfe7590ca7
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-09 12:22:05 +0200
+Date: 2024-02-17 15:35:35 +0200
- liblzma: CLMUL CRC64: Workaround a bug in MSVC (VS2015-2022).
-
- I haven't tested with MSVC myself and there doesn't seem to be
- information about the problem online, so I'm relying on the bug report.
+ Scripts: Use @PACKAGE_VERSION@ instead of @VERSION@.
- Thanks to Iouri Kharon for the bug report and the patch.
+ PACKAGE_VERSION was already used in liblzma.pc.in.
+ This way only one version @foo@ is used.
- src/liblzma/check/crc64_fast.c | 6 ++++++
- 1 file changed, 6 insertions(+)
+ src/scripts/xzdiff.in | 2 +-
+ src/scripts/xzgrep.in | 2 +-
+ src/scripts/xzless.in | 2 +-
+ src/scripts/xzmore.in | 2 +-
+ 4 files changed, 4 insertions(+), 4 deletions(-)
-commit 52bc1ee34dda9bb6fb40175e5952863066681b77
+commit 67610c245ba6c68cf65991693bab9312b7dc987b
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-07 19:31:15 +0200
+Date: 2024-02-17 15:35:35 +0200
- Build: Require that _mm_set_epi64x() is usable to enable CLMUL support.
+ CMake: Simplify symlink creation and install translated man pages.
- VS2013 doesn't have _mm_set_epi64x() so this way CLMUL gets
- disabled with VS2013.
+ It helps that cmake_install.cmake doesn't parallelize installation
+ so symlinks can be created so that the target is always known to
+ exist (a requirement on Windows in some cases).
- Thanks to Iouri Kharon for the bug report.
+ This bumps the minimum CMake version from 3.13 to 3.14 to use
+ file(CREATE_LINK ...). It could be made to work on 3.13 by
+ calling "cmake -E create_symlink" but it's uglier code and
+ slower in "make install". 3.14 should be a reasonable version
+ to require nowadays, especially since the Autotools build
+ is still the primary build system for most OSes.
- CMakeLists.txt | 3 ++-
- configure.ac | 8 ++++++--
- 2 files changed, 8 insertions(+), 3 deletions(-)
+ CMakeLists.txt | 195 +++++++++++++++++++++++++++++----------------------------
+ 1 file changed, 98 insertions(+), 97 deletions(-)
-commit bad44cfe19e8be8ae76755369be2a34abcd2b4fa
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-12-29 00:25:18 +0800
+commit 50cc1d8a5a8154428bf240c7e4972e32b17d99bf
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-17 15:35:35 +0200
- Tests: Creates test_index_hash.c
+ CMake: Add support for building and installing xz with translations.
- Tests all API functions exported from index_hash.h. Does not have a
- dedicated test for lzma_index_hash_end.
+ If gettext tools are available, the .po files listed in po/LINGUAS
+ are converted using msgfmt. This allows building with translations
+ directly from xz.git without Autotools.
+
+ If gettext tools aren't available, the Autotools-created .gmo files
+ in the "po" directory will be used. This allows CMake-based build
+ to use translations from Autotools-generated tarball.
- [Minor edits were made by Lasse Collin.]
+ If translation support is found (Intl_FOUND) but both the
+ gettext tools and the pre-generated .gmo files are missing,
+ then "make" will fail.
- .gitignore | 1 +
- CMakeLists.txt | 2 +
- tests/Makefile.am | 3 +
- tests/test_index_hash.c | 388 ++++++++++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 394 insertions(+)
+ CMakeLists.txt | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 66 insertions(+), 2 deletions(-)
-commit 692ccdf5516dfe55fb6e9c5cdfb31f4c02c1ecd1
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-05 20:57:25 +0800
+commit 746c471643009947f94a3494a1148f74c7381b56
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-19 11:58:33 +0200
- liblzma: Remove common.h include from common/index.h.
-
- common/index.h is needed by liblzma internally and tests. common.h will
- include and define many things that are not needed by the tests.
-
- Also, this prevents include order problems because both common.h and
- lzma.h define LZMA_API. On most platforms it results only in a warning
- but on Windows it would break the build as the definition in common.h
- must be used only for building liblzma itself.
+ liblzma: Remove commented-out code.
- src/liblzma/common/index.c | 1 +
- src/liblzma/common/index.h | 9 +++++++--
- src/liblzma/common/index_decoder.h | 1 +
- src/liblzma/common/stream_buffer_encoder.c | 1 +
- 4 files changed, 10 insertions(+), 2 deletions(-)
+ src/liblzma/rangecoder/range_decoder.h | 3 ---
+ 1 file changed, 3 deletions(-)
-commit 2ac7bafc8f07c1edefe96a4a7a040ddfff0eb5bb
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-08-17 20:20:16 +0800
+commit 4ce300ce0884c6e552de2af9ae8050b47b01f0e7
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-17 23:07:35 +0200
- liblzma: Add NULL check to lzma_index_hash_append.
-
- This is for consistency with lzma_index_append.
+ xz: Delete old commented-out code.
- src/liblzma/common/index_hash.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ src/xz/message.c | 19 -------------------
+ 1 file changed, 19 deletions(-)
-commit db714d30e0c74d1dd4af1a23ed62b44e0e8e4efc
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-08-17 17:59:51 +0800
+commit cae9a5e0bf422e6c5e64180805904f7ed02dc3aa
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-17 23:07:35 +0200
- liblzma: Replaced hardcoded 0x0 index indicator byte with macro
+ xz: Use stricter pledge(2) and Landlock sandbox.
+
+ This makes these sandboxing methods stricter when no files are
+ created or deleted. That is, it's a middle ground between the
+ initial sandbox and the strictest single-file-to-stdout sandbox:
+ this allows opening files for reading but output has to go to stdout.
- src/liblzma/common/index.h | 3 +++
- src/liblzma/common/index_decoder.c | 2 +-
- src/liblzma/common/index_encoder.c | 2 +-
- src/liblzma/common/index_hash.c | 2 +-
- src/liblzma/common/stream_decoder.c | 3 ++-
- src/liblzma/common/stream_decoder_mt.c | 2 +-
- 6 files changed, 9 insertions(+), 5 deletions(-)
+ src/xz/main.c | 46 +++++++++++++++++++++++++++++++++-------------
+ src/xz/sandbox.c | 32 ++++++++++++++++++++++++++++++++
+ src/xz/sandbox.h | 4 ++++
+ 3 files changed, 69 insertions(+), 13 deletions(-)
-commit 39d2585dcd3e827cfc3c46025ab6708c4aeb36c6
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-06 20:43:31 +0800
+commit 02e3505991233901575b7eabc06b2c6c62a96899
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-17 23:07:35 +0200
- Style: Change #if !defined() to #ifndef in mythread.h.
+ xz: Support Landlock ABI version 4.
+
+ Linux 6.7 added support for ABI version 4 which restricts
+ TCP connections which xz won't need and thus those can be
+ forbidden now. Since the ABI version is handled at runtime,
+ supporting version 4 won't cause any compatibility issues.
+
+ Note that new enough kernel headers are required to get
+ version 4 support enabled at build time.
- src/common/mythread.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ src/xz/sandbox.c | 25 ++++++++++++++++++++-----
+ 1 file changed, 20 insertions(+), 5 deletions(-)
-commit 3f0130aa288e4ed57ace609517db9700a41223af
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-06 20:35:55 +0800
+commit 374868d81d473ab56556a1cfd6b1b36a1fab348b
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-17 23:07:35 +0200
- Build: Add missing stream_decoder_mt.c to .vcxproj files.
+ xz: Move sandboxing code to sandbox.c and improve Landlock sandbox.
- The line in the .vcxproj files for building with was missing in 5.4.0.
- Thank to Hajin Jang for reporting the issue.
+ Landlock is now always used just like pledge(2) is: first in more
+ permissive mode and later (under certain common conditions) in
+ a strict mode that doesn't allow opening more files.
+
+ I put pledge(2) first in sandbox.c because it's the simplest API
+ to use and still somewhat fine-grained for basic applications.
+ So it's the simplest thing to understand for anyone reading sandbox.c.
- windows/vs2013/liblzma.vcxproj | 1 +
- windows/vs2013/liblzma_dll.vcxproj | 1 +
- windows/vs2017/liblzma.vcxproj | 1 +
- windows/vs2017/liblzma_dll.vcxproj | 1 +
- windows/vs2019/liblzma.vcxproj | 1 +
- windows/vs2019/liblzma_dll.vcxproj | 1 +
- 6 files changed, 6 insertions(+)
+ CMakeLists.txt | 2 +
+ src/xz/Makefile.am | 2 +
+ src/xz/file_io.c | 170 +-----------------------------
+ src/xz/file_io.h | 6 --
+ src/xz/main.c | 50 +++------
+ src/xz/private.h | 6 +-
+ src/xz/sandbox.c | 295 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/xz/sandbox.h | 39 +++++++
+ 8 files changed, 357 insertions(+), 213 deletions(-)
-commit f204d1050a515d17851eed9049862ce5a9c729c1
+commit 7312dfbb02197c7f990c7a3cefd027a9387d1473
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-04 22:40:54 +0200
+Date: 2024-02-17 23:07:35 +0200
- Update THANKS.
+ xz: Tweak comments.
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ src/xz/main.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
-commit 34a9c2d650d6c30bd88e1b21910dd863209aa884
+commit c701a5909ad9882469fbab4fab5d2d5556d3ba78
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-04 18:40:28 +0200
+Date: 2024-02-17 23:07:35 +0200
- Tests: Adjust style in test_compress.sh.
+ xz: Fix message_init() description.
+
+ Also explicitly initialize progress_automatic to make it clear
+ that it can be read before message_init() sets it. Static variable
+ was initialized to false by default already so this is only for
+ clarity.
- tests/test_compress.sh | 12 +++++++-----
- 1 file changed, 7 insertions(+), 5 deletions(-)
+ src/xz/main.c | 3 ++-
+ src/xz/message.c | 2 +-
+ src/xz/message.h | 5 ++++-
+ 3 files changed, 7 insertions(+), 3 deletions(-)
-commit 761c208d58e0c3daa0f46e68b406adfc318d2a46
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-04 23:58:58 +0800
+commit 9466306719f3b76e92fac4e55fbfd89ec92295fa
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-17 19:35:47 +0200
- Tests: Replace non portable shell parameter expansion
+ Build: Makefile.am: Sort EXTRA_DIST.
- The shell parameter expansion using # and ## is not supported in
- Solaris 10 Bourne shell (/bin/sh). Even though this is POSIX, it is not fully
- portable, so we should avoid it.
+ Dirs first, then files in case-sensitive ASCII order.
- tests/create_compress_files.c | 2 +-
- tests/test_compress.sh | 20 +++++++++++++-------
- tests/test_compress_prepared_bcj_sparc | 2 +-
- tests/test_compress_prepared_bcj_x86 | 2 +-
- 4 files changed, 16 insertions(+), 10 deletions(-)
+ Makefile.am | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
-commit 8a7cbc074547e55e57f4f3696f69bedeb05e14c4
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-03 21:02:38 +0800
+commit f3440e78c9517db75bfa52e1a378fad60b073bbe
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-17 19:25:05 +0200
- Translations: Add Korean translation of man pages.
-
- Thanks to Seong-ho Cho
+ Build: Don't install TODO.
- po4a/ko.po | 5552 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- po4a/po4a.conf | 2 +-
- 2 files changed, 5553 insertions(+), 1 deletion(-)
+ Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit ca2af49bb8be5995eb0e6a3abf457622626d49a7
+commit a7a3b62e2ab03c82b2bd5c78da1d1fb8b8490381
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-03 20:47:27 +0800
+Date: 2024-02-18 01:09:11 +0800
- Translations: Update the Esperanto translation.
+ Translations: Update the Korean man page translations.
- po/eo.po | 620 ++++++++++++++++++++++++++++++++++-----------------------------
- 1 file changed, 332 insertions(+), 288 deletions(-)
+ po4a/ko.po | 1707 +++++++++++++++++++++++++++++++-----------------------------
+ 1 file changed, 871 insertions(+), 836 deletions(-)
-commit bfba3394aed03311fe9a746d3141b2e16d8b9325
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2023-01-02 17:05:07 +0200
+commit 9b315db2d5e74700f3dc0755eb86c27947c0b393
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-18 01:08:32 +0800
- Build: Fix config.h comments.
+ Translations: Update the Korean translation.
- configure.ac | 2 +-
- m4/tuklib_progname.m4 | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
+ po/ko.po | 423 +++++++++++++++++++++++++++++++++------------------------------
+ 1 file changed, 223 insertions(+), 200 deletions(-)
-commit 507648ad114c2ae0cd6d181063e1ac07e8106718
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2023-01-02 22:33:48 +0800
+commit 56246607dff177b0410d140fcca4a42c865723dc
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-17 16:23:14 +0200
- Build: Only define HAVE_PROGRAM_INVOCATION_NAME if it is set to 1.
+ Build: Install translated lzmainfo man pages.
- HAVE_DECL_PROGRAM_INVOCATION_NAME is renamed to
- HAVE_PROGRAM_INVOCATION_NAME. Previously,
- HAVE_DECL_PROGRAM_INVOCATION_NAME was always set when
- building with autotools. CMake would only set this when it was 1, and the
- dos/config.h did not define it. The new macro definition is consistent
- across build systems.
+ All other translated man pages were being installed but
+ lzmainfo had been forgotten.
- cmake/tuklib_progname.cmake | 5 ++---
- m4/tuklib_progname.m4 | 5 ++++-
- src/common/tuklib_progname.c | 2 +-
- src/common/tuklib_progname.h | 2 +-
- 4 files changed, 8 insertions(+), 6 deletions(-)
+ src/lzmainfo/Makefile.am | 26 ++++++++++++++++++++++++++
+ 1 file changed, 26 insertions(+)
-commit ab5229d32adfec1f3fbc95228d9dd6f560732ab5
+commit f1d6b88aefcced538403c5c2606ba57065b16e70
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-30 20:10:08 +0200
+Date: 2024-02-17 16:01:32 +0200
- Tests: test_check: Test corner cases of CLMUL CRC64.
+ liblzma: Avoid implementation-defined behavior in the RISC-V filter.
+
+ GCC docs promise that it works and a few other compilers do
+ too. Clang/LLVM is documented source code only but unsurprisingly
+ it behaves the same as others on x86-64 at least. But the
+ certainly-portable way is good enough here so use that.
- tests/test_check.c | 27 +++++++++++++++++++++++++++
- 1 file changed, 27 insertions(+)
+ src/liblzma/simple/riscv.c | 30 ++++++++++++++++++++++--------
+ 1 file changed, 22 insertions(+), 8 deletions(-)
-commit 8791826f31733fda0a13b411c2ed930faaeb25aa
+commit 843ddc5f617b91ae132d6bab0f2f2d9c9fcd214a
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-30 19:36:49 +0200
+Date: 2024-02-17 15:48:28 +0200
- Tests: Clarify a comment in test_lzip_decoder.c.
+ liblzma: Wrap a line exceeding 80 chars.
- tests/test_lzip_decoder.c | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
+ src/liblzma/rangecoder/range_decoder.h | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
-commit c410d812ea12bfc74f6b727c1a799478c79f19ca
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-12-29 01:55:19 +0800
+commit e9053c907250c70d98b319d95fa54cb94fc76869
+Author: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
+Date: 2024-02-16 21:50:15 +0100
- xz: Includes <time.h> and <sys/time.h> conditionally in mytime.c.
+ liblzma/rangecoder: Exclude x32 from the x86-64 optimisation.
- Previously, mytime.c depended on mythread.h for <time.h> to be included.
+ The x32 port has a x86-64 ABI in term of all registers but uses only
+ 32bit pointer like x86-32. The assembly optimisation fails to compile on
+ x32. Given the state of x32 I suggest to exclude it from the
+ optimisation rather than trying to fix it.
+
+ Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
- src/xz/mytime.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
+ src/liblzma/rangecoder/range_decoder.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 501c6013d4a59fae5d4368e9657c4885493db809
+commit 3d198fb13b87f8803442e5799d465f7434a70555
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-12-29 01:15:27 +0800
+Date: 2024-02-17 21:05:07 +0800
- liblzma: Includes sys/time.h conditionally in mythread
-
- Previously, <sys/time.h> was always included, even if mythread only used
- clock_gettime. <time.h> is still needed even if clock_gettime is not used
- though because struct timespec is needed for mythread_condtime.
+ Translations: Update the Spanish translation.
- src/common/mythread.h | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
+ po/es.po | 427 +++++++++++++++++++++++++++++++++------------------------------
+ 1 file changed, 226 insertions(+), 201 deletions(-)
-commit 9e3cb514b5b95bd235dcdff3db4436f57444ee4f
+commit cf278bfe60a25b54b3786f06503bc61272970820
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-12-29 01:10:53 +0800
+Date: 2024-02-17 20:43:29 +0800
- Build: No longer require HAVE_DECL_CLOCK_MONOTONIC to always be set.
-
- Previously, if threading was enabled HAVE_DECL_CLOCK_MONOTONIC would always
- be set to 0 or 1. However, this macro was needed in xz so if xz was not
- built with threading and HAVE_DECL_CLOCK_MONOTONIC was not defined but
- HAVE_CLOCK_GETTIME was, it caused a warning during build. Now,
- HAVE_DECL_CLOCK_MONOTONIC has been renamed to HAVE_CLOCK_MONOTONIC and
- will only be set if it is 1.
+ Translations: Update the Swedish translation.
- CMakeLists.txt | 8 +++-----
- configure.ac | 5 ++++-
- src/common/mythread.h | 4 ++--
- src/xz/mytime.c | 5 ++---
- 4 files changed, 11 insertions(+), 11 deletions(-)
+ po/sv.po | 434 +++++++++++++++++++++++++++++++++------------------------------
+ 1 file changed, 230 insertions(+), 204 deletions(-)
-commit 6fc3e5467911572fa9af4021ea46396261aae796
+commit b0f1a41be50560cc6cb528e8e96b02b2067c52c2
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-12-28 01:14:07 +0800
+Date: 2024-02-17 20:41:38 +0800
- Translations: Add Ukrainian translations of man pages.
-
- Thanks to Yuri Chornoivan
+ Translations: Update the Polish translation.
- po4a/po4a.conf | 2 +-
- po4a/uk.po | 3676 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 3677 insertions(+), 1 deletion(-)
+ po/pl.po | 424 +++++++++++++++++++++++++++++++++------------------------------
+ 1 file changed, 224 insertions(+), 200 deletions(-)
-commit e84f2ab7f8bc38cd8f8befa0bb398656c3c11f8e
+commit d74ed48b30c631b6a4c7e7858b06828293bf8520
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-12-22 23:14:53 +0800
+Date: 2024-02-17 20:41:02 +0800
- liblzma: Update documentation for lzma_filter_encoder.
+ Translations: Update the Ukrainian translation.
- src/liblzma/common/filter_encoder.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
+ po/uk.po | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 711e22d5c5f3bac39ac904efb3ede874a66e2045
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-16 17:53:34 +0200
+
+ Translations: Use the same sentence in xz.pot-header that the TP uses.
-commit b14b8dbba9a3b232787ae218b46430b9246383dd
+ po/xz.pot-header | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit fb5f6aaf18584672d0fee5dbe41fd30fc6bf5422
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-12-21 21:12:03 +0800
+Date: 2024-02-16 22:53:46 +0800
- Tests: Adds lzip decoder tests
+ Fix typos discovered by codespell.
- .gitignore | 1 +
- tests/Makefile.am | 2 +
- tests/test_lzip_decoder.c | 471 ++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 474 insertions(+)
+ AUTHORS | 2 +-
+ NEWS | 2 +-
+ src/liblzma/rangecoder/range_decoder.h | 4 ++--
+ 3 files changed, 4 insertions(+), 4 deletions(-)
-commit 09a114805e1d4f9a02a06cee7dbf2f5014d1f710
-Author: Jia Cheong Tan <jiat0218@gmail.com>
-Date: 2022-12-20 22:05:21 +0800
+commit c64723bbb094e29b4edd98f6fcce866e1b569b42
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-16 22:52:41 +0800
- Doxygen: Update .gitignore for generating docs for in source build.
-
- In source builds are not recommended, but we should still ignore
- the generated artifacts.
+ Translations: Update the Ukrainian man page translations.
- .gitignore | 2 ++
- 1 file changed, 2 insertions(+)
+ po4a/uk.po | 1710 +++++++++++++++++++++++++++++++-----------------------------
+ 1 file changed, 873 insertions(+), 837 deletions(-)
-commit d3e6fe44196bf9478ad193522e2b48febf2eca6b
+commit 2895195ed0f68b245c7bd568c126ba6e685fa1d6
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-12-20 20:46:44 +0800
+Date: 2024-02-16 22:51:04 +0800
- liblzma: Fix lzma_microlzma_encoder() return value.
-
- Using return_if_error on lzma_lzma_lclppb_encode was improper because
- return_if_error is expecting an lzma_ret value, but
- lzma_lzma_lclppb_encode returns a boolean. This could result in
- lzma_microlzma_encoder, which would be misleading for applications.
+ Translations: Update the Ukrainian translation.
- src/liblzma/common/microlzma_encoder.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
+ po/uk.po | 466 ++++++++++++++++++++++++++++++---------------------------------
+ 1 file changed, 225 insertions(+), 241 deletions(-)
-commit b55a27b46f52524a4a8d9cdef03e6689cefc1375
+commit 4c20781f4c8f04879b64d631a4f44b4909147bde
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-16 18:30:02 +0200
+Date: 2024-02-15 22:32:52 +0200
- liblzma: Update authors list in arm64.c.
+ Translations: Omit the generic copyright line from man page headers.
- src/liblzma/simple/arm64.c | 1 +
+ po4a/update-po | 1 +
1 file changed, 1 insertion(+)
-commit 2fd28d2b7cec3468324a6f15eff7e73c285b1d7d
+commit 4323bc3e0c1e1d2037d5e670a3bf6633e8a3031e
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-12-16 20:58:55 +0800
+Date: 2024-02-15 22:26:43 +0800
- CMake: Update .gitignore for CMake artifacts from in source build.
-
- In source builds are not recommended, but we can make it easier
- by ignoring the generated artifacts from CMake.
+ Update m4/.gitignore.
- .gitignore | 23 +++++++++++++++++++++++
- 1 file changed, 23 insertions(+)
+ m4/.gitignore | 1 +
+ 1 file changed, 1 insertion(+)
-commit b69da6d4bb6bb11fc0cf066920791990d2b22a06
+commit 5394a1665b7a108a54cb8b4ef3ebe59d3dbcca3a
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-13 20:37:17 +0200
+Date: 2024-02-14 21:11:49 +0200
- Bump version to 5.4.0 and soname to 5.4.0.
+ Tests: tuktest.h: Treat Clang separately from GCC.
+
+ Don't assume that Clang defines __GNUC__ as the extensions
+ are available in clang-cl as well (and possibly in some other
+ Clang variants?).
- src/liblzma/Makefile.am | 2 +-
- src/liblzma/api/lzma/version.h | 6 +++---
- src/liblzma/liblzma_generic.map | 2 +-
- src/liblzma/liblzma_linux.map | 2 +-
- 4 files changed, 6 insertions(+), 6 deletions(-)
+ tests/tuktest.h | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
-commit 20869eb3fb280ff4f271ef527b12b6bf68b05e19
+commit cce7330b9f23485a0879422e0c3395a7065439ac
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-13 20:29:39 +0200
+Date: 2024-02-14 21:11:03 +0200
- Update INSTALL: CMake on Windows isn't experimental anymore.
-
- Using CMake to build liblzma should work on a few other OSes
- but building the command line tools is still subtly broken.
-
- It is known that shared library versioning may differ between
- CMake and Libtool builds on some OSes, most notably Darwin.
+ Tests: tuktest.h: Add a missing word to a comment.
- INSTALL | 10 ++++------
- 1 file changed, 4 insertions(+), 6 deletions(-)
+ tests/tuktest.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit cbbd84451944e3e8c63acfaa3c923f6d8aff7852
+commit 5dd8fc9452a3373cedc27379067ce638f992c741
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-13 19:47:53 +0200
+Date: 2024-02-14 21:10:10 +0200
- Add NEWS for 5.4.0.
+ Tests: tuktest.h: Fix the comment about STest.
- NEWS | 202 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 202 insertions(+)
+ tests/tuktest.h | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
-commit c3e94d37e8d10a3e96019864b6f5d7b578db2c14
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-13 17:41:20 +0200
+commit 6f1790254a03c5edf0f2976f773220f070450acd
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-15 01:53:40 +0800
- Fix a typo in NEWS.
+ Bump version for 5.5.2beta.
- NEWS | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ src/liblzma/api/lzma/version.h | 4 ++--
+ src/liblzma/liblzma_generic.map | 2 +-
+ src/liblzma/liblzma_linux.map | 2 +-
+ 3 files changed, 4 insertions(+), 4 deletions(-)
-commit 0d2a2e0a545c3da2b3e9500f1e531eb903087245
+commit 924fdeedf48113fb1e0646d86bd89a356d21a055
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-13 17:41:03 +0200
+Date: 2024-02-14 19:46:11 +0200
- Add NEWS for 5.2.10.
+ liblzma: Fix validate_map.sh.
+
+ Adding the SPDX license identifier changed the line numbers.
- NEWS | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
+ src/liblzma/validate_map.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 177ece1c8eb007188fb1b04eff09ca2193fbdea6
+commit 22140a2df6161b0110e6b4afa5ea0a07c5b60b01
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-13 12:30:45 +0200
+Date: 2024-02-14 19:38:34 +0200
- Tests: Fix a typo in tests/files/README.
+ Build: Start the generated ChangeLog from around 5.4.0 instead of 5.2.0.
- tests/files/README | 2 +-
+ Makefile.am | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-commit 60f45bdbaa6b07558b3f4baac285739b0c6342f5
+commit 0b8cefa136c21d403a01b78517f4decb50172bdb
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-13 12:30:09 +0200
+Date: 2024-02-14 19:27:46 +0200
- Tests: Add two ARM64 test files.
+ Fixed NEWS for 5.5.2beta.
- tests/files/README | 7 +++++++
- tests/files/good-1-arm64-lzma2-1.xz | Bin 0 -> 512 bytes
- tests/files/good-1-arm64-lzma2-2.xz | Bin 0 -> 488 bytes
- tests/test_files.sh | 5 +++++
- 4 files changed, 12 insertions(+)
+ NEWS | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
-commit f5e419550619c548c7c35d7e367cf00580a56521
+commit a4557bad96361d93ea171ed859ac5a696fca824f
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-12 22:44:21 +0200
+Date: 2024-02-14 19:21:45 +0200
- Translations: Update the Catalan translation.
+ liblzma: Silence warnings in --enable-small build.
- po/ca.po | 657 +++++++++++++++++++++++++++++----------------------------------
- 1 file changed, 306 insertions(+), 351 deletions(-)
+ src/liblzma/lzma/lzma_decoder.c | 2 ++
+ src/liblzma/rangecoder/range_decoder.h | 1 +
+ 2 files changed, 3 insertions(+)
-commit 0fb9d355da3789b1757040af475b4e6bbc8b8af8
+commit 38edf473236d00b3e100dc4c4f0bf43a4993fed2
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-12 19:18:12 +0200
+Date: 2024-02-14 19:15:58 +0200
- Update THANKS.
+ Build: Install COPYING.0BSD as part of docs.
- THANKS | 1 +
+ Makefile.am | 1 +
1 file changed, 1 insertion(+)
-commit e5b6c161c61a37c54dcb76a99bbb83ac4abe02dc
+commit b74e10bd839bcdc239afb5300ffaee195f34c217
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-12 19:07:58 +0200
+Date: 2024-02-14 19:14:05 +0200
- Update AUTHORS.
+ Docs: List COPYING.0BSD in README.
- AUTHORS | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
+ README | 1 +
+ 1 file changed, 1 insertion(+)
-commit f2d98e691099d82054d5f3071ef6f5e809932e44
+commit dfdb60ffe933a1f1497d300dbb4513ed17ec6f0e
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-12 15:31:14 +0200
+Date: 2024-02-14 19:11:48 +0200
- Docs: Omit multi-threaded decompress from TODO.
+ Docs: Include doc/examples/11_file_info.c in tarballs.
- The TODO file outdated still.
-
- TODO | 2 --
- 1 file changed, 2 deletions(-)
-
-commit b42908c42a4cc091db45a7e5ba0e0ecceaa3f6da
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-11 21:16:09 +0200
+ It was added in 2017 in c2e29f06a7d1e3ba242ac2fafc69f5d6e92f62cd
+ but it never got into any release tarballs because it was
+ forgotten to be added to Makefile.am.
- Docs: Update xz-file-format.txt to 1.1.0 for ARM64 filter.
-
- doc/xz-file-format.txt | 29 ++++++++++++++++++++++-------
- 1 file changed, 22 insertions(+), 7 deletions(-)
+ Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
-commit 854f2f5946b353cb0963fd6dfd54d363adc89b9f
+commit 160b6862646d95dfdbd73ab7f1031ede0f54992d
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-11 21:13:57 +0200
+Date: 2024-02-14 19:05:58 +0200
- xz: Rename --experimental-arm64 to --arm64.
+ liblzma: Silence a warning.
- src/xz/args.c | 2 +-
+ src/liblzma/rangecoder/range_decoder.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-commit 31dbd1e5fb65831915a7bbb531c3f19aea8d57a5
+commit eeedd4d0925ea417add04ceb42a6c0829244b50c
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-11 21:13:06 +0200
+Date: 2024-02-14 18:32:27 +0200
- liblzma: Change LZMA_FILTER_ARM64 to the official Filter ID 0x0A.
+ Add NEWS for 5.5.2beta.
- src/liblzma/api/lzma/bcj.h | 6 +-----
- 1 file changed, 1 insertion(+), 5 deletions(-)
+ NEWS | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 60 insertions(+)
-commit 01b3549e523edac899ec4925b282ceddd20da116
+commit 8af7db854f903068d72a9a0d21103cb0c5027fa8
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-08 19:24:22 +0200
+Date: 2024-02-13 14:32:47 +0200
- xz: Make args_info.files_name a const pointer.
+ xz: Mention lzmainfo if trying to use 'lzma --list'.
+
+ This kind of fixes the problem reported here:
+ https://bugs.launchpad.net/ubuntu/+source/xz-utils/+bug/1291020
- src/xz/args.c | 2 +-
- src/xz/args.h | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
+ src/xz/list.c | 16 ++++++++++++++--
+ 1 file changed, 14 insertions(+), 2 deletions(-)
-commit bc665b84ea6bf7946394a08122177efe41b26a5f
+commit 0668907ff736e4cd16738c10d39a2bc9e851aefb
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-08 19:18:16 +0200
+Date: 2024-02-14 14:58:36 +0200
- xz: Don't modify argv[].
-
- The code that parses --memlimit options and --block-list modified
- the argv[] when parsing the option string from optarg. This was
- visible in "ps auxf" and such and could be confusing. I didn't
- understand it back in the day when I wrote that code. Now a copy
- is allocated when modifiable strings are needed.
+ liblzma: Add comments.
- src/xz/args.c | 23 +++++++++++++++++++----
- 1 file changed, 19 insertions(+), 4 deletions(-)
+ src/liblzma/lzma/lzma_decoder.c | 9 +++++++++
+ src/liblzma/rangecoder/range_decoder.h | 11 +++++++++--
+ 2 files changed, 18 insertions(+), 2 deletions(-)
-commit a13064e1c290de7933db72b6dffbd65cfce59c9f
+commit 109f1913d4824c8214d5bbd38ebebf62c37572da
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-08 18:18:57 +0200
+Date: 2024-02-13 17:00:17 +0200
- Translations: Update the German man page translations.
+ Scripts: Add lz4 support to xzgrep and xzdiff.
- po4a/de.po | 4570 ++++++++++++++++++------------------------------------------
- 1 file changed, 1374 insertions(+), 3196 deletions(-)
+ src/scripts/xzdiff.1 | 8 +++++---
+ src/scripts/xzdiff.in | 14 +++++++++-----
+ src/scripts/xzgrep.1 | 6 ++++--
+ src/scripts/xzgrep.in | 1 +
+ 4 files changed, 19 insertions(+), 10 deletions(-)
-commit 8bdbe42a8d0d75dff70206b923fc4bce5c69a40a
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-12-06 23:05:56 +0800
+commit de55485cb23af56c5adbe3239b935c957ff8ac4f
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-13 14:05:13 +0200
- Translations: Update the German translation.
+ liblzma: Choose the range decoder variants using a bitmask macro.
- po/de.po | 586 ++++++++++++++++++++++++++++++++++-----------------------------
- 1 file changed, 315 insertions(+), 271 deletions(-)
+ src/liblzma/rangecoder/range_decoder.h | 64 ++++++++++++++++++++++++++++------
+ 1 file changed, 53 insertions(+), 11 deletions(-)
-commit 5c304b57c24ef40ff57f864301065f0244c05bde
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-12-06 23:04:25 +0800
+commit 0709c2b2d7c1d8f437b003f691880fd7810e5be5
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-13 11:38:10 +0200
- Translations: Update the Turkish translation.
+ xz: Fix outdated threading related info on the man page.
- po/tr.po | 221 +++++++++++++++++++++++++++++++--------------------------------
- 1 file changed, 108 insertions(+), 113 deletions(-)
+ src/xz/xz.1 | 22 ++++++++++++++--------
+ 1 file changed, 14 insertions(+), 8 deletions(-)
-commit 6d86781fdb937970486500447ebb49b98244235b
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-12-06 23:02:11 +0800
+commit 3182a330c1512cc1f5c87b5c5a272578e60a5158
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-12 17:09:10 +0200
- Translations: Update the Croatian translation.
+ liblzma: Range decoder: Add x86-64 inline assembly.
+
+ It's compatible with GCC and Clang.
- po/hr.po | 228 +++++++++++++++++++++++++++++++--------------------------------
- 1 file changed, 113 insertions(+), 115 deletions(-)
+ src/liblzma/rangecoder/range_decoder.h | 491 +++++++++++++++++++++++++++++++++
+ 1 file changed, 491 insertions(+)
-commit 7a5b4b8075eb36026b1796f04ffed5830c42396a
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-12-06 22:56:30 +0800
+commit cba2edc991dffba7cd4891dbc1bd26cb950cf053
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-12 17:09:10 +0200
- Translations: Add Romanian translation of man pages.
+ liblzma: Range decoder: Add branchless C code.
- Thanks to Remus-Gabriel Chelu.
+ It's used only for basic bittrees and fixed-size reverse bittree
+ because those showed a clear benefit on x86-64 with GCC and Clang.
+ The other methods were more mixed and thus are commented out but
+ they should be tested on other archs.
- po4a/po4a.conf | 2 +-
- po4a/ro.po | 3692 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 3693 insertions(+), 1 deletion(-)
+ src/liblzma/rangecoder/range_decoder.h | 76 ++++++++++++++++++++++++++++++++++
+ 1 file changed, 76 insertions(+)
-commit c6977e7400088177556e8771bcb839eb7d90caa3
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-12-06 22:52:13 +0800
+commit e290a72d6dee71faf3a90c9678b2f730083666a7
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-12 17:09:10 +0200
- Translations: Update the Romanian translation.
+ liblzma: Clarify a comment.
- po/ro.po | 294 +++++++++++++++++++++++++++++++--------------------------------
- 1 file changed, 147 insertions(+), 147 deletions(-)
+ src/liblzma/lzma/lzma_decoder.c | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
-commit ac2a747e939c2cbccff7a49c399769af5e02d2ab
+commit 5e04706b91ca90d6befd4da24a588a55e631d4a9
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-08 17:30:09 +0200
+Date: 2024-02-12 17:09:10 +0200
- liblzma: Check for unexpected NULL pointers in block_header_decode().
+ liblzma: LZMA decoder: Optimize loop comparison.
- The API docs gave an impression that such checks are done
- but they actually weren't done. In practice it made little
- difference since the calling code has a bug if these are NULL.
-
- Thanks to Jia Tan for the original patch that checked for
- block->filters == NULL.
+ But now it needs one more local variable.
- src/liblzma/common/block_header_decoder.c | 4 ++++
- 1 file changed, 4 insertions(+)
+ src/liblzma/lzma/lzma_decoder.c | 5 ++---
+ src/liblzma/rangecoder/range_decoder.h | 10 +++++++++-
+ 2 files changed, 11 insertions(+), 4 deletions(-)
-commit 24790f49ae66938c1c7574315e1c0aba1ed5ed25
+commit 88276f9f2cb4871c7eb86952d93d07c1cf6caa66
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-01 20:59:32 +0200
+Date: 2024-02-12 17:09:10 +0200
- Bump version number for 5.3.5beta.
-
- This also sorts the symbol names alphabetically in liblzma_*.map.
+ liblzma: Optimize literal_subcoder() macro slightly.
- src/liblzma/api/lzma/version.h | 4 ++--
- src/liblzma/liblzma_generic.map | 10 +++++-----
- src/liblzma/liblzma_linux.map | 10 +++++-----
- 3 files changed, 12 insertions(+), 12 deletions(-)
+ src/liblzma/lzma/lzma_common.h | 22 ++++++++++++----------
+ src/liblzma/lzma/lzma_decoder.c | 12 ++++++------
+ src/liblzma/lzma/lzma_encoder.c | 6 +++---
+ src/liblzma/lzma/lzma_encoder_optimum_normal.c | 2 +-
+ src/liblzma/lzma/lzma_encoder_private.h | 4 ++--
+ 5 files changed, 24 insertions(+), 22 deletions(-)
-commit 7e53c5bcb3c2c17f47c096c06ff6b1481e6ecafa
+commit 5938f6de4d8ec9656776cd69e78ddfd6c3ad84e5
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-01 20:57:26 +0200
+Date: 2024-02-12 17:09:10 +0200
- Add NEWS for 5.3.5beta.
+ liblzma: LZ decoder: Add unlikely().
- NEWS | 43 +++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 43 insertions(+)
+ src/liblzma/lz/lz_decoder.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 5865f2aaac326fcbd9f8a7d62defa230e4cb644e
+commit 9c252e3ed086c6b72590b2531586c42596d4a9d9
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-01 20:57:09 +0200
+Date: 2024-02-12 17:09:10 +0200
- Update THANKS.
+ liblzma: LZ decoder: Remove a useless unlikely().
- THANKS | 3 +++
- 1 file changed, 3 insertions(+)
+ src/liblzma/lz/lz_decoder.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 62b270988ec67314d69976df484d2974c6eacfda
+commit f3872a59475456c5d365cad9f1c5be514cfa54b5
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-01 20:04:17 +0200
+Date: 2024-02-12 17:09:10 +0200
- liblzma: Use __has_attribute(__symver__) to fix Clang detection.
+ liblzma: Optimize LZ decoder slightly.
- If someone sets up Clang to define __GNUC__ to 10 or greater
- then symvers broke. __has_attribute is supported by such GCC
- and Clang versions that don't support __symver__ so this should
- be much better and simpler way to detect if __symver__ is
- actually supported.
+ Now extra buffer space is reserved so that repeating bytes for
+ any single match will never need to copy from two places (both
+ the beginning and the end of the buffer). This simplifies
+ dict_repeat() and helps a little with speed.
- Thanks to Tomasz Gajc for the bug report.
+ This seems to reduce .lzma decompression time about 2 %, so
+ with .xz and CRC it could be slightly less. The small things
+ add up still.
- src/liblzma/common/common.h | 15 ++++++++++++++-
- 1 file changed, 14 insertions(+), 1 deletion(-)
+ src/liblzma/lz/lz_decoder.c | 43 ++++++++++++-----
+ src/liblzma/lz/lz_decoder.h | 101 +++++++++++++++++++++-------------------
+ src/liblzma/lzma/lzma_decoder.c | 4 +-
+ 3 files changed, 88 insertions(+), 60 deletions(-)
-commit f9ca7d45162664ddd9fb70e19335c2426e5d75bb
+commit eb518446e578acf079abae5f1ce28db7b6e59bc1
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-01 18:51:52 +0200
+Date: 2024-02-12 17:09:10 +0200
- liblzma: Omit zero-skipping from ARM64 filter.
+ liblzma: LZMA decoder: Get rid of next_state[].
- It has some complicated downsides and its usefulness is more limited
- than I originally thought. So this change is bad for certain very
- specific situations but a generic solution that works for other
- filters (and is otherwise better too) is planned anyway. And this
- way 7-Zip can use the same compatible filter for the .7z format.
+ It's not completely obvious if this is better in the decoder.
+ It should be good if compiler can avoid creating a branch
+ (like using CMOV on x86).
- This is still marked as experimental with a new temporary Filter ID.
+ This also makes lzma_encoder.c use the new macros.
- src/liblzma/api/lzma/bcj.h | 2 +-
- src/liblzma/simple/arm64.c | 81 +++++++++++++---------------------------------
- 2 files changed, 24 insertions(+), 59 deletions(-)
+ src/liblzma/lzma/lzma_common.h | 14 ++++++++++++++
+ src/liblzma/lzma/lzma_decoder.c | 30 ++++++++----------------------
+ src/liblzma/lzma/lzma_encoder.c | 4 ++--
+ 3 files changed, 24 insertions(+), 24 deletions(-)
-commit 5baec3f0a9c85e6abf45c0f652f699b074129a8b
+commit e0c0ee475c0800c08291ae45e0d66aa00d5ce604
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-01 18:13:27 +0200
+Date: 2024-02-12 17:09:10 +0200
- xz: Omit the special notes about ARM64 filter on the man page.
+ liblzma: LZMA decoder improvements.
+
+ This adds macros for bittree decoding which prepares the code
+ for alternative C versions and inline assembly.
- src/xz/xz.1 | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
+ src/liblzma/lzma/lzma_decoder.c | 264 ++++++++++-----------------------
+ src/liblzma/rangecoder/range_common.h | 4 +
+ src/liblzma/rangecoder/range_decoder.h | 142 ++++++++++++++++--
+ 3 files changed, 210 insertions(+), 200 deletions(-)
-commit 0c3627b51862eb0dcdd4fc283d046250571991c6
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-01 18:12:03 +0200
+commit de5c5e417645ad8906ef914bc059d08c1462fc29
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-12 17:09:10 +0200
- liblzma: Don't be over-specific in lzma_str_to_filters API doc.
+ liblzma: Creates Non-resumable and Resumable modes for lzma_decoder.
+
+ The new decoder resumes the first decoder loop in the Resumable mode.
+ Then, the code executes in Non-resumable mode until it detects that it
+ cannot guarantee to have enough input/output to decode another symbol.
+
+ The Resumable mode is how the decoder has always worked. Before decoding
+ every input bit, it checks if there is enough space and will save its
+ location to be resumed later. When the decoder has more input/output,
+ it jumps back to the correct sequence in the Resumable mode code.
+
+ When the input/output buffers are large, the Resumable mode is much
+ slower than the Non-resumable because it has more branches and is harder
+ for the compiler to optimize since it is in a large switch block.
+
+ Early benchmarking shows significant time improvement (8-10% on gcc and
+ clang x86) by using the Non-resumable code as much as possible.
- src/liblzma/api/lzma/filter.h | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
+ src/liblzma/lz/lz_decoder.h | 14 +-
+ src/liblzma/lzma/lzma_decoder.c | 720 ++++++++++++++++++++++++++++------------
+ 2 files changed, 521 insertions(+), 213 deletions(-)
-commit 94adf057f27b1970f493dc99cd166407d7255639
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-01 17:54:23 +0200
+commit e446ab7a18abfde18f8d1cf02a914df72b1370e3
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-12 17:09:10 +0200
- liblzma: Silence unused variable warning when BCJ filters are disabled.
+ liblzma: Creates separate "safe" range decoder mode.
- Thanks to Jia Tan for the original patch.
+ The new "safe" range decoder mode is the same as old range decoder, but
+ now the default behavior of the range decoder will not check if there is
+ enough input or output to complete the operation. When the buffers are
+ close to fully consumed, the "safe" operations must be used instead. This
+ will improve speed because it will reduce the number of branches needed
+ for most of the range decoder operations.
- src/liblzma/common/string_conversion.c | 15 +++++++++++++++
- 1 file changed, 15 insertions(+)
+ src/liblzma/lzma/lzma_decoder.c | 108 ++++++++-------------------------
+ src/liblzma/rangecoder/range_decoder.h | 77 +++++++++++++++++------
+ 2 files changed, 82 insertions(+), 103 deletions(-)
-commit c68af4441744e5ffc41a472e1be9c9d53a1d9780
+commit 7f6d9ca329ff3e01d4b0be7366eb4f5c93da41b9
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-12-01 17:38:03 +0200
+Date: 2024-02-12 17:09:10 +0200
- Translations: Update the Chinese (simplified) translation.
+ doxygen/footer.html: Add missing closing tags and don't open a new tab.
+
+ The footer template from Doxygen has the closing </body> </html>
+ as Doxygen doesn't add them otherwise.
+
+ target="_blank" was omitted as it's not useful here but
+ it can be slightly annoying as one cannot just go back
+ in the browser history.
+
+ Since the footer links to the license file in the same
+ directory and not to CC website, the rel attributes
+ can be omitted.
- po/zh_CN.po | 608 ++++++++++++++++++++++++++++++++++--------------------------
- 1 file changed, 348 insertions(+), 260 deletions(-)
+ doxygen/footer.html | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
-commit 3be6942e5c27d29995d41da52fbe274e4ce4a537
+commit 26d1527d34d52b0f5d632d4fb636fb33d0867e92
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-30 18:55:03 +0200
+Date: 2024-02-13 13:19:10 +0200
- Add NEWS for 5.2.9.
+ Tweak the expressions in AUTHORS.
- NEWS | 34 ++++++++++++++++++++++++++++++++++
- 1 file changed, 34 insertions(+)
+ AUTHORS | 31 +++++++++++++++++++++++--------
+ 1 file changed, 23 insertions(+), 8 deletions(-)
-commit 7c16e312cb2f40b81154c0e5be13a3c6b8da485d
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-11-30 23:33:08 +0800
+commit d231d56580175fa040fdd3c6207a58243ce6217b
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-13 13:07:33 +0200
- xz: Remove message_filters_to_str function prototype from message.h.
+ Translations: Add the man page translators into man page header comment.
- This was forgotten from 7484744af6cbabe81e92af7d9e061dfd597fff7b.
+ It looked odd to only have the original English authors listed
+ in the header comments of the translated files.
- src/xz/message.h | 16 ----------------
- 1 file changed, 16 deletions(-)
+ po4a/.gitignore | 1 +
+ po4a/po4a.conf | 14 +++++++-------
+ po4a/update-po | 18 ++++++++++++++++++
+ 3 files changed, 26 insertions(+), 7 deletions(-)
-commit 764955e2d4f2a5e8d6d6fec63af694f799e050e7
+commit 6d35fcb936474fca1acaebfd9502c097b6fde88e
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-30 18:08:34 +0200
+Date: 2024-02-12 17:09:10 +0200
- Change the bug report address.
+ Translations: Translate also messages of lzmainfo.
- It forwards to me and Jia Tan.
+ lzmainfo has had translation support since 2009 at least but
+ it was never added to po/POTFILES.in so the messages weren't
+ translated. It's a very rarely needed tool so it's not too bad.
- Also update the IRC reference in README as #tukaani was moved
- to Libera Chat long ago.
+ This also adds src/xz/mytime.c to po/POTFILES.in although there
+ are no translatable strings. It's simpler this way so that it
+ won't be forgotten if strings were ever added to that file.
- CMakeLists.txt | 2 +-
- README | 11 +++++------
- configure.ac | 2 +-
- dos/config.h | 2 +-
- windows/README-Windows.txt | 2 +-
- 5 files changed, 9 insertions(+), 10 deletions(-)
+ po/POTFILES.in | 2 ++
+ 1 file changed, 2 insertions(+)
-commit c21983c76031e01da01ad3c6cc716fe4b8a75070
+commit a9f369dd54b05f9ac4e00ead9d765d04fc259868
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-30 17:50:17 +0200
+Date: 2024-02-12 17:09:10 +0200
- Build: Add string_conversion.c to CMake, DOS, and VS files.
+ Translations: Add custom .pot header with SPDX license identifier.
+
+ The same is used for both po/xz.pot and po4a/xz-man.pot.
- CMakeLists.txt | 1 +
- dos/Makefile | 1 +
- windows/vs2013/liblzma.vcxproj | 1 +
- windows/vs2013/liblzma_dll.vcxproj | 1 +
- windows/vs2017/liblzma.vcxproj | 1 +
- windows/vs2017/liblzma_dll.vcxproj | 1 +
- windows/vs2019/liblzma.vcxproj | 1 +
- windows/vs2019/liblzma_dll.vcxproj | 1 +
- 8 files changed, 8 insertions(+)
+ Makefile.am | 1 +
+ po/xz.pot-header | 7 +++++++
+ po4a/update-po | 8 ++++++++
+ 3 files changed, 16 insertions(+)
-commit 30be0c35d24eb5175459d69dbf7d92e2b087ef82
+commit 469cd6653bb96e83c5cf1031c204d34566b15f44
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-30 17:38:32 +0200
-
- Update to HTTPS URLs in AUTHORS.
+Date: 2024-02-12 17:09:10 +0200
- AUTHORS | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-commit 0a72b9ca2fe20082da9b7128fe0d908af947a851
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-11-30 00:52:06 +0800
-
- liblzma: Improve documentation for string to filter functions.
+ Translations: po4a/update-po: Add copyright notice to xz-man.pot.
+
+ All man pages are under 0BSD now so this is simple now.
- src/liblzma/api/lzma/filter.h | 17 +++++++++--------
- 1 file changed, 9 insertions(+), 8 deletions(-)
+ po4a/update-po | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit a6e21fcede3b196160a52dd294d965c508a4bb33
+commit 28ce45e38fbed4b5f54f2013e38dab47d22bf699
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-29 22:27:42 +0200
+Date: 2024-02-12 17:09:10 +0200
- liblzma: Two fixes to lzma_str_list_filters() API docs.
-
- Thanks to Jia Tan.
+ Update COPYING about the man pages of the scripts.
- src/liblzma/api/lzma/filter.h | 6 +++---
+ COPYING | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
-commit 7484744af6cbabe81e92af7d9e061dfd597fff7b
+commit e48287bf51afd5184ea74de1dcade9e153f873f7
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-28 21:57:47 +0200
+Date: 2024-02-12 17:09:10 +0200
- xz: Use lzma_str_from_filters().
+ xzdiff, xzgrep, and xzmore: Rewrite the man pages.
+
+ The main reason is a kind of silly one:
+
+ xz-man.pot contains strings from all man pages in XZ Utils.
+ The man pages of xzdiff, xzgrep, and xzmore were under GPLv2
+ and the rest under 0BSD. Thus xz-man.pot contained strings
+ under two licences. po4a creates the translated man pages
+ from the combined 0BSD+GPLv2 xz-man.pot.
+
+ I haven't liked this mixing in xz-man.pot but the
+ Translation Project requires that all man pages must be
+ in the same .pot file. So a separate xz-man-gpl.pot
+ wasn't an option.
- Two uses: Displaying encoder filter chain when compressing with -vv,
- and displaying the decoder filter chain in --list -vv.
+ Since these man pages are short, rewriting them was quick enough.
+ Now xz-man.pot is entirely under 0BSD and marking the per-file
+ licenses is simpler.
+
+ As a bonus, some wording hopefully is now slightly better
+ although it's perhaps a matter of taste.
+
+ NOTE: In xzgrep.1, the EXIT STATUS section was written by me
+ in the commit d796b6d7fdb8b7238b277056cf9146cce25db604 so that's
+ why that section could be taken as is from the old xzgrep.1.
- src/xz/list.c | 28 ++++++---
- src/xz/message.c | 175 +++----------------------------------------------------
- 2 files changed, 28 insertions(+), 175 deletions(-)
+ src/scripts/xzdiff.1 | 94 ++++++++++++++++++++++++-----------------
+ src/scripts/xzgrep.1 | 116 ++++++++++++++++++++++++++++++++-------------------
+ src/scripts/xzmore.1 | 79 ++++++++++++++++++++---------------
+ 3 files changed, 173 insertions(+), 116 deletions(-)
-commit cedeeca2ea6ada5b0411b2ae10d7a859e837f203
+commit 3e551b111b8ae8150f1a1040364dbafc034f22be
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-28 21:37:48 +0200
+Date: 2024-02-12 17:09:10 +0200
- liblzma: Add lzma_str_to_filters, _from_filters, and _list_filters.
+ xzless: Update man page slightly.
- lzma_str_to_filters() uses static error messages which makes
- them not very precise. It tells the position in the string
- where an error occurred though which helps quite a bit if
- applications take advantage of it. Dynamic error messages can
- be added later with a new flag if it seems important enough.
+ The xz tool can decompress three file formats and xzless
+ has always supported uncompressed files too.
- src/liblzma/api/lzma/filter.h | 258 +++++++
- src/liblzma/common/Makefile.inc | 1 +
- src/liblzma/common/string_conversion.c | 1302 ++++++++++++++++++++++++++++++++
- src/liblzma/liblzma_generic.map | 3 +
- src/liblzma/liblzma_linux.map | 3 +
- 5 files changed, 1567 insertions(+)
+ src/scripts/xzless.1 | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
-commit 072ebf7b1335421193ffa9d4a70d5533786b8995
+commit 40f36da2262d13d6e1ba8449caa855512ae626d7
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-28 21:02:19 +0200
+Date: 2024-02-12 17:09:10 +0200
- liblzma: Make lzma_validate_chain() available outside filter_common.c.
+ Translations: Change po/Makevars to add a copyright notice to po/xz.pot.
- src/liblzma/common/filter_common.c | 8 ++++----
- src/liblzma/common/filter_common.h | 3 +++
- 2 files changed, 7 insertions(+), 4 deletions(-)
+ po/Makevars | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit 5f22bd2d37e3bd01a5d701b51750eb51f09c11bf
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-28 10:51:03 +0200
+commit 24192854e2ea5c06997431a98bda3c36c5da1497
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-12 17:09:10 +0200
+
+ Translations: Update po/Makevars to use the template from gettext 0.22.4.
+
+ Also add SPDX license identifier now that there is a known license.
+
+ po/Makevars | 51 ++++++++++++++++++++++++++++++++++++++++++++++-----
+ 1 file changed, 46 insertions(+), 5 deletions(-)
+
+commit b94154957370116480b43bcabca25fc52deb9853
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-12 17:09:10 +0200
+
+ liblzma: Include the SPDX license identifier 0BSD to generated files.
+
+ Perhaps the generated files aren't even copyrightable but
+ using the same license for them as for the rest of the liblzma
+ keeps things more consistent for tools that look for license info.
+
+ src/liblzma/check/crc32_table_be.h | 4 +++-
+ src/liblzma/check/crc32_table_le.h | 4 +++-
+ src/liblzma/check/crc32_tablegen.c | 16 ++++++++++------
+ src/liblzma/check/crc64_table_be.h | 4 +++-
+ src/liblzma/check/crc64_table_le.h | 4 +++-
+ src/liblzma/check/crc64_tablegen.c | 8 +++++---
+ src/liblzma/lz/lz_encoder_hash_table.h | 4 +++-
+ src/liblzma/lzma/fastpos_table.c | 4 +++-
+ src/liblzma/lzma/fastpos_tablegen.c | 12 +++++++-----
+ src/liblzma/rangecoder/price_table.c | 4 +++-
+ src/liblzma/rangecoder/price_tablegen.c | 12 +++++++-----
+ 11 files changed, 50 insertions(+), 26 deletions(-)
+
+commit 8e4ec794836bc1701d8c9bd5e347b8ce8cc5bbb4
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-12 17:09:10 +0200
+
+ liblzma: Fix compilation of price_tablegen.c.
+
+ It is built and run only manually so this didn't matter
+ unless one wanted to regenerate the price_table.c.
+
+ src/liblzma/rangecoder/price_tablegen.c | 5 +++++
+ src/liblzma/rangecoder/range_common.h | 5 ++++-
+ 2 files changed, 9 insertions(+), 1 deletion(-)
+
+commit e99bff3ffbcdf2634fd5bd13887627ec7dbfecaf
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-12 17:09:10 +0200
+
+ Add SPDX license identifiers to GPL, LGPL, and FSFULLR files.
+
+ extra/scanlzma/scanlzma.c | 2 ++
+ lib/Makefile.am | 2 ++
+ lib/getopt-cdefs.h | 2 ++
+ lib/getopt-core.h | 2 ++
+ lib/getopt-ext.h | 2 ++
+ lib/getopt-pfx-core.h | 2 ++
+ lib/getopt-pfx-ext.h | 2 ++
+ lib/getopt.c | 2 ++
+ lib/getopt.in.h | 2 ++
+ lib/getopt1.c | 2 ++
+ lib/getopt_int.h | 2 ++
+ m4/ax_pthread.m4 | 2 ++
+ m4/getopt.m4 | 2 ++
+ m4/posix-shell.m4 | 2 ++
+ m4/visibility.m4 | 2 ++
+ src/scripts/xzdiff.1 | 3 +--
+ src/scripts/xzdiff.in | 1 +
+ src/scripts/xzgrep.1 | 3 +--
+ src/scripts/xzgrep.in | 1 +
+ src/scripts/xzless.in | 1 +
+ src/scripts/xzmore.1 | 3 +--
+ src/scripts/xzmore.in | 1 +
+ 22 files changed, 37 insertions(+), 6 deletions(-)
+
+commit 22af94128b89a131f5e58ae69bee5e50227c15da
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-12 17:09:10 +0200
+
+ Add SPDX license identifier into 0BSD source code files.
+
+ .github/workflows/ci.yml | 2 ++
+ .github/workflows/windows-ci.yml | 2 ++
+ CMakeLists.txt | 2 ++
+ Makefile.am | 3 +--
+ autogen.sh | 1 +
+ build-aux/ci_build.sh | 3 ++-
+ build-aux/manconv.sh | 3 ++-
+ build-aux/version.sh | 3 ++-
+ cmake/remove-ordinals.cmake | 2 ++
+ cmake/tuklib_common.cmake | 4 ++++
+ cmake/tuklib_cpucores.cmake | 4 ++++
+ cmake/tuklib_integer.cmake | 4 ++++
+ cmake/tuklib_large_file_support.cmake | 4 ++++
+ cmake/tuklib_mbstr.cmake | 4 ++++
+ cmake/tuklib_physmem.cmake | 4 ++++
+ cmake/tuklib_progname.cmake | 4 ++++
+ configure.ac | 4 +++-
+ debug/Makefile.am | 3 +--
+ debug/crc32.c | 2 ++
+ debug/full_flush.c | 2 ++
+ debug/hex2bin.c | 2 ++
+ debug/known_sizes.c | 2 ++
+ debug/memusage.c | 2 ++
+ debug/repeat.c | 2 ++
+ debug/sync_flush.c | 2 ++
+ debug/translation.bash | 1 +
+ doc/examples/01_compress_easy.c | 2 ++
+ doc/examples/02_decompress.c | 2 ++
+ doc/examples/03_compress_custom.c | 2 ++
+ doc/examples/04_compress_easy_mt.c | 2 ++
+ doc/examples/11_file_info.c | 2 ++
+ doc/examples/Makefile | 3 +--
+ dos/Makefile | 2 ++
+ dos/config.h | 2 ++
+ doxygen/update-doxygen | 3 ++-
+ extra/7z2lzma/7z2lzma.bash | 3 ++-
+ m4/tuklib_common.m4 | 8 ++++++--
+ m4/tuklib_cpucores.m4 | 8 ++++++--
+ m4/tuklib_integer.m4 | 8 ++++++--
+ m4/tuklib_mbstr.m4 | 8 ++++++--
+ m4/tuklib_physmem.m4 | 8 ++++++--
+ m4/tuklib_progname.m4 | 8 ++++++--
+ po/POTFILES.in | 2 ++
+ po4a/po4a.conf | 2 ++
+ po4a/update-po | 3 ++-
+ src/Makefile.am | 3 +--
+ src/common/common_w32res.rc | 2 ++
+ src/common/mythread.h | 2 ++
+ src/common/sysdefs.h | 2 ++
+ src/common/tuklib_common.h | 2 ++
+ src/common/tuklib_config.h | 2 ++
+ src/common/tuklib_cpucores.c | 2 ++
+ src/common/tuklib_cpucores.h | 2 ++
+ src/common/tuklib_exit.c | 2 ++
+ src/common/tuklib_exit.h | 2 ++
+ src/common/tuklib_gettext.h | 2 ++
+ src/common/tuklib_integer.h | 2 ++
+ src/common/tuklib_mbstr.h | 2 ++
+ src/common/tuklib_mbstr_fw.c | 2 ++
+ src/common/tuklib_mbstr_width.c | 2 ++
+ src/common/tuklib_open_stdxxx.c | 2 ++
+ src/common/tuklib_open_stdxxx.h | 2 ++
+ src/common/tuklib_physmem.c | 2 ++
+ src/common/tuklib_physmem.h | 2 ++
+ src/common/tuklib_progname.c | 2 ++
+ src/common/tuklib_progname.h | 2 ++
+ src/liblzma/Makefile.am | 3 +--
+ src/liblzma/api/Makefile.am | 3 +--
+ src/liblzma/api/lzma.h | 2 ++
+ src/liblzma/api/lzma/base.h | 2 ++
+ src/liblzma/api/lzma/bcj.h | 2 ++
+ src/liblzma/api/lzma/block.h | 2 ++
+ src/liblzma/api/lzma/check.h | 2 ++
+ src/liblzma/api/lzma/container.h | 2 ++
+ src/liblzma/api/lzma/delta.h | 2 ++
+ src/liblzma/api/lzma/filter.h | 2 ++
+ src/liblzma/api/lzma/hardware.h | 2 ++
+ src/liblzma/api/lzma/index.h | 2 ++
+ src/liblzma/api/lzma/index_hash.h | 2 ++
+ src/liblzma/api/lzma/lzma12.h | 2 ++
+ src/liblzma/api/lzma/stream_flags.h | 2 ++
+ src/liblzma/api/lzma/version.h | 2 ++
+ src/liblzma/api/lzma/vli.h | 2 ++
+ src/liblzma/check/Makefile.inc | 4 ++--
+ src/liblzma/check/check.c | 2 ++
+ src/liblzma/check/check.h | 2 ++
+ src/liblzma/check/crc32_arm64.h | 2 ++
+ src/liblzma/check/crc32_fast.c | 2 ++
+ src/liblzma/check/crc32_small.c | 2 ++
+ src/liblzma/check/crc32_table.c | 2 ++
+ src/liblzma/check/crc32_tablegen.c | 2 ++
+ src/liblzma/check/crc32_x86.S | 2 ++
+ src/liblzma/check/crc64_fast.c | 2 ++
+ src/liblzma/check/crc64_small.c | 2 ++
+ src/liblzma/check/crc64_table.c | 2 ++
+ src/liblzma/check/crc64_tablegen.c | 2 ++
+ src/liblzma/check/crc64_x86.S | 2 ++
+ src/liblzma/check/crc_common.h | 2 ++
+ src/liblzma/check/crc_x86_clmul.h | 2 ++
+ src/liblzma/check/sha256.c | 2 ++
+ src/liblzma/common/Makefile.inc | 3 +--
+ src/liblzma/common/alone_decoder.c | 2 ++
+ src/liblzma/common/alone_decoder.h | 2 ++
+ src/liblzma/common/alone_encoder.c | 2 ++
+ src/liblzma/common/auto_decoder.c | 2 ++
+ src/liblzma/common/block_buffer_decoder.c | 2 ++
+ src/liblzma/common/block_buffer_encoder.c | 2 ++
+ src/liblzma/common/block_buffer_encoder.h | 2 ++
+ src/liblzma/common/block_decoder.c | 2 ++
+ src/liblzma/common/block_decoder.h | 2 ++
+ src/liblzma/common/block_encoder.c | 2 ++
+ src/liblzma/common/block_encoder.h | 2 ++
+ src/liblzma/common/block_header_decoder.c | 2 ++
+ src/liblzma/common/block_header_encoder.c | 2 ++
+ src/liblzma/common/block_util.c | 2 ++
+ src/liblzma/common/common.c | 2 ++
+ src/liblzma/common/common.h | 2 ++
+ src/liblzma/common/easy_buffer_encoder.c | 2 ++
+ src/liblzma/common/easy_decoder_memusage.c | 2 ++
+ src/liblzma/common/easy_encoder.c | 2 ++
+ src/liblzma/common/easy_encoder_memusage.c | 2 ++
+ src/liblzma/common/easy_preset.c | 2 ++
+ src/liblzma/common/easy_preset.h | 2 ++
+ src/liblzma/common/file_info.c | 2 ++
+ src/liblzma/common/filter_buffer_decoder.c | 2 ++
+ src/liblzma/common/filter_buffer_encoder.c | 2 ++
+ src/liblzma/common/filter_common.c | 2 ++
+ src/liblzma/common/filter_common.h | 2 ++
+ src/liblzma/common/filter_decoder.c | 2 ++
+ src/liblzma/common/filter_decoder.h | 2 ++
+ src/liblzma/common/filter_encoder.c | 2 ++
+ src/liblzma/common/filter_encoder.h | 2 ++
+ src/liblzma/common/filter_flags_decoder.c | 2 ++
+ src/liblzma/common/filter_flags_encoder.c | 2 ++
+ src/liblzma/common/hardware_cputhreads.c | 2 ++
+ src/liblzma/common/hardware_physmem.c | 2 ++
+ src/liblzma/common/index.c | 2 ++
+ src/liblzma/common/index.h | 2 ++
+ src/liblzma/common/index_decoder.c | 2 ++
+ src/liblzma/common/index_decoder.h | 2 ++
+ src/liblzma/common/index_encoder.c | 2 ++
+ src/liblzma/common/index_encoder.h | 2 ++
+ src/liblzma/common/index_hash.c | 2 ++
+ src/liblzma/common/lzip_decoder.c | 2 ++
+ src/liblzma/common/lzip_decoder.h | 2 ++
+ src/liblzma/common/memcmplen.h | 2 ++
+ src/liblzma/common/microlzma_decoder.c | 2 ++
+ src/liblzma/common/microlzma_encoder.c | 2 ++
+ src/liblzma/common/outqueue.c | 2 ++
+ src/liblzma/common/outqueue.h | 2 ++
+ src/liblzma/common/stream_buffer_decoder.c | 2 ++
+ src/liblzma/common/stream_buffer_encoder.c | 2 ++
+ src/liblzma/common/stream_decoder.c | 2 ++
+ src/liblzma/common/stream_decoder.h | 2 ++
+ src/liblzma/common/stream_decoder_mt.c | 2 ++
+ src/liblzma/common/stream_encoder.c | 2 ++
+ src/liblzma/common/stream_encoder_mt.c | 2 ++
+ src/liblzma/common/stream_flags_common.c | 2 ++
+ src/liblzma/common/stream_flags_common.h | 2 ++
+ src/liblzma/common/stream_flags_decoder.c | 2 ++
+ src/liblzma/common/stream_flags_encoder.c | 2 ++
+ src/liblzma/common/string_conversion.c | 2 ++
+ src/liblzma/common/vli_decoder.c | 2 ++
+ src/liblzma/common/vli_encoder.c | 2 ++
+ src/liblzma/common/vli_size.c | 2 ++
+ src/liblzma/delta/Makefile.inc | 3 +--
+ src/liblzma/delta/delta_common.c | 2 ++
+ src/liblzma/delta/delta_common.h | 2 ++
+ src/liblzma/delta/delta_decoder.c | 2 ++
+ src/liblzma/delta/delta_decoder.h | 2 ++
+ src/liblzma/delta/delta_encoder.c | 2 ++
+ src/liblzma/delta/delta_encoder.h | 2 ++
+ src/liblzma/delta/delta_private.h | 2 ++
+ src/liblzma/liblzma.pc.in | 3 +--
+ src/liblzma/liblzma_generic.map | 2 ++
+ src/liblzma/liblzma_linux.map | 2 ++
+ src/liblzma/liblzma_w32res.rc | 2 ++
+ src/liblzma/lz/Makefile.inc | 3 +--
+ src/liblzma/lz/lz_decoder.c | 2 ++
+ src/liblzma/lz/lz_decoder.h | 2 ++
+ src/liblzma/lz/lz_encoder.c | 2 ++
+ src/liblzma/lz/lz_encoder.h | 2 ++
+ src/liblzma/lz/lz_encoder_hash.h | 2 ++
+ src/liblzma/lz/lz_encoder_mf.c | 2 ++
+ src/liblzma/lzma/Makefile.inc | 3 +--
+ src/liblzma/lzma/fastpos.h | 2 ++
+ src/liblzma/lzma/fastpos_tablegen.c | 2 ++
+ src/liblzma/lzma/lzma2_decoder.c | 2 ++
+ src/liblzma/lzma/lzma2_decoder.h | 2 ++
+ src/liblzma/lzma/lzma2_encoder.c | 2 ++
+ src/liblzma/lzma/lzma2_encoder.h | 2 ++
+ src/liblzma/lzma/lzma_common.h | 2 ++
+ src/liblzma/lzma/lzma_decoder.c | 2 ++
+ src/liblzma/lzma/lzma_decoder.h | 2 ++
+ src/liblzma/lzma/lzma_encoder.c | 2 ++
+ src/liblzma/lzma/lzma_encoder.h | 2 ++
+ src/liblzma/lzma/lzma_encoder_optimum_fast.c | 2 ++
+ src/liblzma/lzma/lzma_encoder_optimum_normal.c | 2 ++
+ src/liblzma/lzma/lzma_encoder_presets.c | 2 ++
+ src/liblzma/lzma/lzma_encoder_private.h | 2 ++
+ src/liblzma/rangecoder/Makefile.inc | 3 +--
+ src/liblzma/rangecoder/price.h | 2 ++
+ src/liblzma/rangecoder/price_tablegen.c | 2 ++
+ src/liblzma/rangecoder/range_common.h | 2 ++
+ src/liblzma/rangecoder/range_decoder.h | 2 ++
+ src/liblzma/rangecoder/range_encoder.h | 2 ++
+ src/liblzma/simple/Makefile.inc | 3 +--
+ src/liblzma/simple/arm.c | 2 ++
+ src/liblzma/simple/arm64.c | 2 ++
+ src/liblzma/simple/armthumb.c | 2 ++
+ src/liblzma/simple/ia64.c | 2 ++
+ src/liblzma/simple/powerpc.c | 2 ++
+ src/liblzma/simple/riscv.c | 2 ++
+ src/liblzma/simple/simple_coder.c | 2 ++
+ src/liblzma/simple/simple_coder.h | 2 ++
+ src/liblzma/simple/simple_decoder.c | 2 ++
+ src/liblzma/simple/simple_decoder.h | 2 ++
+ src/liblzma/simple/simple_encoder.c | 2 ++
+ src/liblzma/simple/simple_encoder.h | 2 ++
+ src/liblzma/simple/simple_private.h | 2 ++
+ src/liblzma/simple/sparc.c | 2 ++
+ src/liblzma/simple/x86.c | 2 ++
+ src/liblzma/validate_map.sh | 1 +
+ src/lzmainfo/Makefile.am | 3 +--
+ src/lzmainfo/lzmainfo.c | 2 ++
+ src/lzmainfo/lzmainfo_w32res.rc | 2 ++
+ src/scripts/Makefile.am | 3 +--
+ src/xz/Makefile.am | 3 +--
+ src/xz/args.c | 2 ++
+ src/xz/args.h | 2 ++
+ src/xz/coder.c | 2 ++
+ src/xz/coder.h | 2 ++
+ src/xz/file_io.c | 2 ++
+ src/xz/file_io.h | 2 ++
+ src/xz/hardware.c | 2 ++
+ src/xz/hardware.h | 2 ++
+ src/xz/list.c | 2 ++
+ src/xz/list.h | 2 ++
+ src/xz/main.c | 2 ++
+ src/xz/main.h | 2 ++
+ src/xz/message.c | 2 ++
+ src/xz/message.h | 2 ++
+ src/xz/mytime.c | 2 ++
+ src/xz/mytime.h | 2 ++
+ src/xz/options.c | 2 ++
+ src/xz/options.h | 2 ++
+ src/xz/private.h | 2 ++
+ src/xz/signals.c | 2 ++
+ src/xz/signals.h | 2 ++
+ src/xz/suffix.c | 2 ++
+ src/xz/suffix.h | 2 ++
+ src/xz/util.c | 2 ++
+ src/xz/util.h | 2 ++
+ src/xz/xz_w32res.rc | 2 ++
+ src/xzdec/Makefile.am | 3 +--
+ src/xzdec/lzmadec_w32res.rc | 2 ++
+ src/xzdec/xzdec.c | 2 ++
+ src/xzdec/xzdec_w32res.rc | 2 ++
+ tests/Makefile.am | 3 +--
+ tests/bcj_test.c | 2 ++
+ tests/code_coverage.sh | 1 +
+ tests/create_compress_files.c | 2 ++
+ tests/ossfuzz/fuzz_common.h | 2 ++
+ tests/ossfuzz/fuzz_decode_alone.c | 2 ++
+ tests/ossfuzz/fuzz_decode_stream.c | 2 ++
+ tests/ossfuzz/fuzz_encode_stream.c | 2 ++
+ tests/test_bcj_exact_size.c | 2 ++
+ tests/test_block_header.c | 2 ++
+ tests/test_check.c | 2 ++
+ tests/test_compress.sh | 1 +
+ tests/test_compress_generated_abc | 1 +
+ tests/test_compress_generated_random | 1 +
+ tests/test_compress_generated_text | 1 +
+ tests/test_compress_prepared_bcj_sparc | 1 +
+ tests/test_compress_prepared_bcj_x86 | 1 +
+ tests/test_files.sh | 1 +
+ tests/test_filter_flags.c | 2 ++
+ tests/test_filter_str.c | 2 ++
+ tests/test_hardware.c | 2 ++
+ tests/test_index.c | 2 ++
+ tests/test_index_hash.c | 2 ++
+ tests/test_lzip_decoder.c | 2 ++
+ tests/test_memlimit.c | 2 ++
+ tests/test_scripts.sh | 1 +
+ tests/test_stream_flags.c | 2 ++
+ tests/test_suffix.sh | 1 +
+ tests/test_vli.c | 2 ++
+ tests/tests.h | 2 ++
+ tests/tuktest.h | 2 ++
+ windows/build.bash | 3 ++-
+ 290 files changed, 588 insertions(+), 58 deletions(-)
+
+commit 23de53421ea258cde6a3c33a038b1e9d08f771d1
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-12 23:25:54 +0200
+
+ liblzma: Sync the AUTHORS fix about SHA-256 to lzma.h.
+
+ src/liblzma/api/lzma.h | 10 ++++------
+ 1 file changed, 4 insertions(+), 6 deletions(-)
- liblzma: Remove lzma_lz_decoder_uncompressed() as it's now unused.
+commit 689e0228baeb95232430e90d628379db89583d71
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-12 17:09:10 +0200
+
+ Change most public domain parts to 0BSD.
+
+ Translations and doc/xz-file-format.txt and doc/lzma-file-format.txt
+ were not touched.
+
+ COPYING.0BSD was added.
+
+ .github/workflows/ci.yml | 3 -
+ .github/workflows/windows-ci.yml | 3 -
+ CMakeLists.txt | 3 -
+ COPYING | 112 ++++++++++++++-----------
+ COPYING.0BSD | 11 +++
+ Makefile.am | 3 -
+ PACKAGERS | 11 +--
+ autogen.sh | 3 -
+ build-aux/ci_build.sh | 3 -
+ build-aux/manconv.sh | 3 -
+ build-aux/version.sh | 3 -
+ cmake/remove-ordinals.cmake | 3 -
+ cmake/tuklib_common.cmake | 3 -
+ cmake/tuklib_cpucores.cmake | 3 -
+ cmake/tuklib_integer.cmake | 3 -
+ cmake/tuklib_large_file_support.cmake | 3 -
+ cmake/tuklib_mbstr.cmake | 3 -
+ cmake/tuklib_physmem.cmake | 3 -
+ cmake/tuklib_progname.cmake | 3 -
+ configure.ac | 3 -
+ debug/Makefile.am | 3 -
+ debug/crc32.c | 3 -
+ debug/full_flush.c | 3 -
+ debug/hex2bin.c | 3 -
+ debug/known_sizes.c | 3 -
+ debug/memusage.c | 3 -
+ debug/repeat.c | 3 -
+ debug/sync_flush.c | 3 -
+ debug/translation.bash | 3 -
+ doc/examples/01_compress_easy.c | 3 -
+ doc/examples/02_decompress.c | 3 -
+ doc/examples/03_compress_custom.c | 3 -
+ doc/examples/04_compress_easy_mt.c | 3 -
+ doc/examples/11_file_info.c | 3 -
+ doc/examples/Makefile | 3 -
+ dos/Makefile | 3 -
+ doxygen/update-doxygen | 3 -
+ extra/7z2lzma/7z2lzma.bash | 3 -
+ m4/tuklib_common.m4 | 3 -
+ m4/tuklib_cpucores.m4 | 3 -
+ m4/tuklib_integer.m4 | 3 -
+ m4/tuklib_mbstr.m4 | 3 -
+ m4/tuklib_physmem.m4 | 3 -
+ m4/tuklib_progname.m4 | 3 -
+ po4a/update-po | 3 -
+ src/Makefile.am | 3 -
+ src/common/common_w32res.rc | 3 -
+ src/common/mythread.h | 3 -
+ src/common/sysdefs.h | 3 -
+ src/common/tuklib_common.h | 3 -
+ src/common/tuklib_cpucores.c | 3 -
+ src/common/tuklib_cpucores.h | 3 -
+ src/common/tuklib_exit.c | 3 -
+ src/common/tuklib_exit.h | 3 -
+ src/common/tuklib_gettext.h | 3 -
+ src/common/tuklib_integer.h | 3 -
+ src/common/tuklib_mbstr.h | 3 -
+ src/common/tuklib_mbstr_fw.c | 3 -
+ src/common/tuklib_mbstr_width.c | 3 -
+ src/common/tuklib_open_stdxxx.c | 3 -
+ src/common/tuklib_open_stdxxx.h | 3 -
+ src/common/tuklib_physmem.c | 3 -
+ src/common/tuklib_physmem.h | 3 -
+ src/common/tuklib_progname.c | 3 -
+ src/common/tuklib_progname.h | 3 -
+ src/liblzma/Makefile.am | 3 -
+ src/liblzma/api/Makefile.am | 3 -
+ src/liblzma/api/lzma.h | 13 ++-
+ src/liblzma/api/lzma/base.h | 3 -
+ src/liblzma/api/lzma/bcj.h | 3 -
+ src/liblzma/api/lzma/block.h | 3 -
+ src/liblzma/api/lzma/check.h | 3 -
+ src/liblzma/api/lzma/container.h | 3 -
+ src/liblzma/api/lzma/delta.h | 3 -
+ src/liblzma/api/lzma/filter.h | 3 -
+ src/liblzma/api/lzma/hardware.h | 3 -
+ src/liblzma/api/lzma/index.h | 3 -
+ src/liblzma/api/lzma/index_hash.h | 3 -
+ src/liblzma/api/lzma/lzma12.h | 3 -
+ src/liblzma/api/lzma/stream_flags.h | 3 -
+ src/liblzma/api/lzma/version.h | 3 -
+ src/liblzma/api/lzma/vli.h | 3 -
+ src/liblzma/check/Makefile.inc | 3 -
+ src/liblzma/check/check.c | 3 -
+ src/liblzma/check/check.h | 3 -
+ src/liblzma/check/crc32_arm64.h | 3 -
+ src/liblzma/check/crc32_fast.c | 3 -
+ src/liblzma/check/crc32_small.c | 3 -
+ src/liblzma/check/crc32_table.c | 3 -
+ src/liblzma/check/crc32_tablegen.c | 3 -
+ src/liblzma/check/crc32_x86.S | 3 -
+ src/liblzma/check/crc64_fast.c | 3 -
+ src/liblzma/check/crc64_small.c | 3 -
+ src/liblzma/check/crc64_table.c | 3 -
+ src/liblzma/check/crc64_tablegen.c | 3 -
+ src/liblzma/check/crc64_x86.S | 3 -
+ src/liblzma/check/crc_common.h | 3 -
+ src/liblzma/check/crc_x86_clmul.h | 3 -
+ src/liblzma/check/sha256.c | 3 -
+ src/liblzma/common/Makefile.inc | 3 -
+ src/liblzma/common/alone_decoder.c | 3 -
+ src/liblzma/common/alone_decoder.h | 3 -
+ src/liblzma/common/alone_encoder.c | 3 -
+ src/liblzma/common/auto_decoder.c | 3 -
+ src/liblzma/common/block_buffer_decoder.c | 3 -
+ src/liblzma/common/block_buffer_encoder.c | 3 -
+ src/liblzma/common/block_buffer_encoder.h | 3 -
+ src/liblzma/common/block_decoder.c | 3 -
+ src/liblzma/common/block_decoder.h | 3 -
+ src/liblzma/common/block_encoder.c | 3 -
+ src/liblzma/common/block_encoder.h | 3 -
+ src/liblzma/common/block_header_decoder.c | 3 -
+ src/liblzma/common/block_header_encoder.c | 3 -
+ src/liblzma/common/block_util.c | 3 -
+ src/liblzma/common/common.c | 3 -
+ src/liblzma/common/common.h | 3 -
+ src/liblzma/common/easy_buffer_encoder.c | 3 -
+ src/liblzma/common/easy_decoder_memusage.c | 3 -
+ src/liblzma/common/easy_encoder.c | 3 -
+ src/liblzma/common/easy_encoder_memusage.c | 3 -
+ src/liblzma/common/easy_preset.c | 3 -
+ src/liblzma/common/easy_preset.h | 3 -
+ src/liblzma/common/file_info.c | 3 -
+ src/liblzma/common/filter_buffer_decoder.c | 3 -
+ src/liblzma/common/filter_buffer_encoder.c | 3 -
+ src/liblzma/common/filter_common.c | 3 -
+ src/liblzma/common/filter_common.h | 3 -
+ src/liblzma/common/filter_decoder.c | 3 -
+ src/liblzma/common/filter_decoder.h | 3 -
+ src/liblzma/common/filter_encoder.c | 3 -
+ src/liblzma/common/filter_encoder.h | 3 -
+ src/liblzma/common/filter_flags_decoder.c | 3 -
+ src/liblzma/common/filter_flags_encoder.c | 3 -
+ src/liblzma/common/hardware_cputhreads.c | 3 -
+ src/liblzma/common/hardware_physmem.c | 3 -
+ src/liblzma/common/index.c | 3 -
+ src/liblzma/common/index.h | 3 -
+ src/liblzma/common/index_decoder.c | 3 -
+ src/liblzma/common/index_decoder.h | 3 -
+ src/liblzma/common/index_encoder.c | 3 -
+ src/liblzma/common/index_encoder.h | 3 -
+ src/liblzma/common/index_hash.c | 3 -
+ src/liblzma/common/lzip_decoder.c | 3 -
+ src/liblzma/common/lzip_decoder.h | 3 -
+ src/liblzma/common/memcmplen.h | 3 -
+ src/liblzma/common/microlzma_decoder.c | 3 -
+ src/liblzma/common/microlzma_encoder.c | 3 -
+ src/liblzma/common/outqueue.c | 3 -
+ src/liblzma/common/outqueue.h | 3 -
+ src/liblzma/common/stream_buffer_decoder.c | 3 -
+ src/liblzma/common/stream_buffer_encoder.c | 3 -
+ src/liblzma/common/stream_decoder.c | 3 -
+ src/liblzma/common/stream_decoder.h | 3 -
+ src/liblzma/common/stream_decoder_mt.c | 3 -
+ src/liblzma/common/stream_encoder.c | 3 -
+ src/liblzma/common/stream_encoder_mt.c | 3 -
+ src/liblzma/common/stream_flags_common.c | 3 -
+ src/liblzma/common/stream_flags_common.h | 3 -
+ src/liblzma/common/stream_flags_decoder.c | 3 -
+ src/liblzma/common/stream_flags_encoder.c | 3 -
+ src/liblzma/common/string_conversion.c | 3 -
+ src/liblzma/common/vli_decoder.c | 3 -
+ src/liblzma/common/vli_encoder.c | 3 -
+ src/liblzma/common/vli_size.c | 3 -
+ src/liblzma/delta/Makefile.inc | 3 -
+ src/liblzma/delta/delta_common.c | 3 -
+ src/liblzma/delta/delta_common.h | 3 -
+ src/liblzma/delta/delta_decoder.c | 3 -
+ src/liblzma/delta/delta_decoder.h | 3 -
+ src/liblzma/delta/delta_encoder.c | 3 -
+ src/liblzma/delta/delta_encoder.h | 3 -
+ src/liblzma/delta/delta_private.h | 3 -
+ src/liblzma/liblzma.pc.in | 3 -
+ src/liblzma/liblzma_w32res.rc | 3 -
+ src/liblzma/lz/Makefile.inc | 3 -
+ src/liblzma/lz/lz_decoder.c | 3 -
+ src/liblzma/lz/lz_decoder.h | 3 -
+ src/liblzma/lz/lz_encoder.c | 3 -
+ src/liblzma/lz/lz_encoder.h | 3 -
+ src/liblzma/lz/lz_encoder_hash.h | 3 -
+ src/liblzma/lz/lz_encoder_mf.c | 3 -
+ src/liblzma/lzma/Makefile.inc | 3 -
+ src/liblzma/lzma/fastpos.h | 3 -
+ src/liblzma/lzma/fastpos_tablegen.c | 3 -
+ src/liblzma/lzma/lzma2_decoder.c | 3 -
+ src/liblzma/lzma/lzma2_decoder.h | 3 -
+ src/liblzma/lzma/lzma2_encoder.c | 3 -
+ src/liblzma/lzma/lzma2_encoder.h | 3 -
+ src/liblzma/lzma/lzma_common.h | 3 -
+ src/liblzma/lzma/lzma_decoder.c | 3 -
+ src/liblzma/lzma/lzma_decoder.h | 3 -
+ src/liblzma/lzma/lzma_encoder.c | 3 -
+ src/liblzma/lzma/lzma_encoder.h | 3 -
+ src/liblzma/lzma/lzma_encoder_optimum_fast.c | 3 -
+ src/liblzma/lzma/lzma_encoder_optimum_normal.c | 3 -
+ src/liblzma/lzma/lzma_encoder_presets.c | 3 -
+ src/liblzma/lzma/lzma_encoder_private.h | 3 -
+ src/liblzma/rangecoder/Makefile.inc | 3 -
+ src/liblzma/rangecoder/price.h | 3 -
+ src/liblzma/rangecoder/price_tablegen.c | 3 -
+ src/liblzma/rangecoder/range_common.h | 3 -
+ src/liblzma/rangecoder/range_decoder.h | 3 -
+ src/liblzma/rangecoder/range_encoder.h | 3 -
+ src/liblzma/simple/Makefile.inc | 3 -
+ src/liblzma/simple/arm.c | 3 -
+ src/liblzma/simple/arm64.c | 3 -
+ src/liblzma/simple/armthumb.c | 3 -
+ src/liblzma/simple/ia64.c | 3 -
+ src/liblzma/simple/powerpc.c | 3 -
+ src/liblzma/simple/riscv.c | 3 -
+ src/liblzma/simple/simple_coder.c | 3 -
+ src/liblzma/simple/simple_coder.h | 3 -
+ src/liblzma/simple/simple_decoder.c | 3 -
+ src/liblzma/simple/simple_decoder.h | 3 -
+ src/liblzma/simple/simple_encoder.c | 3 -
+ src/liblzma/simple/simple_encoder.h | 3 -
+ src/liblzma/simple/simple_private.h | 3 -
+ src/liblzma/simple/sparc.c | 3 -
+ src/liblzma/simple/x86.c | 3 -
+ src/liblzma/validate_map.sh | 3 -
+ src/lzmainfo/Makefile.am | 3 -
+ src/lzmainfo/lzmainfo.1 | 4 +-
+ src/lzmainfo/lzmainfo.c | 3 -
+ src/lzmainfo/lzmainfo_w32res.rc | 3 -
+ src/scripts/Makefile.am | 3 -
+ src/scripts/xzless.1 | 4 +-
+ src/xz/Makefile.am | 3 -
+ src/xz/args.c | 3 -
+ src/xz/args.h | 3 -
+ src/xz/coder.c | 3 -
+ src/xz/coder.h | 3 -
+ src/xz/file_io.c | 3 -
+ src/xz/file_io.h | 3 -
+ src/xz/hardware.c | 3 -
+ src/xz/hardware.h | 3 -
+ src/xz/list.c | 3 -
+ src/xz/list.h | 3 -
+ src/xz/main.c | 3 -
+ src/xz/main.h | 3 -
+ src/xz/message.c | 3 -
+ src/xz/message.h | 3 -
+ src/xz/mytime.c | 3 -
+ src/xz/mytime.h | 3 -
+ src/xz/options.c | 3 -
+ src/xz/options.h | 3 -
+ src/xz/private.h | 3 -
+ src/xz/signals.c | 3 -
+ src/xz/signals.h | 3 -
+ src/xz/suffix.c | 3 -
+ src/xz/suffix.h | 3 -
+ src/xz/util.c | 3 -
+ src/xz/util.h | 3 -
+ src/xz/xz.1 | 4 +-
+ src/xz/xz_w32res.rc | 3 -
+ src/xzdec/Makefile.am | 3 -
+ src/xzdec/lzmadec_w32res.rc | 3 -
+ src/xzdec/xzdec.1 | 4 +-
+ src/xzdec/xzdec.c | 3 -
+ src/xzdec/xzdec_w32res.rc | 3 -
+ tests/Makefile.am | 3 -
+ tests/bcj_test.c | 3 -
+ tests/code_coverage.sh | 3 -
+ tests/create_compress_files.c | 3 -
+ tests/files/README | 3 +-
+ tests/ossfuzz/fuzz_common.h | 3 -
+ tests/ossfuzz/fuzz_decode_alone.c | 3 -
+ tests/ossfuzz/fuzz_decode_stream.c | 3 -
+ tests/ossfuzz/fuzz_encode_stream.c | 3 -
+ tests/test_bcj_exact_size.c | 3 -
+ tests/test_block_header.c | 3 -
+ tests/test_check.c | 3 -
+ tests/test_compress.sh | 3 -
+ tests/test_files.sh | 3 -
+ tests/test_filter_flags.c | 3 -
+ tests/test_filter_str.c | 3 -
+ tests/test_hardware.c | 3 -
+ tests/test_index.c | 3 -
+ tests/test_index_hash.c | 3 -
+ tests/test_lzip_decoder.c | 3 -
+ tests/test_memlimit.c | 3 -
+ tests/test_scripts.sh | 3 -
+ tests/test_stream_flags.c | 3 -
+ tests/test_suffix.sh | 3 -
+ tests/test_vli.c | 3 -
+ tests/tests.h | 3 -
+ tests/tuktest.h | 3 -
+ windows/README-Windows.txt | 11 +--
+ windows/build.bash | 3 -
+ 288 files changed, 100 insertions(+), 911 deletions(-)
+
+commit 76946dc4336c831fe2cc26696a035d807dd3cf13
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-09 17:20:31 +0200
+
+ Fix SHA-256 authors.
+
+ The initial commit 5d018dc03549c1ee4958364712fb0c94e1bf2741
+ in 2007 had a comment in sha256.c that the code is based on
+ Crypto++ Library 5.5.1. In 2009 the Authors list in sha256.c
+ and the AUTHORS file was updated with information that the
+ code had come from Crypto++ but via 7-Zip. I know I had viewed
+ 7-Zip's SHA-256 code but back then the C code has been identical
+ enough with Crypto++, so I don't why I thought the author info
+ would need that extra step via 7-Zip for this single file.
+
+ Another error is that I had mixed sha.* and shacal2.* files
+ when checking for author info in Crypto++. The shacal2.* files
+ aren't related to liblzma's sha256.c and thus Kevin Springle's
+ code in Crypto++ isn't either.
+
+ AUTHORS | 6 ++----
+ src/liblzma/check/sha256.c | 14 ++++----------
+ 2 files changed, 6 insertions(+), 14 deletions(-)
+
+commit 21d9cbae9eecca28ce373d3d9464defd2cf5d851
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-09 17:20:31 +0200
+
+ Remove macosx/build.sh.
+
+ It was last updated in 2013.
+
+ Makefile.am | 1 -
+ macosx/build.sh | 113 --------------------------------------------------------
+ 2 files changed, 114 deletions(-)
+
+commit eac2c3c67f9113a225fb6667df862edd30366931
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2024-02-09 17:20:31 +0200
+
+ Doc: Remove doc/examples_old.
+
+ It was good to keep these around in parallel with the newer examples
+ but I think it's OK to remove the old ones at this point.
+
+ Makefile.am | 5 --
+ doc/examples_old/xz_pipe_comp.c | 127 --------------------------------------
+ doc/examples_old/xz_pipe_decomp.c | 123 ------------------------------------
+ 3 files changed, 255 deletions(-)
+
+commit 89ea1a22f4ed3685b053b7260bc5acf6c75d1664
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-13 22:38:58 +0800
+
+ Tests: Add RISC-V filter support in a few places.
+
+ tests/test_filter_flags.c | 6 ++++++
+ tests/test_filter_str.c | 6 ++++++
+ 2 files changed, 12 insertions(+)
+
+commit 45663443eb2b377e6171529380fee312f1adcdf4
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-13 22:37:07 +0800
+
+ liblzma: Fix build error if only RISC-V BCJ filter is enabled.
+
+ If any other BCJ filter was enabled for encoding or decoding, then this
+ was not a problem.
- src/liblzma/lz/lz_decoder.c | 14 --------------
- src/liblzma/lz/lz_decoder.h | 3 ---
- 2 files changed, 17 deletions(-)
+ src/liblzma/common/string_conversion.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
-commit cee83206465b95729ab649aa2f57fdbde8dcaf89
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-28 10:48:53 +0200
+commit 2f15597d677bc35743c777d4cf3bfa698b478681
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-13 22:56:24 +0800
- liblzma: Use LZMA1EXT feature in lzma_microlzma_decoder().
-
- Here too this avoids the slightly ugly method to set
- the uncompressed size.
-
- Also moved the setting of dict_size to the struct initializer.
+ Translations: Update the Korean translation.
- src/liblzma/common/microlzma_decoder.c | 15 ++++++++-------
- 1 file changed, 8 insertions(+), 7 deletions(-)
+ po/ko.po | 526 ++++++++++++++++++++++++++++++++++-----------------------------
+ 1 file changed, 284 insertions(+), 242 deletions(-)
-commit e310e8b6a490dfb468f4ed68feff246d776b323c
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-28 10:28:20 +0200
+commit df873143ad1615c6d6aaa1bf8808b1676091dfe3
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-13 01:55:53 +0800
- liblzma: Use LZMA1EXT feature in lzma_alone_decoder().
-
- This avoids the need to use the slightly ugly method to
- set the uncompressed size.
+ Translations: Update the Korean man page translations.
- src/liblzma/common/alone_decoder.c | 18 +++++++++++++-----
- 1 file changed, 13 insertions(+), 5 deletions(-)
+ po4a/ko.po | 1375 ++++++++++++++++++++++++++++++++++--------------------------
+ 1 file changed, 770 insertions(+), 605 deletions(-)
-commit 33b8a24b6646a9dbfd8358405aec466b13078559
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-27 23:16:21 +0200
+commit b3f415eddb150341865a1af47959c3baba076b33
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-13 01:53:33 +0800
- liblzma: Add LZMA_FILTER_LZMA1EXT to support LZMA1 without end marker.
-
- Some file formats need support for LZMA1 streams that don't use
- the end of payload marker (EOPM) alias end of stream (EOS) marker.
- So far liblzma API has supported decompressing such streams via
- lzma_alone_decoder() when .lzma header specifies a known
- uncompressed size. Encoding support hasn't been available in the API.
-
- Instead of adding a new LZMA1-only API for this purpose, this commit
- adds a new filter ID for use with raw encoder and decoder. The main
- benefit of this approach is that then also filter chains are possible,
- for example, if someone wants to implement support for .7z files that
- use the x86 BCJ filter with LZMA1 (not BCJ2 as that isn't supported
- in liblzma).
+ Translations: Update the Chinese (simplified) translation.
- src/liblzma/api/lzma/lzma12.h | 123 ++++++++++++++++++++++++++++++--
- src/liblzma/common/filter_common.c | 7 ++
- src/liblzma/common/filter_decoder.c | 6 ++
- src/liblzma/common/filter_encoder.c | 9 +++
- src/liblzma/lzma/lzma2_encoder.c | 2 +-
- src/liblzma/lzma/lzma_decoder.c | 26 ++++++-
- src/liblzma/lzma/lzma_encoder.c | 40 +++++++++--
- src/liblzma/lzma/lzma_encoder.h | 3 +-
- src/liblzma/lzma/lzma_encoder_private.h | 3 +
- 9 files changed, 204 insertions(+), 15 deletions(-)
+ po/zh_CN.po | 424 ++++++++++++++++++++++++++++++++++++++----------------------
+ 1 file changed, 268 insertions(+), 156 deletions(-)
-commit 9a304bf1e45b3ddf61aaeaa7c764915b34618ede
+commit 9860d418d296eb3c721e5384fb367c0499b579c8
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-27 18:43:07 +0200
+Date: 2024-02-09 23:21:01 +0200
- liblzma: Avoid unneeded use of void pointer in LZMA decoder.
+ xzless: Use ||- in LESSOPEN with with "less" 451 and newer.
- src/liblzma/lzma/lzma_decoder.c | 3 +--
- src/liblzma/lzma/lzma_decoder.h | 2 +-
- 2 files changed, 2 insertions(+), 3 deletions(-)
+ src/scripts/xzless.in | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
-commit 218394958c7683f892275bb40eae880620feebcc
+commit fd0692b0525e6c26b496492be9e2c865cab734f8
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-27 18:20:33 +0200
+Date: 2024-02-09 23:00:05 +0200
- liblzma: Pass the Filter ID to LZ encoder and decoder.
+ xzless: Use --show-preproc-errors with "less" 632 and newer.
- This allows using two Filter IDs with the same
- initialization function and data structures.
+ This makes "less" show a warning if a decompression error occurred.
- src/liblzma/common/alone_decoder.c | 1 +
- src/liblzma/common/alone_encoder.c | 1 +
- src/liblzma/common/common.h | 7 +++++--
- src/liblzma/common/lzip_decoder.c | 1 +
- src/liblzma/common/microlzma_decoder.c | 1 +
- src/liblzma/common/microlzma_encoder.c | 1 +
- src/liblzma/lz/lz_decoder.c | 5 +++--
- src/liblzma/lz/lz_decoder.h | 3 ++-
- src/liblzma/lz/lz_encoder.c | 5 +++--
- src/liblzma/lz/lz_encoder.h | 3 ++-
- src/liblzma/lzma/lzma2_decoder.c | 3 ++-
- src/liblzma/lzma/lzma2_encoder.c | 3 ++-
- src/liblzma/lzma/lzma_decoder.c | 2 +-
- src/liblzma/lzma/lzma_encoder.c | 2 +-
- 14 files changed, 26 insertions(+), 12 deletions(-)
+ src/scripts/xzless.in | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
-commit 1663c7676b76f4c514031797f3db1896e8100f7f
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-27 01:03:16 +0200
+commit adb073da76a920b5a81e6b32254f4ddb054dc57a
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-09 23:59:54 +0800
- liblzma: Remove two FIXME comments.
+ liblzma: Fix typo discovered by codespell.
- src/liblzma/common/filter_encoder.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ src/liblzma/check/crc32_arm64.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 11fe708db783ac36ebeeb85da164e29e8c300910
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-26 22:25:30 +0200
+commit 55d9fc883d221cbace951a370f1fb144698f8c2e
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-09 20:01:06 +0800
- xz: Use lzma_filters_free().
+ Translations: Update the Swedish translation.
- src/xz/list.c | 8 ++------
- 1 file changed, 2 insertions(+), 6 deletions(-)
+ po/sv.po | 420 ++++++++++++++++++++++++++++++++++++++-------------------------
+ 1 file changed, 254 insertions(+), 166 deletions(-)
-commit e782af9110d8499c7ac2929bc871540eefea5ea1
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-26 22:21:13 +0200
+commit 55ba4a1ea321499c805eedfa811ffde690bae311
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-08 20:09:04 +0800
- liblzma: Use lzma_filters_free() in more places.
+ Translations: Update the Spanish translation.
- src/liblzma/common/block_header_decoder.c | 20 ++------------------
- src/liblzma/common/stream_decoder.c | 4 +---
- src/liblzma/common/stream_decoder_mt.c | 22 +++++-----------------
- 3 files changed, 8 insertions(+), 38 deletions(-)
+ po/es.po | 22 +++++++++++-----------
+ 1 file changed, 11 insertions(+), 11 deletions(-)
-commit 90caaded2dc6db1d6a55b01160d7e87f4a423628
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-25 18:04:37 +0200
+commit 7f2293cd804a89d3c3b2d3ed573560ca9e1520ae
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-07 21:34:35 +0800
- liblzma: Omit simple coder init functions if they are disabled.
+ Translations: Update the Spanish translation.
- src/liblzma/simple/arm.c | 4 ++++
- src/liblzma/simple/armthumb.c | 4 ++++
- src/liblzma/simple/ia64.c | 4 ++++
- src/liblzma/simple/powerpc.c | 4 ++++
- src/liblzma/simple/sparc.c | 4 ++++
- src/liblzma/simple/x86.c | 4 ++++
- 6 files changed, 24 insertions(+)
+ po/es.po | 419 ++++++++++++++++++++++++++++++++++++++-------------------------
+ 1 file changed, 253 insertions(+), 166 deletions(-)
-commit 5cd9f0df78cc4f8a7807bf6104adea13034fbb45
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-24 23:24:59 +0200
+commit f4af2036bc625739d6d33d9e1fede583a25c3828
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-07 21:28:32 +0800
- xz: Allow nice_len 2 and 3 even if match finder requires 3 or 4.
-
- Now that liblzma accepts these, we avoid the extra check and
- there's one message less for translators too.
+ Translations: Update the Polish translation.
- src/xz/options.c | 5 -----
- 1 file changed, 5 deletions(-)
+ po/pl.po | 411 ++++++++++++++++++++++++++++++++++++++-------------------------
+ 1 file changed, 249 insertions(+), 162 deletions(-)
-commit 3be88ae071371caa279b44e13f4836fb178fe4ae
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-24 23:23:55 +0200
+commit e5e93bb816043c559cddf03a3b7ba13bec353ee4
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-07 19:40:12 +0800
- liblzma: Allow nice_len 2 and 3 even if match finder requires 3 or 4.
-
- That is, if the specified nice_len is smaller than the minimum
- of the match finder, silently use the match finder's minimum value
- instead of reporting an error. The old behavior is annoying to users
- and it complicates xz options handling too.
+ Translations: Update the German translation.
- src/liblzma/lz/lz_encoder.c | 14 +++++++++-----
- src/liblzma/lz/lz_encoder.h | 9 +++++++++
- src/liblzma/lzma/lzma_encoder.c | 11 ++++++++---
- 3 files changed, 26 insertions(+), 8 deletions(-)
+ po/de.po | 396 ++++++++++++++++++++++++++++++++++++++-------------------------
+ 1 file changed, 242 insertions(+), 154 deletions(-)
-commit 93439cfafe1768b3b18d67d2356ef7e7559bba59
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-24 16:25:10 +0200
+commit 28f18ff8e26902762fb007c13be235b4ac1ac071
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-07 19:27:25 +0800
- liblzma: Add lzma_filters_update() support to the multi-threaded encoder.
-
- A tiny downside of this is that now a 1-4 tiny allocations are made
- for every Block because each worker thread needs its own copy of
- the filter chain.
+ Translations: Update the German man page translations.
- src/liblzma/api/lzma/filter.h | 36 +++++++------
- src/liblzma/common/stream_encoder_mt.c | 96 +++++++++++++++++++++++++++++++---
- 2 files changed, 109 insertions(+), 23 deletions(-)
+ po4a/de.po | 1353 +++++++++++++++++++++++++++++++++---------------------------
+ 1 file changed, 752 insertions(+), 601 deletions(-)
-commit 17ac51e689794eb41cab3e80946fec689caea2d2
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-24 14:53:22 +0200
+commit cabfbc7947da05aa5dfe39bec9759e076f940e3c
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-06 23:44:06 +0800
- Update THANKS.
+ Translations: Update the Romanian translation.
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ po/ro.po | 416 ++++++++++++++++++++++++++++++++++++++-------------------------
+ 1 file changed, 252 insertions(+), 164 deletions(-)
-commit 06824396b2b6c84f3a235cb7c19c2a9701167797
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-24 14:52:44 +0200
+commit bf20c94f5d748cea2147779f4fa7e2fd2eb8555e
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-06 23:45:02 +0800
- Build: Don't put GNU/Linux-specific symbol versions into static liblzma.
-
- It not only makes no sense to put symbol versions into a static library
- but it can also cause breakage.
-
- By default Libtool #defines PIC if building a shared library and
- doesn't define it for static libraries. This is documented in the
- Libtool manual. It can be overriden using --with-pic or --without-pic.
- configure.ac detects if --with-pic or --without-pic is used and then
- gives an error if neither --disable-shared nor --disable-static was
- used at the same time. Thus, in normal situations it works to build
- both shared and static library at the same time on GNU/Linux,
- only --with-pic or --without-pic requires that only one type of
- library is built.
-
- Thanks to John Paul Adrian Glaubitz from Debian for reporting
- the problem that occurred on ia64:
- https://www.mail-archive.com/xz-devel@tukaani.org/msg00610.html
+ Translations: Update the Romanian man page translations.
- CMakeLists.txt | 5 +-
- configure.ac | 143 +++++++++++++++++++++++++++++---------------
- src/liblzma/common/common.h | 12 ++++
- 3 files changed, 111 insertions(+), 49 deletions(-)
+ po4a/ro.po | 1759 +++++++++++++++++++++++++++++++++---------------------------
+ 1 file changed, 966 insertions(+), 793 deletions(-)
-commit e1acf7107291f8b3d6d609a7133331ff36d35d14
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-24 01:32:16 +0200
+commit 7c25ec9feb0241e4affb7432681cc4f5696f3a96
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-07 20:56:57 +0800
- liblzma: Refactor to use lzma_filters_free().
-
- lzma_filters_free() sets the options to NULL and ids to
- LZMA_VLI_UNKNOWN so there is no need to do it by caller;
- the filter arrays will always be left in a safe state.
-
- Also use memcpy() instead of a loop to copy a filter chain
- when it is known to be safe to copy LZMA_FILTERS_MAX + 1
- (even if the elements past the terminator might be uninitialized).
+ Translations: Update the Ukrainian translation.
- src/liblzma/common/stream_encoder.c | 16 ++++------------
- src/liblzma/common/stream_encoder_mt.c | 11 ++---------
- 2 files changed, 6 insertions(+), 21 deletions(-)
+ po/uk.po | 397 ++++++++++++++++++++++++++++++++++++++-------------------------
+ 1 file changed, 242 insertions(+), 155 deletions(-)
-commit cb05dbcf8b868441ec805016222f3fd77f1c5caa
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-24 01:26:37 +0200
+commit b3523250e9eef10b017473754c1e1c9e31f10374
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-06 23:30:03 +0800
- liblzma: Fix another invalid free() after memory allocation failure.
-
- This time it can happen when lzma_stream_encoder_mt() is used
- to reinitialize an existing multi-threaded Stream encoder
- and one of 1-4 tiny allocations in lzma_filters_copy() fail.
-
- It's very similar to the previous bug
- 10430fbf3820dafd4eafd38ec8be161a6978ed2b, happening with
- an array of lzma_filter structures whose old options are freed
- but the replacement never arrives due to a memory allocation
- failure in lzma_filters_copy().
+ Translations: Update the Ukrainian man page translations.
- src/liblzma/common/stream_encoder_mt.c | 4 ++++
- 1 file changed, 4 insertions(+)
+ po4a/uk.po | 1363 ++++++++++++++++++++++++++++++++++--------------------------
+ 1 file changed, 764 insertions(+), 599 deletions(-)
-commit 75f1a6c26df4ce329da0882786403e3ccf5cd898
+commit a5c177f514f4c90e0d2f6045636fca6c2e80a20d
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-05-05 20:53:42 +0800
+Date: 2024-02-02 01:39:28 +0800
- liblzma: Add support for LZMA_SYNC_FLUSH in the Block encoder.
-
- The documentation mentions that lzma_block_encoder() supports
- LZMA_SYNC_FLUSH but it was never added to supported_actions[]
- in the internal structure. Because of this, LZMA_SYNC_FLUSH could
- not be used with the Block encoder unless it was the next coder
- after something like stream_encoder() or stream_encoder_mt().
+ Update AUTHORS.
- src/liblzma/common/block_encoder.c | 1 +
- 1 file changed, 1 insertion(+)
+ AUTHORS | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
-commit d0901645170b638c517f5c50866b6ef48f491c65
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-24 01:02:50 +0200
+commit 7f68a68c19d0ae57bd0e802be0ea8f974e41299f
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-02 01:38:51 +0800
- liblzma: Add new API function lzma_filters_free().
-
- This is small but convenient and should have been added
- a long time ago.
+ liblzma: Update Authors list in crc32_arm64.h.
- src/liblzma/api/lzma/filter.h | 21 +++++++++++++++++++++
- src/liblzma/common/filter_common.c | 26 ++++++++++++++++++++++++++
- src/liblzma/liblzma_generic.map | 1 +
- src/liblzma/liblzma_linux.map | 1 +
- 4 files changed, 49 insertions(+)
+ src/liblzma/check/crc32_arm64.h | 1 +
+ 1 file changed, 1 insertion(+)
-commit ae1f8a723dcde2f2c5cf444bcbb5fc5026b3c3c5
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-24 00:02:31 +0200
+commit 97f9ba50b84e67b3dcb5b17dd5d3e1d14f9ad1d0
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-01 16:07:03 +0800
- CMake: Don't use symbol versioning with static library.
+ liblzma: Check HAVE_USABLE_CLMUL before omitting CRC32 table.
+
+ This was split from the prior commit so it could be easily applied to
+ the 5.4 branch.
+
+ Closes: https://github.com/tukaani-project/xz/pull/77
- CMakeLists.txt | 10 +++++++---
- 1 file changed, 7 insertions(+), 3 deletions(-)
+ src/liblzma/check/crc32_table.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit 48c1b99dc537a27e1ca929d8837e778e5ba32191
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-23 21:55:22 +0200
+commit ca9015f4dead2c97b48f5a6933631b0a448b65b9
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-02-01 16:06:29 +0800
- liblzma: Add lzma_attr_warn_unused_result to lzma_filters_copy().
+ liblzma: Check HAVE_USABLE_CLMUL before omitting CRC64 table.
+
+ If liblzma is configured with --disable-clmul-crc
+ CFLAGS="-msse4.1 -mpclmul", then it will fail to compile because the
+ generic version must be used but the CRC tables were not included.
- src/liblzma/api/lzma/filter.h | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
+ src/liblzma/check/crc64_table.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit 10430fbf3820dafd4eafd38ec8be161a6978ed2b
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-23 21:26:21 +0200
+commit 2f1552a91c825e87013925e1a67a0930e7aef592
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-23 18:02:13 +0800
- liblzma: Fix invalid free() after memory allocation failure.
-
- The bug was in the single-threaded .xz Stream encoder
- in the code that is used for both re-initialization and for
- lzma_filters_update(). To trigger it, an application had
- to either re-initialize an existing encoder instance with
- lzma_stream_encoder() or use lzma_filters_update(), and
- then one of the 1-4 tiny allocations in lzma_filters_copy()
- (called from stream_encoder_update()) must fail. An error
- was correctly reported but the encoder state was corrupted.
+ liblzma: Only use ifunc in crcXX_fast.c if its needed.
- This is related to the recent fix in
- f8ee61e74eb40600445fdb601c374d582e1e9c8a which is good but
- it wasn't enough to fix the main problem in stream_encoder.c.
+ The code was using HAVE_FUNC_ATTRIBUTE_IFUNC instead of CRC_USE_IFUNC.
+ With ARM64, ifunc is incompatible because it requires non-inline
+ function calls for runtime detection.
- src/liblzma/common/stream_encoder.c | 39 +++++++++++++++++++++++++++++--------
- 1 file changed, 31 insertions(+), 8 deletions(-)
+ src/liblzma/check/crc32_fast.c | 6 +++---
+ src/liblzma/check/crc64_fast.c | 6 +++---
+ 2 files changed, 6 insertions(+), 6 deletions(-)
-commit cafd6dc397ca8b5b5f7775e8d6876b8fe70f8e70
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-22 16:37:15 +0200
+commit 30a25f3742287697bc57a1bef86c19ecf5129322
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-22 22:08:45 +0800
- liblzma: Fix language in a comment.
+ Docs: Add --disable-arm64-crc32 description to INSTALL.
- src/liblzma/common/stream_encoder.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ INSTALL | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
-commit c392bf8ccba857baaf50399c4b460119befacd54
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-22 11:20:17 +0200
+commit 1940f0ec28f08c0ac72c1413d9706fb82eabe6ad
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-22 21:36:09 +0800
- liblzma: Fix infinite loop in LZMA encoder init with dict_size >= 2 GiB.
+ liblzma: Omit CRC tables when not needed with ARM64 optimizations.
- The encoder doesn't support dictionary sizes larger than 1536 MiB.
- This is validated, for example, when calculating the memory usage
- via lzma_raw_encoder_memusage(). It is also enforced by the LZ
- part of the encoder initialization. However, LZMA encoder with
- LZMA_MODE_NORMAL did an unsafe calculation with dict_size before
- such validation and that results in an infinite loop if dict_size
- was 2 << 30 or greater.
+ This is similar to the existing x86-64 CLMUL conditions to omit the
+ tables. They were slightly refactored to improve readability.
- src/liblzma/lzma/lzma_encoder.c | 19 +++++++++++++++----
- 1 file changed, 15 insertions(+), 4 deletions(-)
+ src/liblzma/check/crc32_table.c | 18 +++++++++++++++---
+ src/liblzma/check/crc64_table.c | 7 ++++++-
+ src/liblzma/check/crc_common.h | 5 ++++-
+ 3 files changed, 25 insertions(+), 5 deletions(-)
-commit f50534c973a591ccf65485adfc827a8a7126ca6c
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-21 13:02:33 +0200
+commit 761f5b69a4c778c8bcb09279b845b07c28790575
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-22 20:54:56 +0800
- liblzma: Fix two Doxygen commands in the API headers.
+ liblzma: Rename crc32_aarch64.h to crc32_arm64.h.
- These were caught by clang -Wdocumentation.
-
- src/liblzma/api/lzma/hardware.h | 2 +-
- src/liblzma/api/lzma/index_hash.h | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-commit 649d4872ed2f55196114a061d45b416fc4353569
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-19 19:09:55 +0200
-
- xz: Refactor duplicate code from hardware_memlimit_mtenc_get().
+ Even though the proper name for the architecture is aarch64, this
+ project uses ARM64 throughout. So the rename is for consistency.
+
+ Additionally, crc32_arm64.h was slightly refactored for the following
+ changes:
+
+ * Added MSVC, FreeBSD, and macOS support in
+ is_arch_extension_supported().
+
+ * crc32_arch_optimized() now checks the size when aligning the
+ buffer.
+
+ * crc32_arch_optimized() loop conditions were slightly modified to
+ avoid both decrementing the size and incrementing the buffer
+ pointer.
+
+ * Use the intrinsic wrappers defined in <arm_acle.h> because GCC and
+ Clang name them differently.
+
+ * Minor spacing and comment changes.
- src/xz/hardware.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ CMakeLists.txt | 2 +-
+ src/liblzma/check/Makefile.inc | 2 +-
+ src/liblzma/check/crc32_aarch64.h | 109 ----------------------------------
+ src/liblzma/check/crc32_arm64.h | 119 ++++++++++++++++++++++++++++++++++++++
+ src/liblzma/check/crc32_fast.c | 3 +-
+ src/liblzma/check/crc64_fast.c | 3 -
+ 6 files changed, 122 insertions(+), 116 deletions(-)
-commit d327743bb547a53364e5951a16e5f1663fe4b9ff
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-19 19:06:13 +0200
+commit 455a08609caa3223066a717fb01bfa42c5dba47d
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-22 20:49:30 +0800
- xz: Add support --threads=+N so that -T+1 gives threaded mode.
+ liblzma: Refactor crc_common.h.
+
+ The CRC_GENERIC is now split into CRC32_GENERIC and CRC64_GENERIC, since
+ the ARM64 optimizations will be different between CRC32 and CRC64.
+
+ For the same reason, CRC_ARCH_OPTIMIZED is split into
+ CRC32_ARCH_OPTIMIZED and CRC64_ARCH_OPTIMIZED.
+
+ ifunc will only be used with x86-64 CLMUL because the runtime detection
+ methods needed with ARM64 are not compatible with ifunc.
- src/xz/args.c | 18 +++++++++++++++---
- src/xz/hardware.c | 17 +++++++++++++++--
- src/xz/hardware.h | 1 +
- src/xz/xz.1 | 21 ++++++++++++++++++++-
- 4 files changed, 51 insertions(+), 6 deletions(-)
+ src/liblzma/check/crc32_fast.c | 8 +--
+ src/liblzma/check/crc64_fast.c | 8 +--
+ src/liblzma/check/crc_common.h | 108 ++++++++++++++++++++++++++++-------------
+ 3 files changed, 82 insertions(+), 42 deletions(-)
-commit a11a2b8b5e830ba682c1d81aaa7078842b296995
+commit 61908e816049af7a9f43ea804a57ee8570e2e644
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-11-19 23:18:04 +0800
+Date: 2024-01-22 00:42:28 +0800
- CMake: Adds test_memlimit to CMake tests
+ CMake: Add support for ARM64 CRC32 instruction detection.
- CMakeLists.txt | 1 +
- 1 file changed, 1 insertion(+)
+ CMakeLists.txt | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 50 insertions(+)
-commit 2af8d9e9b3f44f62d19e7c39297ec63af2e8c64f
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-15 19:10:21 +0200
+commit c5f6d79cc9515a7f22d7ea4860c6cc394b295732
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-22 00:36:47 +0800
- Translations: Update the Korean translation.
+ Build: Add support for ARM64 CRC32 instruction detection.
+
+ This adds --enable-arm64-crc32/--disable-arm64-crc32 (enabled by
+ default) for using the ARM64 CRC32 instruction. This can be disabled if
+ one knows the binary will never need to run on an ARM64 machine
+ with this instruction extension.
- po/ko.po | 652 ++++++++++++++++++++++++++++++++++++---------------------------
- 1 file changed, 371 insertions(+), 281 deletions(-)
+ configure.ac | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 52 insertions(+)
-commit 16ac05677292f7e21a4feaddcfb2ab062ea5f385
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-15 19:09:28 +0200
+commit 849d0f282a6a890c5cf5a0e0f02980b12d9ebb0f
+Author: Chenxi Mao <chenxi.mao2013@gmail.com>
+Date: 2024-01-09 17:23:11 +0800
- Translations: Update the Turkish translation.
+ Speed up CRC32 calculation on ARM64
+
+ The CRC32 instructions in ARM64 can calculate the CRC32 result
+ for 8 bytes in a single operation, making the use of ARM64
+ instructions much faster compared to the general CRC32 algorithm.
+
+ Optimized CRC32 will be enabled if ARM64 has CRC extension
+ running on Linux.
+
+ Signed-off-by: Chenxi Mao <chenxi.mao2013@gmail.com>
- po/tr.po | 568 ++++++++++++++++++++++++++++++++++-----------------------------
- 1 file changed, 310 insertions(+), 258 deletions(-)
+ CMakeLists.txt | 1 +
+ src/liblzma/check/Makefile.inc | 3 +-
+ src/liblzma/check/crc32_aarch64.h | 109 ++++++++++++++++++++++++++++++++++++++
+ src/liblzma/check/crc32_fast.c | 5 +-
+ src/liblzma/check/crc64_fast.c | 5 +-
+ src/liblzma/check/crc_common.h | 16 +++---
+ 6 files changed, 130 insertions(+), 9 deletions(-)
-commit b9a67d9a5fa207062d4aa8a01639234609315d31
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-15 10:58:39 +0200
+commit b43c3e48bf6097095eef36d44cdbec811074940a
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-26 19:05:51 +0800
- Bump version number for 5.3.4alpha.
+ Bump version number for 5.5.1alpha.
src/liblzma/api/lzma/version.h | 2 +-
src/liblzma/liblzma_generic.map | 2 +-
src/liblzma/liblzma_linux.map | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
-commit 5b999ba289b3280457b7386b9ac65dbbdf1575a5
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-15 10:54:40 +0200
+commit c7a7ae1500ea90bd3c2d54533e4f433933eb598f
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-26 19:00:52 +0800
- Add NEWS for 5.3.4alpha.
+ Add NEWS for 5.5.1alpha
- NEWS | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 96 insertions(+)
+ NEWS | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 80 insertions(+)
-commit ce8db9e37da4f6c87691c5066f51f91f2411c44a
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-15 10:54:08 +0200
+commit 0ef8192e8d5af4e6200d5d4aee22d1f177f7a2df
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-26 18:54:24 +0800
- Add NEWS for 5.2.8.
+ Add NEWS for 5.4.6.
- NEWS | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 79 insertions(+)
+ NEWS | 22 ++++++++++++++++++++++
+ 1 file changed, 22 insertions(+)
-commit b56bc8251d2736224af6bdaaae734ceb8926a879
+commit 93de7e751d17731315a899264f2a7239d7d2d316
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-14 23:19:57 +0200
+Date: 2024-01-24 20:00:57 +0200
- Revert "liblzma: Simple/BCJ filters: Allow disabling generic BCJ options."
-
- This reverts commit 177bdc922cb17bd0fd831ab8139dfae912a5c2b8
- and also does equivalent change to arm64.c.
+ Move doc/logo/xz-logo.png to "doc" and Doxygen footer to "doxygen".
- Now that ARM64 filter will use lzma_options_bcj, this change
- is not needed anymore.
+ The footer isn't a complete HTML file so having it in the doxygen
+ directory is a tiny bit clearer.
- src/liblzma/simple/arm.c | 2 +-
- src/liblzma/simple/arm64.c | 2 +-
- src/liblzma/simple/armthumb.c | 2 +-
- src/liblzma/simple/ia64.c | 2 +-
- src/liblzma/simple/powerpc.c | 2 +-
- src/liblzma/simple/simple_coder.c | 4 ++--
- src/liblzma/simple/simple_private.h | 2 +-
- src/liblzma/simple/sparc.c | 2 +-
- src/liblzma/simple/x86.c | 3 +--
- 9 files changed, 10 insertions(+), 11 deletions(-)
+ Makefile.am | 2 +-
+ doc/{logo => }/xz-logo.png | Bin
+ doxygen/Doxyfile | 4 ++--
+ doc/logo/copyright.html => doxygen/footer.html | 0
+ 4 files changed, 3 insertions(+), 3 deletions(-)
-commit 8370ec8edf9ddf8d1d9fef03d8d1027503ec4c35
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-14 23:14:41 +0200
+commit 00fa01698df51c58ae2acf8c7fa4e1fb159f75a9
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-09 17:05:01 +0800
- Replace the experimental ARM64 filter with a new experimental version.
+ README: Add COPYING.CC-BY-SA-4.0 entry to section 1.1.
- This is incompatible with the previous version.
+ The Overall documentation section (1.1) table spacing had to be adjusted
+ since the filename was very long.
+
+ README | 38 ++++++++++++++++++++------------------
+ 1 file changed, 20 insertions(+), 18 deletions(-)
+
+commit e280470040b27c5e58d78b25b9e2bb71fc6c3882
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-09 16:56:16 +0800
+
+ Build: Add the logo and license to the release.
+
+ Makefile.am | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit b1ee6cf259bb49ce91abe9f622294524e37edf4c
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-09 16:44:42 +0800
+
+ COPYING: Add the license for the XZ logo.
+
+ COPYING | 5 +
+ COPYING.CC-BY-SA-4.0 | 427 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 432 insertions(+)
+
+commit 31293ae7074802cc7286089a89c7b552d930c97f
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-09 16:40:56 +0800
+
+ Doxygen: Added the XZ logo and copyright information.
- This has space/tab fixes in filter_*.c and bcj.h too.
+ The PROJECT_LOGO field is now used to include the XZ logo. The footer
+ of each page now lists the copyright information instead of the default
+ footer. The license is also copied to statisfy the copyright and so the
+ link in the documentation can be local.
- src/liblzma/api/lzma/bcj.h | 41 +-----
- src/liblzma/common/filter_common.c | 14 +-
- src/liblzma/common/filter_decoder.c | 12 +-
- src/liblzma/common/filter_encoder.c | 17 +--
- src/liblzma/simple/arm64.c | 283 ++++++++++++++----------------------
- src/liblzma/simple/simple_decoder.h | 4 -
- src/liblzma/simple/simple_encoder.h | 2 -
- src/xz/args.c | 2 +-
- src/xz/message.c | 13 +-
- src/xz/options.c | 39 -----
- src/xz/options.h | 7 -
- 11 files changed, 147 insertions(+), 287 deletions(-)
+ doc/logo/copyright.html | 11 +++++++++++
+ doc/logo/xz-logo.png | Bin 0 -> 6771 bytes
+ doxygen/Doxyfile | 6 +++---
+ 3 files changed, 14 insertions(+), 3 deletions(-)
-commit f644473a211394447824ea00518d0a214ff3f7f2
+commit 6daa4d0ea46a8441f21f609149f3633158bf4704
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-14 21:34:57 +0200
+Date: 2024-01-23 18:29:28 +0200
- liblzma: Add fast CRC64 for 32/64-bit x86 using SSSE3 + SSE4.1 + CLMUL.
+ xz: Use threaded mode by defaut (as if --threads=0 was used).
- It also works on E2K as it supports these intrinsics.
+ This hopefully does more good than bad:
- On x86-64 runtime detection is used so the code keeps working on
- older processors too. A CLMUL-only build can be done by using
- -msse4.1 -mpclmul in CFLAGS and this will reduce the library
- size since the generic implementation and its 8 KiB lookup table
- will be omitted.
+ + It's faster by default.
- On 32-bit x86 this isn't used by default for now because by default
- on 32-bit x86 the separate assembly file crc64_x86.S is used.
- If --disable-assembler is used then this new CLMUL code is used
- the same way as on 64-bit x86. However, a CLMUL-only build
- (-msse4.1 -mpclmul) won't omit the 8 KiB lookup table on
- 32-bit x86 due to a currently-missing check for disabled
- assembler usage.
+ + Only the threaded compressor creates files that
+ can be decompressed in threaded mode.
- The configure.ac check should be such that the code won't be
- built if something in the toolchain doesn't support it but
- --disable-clmul-crc option can be used to unconditionally
- disable this feature.
+ - Compression ratio is worse, usually not too much though.
+ When it matters, -T1 must be used.
- CLMUL speeds up decompression of files that have compressed very
- well (assuming CRC64 is used as a check type). It is know that
- the CLMUL code is significantly slower than the generic code for
- tiny inputs (especially 1-8 bytes but up to 16 bytes). If that
- is a real-world problem then there is already a commented-out
- variant that uses the generic version for small inputs.
+ - Memory usage increases.
- Thanks to Ilya Kurdyukov for the original patch which was
- derived from a white paper from Intel [1] (published in 2009)
- and public domain code from [2] (released in 2016).
+ - Scripts that assume single-threaded mode but don't use -T1 will
+ possibly use too much resources, for example, if they run
+ multiple xz processes in parallel to compress multiple files.
- [1] https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/fast-crc-computation-generic-polynomials-pclmulqdq-paper.pdf
- [2] https://github.com/rawrunprotected/crc
+ - Output from single-threaded and multi-threaded compressors
+ differ but such changes could happen for other reasons too
+ (they just haven't happened since 5.0.0).
- CMakeLists.txt | 26 ++-
- INSTALL | 12 ++
- configure.ac | 59 +++++-
- src/liblzma/check/crc64_fast.c | 449 +++++++++++++++++++++++++++++++++++++++-
- src/liblzma/check/crc64_table.c | 21 +-
- 5 files changed, 554 insertions(+), 13 deletions(-)
+ src/xz/hardware.c | 6 +++++-
+ src/xz/message.c | 4 ++--
+ src/xz/xz.1 | 9 +++++++++
+ 3 files changed, 16 insertions(+), 3 deletions(-)
-commit 3b466bc79672bb2b06d1245a500588e6026e0ba0
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-14 20:14:34 +0200
+commit a2dd2dc8e5307a7280bb99868bc478560facba2c
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-23 23:52:49 +0800
- Translations: Update the Swedish translation one more time.
+ CI: Use RISC-V filter when building with BCJ support.
- po/sv.po | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
+ build-aux/ci_build.sh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit e963379a8622ebdff6ce78e76b803bcd1e1d16d6
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-14 19:34:15 +0200
+commit 3060e1070b2421b26c0e17794c1307ec5622f11d
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-23 23:52:14 +0800
- Translations: Update the Swedish translation again.
+ Tests: Use smaller dictionary size in RISC-V test files.
- po/sv.po | 16 ++++++++--------
- 1 file changed, 8 insertions(+), 8 deletions(-)
+ tests/files/good-1-riscv-lzma2-1.xz | Bin 7512 -> 7512 bytes
+ tests/files/good-1-riscv-lzma2-2.xz | Bin 7516 -> 7512 bytes
+ 2 files changed, 0 insertions(+), 0 deletions(-)
-commit a4bc689a823a2254f29ac9d233170add5121b307
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-14 19:07:45 +0200
+commit 44ff2fa5c94dc345c4dd69195a19fc5238df60b3
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-23 23:50:57 +0800
- Translations: Update the Swedish translation.
+ Tests: Skip RISC-V test files if decoder was not built.
- po/sv.po | 671 ++++++++++++++++++++++++++++++++++++---------------------------
- 1 file changed, 382 insertions(+), 289 deletions(-)
+ tests/test_files.sh | 5 +++++
+ 1 file changed, 5 insertions(+)
-commit bbf2073d824ab4ba33bed4b77f467435abd333a5
+commit 6133a3f30049d3beaf7d22535b1e5d38e109be4e
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-14 18:58:09 +0200
+Date: 2024-01-23 16:11:54 +0200
- Translations: Update the Ukrainian translation.
+ xz: Man page: Add more examples of LZMA2 options with BCJ filters.
- po/uk.po | 618 ++++++++++++++++++++++++++++++++++++---------------------------
- 1 file changed, 354 insertions(+), 264 deletions(-)
+ src/xz/xz.1 | 38 +++++++++++++++++++++++++++++++-------
+ 1 file changed, 31 insertions(+), 7 deletions(-)
-commit ac10b1b3622e70881595586edfb8a3ebdcd76bb6
+commit 50255feeaabcc7e7db22b858a6bd64a9b5b4f16d
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-14 17:58:07 +0200
+Date: 2024-01-23 00:09:48 +0200
- Build: Omit x86_64 from --enable-assembler.
+ liblzma: RISC-V filter: Use byte-by-byte access.
- It didn't do anything. There are only 32-bit x86 assembly files
- and it feels likely that new files won't be added as intrinsics
- in C are more portable across toolchains and OSes.
-
- configure.ac | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
-
-commit eb0f1450ad9f23dac03050d9c8375980240aee21
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-14 16:00:52 +0200
-
- liblzma: Use __attribute__((__constructor__)) if available.
+ Not all RISC-V processors support fast unaligned access so
+ it's better to read only one byte in the main loop. This can
+ be faster even on x86-64 when compared to reading 32 bits at
+ a time as half the time the address is only 16-bit aligned.
- This uses it for CRC table initializations when using --disable-small.
- It avoids mythread_once() overhead. It also means that then
- --disable-small --disable-threads is thread-safe if this attribute
- is supported.
+ The downside is larger code size on archs that do support
+ fast unaligned access.
- CMakeLists.txt | 15 +++++++++++++++
- INSTALL | 4 +++-
- configure.ac | 31 ++++++++++++++++++++++++++++---
- src/liblzma/check/crc32_small.c | 7 +++++++
- src/liblzma/check/crc64_small.c | 5 +++++
- src/liblzma/lz/lz_encoder.c | 2 +-
- 6 files changed, 59 insertions(+), 5 deletions(-)
+ src/liblzma/simple/riscv.c | 114 +++++++++++++++++++++++++++++++++------------
+ 1 file changed, 84 insertions(+), 30 deletions(-)
-commit 6553f49b11dafad35c73b05f12e14865ea1fd8a1
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-12 21:19:52 +0200
+commit db5eb5f563e8baa8d912ecf576f53391ff861596
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-22 23:33:39 +0800
- Translations: Update the Romanian translation.
+ xz: Update xz -lvv for RISC-V filter.
+
+ Version 5.6.0 will be shown, even though upcoming alphas and betas
+ will be able to support this filter. 5.6.0 looks nicer in the output and
+ people shouldn't be encouraged to use an unstable version in production
+ in any way.
- po/ro.po | 651 +++++++++++++++++++++++++++++++++++++--------------------------
- 1 file changed, 380 insertions(+), 271 deletions(-)
+ src/xz/list.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
-commit db97e69e12393becc29f8febd53133d0d36989bd
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-12 21:17:45 +0200
+commit e2870db5be1503e6a489fc3d47daf950d6f62723
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-22 23:33:39 +0800
- Translations: Update the Hungarian translation.
+ Tests: Add two RISC-V Filter test files.
+
+ These test files achieve 100% code coverage in
+ src/liblzma/simple/riscv.c. They contain all of the instructions that
+ should be filtered and a few cases that should not.
- po/hu.po | 625 ++++++++++++++++++++++++++++++++++++---------------------------
- 1 file changed, 357 insertions(+), 268 deletions(-)
+ tests/files/README | 8 ++++++++
+ tests/files/good-1-riscv-lzma2-1.xz | Bin 0 -> 7512 bytes
+ tests/files/good-1-riscv-lzma2-2.xz | Bin 0 -> 7516 bytes
+ 3 files changed, 8 insertions(+)
-commit 2bbb9c0f3829a8b121b36998d273a6c6f92000f4
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-11 17:58:57 +0200
+commit b26a89869315ece2f6d9d10d32d45f672550f245
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-22 23:33:39 +0800
- Translations: Update the Finnish translation.
+ xz: Update message in --long-help for RISC-V Filter.
- po/fi.po | 610 ++++++++++++++++++++++++++++++++++++---------------------------
- 1 file changed, 348 insertions(+), 262 deletions(-)
+ src/xz/message.c | 1 +
+ 1 file changed, 1 insertion(+)
-commit 3c8cbb8137b6f8ed9416c1209d73cdbcb015251f
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-11 17:58:18 +0200
+commit 283f778908873eca61388029fc418fa800c9d7d7
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-22 23:33:39 +0800
- Translations: Update the Croatian translation.
+ xz: Update the man page for the RISC-V Filter.
+
+ A special note was added to suggest using four-byte alignment when the
+ compressed instruction extension is not present in a RISC-V binary.
- po/hr.po | 680 +++++++++++++++++++++++++++++++++++----------------------------
- 1 file changed, 381 insertions(+), 299 deletions(-)
+ src/xz/xz.1 | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
-commit 26c3359eac0988d6f3986735cd1363bec1678e8e
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-11 17:57:18 +0200
+commit ac3691ccca051d67f60b4a3b05b88e511d0b1b28
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-22 23:33:39 +0800
- Translations: Update the Polish translation.
+ Tests: Add RISC-V Filter test in test_compress.sh.
- po/pl.po | 569 ++++++++++++++++++++++++++++++++++-----------------------------
- 1 file changed, 309 insertions(+), 260 deletions(-)
+ tests/test_compress.sh | 1 +
+ 1 file changed, 1 insertion(+)
-commit 577e467b137c735afb8de6ae71ac7a73c2960cc4
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-11 17:56:44 +0200
+commit 2959dbc7358efcf421ce51bc9cd7eae8fdd8fec4
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-22 23:33:39 +0800
- Translations: Update the Spanish translation.
+ liblzma: Update string_conversion.c to support RISC-V Filter.
- po/es.po | 598 ++++++++++++++++++++++++++++++++++++---------------------------
- 1 file changed, 344 insertions(+), 254 deletions(-)
+ src/liblzma/common/string_conversion.c | 5 +++++
+ 1 file changed, 5 insertions(+)
-commit f9b4ff6e9a0f1678650775582d3e4fe782abce97
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-11 17:16:03 +0200
+commit 34372a5adbe5a7f6bf29498410ba3a463a720966
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-22 23:33:39 +0800
- Update THANKS.
+ CMake: Support RISC-V BCJ Filter for encoding and decoding.
- THANKS | 1 +
+ CMakeLists.txt | 1 +
1 file changed, 1 insertion(+)
-commit a39961ef211e1bf030b17edeea3cff29fe263b67
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-11 17:15:25 +0200
+commit 440a2eccb082dc13400c09e22308a58fef85146c
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-22 23:33:39 +0800
- liblzma: Fix building with Intel ICC (the classic compiler).
+ liblzma: Add RISC-V BCJ filter.
+
+ The new Filter ID is 0x0B.
- It claims __GNUC__ >= 10 but doesn't support __symver__ attribute.
+ Thanks to Chien Wong <m@xv97.com> for the initial version of the Filter,
+ the xz CLI updates, and the Autotools build system modifications.
- Thanks to Stephen Sachs.
+ Thanks to Igor Pavlov for his many contributions to the design of
+ the filter.
- src/liblzma/common/common.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ configure.ac | 4 +-
+ src/liblzma/api/lzma/bcj.h | 5 +
+ src/liblzma/common/filter_common.c | 9 +
+ src/liblzma/common/filter_decoder.c | 8 +
+ src/liblzma/common/filter_encoder.c | 10 +
+ src/liblzma/simple/Makefile.inc | 4 +
+ src/liblzma/simple/riscv.c | 688 ++++++++++++++++++++++++++++++++++++
+ src/liblzma/simple/simple_coder.h | 9 +
+ src/xz/args.c | 7 +
+ 9 files changed, 742 insertions(+), 2 deletions(-)
-commit c715f683dcb1a817d565da292cddfbceda643e12
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-11 14:35:58 +0200
+commit 5540f4329bbdb4deb4850d4af48b18ad074bba19
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-19 23:08:14 +0800
- liblzma: Fix incorrect #ifdef for x86 SSE2 support.
+ Docs: Update .xz file format specification to 1.2.0.
- __SSE2__ is the correct macro for SSE2 support with GCC, Clang,
- and ICC. __SSE2_MATH__ means doing floating point math with SSE2
- instead of 387. Often the latter macro is defined if the first
- one is but it was still a bug.
+ The new RISC-V filter was added to the specification, in addition to
+ updating the specification URL.
- src/liblzma/common/memcmplen.h | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
+ doc/xz-file-format.txt | 29 +++++++++++++++++------------
+ 1 file changed, 17 insertions(+), 12 deletions(-)
-commit bd334ae56afe7f642ad4d0f1ac19e74e82daa1ce
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-11 13:27:06 +0200
+commit 22d86192f8cf00902a1f90ee2a83ca600794459b
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-19 23:08:14 +0800
- Add NEWS for 5.2.7 (forgotten cherry-pick from v5.2).
+ xz: Update website URLs in the man pages.
- NEWS | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 74 insertions(+)
+ src/xz/xz.1 | 6 +++---
+ src/xzdec/xzdec.1 | 4 ++--
+ 2 files changed, 5 insertions(+), 5 deletions(-)
-commit 3c7860cf49de6f81046b3a4034a89f3a4803a576
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-11 13:16:21 +0200
+commit 6b63c4c6139fa1bb21b570521d3d2b4a608bc34d
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-19 23:08:14 +0800
- xzdiff: Add support for .lz files.
-
- The other scripts don't need changes for .lz support because
- in those scripts it is enough that xz supports .lz.
+ liblzma: Update website URL.
- src/scripts/xzdiff.in | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
+ dos/config.h | 2 +-
+ src/liblzma/api/lzma.h | 6 +++---
+ 2 files changed, 4 insertions(+), 4 deletions(-)
-commit d76c752a6d77052e5ad57ade555082585f7ac5d8
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-11 12:23:58 +0200
+commit fce4758018f3a3589236f3fe7999fd9dd08c77e9
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-19 23:08:14 +0800
- Scripts: Ignore warnings from xz.
-
- In practice this means making the scripts work when
- the input files have an unsupported check type which
- isn't a problem in practice unless support for
- some check types has been disabled at build time.
+ Docs: Update website URLs.
- src/scripts/xzdiff.in | 5 +++--
- src/scripts/xzgrep.in | 2 +-
- src/scripts/xzless.in | 4 ++--
- src/scripts/xzmore.in | 4 ++--
- 4 files changed, 8 insertions(+), 7 deletions(-)
+ .github/SECURITY.md | 2 +-
+ COPYING | 3 ++-
+ README | 4 ++--
+ doc/faq.txt | 2 +-
+ doc/lzma-file-format.txt | 18 +++++++++---------
+ windows/README-Windows.txt | 3 ++-
+ 6 files changed, 17 insertions(+), 15 deletions(-)
-commit 6552535afd1fe29d726ab6e68cf14ce3624fd48c
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-10 12:34:43 +0200
+commit c26812c5b2c8a2a47f43214afe6b0b840c73e4f5
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2024-01-19 23:08:14 +0800
- Translations: Rename poa4/fr_FR.po to po4a/fr.po.
-
- That's how it is preferred at the Translation Project.
- On my system /usr/share/man/fr_FR doesn't contain any
- other man pages than XZ Utils while /usr/share/man/fr
- has quite a few, so this will fix that too.
-
- Thanks to Benno Schulenberg from the Translation Project.
+ Build: Update website URL.
- po4a/{fr_FR.po => fr.po} | 0
- po4a/po4a.conf | 2 +-
- 2 files changed, 1 insertion(+), 1 deletion(-)
+ CMakeLists.txt | 2 +-
+ configure.ac | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
-commit 0918159ce4c75bfb60aff0193b559f8a9f41d25a
+commit fbb3ce541ef79cad1710e88a27a5babb5f6f8e5b
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-09 18:48:50 +0200
+Date: 2024-01-11 15:01:50 +0200
- xz: Update the man page about BCJ filters, including upcoming --arm64.
-
- The --arm64 isn't actually implemented yet in the form
- described in this commit.
-
- Thanks to Jia Tan.
+ liblzma: CRC: Add a comment to crc_x86_clmul.h about BUILDING_ macros.
- src/xz/xz.1 | 66 +++++++++++++++++++++++++++----------------------------------
- 1 file changed, 29 insertions(+), 37 deletions(-)
+ src/liblzma/check/crc_x86_clmul.h | 6 ++++++
+ 1 file changed, 6 insertions(+)
-commit ba2ae3596f6be1587495f33b367488f6e00e56f1
+commit 4f518c1b6b7b7ce5dcefea81acd44d7a086a8882
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-09 18:14:14 +0200
+Date: 2024-01-11 15:22:36 +0200
- xz: Add --arm64 to --long-help and omit endianness from ARM(-Thumb).
-
- Modern 32-bit ARM in big endian mode use little endian for
- instruction encoding still, so the filters work on such
- executables too. It's likely less confusing for users this way.
-
- The --arm64 option hasn't been implemented yet (there is
- --experimental-arm64 but it's different). The --arm64 option
- is added now anyway because this is the likely result and the
- strings need to be ready for translators.
+ liblzma: CRC: Remove crc_always_inline, use lzma_always_inline instead.
- Thanks to Jia Tan.
+ Now crc_simd_body() in crc_x86_clmul.h is only called once
+ in a translation unit, we no longer need to be so cautious
+ about ensuring the always-inline behavior.
- src/xz/message.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
+ src/liblzma/check/crc_common.h | 20 --------------------
+ src/liblzma/check/crc_x86_clmul.h | 2 +-
+ 2 files changed, 1 insertion(+), 21 deletions(-)
-commit 802d57d9215d9c81dbee86edb43c9e93a7f7ec55
+commit 35c03ec6bf66f1b159964c9721a2dce0e2859b20
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-09 15:12:13 +0200
+Date: 2024-01-11 14:39:46 +0200
- Windows: Update the VS project files for ARM64 and .lz support.
+ liblzma: CRC: Update CLMUL comments to more generic wording.
- windows/vs2013/config.h | 9 +++++++++
- windows/vs2013/liblzma.vcxproj | 5 ++++-
- windows/vs2013/liblzma_dll.vcxproj | 5 ++++-
- windows/vs2017/config.h | 9 +++++++++
- windows/vs2017/liblzma.vcxproj | 3 +++
- windows/vs2017/liblzma_dll.vcxproj | 3 +++
- windows/vs2019/config.h | 9 +++++++++
- windows/vs2019/liblzma.vcxproj | 5 ++++-
- windows/vs2019/liblzma_dll.vcxproj | 5 ++++-
- 9 files changed, 49 insertions(+), 4 deletions(-)
+ src/liblzma/check/crc32_fast.c | 16 ++++++++--------
+ src/liblzma/check/crc64_fast.c | 10 +++++-----
+ 2 files changed, 13 insertions(+), 13 deletions(-)
-commit 5846aeda05972bc803c6094821ae836229ebe691
+commit 66f080e8016129576536482ac377e2ecac7a2b90
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-09 14:57:48 +0200
+Date: 2024-01-10 18:23:31 +0200
- DOS: Update Makefile and config.h to include ARM64 and .lz support.
+ liblzma: Rename arch-specific CRC functions and macros.
+
+ CRC_CLMUL was split to CRC_ARCH_OPTIMIZED and CRC_X86_CLMUL.
+ CRC_ARCH_OPTIMIZED is defined when an arch-optimized version is used.
+ Currently the x86 CLMUL implementations are the only arch-optimized
+ versions, and these also use the CRC_x86_CLMUL macro to tell when
+ crc_x86_clmul.h needs to be included.
+
+ is_clmul_supported() was renamed to is_arch_extension_supported().
+ crc32_clmul() and crc64_clmul() were renamed to
+ crc32_arch_optimized() and crc64_arch_optimized().
+ This way the names make sense with arch-specific non-CLMUL
+ implementations as well.
- dos/Makefile | 2 ++
- dos/config.h | 9 +++++++++
- 2 files changed, 11 insertions(+)
+ src/liblzma/check/crc32_fast.c | 13 +++++++------
+ src/liblzma/check/crc64_fast.c | 13 +++++++------
+ src/liblzma/check/crc_common.h | 9 ++++++---
+ src/liblzma/check/crc_x86_clmul.h | 21 +++++++++++----------
+ 4 files changed, 31 insertions(+), 25 deletions(-)
-commit 781da8d6c44de6aa278c916375250668a0b107f2
+commit 3dbed75b0b9c7087c76fe687acb5cf582cd57b99
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-09 14:45:05 +0200
+Date: 2024-01-10 18:19:21 +0200
- CMake: Add lzip decoder files and #define to the build.
+ liblzma: Fix a comment in crc_common.h.
- CMakeLists.txt | 3 +++
- 1 file changed, 3 insertions(+)
+ src/liblzma/check/crc_common.h | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
-commit df8ad4af65a9c4846b108550d0083770a69dee64
+commit 419f55f9dfc2df8792902b8953d50690121afeea
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-09 14:41:56 +0200
+Date: 2023-10-20 23:35:10 +0300
- Docs: Update INSTALL and also add new prohibited options to PACKAGERS.
+ liblzma: Avoid extern lzma_crc32_clmul() and lzma_crc64_clmul().
+
+ A CLMUL-only build will have the crcxx_clmul() inlined into
+ lzma_crcxx(). Previously a jump to the extern lzma_crcxx_clmul()
+ was needed. Notes about shared liblzma on ELF platforms:
+
+ - On platforms that support ifunc and -fvisibility=hidden, this
+ was silly because CLMUL-only build would have that single extra
+ jump instruction of extra overhead.
+
+ - On platforms that support neither -fvisibility=hidden nor linker
+ version script (liblzma*.map), jumping to lzma_crcxx_clmul()
+ would go via PLT so a few more instructions of overhead (still
+ not a big issue but silly nevertheless).
+
+ There was a downside with static liblzma too: if an application only
+ needs lzma_crc64(), static linking would make the linker include the
+ CLMUL code for both CRC32 and CRC64 from crc_x86_clmul.o even though
+ the CRC32 code wouldn't be needed, thus increasing code size of the
+ executable (assuming that -ffunction-sections isn't used).
+
+ Also, now compilers are likely to inline crc_simd_body()
+ even if they don't support the always_inline attribute
+ (or MSVC's __forceinline). Quite possibly all compilers
+ that build the code do support such an attribute. But now
+ it likely isn't a problem even if the attribute wasn't supported.
+
+ Now all x86-specific stuff is in crc_x86_clmul.h. If other archs
+ The other archs can then have their own headers with their own
+ is_clmul_supported() and crcxx_clmul().
+
+ Another bonus is that the build system doesn't need to care if
+ crc_clmul.c is needed.
+
+ is_clmul_supported() stays as inline function as it's not needed
+ when doing a CLMUL-only build (avoids a warning about unused function).
- INSTALL | 49 +++++++++++++++++++++++++++++++++++++++++--------
- PACKAGERS | 2 ++
- 2 files changed, 43 insertions(+), 8 deletions(-)
+ CMakeLists.txt | 7 +-
+ configure.ac | 1 -
+ src/liblzma/check/Makefile.inc | 6 +-
+ src/liblzma/check/crc32_fast.c | 9 ++-
+ src/liblzma/check/crc64_fast.c | 9 ++-
+ src/liblzma/check/crc_common.h | 64 ----------------
+ src/liblzma/check/{crc_clmul.c => crc_x86_clmul.h} | 86 ++++++++++++++++++----
+ 7 files changed, 91 insertions(+), 91 deletions(-)
-commit c8ef089c149afaab413c3a51be827dd1d11afe0e
+commit e3833e297dfb5021a197bda34ba2a795e30aaf8a
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-20 17:39:06 +0300
+Date: 2023-10-21 00:06:52 +0300
- Tests: Test the .lz files in test_files.sh.
+ liblzma: crc_clmul.c: Add crc_attr_target macro.
+
+ This reduces the number of the complex #if directives.
- tests/test_files.sh | 25 +++++++++++++++++++++++++
- 1 file changed, 25 insertions(+)
+ src/liblzma/check/crc_clmul.c | 30 ++++++++++++++++--------------
+ 1 file changed, 16 insertions(+), 14 deletions(-)
-commit c8f70ebb4628ceb6cb29cc9195d9deadf69d2bd7
+commit d164ac0e62904126f7920c25f9a2875c8cd28b97
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-20 15:35:59 +0300
+Date: 2023-10-20 22:49:48 +0300
- Tests: Add .lz (lzip) test files.
+ liblzma: Simplify existing cases with lzma_attr_no_sanitize_address.
- tests/files/README | 109 +++++++++++++++++++++++++++++----
- tests/files/bad-1-v0-uncomp-size.lz | Bin 0 -> 42 bytes
- tests/files/bad-1-v1-crc32.lz | Bin 0 -> 50 bytes
- tests/files/bad-1-v1-dict-1.lz | Bin 0 -> 50 bytes
- tests/files/bad-1-v1-dict-2.lz | Bin 0 -> 50 bytes
- tests/files/bad-1-v1-magic-1.lz | Bin 0 -> 50 bytes
- tests/files/bad-1-v1-magic-2.lz | Bin 0 -> 50 bytes
- tests/files/bad-1-v1-member-size.lz | Bin 0 -> 50 bytes
- tests/files/bad-1-v1-trailing-magic.lz | Bin 0 -> 54 bytes
- tests/files/bad-1-v1-uncomp-size.lz | Bin 0 -> 50 bytes
- tests/files/good-1-v0-trailing-1.lz | Bin 0 -> 59 bytes
- tests/files/good-1-v0.lz | Bin 0 -> 42 bytes
- tests/files/good-1-v1-trailing-1.lz | Bin 0 -> 67 bytes
- tests/files/good-1-v1-trailing-2.lz | Bin 0 -> 70 bytes
- tests/files/good-1-v1.lz | Bin 0 -> 50 bytes
- tests/files/good-2-v0-v1.lz | Bin 0 -> 78 bytes
- tests/files/good-2-v1-v0.lz | Bin 0 -> 78 bytes
- tests/files/good-2-v1-v1.lz | Bin 0 -> 86 bytes
- tests/files/unsupported-1-v234.lz | Bin 0 -> 50 bytes
- 19 files changed, 98 insertions(+), 11 deletions(-)
+ src/liblzma/check/crc_clmul.c | 12 +++---------
+ 1 file changed, 3 insertions(+), 9 deletions(-)
-commit 731db13e6fa3ad3e3fc786c0ccf6eac4cce6865f
+commit 9523c1300d22fa715765c181cf991d14d6112fb1
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-19 22:32:51 +0300
+Date: 2023-10-20 21:53:35 +0300
- xz: Remove the commented-out FORMAT_GZIP, gzip, .gz, and .tgz.
+ liblzma: #define crc_attr_no_sanitize_address in crc_common.h.
- src/xz/args.c | 2 --
- src/xz/coder.h | 1 -
- src/xz/suffix.c | 9 ---------
- 3 files changed, 12 deletions(-)
+ src/liblzma/check/crc_common.h | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
-commit 3176f992c55b8d788c4633809aaf9447376a5a12
+commit 93d144f0930821590524247bd174afd38003d7f0
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-08 21:28:15 +0300
+Date: 2023-10-20 23:25:14 +0300
- xz: Add .lz (lzip) decompression support.
+ liblzma: CRC: Add empty lines.
- If configured with --disable-lzip-decoder then --long-help will
- still list `lzip' in --format but I left it like that since
- due to translations it would be messy to have two help strings.
- Features are disabled only in special situations so wrong help
- in such a situation shouldn't matter much.
-
- Thanks to Michał Górny for the original patch.
+ And remove one too.
- src/xz/args.c | 9 ++++++++
- src/xz/coder.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
- src/xz/coder.h | 3 +++
- src/xz/message.c | 2 +-
- src/xz/suffix.c | 26 ++++++++++++++++++----
- src/xz/xz.1 | 46 +++++++++++++++++++++++++++++++++-----
- 6 files changed, 141 insertions(+), 13 deletions(-)
+ src/liblzma/check/crc32_fast.c | 2 ++
+ src/liblzma/check/crc64_fast.c | 3 +++
+ src/liblzma/check/crc_clmul.c | 1 -
+ 3 files changed, 5 insertions(+), 1 deletion(-)
-commit 034086e1ae1459210837a24e04878435c86dc41b
+commit 0c7e854ffd27f1cec2e9b0e61601d6f90bfa10ae
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-08 00:29:20 +0300
+Date: 2023-10-20 23:19:33 +0300
- liblzma: Add .lz support to lzma_auto_decoder().
+ liblzma: crc_clmul.c: Tidy up the location of MSVC pragma.
- Thanks to Michał Górny for the original patch.
+ It makes no difference in practice.
- src/liblzma/api/lzma/container.h | 10 ++++++----
- src/liblzma/common/Makefile.inc | 3 ++-
- src/liblzma/common/auto_decoder.c | 23 +++++++++++++++++------
- src/liblzma/common/lzip_decoder.h | 22 ++++++++++++++++++++++
- 4 files changed, 47 insertions(+), 11 deletions(-)
+ src/liblzma/check/crc_clmul.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit 0538db038f3cdc352007dacb42454aa1806b8e40
+commit 15cf3f04f270d707a5c91cc0208b23b6db42b774
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-06 15:50:20 +0300
+Date: 2023-12-20 21:16:24 +0200
- liblzma: Add .lz (lzip) decompression support (format versions 0 and 1).
-
- Support for format version 0 was removed from lzip 1.18 for some
- reason. .lz format version 0 files are rare (and old) but some
- source packages were released in this format, and some people might
- have personal files in this format too. It's very little extra code
- to support it along side format version 1 so this commits adds
- support for both.
-
- The Sync Flush marker extentension to the original .lz format
- version 1 isn't supported. It would require changes to the
- LZMA decoder itself. Such files are very rare anyway.
-
- See the API doc for lzma_lzip_decoder() for more details about
- the .lz format support.
-
- Thanks to Michał Górny for the original patch.
+ Update THANKS.
- configure.ac | 21 ++
- src/liblzma/api/lzma/container.h | 62 +++++-
- src/liblzma/common/Makefile.inc | 5 +
- src/liblzma/common/lzip_decoder.c | 413 ++++++++++++++++++++++++++++++++++++++
- src/liblzma/liblzma_generic.map | 1 +
- src/liblzma/liblzma_linux.map | 1 +
- 6 files changed, 501 insertions(+), 2 deletions(-)
+ THANKS | 1 +
+ 1 file changed, 1 insertion(+)
-commit 633d48a075b9ce4b9c08a7a56a7eb4cabc18100c
+commit cd64dd70d5665b6048829c45772d08606f44672e
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-09 14:17:23 +0200
+Date: 2023-12-20 21:15:16 +0200
- liblzma: Add the missing Makefile.inc change for --disable-microlzma.
+ liblzma: Use 8-byte method in memcmplen.h on ARM64.
- This was forgotten from commit 59c4d6e1390f6f4176f43ac1dad1f7ac03c449b8.
-
- src/liblzma/common/Makefile.inc | 12 ++++++++++--
- 1 file changed, 10 insertions(+), 2 deletions(-)
-
-commit 724285dadbdc88765c8fb83eab9816575a260966
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-09 14:10:52 +0200
-
- xz: Add comments about stdin and src_st.st_size.
+ It requires fast unaligned access to 64-bit integers
+ and a fast instruction to count leading zeros in
+ a 64-bit integer (__builtin_ctzll()). This perhaps
+ should be enabled on some other archs too.
- "xz -v < regular_file > out.xz" doesn't display the percentage
- and estimated remaining time because it doesn't even try to
- check the input file size when input is read from stdin.
- This could be improved but for now there's just a comment
- to remind about it.
-
- src/xz/coder.c | 9 +++++++++
- src/xz/file_io.c | 4 ++++
- 2 files changed, 13 insertions(+)
-
-commit f723eec68b0e44234910f669a29119de33018967
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-09 12:48:22 +0200
-
- xz: Fix displaying of file sizes in progress indicator in passthru mode.
+ Thanks to Chenxi Mao for the original patch:
+ https://github.com/tukaani-project/xz/pull/75 (the first commit)
+ According to the numbers there, this may improve encoding
+ speed by about 3-5 %.
- It worked for one input file since the counters are zero when
- xz starts but they weren't reset when starting a new file in
- passthru mode. For example, if files A, B, and C are one byte each,
- then "xz -dcvf A B C" would show file sizes as 1, 2, and 3 bytes
- instead of 1, 1, and 1 byte.
+ This enables the 8-byte method on MSVC ARM64 too which
+ should work but wasn't tested.
- src/xz/coder.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
+ src/liblzma/common/memcmplen.h | 18 ++++++++++--------
+ 1 file changed, 10 insertions(+), 8 deletions(-)
-commit 69265d0f223ddf1d66f799b8b047df22923e376f
+commit 12c90c00f05e19da3c0c91d8cd8e0d0d45965606
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-09 11:27:20 +0200
+Date: 2023-12-20 21:01:06 +0200
- xz: Add a comment why --to-stdout is not in --help.
+ liblzma: Check also for __clang__ in memcmplen.h.
- It is on the man page still.
+ This change hopefully makes no practical difference as Clang
+ likely was detected via __GNUC__ or _MSC_VER already.
- src/xz/message.c | 3 +++
- 1 file changed, 3 insertions(+)
+ src/liblzma/common/memcmplen.h | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
-commit fe6b8852a3c6a0eb5a3c33512e0a69af257d3bc7
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-08 23:05:37 +0200
+commit 133c5851eb917c6d99d0b623c1689c8518e65f38
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-12-21 21:39:08 +0800
- xz: Make xz -lvv show that the upcoming --arm64 needs 5.4.0 to decompress.
+ Translations: Update the French translation.
- src/xz/list.c | 20 +++++++++++++++-----
- 1 file changed, 15 insertions(+), 5 deletions(-)
+ po/fr.po | 632 +++++++++++++++++++++++++++++++++++++--------------------------
+ 1 file changed, 370 insertions(+), 262 deletions(-)
-commit fb3f05ac9f2b4b0e3643401960fbeab31997ac7a
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-08 22:26:54 +0200
+commit 710cbc186cad0ac601c38bd6bf31167648a5581e
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-12-21 16:39:53 +0800
- Docs: Update faq.txt a little.
+ xz: Add a comment to Capsicum sandbox setup.
+
+ This comment is repeated in xzdec.c to help remind us why all the
+ capabilities are removed from stdin in certain situations.
- doc/faq.txt | 66 ++++++++++++++++++++++++++++++++++++++++---------------------
- 1 file changed, 43 insertions(+), 23 deletions(-)
+ src/xz/file_io.c | 1 +
+ 1 file changed, 1 insertion(+)
-commit 05331f091ec3b68eccbfb2a9a7a576072768fb4b
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-08 16:57:17 +0200
+commit 4e1c695676bafbaecc9fb307f6ee94138ae72c12
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-12-20 22:19:19 +0800
- Translations: Update Turkish translation.
+ Docs: Update --enable-sandbox option in INSTALL.
+
+ xzdec now also uses the sandbox when its configured.
- po/tr.po | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ INSTALL | 17 ++++++++++-------
+ 1 file changed, 10 insertions(+), 7 deletions(-)
-commit ed3a4822963b4940d84e6f44d47277c394fc046d
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-08 14:55:32 +0200
+commit ebddf20214143a8e002ab897e95e880bb4c5ac44
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-12-20 22:39:13 +0800
- Translations: Update Croatian translation.
+ CMake: Move sandbox detection outside of xz section.
+
+ The sandbox is now enabled for xzdec as well, so it no longer belongs
+ in just the xz section. xz and xzdec are always built, except for older
+ MSVC versions, so there isn't a need to conditionally show the sandbox
+ configuration. CMake will do a little unecessary work on older MSVC
+ versions that can't build xz or xzdec, but this is a very small
+ downside.
- po/hr.po | 190 ++++++++++++++++++++++++++++++++-------------------------------
- 1 file changed, 96 insertions(+), 94 deletions(-)
+ CMakeLists.txt | 178 +++++++++++++++++++++++++++++++--------------------------
+ 1 file changed, 98 insertions(+), 80 deletions(-)
-commit 4746f5ec721316bc4c6fec9905b2902e0360e0af
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-08 14:13:03 +0200
+commit 5feb09266fd2928ec0a4dcb98c1dc7f053111316
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-12-20 22:43:44 +0800
- liblzma: Update API docs about decoder flags.
+ Build: Allow sandbox to be configured for just xzdec.
+
+ If xz is disabled, then xzdec can still use the sandbox.
- src/liblzma/api/lzma/container.h | 21 +++++++++++++++++----
- 1 file changed, 17 insertions(+), 4 deletions(-)
+ configure.ac | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
-commit 8779a9db5d0cec00c9dc9e9965dd2dda04f9d80d
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-08 14:01:50 +0200
+commit d74fb5f060b76db709b50f5fd37490394e52f975
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-12-19 21:18:28 +0800
- liblzma: Use the return_if_error() macro in alone_decoder.c.
+ xzdec: Add sandbox support for Pledge, Capsicum, and Landlock.
+
+ A very strict sandbox is used when the last file is decompressed. The
+ likely most common use case of xzdec is to decompress a single file.
+ The Pledge sandbox is applied to the entire process with slightly more
+ relaxed promises, until the last file is processed.
+
+ Thanks to Christian Weisgerber for the initial patch adding Pledge
+ sandboxing.
- src/liblzma/common/alone_decoder.c | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
+ src/xzdec/xzdec.c | 146 +++++++++++++++++++++++++++++++++++++++++++++++++++---
+ 1 file changed, 139 insertions(+), 7 deletions(-)
-commit 3f4990b6822961e75cd9b4e2e82b1df63f6f8fcc
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-08 14:00:58 +0200
+commit b34b6a9912d6165e34ba0db151b7f9941d2e06d5
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-12-20 21:31:34 +0800
- liblzma: Fix a comment in auto_decoder.c.
+ liblzma: Initialize lzma_lz_encoder pointers with NULL.
+
+ This fixes the recent change to lzma_lz_encoder that used memzero
+ instead of the NULL constant. On some compilers the NULL constant
+ (always 0) may not equal the NULL pointer (this only needs to guarentee
+ to not point to valid memory address).
+
+ Later code compares the pointers to the NULL pointer so we must
+ initialize them with the NULL pointer instead of 0 to guarentee
+ code correctness.
- src/liblzma/common/auto_decoder.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ src/liblzma/lz/lz_encoder.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
-commit 026a5897c72a2041ae08ceec54ce8b1cdeb51334
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-08 13:43:19 +0200
+commit 183a62f0b540ff4d23cc19b2b6bc2525f0bd64df
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-12-16 20:51:38 +0800
- xz: Initialize the pledge(2) sandbox at the very beginning of main().
+ liblzma: Set all values in lzma_lz_encoder to NULL after allocation.
+
+ The first member of lzma_lz_encoder doesn't necessarily need to be set
+ to NULL since it will always be set before anything tries to use it.
+ However the function pointer members must be set to NULL since other
+ functions rely on this NULL value to determine if this behavior is
+ supported or not.
+
+ This fixes a somewhat serious bug, where the options_update() and
+ set_out_limit() function pointers are not set to NULL. This seems to
+ have been forgotten since these function pointers were added many years
+ after the original two (code() and end()).
+
+ The problem is that by not setting this to NULL we are relying on the
+ memory allocation to zero things out if lzma_filters_update() is called
+ on a LZMA1 encoder. The function pointer for set_out_limit() is less
+ serious because there is not an API function that could call this in an
+ incorrect way. set_out_limit() is only called by the MicroLZMA encoder,
+ which must use LZMA1 where set_out_limit() is always set. Its currently
+ not possible to call set_out_limit() on an LZMA2 encoder at this time.
- It feels better that the initializations are sandboxed too.
- They don't do anything that the pledge() call wouldn't allow.
+ So calling lzma_filters_update() on an LZMA1 encoder had undefined
+ behavior since its possible that memory could be manipulated so the
+ options_update member pointed to a different instruction sequence.
+
+ This is unlikely to be a bug in an existing application since it relies
+ on calling lzma_filters_update() on an LZMA1 encoder in the first place.
+ For instance, it does not affect xz because lzma_filters_update() can
+ only be used when encoding to the .xz format.
+
+ This is fixed by using memzero() to set all members of lzma_lz_encoder
+ to NULL after it is allocated. This ensures this mistake will not occur
+ here in the future if any additional function pointers are added.
- src/xz/main.c | 27 ++++++++++++++-------------
- 1 file changed, 14 insertions(+), 13 deletions(-)
+ src/liblzma/lz/lz_encoder.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
-commit 49a59f6ca001c3ce9affa2c162b437aad021b4d5
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-07 22:51:16 +0200
+commit 1a1bb381db7a20cf86cb45a350e5cca35224d017
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-12-16 20:30:55 +0800
- xz: Extend --robot --info-memory output.
-
- Now it includes everything that the human-readable --info-memory shows.
+ liblzma: Tweak a comment.
- src/xz/hardware.c | 24 +++++++++++++++---------
- src/xz/xz.1 | 47 +++++++++++++++++++++++++++++++++++++++++------
- 2 files changed, 56 insertions(+), 15 deletions(-)
+ src/liblzma/lz/lz_encoder.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 5e2450c75cbac966c62cf2231c824f2cc91ddba8
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-11-07 17:22:04 +0200
+commit 55810780e04f759747b02683fb8020b8cd022a85
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-12-16 20:28:21 +0800
- liblzma: Include cached memory in reported memusage in threaded decoder.
-
- This affects lzma_memusage() and lzma_memlimit_set() when used
- with the threaded decompressor. Now all allocations are reported
- by lzma_memusage() (so it's not misleading) and lzma_memlimit_set()
- cannot lower the limit below that value.
+ liblzma: Make parameter names in function definition match declaration.
- The alternative would have been to allow lowering the limit if
- doing so is possible by freeing the cached memory but since
- the primary use case of lzma_memlimit_set() is to increase
- memlimit after LZMA_MEMLIMIT_ERROR this simple approach
- was selected.
-
- The cached memory was always included when enforcing
- the memory usage limit while decoding.
-
- Thanks to Jia Tan.
+ lzma_raw_encoder() and lzma_raw_encoder_init() used "options" as the
+ parameter name instead of "filters" (used by the declaration). "filters"
+ is more clear since the parameter represents the list of filters passed
+ to the raw encoder, each of which contains filter options.
- src/liblzma/common/stream_decoder_mt.c | 22 +++++++++++++++++++---
- 1 file changed, 19 insertions(+), 3 deletions(-)
+ src/liblzma/common/filter_encoder.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
-commit 1fc6e7dd1fabdb60124d449b99273330ccab3ff1
+commit 5dad6f628af742bab826819760deb677597445f7
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-11-07 16:24:14 +0200
+Date: 2023-12-16 20:18:47 +0800
- xz: Avoid a compiler warning in progress_speed() in message.c.
+ liblzma: Improve lzma encoder init function consistency.
- This should be smaller too since it avoids the string constants.
+ lzma_encoder_init() did not check for NULL options, but
+ lzma2_encoder_init() did. This is more of a code style improvement than
+ anything else to help make lzma_encoder_init() and lzma2_encoder_init()
+ more similar.
- src/xz/message.c | 9 +++------
- 1 file changed, 3 insertions(+), 6 deletions(-)
+ src/liblzma/lzma/lzma_encoder.c | 3 +++
+ 1 file changed, 3 insertions(+)
-commit cf118c014683069b5dbe91898acdc40f2f0a1f5d
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-31 16:26:05 +0200
+commit e1b1a9d6370b788bd6078952c6c201e12bc27cbf
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-12-16 11:20:20 +0800
- Build: Clarify comment in configure.ac about SSE2.
+ Docs: Update repository URL in Changelog.
- configure.ac | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
+ ChangeLog | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit aad3c609ffb72f581a7a2b67be3ad70b2b327840
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-31 16:16:37 +0200
+commit f9b82bc64a9405e486575c65c1729229eb0a8198
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-12-15 16:56:31 +0800
- Build: Remove obsolete commented-out lines from configure.ac.
+ CI: Update Upload Artifact Action.
- configure.ac | 4 ----
- 1 file changed, 4 deletions(-)
+ .github/workflows/ci.yml | 2 +-
+ .github/workflows/windows-ci.yml | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
-commit e53e0e2186c6b8ce866bd19aec52f1c318ed31ba
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-31 13:31:58 +0200
+commit d0b24efe6cdc47db5b0fdf6306f70a2e0e63e49e
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-12-07 21:48:07 +0800
- Windows: Fix mythread_once() macro with Vista threads.
+ Tests: Silence -Wsign-conversion warning on GCC version < 10.
+
+ Since GCC version 10, GCC no longer complains about simple implicit
+ integer conversions with Arithmetic operators.
+
+ For instance:
+
+ uint8_t a = 5;
+ uint32_t b = a + 5;
- Don't call InitOnceComplete() if initialization was already done.
+ Give a warning on GCC 9 and earlier but this:
- So far mythread_once() has been needed only when building
- with --enable-small. windows/build.bash does this together
- with --disable-threads so the Vista-specific mythread_once()
- is never needed by those builds. VS project files or
- CMake-builds don't support HAVE_SMALL builds at all.
+ uint8_t a = 5;
+ uint32_t b = (a + 5) * 2;
+
+ Gives a warning with GCC 10+.
- src/common/mythread.h | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
+ tests/test_block_header.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 48dde3bab9dc04081acb5aa7cf7c5044b8a49f58
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-31 11:54:44 +0200
+commit 4a972a8ee3ed88ac14067c1d2f15b78988e5dae8
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-12-06 18:39:03 +0800
- liblzma: Silence -Wconversion warning from crc64_fast.c.
+ Update THANKS.
- src/liblzma/check/crc64_fast.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
+ THANKS | 1 +
+ 1 file changed, 1 insertion(+)
-commit a243c617ff249d915ac123de4f536b80322c1fdb
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-31 11:49:47 +0200
+commit ee2f48350099201694a7586e41d7aa2f09fc74da
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-12-06 18:30:25 +0800
- CMake: Sync tuklib_cpucores.cmake with tuklib_cpucores.m4.
+ Tests: Minor cleanups to OSS-Fuzz files.
+
+ Most of these fixes are small typos and tweaks. A few were caused by bad
+ advice from me. Here is the summary of what is changed:
+
+ - Author line edits
- This was forgotten from commit 2611c4d90535652d3eb7ef4a026a6691276fab43.
+ - Small comment changes/additions
+
+ - Using the return value in the error messages in the fuzz targets'
+ coder initialization code
+
+ - Removed fuzz_encode_stream.options. This set a max length, which may
+ prevent some worthwhile code paths from being properly exercised.
+
+ - Removed the max_len option from fuzz_decode_stream.options for the
+ same reason as fuzz_encode_stream. The alone decoder fuzz target still
+ has this restriction.
+
+ - Altered the dictionary contents for fuzz_lzma.dict. Instead of keeping
+ the properties static and varying the dictionary size, the properties
+ are varied and the dictionary size is kept small. The dictionary size
+ doesn't have much impact on the code paths but the properties do.
+
+ Closes: https://github.com/tukaani-project/xz/pull/73
- cmake/tuklib_cpucores.cmake | 5 +++++
- 1 file changed, 5 insertions(+)
+ tests/ossfuzz/Makefile | 3 ++
+ tests/ossfuzz/config/fuzz_decode_stream.options | 1 -
+ tests/ossfuzz/config/fuzz_lzma.dict | 34 +++++++++++-----------
+ tests/ossfuzz/fuzz_common.h | 16 +++++------
+ tests/ossfuzz/fuzz_decode_alone.c | 15 +++++-----
+ tests/ossfuzz/fuzz_decode_stream.c | 15 +++++-----
+ tests/ossfuzz/fuzz_encode_stream.c | 38 +++++++++++++++----------
+ 7 files changed, 66 insertions(+), 56 deletions(-)
-commit 05c72de06fcaaedc78f8abba7d5ec568ddcf1e75
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-27 15:49:18 +0300
+commit 483bb90eec7c83e1c2bcd06287714afd62d8c17d
+Author: Maksym Vatsyk <maksym.vatsyk@leviathansecurity.com>
+Date: 2023-12-05 16:31:09 +0100
- Tests: test_files.sh: Make it not fail if features were disabled at build.
+ Tests: Add fuzz_encode_stream ossfuzz target.
- It now tries to test as many files as easily possible.
- The exit status indicates skipping if any of the files were
- skipped. This way it is easy to notice if something is being
- skipped when it isn't expected.
+ This fuzz target handles .xz stream encoding. The first byte of input
+ is used to dynamically set the preset level in order to increase the
+ fuzz coverage of complex critical code paths.
- tests/test_files.sh | 50 ++++++++++++++++++++++++++++++++++++++++++++++----
- 1 file changed, 46 insertions(+), 4 deletions(-)
+ tests/ossfuzz/config/fuzz_encode_stream.options | 2 +
+ tests/ossfuzz/fuzz_encode_stream.c | 79 +++++++++++++++++++++++++
+ 2 files changed, 81 insertions(+)
-commit b3459327a51f4b8239d19e6c34b4e0c6bc2d81de
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-27 15:30:13 +0300
+commit 7ca8c9869df82756c3128c4fcf1058da4d18aa48
+Author: Maksym Vatsyk <maksym.vatsyk@leviathansecurity.com>
+Date: 2023-12-04 17:23:24 +0100
- Tests: test_files.sh: Suppress an expected warning from the log.
+ Tests: Add fuzz_decode_alone OSS-Fuzz target
- xz (but not xzdec) will normally warn about unsupported check
- but since we are testing specifically such a file, it's better
- to silence that warning so that it doesn't look suspicious in
- test_files.sh.log.
+ This fuzz target that handles LZMA alone decoding. A new fuzz
+ dictionary .dict was also created with common LZMA header values to
+ help speed up the discovery of valid headers.
+
+ tests/ossfuzz/config/fuzz_decode_alone.options | 3 ++
+ tests/ossfuzz/config/fuzz_lzma.dict | 22 ++++++++++++++
+ tests/ossfuzz/fuzz_decode_alone.c | 41 ++++++++++++++++++++++++++
+ 3 files changed, 66 insertions(+)
+
+commit 37581a77ad5a49615325b1d1925fdc402b1e1d5a
+Author: Maksym Vatsyk <maksym.vatsyk@leviathansecurity.com>
+Date: 2023-12-04 17:21:29 +0100
+
+ Tests: Update OSS-Fuzz Makefile.
- The use of -q and -Q in xzdec is just for consistency and
- doesn't affect the result at least for now.
+ All .c files can be built as separate fuzz targets. This simplifies
+ the Makefile by allowing us to use wildcards instead of having a
+ Makefile target for each fuzz target.
- tests/test_files.sh | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ tests/ossfuzz/Makefile | 13 +++++++++----
+ 1 file changed, 9 insertions(+), 4 deletions(-)
-commit 798c86e4231e0835ab76ccd0810c8ea30833b2ce
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-27 15:27:50 +0300
+commit 28ce6a1c2a74866c51f7996a6869679c236d3c94
+Author: Maksym Vatsyk <maksym.vatsyk@leviathansecurity.com>
+Date: 2023-12-04 17:20:08 +0100
- Tests: test_files.sh: Print the reason for skipping if xz & xzdec missing.
+ Tests: Move common OSS-Fuzz target code to .h file.
- tests/test_files.sh | 1 +
- 1 file changed, 1 insertion(+)
+ tests/ossfuzz/fuzz_common.h | 56 ++++++++++++++++++++++++++++++++++++
+ tests/ossfuzz/fuzz_decode_stream.c | 59 ++++++++++----------------------------
+ 2 files changed, 71 insertions(+), 44 deletions(-)
-commit c1dd8524e1af07f16b790463899de06a6a5fcc08
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-27 01:12:40 +0300
+commit bf0521ea1591c25b9d510c1b8be86073e9d847c6
+Author: Maksym Vatsyk <maksym.vatsyk@leviathansecurity.com>
+Date: 2023-12-04 17:18:20 +0100
- Tests: Keep test_compress_* working when some filters are unavailable.
+ Tests: Rename OSS-Fuzz files.
- tests/test_compress.sh | 34 ++++++++++++++++++++--------------
- 1 file changed, 20 insertions(+), 14 deletions(-)
+ tests/ossfuzz/config/fuzz.options | 2 --
+ tests/ossfuzz/config/fuzz_decode_stream.options | 3 +++
+ tests/ossfuzz/config/{fuzz.dict => fuzz_xz.dict} | 0
+ tests/ossfuzz/{fuzz.c => fuzz_decode_stream.c} | 0
+ 4 files changed, 3 insertions(+), 2 deletions(-)
-commit ce30ada91951d0746879ae438da11f1ee8a90aa0
+commit 685094b8e1c1aa1bf934de0366ca42ef599d25f7
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-10-23 21:01:08 +0800
+Date: 2023-11-30 23:10:43 +0800
- Tests: test_bcj_exact_size skips properly now if PowerPC filter disabled.
+ Update THANKS.
- tests/test_bcj_exact_size.c | 3 +++
- 1 file changed, 3 insertions(+)
+ THANKS | 1 +
+ 1 file changed, 1 insertion(+)
-commit 89c5cfcacaca7130509fac836e2f30c46b824502
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-26 00:05:57 +0300
+commit 3b3023e00b0071e10f589bbc3674e0ec432b8add
+Author: Kian-Meng Ang <kianmeng@cpan.org>
+Date: 2023-11-30 23:01:19 +0800
- Tests: Test also unsupported-*.xz.
+ Tests: Fix typos
- tests/test_files.sh | 37 +++++++++++++++++++++++++++++++++++++
- 1 file changed, 37 insertions(+)
+ tests/test_index.c | 2 +-
+ tests/test_lzip_decoder.c | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
-commit a4b214b93ac741edef9c41e55865b0b867ca2587
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-25 23:45:03 +0300
+commit 424d46ead8cbc0da57f406b76926ec4ed47437f5
+Author: Kian-Meng Ang <kianmeng@cpan.org>
+Date: 2023-11-30 22:59:47 +0800
- Build: Use AC_CONFIG_HEADERS instead of the ancient AC_CONFIG_HEADER.
-
- We require Autoconf >= 2.69 and that has AC_CONFIG_HEADERS.
-
- There is a warning about AC_PROG_CC_C99 being obsolete but
- it cannot be removed because it is needed with Autoconf 2.69.
+ xz: Fix typo
- configure.ac | 2 +-
+ src/xz/file_io.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-commit 04f299b64e73f50afc188c2590ebebc6b73ed744
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-25 23:31:44 +0300
+commit 35558adf9c45e5597f2c8dbd969885dd484038d2
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-11-30 20:41:00 +0800
- Build: Update m4/ax_pthread.m4 from Autoconf Archive.
+ Update THANKS.
- m4/ax_pthread.m4 | 29 ++++++++++++++++++++++-------
- 1 file changed, 22 insertions(+), 7 deletions(-)
+ THANKS | 1 +
+ 1 file changed, 1 insertion(+)
-commit 59c4d6e1390f6f4176f43ac1dad1f7ac03c449b8
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-25 23:28:34 +0300
+commit fd170e8557727bed6bec0518c16415064d972e4e
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-11-22 21:20:12 +0800
- Build: Add configure option --disable-microlzma.
-
- MicroLZMA was made for EROFS and used by erofs-utils.
- It might be used by something else in the future but
- those wanting a smaller build for specific situations
- can now disable this rarely-needed feature.
+ CI: Test musl libc builds on Ubuntu runner.
- configure.ac | 22 ++++++++++++++++++++++
- 1 file changed, 22 insertions(+)
+ .github/workflows/ci.yml | 19 +++++++++++++++++--
+ 1 file changed, 17 insertions(+), 2 deletions(-)
-commit 054ccd6d14b2cc6eddc56897af280d3221414150
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-25 23:09:11 +0300
+commit db2b4aa068a492c0013279a4ed43803e8ff9bb3e
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-11-22 21:12:15 +0800
- xz: Fix --single-stream with an empty .xz Stream.
-
- Example:
-
- $ xz -dc --single-stream good-0-empty.xz
- xz: good-0-empty.xz: Internal error (bug)
-
- The code, that is tries to catch some input file issues early,
- didn't anticipate LZMA_STREAM_END which is possible in that
- code only when --single-stream is used.
+ CI: Allow ci_build.sh to set a different C compiler.
- src/xz/coder.c | 9 +++++++++
- 1 file changed, 9 insertions(+)
+ build-aux/ci_build.sh | 11 ++++++++++-
+ 1 file changed, 10 insertions(+), 1 deletion(-)
-commit 563288ea705e83ff5cb292adf794650c263bca1d
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-25 21:11:58 +0300
+commit ff7badef53c2cd698d4b72b945f34dfd0835e13c
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-11-24 21:19:12 +0800
- xz: Add support for OpenBSD's pledge() sandbox.
+ CMake: Use consistent indentation with check_c_source_compiles().
- configure.ac | 12 +++++++++---
- src/xz/file_io.c | 11 +++++++++++
- src/xz/main.c | 13 +++++++++++++
- src/xz/private.h | 2 +-
- 4 files changed, 34 insertions(+), 4 deletions(-)
+ CMakeLists.txt | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit f9913e8ee2ba0b1e4ff4d0aa4c001aae305ed944
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-25 19:07:17 +0300
+commit d4af167570f2c14b002ee18a39d5b1e7e5a892b1
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-11-22 20:33:36 +0800
- xz: Fix decompressor behavior if input uses an unsupported check type.
-
- Now files with unsupported check will make xz display
- a warning, set the exit status to 2 (unless --no-warn is used),
- and then decompress the file normally. This is how it was
- supposed to work since the beginning but this was broken by
- the commit 231c3c7098f1099a56abb8afece76fc9b8699f05, that is,
- a little before 5.0.0 was released. The buggy behavior displayed
- a message, set exit status 1 (error), and xz didn't attempt to
- to decompress the file.
+ CMake: Change __attribute__((__ifunc__())) detection.
- This doesn't matter today except for special builds that disable
- CRC64 or SHA-256 at build time (but such builds should be used
- in special situations only). The bug matters if new check type
- is added in the future and an old xz version is used to decompress
- such a file; however, it's likely that such files would use a new
- filter too and an old xz wouldn't be able to decompress the file
- anyway.
+ This renames ALLOW_ATTR_IFUNC to USE_ATTR_IFUNC and applies the ifunc
+ detection changes that were made to the Autotools build.
- The first hunk in the commit is the actual fix. The second hunk
- is a cleanup since LZMA_TELL_ANY_CHECK isn't used in xz.
-
- There is a test file for unsupported check type but it wasn't
- used by test_files.sh, perhaps due to different behavior between
- xz and the simpler xzdec.
+ Fixes: https://github.com/tukaani-project/xz/issues/70
- src/xz/coder.c | 19 +++++++++++++++----
- 1 file changed, 15 insertions(+), 4 deletions(-)
+ CMakeLists.txt | 53 +++++++++++++++++++++++++++++++++++++++++++++--------
+ 1 file changed, 45 insertions(+), 8 deletions(-)
-commit aa4fe145b9486adc454f44fd3e09be9add808a0f
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-25 18:36:19 +0300
+commit 20ecee40a0053fd16371ef0628046bf45e548d72
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-11-24 20:19:11 +0800
- xz: Clarify the man page: input file isn't removed if an error occurs.
+ Docs: Update INSTALL for --enable_ifunc change.
- src/xz/xz.1 | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
+ INSTALL | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
-commit 8b46ae8cdeddfd7dc01fec92971b8696e9a96c5d
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-25 18:30:55 +0300
+commit ffb456593d695d70052a2f71c7a2e6269217d194
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-11-21 20:56:55 +0800
- xz: Refactor to remove is_empty_filename().
+ Build: Change --enable-ifunc handling.
+
+ Some compilers support __attribute__((__ifunc__())) even though the
+ dynamic linker does not. The compiler is able to create the binary
+ but it will fail on startup. So it is not enough to just test if
+ the attribute is supported.
- Long ago it was used in list.c too but nowadays it's needed
- only in io_open_src() so it's nicer to avoid a separate function.
+ The default value for enable_ifunc is now auto, which will attempt
+ to compile a program using __attribute__((__ifunc__())). There are
+ additional checks in this program if glibc is being used or if it
+ is running on FreeBSD.
+
+ Setting --enable-ifunc will skip this test and always enable
+ __attribute__((__ifunc__())), even if is not supported.
- src/xz/file_io.c | 4 +++-
- src/xz/util.c | 12 ------------
- src/xz/util.h | 4 ----
- 3 files changed, 3 insertions(+), 17 deletions(-)
+ configure.ac | 61 +++++++++++++++++++++++++++++++++++++++++++-----------------
+ 1 file changed, 44 insertions(+), 17 deletions(-)
-commit 85624015978b0de294cff3df79006df987c552b1
+commit 12b89bcc9915090eb42ae638e565af44b6832a23
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-25 18:23:54 +0300
+Date: 2023-11-23 17:39:10 +0200
- xz: If input file cannot be removed, treat it as a warning, not error.
-
- Treating it as a warning (message + exit status 2) matches gzip
- and it seems more logical as at that point the output file has
- already been successfully closed. When it's a warning it is
- possible to suppress it with --no-warn.
+ xz: Tweak a comment.
- src/xz/file_io.c | 4 ++--
+ src/xz/util.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-commit fda9f85f52c546f7ca0313cf89481da4707fecb3
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-24 16:25:09 +0300
+commit 2ab2e4b5a542eab93902985ce4e642719a8b7a4e
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-11-23 22:13:39 +0800
- liblzma: Threaded decoder: Stop the worker threads on errors.
-
- It's waste of CPU time and electricity to leave the unfinished
- worker threads running when it is known that their output will
- get ignored.
+ xz: Use is_tty() in message.c.
- src/liblzma/common/stream_decoder_mt.c | 33 ++++++++++++++++++++++++++-------
- 1 file changed, 26 insertions(+), 7 deletions(-)
+ src/xz/message.c | 7 +------
+ 1 file changed, 1 insertion(+), 6 deletions(-)
-commit 2611c4d90535652d3eb7ef4a026a6691276fab43
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-20 20:22:50 +0300
+commit 584e3a258f32d579b1d07f99b4dc6e856c10ac7e
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-11-23 22:04:35 +0800
- tuklib_cpucores: Use HW_NCPUONLINE on OpenBSD.
+ xz: Create separate is_tty() function.
- On OpenBSD the number of cores online is often less
- than what HW_NCPU would return because OpenBSD disables
- simultaneous multi-threading (SMT) by default.
+ The new is_tty() will report if a file descriptor is a terminal or not.
+ On POSIX systems, it is a wrapper around isatty(). However, the native
+ Windows implementation of isatty() will return true for all character
+ devices, not just terminals. So is_tty() has a special case for Windows
+ so it can use alternative Windows API functions to determine if a file
+ descriptor is a terminal.
- Thanks to Christian Weisgerber.
-
- m4/tuklib_cpucores.m4 | 5 +++++
- src/common/tuklib_cpucores.c | 9 +++++++++
- 2 files changed, 14 insertions(+)
-
-commit 424ac91c7e0419393ff2bde4f62e21fa611c776d
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-19 19:39:35 +0300
-
- Tests: Skip tests in test_*.sh if encoders and/or decoders are disabled.
-
- This isn't perfect as the scripts can still fail if only
- certain filters are disabled. This is still an improvement
- as now "make check" has better behavior when all encoders
- or decoders are disabled.
+ This fixes a bug with MSVC and MinGW-w64 builds that refused to read from
+ or write to non-terminal character devices because xz thought it was a
+ terminal. For instance:
- Grepping ../config.h is simple and fairly clean but it only
- works if config.h was created. CMake builds don't create
- config.h but they don't use these test scripts either.
+ xz foo -c > /dev/null
- Thanks to Sebastian Andrzej Siewior for reporting the problem.
- Thanks to Jia Tan for the original patch which grepped xz
- error messages instead of config.h.
+ would fail because /dev/null was assumed to be a terminal.
- tests/test_compress.sh | 12 ++++++++++++
- tests/test_files.sh | 11 +++++++++++
- tests/test_scripts.sh | 11 +++++++++++
- 3 files changed, 34 insertions(+)
+ src/xz/util.c | 30 +++++++++++++++++++++++-------
+ src/xz/util.h | 14 ++++++++++++++
+ 2 files changed, 37 insertions(+), 7 deletions(-)
-commit ca8bf9d7c5a30be8ba1eeb106fd892f19e83ed09
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-19 18:54:34 +0300
+commit 6b05f827f50e686537e9a23c49c5aa4c0aa6b23d
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-11-22 20:39:41 +0800
- Test: Remove the (exit 1) lines.
+ tuklib_integer: Fix typo discovered by codespell.
- I suspect that I used these in the original version because
- Autoconf's manual describes that such a trick is needed in
- some specific situations for portability reasons. None of those
- situations listed on Autoconf 2.71 manual apply to these test
- scripts though so this cleans them up.
-
- tests/test_compress.sh | 10 ----------
- tests/test_files.sh | 9 ---------
- tests/test_scripts.sh | 6 ------
- 3 files changed, 25 deletions(-)
+ Based on internet dictionary searches, 'choise' is an outdated spelling
+ of 'choice'.
-commit 82fcb7cfc17ce62f79ebc7ca2374e1daca5e4d5e
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-19 17:14:57 +0300
-
- Tests: Fix a warning in test_memlimit.c when decoders are disabled.
-
- tests/test_memlimit.c | 3 +++
- 1 file changed, 3 insertions(+)
+ src/common/tuklib_integer.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit b5f8271b45b9b0e59485ffba3640ca3418835ec4
+commit 659aca0d695807c0762d4101765189e4e33d1e2c
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-19 17:11:46 +0300
+Date: 2023-11-17 19:35:19 +0200
- Tests: Add test_memlimit to .gitignore.
+ xz: Move the check for --suffix with --format=raw a few lines earlier.
- Thanks to Jia Tan.
+ Now it reads from argv[] instead of args->arg_names.
- .gitignore | 1 +
- 1 file changed, 1 insertion(+)
+ src/xz/args.c | 44 ++++++++++++++++++++++----------------------
+ 1 file changed, 22 insertions(+), 22 deletions(-)
-commit 6a86e81cab202d0a812a7b2e9efacaf70c58ba38
+commit ca278eb2b7f5a4940f5ab18955297b398d423824
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-10-06 21:53:09 +0300
+Date: 2023-11-17 20:35:11 +0800
- Tests: Refactor test_stream_flags.c.
+ Tests: Create test_suffix.sh.
- Converts test_stream_flags to tuktest. Also the test will now
- compile and skip properly if encoders or decoders are disabled.
+ This tests some complicated interactions with the --suffix= option.
+ The suffix option must be used with --format=raw, but can optionally
+ be used to override the default .xz suffix.
- Thanks to Sebastian Andrzej Siewior.
+ This test also verifies some recent bugs have been correctly solved
+ and to hopefully avoid further regressions in the future.
- tests/test_stream_flags.c | 533 ++++++++++++++++++++++++++++++++++++----------
- 1 file changed, 416 insertions(+), 117 deletions(-)
+ tests/Makefile.am | 2 +
+ tests/test_suffix.sh | 189 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 191 insertions(+)
-commit 827ac5b4821491fd3afe0d0e1ddac326253aeb66
+commit 2a732aba22da1b0d4a1241cb32280ed010ba03ce
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-10-06 17:00:38 +0800
+Date: 2023-11-17 20:19:26 +0800
- Tests: Refactor test_block_header.c.
-
- test_block_header now achieves higher test coverage. Also the
- test will now compile and skip properly if encoders or decoders
- are disabled.
+ xz: Fix a bug with --files and --files0 in raw mode without a suffix.
- Thanks to Sebastian Andrzej Siewior.
-
- tests/test_block_header.c | 486 +++++++++++++++++++++++++++++++++++-----------
- 1 file changed, 370 insertions(+), 116 deletions(-)
-
-commit 84963318952064a93bfc52edd6b0ef70593384ee
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-10-05 23:54:12 +0800
-
- Tests: Fix compilation issues.
+ The following command caused a segmentation fault:
- test_bcj_exact_size, test_check, test_hardware, and test_index will
- all now compile and skip properly if encoders or decoders are disabled.
+ xz -Fraw --lzma1 --files=foo
- Also fixed a small typo (disabed -> disabled).
+ when foo was a valid file. The usage of --files or --files0 was not
+ being checked when compressing or decompressing in raw mode without a
+ suffix. The suffix checking code was meant to validate that all files
+ to be processed are "-" (if not writing to standard out), meaning the
+ data is only coming from standard in. In this case, there were no file
+ names to check since --files and --files0 store their file name in a
+ different place.
- Thanks to Sebastian Andrzej Siewior.
+ Later code assumed the suffix was set and caused a segmentation fault.
+ Now, the above command results in an error.
- tests/test_bcj_exact_size.c | 20 ++++++++++++++------
- tests/test_check.c | 8 +++++++-
- tests/test_hardware.c | 2 +-
- tests/test_index.c | 6 ++++++
- tests/test_memlimit.c | 16 +++++++++++++++-
- tests/test_vli.c | 13 +++++++++++++
- 6 files changed, 56 insertions(+), 9 deletions(-)
-
-commit 7dcabeec63d46b436fa5f043c3d1f09d0e15be16
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-05 16:20:47 +0300
-
- Tests: Include mythread.h in the tests that use MYTHREAD_ENABLED.
-
- tests/test_check.c | 1 +
- tests/test_hardware.c | 1 +
- tests/test_memlimit.c | 1 +
- 3 files changed, 3 insertions(+)
+ src/xz/args.c | 5 +++++
+ 1 file changed, 5 insertions(+)
-commit 14af758a770c7781af18fb66d6d21ee5b1c27f04
+commit 299920bab9ae258a247366339264e8aefca9e3ce
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-10-05 20:57:16 +0800
+Date: 2023-11-17 20:04:58 +0800
- liblzma: Fix a compilation issue when encoders are disabled.
-
- When encoders were disabled and threading enabled, outqueue.c and
- outqueue.h were not compiled. The multi threaded decoder required
- these files, so compilation failed.
+ Tests: Fix typo in a comment.
- src/liblzma/common/Makefile.inc | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
+ tests/test_files.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 6ca5c354bd4620aa7f81da68870eef1b1f26288f
+commit f481523baac946fa3bc13d79186ffaf0c0b818a7
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-10-05 16:41:38 +0800
+Date: 2023-11-15 23:40:13 +0800
- Tests: Fix compilation error when threading support has been disabled.
+ xz: Refactor suffix test with raw format.
+
+ The previous version set opt_stdout, but this caused an issue with
+ copying an input file to standard out when decompressing an unknown file
+ type. The following needs to result in an error:
- Now tests that require threading are skipped when threading
- support has been disabled.
+ echo foo | xz -df
- Thanks to Sebastian Andrzej Siewior.
+ since -c, --stdout is not used. This fixes the previous error by not
+ setting opt_stdout.
- tests/test_check.c | 4 ++++
- tests/test_hardware.c | 4 ++++
- tests/test_memlimit.c | 4 ++++
- 3 files changed, 12 insertions(+)
+ src/xz/args.c | 38 +++++++++++++-------------------------
+ 1 file changed, 13 insertions(+), 25 deletions(-)
-commit fae37ad2affd8fe8871f4ff93d5cab5ec14d5e58
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-10-05 14:26:00 +0300
+commit 837ea40b1c9d4998cac4500b55171bf33e0c31a6
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-11-14 20:27:46 +0800
- tuklib_integer: Add 64-bit endianness-converting reads and writes.
+ xz: Move suffix check after stdout mode is detected.
+
+ This fixes a bug introduced in cc5aa9ab138beeecaee5a1e81197591893ee9ca0
+ when the suffix check was initially moved. This caused a situation that
+ previously worked:
- Also update the comment in liblzma's memcmplen.h.
+ echo foo | xz -Fraw --lzma1 | wc -c
- Thanks to Michał Górny for the original patch for the reads.
+ to fail because the old code knew that this would write to standard out
+ so a suffix was not needed.
- m4/tuklib_integer.m4 | 8 ++++----
- src/common/tuklib_integer.h | 46 ++++++++++++++++++++++++++++++++++++++++--
- src/liblzma/common/memcmplen.h | 9 +++------
- 3 files changed, 51 insertions(+), 12 deletions(-)
+ src/xz/args.c | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
-commit 508a44372c5b0dede8863fd0d358d4a9d8645c95
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-09-30 12:06:13 +0300
+commit d4f4a4d040ef47a5e82dffd0f067e92716606ddf
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-11-14 20:27:04 +0800
- liblzma: Add API doc note about the .xz decoder LZMA_MEMLIMIT_ERROR bug.
+ xz: Detect when all data will be written to standard out earlier.
- The bug was fixed in 660739f99ab211edec4071de98889fb32ed04e98.
+ If the -c, --stdout argument is not used, then we can still detect when
+ the data will be written to standard out if all of the provided
+ filenames are "-" (denoting standard in) or if no filenames are
+ provided.
- src/liblzma/api/lzma/base.h | 11 +++++++++++
- 1 file changed, 11 insertions(+)
+ src/xz/args.c | 21 +++++++++++++++++++++
+ 1 file changed, 21 insertions(+)
-commit 8cc9874a7974cd575aee44f218836f7acdbeb0ed
+commit 2ade7246e7ba729a91460d2fab0f4c7b89d3998b
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-09-21 16:15:50 +0800
+Date: 2023-11-09 01:21:53 +0800
- liblzma: Add dest and src NULL checks to lzma_index_cat.
-
- The documentation states LZMA_PROG_ERROR can be returned from
- lzma_index_cat. Previously, lzma_index_cat could not return
- LZMA_PROG_ERROR. Now, the validation is similar to
- lzma_index_append, which does a NULL check on the index
- parameter.
+ liblzma: Add missing comments to lz_encoder.h.
- src/liblzma/common/index.c | 3 +++
- 1 file changed, 3 insertions(+)
+ src/liblzma/lz/lz_encoder.h | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
-commit afd5a8bf5374eba82804a999e1ea7af680784086
+commit 5fe1450603dc625340b8b7866fb4a83ff748ad06
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-09-21 20:29:28 +0800
+Date: 2023-11-01 20:18:30 +0800
- Tests: Create a test for the lzma_index_cat bug.
+ Add NEWS for 5.4.5.
- tests/test_index.c | 43 ++++++++++++++++++++++++++++++++++++++++++-
- 1 file changed, 42 insertions(+), 1 deletion(-)
+ NEWS | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 74 insertions(+)
-commit 3d5a99ca373a4e86faf671226ca6487febb9eeac
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-09-21 19:28:53 +0800
+commit 46007049cd42e606543dbe650feb17bdf4469c29
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2023-10-31 21:41:09 +0200
- liblzma: Fix copying of check type statistics in lzma_index_cat().
+ liblzma: Fix compilation of fastpos_tablegen.c.
- The check type of the last Stream in dest was never copied to
- dest->checks (the code tried to copy it but it was done too late).
- This meant that the value returned by lzma_index_checks() would
- only include the check type of the last Stream when multiple
- lzma_indexes had been concatenated.
+ The macro lzma_attr_visibility_hidden has to be defined to make
+ fastpos.h usable. The visibility attribute is irrelevant to
+ fastpos_tablegen.c so simply #define the macro to an empty value.
- In xz --list this meant that the summary would only list the
- check type of the last Stream, so in this sense this was only
- a visual bug. However, it's possible that some applications
- use this information for purposes other than merely showing
- it to the users in an informational message. I'm not aware of
- such applications though and it's quite possible that such
- applications don't exist.
+ fastpos_tablegen.c is never built by the included build systems
+ and so the problem wasn't noticed earlier. It's just a standalone
+ program for generating fastpos_table.c.
- Regular streamed decompression in xz or any other application
- doesn't use lzma_index_cat() and so this bug cannot affect them.
+ Fixes: https://github.com/tukaani-project/xz/pull/69
+ Thanks to GitHub user Jamaika1.
- src/liblzma/common/index.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
+ src/liblzma/lzma/fastpos_tablegen.c | 2 ++
+ 1 file changed, 2 insertions(+)
-commit a61d32172789735350a941e23baf6b587c49e5d9
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-09-28 12:20:41 +0300
+commit 148e20607e95781558bdfc823ecba07b7af4b590
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-10-31 21:51:40 +0800
- tuklib_physmem: Fix Unicode builds on Windows.
-
- Thanks to ArSaCiA Game.
+ Build: Fix text wrapping in an output message.
- src/common/tuklib_physmem.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ configure.ac | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
-commit 5a4d3548ab214fdca364d5c734baf1d1fab47308
+commit 8c36ab79cbf23104ce7a3d533d5ac98cd492e57c
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-09-28 11:12:07 +0300
+Date: 2023-10-30 18:09:53 +0200
- Tests: Add test_memlimit.c to test restarting after LZMA_MEMLIMIT_ERROR.
+ liblzma: Add a note why crc_always_inline exists for now.
+
+ Solaris Studio is a possible example (not tested) which
+ supports the always_inline attribute but might not get
+ detected by the common.h #ifdefs.
- tests/Makefile.am | 2 +
- tests/test_memlimit.c | 151 ++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 153 insertions(+)
+ src/liblzma/check/crc_common.h | 5 +++++
+ 1 file changed, 5 insertions(+)
-commit 660739f99ab211edec4071de98889fb32ed04e98
+commit e7a86b94cd247435ac96bc79ba528b690b9ca388
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-09-28 11:05:15 +0300
+Date: 2023-10-22 17:59:11 +0300
- liblzma: Stream decoder: Fix restarting after LZMA_MEMLIMIT_ERROR.
-
- If lzma_code() returns LZMA_MEMLIMIT_ERROR it is now possible
- to use lzma_memlimit_set() to increase the limit and continue
- decoding. This was supposed to work from the beginning but
- there was a bug. With other decoders (.lzma or threaded .xz)
- this already worked correctly.
+ liblzma: Use lzma_always_inline in memcmplen.h.
- src/liblzma/common/stream_decoder.c | 16 +++++++++++++---
- 1 file changed, 13 insertions(+), 3 deletions(-)
+ src/liblzma/common/memcmplen.h | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
-commit 7e68fda58c74ad9e5b876cc22fcbe80fc0e4747b
+commit dcfe5632992fb7f06f921da13fcdd84f83d0d285
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-09-28 11:00:23 +0300
+Date: 2023-10-30 17:43:03 +0200
- liblzma: Stream decoder: Fix comments.
+ liblzma: #define lzma_always_inline in common.h.
- src/liblzma/common/stream_decoder.c | 12 +++++-------
- 1 file changed, 5 insertions(+), 7 deletions(-)
+ src/liblzma/common/common.h | 17 +++++++++++++++++
+ 1 file changed, 17 insertions(+)
-commit f664cb25841fc1c478b819034a224a558e2ac6e7
+commit 41113fe30a47f6fd3e30cb4494dd538e86212edf
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-09-20 16:58:22 +0300
+Date: 2023-10-22 17:15:32 +0300
- liblzma: ARM64: Add comments.
+ liblzma: Use lzma_attr_visibility_hidden on private extern declarations.
+
+ These variables are internal to liblzma and not exposed in the API.
- src/liblzma/simple/arm64.c | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
+ src/liblzma/check/check.h | 7 +++++++
+ src/liblzma/common/stream_flags_common.h | 3 +++
+ src/liblzma/lz/lz_encoder_hash.h | 1 +
+ src/liblzma/lzma/fastpos.h | 1 +
+ src/liblzma/rangecoder/price.h | 1 +
+ 5 files changed, 13 insertions(+)
-commit b557b4a0eea05470fae8ba5ef4ad5a6dfb36ac41
+commit a2f5ca706acc6f7715b8d260a8c6ed50d7717478
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-09-20 16:27:50 +0300
+Date: 2023-10-22 17:08:39 +0300
- liblzma: ARM64: Fix wrong comment in API doc.
+ liblzma: #define lzma_attr_visibility_hidden in common.h.
+
+ In ELF shared libs:
+
+ -fvisibility=hidden affects definitions of symbols but not
+ declarations.[*] This doesn't affect direct calls to functions
+ inside liblzma as a linker can replace a call to lzma_foo@plt
+ with a call directly to lzma_foo when -fvisibility=hidden is used.
+
+ [*] It has to be like this because otherwise every installed
+ header file would need to explictly set the symbol visibility
+ to default.
+
+ When accessing extern variables that aren't defined in the
+ same translation unit, compiler assumes that the variable has
+ the default visibility and thus indirection is needed. Unlike
+ function calls, linker cannot optimize this.
+
+ Using __attribute__((__visibility__("hidden"))) with the extern
+ variable declarations tells the compiler that indirection isn't
+ needed because the definition is in the same shared library.
- Thanks to Jia Tan.
+ About 15+ years ago, someone told me that it would be good if
+ the CRC tables would be defined in the same translation unit
+ as the C code of the CRC functions. While I understood that it
+ could help a tiny amount, I didn't want to change the code because
+ a separate translation unit for the CRC tables was needed for the
+ x86 assembly code anyway. But when visibility attributes are
+ supported, simply marking the extern declaration with the
+ hidden attribute will get identical result. When there are only
+ a few affected variables, this is trivial to do. I wish I had
+ understood this back then already.
- src/liblzma/api/lzma/bcj.h | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ src/liblzma/common/common.h | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
-commit d5b0906fa55157f48c200188a3951d80df9cb308
+commit 2c7ee92e44e1e66f0a427555233eb22c78f6c4f8
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-09-19 20:24:26 +0300
+Date: 2023-09-30 22:54:28 +0300
- xz: Add --experimental-arm64[=width=WIDTH].
-
- It will be renamed to --arm64 once it is stable.
+ liblzma: Refer to MinGW-w64 instead of MinGW in the API headers.
- Man page or --long-help weren't updated yet.
+ MinGW (formely a MinGW.org Project, later the MinGW.OSDN Project
+ at <https://osdn.net/projects/mingw/>) has GCC 9.2.0 as the
+ most recent GCC package (released 2021-02-02). The project might
+ still be alive but majority of people have switched to MinGW-w64.
+ Thus it seems clearer to refer to MinGW-w64 in our API headers too.
+ Building with MinGW is likely to still work but I haven't tested it
+ in the recent years.
- src/xz/args.c | 7 +++++++
- src/xz/message.c | 7 +++++++
- src/xz/options.c | 39 +++++++++++++++++++++++++++++++++++++++
- src/xz/options.h | 7 +++++++
- 4 files changed, 60 insertions(+)
+ src/liblzma/api/lzma.h | 4 ++--
+ src/liblzma/api/lzma/version.h | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
-commit ecb966de308c255bb4735a7307ef9901c643a9de
+commit 597f49b61475438a43a417236989b2acc968a686
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-09-19 19:34:56 +0300
+Date: 2023-09-27 00:58:17 +0300
- liblzma: Add experimental ARM64 BCJ filter with a temporary Filter ID.
+ CMake: Use -D_FILE_OFFSET_BITS=64 if (and only if) needed.
+
+ A CMake option LARGE_FILE_SUPPORT is created if and only if
+ -D_FILE_OFFSET_BITS=64 affects sizeof(off_t).
- That is, the Filter ID will be changed once the design is final.
- The current version will be removed. So files created with the
- tempoary Filter ID won't be supported in the future.
+ This is needed on many 32-bit platforms and even with 64-bit builds
+ with MinGW-w64 to get support for files larger than 2 GiB.
- CMakeLists.txt | 3 +
- configure.ac | 4 +-
- src/liblzma/api/lzma/bcj.h | 35 +++++-
- src/liblzma/common/filter_common.c | 9 ++
- src/liblzma/common/filter_decoder.c | 8 ++
- src/liblzma/common/filter_encoder.c | 11 ++
- src/liblzma/simple/Makefile.inc | 4 +
- src/liblzma/simple/arm64.c | 227 ++++++++++++++++++++++++++++++++++++
- src/liblzma/simple/simple_coder.h | 9 ++
- src/liblzma/simple/simple_decoder.h | 4 +
- src/liblzma/simple/simple_encoder.h | 2 +
- 11 files changed, 313 insertions(+), 3 deletions(-)
+ CMakeLists.txt | 7 ++++-
+ cmake/tuklib_large_file_support.cmake | 52 +++++++++++++++++++++++++++++++++++
+ 2 files changed, 58 insertions(+), 1 deletion(-)
-commit 177bdc922cb17bd0fd831ab8139dfae912a5c2b8
+commit 1bc548b8210366e44ba35b0b11577a8e328c1228
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-09-17 22:42:18 +0300
+Date: 2023-09-30 02:14:25 +0300
- liblzma: Simple/BCJ filters: Allow disabling generic BCJ options.
+ CMake: Generate and install liblzma.pc if not using MSVC.
- This will be needed for the ARM64 BCJ filter as it will use
- its own options struct.
+ Autotools based build uses -pthread and thus adds it to Libs.private
+ in liblzma.pc. CMake doesn't use -pthread at all if pthread functions
+ are available in libc so Libs.private doesn't get -pthread either.
- src/liblzma/simple/arm.c | 2 +-
- src/liblzma/simple/armthumb.c | 2 +-
- src/liblzma/simple/ia64.c | 2 +-
- src/liblzma/simple/powerpc.c | 2 +-
- src/liblzma/simple/simple_coder.c | 4 ++--
- src/liblzma/simple/simple_private.h | 2 +-
- src/liblzma/simple/sparc.c | 2 +-
- src/liblzma/simple/x86.c | 3 ++-
- 8 files changed, 10 insertions(+), 9 deletions(-)
+ CMakeLists.txt | 21 +++++++++++++++++++++
+ 1 file changed, 21 insertions(+)
-commit c3592d0a55114144686ecf960cb516d6b31c98e9
+commit 2add71966f891d315105d6245f724ed4f43a4eff
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-09-16 17:08:53 +0300
+Date: 2023-09-30 01:13:13 +0300
- Tests: Add a test file for lzma_index_append() integer overflow bug.
+ CMake: Rearrange the PACKAGE_ variables.
- This test fails before commit 18d7facd3802b55c287581405c4d49c98708c136.
+ The windres workaround now replaces spaces with \x20 so
+ the package name isn't repeated.
- test_files.sh now runs xz -l for bad-3-index-uncomp-overflow.xz
- because only then the previously-buggy code path gets tested.
- Normal decompression doesn't use lzma_index_append() at all.
- Instead, lzma_index_hash functions are used and those already
- did the overflow check.
+ These changes will help with creation of liblzma.pc.
- tests/files/README | 10 ++++++++++
- tests/files/bad-3-index-uncomp-overflow.xz | Bin 0 -> 132 bytes
- tests/test_files.sh | 8 ++++++++
- 3 files changed, 18 insertions(+)
+ CMakeLists.txt | 26 +++++++++++++++-----------
+ 1 file changed, 15 insertions(+), 11 deletions(-)
-commit 982b29f828079a2a26253a40e975127a40a7d2bd
+commit a7d1b2825c49dc83f1910eeb8ba0f1dfbd886d91
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-09-16 15:10:07 +0300
+Date: 2023-09-29 20:46:11 +0300
- Translations: Add Turkish translation.
+ liblzma: Add Cflags.private to liblzma.pc.in for MSYS2.
+
+ It properly adds -DLZMA_API_STATIC when compiling code that
+ will be linked against static liblzma. Having it there on
+ systems other than Windows does no harm.
+
+ See: https://www.msys2.org/docs/pkgconfig/
- po/LINGUAS | 1 +
- po/tr.po | 977 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 978 insertions(+)
+ src/liblzma/liblzma.pc.in | 1 +
+ 1 file changed, 1 insertion(+)
-commit 1fc088d9f6d1697924aaeac8cd1fb9918d1532e2
+commit 80e0750e3996c1c659e972ce9cf789ca2e99f702
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-09-16 14:09:07 +0300
+Date: 2023-09-27 22:46:20 +0300
- Update THANKS.
+ CMake: Create liblzma.def when building liblzma.dll with MinGW-w64.
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ CMakeLists.txt | 20 ++++++++++++++++++++
+ cmake/remove-ordinals.cmake | 26 ++++++++++++++++++++++++++
+ 2 files changed, 46 insertions(+)
-commit 097c7b67ce86ff16a7cef7631b39e5ca4ee3d420
+commit 08d12595f486890cf601b87f36ee0ddbce57728e
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-09-16 14:07:03 +0300
+Date: 2023-10-26 21:44:42 +0300
- xzgrep: Fix compatibility with old shells.
-
- Running the current xzgrep on Slackware 10.1 with GNU bash 3.00.15:
-
- xzgrep: line 231: syntax error near unexpected token `;;'
-
- On SCO OpenServer 5.0.7 with Korn Shell 93r:
-
- syntax error at line 231 : `;;' unexpected
-
- Turns out that some old shells don't like apostrophes (') inside
- command substitutions. For example, the following fails:
-
- x=$(echo foo
- # asdf'zxcv
- echo bar)
- printf '%s\n' "$x"
-
- The problem was introduced by commits
- 69d1b3fc29677af8ade8dc15dba83f0589cb63d6 (2022-03-29),
- bd7b290f3fe4faeceb7d3497ed9bf2e6ed5e7dc5 (2022-07-18), and
- a648978b20495b7aa4a8b029c5a810b5ad9d08ff (2022-07-19).
- 5.2.6 is the only stable release that included
- this problem.
+ CMake: Change one CMAKE_CURRENT_SOURCE_DIR to CMAKE_CURRENT_LIST_DIR.
- Thanks to Kevin R. Bulgrien for reporting the problem
- on SCO OpenServer 5.0.7 and for providing the fix.
+ In this case they have identical values.
- src/scripts/xzgrep.in | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit f2d084fe3f0d6d71488bfc6987f26542f67bfd99
+commit e67aaf698de75c73443a5ec786781cbf2034461d
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-09-09 14:12:30 +0300
+Date: 2023-10-01 19:10:57 +0300
- Tests: Silence warnings about unused functions from tuktest.h.
-
- Warnings about unused tuktest_run_test conveniently tell which
- test programs haven't been converted to tuktest.h yet but I
- silenced that warning too for now anyway.
+ CMake/Windows: Fix the import library filename.
- It is fine to use __attribute__((__unused__)) even when the
- function is actually used because the attribute only means
- that the function might be unused.
+ Both PREFIX and IMPORT_PERFIX have to be set to "" to get
+ liblzma.dll and liblzma.dll.a.
- tests/tuktest.h | 10 ++++++++++
- 1 file changed, 10 insertions(+)
+ CMakeLists.txt | 1 +
+ 1 file changed, 1 insertion(+)
-commit f8ee61e74eb40600445fdb601c374d582e1e9c8a
+commit 88588b1246d8c26ffbc138b3e5c413c5f14c3179
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-09-09 13:51:57 +0300
+Date: 2023-10-25 19:13:25 +0300
- liblzma: lzma_filters_copy: Keep dest[] unmodified if an error occurs.
+ Build: Detect -fsanitize= in CFLAGS and incompatible build options.
- lzma_stream_encoder() and lzma_stream_encoder_mt() always assumed
- this. Before this patch, failing lzma_filters_copy() could result
- in free(invalid_pointer) or invalid memory reads in stream_encoder.c
- or stream_encoder_mt.c.
+ Now configure will fail if -fsanitize= is found in CFLAGS
+ and sanitizer-incompatible ifunc or Landlock sandboxing
+ would be used. These are incompatible with one or more sanitizers.
+ It's simpler to reject all -fsanitize= uses instead of trying to
+ pass those that might not cause problems.
- To trigger this, allocating memory for a filter options structure
- has to fail. These are tiny allocations so in practice they very
- rarely fail.
-
- Certain badness in the filter chain array could also make
- lzma_filters_copy() fail but both stream_encoder.c and
- stream_encoder_mt.c validate the filter chain before
- trying to copy it, so the crash cannot occur this way.
+ CMake-based build was updated similarly. It lets the configuration
+ finish (SEND_ERROR instead of FATAL_ERROR) so that both error
+ messages can be seen at once.
- src/liblzma/api/lzma/filter.h | 4 +++-
- src/liblzma/common/filter_common.c | 18 ++++++++++++------
- 2 files changed, 15 insertions(+), 7 deletions(-)
+ CMakeLists.txt | 29 +++++++++++++++++++++++++++++
+ configure.ac | 37 +++++++++++++++++++++++++++++++++----
+ 2 files changed, 62 insertions(+), 4 deletions(-)
-commit 18d7facd3802b55c287581405c4d49c98708c136
+commit 5e3d890f8862a7d4fbef5e38e11b6c9fbd98f468
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-09-02 20:18:55 +0800
+Date: 2023-10-24 00:50:08 +0800
- liblzma: lzma_index_append: Add missing integer overflow check.
+ CI: Disable sandboxing in fsanitize=address,undefined job.
- The documentation in src/liblzma/api/lzma/index.h suggests that
- both the unpadded (compressed) size and the uncompressed size
- are checked for overflow, but only the unpadded size was checked.
- The uncompressed check is done first since that is more likely to
- occur than the unpadded or index field size overflows.
-
- src/liblzma/common/index.c | 4 ++++
- 1 file changed, 4 insertions(+)
+ The sandboxing on Linux now supports Landlock, which restricts all
+ supported filesystem actions after xz opens the files it needs. The
+ sandbox is only enabled when one file is input and we are writing to
+ standard out. With fsanitize=address,undefined, the instrumentation
+ needs to read additional files after the sandbox is in place. This
+ forces all xz based test to fail, so the sandbox must instead be
+ disabled.
-commit 9ac06cb5b85274d18f9f70d82cf2d8c9c1151bd4
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-09-08 15:11:08 +0300
-
- Update THANKS.
-
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ .github/workflows/ci.yml | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
-commit ba3e4ba2de034ae93a513f9c3a0823b80cdb66dc
+commit b1408987ea832e2760e478ae960a636df17a1363
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-09-08 15:07:00 +0300
-
- CMake: Clarify a comment about Windows symlinks without file extension.
-
- CMakeLists.txt | 7 +++----
- 1 file changed, 3 insertions(+), 4 deletions(-)
-
-commit 17485e884ce5c74315f29a8a1507bc706cd5cd1d
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-09-08 15:02:41 +0300
-
- CMake: Update for liblzma_*.map files and fix wrong common_w32res.rc dep.
-
- The previous commit split liblzma.map into liblzma_linux.map and
- liblzma_generic.map. This commit updates the CMake build for those.
-
- common_w32res.rc dependency was listed under Linux/FreeBSD while
- obviously it belongs to Windows when building a DLL.
-
- CMakeLists.txt | 24 +++++++++++++++++++-----
- 1 file changed, 19 insertions(+), 5 deletions(-)
-
-commit 913ddc5572b9455fa0cf299be2e35c708840e922
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-09-04 23:23:00 +0300
-
- liblzma: Vaccinate against an ill patch from RHEL/CentOS 7.
-
- RHEL/CentOS 7 shipped with 5.1.2alpha, including the threaded
- encoder that is behind #ifdef LZMA_UNSTABLE in the API headers.
- In 5.1.2alpha these symbols are under XZ_5.1.2alpha in liblzma.map.
- API/ABI compatibility tracking isn't done between development
- releases so newer releases didn't have XZ_5.1.2alpha anymore.
-
- Later RHEL/CentOS 7 updated xz to 5.2.2 but they wanted to keep
- the exported symbols compatible with 5.1.2alpha. After checking
- the ABI changes it turned out that >= 5.2.0 ABI is backward
- compatible with the threaded encoder functions from 5.1.2alpha
- (but not vice versa as fixes and extensions to these functions
- were made between 5.1.2alpha and 5.2.0).
-
- In RHEL/CentOS 7, XZ Utils 5.2.2 was patched with
- xz-5.2.2-compat-libs.patch to modify liblzma.map:
-
- - XZ_5.1.2alpha was added with lzma_stream_encoder_mt and
- lzma_stream_encoder_mt_memusage. This matched XZ Utils 5.1.2alpha.
-
- - XZ_5.2 was replaced with XZ_5.2.2. It is clear that this was
- an error; the intention was to keep using XZ_5.2 (XZ_5.2.2
- has never been used in XZ Utils). So XZ_5.2.2 lists all
- symbols that were listed under XZ_5.2 before the patch.
- lzma_stream_encoder_mt and _mt_memusage are included too so
- they are listed both here and under XZ_5.1.2alpha.
-
- The patch didn't add any __asm__(".symver ...") lines to the .c
- files. Thus the resulting liblzma.so exports the threaded encoder
- functions under XZ_5.1.2alpha only. Listing the two functions
- also under XZ_5.2.2 in liblzma.map has no effect without
- matching .symver lines.
-
- The lack of XZ_5.2 in RHEL/CentOS 7 means that binaries linked
- against unpatched XZ Utils 5.2.x won't run on RHEL/CentOS 7.
- This is unfortunate but this alone isn't too bad as the problem
- is contained within RHEL/CentOS 7 and doesn't affect users
- of other distributions. It could also be fixed internally in
- RHEL/CentOS 7.
-
- The second problem is more serious: In XZ Utils 5.2.2 the API
- headers don't have #ifdef LZMA_UNSTABLE for obvious reasons.
- This is true in RHEL/CentOS 7 version too. Thus now programs
- using new APIs can be compiled without an extra #define. However,
- the programs end up depending on symbol version XZ_5.1.2alpha
- (and possibly also XZ_5.2.2) instead of XZ_5.2 as they would
- with an unpatched XZ Utils 5.2.2. This means that such binaries
- won't run on other distributions shipping XZ Utils >= 5.2.0 as
- they don't provide XZ_5.1.2alpha or XZ_5.2.2; they only provide
- XZ_5.2 (and XZ_5.0). (This includes RHEL/CentOS 8 as the patch
- luckily isn't included there anymore with XZ Utils 5.2.4.)
-
- Binaries built by RHEL/CentOS 7 users get distributed and then
- people wonder why they don't run on some other distribution.
- Seems that people have found out about the patch and been copying
- it to some build scripts, seemingly curing the symptoms but
- actually spreading the illness further and outside RHEL/CentOS 7.
-
- The ill patch seems to be from late 2016 (RHEL 7.3) and in 2017 it
- had spread at least to EasyBuild. I heard about the events only
- recently. :-(
-
- This commit splits liblzma.map into two versions: one for
- GNU/Linux and another for other OSes that can use symbol versioning
- (FreeBSD, Solaris, maybe others). The Linux-specific file and the
- matching additions to .c files add full compatibility with binaries
- that have been built against a RHEL/CentOS-patched liblzma. Builds
- for OSes other than GNU/Linux won't get the vaccine as they should
- be immune to the problem (I really hope that no build script uses
- the RHEL/CentOS 7 patch outside GNU/Linux).
-
- The RHEL/CentOS compatibility symbols XZ_5.1.2alpha and XZ_5.2.2
- are intentionally put *after* XZ_5.2 in liblzma_linux.map. This way
- if one forgets to #define HAVE_SYMBOL_VERSIONS_LINUX when building,
- the resulting liblzma.so.5 will have lzma_stream_encoder_mt@@XZ_5.2
- since XZ_5.2 {...} is the first one that lists that function.
- Without HAVE_SYMBOL_VERSIONS_LINUX @XZ_5.1.2alpha and @XZ_5.2.2
- will be missing but that's still a minor problem compared to
- only having lzma_stream_encoder_mt@@XZ_5.1.2alpha!
-
- The "local: *;" line was moved to XZ_5.0 so that it doesn't need
- to be moved around. It doesn't matter where it is put.
-
- Having two similar liblzma_*.map files is a bit silly as it is,
- at least for now, easily possible to generate the generic one
- from the Linux-specific file. But that adds extra steps and
- increases the risk of mistakes when supporting more than one
- build system. So I rather maintain two files in parallel and let
- validate_map.sh check that they are in sync when "make mydist"
- is run.
-
- This adds .symver lines for lzma_stream_encoder_mt@XZ_5.2.2 and
- lzma_stream_encoder_mt_memusage@XZ_5.2.2 even though these
- weren't exported by RHEL/CentOS 7 (only @@XZ_5.1.2alpha was
- for these two). I added these anyway because someone might
- misunderstand the RHEL/CentOS 7 patch and think that @XZ_5.2.2
- (@@XZ_5.2.2) versions were exported too.
-
- At glance one could suggest using __typeof__ to copy the function
- prototypes when making aliases. However, this doesn't work trivially
- because __typeof__ won't copy attributes (lzma_nothrow, lzma_pure)
- and it won't change symbol visibility from hidden to default (done
- by LZMA_API()). Attributes could be copied with __copy__ attribute
- but that needs GCC 9 and a fallback method would be needed anyway.
-
- This uses __symver__ attribute with GCC >= 10 and
- __asm__(".symver ...") with everything else. The attribute method
- is required for LTO (-flto) support with GCC. Using -flto with
- GCC older than 10 is now broken on GNU/Linux and will not be fixed
- (can silently result in a broken liblzma build that has dangerously
- incorrect symbol versions). LTO builds with Clang seem to work
- with the traditional __asm__(".symver ...") method.
-
- Thanks to Boud Roukema for reporting the problem and discussing
- the details and testing the fix.
-
- configure.ac | 23 +++-
- src/liblzma/Makefile.am | 10 +-
- src/liblzma/common/block_buffer_encoder.c | 18 ++++
- src/liblzma/common/common.c | 14 +++
- src/liblzma/common/common.h | 28 +++++
- src/liblzma/common/hardware_cputhreads.c | 12 +++
- src/liblzma/common/stream_encoder_mt.c | 42 ++++++++
- src/liblzma/{liblzma.map => liblzma_generic.map} | 6 +-
- src/liblzma/liblzma_linux.map | 131 +++++++++++++++++++++++
- src/liblzma/validate_map.sh | 113 +++++++++++++++++--
- 10 files changed, 382 insertions(+), 15 deletions(-)
-
-commit 80a1a8bb838842a2be343bd88ad1462c21c5e2c9
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-08-31 16:42:04 +0300
-
- CMake: Add xz symlinks.
-
- These are a minor thing especially since the xz build has
- some real problems still like lack of large file support
- on 32-bit systems but I'll commit this since the code exists.
-
- Thanks to Jia Tan.
-
- CMakeLists.txt | 38 +++++++++++++++++++++++++++++++++++++-
- 1 file changed, 37 insertions(+), 1 deletion(-)
-
-commit a4193bb6d85d7765b1b87faeab3e50106d3ab2e9
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-08-31 16:29:38 +0300
-
- CMake: Put xz man page install under if(UNIX) like is for xzdec.
-
- Thanks to Jia Tan.
-
- CMakeLists.txt | 8 +++++---
- 1 file changed, 5 insertions(+), 3 deletions(-)
-
-commit c1555b1a221a1427d4d650647531016d754bc4da
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-08-22 18:16:40 +0300
+Date: 2023-10-24 00:15:39 +0800
- Bump version number for 5.3.3alpha.
+ CI: Allow disabling the sandbox in ci_build.sh.
- src/liblzma/api/lzma/version.h | 2 +-
- src/liblzma/liblzma.map | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
+ build-aux/ci_build.sh | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
-commit 44fedddc11c3f6ec2f7fe35a3e38f15ca93f90eb
+commit 91c435cf1c7a1e893706d4d716dfd361621ed824
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-08-22 18:13:56 +0300
+Date: 2023-10-11 19:47:44 +0300
- Add NEWS for 5.3.3alpha.
+ CMake: Don't shadow the cache entry ENABLE_THREADS with a normal variable.
+
+ Using set(ENABLE_THREADS "posix") is confusing because it sets
+ a new normal variable and leaves the cache entry with the same
+ name unchanged. The intent wasn't to change the cache entry so
+ this switches to a different variable name.
- NEWS | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 119 insertions(+)
+ CMakeLists.txt | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
-commit a93e235d7ca764cc19f8f9f9063b40ff361c3cfa
+commit fa1609eb9393ecd30decfed4891c907829f06710
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-07-12 17:59:41 +0300
+Date: 2023-10-09 22:28:49 +0300
- Translations: Add Portuguese translation.
-
- Jia Tan made white-space changes and also changed "Language: pt_BR\n"
- to pt. The translator wasn't reached so I'm hoping these changes
- are OK and will commit it without translator's approval.
-
- Thanks to Pedro Albuquerque and Jia Tan.
+ Docs: Update INSTALL about sandboxing support.
- po/LINGUAS | 1 +
- po/pt.po | 1001 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 1002 insertions(+)
+ INSTALL | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
-commit e7cf5a946f25e40d77f45e41f0dee7d42a04e9ae
+commit 8276c7f41c671eee4aa3239490658b23dcfd3021
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-07-10 21:16:40 +0300
+Date: 2023-10-09 22:07:52 +0300
- Translations: Add Serbian translation.
+ xz: Support basic sandboxing with Linux Landlock (ABI versions 1-3).
- Quite a few white-space changes were made by Jia Tan to make
- this look good. Contacting the translator didn't succeed so
- I'm committing this without getting translator's approval.
+ It is enabled only when decompressing one file to stdout,
+ similar to how Capsicum is used.
- Thanks to Мирослав Николић (Miroslav Nikolic) and Jia Tan.
+ Landlock was added in Linux 5.13.
- po/LINGUAS | 1 +
- po/sr.po | 987 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 988 insertions(+)
+ CMakeLists.txt | 12 +++++++++++-
+ configure.ac | 11 ++++++++---
+ src/xz/file_io.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/xz/main.c | 19 +++++++++++++++++++
+ src/xz/private.h | 3 ++-
+ 5 files changed, 98 insertions(+), 5 deletions(-)
-commit cc8617ab53b1f2a4da212fa76c92fe538269c5de
+commit 3a1e9fd031b9320d769d63b503ef4e82e1b6ea8c
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-07-04 23:51:36 +0300
+Date: 2023-10-09 21:12:31 +0300
- Translations: Add Swedish translation.
+ CMake: Edit threading related messages.
- Thanks to Sebastian Rasmussen and Jia Tan.
+ It's mostly to change from "thread method" to "threading method".
- po/LINGUAS | 1 +
- po/sv.po | 983 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 984 insertions(+)
+ CMakeLists.txt | 19 ++++++++++---------
+ 1 file changed, 10 insertions(+), 9 deletions(-)
-commit c613598c358b640682d0ca2aed38fa7df763e8c7
+commit bf011352528ae3539ea7b780b45b96736ee57a99
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-07-04 23:40:27 +0300
+Date: 2023-10-09 20:59:24 +0300
- Translations: Add Esperanto translation.
+ CMake: Use FATAL_ERROR if user-supplied options aren't understood.
- Thanks to Keith Bowes and Jia Tan.
+ This way typos are caught quickly and compounding error messages
+ are avoided (a single typo could cause more than one error).
+
+ This keeps using SEND_ERROR when the system is lacking a feature
+ (like threading library or sandboxing method). This way the whole
+ configuration log will be generated in case someone wishes to
+ report a problem upstream.
- po/LINGUAS | 1 +
- po/eo.po | 984 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 985 insertions(+)
+ CMakeLists.txt | 28 ++++++++++++++--------------
+ 1 file changed, 14 insertions(+), 14 deletions(-)
-commit 659a587d678f21e98e91d2751c31d4ce050c081a
+commit 3f53870c249945d657ca3d75e0993e6267d71f75
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-07-01 00:22:33 +0300
+Date: 2023-10-09 18:37:32 +0300
- Translations: Add Catalan translation.
-
- Thanks to Jordi Mas and Jia Tan.
+ CMake: Add sandboxing support.
- po/LINGUAS | 1 +
- po/ca.po | 1076 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 1077 insertions(+)
+ CMakeLists.txt | 50 +++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 49 insertions(+), 1 deletion(-)
-commit 739fd8c9bdf1d85f57d56642aad87148d4779530
+commit 2e2cd11535ad77364cf021297e0b3f162fa3a3d0
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-06-30 17:47:08 +0300
+Date: 2023-10-09 18:13:08 +0300
- Translations: Add Ukrainian translation.
+ Simplify detection of Capsicum support.
- Thanks to Yuri Chornoivan and Jia Tan.
+ This removes support for FreeBSD 10.0 and 10.1 which used
+ <sys/capability.h> instead of <sys/capsicum.h>. Support for
+ FreeBSD 10.1 ended on 2016-12-31. So now FreeBSD >= 10.2 is
+ required to enable Capsicum support.
+
+ This also removes support for Capsicum on Linux (libcaprights)
+ which seems to have been unmaintained since 2017 and Linux 4.11:
+ https://github.com/google/capsicum-linux
- po/LINGUAS | 1 +
- po/uk.po | 996 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 997 insertions(+)
+ configure.ac | 4 +--
+ m4/ax_check_capsicum.m4 | 85 -------------------------------------------------
+ src/xz/Makefile.am | 2 +-
+ src/xz/file_io.c | 14 +++-----
+ src/xz/private.h | 2 +-
+ 5 files changed, 9 insertions(+), 98 deletions(-)
-commit 73280550b111930c62a667e56add8fd574f80bc8
+commit c57858b60e186d020b2dbaf7aabd9b32c71da824
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-06-30 17:45:26 +0300
+Date: 2023-09-25 01:46:36 +0300
- Translators: Add Romanian translation.
+ xz/Windows: Allow clock_gettime with POSIX threads.
- Thanks to Remus-Gabriel Chelu and Jia Tan.
+ If winpthreads are used for threading, it's OK to use clock_gettime()
+ from winpthreads too.
- po/LINGUAS | 1 +
- po/ro.po | 1016 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 1017 insertions(+)
+ src/xz/mytime.c | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
-commit 2465f5b825152714b2c357d96c2422c31109d320
+commit dd32f628bb5541ef4e8ce66966ef456a1934084c
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-06-29 18:33:32 +0300
+Date: 2023-09-25 01:39:26 +0300
- Translations: Update Brazilian Portuguese translation.
-
- One msgstr was changed. The diff is long due to changes
- in the source code line numbers in the comments.
+ mythread.h: Make MYTHREAD_POSIX compatible with MinGW-w64's winpthreads.
- Thanks to Rafael Fontenelle.
+ This might be almost useless but it doesn't need much extra code either.
- po/pt_BR.po | 186 ++++++++++++++++++++++++++++++------------------------------
- 1 file changed, 92 insertions(+), 94 deletions(-)
+ src/common/mythread.h | 23 ++++++++++++++++++++++-
+ 1 file changed, 22 insertions(+), 1 deletion(-)
-commit 434e1ffd3e62719d509da10b646216f5ef53fe4d
+commit 680e52cdd086e92691d8a0bca2c98815565f60ca
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-06-29 18:04:44 +0300
+Date: 2023-09-23 03:06:36 +0300
- Translations: Add Croatian translation.
+ CMake: Check for clock_gettime() even on Windows.
- Thanks to Božidar Putanec and Jia Tan.
+ This mirrors configure.ac although currently MinGW-w64 builds
+ don't use clock_gettime() even if it is found.
- po/LINGUAS | 1 +
- po/hr.po | 987 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 988 insertions(+)
+ CMakeLists.txt | 44 +++++++++++++++++++++-----------------------
+ 1 file changed, 21 insertions(+), 23 deletions(-)
-commit 0732d0f7065c9bd48bfe4f5983144ae970c4a499
+commit 1c1a8c3ee4dad0064dbe63b8dbc4ac4bc679f419
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-06-29 17:58:48 +0300
+Date: 2023-09-23 03:23:32 +0300
- Translations: Add Spanish translation.
+ Build: Check for clock_gettime() even if not using POSIX threads.
+
+ See the new comment in the code.
- Thanks to Cristian Othón Martínez Vera and Jia Tan.
+ This also makes the check for clock_gettime() run with MinGW-w64
+ with which we don't want to use clock_gettime(). The previous
+ commit already took care of this situation.
- po/LINGUAS | 1 +
- po/es.po | 984 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 985 insertions(+)
+ configure.ac | 31 ++++++++++++++++++-------------
+ 1 file changed, 18 insertions(+), 13 deletions(-)
-commit 9899b0f82bc130998d1f1f618a6ab805b73f2696
+commit 46fd991cd2808ef62554853864c946232e7547f0
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-06-29 17:49:43 +0300
+Date: 2023-09-24 22:58:53 +0300
- Translations: Add Korean translation.
+ xz/Windows: Ensure that clock_gettime() isn't used with MinGW-w64.
+
+ This commit alone doesn't change anything in the real-world:
+
+ - configure.ac currently checks for clock_gettime() only
+ when using pthreads.
+
+ - CMakeLists.txt doesn't check for clock_gettime() on Windows.
+
+ So clock_gettime() wasn't used with MinGW-w64 before either.
+
+ clock_gettime() provides monotonic time and it's better than
+ gettimeofday() in this sense. But clock_gettime() is defined
+ in winpthreads, and liblzma or xz needs nothing else from
+ winpthreads. By avoiding clock_gettime(), we avoid the dependency on
+ libwinpthread-1.dll or the need to link against the static version.
- Thanks to Seong-ho Cho and Jia Tan.
+ As a bonus, GetTickCount64() and MinGW-w64's gettimeofday() can be
+ faster than clock_gettime(CLOCK_MONOTONIC, &tv). The resolution
+ is more than good enough for the progress indicator in xz.
- po/LINGUAS | 1 +
- po/ko.po | 972 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 973 insertions(+)
+ src/xz/mytime.c | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
-commit 65217eaf6bd195f3ef027d4ac55d57b7d133d69f
+commit cdb4d91f2464b50c985ef7b9517314ea237ddda7
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-03-16 21:57:21 +0200
+Date: 2023-09-24 00:21:22 +0300
- Translations: Rebuild cs.po to avoid incorrect fuzzy strings.
-
- "make dist" updates the .po files and the fuzzy strings would
- result in multiple very wrong translations.
+ xz/Windows: Use GetTickCount64() with MinGW-w64 if using Vista threads.
- po/cs.po | 592 ++++++++++++++++++++++++++++++++++-----------------------------
- 1 file changed, 322 insertions(+), 270 deletions(-)
+ src/xz/mytime.c | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
-commit e56ff423ee7af9e648e16b132f0d835d2cb4db26
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-03-16 17:30:39 +0200
+commit 988e09f27b9b04a43d45d10f92782e0092ee27a9
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-10-20 19:17:46 +0800
- Translations: Add partial Danish translation.
+ liblzma: Move is_clmul_supported() back to crc_common.h.
- I made a few minor white space changes without getting them
- approved by the Danish translation team.
+ This partially reverts creating crc_clmul.c
+ (8c0f9376f58c0696d5d6719705164d35542dd891) where is_clmul_supported()
+ was moved, extern'ed, and renamed to lzma_is_clmul_supported(). This
+ caused a problem when the function call to lzma_is_clmul_supported()
+ results in a call through the PLT. ifunc resolvers run very early in
+ the dynamic loading sequence, so the PLT may not be setup properly at
+ this point. Whether the PLT is used or not for
+ lzma_is_clmul_supported() depened upon the compiler-toolchain used and
+ flags.
+
+ In liblzma compiled with GCC, for instance, GCC will go through the PLT
+ for function calls internal to liblzma if the version scripts and
+ symbol visibility hiding are not used. If lazy-binding is disabled,
+ then it would have made any program linked with liblzma fail during
+ dynamic loading in the ifunc resolver.
- po/LINGUAS | 1 +
- po/da.po | 896 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 897 insertions(+)
+ src/liblzma/check/crc32_fast.c | 2 +-
+ src/liblzma/check/crc64_fast.c | 2 +-
+ src/liblzma/check/crc_clmul.c | 45 ------------------------------------
+ src/liblzma/check/crc_common.h | 52 +++++++++++++++++++++++++++++++++++++++---
+ 4 files changed, 51 insertions(+), 50 deletions(-)
-commit 43e09c62e77cb8807d932c81de4decbdb956e184
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-03-11 22:37:54 +0200
+commit 105c7ca90d4152942e0798580a37f736d02faa22
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-10-19 16:23:32 +0800
- Translations: Add hu, zh_CN, and zh_TW.
+ Build: Remove check for COND_CHECK_CRC32 in check/Makefile.inc.
- I made a few white space changes to these without getting them
- approved by the translation teams. (I tried to contact the hu and
- zh_TW teams but didn't succeed. I didn't contact the zh_CN team.)
+ Currently crc32 is always enabled, so COND_CHECK_CRC32 must always be
+ set. Because of this, it makes the recent change to conditionally
+ compile check/crc_clmul.c appear wrong since that file has CLMUL
+ implementations for both CRC32 and CRC64.
- po/LINGUAS | 3 +
- po/hu.po | 985 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- po/zh_CN.po | 963 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- po/zh_TW.po | 956 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 2907 insertions(+)
+ src/liblzma/check/Makefile.inc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit 982b6b198ae1ffe6093236dd8a3d03d1415b912b
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-03-11 14:33:30 +0200
+commit 139757170468f0f1fafdf0a8ffa74363d1ea1d0c
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-10-19 16:09:01 +0800
- Translations: Update vi.po to match the file from the TP.
+ CMake: Add ALLOW_CLMUL_CRC option to enable/disable CLMUL.
- The translated strings haven't been updated but word wrapping
- is different.
+ The option is enabled by default, but will only be visible to a user
+ listing cache variables or using a CMake GUI application if the
+ immintrin.h header file is found.
+
+ This mirrors our Autotools build --disable-clmul-crc functionality.
- po/vi.po | 407 ++++++++++++++++++++++++++++-----------------------------------
- 1 file changed, 179 insertions(+), 228 deletions(-)
+ CMakeLists.txt | 44 +++++++++++++++++++++++++-------------------
+ 1 file changed, 25 insertions(+), 19 deletions(-)
-commit 801f39691fc4abc6dd33d7653d498781b593f3eb
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-03-11 14:18:03 +0200
+commit c60b25569d414bb73b705977a4dd342f8f9f1965
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-10-19 00:22:50 +0800
- Translations: Add fi and pt_BR, and update de, fr, it, and pl.
+ liblzma: Fix -fsanitize=address failure with crc_clmul functions.
+
+ After forcing crc_simd_body() to always be inlined it caused
+ -fsanitize=address to fail for lzma_crc32_clmul() and
+ lzma_crc64_clmul(). The __no_sanitize_address__ attribute was added
+ to lzma_crc32_clmul() and lzma_crc64_clmul(), but not removed from
+ crc_simd_body(). ASAN and inline functions behavior has changed over
+ the years for GCC specifically, so while strictly required we will
+ keep __attribute__((__no_sanitize_address__)) on crc_simd_body() in
+ case this becomes a requirement in the future.
- The German translation isn't identical to the file in
- the Translation Project but the changes (white space changes
- only) were approved by the translator Mario Blättermann.
+ Older GCC versions refuse to inline a function with ASAN if the
+ caller and callee do not agree on sanitization flags
+ (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89124#c3). If the
+ function was forced to be inlined, it will not compile if the callee
+ function has __no_sanitize_address__ but the caller doesn't.
- po/LINGUAS | 2 +
- po/de.po | 476 ++++++++++++++--------------
- po/fi.po | 974 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- po/fr.po | 272 ++++++++--------
- po/it.po | 479 ++++++++++++----------------
- po/pl.po | 239 +++++++-------
- po/pt_BR.po | 1001 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 7 files changed, 2697 insertions(+), 746 deletions(-)
+ src/liblzma/check/crc_clmul.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
-commit 311e4f85ede5d2f0bb71f3ad70b5b7db1b5adf33
+commit 9a78971261bc67622cbd7dae02f6966968ac1393
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-08-22 17:27:19 +0300
+Date: 2023-10-14 20:16:13 +0300
- xz: Try to clarify --memlimit-mt-decompress vs. --memlimit-compress.
+ tuklib_integer: Update the CMake test for fast unaligned access.
- src/xz/xz.1 | 31 +++++++++++++++++++------------
- 1 file changed, 19 insertions(+), 12 deletions(-)
+ cmake/tuklib_integer.cmake | 69 ++++++++++++++++++++++++++++++++++++----------
+ 1 file changed, 54 insertions(+), 15 deletions(-)
-commit df23c31000283c00e5ef1ca32a0bc3bb757bd707
+commit 2f81ac852bc5aafc91c8e2adc66b5114761703c4
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-08-22 16:46:18 +0300
+Date: 2023-09-23 23:28:48 +0300
- CMake: Add liblzma tests.
+ Build: Enabled unaligned access by default on PowerPC64LE and some RISC-V.
- Thanks to Jia Tan for the patch.
-
- CMakeLists.txt | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
- 1 file changed, 52 insertions(+), 1 deletion(-)
-
-commit 02a777f9c422d3b5ec895078530bb1a2b6f7bdf5
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-08-19 23:32:22 +0300
-
- xz: Revise --info-memory output.
+ PowerPC64LE wasn't tested but it seems like a safe change.
+ POWER8 supports unaligned access in little endian mode. Testing
+ on godbolt.org shows that GCC uses unaligned access by default.
+
+ The RISC-V macro __riscv_misaligned_fast is very new and not
+ in any stable compiler release yet.
- The strings could be more descriptive but it's good
- to have some version of this committed now.
+ Documentation in INSTALL was updated to match.
- --robot mode wasn't changed yet.
+ Documentation about an autodetection bug when using ARM64 GCC
+ with -mstrict-align was added to INSTALL.
+
+ CMake files weren't updated yet.
- src/xz/hardware.c | 32 ++++++++++++++++++++++++++------
- src/xz/xz.1 | 1 +
- 2 files changed, 27 insertions(+), 6 deletions(-)
+ INSTALL | 39 +++++++++++++++++++++++++++++++++++++--
+ m4/tuklib_integer.m4 | 34 +++++++++++++++++++++++++++-------
+ 2 files changed, 64 insertions(+), 9 deletions(-)
-commit f864f6d42eab57ea8ed82cc2dd19a03b51377442
+commit c8f715f1bca4c30db814fcf1fd2fe88b8992ede2
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-08-19 23:12:02 +0300
+Date: 2023-10-14 17:56:59 +0300
- xz: Update the man page for threaded decompression and memlimits.
-
- This documents the changes made in commits
- 6c6da57ae2aa962aabde6892442227063d87e88c,
- cad299008cf73ec566f0662a9cf2b94f86a99659, and
- 898faa97287a756231c663a3ed5165672b417207.
+ tuklib_integer: Revise unaligned reads and writes on strict-align archs.
- The --info-memory bit hasn't been finished yet
- even though it's already mentioned in this commit
- under --memlimit-mt-decompress and --threads.
+ In XZ Utils context this doesn't matter much because
+ unaligned reads and writes aren't used in hot code
+ when TUKLIB_FAST_UNALIGNED_ACCESS isn't #defined.
- src/xz/xz.1 | 148 +++++++++++++++++++++++++++++++++++++++++++++++++-----------
- 1 file changed, 121 insertions(+), 27 deletions(-)
+ src/common/tuklib_integer.h | 256 ++++++++++++++++++++++++++++++++------------
+ 1 file changed, 189 insertions(+), 67 deletions(-)
-commit d13bfcc0056617dd648f655a01653932fad7067f
+commit 6828242735cbf61b93d140383336e1e51a006f2d
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-08-18 17:49:16 +0300
+Date: 2023-09-23 02:21:49 +0300
- Build: Include the CMake files in the distribution.
-
- This was supposed to be done in 2020 with 5.2.5 release
- already but it was noticed only today. 5.2.5 and 5.2.6
- even mention experiemental CMake support in the NEWS entries.
-
- Thanks to Olivier B. for reporting the problem.
+ tuklib_integer: Add missing write64be and write64le fallback functions.
- Makefile.am | 2 ++
- 1 file changed, 2 insertions(+)
+ src/common/tuklib_integer.h | 34 ++++++++++++++++++++++++++++++++++
+ 1 file changed, 34 insertions(+)
-commit e66787bcfefdb93f19c974f895f65969a77937b0
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-08-18 17:38:05 +0300
+commit 1c8884f0af28b3a4690bb573cdf3240a8ec73416
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-10-18 19:57:10 +0800
- Windows: Fix broken liblzma.dll build with Visual Studio project files.
-
- The bug was introduced in 352ba2d69af2136bc814aa1df1a132559d445616
- "Windows: Fix building of resource files when config.h isn't used."
+ liblzma: Set the MSVC optimization fix to only cover lzma_crc64_clmul().
- That commit fixed liblzma.dll build with CMake while keeping it
- working with Autotools on Windows but the VS project files were
- forgotten.
-
- I haven't tested these changes.
-
- Thanks to Olivier B. for reporting the bug and for the initial patch.
+ After testing a 32-bit Release build on MSVC, only lzma_crc64_clmul()
+ has the bug. crc_simd_body() and lzma_crc32_clmul() do not need the
+ optimizations disabled.
- windows/vs2013/liblzma_dll.vcxproj | 6 ++++++
- windows/vs2017/liblzma_dll.vcxproj | 6 ++++++
- windows/vs2019/liblzma_dll.vcxproj | 6 ++++++
- 3 files changed, 18 insertions(+)
+ src/liblzma/check/crc_clmul.c | 30 +++++++++++++++---------------
+ 1 file changed, 15 insertions(+), 15 deletions(-)
-commit c4e8e5fb311225b8b48d34157891a640b2535e0c
+commit 5ce0f7a48bdf5c3b45430850a4487307afac6143
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-08-18 17:16:49 +0300
+Date: 2023-10-18 14:30:00 +0300
- liblzma: Threaded decoder: Improve LZMA_FAIL_FAST when LZMA_FINISH is used.
-
- It will now return LZMA_DATA_ERROR (not LZMA_OK or LZMA_BUF_ERROR)
- if LZMA_FINISH is used and there isn't enough input to finish
- decoding the Block Header or the Block. The use of LZMA_DATA_ERROR
- is simpler and the less risky than LZMA_BUF_ERROR but this might
- be changed before 5.4.0.
+ liblzma: CRC_USE_GENERIC_FOR_SMALL_INPUTS cannot be used with ifunc.
- src/liblzma/api/lzma/container.h | 6 +++++
- src/liblzma/common/stream_decoder_mt.c | 42 ++++++++++++++++++++++++++++++++++
- 2 files changed, 48 insertions(+)
+ src/liblzma/check/crc_common.h | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
-commit 6dcf606e7efa2b259f0262f9e2f61e00116842d3
+commit 27735380491bb5ce0d0f41d5244d89c1d0825f6b
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-08-12 18:31:47 +0300
+Date: 2023-10-17 21:53:11 +0300
- Add NEWS for 5.2.6.
+ liblzma: Include common.h in crc_common.h.
+
+ crc_common.h depends on common.h. The headers include common.h except
+ when there is a reason to not do so.
- NEWS | 121 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 121 insertions(+)
+ src/liblzma/check/crc_clmul.c | 1 -
+ src/liblzma/check/crc_common.h | 3 +++
+ 2 files changed, 3 insertions(+), 1 deletion(-)
-commit 413b86fcf8934fae5a004f378a9483d37d8fcaab
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-08-12 14:28:41 +0300
+commit e13b7947b92355c334edd594295d3a2c99c4bca1
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-10-18 01:23:26 +0800
- Add Jia Tan to AUTHORS.
+ liblzma: Add include guards to crc_common.h.
- AUTHORS | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ src/liblzma/check/crc_common.h | 5 +++++
+ 1 file changed, 5 insertions(+)
-commit 352672732c346c546ff3c26d0605bc0ed1c8b7c7
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-07-25 19:28:26 +0300
+commit 40abd88afcc61a8157fcd12d78d491caeb8e12be
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-10-18 22:50:25 +0800
- Build: Start the generated ChangeLog from around 5.2.0 instead of 5.0.0.
+ liblzma: Add the crc_always_inline macro to crc_simd_body().
- This makes ChangeLog smaller.
+ Forcing this to be inline has a significant speed improvement at the
+ cost of a few repeated instructions. The compilers tested on did not
+ inline this function since it is large and is used twice in the same
+ translation unit.
- Makefile.am | 2 +-
+ src/liblzma/check/crc_clmul.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-commit 6f6d11225d6016be2bbb55d845b66f6b04d048df
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-07-25 19:11:05 +0300
+commit a5966c276bd6fa975f0389f8a8dc61393de750b0
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-10-18 22:48:19 +0800
- Translations: Change the copyright comment string to use with po4a.
+ liblzma: Create crc_always_inline macro.
+
+ This macro must be used instead of the inline keyword. On MSVC, it is
+ a replacement for __forceinline which is an MSVC specific keyword that
+ should not be used with inline (it will issue a warning if it is).
- This affects the second line in po4a/xz-man.pot. The man pages of
- xzdiff, xzgrep, and xzmore are from GNU gzip and under GNU GPLv2+
- while the rest of the man pages are in the public domain.
+ It does not use a build system check to determine if
+ __attribute__((__always_inline__)) since all compilers that can use
+ CLMUL extensions (except the special case for MSVC) should support this
+ attribute. If this assumption is incorrect then it will result in a bug
+ report instead of silently producing slow code.
- po4a/update-po | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ src/liblzma/check/crc_common.h | 15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
-commit 61f8ec804abdb4c5dac01e8ae9b90c7be58a5c24
+commit 96b663f67c0e738a99ba8f35d9f4ced9add74544
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-07-25 18:30:05 +0300
+Date: 2023-10-14 13:23:23 +0800
- liblzma: Refactor lzma_mf_is_supported() to use a switch-statement.
+ liblzma: Refactor CRC comments.
+
+ A detailed description of the three dispatch methods was added. Also,
+ duplicated comments now only appear in crc32_fast.c or were removed from
+ both crc32_fast.c and crc64_fast.c if they appeared in crc_clmul.c.
- src/liblzma/lz/lz_encoder.c | 32 ++++++++++++++------------------
- 1 file changed, 14 insertions(+), 18 deletions(-)
+ src/liblzma/check/crc32_fast.c | 64 +++++++++++++++++++++++++++++-------------
+ src/liblzma/check/crc64_fast.c | 61 ++++++----------------------------------
+ 2 files changed, 53 insertions(+), 72 deletions(-)
-commit 4d80b463a1251aa22eabc87d2732fec13b1adda6
+commit 8c0f9376f58c0696d5d6719705164d35542dd891
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-07-25 18:20:01 +0300
+Date: 2023-10-14 12:17:57 +0800
- Build: Don't allow empty LIST in --enable-match-finders=LIST.
+ liblzma: Create crc_clmul.c.
- It's enforced only when a match finder is needed, that is,
- when LZMA1 or LZMA2 encoder is enabled.
+ Both crc32_clmul() and crc64_clmul() are now exported from
+ crc32_clmul.c as lzma_crc32_clmul() and lzma_crc64_clmul(). This
+ ensures that is_clmul_supported() (now lzma_is_clmul_supported()) is
+ not duplicated between crc32_fast.c and crc64_fast.c.
+
+ Also, it encapsulates the complexity of the CLMUL implementations into a
+ single file and reduces the complexity of crc32_fast.c and crc64_fast.c.
+ Before, CLMUL code was present in crc32_fast.c, crc64_fast.c, and
+ crc_common.h.
+
+ During the conversion, various cleanups were applied to code (thanks to
+ Lasse Collin) including:
+
+ - Require using semicolons with MASK_/L/H/LH macros.
+ - Variable typing and const handling improvements.
+ - Improvements to comments.
+ - Fixes to the pragmas used.
+ - Removed unneeded variables.
+ - Whitespace improvements.
+ - Fixed CRC_USE_GENERIC_FOR_SMALL_INPUTS handling.
+ - Silenced warnings and removed the need for some #pragmas
- configure.ac | 4 ++++
- 1 file changed, 4 insertions(+)
+ CMakeLists.txt | 6 +-
+ configure.ac | 6 +-
+ src/liblzma/check/Makefile.inc | 3 +
+ src/liblzma/check/crc32_fast.c | 120 +-----------
+ src/liblzma/check/crc64_fast.c | 128 +------------
+ src/liblzma/check/crc_clmul.c | 414 +++++++++++++++++++++++++++++++++++++++++
+ src/liblzma/check/crc_common.h | 190 +------------------
+ 7 files changed, 444 insertions(+), 423 deletions(-)
-commit 9cc721af5436908f2d5a828aebbc4050a32a3487
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-07-24 13:27:48 +0300
+commit a3ebc2c516b09616638060806c841bd4bcf7bce3
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-10-14 10:23:03 +0800
- xz: Update the man page that change to --keep will be in 5.2.6.
+ liblzma: Define CRC_USE_IFUNC in crc_common.h.
+
+ When ifunc is supported, we can define a simpler macro instead of
+ repeating the more complex check in both crc32_fast.c and crc64_fast.c.
- src/xz/xz.1 | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ src/liblzma/check/crc32_fast.c | 3 +--
+ src/liblzma/check/crc64_fast.c | 3 +--
+ src/liblzma/check/crc_common.h | 5 +++++
+ 3 files changed, 7 insertions(+), 4 deletions(-)
-commit b81bf0c7d1873e52a4086a9abb494471d652cb55
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-07-19 23:23:54 +0300
+commit f1cd9d7194f005cd66ec03c6635ceae75f90ef17
+Author: Hans Jansen <hansjansen162@outlook.com>
+Date: 2023-10-12 19:37:01 +0200
- Update THANKS.
+ liblzma: Added crc32_clmul to crc32_fast.c.
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ src/liblzma/check/crc32_fast.c | 247 ++++++++++++++++++++++++++++++++++++++--
+ src/liblzma/check/crc32_table.c | 19 +++-
+ 2 files changed, 255 insertions(+), 11 deletions(-)
-commit 340cf1ec3927767046b8293a49da3db4e393f426
-Author: Nicholas Jackson <nickajacks1@gmail.com>
-Date: 2022-07-17 17:39:23 -0700
+commit 93e6fb08b22c7c13be2dd1e7274fe78413436254
+Author: Hans Jansen <hansjansen162@outlook.com>
+Date: 2023-10-12 19:23:40 +0200
- CMake: Add missing source file to liblzma build
+ liblzma: Moved CLMUL CRC logic to crc_common.h.
+
+ crc64_fast.c was updated to use the code from crc_common.h instead.
- CMakeLists.txt | 1 +
- 1 file changed, 1 insertion(+)
+ src/liblzma/check/crc64_fast.c | 257 ++---------------------------------------
+ src/liblzma/check/crc_common.h | 230 +++++++++++++++++++++++++++++++++++-
+ 2 files changed, 240 insertions(+), 247 deletions(-)
-commit d796b6d7fdb8b7238b277056cf9146cce25db604
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-07-19 23:19:49 +0300
+commit 233885a437f8b55a5c8442984ebc0aaa579e92de
+Author: Hans Jansen <hansjansen162@outlook.com>
+Date: 2023-10-12 19:07:50 +0200
- xzgrep man page: Document exit statuses.
+ liblzma: Rename crc_macros.h to crc_common.h.
- src/scripts/xzgrep.1 | 15 ++++++++++++++-
- 1 file changed, 14 insertions(+), 1 deletion(-)
+ CMakeLists.txt | 2 +-
+ src/liblzma/check/Makefile.inc | 2 +-
+ src/liblzma/check/crc32_fast.c | 2 +-
+ src/liblzma/check/crc64_fast.c | 2 +-
+ src/liblzma/check/{crc_macros.h => crc_common.h} | 2 +-
+ 5 files changed, 5 insertions(+), 5 deletions(-)
-commit 923bf96b55e5216a6c8df9d8331934f54784390e
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-07-19 23:13:24 +0300
+commit 37947d4a7565b87e4cec8b89229d35b0a3f8d2cd
+Author: Gabriela Gutierrez <gabigutierrez@google.com>
+Date: 2023-09-26 15:55:13 +0000
- xzgrep: Improve error handling, especially signals.
+ CI: Bump and ref actions by commit SHA in windows-ci.yml
- xzgrep wouldn't exit on SIGPIPE or SIGQUIT when it clearly
- should have. It's quite possible that it's not perfect still
- but at least it's much better.
+ Referencing actions by commit SHA in GitHub workflows guarantees you are using an immutable version. Actions referenced by tags and branches are more vulnerable to attacks, such as the tag being moved to a malicious commit or a malicious commit being pushed to the branch.
- If multiple exit statuses compete, now it tries to pick
- the largest of value.
+ It's important to make sure the SHA's are from the original repositories and not forks.
- Some comments were added.
+ For reference:
- The exit status handling of signals is still broken if the shell
- uses values larger than 255 in $? to indicate that a process
- died due to a signal ***and*** their "exit" command doesn't take
- this into account. This seems to work well with the ksh and yash
- versions I tried. However, there is a report in gzip/zgrep that
- OpenSolaris 5.11 (not 5.10) has a problem with "exit" truncating
- the argument to 8 bits:
+ https://github.com/msys2/setup-msys2/releases/tag/v2.20.1
+ https://github.com/msys2/setup-msys2/commit/27b3aa77f672cb6b3054121cfd80c3d22ceebb1d
- https://debbugs.gnu.org/cgi/bugreport.cgi?bug=22900#25
+ https://github.com/actions/checkout/releases/tag/v4.1.0
+ https://github.com/actions/checkout/commit/8ade135a41bc03ea155e62e844d188df1ea18608
- Such a bug would break xzgrep but I didn't add a workaround
- at least for now. 5.11 is old and I don't know if the problem
- exists in modern descendants, or if the problem exists in other
- ksh implementations in use.
-
- src/scripts/xzgrep.in | 72 +++++++++++++++++++++++++++++++++++++--------------
- 1 file changed, 53 insertions(+), 19 deletions(-)
-
-commit a648978b20495b7aa4a8b029c5a810b5ad9d08ff
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-07-19 00:10:55 +0300
-
- xzgrep: Make the fix for ZDI-CAN-16587 more robust.
+ https://github.com/actions/upload-artifact/releases/tag/v3.1.3
+ https://github.com/actions/upload-artifact/commit/a8a3f3ad30e3422c9c7b888a15615d19a852ae32
- I don't know if this can make a difference in the real world
- but it looked kind of suspicious (what happens with sed
- implementations that cannot process very long lines?).
- At least this commit shouldn't make it worse.
+ Signed-off-by: Gabriela Gutierrez <gabigutierrez@google.com>
- src/scripts/xzgrep.in | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
+ .github/workflows/windows-ci.yml | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
-commit bd7b290f3fe4faeceb7d3497ed9bf2e6ed5e7dc5
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-07-18 21:52:31 +0300
+commit f28cc9bd481ce493da11f98c18526d324211599a
+Author: Gabriela Gutierrez <gabigutierrez@google.com>
+Date: 2023-09-26 14:35:08 +0000
- xzgrep: Use grep -H --label when available (GNU, *BSDs).
+ CI: Bump and ref actions by commit SHA in ci.yml
+
+ Referencing actions by commit SHA in GitHub workflows guarantees you are using an immutable version. Actions referenced by tags and branches are more vulnerable to attacks, such as the tag being moved to a malicious commit or a malicious commit being pushed to the branch.
+
+ It's important to make sure the SHA's are from the original repositories and not forks.
- It avoids the use of sed for prefixing filenames to output lines.
- Using sed for that is slower and prone to security bugs so now
- the sed method is only used as a fallback.
+ For reference:
- This also fixes an actual bug: When grepping a binary file,
- GNU grep nowadays prints its diagnostics to stderr instead of
- stdout and thus the sed-method for prefixing the filename doesn't
- work. So with this commit grepping binary files gives reasonable
- output with GNU grep now.
+ https://github.com/actions/checkout/releases/tag/v4.1.0
+ https://github.com/actions/checkout/commit/8ade135a41bc03ea155e62e844d188df1ea18608
- This was inspired by zgrep but the implementation is different.
+ https://github.com/actions/upload-artifact/releases/tag/v3.1.3
+ https://github.com/actions/upload-artifact/commit/a8a3f3ad30e3422c9c7b888a15615d19a852ae32
+
+ Signed-off-by: Gabriela Gutierrez <gabigutierrez@google.com>
- src/scripts/xzgrep.in | 21 +++++++++++++++++++++
- 1 file changed, 21 insertions(+)
+ .github/workflows/ci.yml | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit b56729af9f1a596e57aeefd7570d8d7dce5c9f52
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-07-18 21:10:25 +0300
+commit f74f1740067b75042497edbfa6ea457ff75484b9
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-10-12 20:12:18 +0800
- xzgrep: Use -e to specify the pattern to grep.
+ Build: Update visibility.m4 from Gnulib.
- Now we don't need the separate test for adding the -q option
- as it can be added directly in the two places where it's needed.
+ Updating from version 6 -> 8 from upstream. Declarations for variables
+ and function bodies were added to avoid unnecessary failures with
+ -Werror.
- src/scripts/xzgrep.in | 12 ++++--------
- 1 file changed, 4 insertions(+), 8 deletions(-)
+ m4/visibility.m4 | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
-commit bad61b5997e6647911974022bfb72f3d4818a594
+commit 5c4bca521e6fb435898a0012b3276eee70a6dadf
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-07-18 19:18:48 +0300
+Date: 2023-10-06 19:36:35 +0300
- Scripts: Use printf instead of echo in a few places.
-
- It's a good habbit as echo has some portability corner cases
- when the string contents can be anything.
+ Update THANKS.
- src/scripts/xzdiff.in | 6 +++---
- src/scripts/xzgrep.in | 4 ++--
- src/scripts/xzless.in | 4 ++--
- src/scripts/xzmore.in | 8 ++++----
- 4 files changed, 11 insertions(+), 11 deletions(-)
+ THANKS | 1 +
+ 1 file changed, 1 insertion(+)
-commit 6a4a4a7d2667837dc824c26fcb19ed6ca5aff645
+commit d91cb6e884c73d0b05d7e7d68ad4e6eb29f4b44b
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-07-17 21:36:25 +0300
+Date: 2023-10-06 18:55:57 +0300
- xzgrep: Add more LC_ALL=C to avoid bugs with multibyte characters.
-
- Also replace one use of expr with printf.
-
- The rationale for LC_ALL=C was already mentioned in
- 69d1b3fc29677af8ade8dc15dba83f0589cb63d6 that fixed a security
- issue. However, unrelated uses weren't changed in that commit yet.
+ CMake/Windows: Fix when the windres workaround is applied.
- POSIX says that with sed and such tools one should use LC_ALL=C
- to ensure predictable behavior when strings contain byte sequences
- that aren't valid multibyte characters in the current locale. See
- under "Application usage" in here:
+ CMake doesn't set WIN32 on CYGWIN but the workaround is
+ probably needed on Cygwin too. Same for MSYS and MSYS2.
- https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html
+ The workaround must not be used with Clang that is acting in
+ MSVC mode. This fixes it by checking for the known environments
+ that need the workaround instead of using "NOT MSVC".
- With GNU sed invalid multibyte strings would work without this;
- it's documented in its Texinfo manual. Some other implementations
- aren't so forgiving.
+ Thanks to Martin Storsjö.
+ https://github.com/tukaani-project/xz/commit/0570308ddd9c0e39e85597ebc0e31d4fc81d436f#commitcomment-129098431
- src/scripts/xzgrep.in | 14 ++++++++------
- 1 file changed, 8 insertions(+), 6 deletions(-)
+ CMakeLists.txt | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
-commit b48f9d615f2c2e8d2f6e253d0e48ee66d0652b68
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-07-17 20:55:16 +0300
+commit 01e34aa1171b04f8b28960b1cc6135a903e0c13d
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-09-29 22:11:54 +0800
- xzgrep: Fix parsing of certain options.
+ CI: Disable CLANG64 MSYS2 environment until bug is resolved.
- Fix handling of "xzgrep -25 foo" (in GNU grep "grep -25 foo" is
- an alias for "grep -C25 foo"). xzgrep would treat "foo" as filename
- instead of as a pattern. This bug was fixed in zgrep in gzip in 2012.
+ lld 17.0.1 searches for libraries to link first in the toolchain
+ directories before the local directory when building. The is a problem
+ for us because liblzma.a is installed in MSYS2 CLANG64 by default and
+ xz.exe will thus use the installed library instead of the one being
+ built.
- Add -E, -F, -G, and -P to the "no argument required" list.
+ This causes tests to fail when they are expecting features to be
+ disabled. More importantly, it will compile xz.exe with an incorrect
+ liblzma and could cause unexpected behavior by being unable to update
+ liblzma code in static builds. The CLANG64 environment can be tested
+ again once this is fixed.
- Add -X to "argument required" list. It is an
- intentionally-undocumented GNU grep option so this isn't
- an important option for xzgrep but it seems that other grep
- implementations (well, those that I checked) don't support -X
- so I hope this change is an improvement still.
+ Link to bug: https://github.com/llvm/llvm-project/issues/67779.
+
+ .github/workflows/windows-ci.yml | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+commit 30d0c35327f3639cb11224872aa58fdbf0b1526e
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-09-29 20:14:39 +0800
+
+ CMake: Rename xz and man page symlink custom targets.
- grep -d (grep --directories=ACTION) requires an argument. In
- contrast to zgrep, I kept -d in the "no argument required" list
- because it's not supported in xzgrep (or zgrep). This way
- "xzgrep -d" gives an error about option being unsupported instead
- of telling that it requires an argument. Both zgrep and xzgrep
- tell that it's unsupported if an argument is specified.
+ The Ninja Generator for CMake cannot have a custom target and its
+ BYPRODUCTS have the same name. This has prevented Ninja builds on
+ Unix-like systems since the xz symlinks were introduced in
+ 80a1a8bb838842a2be343bd88ad1462c21c5e2c9.
+
+ CMakeLists.txt | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 506d03127a8565442b028ec991e1578124fd3025
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-09-29 19:58:44 +0800
+
+ CMake: Specify LINKER_LANGUAGE for libgnu target to fix Ninja Generator.
- Add comments.
+ CMake is unable to guess the linker language for just a header file so
+ it must be explicitly set.
- src/scripts/xzgrep.in | 19 +++++++++++++++++--
- 1 file changed, 17 insertions(+), 2 deletions(-)
+ CMakeLists.txt | 6 ++++++
+ 1 file changed, 6 insertions(+)
-commit 2d2201bc6315deda4d43625aa510972467bd51d4
+commit 0570308ddd9c0e39e85597ebc0e31d4fc81d436f
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-07-14 20:33:05 +0300
+Date: 2023-09-27 19:54:35 +0300
- Tests: Add the .lzma files to test_files.sh.
+ CMake: Fix Windows build with Clang/LLVM 17.
+
+ llvm-windres 17.0.0 has more accurate emulation of GNU windres, so
+ the hack for GNU windres must now be used with llvm-windres too.
+
+ LLVM 16.0.6 has the old behavior and there likely won't be more
+ 16.x releases. So we can simply check for >= 17.0.0.
+
+ See also:
+ https://github.com/llvm/llvm-project/commit/2bcc0fdc58a220cb9921b47ec8a32c85f2511a47
- tests/test_files.sh | 20 ++++++++++++++++++++
- 1 file changed, 20 insertions(+)
+ CMakeLists.txt | 26 ++++++++++++++------------
+ 1 file changed, 14 insertions(+), 12 deletions(-)
-commit ce5549a591bf126300618879f5b24023351baff6
+commit 5a9af95f85a7e5d4f9c10cb8cf737651a921f1d1
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-07-14 19:37:42 +0300
+Date: 2023-09-26 21:47:13 +0300
- Tests: Add .lzma test files.
+ liblzma: Update a comment.
+
+ The C standards don't allow an empty translation unit which can be
+ avoided by declaring something, without exporting any symbols.
+
+ When I committed f644473a211394447824ea00518d0a214ff3f7f2 I had
+ a feeling that some specific toolchain somewhere didn't like
+ empty object files (assembler or maybe "ar" complained) but
+ I cannot find anything to confirm this now. Quite likely I
+ remembered nonsense. I leave this here as a note to my future self. :-)
- tests/files/README | 63 ++++++++++++++++-----
- tests/files/bad-too_big_size-with_eopm.lzma | Bin 0 -> 37 bytes
- tests/files/bad-too_small_size-without_eopm-1.lzma | Bin 0 -> 31 bytes
- tests/files/bad-too_small_size-without_eopm-2.lzma | Bin 0 -> 31 bytes
- tests/files/bad-too_small_size-without_eopm-3.lzma | Bin 0 -> 36 bytes
- tests/files/bad-unknown_size-without_eopm.lzma | Bin 0 -> 31 bytes
- tests/files/good-known_size-with_eopm.lzma | Bin 0 -> 37 bytes
- tests/files/good-known_size-without_eopm.lzma | Bin 0 -> 31 bytes
- tests/files/good-unknown_size-with_eopm.lzma | Bin 0 -> 37 bytes
- 9 files changed, 50 insertions(+), 13 deletions(-)
+ src/liblzma/check/crc64_table.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
-commit 107c93ee5cad51a6ea0cee471209bfe8d76deaa3
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-07-14 18:12:38 +0300
+commit 8ebaf3f665ddc7e4f19c613005050dde5ccbe499
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-09-27 00:02:11 +0800
- liblzma: Rename a variable and improve a comment.
+ liblzma: Avoid compiler warning without creating extra symbol.
+
+ When the generic fast crc64 method is used, then we omit
+ lzma_crc64_table[][]. Similar to
+ d9166b52cf3458a4da3eb92224837ca8fc208d79, we can avoid compiler warnings
+ with -Wempty-translation-unit (Clang) or -pedantic (GCC) by creating a
+ never used typedef instead of an extra symbol.
- src/liblzma/lzma/lzma_decoder.c | 13 +++++++++----
- 1 file changed, 9 insertions(+), 4 deletions(-)
+ src/liblzma/check/crc64_table.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
-commit 511feb5eadb988d641b025d597f4fac7502003b8
+commit 092d21db2e5eea19fe079264ce48c178989c7606
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-07-13 22:24:41 +0300
+Date: 2023-09-26 17:24:15 +0300
- Update THANKS.
+ Build: Update the comment about -Werror usage in checks.
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ configure.ac | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
-commit 9595a3119b9faf0ce01375329cad8bbf85c35ea2
+commit a37a2763383e6c204fe878e1416dd35e7711d3a9
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-07-13 22:24:07 +0300
+Date: 2023-09-26 15:00:43 +0300
- liblzma: Add optional autodetection of LZMA end marker.
+ Build: Fix __attribute__((ifunc(...))) detection with clang -Wall.
- Turns out that this is needed for .lzma files as the spec in
- LZMA SDK says that end marker may be present even if the size
- is stored in the header. Such files are rare but exist in the
- real world. The code in liblzma is so old that the spec didn't
- exist in LZMA SDK back then and I had understood that such
- files weren't possible (the lzma tool in LZMA SDK didn't
- create such files).
+ Now if user-supplied CFLAGS contains -Wall -Wextra -Wpedantic
+ the two checks that need -Werror will still work.
- This modifies the internal API so that LZMA decoder can be told
- if EOPM is allowed even when the uncompressed size is known.
- It's allowed with .lzma and not with other uses.
+ At CMake side there is add_compile_options(-Wall -Wextra)
+ but it didn't affect the -Werror tests. So with both Autotools
+ and CMake only user-supplied CFLAGS could make the checks fail
+ when they shouldn't.
- Thanks to Karl Beldan for reporting the problem.
+ This is not a full fix as things like -Wunused-macros in
+ user-supplied CFLAGS will still cause problems with both
+ GCC and Clang.
- doc/lzma-file-format.txt | 11 +++-
- src/liblzma/common/alone_decoder.c | 2 +-
- src/liblzma/common/microlzma_decoder.c | 2 +-
- src/liblzma/lz/lz_decoder.c | 10 +++-
- src/liblzma/lz/lz_decoder.h | 8 +--
- src/liblzma/lzma/lzma2_decoder.c | 2 +-
- src/liblzma/lzma/lzma_decoder.c | 99 ++++++++++++++++++++++++----------
- 7 files changed, 95 insertions(+), 39 deletions(-)
+ CMakeLists.txt | 8 ++++++++
+ configure.ac | 8 ++++++++
+ 2 files changed, 16 insertions(+)
-commit 0c0f8e9761eb6eaf199082cf144db7ac5f9d8cb2
+commit 9c42f936939b813f25d0ff4e99c3eb9c2d17a0d2
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-07-12 18:53:04 +0300
+Date: 2023-09-26 13:51:31 +0300
- xz: Document the special memlimit case of 2000 MiB on MIPS32.
+ Build: Fix underquoted AC_LANG_SOURCE.
- See commit fc3d3a7296ef58bb799a73943636b8bfd95339f7.
+ It made no practical difference in this case.
- src/xz/xz.1 | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit d1bfa3dc703325ecd974167e864a8712fdfe936e
-Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-07-01 21:19:26 +0800
+commit 9f1444a8a5c0e724b2c7ef83424f642f07a95982
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2023-09-26 13:14:37 +0300
- Created script to generate code coverage reports.
+ Build: Silence two Autoconf warnings.
+
+ There were two uses of AC_COMPILE_IFELSE that didn't use
+ AC_LANG_SOURCE and Autoconf warned about these. The omission
+ had been intentional but it turned out that this didn't do
+ what I thought it would.
+
+ Autoconf 2.71 manual gives an impression that AC_LANG_SOURCE
+ inserts all #defines that have been made with AC_DEFINE so
+ far (confdefs.h). The idea was that omitting AC_LANG_SOURCE
+ would mean that only the exact code included in the
+ AC_COMPILE_IFELSE call would be compiled.
+
+ With C programs this is not true: the #defines get added without
+ AC_LANG_SOURCE too. There seems to be no neat way to avoid this.
+ Thus, with the C language at least, adding AC_LANG_SOURCE makes
+ no other difference than silencing a warning from Autoconf. The
+ generated "configure" remains identical. (Docs of AC_LANG_CONFTEST
+ say that the #defines have been inserted since Autoconf 2.63b and
+ that AC_COMPILE_IFELSE uses AC_LANG_CONFTEST. So the behavior is
+ documented if one also reads the docs of macros that one isn't
+ calling directly.)
+
+ Any extra code, including #defines, can cause problems for
+ these two tests because these tests must use -Werror.
+ CC=clang CFLAGS=-Weverything is the most extreme example.
+ It enables -Wreserved-macro-identifier which warns about
+ #define __EXTENSIONS__ 1 because it begins with two underscores.
+ It's possible to write a test file that passes -Weverything but
+ it becomes impossible when Autoconf inserts confdefs.h.
- The script uses lcov and genhtml after running the tests
- to show the code coverage statistics. The script will create
- a coverage directory where it is run. It can be run both in
- and out of the source directory.
+ So this commit adds AC_LANG_SOURCE to silence Autoconf warnings.
+ A different solution is needed for -Werror tests.
- .gitignore | 4 +++
- tests/code_coverage.sh | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 83 insertions(+)
+ configure.ac | 9 ++++-----
+ 1 file changed, 4 insertions(+), 5 deletions(-)
-commit 86a30b0255d8064169fabfd213d907016d2f9f2a
+commit 519e47c2818acde571fadc79551294527fe6cc22
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-06-16 17:32:19 +0300
+Date: 2023-09-26 01:17:11 +0800
- Tests: Add more tests into test_check.
+ CMake: Remove accidental extra newline.
- tests/test_check.c | 279 +++++++++++++++++++++++++++++++++++++++++++++++++++--
- tests/tests.h | 23 +++++
- 2 files changed, 295 insertions(+), 7 deletions(-)
+ CMakeLists.txt | 1 -
+ 1 file changed, 1 deletion(-)
-commit 82e30fed66a89706388a8c15dc954d84e63f38fa
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-06-16 15:02:57 +0300
+commit bbb42412da6a02705ba3e668e90840c2683e4e67
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-09-26 00:47:26 +0800
- Tests: Use char[][24] array for enum_strings_lzma_ret.
+ Build: Remove Gnulib dependency from tests.
- Array of pointers to short strings is a bit pointless here
- and now it's fully const.
+ The tests do not use any Gnulib replacements so they do not need to link
+ libgnu.a or have /lib in the include path.
- tests/tests.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ tests/Makefile.am | 7 +------
+ 1 file changed, 1 insertion(+), 6 deletions(-)
-commit 5ba9459e6c4a29f6870ca78ce8ac6e519d59c41e
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-06-16 14:12:14 +0300
+commit d265f6b75691c6c8fa876eb5320c3ff5aed17dfa
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-09-26 00:43:43 +0800
- Tests: tuktest.h: Add tuktest_error_impl to help with error conditions.
+ CMake: Remove /lib from tests include path.
+
+ The tests never included anything from /lib, so this was not needed.
- tests/tuktest.h | 72 +++++++++++++++++++++++++--------------------------------
- 1 file changed, 32 insertions(+), 40 deletions(-)
+ CMakeLists.txt | 1 -
+ 1 file changed, 1 deletion(-)
-commit b339892668da20aea22a93668c82b87a38e4a97f
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-06-16 13:29:59 +0300
+commit 9fb5de41f2fb654ca952d4bda15cf3777c2b720f
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-09-24 22:10:41 +0800
- Tests: tuktest.h: Rename file_from_* and use tuktest_malloc there.
+ Scripts: Change quoting style from `...' to '...'.
- tests/test_bcj_exact_size.c | 4 +---
- tests/tuktest.h | 52 +++++++++++++++++++++------------------------
- 2 files changed, 25 insertions(+), 31 deletions(-)
+ src/scripts/xzdiff.in | 2 +-
+ src/scripts/xzgrep.in | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
-commit d8b63a0ad68d1c461eb373466679ebc41fbc207d
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-06-16 13:08:19 +0300
+commit eaebdef4d4de3c088b0905f42626b74e0d23abf3
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-09-24 22:10:18 +0800
- Tests: tuktest.h: Add malloc wrapper with automatic freeing.
+ xz: Change quoting style from `...' to '...'.
- tests/tuktest.h | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 124 insertions(+)
+ src/xz/args.c | 6 +++---
+ src/xz/file_io.c | 2 +-
+ src/xz/main.c | 4 ++--
+ src/xz/message.c | 14 +++++++-------
+ src/xz/options.c | 2 +-
+ src/xz/suffix.c | 2 +-
+ src/xz/util.c | 6 +++---
+ 7 files changed, 18 insertions(+), 18 deletions(-)
-commit 1d51536a4b19a8fae768f8eb462fc2238cb36d53
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-06-16 11:47:37 +0300
+commit f6667702bf075a05fbe336dbf3576ad1a82ec645
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-09-24 22:09:47 +0800
- Tests: tuktest.h: Move a function.
+ liblzma: Change quoting style from `...' to '...'.
+
+ This was done for both internal and API headers.
- tests/tuktest.h | 44 ++++++++++++++++++++++----------------------
- 1 file changed, 22 insertions(+), 22 deletions(-)
+ src/liblzma/api/lzma/base.h | 18 +++++++++---------
+ src/liblzma/api/lzma/container.h | 10 +++++-----
+ src/liblzma/api/lzma/filter.h | 6 +++---
+ src/liblzma/api/lzma/index.h | 8 ++++----
+ src/liblzma/api/lzma/lzma12.h | 2 +-
+ src/liblzma/lz/lz_encoder.h | 2 +-
+ src/liblzma/rangecoder/range_decoder.h | 2 +-
+ 7 files changed, 24 insertions(+), 24 deletions(-)
-commit 70c7555f6403553ee35539e869de0025592d8564
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-06-14 22:21:15 +0300
+commit be012b8097a4eaee335b51357d6befa745f753ce
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-09-24 22:09:16 +0800
- Tests: test_vli: Remove an invalid test-assertion.
-
- lzma_vli is unsigned so trying a signed value results in
- a compiler warning from -Wsign-conversion. (lzma_vli)-1
- equals to LZMA_VLI_UNKNOWN anyway which is the next assertion.
+ Build: Change quoting style from `...' to '...'.
- tests/test_vli.c | 2 --
- 1 file changed, 2 deletions(-)
+ configure.ac | 18 +++++++++---------
+ dos/config.h | 6 +++---
+ m4/getopt.m4 | 2 +-
+ m4/tuklib_progname.m4 | 2 +-
+ windows/build.bash | 2 +-
+ 5 files changed, 15 insertions(+), 15 deletions(-)
-commit 154b73c5a1092c3f785e01666b564ad7ff1be555
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-06-14 22:10:10 +0300
+commit ce162db07f03495bd333696e66883c8f36abdc1e
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-09-24 22:05:02 +0800
- Tests: test_vli: Add const where appropriate.
+ Docs: Change quoting style from `...' to '...'.
+
+ These days the ` and ' do not look symmetric. This quoting style has
+ been changed in various apps over the years including the GNU tools.
- tests/test_vli.c | 53 ++++++++++++++++++++++++++++-------------------------
- 1 file changed, 28 insertions(+), 25 deletions(-)
+ INSTALL | 6 +++---
+ doc/examples/01_compress_easy.c | 2 +-
+ doc/examples/11_file_info.c | 16 ++++++++--------
+ 3 files changed, 12 insertions(+), 12 deletions(-)
-commit 0354d6cce3ff98ea6f927107baf216253f6ce2bb
-Author: Jia Tan <jiat75@gmail.com>
-Date: 2022-06-13 20:27:03 +0800
+commit db17656721e43939bfa4ec13506e7c76f4b86da6
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-09-24 21:25:01 +0800
- Added vli tests to .gitignore
+ lib: Silence -Wsign-conversion in getopt.c.
- .gitignore | 1 +
- 1 file changed, 1 insertion(+)
+ lib/getopt.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
-commit a08f5ccf6bdc20ef70e41f6f3321618ef146f96e
+commit a6234f677d66888f435010bc0b67de6a32fefcf6
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-06-12 11:31:40 +0800
+Date: 2023-09-24 20:48:52 +0800
- Created tests for all functions exported in vli.h
+ Build: Update getopt.m4 from Gnulib.
- Achieved 100% code coverage vli_encoder.c, vli_decoder.c, and vli_size.c
+ This file was modified from upstream since we do not need to replace
+ getopt() and can avoid complexity and feature tests.
- tests/Makefile.am | 4 +-
- tests/test_vli.c | 308 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 311 insertions(+), 1 deletion(-)
+ m4/getopt.m4 | 79 ++++++++++++++++++++++++++++++------------------------------
+ 1 file changed, 39 insertions(+), 40 deletions(-)
-commit 1e3eb61815a91c0a1bfbb802e2d95593f523491f
-Author: jiat75 <jiat0218@gmail.com>
-Date: 2022-06-03 21:24:54 +0800
+commit 84808b68f1075e8603a8ef95d361a61fdc6a5b10
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-09-26 00:09:53 +0800
- Added parallel test artifacts to .gitignore
+ CMake: Add /lib to include path.
- .gitignore | 2 ++
- 1 file changed, 2 insertions(+)
+ CMakeLists.txt | 5 +++++
+ 1 file changed, 5 insertions(+)
-commit 00e3613f1212eaa84e721585fdb4de6967cf2476
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-06-14 21:29:21 +0300
+commit 01804a0b4b64e0f33568e947e0579263808c59d3
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-09-24 20:36:34 +0800
- Tests: Use good-1-empty-bcj-lzma2.xz in test_bcj_exact_size.
-
- It's much nicer this way so that the test data isn't a hardcoded
- table inside the C file.
+ CMake: Update libgnu target with new header files.
- tests/test_bcj_exact_size.c | 19 +++++++------------
- 1 file changed, 7 insertions(+), 12 deletions(-)
+ CMakeLists.txt | 5 +++++
+ 1 file changed, 5 insertions(+)
-commit 86bab755be252bfd3e0a9aee8e7b83a9bbb23ed0
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-06-14 21:26:13 +0300
+commit d34558388fe1d8929f6478d61dc322eb4f2900af
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-09-23 00:47:52 +0800
- Tests: Add file reading helpers to tuktest.h.
+ lib: Update Makefile.am for new header files.
- tests/tuktest.h | 183 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
- 1 file changed, 176 insertions(+), 7 deletions(-)
+ lib/Makefile.am | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
-commit 83d2337b72dbf391c6f3b41889eea99e51679105
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-06-14 18:21:57 +0300
+commit 52bf644bdf536e20fcc743b712cede135e05eec5
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-09-24 20:34:03 +0800
- Tests: tuktest.h: Move a printf from a macro to a helper function.
+ lib: Update getopt1.c from Gnulib.
+
+ The only difference was maintaining the conditional inclusion for
+ config.h.
- tests/tuktest.h | 26 ++++++++++++++++++--------
- 1 file changed, 18 insertions(+), 8 deletions(-)
+ lib/getopt1.c | 56 ++++++++++++++++++++++----------------------------------
+ 1 file changed, 22 insertions(+), 34 deletions(-)
-commit f9e8176ea7d520797a2db2d49a5a632c285674a8
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-06-14 17:20:49 +0300
+commit 7e884c00d0093c38339f17fb1d280eec493f42ca
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-09-23 03:27:00 +0800
- Tests: Add test file good-1-empty-bcj-lzma2.xz.
+ lib: Update getopt.in.h from Gnulib with modifications.
+
+ We can still avoid modifying the contents of this file during
+ configuration to simplify the build systems. Gnulib added replacements
+ for inclusions guards for Cygwin. Cygwin should not need getopt_long
+ replacement so this feature can be omitted.
+
+ <unistd.h> is conditionally included to avoid MSVC since it is not
+ available.
- This is from test_bcj_exact_size.c.
- It's good to have it as a standalone file.
+ The definition for _GL_ARG_NONNULL was also copied into this file from
+ Gnulib since this stage is usually done during gnulib-tool.
- tests/files/README | 5 +++++
- tests/files/good-1-empty-bcj-lzma2.xz | Bin 0 -> 52 bytes
- 2 files changed, 5 insertions(+)
+ lib/getopt.in.h | 228 +++++++-------------------------------------------------
+ 1 file changed, 29 insertions(+), 199 deletions(-)
-commit aa75c5563a760aea3aa23d997d519e702e82726b
+commit cff05f82066ca3ce9425dafdb086325a8eef8de3
Author: Jia Tan <jiat0218@gmail.com>
-Date: 2022-06-10 21:35:18 +0800
+Date: 2023-09-23 00:31:55 +0800
- Tests: Created tests for hardware functions.
-
- Created tests for all API functions exported in
- src/liblzma/api/lzma/hardware.h. The tests are fairly trivial
- but are helpful because they will inform users if their machines
- cannot support these functions. They also improve the code
- coverage metrics.
+ lib: Update getopt_int.h from Gnulib.
- .gitignore | 1 +
- tests/Makefile.am | 2 ++
- tests/test_hardware.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 48 insertions(+)
+ lib/getopt_int.h | 109 ++++++++++++++++++++++++-------------------------------
+ 1 file changed, 48 insertions(+), 61 deletions(-)
-commit 5c8ffdca20813939818843476fb212dfae8838a3
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-06-02 21:01:45 +0300
+commit 04bd86a4b010d43c6a016a3857ecb38dc1d5b024
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-09-23 00:27:23 +0800
- Tests: Convert test_check to tuktest.
+ lib: Update getopt.c from Gnulib with modifications.
- Thanks to Jia Tan for help with all the tests.
+ The code maintains the prior modifications of conditionally including
+ config.h and disabling NLS support.
+
+ _GL_UNUSED is repalced with the simple cast to void trick. _GL_UNUSED
+ is only used for these two parameters so its simpler than having to
+ define it.
- tests/test_check.c | 67 +++++++++++++++++++++++++++---------------------------
- 1 file changed, 33 insertions(+), 34 deletions(-)
+ lib/getopt.c | 1134 +++++++++++++++++++---------------------------------------
+ 1 file changed, 377 insertions(+), 757 deletions(-)
-commit faf5ff8899d539b4dcd2a7e5280cb820a4746c86
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-06-02 20:31:03 +0300
+commit 56b42be7287844db20b3a3bc1372c6ae8c040d63
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-09-23 00:18:56 +0800
- Tests: Convert test_block_header to tuktest.
+ lib: Add getopt-cdefs.h for getopt_long update.
+
+ This was modified slightly from Gnulib. In Gnulib, it expects the
+ @HAVE_SYS_CDEFS_H@ to be replaced. Instead, we can set HAVE_SYS_CDEFS_H
+ on systems that have it and avoid copying another file into the build
+ directory. Since we are not using gnulib-tool, copying extra files
+ requires extra build system updates (and special handling with CMake) so
+ we should avoid when possible.
- tests/test_block_header.c | 89 +++++++++++++++++++++++++++--------------------
- 1 file changed, 52 insertions(+), 37 deletions(-)
+ lib/getopt-cdefs.h | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 70 insertions(+)
-commit 754d39fbebee3782258d42f154a223d3c5770ec7
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-06-02 20:28:23 +0300
+commit 9834e591a4cf9dc2f49e42e26bf28d1d247bc196
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-09-23 00:15:25 +0800
- Tests: Convert test_bcj_exact_size to tuktest.
+ lib: Copy new header files from Gnulib without modification.
- The compress() and decompress() functions were merged because
- the later depends on the former so they need to be a single
- test case.
+ The getopt related files have changed from Gnulib by splitting up
+ getopt.in.h into more modular header files. We could have kept
+ everything in just getopt.in.h, but this will help us continue to update
+ in the future.
- tests/test_bcj_exact_size.c | 75 +++++++++++++++++++++++++--------------------
- 1 file changed, 41 insertions(+), 34 deletions(-)
+ lib/getopt-core.h | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ lib/getopt-ext.h | 77 +++++++++++++++++++++++++++++++++++++++++
+ lib/getopt-pfx-core.h | 66 +++++++++++++++++++++++++++++++++++
+ lib/getopt-pfx-ext.h | 70 +++++++++++++++++++++++++++++++++++++
+ 4 files changed, 309 insertions(+)
-commit 96da21470f9570cd08286906a050a7c22631775b
+commit 5b7a6f06e93d99d6635a740fd2e12fab66096c93
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-06-02 20:27:00 +0300
+Date: 2023-09-22 21:16:52 +0300
- Tests: Include tuktest.h in tests.h.
-
- This breaks -Werror because none of the tests so far use
- tuktest.h and thus there are warnings about unused variables
- and functions.
+ Windows: Update the version requirement comments from Win95 to W2k.
- tests/tests.h | 47 +++++++++++++++++++++++------------------------
- 1 file changed, 23 insertions(+), 24 deletions(-)
+ windows/README-Windows.txt | 10 ++++------
+ windows/build.bash | 6 +++---
+ 2 files changed, 7 insertions(+), 9 deletions(-)
-commit df71ba1c991f60c3269aaadd398247e632714626
+commit e582f8e0fee46e7cd967f42f465d6bb608b73bc1
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-06-02 20:25:21 +0300
+Date: 2023-09-22 21:12:54 +0300
- Tests: Add tuktest.h mini-test-framework.
+ tuklib_physmem: Comment out support for Windows versions older than 2000.
- tests/Makefile.am | 1 +
- tests/tuktest.h | 752 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 753 insertions(+)
+ src/common/tuklib_physmem.c | 20 +++++++++-----------
+ 1 file changed, 9 insertions(+), 11 deletions(-)
-commit 4773608554d1b684a05ff9c1d879cf5c42266d33
+commit 7d73d1f0e08f96c4ab7aac91b958e37a3dadf07a
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-05-23 21:31:36 +0300
+Date: 2023-09-24 16:32:32 +0300
- Build: Enable Automake's parallel test harness.
-
- It has been the default for quite some time already and
- the old serial harness isn't discouraged. The downside is
- that with parallel tests one cannot print progress info or
- other diagnostics to the terminal; all output from the tests
- will be in the log files only. But now that the compression
- tests are separated the parallel tests will speed things up.
+ sysdefs.h: Update the comment about __USE_MINGW_ANSI_STDIO.
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ src/common/sysdefs.h | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
-commit 9a6dd6d46f7f256a5573e5d874c1052033ed7b05
+commit 2a9929af0ab7e6c0ab725565034afe3293e51d71
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-05-23 21:17:47 +0300
+Date: 2023-09-22 02:33:29 +0300
- Tests: Split test_compress.sh into separate test unit for each file.
+ xz: Windows: Don't (de)compress to special files like "con" or "nul".
- test_compress.sh now takes one command line argument:
- a filename to be tested. If it begins with "compress_generated_"
- the file will be created with create_compress_files.
+ Before this commit, the following writes "foo" to the
+ console and deletes the input file:
- This will allow parallel execution of the slow tests.
+ echo foo | xz > con_xz
+ xz --suffix=_xz --decompress con_xz
+
+ It cannot happen without --suffix because names like con.xz
+ are also special and so attempting to decompress con.xz
+ (or compress con to con.xz) will already fail when opening
+ the input file.
+
+ Similar thing is possible when compressing. The following
+ writes to "nul" and the input file "n" is deleted.
+
+ echo foo | xz > n
+ xz --suffix=ul n
+
+ Now xz checks if the destination is a special file before
+ continuing. DOS/DJGPP version had a check for this but
+ Windows (and OS/2) didn't.
- tests/Makefile.am | 11 +++-
- tests/test_compress.sh | 91 +++++++++++++++++++---------------
- tests/test_compress_generated_abc | 3 ++
- tests/test_compress_generated_random | 3 ++
- tests/test_compress_generated_text | 3 ++
- tests/test_compress_prepared_bcj_sparc | 3 ++
- tests/test_compress_prepared_bcj_x86 | 3 ++
- 7 files changed, 77 insertions(+), 40 deletions(-)
+ src/xz/file_io.c | 35 ++++++++++++++++++++++++++++-------
+ 1 file changed, 28 insertions(+), 7 deletions(-)
-commit c7758ac9c734707514dd34f254173ebac5eea7f8
+commit 01311b81f03cce1c0ce847a3d556f84dbd439343
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-05-23 20:32:49 +0300
+Date: 2023-09-21 20:42:52 +0300
- Test: Make create_compress_files.c a little more flexible.
-
- If a command line argument is given, then only the test file
- of that type is created. It's quite dumb in sense that unknown
- names don't give an error but it's good enough here.
-
- Also use EXIT_FAILURE instead of 1 as exit status for errors.
+ CMake: Wrap two overlong lines that are possible to wrap.
- tests/create_compress_files.c | 25 +++++++++++++++----------
- 1 file changed, 15 insertions(+), 10 deletions(-)
+ CMakeLists.txt | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
-commit 4a8e4a7b0ad4b03c0ac6862716c3457452cdaf8c
+commit 152d0771ddd0cffcac9042ad1a66f110d228eee2
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-05-23 20:17:42 +0300
+Date: 2023-09-21 20:36:31 +0300
- Tests: Remove unneeded commented lines from test_compress.sh.
+ CMake: Add a comment about threads on Cygwin.
- tests/test_compress.sh | 13 -------------
- 1 file changed, 13 deletions(-)
+ CMakeLists.txt | 1 +
+ 1 file changed, 1 insertion(+)
-commit 2ee50d150ee009f36135540b459e6ff328549725
+commit 6df988cceffaa3100b428ed816fad334935b27bf
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-05-23 20:16:00 +0300
+Date: 2023-09-12 23:53:25 +0300
- Tests: Remove progress indicator from test_compress.sh.
+ MSVC: Remove Visual Studio project files and update INSTALL-MSVC.txt.
- It will be useless with Automake's parallel tests.
+ CMake is now the preferred build file generator when building
+ with MSVC.
- tests/test_compress.sh | 9 ---------
- 1 file changed, 9 deletions(-)
+ windows/INSTALL-MSVC.txt | 37 ++--
+ windows/vs2013/config.h | 157 ---------------
+ windows/vs2013/liblzma.vcxproj | 363 ---------------------------------
+ windows/vs2013/liblzma_dll.vcxproj | 398 ------------------------------------
+ windows/vs2013/xz_win.sln | 48 -----
+ windows/vs2017/config.h | 157 ---------------
+ windows/vs2017/liblzma.vcxproj | 363 ---------------------------------
+ windows/vs2017/liblzma_dll.vcxproj | 398 ------------------------------------
+ windows/vs2017/xz_win.sln | 48 -----
+ windows/vs2019/config.h | 157 ---------------
+ windows/vs2019/liblzma.vcxproj | 364 ---------------------------------
+ windows/vs2019/liblzma_dll.vcxproj | 399 -------------------------------------
+ windows/vs2019/xz_win.sln | 51 -----
+ 13 files changed, 12 insertions(+), 2928 deletions(-)
-commit 2ce4f36f179a81d0c6e182a409f363df759d1ad0
+commit edd563daf0da1d00018684614803c77ab62efcd6
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-05-23 19:37:18 +0300
+Date: 2023-09-21 19:17:40 +0300
- liblzma: Silence a warning.
+ CMake: Require VS2015 or later for building xzdec.
- The actual initialization is done via mythread_sync and seems
- that GCC doesn't necessarily see that it gets initialized there.
+ xzdec might build with VS2013 but it hasn't been tested.
+ It was never supported before and VS2013 is old anyway
+ so for simplicity only liblzma is supported with VS2013.
- src/liblzma/common/stream_decoder_mt.c | 2 +-
+ CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-commit 5d8f3764ef43c35910e6d7003c0900a961ef6544
+commit daea64d158a7151ca6c255a0e4554c6d521cd589
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-04-14 20:53:16 +0300
+Date: 2023-09-12 23:43:49 +0300
- xz: Fix build with --disable-threads.
+ CMake: Allow building xz with Visual Studio 2015 and later.
+
+ Building the command line tools xz and xzdec with the combination
+ of CMake + Visual Studio 2015/2017/2019/2022 works now.
+
+ VS2013 update 2 should still be able to build liblzma.
+ VS2013 cannot build the xz command line tool because xz
+ needs snprintf() that roughly conforms to C99.
+ VS2013 is old and no extra code will be added to support it.
+
+ Thanks to Kelvin Lee and Jia Tan for testing.
- src/xz/hardware.c | 4 ++++
- 1 file changed, 4 insertions(+)
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 1d592897278b172d8549aa29c3a1f3a4f432a9b9
+commit 8c2d197c940d246849b2ec48109bb22e54036927
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-04-14 14:50:17 +0300
+Date: 2023-09-12 23:34:31 +0300
- xz: Change the cap of the default -T0 memlimit for 32-bit xz.
-
- The SIZE_MAX / 3 was 1365 MiB. 1400 MiB gives little more room
- and it looks like a round (artificial) number in --info-memory
- once --info-memory is made to display it.
+ MSVC: #define inline and restrict only when needed.
- Also, using #if avoids useless code on 64-bit builds.
+ This also drops the check for _WIN32 as that shouldn't be needed.
- src/xz/hardware.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
+ src/common/sysdefs.h | 13 ++++++++-----
+ 1 file changed, 8 insertions(+), 5 deletions(-)
-commit c77fe55ddb7752ed0fec46967c5ec9a72632ea0c
+commit af66cd585902045e5689a0418103ec81f19f1d0a
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-04-14 14:20:46 +0300
+Date: 2023-09-12 22:16:56 +0300
- xz: Add a default soft memory usage limit for --threads=0.
+ CMake: Add support for replacement getopt_long (lib/getopt*).
- This is a soft limit in sense that it only affects the number of
- threads. It never makes xz fail and it never makes xz change
- settings that would affect the compressed output.
-
- The idea is to make -T0 have more reasonable behavior when
- the system has very many cores or when a memory-hungry
- compression options are used. This also helps with 32-bit xz,
- preventing it from running out of address space.
-
- The downside of this commit is that now the number of threads
- might become too low compared to what the user expected. I
- hope this to be an acceptable compromise as the old behavior
- has been a source of well-argued complaints for a long time.
+ Thanks to Jia Tan for the initial work. I added the libgnu target
+ and made a few related minor edits.
- src/xz/coder.c | 28 ++++++++++++++++++++++++++--
- src/xz/hardware.c | 38 +++++++++++++++++++++++++++++---------
- src/xz/hardware.h | 27 +++++++++++++++++++++++++++
- 3 files changed, 82 insertions(+), 11 deletions(-)
+ CMakeLists.txt | 54 +++++++++++++++++++++++++++++++++++++++++++++++-------
+ 1 file changed, 47 insertions(+), 7 deletions(-)
-commit 0adc13bfe32c14f3e4c6ce9f2d4fdf4112ab53f4
+commit e3288fdb45c580cb849f6799cf419c4922004ae5
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-04-14 12:59:09 +0300
+Date: 2023-09-12 21:12:34 +0300
- xz: Make -T0 use multithreaded mode on single-core systems.
+ CMake: Bump maximum policy version to 3.27.
- The main problem withi the old behavior is that the compressed
- output is different on single-core systems vs. multicore systems.
- This commit fixes it by making -T0 one thread in multithreaded mode
- on single-core systems.
+ There are several new policies. CMP0149 may affect the Windows SDK
+ version that CMake will choose by default. The new behavior is more
+ predictable, always choosing the latest SDK version by default.
- The downside of this is that it uses more memory. However, if
- --memlimit-compress is used, xz can (thanks to the previous commit)
- drop to the single-threaded mode still.
+ The other new policies shouldn't affect this package.
- src/xz/coder.c | 18 +++++++++---------
- src/xz/hardware.c | 14 ++++++++++++++
- src/xz/hardware.h | 4 ++++
- 3 files changed, 27 insertions(+), 9 deletions(-)
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 898faa97287a756231c663a3ed5165672b417207
+commit aff1b479c7b168652bd20305ceed4317d5db6661
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-04-14 12:38:00 +0300
+Date: 2023-09-12 20:55:10 +0300
- xz: Changes to --memlimit-compress and --no-adjust.
+ lib/getopt*.c: Include <config.h> only HAVE_CONFIG_H is defined.
- In single-threaded mode, --memlimit-compress can make xz scale down
- the LZMA2 dictionary size to meet the memory usage limit. This
- obviously affects the compressed output. However, if xz was in
- threaded mode, --memlimit-compress could make xz reduce the number
- of threads but it wouldn't make xz switch from multithreaded mode
- to single-threaded mode or scale down the LZMA2 dictionary size.
- This seemed illogical and there was even a "FIXME?" about it.
+ The CMake-based build doesn't use config.h.
- Now --memlimit-compress can make xz switch to single-threaded
- mode if one thread in multithreaded mode uses too much memory.
- If memory usage is still too high, then the LZMA2 dictionary
- size can be scaled down too.
-
- The option --no-adjust was also changed so that it no longer
- prevents xz from scaling down the number of threads as that
- doesn't affect compressed output (only performance). After
- this commit --no-adjust only prevents adjustments that affect
- compressed output, that is, with --no-adjust xz won't switch
- from multithreaded mode to single-threaded mode and won't
- scale down the LZMA2 dictionary size.
-
- The man page wasn't updated yet.
+ Up-to-date getopt_long in Gnulib is LGPLv2 so at some
+ point it could be included in XZ Utils too but for now
+ this commit is enough to make CMake-based build possible.
- src/xz/coder.c | 63 +++++++++++++++++++++++++++++++++++++++-------------------
- 1 file changed, 43 insertions(+), 20 deletions(-)
+ lib/getopt.c | 4 +++-
+ lib/getopt1.c | 4 +++-
+ 2 files changed, 6 insertions(+), 2 deletions(-)
-commit cad299008cf73ec566f0662a9cf2b94f86a99659
+commit aa0cd585d2ed1455d35732798e0d90e3520e8ba5
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-04-11 22:20:49 +0300
+Date: 2023-09-08 19:08:57 +0300
- xz: Add --memlimit-mt-decompress along with a default limit value.
-
- --memlimit-mt-decompress allows specifying the limit for
- multithreaded decompression. This matches memlimit_threading in
- liblzma. This limit can only affect the number of threads being
- used; it will never prevent xz from decompressing a file. The
- old --memlimit-decompress option is still used at the same time.
-
- If the value of --memlimit-decompress (the default value or
- one specified by the user) is less than the value of
- --memlimit-mt-decompress , then --memlimit-mt-decompress is
- reduced to match --memlimit-decompress.
-
- Man page wasn't updated yet.
+ Doxygen: Add more C macro names to PREDEFINED.
- src/xz/args.c | 24 +++++++++++++++-------
- src/xz/coder.c | 34 ++++++++++---------------------
- src/xz/hardware.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
- src/xz/hardware.h | 17 ++++++++++------
- src/xz/message.c | 4 +++-
- 5 files changed, 97 insertions(+), 42 deletions(-)
+ doxygen/Doxyfile | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
-commit fe87b4cd5364f5bbb6a75a0299f1500c852d7c9a
+commit ee7709bae53637e1765ce142ef102914f1423cb5
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-04-06 23:11:59 +0300
+Date: 2023-09-11 18:47:26 +0300
- liblzma: Threaded decoder: Improve setting of pending_error.
+ liblzma: Move a few __attribute__ uses in function declarations.
- It doesn't need to be done conditionally. The comments try
- to explain it.
+ The API headers have many attributes but these were left
+ as is for now.
- src/liblzma/common/stream_decoder_mt.c | 51 +++++++++++++++++++++++-----------
- 1 file changed, 35 insertions(+), 16 deletions(-)
+ src/liblzma/common/common.c | 6 ++++--
+ src/liblzma/common/common.h | 8 ++++----
+ src/liblzma/common/memcmplen.h | 3 ++-
+ 3 files changed, 10 insertions(+), 7 deletions(-)
-commit 90621da7f6e1bfd6d91d60415eae04b2bca274c2
+commit 217958d88713b5dc73d366d24dd64b2b311b86fe
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-04-06 12:39:49 +0300
+Date: 2023-09-11 19:03:35 +0300
- liblzma: Add a new flag LZMA_FAIL_FAST for threaded decoder.
+ xz, xzdec, lzmainfo: Use tuklib_attr_noreturn.
- In most cases if the input file is corrupt the application won't
- care about the uncompressed content at all. With this new flag
- the threaded decoder will return an error as soon as any thread
- has detected an error; it won't wait to copy out the data before
- the location of the error.
+ For compatibility with C23's [[noreturn]], tuklib_attr_noreturn
+ must be at the beginning of declaration (before "extern" or
+ "static", and even before any GNU C's __attribute__).
- I don't plan to use this in xz to keep the behavior consistent
- between single-threaded and multi-threaded modes.
+ This commit also moves all other function attributes to
+ the beginning of function declarations. "extern" is kept
+ at the beginning of a line so the attributes are listed on
+ separate lines before "extern" or "static".
- src/liblzma/api/lzma/container.h | 25 ++++++++++++++++-
- src/liblzma/common/common.h | 7 +++--
- src/liblzma/common/stream_decoder_mt.c | 50 +++++++++++++++++++---------------
- 3 files changed, 56 insertions(+), 26 deletions(-)
+ src/lzmainfo/lzmainfo.c | 6 ++++--
+ src/xz/coder.c | 3 ++-
+ src/xz/hardware.h | 3 ++-
+ src/xz/message.h | 30 +++++++++++++++++-------------
+ src/xz/options.c | 3 ++-
+ src/xz/util.h | 8 ++++----
+ src/xzdec/xzdec.c | 9 ++++++---
+ 7 files changed, 37 insertions(+), 25 deletions(-)
-commit 64b6d496dc815a176d8307f418f6834a26783484
+commit 18a66fbac031c98f9c2077fc88846e4d07849197
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-04-05 12:24:57 +0300
+Date: 2023-09-11 18:53:31 +0300
- liblzma: Threaded decoder: Always wait for output if LZMA_FINISH is used.
+ Remove incorrect uses of __attribute__((__malloc__)).
- This makes the behavior consistent with the single-threaded
- decoder when handling truncated .xz files.
+ xrealloc() is obviously incorrect, modern GCC docs even
+ mention realloc() as an example where this attribute
+ cannot be used.
- Thanks to Jia Tan for finding this issue.
+ liblzma's lzma_alloc() and lzma_alloc_zero() would be
+ correct uses most of the time but custom allocators
+ may use a memory pool or otherwise hold the pointer
+ so aliasing issues could happen in theory.
+
+ The xstrdup() case likely was correct but I removed it anyway.
+ Now there are no __malloc__ attributes left in the code.
+ The allocations aren't in hot paths so this should make
+ no practical difference.
+
+ src/liblzma/common/common.c | 4 ++--
+ src/liblzma/common/common.h | 4 ++--
+ src/xz/util.h | 4 ++--
+ 3 files changed, 6 insertions(+), 6 deletions(-)
+
+commit 74b0e900c92d5b222b36f474f1efa431f8e262f7
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2023-09-08 18:41:25 +0300
+
+ Build: Omit -Wc99-c11-compat since it warns about _Noreturn.
- src/liblzma/common/stream_decoder_mt.c | 26 ++++++++++++++++++++++++--
- 1 file changed, 24 insertions(+), 2 deletions(-)
+ configure.ac | 1 -
+ 1 file changed, 1 deletion(-)
-commit e671bc8828b9c0c5406c3a22c541301d0eb54518
+commit 90c94dddfd57b7d744bfad64c54e10d15778144b
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-04-02 21:49:59 +0300
+Date: 2023-09-08 18:19:26 +0300
- liblzma: Threaded decoder: Support zpipe.c-style decoding loop.
+ tuklib: Update tuklib_attr_noreturn for C11/C17 and C23.
- This makes it possible to call lzma_code() in a loop that only
- reads new input when lzma_code() didn't fill the output buffer
- completely. That isn't the calling style suggested by the
- liblzma example program 02_decompress.c so perhaps the usefulness
- of this feature is limited.
+ This makes no difference for GCC or Clang as they support
+ GNU C's __attribute__((__noreturn__)) but this helps with MSVC:
- Also, it is possible to write such a loop so that it works
- with the single-threaded decoder but not with the threaded
- decoder even after this commit, or so that it works only if
- lzma_mt.timeout = 0.
+ - VS 2019 version 16.7 and later support _Noreturn if the
+ options /std:c11 or /std:c17 are used. This gets handled
+ with the check for __STDC_VERSION__ >= 201112.
- The zlib tutorial <https://zlib.net/zlib_how.html> is a well-known
- example of a loop where more input is read only when output isn't
- full. Porting this as is to liblzma would work with the
- single-threaded decoder (if LZMA_CONCATENATED isn't used) but it
- wouldn't work with threaded decoder even after this commit because
- the loop assumes that no more output is possible when it cannot
- read more input ("if (strm.avail_in == 0) break;"). This cannot
- be fixed at liblzma side; the loop has to be modified at least
- a little.
+ - When MSVC isn't in C11/C17 mode, __declspec(noreturn) is used.
- I'm adding this in any case because the actual code is simple
- and short and should have no harmful side-effects in other
- situations.
+ C23 will deprecate _Noreturn (and <stdnoreturn.h>)
+ for [[noreturn]]. This commit anticipates that but
+ the final __STDC_VERSION__ value isn't known yet.
- src/liblzma/common/stream_decoder_mt.c | 77 +++++++++++++++++++++++++++++-----
- 1 file changed, 67 insertions(+), 10 deletions(-)
+ src/common/tuklib_common.h | 22 +++++++++++++++++++++-
+ src/common/tuklib_exit.h | 4 ++--
+ 2 files changed, 23 insertions(+), 3 deletions(-)
-commit 2ba8173e27be4793edb46497e499ac2ae753a316
+commit 189f72581329ab281ad6af37f60135910cb1b146
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-03-31 00:05:07 +0300
+Date: 2023-09-11 17:22:44 +0300
Update THANKS.
THANKS | 1 +
1 file changed, 1 insertion(+)
-commit 69d1b3fc29677af8ade8dc15dba83f0589cb63d6
+commit 79334e7f20f2bf9e0de095835b48868f1238f584
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-03-29 19:19:12 +0300
+Date: 2023-09-05 22:42:10 +0300
- xzgrep: Fix escaping of malicious filenames (ZDI-CAN-16587).
-
- Malicious filenames can make xzgrep to write to arbitrary files
- or (with a GNU sed extension) lead to arbitrary code execution.
-
- xzgrep from XZ Utils versions up to and including 5.2.5 are
- affected. 5.3.1alpha and 5.3.2alpha are affected as well.
- This patch works for all of them.
-
- This bug was inherited from gzip's zgrep. gzip 1.12 includes
- a fix for zgrep.
-
- The issue with the old sed script is that with multiple newlines,
- the N-command will read the second line of input, then the
- s-commands will be skipped because it's not the end of the
- file yet, then a new sed cycle starts and the pattern space
- is printed and emptied. So only the last line or two get escaped.
-
- One way to fix this would be to read all lines into the pattern
- space first. However, the included fix is even simpler: All lines
- except the last line get a backslash appended at the end. To ensure
- that shell command substitution doesn't eat a possible trailing
- newline, a colon is appended to the filename before escaping.
- The colon is later used to separate the filename from the grep
- output so it is fine to add it here instead of a few lines later.
+ MSVC: xz: Make file_io.c and file_io.h compatible with MSVC.
- The old code also wasn't POSIX compliant as it used \n in the
- replacement section of the s-command. Using \<newline> is the
- POSIX compatible method.
-
- LC_ALL=C was added to the two critical sed commands. POSIX sed
- manual recommends it when using sed to manipulate pathnames
- because in other locales invalid multibyte sequences might
- cause issues with some sed implementations. In case of GNU sed,
- these particular sed scripts wouldn't have such problems but some
- other scripts could have, see:
-
- info '(sed)Locale Considerations'
-
- This vulnerability was discovered by:
- cleemy desu wayo working with Trend Micro Zero Day Initiative
-
- Thanks to Jim Meyering and Paul Eggert discussing the different
- ways to fix this and for coordinating the patch release schedule
- with gzip.
+ Thanks to Kelvin Lee for the original patches
+ and testing the modifications I made.
- src/scripts/xzgrep.in | 20 ++++++++++++--------
- 1 file changed, 12 insertions(+), 8 deletions(-)
+ src/xz/file_io.c | 26 ++++++++++++++++++++++++++
+ src/xz/file_io.h | 10 ++++++++++
+ 2 files changed, 36 insertions(+)
-commit bd93b776c1bd15e90661033c918cdeb354dbcc38
+commit c660b8d78b7bda43b12b285550d8c70e8ccec698
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-03-26 01:02:44 +0200
+Date: 2023-09-05 21:33:35 +0300
- liblzma: Fix a deadlock in threaded decoder.
-
- If a worker thread has consumed all input so far and it's
- waiting on thr->cond and then the main thread enables
- partial update for that thread, the code used to deadlock.
- This commit allows one dummy decoding pass to occur in this
- situation which then also does the partial update.
-
- As part of the fix, this moves thr->progress_* updates to
- avoid the second thr->mutex locking.
+ MSVC: xz: Use GetTickCount64() to implement mytime_now().
- Thanks to Jia Tan for finding, debugging, and reporting the bug.
+ It's available since Windows Vista.
- src/liblzma/common/stream_decoder_mt.c | 71 +++++++++++++++++++++++++---------
- 1 file changed, 52 insertions(+), 19 deletions(-)
+ src/xz/mytime.c | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+commit 5c6f892d411670e3060f4bc309402617a209e57c
+Author: Kelvin Lee <kiyolee@gmail.com>
+Date: 2023-09-05 15:05:09 +0300
+
+ MSVC: xz: Use _stricmp() instead of strcasecmp() in suffix.c.
+
+ src/xz/suffix.c | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+commit e241051f50044259d174e8b4633dd9a1c4478408
+Author: Kelvin Lee <kiyolee@gmail.com>
+Date: 2023-09-05 15:01:10 +0300
+
+ MSVC: xz: Use _isatty() from <io.h> to implement isatty().
+
+ src/xz/message.c | 5 +++++
+ src/xz/util.c | 5 +++++
+ 2 files changed, 10 insertions(+)
+
+commit d14bba8fc2be02a9fed8c9bcaaf61103451755f8
+Author: Kelvin Lee <kiyolee@gmail.com>
+Date: 2023-09-05 15:10:31 +0300
+
+ MSVC: xz: Use _fileno() instead of fileno().
+
+ src/xz/private.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit c4edd367678e6a38c42b149856159bf417da7fe1
+Author: Kelvin Lee <kiyolee@gmail.com>
+Date: 2023-09-05 15:00:07 +0300
+
+ MSVC: xzdec: Use _fileno and _setmode.
-commit e0394e94230f208682ac1e1f4c41f22f9ad79916
+ src/xzdec/xzdec.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit cfd1054b9b539ee92524901e95d7bb5a1fe670a0
+Author: Kelvin Lee <kiyolee@gmail.com>
+Date: 2023-09-05 14:37:50 +0300
+
+ MSVC: Don't #include <unistd.h>.
+
+ lib/getopt.c | 4 +++-
+ lib/getopt.in.h | 4 +++-
+ src/xz/private.h | 5 ++++-
+ src/xzdec/xzdec.c | 5 ++++-
+ 4 files changed, 14 insertions(+), 4 deletions(-)
+
+commit adef92f23563a2cc088b31ddee9040ecc96bc996
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-03-23 16:34:00 +0200
+Date: 2023-09-19 14:03:45 +0300
Update THANKS.
THANKS | 1 +
1 file changed, 1 insertion(+)
-commit 487c77d48760564b1949c5067630b675b87be4de
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-03-23 16:28:55 +0200
+commit 953e775941a25bfcfa353f802b13e66acb1edf2c
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-09-14 21:13:23 +0800
- liblzma: Threaded decoder: Don't stop threads on LZMA_TIMED_OUT.
-
- LZMA_TIMED_OUT is not an error and thus stopping threads on
- LZMA_TIMED_OUT breaks the decoder badly.
+ CI: Enable CLMUL in address sanitization test.
- Thanks to Jia Tan for finding the bug and for the patch.
+ The crc64_clmul() function should be ignored by the address sanitizer
+ now so these builds should still pass.
- src/liblzma/common/stream_decoder_mt.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ .github/workflows/ci.yml | 12 ++++--------
+ 1 file changed, 4 insertions(+), 8 deletions(-)
-commit 6c6da57ae2aa962aabde6892442227063d87e88c
+commit f167e79bc98f3f56af2e767b83aa81c2d2b9ed77
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-03-07 00:36:16 +0200
+Date: 2023-09-14 16:35:46 +0300
- xz: Add initial support for threaded decompression.
-
- If threading support is enabled at build time, this will
- use lzma_stream_decoder_mt() even for single-threaded mode.
- With memlimit_threading=0 the behavior should be identical.
-
- This needs some work like adding --memlimit-threading=LIMIT.
-
- The original patch from Sebastian Andrzej Siewior included
- a method to get currently available RAM on Linux. It might
- be one way to go but as it is Linux-only, the available-RAM
- approach needs work for portability or using a fallback method
- on other OSes.
-
- The man page wasn't updated yet.
+ Update THANKS.
- src/xz/coder.c | 36 +++++++++++++++++++++++++++++++++++-
- 1 file changed, 35 insertions(+), 1 deletion(-)
+ THANKS | 1 +
+ 1 file changed, 1 insertion(+)
-commit 4cce3e27f529af33e0e7749a8cbcec59954946b5
+commit 4f44ef86758a41a8ec814096f4cb6ee6de04c82e
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-03-06 23:36:20 +0200
+Date: 2023-09-14 16:34:07 +0300
- liblzma: Add threaded .xz decompressor.
-
- I realize that this is about a decade late.
+ liblzma: Mark crc64_clmul() with __attribute__((__no_sanitize_address__)).
- Big thanks to Sebastian Andrzej Siewior for the original patch.
- I made a bunch of smaller changes but after a while quite a few
- things got rewritten. So any bugs in the commit were created by me.
+ Thanks to Agostino Sarubbo.
+ Fixes: https://github.com/tukaani-project/xz/issues/62
- src/liblzma/api/lzma/container.h | 90 +-
- src/liblzma/common/Makefile.inc | 5 +
- src/liblzma/common/common.h | 4 +
- src/liblzma/common/stream_decoder_mt.c | 1814 ++++++++++++++++++++++++++++++++
- src/liblzma/liblzma.map | 1 +
- 5 files changed, 1907 insertions(+), 7 deletions(-)
+ src/liblzma/check/crc64_fast.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
-commit 717631b9788dc9c100ee0c87d3c14a2782638ff4
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-03-06 16:54:23 +0200
+commit 7379bb3eed428c0ae734d0cc4a1fd04359d53f08
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-09-12 22:36:12 +0800
- liblzma: Fix docs: lzma_block_decoder() cannot return LZMA_UNSUPPORTED_CHECK.
+ CMake: Fix time.h checks not running on second CMake run.
- If Check is unsupported, it will be silently ignored.
- It's the caller's job to handle it.
+ If CMake was configured more than once, HAVE_CLOCK_GETTIME and
+ HAVE_CLOCK_MONOTONIC would not be set as compile definitions. The check
+ for librt being needed to provide HAVE_CLOCK_GETTIME was also
+ simplified.
- src/liblzma/api/lzma/block.h | 3 ---
- 1 file changed, 3 deletions(-)
+ CMakeLists.txt | 18 ++++++++++--------
+ 1 file changed, 10 insertions(+), 8 deletions(-)
-commit 1a4bb97a00936535e30ac61945aeee38882b5d1a
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-03-06 16:41:19 +0200
+commit 5d691fe58286b92d704c0dc5cd0c4df22881c6c6
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-09-12 22:34:06 +0800
- liblzma: Add new output queue (lzma_outq) features.
-
- Add lzma_outq_clear_cache2() which may leave one buffer allocated
- in the cache.
-
- Add lzma_outq_outbuf_memusage() to get the memory needed for
- a single lzma_outbuf. This is now used internally in outqueue.c too.
-
- Track both the total amount of memory allocated and the amount of
- memory that is in active use (not in cache).
-
- In lzma_outbuf, allow storing the current input position that
- matches the current output position. This way the main thread
- can notice when no more output is possible without first providing
- more input.
+ CMake: Fix unconditionally defining HAVE_CLOCK_MONOTONIC.
- Allow specifying return code for lzma_outq_read() in a finished
- lzma_outbuf.
+ If HAVE_CLOCK_GETTIME was defined, then HAVE_CLOCK_MONOTONIC was always
+ added as a compile definition even if the check for it failed.
- src/liblzma/common/outqueue.c | 43 +++++++++++++++++++++++++++++++++++-------
- src/liblzma/common/outqueue.h | 44 ++++++++++++++++++++++++++++++++++++++++++-
- 2 files changed, 79 insertions(+), 8 deletions(-)
+ CMakeLists.txt | 8 +++-----
+ 1 file changed, 3 insertions(+), 5 deletions(-)
-commit ddbc6f58c2de388eed24cd7ea91b523d397da5f4
+commit eccf12866527b8d24c7d7f92f755142be8ef9b11
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-03-06 15:18:58 +0200
+Date: 2023-08-31 19:50:05 +0300
- liblzma: Index hash: Change return value type of hash_append() to void.
+ xz: Refactor thousand separator detection and disable it on MSVC.
+
+ Now the two variations of the format strings are created with
+ a macro, and the whole detection code can be easily disabled
+ on platforms where thousand separator formatting is known to
+ not work (MSVC has no support, and on DJGPP 2.05 it can have
+ problems in some cases).
- src/liblzma/common/index_hash.c | 11 +++++------
- 1 file changed, 5 insertions(+), 6 deletions(-)
+ src/xz/util.c | 89 ++++++++++++++++++++++++++++++-----------------------------
+ 1 file changed, 45 insertions(+), 44 deletions(-)
-commit 20e7a33e2d59c6a814447d3991f21e2702174b20
+commit f7093cd9d130477c234b40aeda613964171f8f21
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-02-22 03:42:57 +0200
+Date: 2023-08-31 18:14:43 +0300
- liblzma: Minor addition to lzma_vli_size() API doc.
+ xz: Fix a too relaxed assertion and remove uses of SSIZE_MAX.
- Thanks to Jia Tan.
+ SSIZE_MAX isn't readily available on MSVC. Removing it means
+ that there is one thing less to worry when porting to MSVC.
- src/liblzma/api/lzma/vli.h | 2 ++
- 1 file changed, 2 insertions(+)
+ src/xz/file_io.c | 5 ++---
+ src/xz/file_io.h | 4 ++--
+ 2 files changed, 4 insertions(+), 5 deletions(-)
-commit 4f78f5fcf63592f2d77e921cfe0d5de300867374
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-02-22 02:04:18 +0200
+commit 74c3449d8b816a724b12ebce7417e00fb597309a
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-08-28 23:14:45 +0800
- liblzma: Check the return value of lzma_index_append() in threaded encoder.
+ Tests: Improve invalid unpadded size check in test_lzma_index_append().
- If lzma_index_append() failed (most likely memory allocation failure)
- it could have gone unnoticed and the resulting .xz file would have
- an incorrect Index. Decompressing such a file would produce the
- correct uncompressed data but then an error would occur when
- verifying the Index field.
+ This check was extended to test the code added to fix a failing assert
+ in ae5c07b22a6b3766b84f409f1b6b5c100469068a.
- src/liblzma/common/stream_encoder_mt.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
+ tests/test_index.c | 26 +++++++++++++++++++++++---
+ 1 file changed, 23 insertions(+), 3 deletions(-)
-commit 5313ad66b40aab822ddca3e9905254cb99a4080d
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-02-22 01:37:39 +0200
+commit 2544274a8b8a27f4ea6c457d2c4c32eb1e4cd336
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-08-28 21:54:41 +0800
+
+ Tests: Improve comments in test_index.c.
+
+ tests/test_index.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 49be29d6380b94e6fb26e511dd2cdbd9afce0f8b
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-08-28 21:52:54 +0800
Update THANKS.
THANKS | 1 +
1 file changed, 1 insertion(+)
-commit 865e0a3689a25a7ee8eecae1a34c1775e3aa676e
-Author: Ed Maste <emaste@FreeBSD.org>
-Date: 2022-02-11 15:25:46 +0000
+commit 721e3d9f7a82f59f32795d5fb97e0210d1aa839a
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-08-28 21:50:16 +0800
- liblzma: Use non-executable stack on FreeBSD as on Linux
+ liblzma: Update assert in vli_ceil4().
+
+ The argument to vli_ceil4() should always guarantee the return value
+ is also a valid lzma_vli. Thus the highest three valid lzma_vli values
+ are invalid arguments. All uses of the function ensure this so the
+ assert is updated to match this.
- src/liblzma/check/crc32_x86.S | 4 ++--
- src/liblzma/check/crc64_x86.S | 4 ++--
- 2 files changed, 4 insertions(+), 4 deletions(-)
+ src/liblzma/common/index.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 1c9a5786d206b4abc8e427326651c8174baea753
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-02-20 20:36:27 +0200
+commit ae5c07b22a6b3766b84f409f1b6b5c100469068a
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-08-28 21:31:25 +0800
- liblzma: Make Block decoder catch certain types of errors better.
+ liblzma: Add overflow check for Unpadded size in lzma_index_append().
- Now it limits the input and output buffer sizes that are
- passed to a raw decoder. This way there's no need to check
- if the sizes can grow too big or overflow when updating
- Compressed Size and Uncompressed Size counts. This also means
- that a corrupt file cannot cause the raw decoder to process
- useless extra input or output that would exceed the size info
- in Block Header (and thus cause LZMA_DATA_ERROR anyway).
+ This was not a security bug since there was no path to overflow
+ UINT64_MAX in lzma_index_append() or when it calls index_file_size().
+ The bug was discovered by a failing assert() in vli_ceil4() when called
+ from index_file_size() when unpadded_sum (the sum of the compressed size
+ of current Stream and the unpadded_size parameter) exceeds LZMA_VLI_MAX.
- More importantly, now the size information is verified more
- carefully in case raw decoder returns LZMA_OK. This doesn't
- really matter with the current single-threaded .xz decoder
- as the errors would be detected slightly later anyway. But
- this helps avoiding corner cases in the upcoming threaded
- decompressor, and it might help other Block decoder uses
- outside liblzma too.
+ Previously, the unpadded_size parameter was checked to be not greater
+ than UNPADDED_SIZE_MAX, but no check was done once compressed_base was
+ added.
- The test files bad-1-lzma2-{9,10,11}.xz test these conditions.
- With the single-threaded .xz decoder the only difference is
- that LZMA_DATA_ERROR is detected in a difference place now.
+ This could not have caused an integer overflow in index_file_size() when
+ called by lzma_index_append(). The calculation for file_size breaks down
+ into the sum of:
+
+ - Compressed base from all previous Streams
+ - 2 * LZMA_STREAM_HEADER_SIZE (size of the current Streams header and
+ footer)
+ - stream_padding (can be set by lzma_index_stream_padding())
+ - Compressed base from the current Stream
+ - Unpadded size (parameter to lzma_index_append())
+
+ The sum of everything except for Unpadded size must be less than
+ LZMA_VLI_MAX. This is guarenteed by overflow checks in the functions
+ that can set these values including lzma_index_stream_padding(),
+ lzma_index_append(), and lzma_index_cat(). The maximum value for
+ Unpadded size is enforced by lzma_index_append() to be less than or
+ equal UNPADDED_SIZE_MAX. Thus, the sum cannot exceed UINT64_MAX since
+ LZMA_VLI_MAX is half of UINT64_MAX.
+
+ Thanks to Joona Kannisto for reporting this.
+
+ src/liblzma/common/index.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
- src/liblzma/common/block_decoder.c | 79 ++++++++++++++++++++++++++------------
- 1 file changed, 54 insertions(+), 25 deletions(-)
+commit 1057765aaabfe0f1397b8094531846655376ae38
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-08-28 22:18:29 +0800
-commit 555de11873eb00c9b94a8be70645db502e5a9dbd
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-02-20 19:38:55 +0200
+ Translations: Update the Esperanto translation.
- Tests: Add bad-1-lzma2-11.xz.
+ po/eo.po | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
- tests/files/README | 5 +++++
- tests/files/bad-1-lzma2-11.xz | Bin 0 -> 64 bytes
- 2 files changed, 5 insertions(+)
+commit f2e94d064f305bb8ad77ca70f91d93e55f5cf856
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-08-26 20:10:23 +0800
-commit f0da507f22e7f4e3edb75b45b74d344244ca03fb
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-02-18 18:51:10 +0200
+ Translations: Update the Esperanto translation.
+
+ po/eo.po | 47 +++++++++++++++++++++++++++++------------------
+ 1 file changed, 29 insertions(+), 18 deletions(-)
+
+commit 2b871f4dbffe3801d0da3f89806b5935f758d5f3
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-08-09 20:55:36 +0800
- Translations: Fix po4a failure with the French man page translations.
+ Docs: Update INSTALL for --enable-threads method win95.
- Thanks to Mario Blättermann for the patch.
+ The Autotools build allows win95 threads and --enable-small together now
+ if the compiler supports __attribute__((__constructor__)).
- po4a/fr_FR.po | 6 ++++--
+ INSTALL | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
-commit f7711d228c3c32395460c82498c60a9f730d0239
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-02-07 01:14:37 +0200
+commit 356ad5b26b4196f085ce3afa1869154ca81faad8
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-08-09 20:54:15 +0800
+
+ CMake: Conditionally allow win95 threads and --enable-small.
- Translations: Add French translation of man pages.
+ CMakeLists.txt | 28 ++++++++++++++++++++--------
+ 1 file changed, 20 insertions(+), 8 deletions(-)
+
+commit de574404c4c2f87aca049f232c38526e3ce092aa
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-08-09 20:35:16 +0800
+
+ Build: Conditionally allow win95 threads and --enable-small.
- This matches xz-utils 5.2.5-2 in Debian.
+ When the compiler supports __attribute__((__constructor__))
+ mythread_once() is never used, even with --enable-small. A configuration
+ with win95 threads and --enable-small will compile and be thread safe so
+ it can be allowed.
- The translation was done by "bubu", proofread by the debian-l10n-french
- mailing list contributors, and submitted to me on the xz-devel mailing
- list by Jean-Pierre Giraud. Thanks to everyone!
+ This isn't a very common configuration since MSVC does not support
+ __attribute__((__constructor__)), but MINGW32 and CLANG32 environments
+ for MSYS2 can use win95 threads and have
+ __attribute__((__constructor__)) support.
- po4a/fr_FR.po | 3541 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- po4a/po4a.conf | 2 +-
- 2 files changed, 3542 insertions(+), 1 deletion(-)
+ configure.ac | 21 +++++++++++++--------
+ 1 file changed, 13 insertions(+), 8 deletions(-)
-commit 6468f7e41a8e9c611e4ba8d34e2175c5dacdbeb4
-Author: jiat75 <jiat0218@gmail.com>
-Date: 2022-01-28 20:47:55 +0800
+commit 6bf33b704cd31dccf25e68480464aa22d3fcad5a
+Author: Jamaika1 <lukaszcz18@wp.pl>
+Date: 2023-08-08 14:07:59 +0200
- liblzma: Add NULL checks to LZMA and LZMA2 properties encoders.
+ mythread.h: Fix typo error in Vista threads mythread_once().
- Previously lzma_lzma_props_encode() and lzma_lzma2_props_encode()
- assumed that the options pointers must be non-NULL because the
- with these filters the API says it must never be NULL. It is
- good to do these checks anyway.
+ The "once_" variable was accidentally referred to as just "once". This
+ prevented building with Vista threads when
+ HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR was not defined.
- src/liblzma/lzma/lzma2_encoder.c | 3 +++
- src/liblzma/lzma/lzma_encoder.c | 3 +++
- 2 files changed, 6 insertions(+)
+ src/common/mythread.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 2523c30705f49eabd27b854aa656ae87cc224808
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2022-02-06 23:19:32 +0200
+commit 80cb961e5380a3878246d41341ff91378ca59e05
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-08-04 22:17:11 +0800
- liblzma: Fix uint64_t vs. size_t confusion.
+ codespell: Add .codespellrc to set default options.
- This broke 32-bit builds due to a pointer type mismatch.
+ The .codespellrc allows setting default options to avoid false positive
+ matches, set additional dictionaries, etc. For now, codespell can be
+ used locally before committing doc and comment changes.
- This bug was introduced with the output-size-limited encoding
- in 625f4c7c99b2fcc4db9e7ab2deb4884790e2e17c.
-
- Thanks to huangqinjin for the bug report.
+ It should help prevent silly errors and fix up commits in the future.
- src/liblzma/rangecoder/range_encoder.h | 11 +++++++----
- 1 file changed, 7 insertions(+), 4 deletions(-)
+ .codespellrc | 24 ++++++++++++++++++++++++
+ 1 file changed, 24 insertions(+)
-commit 2bd36c91d03e03b31a4f12fd0afc100ae32d66e2
-Author: huangqinjin <huangqinjin@gmail.com>
-Date: 2021-12-13 20:49:21 +0800
+commit cd678a6077358935249b64a4a16fe8d17434f9c9
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-08-03 20:10:21 +0800
- CMake: Keep compatible with Windows 95 for 32-bit build.
+ Tests: Style fixes to test_lzip_decoder.c.
- CMakeLists.txt | 12 +++++++++++-
- 1 file changed, 11 insertions(+), 1 deletion(-)
+ tests/test_lzip_decoder.c | 36 ++++++++++++++++++++++++------------
+ 1 file changed, 24 insertions(+), 12 deletions(-)
-commit 2024fbf2794885277d05378d40b2b8015a7c3b40
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-11-13 21:04:05 +0200
+commit 1cac5ed4fa45c9861d745b02d80575cb2ff01d81
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-08-03 15:56:20 +0800
- xzgrep: Update man page timestamp.
+ Translations: Update the Chinese (simplified) translation.
- src/scripts/xzgrep.1 | 2 +-
+ po/zh_CN.po | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-commit 400e7a239a53282cedaad927a41f3463d7f542e5
+commit 16068f6c30b888cdb873f6285af941d00f95741d
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-11-13 18:23:24 +0200
+Date: 2023-08-02 17:15:12 +0300
- Update THANKS.
+ xz: Omit an empty paragraph on the man page.
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ src/xz/xz.1 | 1 -
+ 1 file changed, 1 deletion(-)
-commit 3a512c7787b2642ca946f4adc6e9a0a5d9b0d5a0
-Author: Ville Skyttä <ville.skytta@iki.fi>
-Date: 2021-11-13 10:11:57 +0200
+commit 9ae4371b5106189486e850ce777e40f7b6021c0b
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-08-02 20:30:07 +0800
- xzgrep: use `grep -E/-F` instead of `egrep` and `fgrep`
-
- `egrep` and `fgrep` have been deprecated in GNU grep since 2007, and in
- current post 3.7 Git they have been made to emit obsolescence warnings:
- https://git.savannah.gnu.org/cgit/grep.git/commit/?id=a9515624709865d480e3142fd959bccd1c9372d1
+ Add NEWS for 5.4.4.
- src/scripts/xzgrep.1 | 8 ++++----
- src/scripts/xzgrep.in | 4 ++--
- 2 files changed, 6 insertions(+), 6 deletions(-)
+ NEWS | 43 +++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 43 insertions(+)
-commit edf525e2b1840dcaf377df472c67d8f11f8ace1b
+commit e8c2203b2c76466d8d3387c5212b46151de8e605
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-10-28 23:02:11 +0300
+Date: 2023-08-02 15:19:43 +0300
- Bump the version number for 5.3.2alpha.
+ build-aux/manconv.sh: Fix US-ASCII and UTF-8 output.
+
+ groff defaults to SGR escapes. Using -P-c passes -c to grotty
+ which restores the old behavior. Perhaps there is a better way to
+ get pure plain text output but this works for now.
- src/liblzma/api/lzma/version.h | 2 +-
- src/liblzma/liblzma.map | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
+ build-aux/manconv.sh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit ea8c948655a86290524efe59cff067e06a886709
+commit 9a706167b0d903d92fd134895acb4bc6a5e3e688
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-10-28 22:59:52 +0300
+Date: 2023-08-01 19:10:43 +0300
- Add NEWS for 5.3.2alpha.
+ Update THANKS.
- NEWS | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 86 insertions(+)
+ THANKS | 1 +
+ 1 file changed, 1 insertion(+)
-commit 52435f302f4724157ec50b4210cbe42b285c3cbc
+commit 33e25a0f5650754c38bed640deedefe3b4fec5ef
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-10-27 23:27:48 +0300
+Date: 2023-08-01 18:22:24 +0300
Update THANKS.
THANKS | 1 +
1 file changed, 1 insertion(+)
-commit f2aea1d5a504b2021bf47a238390e4f12bdd518d
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-10-27 23:23:11 +0300
+commit 81db3b889830132334d1f2129bdc93177ac2ca7d
+Author: ChanTsune <41658782+ChanTsune@users.noreply.github.com>
+Date: 2023-08-01 18:17:17 +0300
- xz: Change the coding style of the previous commit.
+ mythread.h: Disable signal functions in builds targeting Wasm + WASI.
- It isn't any better now but it's consistent with
- the rest of the code base.
+ signal.h in WASI SDK doesn't currently provide sigprocmask()
+ or sigset_t. liblzma doesn't need them so this change makes
+ liblzma and xzdec build against WASI SDK. xz doesn't build yet
+ and the tests don't either as tuktest needs setjmp() which
+ isn't (yet?) implemented in WASI SDK.
+
+ Closes: https://github.com/tukaani-project/xz/pull/57
+ See also: https://github.com/tukaani-project/xz/pull/56
+
+ (The original commit was edited a little by Lasse Collin.)
- src/xz/file_io.c | 11 ++++++-----
- 1 file changed, 6 insertions(+), 5 deletions(-)
+ src/common/mythread.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 892b16cc282f5b4e1c49871b326f4db25c5b4d81
-Author: Alexander Bluhm <alexander.bluhm@gmx.net>
-Date: 2021-10-05 23:33:16 +0200
+commit 71c638c611324e606d324c8189fef8fe79db6991
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-08-01 21:58:51 +0800
- xz: Avoid fchown(2) failure.
+ Add newline to end of .gitignore.
- OpenBSD does not allow to change the group of a file if the user
- does not belong to this group. In contrast to Linux, OpenBSD also
- fails if the new group is the same as the old one. Do not call
- fchown(2) in this case, it would change nothing anyway.
-
- This fixes an issue with Perl Alien::Build module.
- https://github.com/PerlAlien/Alien-Build/issues/62
+ Newline was accidentally removed in commit
+ 01cbb7f023ee7fda8ddde04bd17cf7d3c2418706.
- src/xz/file_io.c | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
+ .gitignore | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 2b509c868cae3988bf21cd693fbf9021cdc85628
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-09-17 17:31:11 +0300
+commit 42df7c7aa1cca385e509eb33c65136e61890f0bf
+Author: Dimitri Papadopoulos Orfanos <3234522+DimitriPapadopoulos@users.noreply.github.com>
+Date: 2023-07-31 14:02:21 +0200
- liblzma: Fix liblzma.map for the lzma_microlzma_* symbols.
-
- This should have been part of d267d109c370a40b502e73f8664b154b15e4f253.
-
- Thanks to Gao Xiang.
+ Docs: Fix typos found by codespell
- src/liblzma/liblzma.map | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ CMakeLists.txt | 4 ++--
+ NEWS | 2 +-
+ configure.ac | 2 +-
+ src/liblzma/api/lzma/container.h | 4 ++--
+ src/liblzma/api/lzma/filter.h | 2 +-
+ src/liblzma/api/lzma/lzma12.h | 4 ++--
+ src/liblzma/common/block_buffer_encoder.c | 2 +-
+ src/liblzma/common/common.h | 2 +-
+ src/liblzma/common/file_info.c | 2 +-
+ src/liblzma/common/lzip_decoder.c | 2 +-
+ src/liblzma/common/stream_decoder_mt.c | 8 ++++----
+ src/liblzma/common/string_conversion.c | 6 +++---
+ src/liblzma/lz/lz_encoder.h | 2 +-
+ src/liblzma/lzma/lzma_encoder.c | 4 ++--
+ src/xz/hardware.c | 4 ++--
+ tests/test_filter_flags.c | 4 ++--
+ tests/test_index.c | 2 +-
+ tests/test_vli.c | 2 +-
+ 18 files changed, 29 insertions(+), 29 deletions(-)
-commit cacb06a954b58255dfc084a0bc9708f43a0fd6d6
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-09-09 22:21:07 +0300
+commit 01cbb7f023ee7fda8ddde04bd17cf7d3c2418706
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-26 20:26:23 +0800
- Update THANKS.
+ Update .gitignore.
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ .gitignore | 4 ++++
+ 1 file changed, 4 insertions(+)
-commit 6928aac9da6ba612780b9f72ba1d6ecbe1e8b54e
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-09-09 21:41:51 +0300
+commit f97a1afd564c48ad9cb94682e10972a72e11fa08
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-28 22:03:08 +0800
- liblzma: Use _MSVC_LANG to detect when "noexcept" can be used with MSVC.
-
- By default, MSVC always sets __cplusplus to 199711L. The real
- C++ standard version is available in _MSVC_LANG (or one could
- use /Zc:__cplusplus to set __cplusplus correctly).
+ CMake: Conditionally allow the creation of broken symlinks.
- Fixes <https://sourceforge.net/p/lzmautils/discussion/708858/thread/f6bc3b108a/>.
+ The CMake build will try to create broken symlinks on Unix and Unix-like
+ platforms. Cygwin and MSYS2 are Unix-like, but may not be able to create
+ broken symlinks. The value of the CYGWIN or MSYS environment variables
+ determine if broken symlinks are valid.
- Thanks to Dan Weiss.
+ The default for MSYS2 does not allow for broken symlinks, so the CMake
+ build has been broken for MSYS2 since commit
+ 80a1a8bb838842a2be343bd88ad1462c21c5e2c9.
- src/liblzma/api/lzma.h | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
+ CMakeLists.txt | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++-----
+ 1 file changed, 75 insertions(+), 7 deletions(-)
-commit d267d109c370a40b502e73f8664b154b15e4f253
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-09-05 20:38:12 +0300
+commit 7190f4cc7c9ade5b9b3675d0cbfa3b6d6ec9cb4f
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-28 21:56:48 +0800
- liblzma: Rename EROFS LZMA to MicroLZMA.
+ CI: Fix windows-ci dependency installation.
- It still exists primarily for EROFS but MicroLZMA is
- a more generic name (that hopefully doesn't clash with
- something that already exists).
+ All of the MSYS2 environments need make, and it does not come with the
+ toolchain package. The toolchain package will install the needed
+ compiler toolchains since without this package CMake cannot properly
+ generate the Makefiles.
- src/liblzma/api/lzma/container.h | 33 +++++++++++++---------
- src/liblzma/common/Makefile.inc | 4 +--
- .../{erofs_decoder.c => microlzma_decoder.c} | 32 ++++++++++-----------
- .../{erofs_encoder.c => microlzma_encoder.c} | 30 ++++++++++----------
- 4 files changed, 52 insertions(+), 47 deletions(-)
+ .github/workflows/windows-ci.yml | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
-commit 3247e95115acb95bc27f41e8cf4501db5b0b4309
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-06-04 19:02:38 +0300
+commit a048f472cd9a2245265cb292853cbbcdd4f02001
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-28 21:54:22 +0800
- xzdiff: Update the man page about the exit status.
+ CI: Update ci_build.sh CMake to always make Unix Makefiles.
- This was forgotten from 194029ffaf74282a81f0c299c07f73caca3232ca.
+ The default for many of the MSYS2 environments is for CMake to create
+ Ninja build files. This would complicate the build script since we would
+ need a different command to run the tests. Its simpler to always use
+ Unix Makefiles so that "make test" is always a usable target for
+ testing.
- src/scripts/xzdiff.1 | 4 ++--
+ build-aux/ci_build.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-commit 96f5a28a46fc93ac4e296808ac0f8631d05498bc
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-06-04 18:52:48 +0300
+commit 7870396a0ca945473aa0d1d790f4cbef456610bd
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-25 20:17:23 +0800
- xzless: Fix less(1) version detection when it contains a dot.
-
- Sometimes the version number from "less -V" contains a dot,
- sometimes not. xzless failed detect the version number when
- it does contain a dot. This fixes it.
+ CI: Test CMake builds and test framework with MSYS2.
+
+ .github/workflows/windows-ci.yml | 32 ++++++++++++++++++++------------
+ 1 file changed, 20 insertions(+), 12 deletions(-)
+
+commit 6497d1f8875cb7e3007f714336cc09c06fed235b
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-25 20:14:53 +0800
+
+ CI: Windows CI rename system matrix variable -> msys2_env.
- Thanks to nick87720z for reporting this. Apparently it had been
- reported here <https://bugs.gentoo.org/489362> in 2013.
+ Calling the MSYS2 environment "system" was a bit vague and should be
+ more specific.
- src/scripts/xzless.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ .github/workflows/windows-ci.yml | 15 +++++----------
+ 1 file changed, 5 insertions(+), 10 deletions(-)
-commit 5fb5212d816addbc523d0798cb482fdd0484f8fa
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-04-11 19:58:10 +0300
+commit 785e4121d9b2921ad36bd3af1cf61fa20a9265bd
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-24 23:11:45 +0800
- Update THANKS.
+ CI: Add Clang64 MSYS2 environment to Windows CI.
- THANKS | 2 ++
- 1 file changed, 2 insertions(+)
+ .github/workflows/windows-ci.yml | 1 +
+ 1 file changed, 1 insertion(+)
-commit fc3d3a7296ef58bb799a73943636b8bfd95339f7
-Author: Ivan A. Melnikov <iv@altlinux.org>
-Date: 2021-04-09 11:45:10 +0300
+commit d9166b52cf3458a4da3eb92224837ca8fc208d79
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-24 21:43:44 +0800
- Reduce maximum possible memory limit on MIPS32
-
- Due to architectural limitations, address space available to a single
- userspace process on MIPS32 is limited to 2 GiB, not 4, even on systems
- that have more physical RAM -- e.g. 64-bit systems with 32-bit
- userspace, or systems that use XPA (an extension similar to x86's PAE).
+ liblzma: Prevent an empty translation unit in Windows builds.
- So, for MIPS32, we have to impose stronger memory limits. I've chosen
- 2000MiB to give the process some headroom.
+ To workaround Automake lacking Windows resource compiler support, an
+ empty source file is compiled to overwrite the resource files for static
+ library builds. Translation units without an external declaration are
+ not allowed by the C standard and result in a warning when used with
+ -Wempty-translation-unit (Clang) or -pedantic (GCC).
- src/xz/hardware.c | 6 ++++++
- 1 file changed, 6 insertions(+)
+ src/liblzma/Makefile.am | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
-commit e7da44d5151e21f153925781ad29334ae0786101
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-02-13 23:31:27 +0200
+commit db5019d691f980d622fb56fdcf383af2c3519c98
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-22 18:37:56 +0800
- CMake: Use interface library for better FindLibLZMA compatibility.
-
- https://www.mail-archive.com/xz-devel@tukaani.org/msg00446.html
-
- Thanks to Markus Rickert.
+ Translations: Update the Vietnamese translation.
- CMakeLists.txt | 11 +++++++++--
- 1 file changed, 9 insertions(+), 2 deletions(-)
+ po/vi.po | 45 ++++++++++++++++++++++++++++-----------------
+ 1 file changed, 28 insertions(+), 17 deletions(-)
-commit a61dd82ada39030f41b4ffca9ea551714908bedc
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-01-30 18:36:04 +0200
+commit f3a055f762ba5b71b746fc2d44a6ababde2c61b5
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-22 14:55:42 +0800
- CMake: Try to improve compatibility with the FindLibLZMA module.
-
- The naming conflict with FindLibLZMA module gets worse.
- Not avoiding it in the first place was stupid.
-
- Normally find_package(LibLZMA) will use the module and
- find_package(liblzma 5.2.5 REQUIRED CONFIG) will use the config
- file even with a case insensitive file system. However, if
- CMAKE_FIND_PACKAGE_PREFER_CONFIG is TRUE and the file system
- is case insensitive, find_package(LibLZMA) will find our liblzma
- config file instead of using FindLibLZMA module.
-
- One big problem with this is that FindLibLZMA uses
- LibLZMA::LibLZMA and we use liblzma::liblzma as the target
- name. With target names CMake happens to be case sensitive.
- To workaround this, this commit adds
-
- add_library(LibLZMA::LibLZMA ALIAS liblzma::liblzma)
+ CI: Add Windows runner for Autotools builds with MSYS2.
- to the config file. Then both spellings work.
+ Only a subset of the tests run by the Linux and MacOS Autotools builds
+ are run. The most interesting tests are the ones that disable threads,
+ encoders, and decoders.
- To make the behavior consistent between case sensitive and
- insensitive file systems, the config and related files are
- renamed from liblzmaConfig.cmake to liblzma-config.cmake style.
- With this style CMake looks for lowercase version of the package
- name so find_package(LiBLzmA 5.2.5 REQUIRED CONFIG) will work
- to find our config file.
+ The Windows runner will only be run manually since these tests will
+ likely take much longer than the Linux and MacOS runners. This runner
+ should be used before merging any large features and before releases.
- There are other differences between our config file and
- FindLibLZMA so it's still possible that things break for
- reasons other than the spelling of the target name. Hopefully
- those situations aren't too common.
+ Currently the clang64 environment fails to due to a warning and
+ -Werror is enabled for the CI tests. This is still an early version
+ since the CMake build can be done for MSVC and optionally each of the
+ MSYS2 environments. GitHub does not allow manually running the CI tests
+ unless the workflow is checked on the default branch so checking in a
+ minimum version is a good idea.
- When the config file is available, it should always give as good or
- better results as FindLibLZMA so this commit doesn't affect the
- recommendation to use find_package(liblzma 5.2.5 REQUIRED CONFIG)
- which explicitly avoids FindLibLZMA.
+ Thanks to Arthur S for the original proposing the original patch.
- Thanks to Markus Rickert.
+ Closes: https://github.com/tukaani-project/xz/pull/34
- CMakeLists.txt | 21 +++++++++++++--------
- 1 file changed, 13 insertions(+), 8 deletions(-)
+ .github/workflows/windows-ci.yml | 119 +++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 119 insertions(+)
-commit 5b7bc1b8ae766a76710ca1b99f909cf52c697f05
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-01-29 21:19:43 +0200
+commit 556536a3525df9e5ed78b8c7057991cfa9edfac8
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-21 22:11:01 +0800
- Update THANKS.
+ CI: Add argument to ci_build.sh to pass flags to autogen.sh.
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ build-aux/ci_build.sh | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
-commit 6c6f0db340dcb8bb424411cedba713405d55f6b8
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-01-29 21:19:08 +0200
+commit 39a32d36fc465c4e70f13192eea380e518ba6e8a
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-21 18:05:44 +0800
- liblzma: Fix unitialized variable.
-
- This was introduced two weeks ago in the commit
- 625f4c7c99b2fcc4db9e7ab2deb4884790e2e17c.
+ Tests: Skip .lz files in test_files.sh if not configured.
- Thanks to Nathan Moinvaziri.
+ Previously if the lzip decoder was not configured then test_files.sh
+ would pass the lzip tests instead of skipping them.
+
+ tests/test_files.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
- src/liblzma/lzma/lzma_encoder.c | 1 +
+commit 194d12724b30fe42789d12a0184f9d412c449347
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-20 22:11:13 +0800
+
+ Tests: Add ARM64 filter test to test_compress.sh.
+
+ tests/test_compress.sh | 1 +
1 file changed, 1 insertion(+)
-commit bb1d5c1fdd30550d4221ecd336e0be1206132a5c
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-01-24 22:32:41 +0200
+commit d850365c444368102c69beaddf849ed463c33467
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-20 20:30:05 +0800
- Tests: Add bad-1-lzma2-10.xz and also modify -9.xz.
+ Translations: Update the Croatian translation.
- tests/files/README | 11 +++++++++--
- tests/files/bad-1-lzma2-10.xz | Bin 0 -> 60 bytes
- tests/files/bad-1-lzma2-9.xz | Bin 72 -> 72 bytes
- 3 files changed, 9 insertions(+), 2 deletions(-)
+ po/hr.po | 49 ++++++++++++++++++++++++++++++-------------------
+ 1 file changed, 30 insertions(+), 19 deletions(-)
-commit 6b8abc84a5469792e0355d0bfc0784d41cfdfef7
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-01-24 19:22:35 +0200
+commit 24049eb7acf6d42a60f00efe4e7289fe8e1797fe
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-20 20:28:32 +0800
- liblzma: Fix a wrong comment in stream_encoder_mt.c.
+ Translations: Update the Korean man page translations.
- src/liblzma/common/stream_encoder_mt.c | 10 +++++++---
- 1 file changed, 7 insertions(+), 3 deletions(-)
+ po4a/ko.po | 1255 ++++++++++++++++++++++++++++++------------------------------
+ 1 file changed, 629 insertions(+), 626 deletions(-)
-commit 939fc5ed654aac25fe0c8684b2df8dbeadb2de1e
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-01-24 18:51:51 +0200
+commit 4d4a4fa07de6cb9d913fb2f97712fddda2527b49
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-20 20:25:24 +0800
- Tests: Add bad-1-lzma2-9.xz.
+ Translations: Update the Korean translation.
- tests/files/README | 4 ++++
- tests/files/bad-1-lzma2-9.xz | Bin 0 -> 72 bytes
- 2 files changed, 4 insertions(+)
+ po/ko.po | 45 ++++++++++++++++++++++++++++-----------------
+ 1 file changed, 28 insertions(+), 17 deletions(-)
-commit fdd30032f8531ac89519b48c21d810ecf06825f6
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-01-24 17:02:00 +0200
+commit 237f06d9c55cf438a7538a598354bcf103f23711
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-20 20:24:05 +0800
- Tests: Add bad-1-check-crc32-2.xz.
+ Translations: Update the Polish translation.
- tests/files/README | 7 +++++++
- tests/files/bad-1-check-crc32-2.xz | Bin 0 -> 72 bytes
- 2 files changed, 7 insertions(+)
+ po/pl.po | 47 +++++++++++++++++++++++++++++------------------
+ 1 file changed, 29 insertions(+), 18 deletions(-)
-commit db465419ae26ec7fb9b9472183911ff521620c77
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-01-17 19:20:50 +0200
+commit 80c2c832136656d5ac7a1bca8bc42d95e13d281a
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-20 20:22:23 +0800
- liblzma: In EROFS LZMA decoder, verify that comp_size matches at the end.
-
- When the uncompressed size is known to be exact, after decompressing
- the stream exactly comp_size bytes of input must have been consumed.
- This is a minor improvement to error detection.
+ Translations: Update the German man page translations.
- src/liblzma/common/erofs_decoder.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
+ po4a/de.po | 1255 ++++++++++++++++++++++++++++++------------------------------
+ 1 file changed, 629 insertions(+), 626 deletions(-)
-commit 774cc0118ba2496581cb2621505a04bb6598cc75
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-01-17 18:53:34 +0200
+commit fdbde14503ca03069d3649aa51926f5f796b89d8
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-20 20:18:44 +0800
- liblzma: Make EROFS LZMA decoder work when exact uncomp_size isn't known.
-
- The caller must still not specify an uncompressed size bigger
- than the actual uncompressed size.
-
- As a downside, this now needs the exact compressed size.
+ Translations: Update the German translation.
- src/liblzma/api/lzma/container.h | 23 ++++++++---
- src/liblzma/common/erofs_decoder.c | 80 ++++++++++++++++++++++++++++++++++----
- 2 files changed, 91 insertions(+), 12 deletions(-)
+ po/de.po | 47 +++++++++++++++++++++++++++++------------------
+ 1 file changed, 29 insertions(+), 18 deletions(-)
-commit 421b0aa352da244075db10205cf33712f91b9835
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-01-14 20:57:11 +0200
+commit 9f3bf5ff5b2b5cf0b252a2bf381238ca49dc4101
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-20 20:17:10 +0800
- liblzma: Fix missing normalization in rc_encode_dummy().
-
- Without this fix it could attempt to create too much output.
+ Translations: Update the Chinese (simplified) translation.
- src/liblzma/rangecoder/range_encoder.h | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
+ po/zh_CN.po | 47 +++++++++++++++++++++++++++++------------------
+ 1 file changed, 29 insertions(+), 18 deletions(-)
-commit 601ec0311e769fc704daaaa7dac0ca840aff080e
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-01-14 20:07:01 +0200
+commit 376938c588011567c74f1d5a160c0ccce6336d46
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-20 20:15:47 +0800
- liblzma: Add EROFS LZMA encoder and decoder.
-
- Right now this is just a planned extra-compact format for use
- in the EROFS file system in Linux. At this point it's possible
- that the format will either change or be abandoned and removed
- completely.
-
- The special thing about the encoder is that it uses the
- output-size-limited encoding added in the previous commit.
- EROFS uses fixed-sized blocks (e.g. 4 KiB) to hold compressed
- data so the compressors must be able to create valid streams
- that fill the given block size.
+ Translations: Update the Swedish translation.
- src/liblzma/api/lzma/container.h | 76 +++++++++++++++++++
- src/liblzma/common/Makefile.inc | 2 +
- src/liblzma/common/erofs_decoder.c | 148 +++++++++++++++++++++++++++++++++++++
- src/liblzma/common/erofs_encoder.c | 139 ++++++++++++++++++++++++++++++++++
- src/liblzma/liblzma.map | 2 +
- 5 files changed, 367 insertions(+)
+ po/sv.po | 47 +++++++++++++++++++++++++++++------------------
+ 1 file changed, 29 insertions(+), 18 deletions(-)
-commit 625f4c7c99b2fcc4db9e7ab2deb4884790e2e17c
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-01-13 19:16:32 +0200
+commit 26b0bc6eb82c84559936a7c7080de5c71c8276f8
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-20 20:14:00 +0800
- liblzma: Add rough support for output-size-limited encoding in LZMA1.
-
- With this it is possible to encode LZMA1 data without EOPM so that
- the encoder will encode as much input as it can without exceeding
- the specified output size limit. The resulting LZMA1 stream will
- be a normal LZMA1 stream without EOPM. The actual uncompressed size
- will be available to the caller via the uncomp_size pointer.
-
- One missing thing is that the LZMA layer doesn't inform the LZ layer
- when the encoding is finished and thus the LZ may read more input
- when it won't be used. However, this doesn't matter if encoding is
- done with a single call (which is the planned use case for now).
- For proper multi-call encoding this should be improved.
-
- This commit only adds the functionality for internal use.
- Nothing uses it yet.
+ Translations: Update the Ukrainian man page translations.
- src/liblzma/common/common.h | 11 +++
- src/liblzma/lz/lz_encoder.c | 16 ++++
- src/liblzma/lz/lz_encoder.h | 4 +
- src/liblzma/lzma/lzma_encoder.c | 127 +++++++++++++++++++++++---------
- src/liblzma/lzma/lzma_encoder_private.h | 12 +++
- src/liblzma/rangecoder/range_encoder.h | 111 ++++++++++++++++++++++++++++
- 6 files changed, 246 insertions(+), 35 deletions(-)
+ po4a/uk.po | 1253 ++++++++++++++++++++++++++++++------------------------------
+ 1 file changed, 628 insertions(+), 625 deletions(-)
-commit 9cdabbeea891e8f1e7741b076f7db6ac05ae392a
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-01-11 23:57:11 +0200
+commit 2d02c8b7640b54f3c5aa1c8b5990ba56f322393b
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-20 20:09:15 +0800
- Scripts: Add zstd support to xzdiff.
+ Translations: Update the Ukrainian translation.
- src/scripts/xzdiff.1 | 6 ++++--
- src/scripts/xzdiff.in | 16 +++++++++++-----
- 2 files changed, 15 insertions(+), 7 deletions(-)
+ po/uk.po | 45 ++++++++++++++++++++++++++++-----------------
+ 1 file changed, 28 insertions(+), 17 deletions(-)
-commit d9ec3add97cf4c999a7f594c6529680227b6c274
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-01-11 23:41:30 +0200
+commit f881018b503fd334331c24a09075429558abbce1
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-20 20:06:57 +0800
- Update THANKS.
+ Translations: Update the Spanish translation.
- THANKS | 2 ++
- 1 file changed, 2 insertions(+)
+ po/es.po | 47 +++++++++++++++++++++++++++++------------------
+ 1 file changed, 29 insertions(+), 18 deletions(-)
-commit 074259f4f3966aeac6edb205fecbc1a8d2b58bb2
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-01-11 23:41:16 +0200
+commit 791fe6d3ffd6877fa5f852be69d9251397dfaa31
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-20 20:05:19 +0800
- xz: Make --keep accept symlinks, hardlinks, and setuid/setgid/sticky.
-
- Previously this required using --force but that has other
- effects too which might be undesirable. Changing the behavior
- of --keep has a small risk of breaking existing scripts but
- since this is a fairly special corner case I expect the
- likehood of breakage to be low enough.
-
- I think the new behavior is more logical. The only reason for
- the old behavior was to be consistent with gzip and bzip2.
-
- Thanks to Vincent Lefevre and Sebastian Andrzej Siewior.
+ Translations: Update the Romanian translation.
- src/xz/file_io.c | 9 +++++----
- src/xz/xz.1 | 16 +++++++++++++++-
- 2 files changed, 20 insertions(+), 5 deletions(-)
+ po/ro.po | 48 ++++++++++++++++++++++++++++++------------------
+ 1 file changed, 30 insertions(+), 18 deletions(-)
-commit 73c555b3077c19dda29b6f4592ced2af876f8333
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-01-11 23:28:52 +0200
+commit 8827e90704f699fe08bb5bed56b1717a2bc0eb77
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-20 20:02:56 +0800
- Scripts: Fix exit status of xzgrep.
-
- Omit the -q option from xz, gzip, and bzip2. With xz this shouldn't
- matter. With gzip it's important because -q makes gzip replace SIGPIPE
- with exit status 2. With bzip2 it's important because with -q bzip2
- is completely silent if input is corrupt while other decompressors
- still give an error message.
-
- Avoiding exit status 2 from gzip is important because bzip2 uses
- exit status 2 to indicate corrupt input. Before this commit xzgrep
- didn't recognize corrupt .bz2 files because xzgrep was treating
- exit status 2 as SIGPIPE for gzip compatibility.
-
- zstd still needs -q because otherwise it is noisy in normal
- operation.
-
- The code to detect real SIGPIPE didn't check if the exit status
- was due to a signal (>= 128) and so could ignore some other exit
- status too.
+ Translations: Update the Romanian man page translations.
- src/scripts/xzgrep.in | 20 +++++++++++++-------
- 1 file changed, 13 insertions(+), 7 deletions(-)
+ po4a/ro.po | 1254 ++++++++++++++++++++++++++++++------------------------------
+ 1 file changed, 629 insertions(+), 625 deletions(-)
-commit 194029ffaf74282a81f0c299c07f73caca3232ca
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-01-11 22:01:51 +0200
+commit 0184d344fa4f215cd345bb131db9068e077c69b8
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-19 23:36:00 +0800
- Scripts: Fix exit status of xzdiff/xzcmp.
-
- This is a minor fix since this affects only the situation when
- the files differ and the exit status is something else than 0.
- In such case there could be SIGPIPE from a decompression tool
- and that would result in exit status of 2 from xzdiff/xzcmp
- while the correct behavior would be to return 1 or whatever
- else diff or cmp may have returned.
+ liblzma: Suppress -Wunused-function warning.
- This commit omits the -q option from xz/gzip/bzip2/lzop arguments.
- I'm not sure why the -q was used in the first place, perhaps it
- hides warnings in some situation that I cannot see at the moment.
- Hopefully the removal won't introduce a new bug.
+ Clang 16.0.0 and earlier have a bug that the ifunc resolver function
+ triggers the -Wunused-function warning. The resolver function is static
+ and only "used" by the __attribute__((__ifunc()__)).
- With gzip the -q option was harmful because it made gzip return 2
- instead of >= 128 with SIGPIPE. Ignoring exit status 2 (warning
- from gzip) isn't practical because bzip2 uses exit status 2 to
- indicate corrupt input file. It's better if SIGPIPE results in
- exit status >= 128.
+ At this time, the bug is still unresolved, but has been reported:
+ https://github.com/llvm/llvm-project/issues/63957
- With bzip2 the removal of -q seems to be good because with -q
- it prints nothing if input is corrupt. The other tools aren't
- silent in this situation even with -q. On the other hand, if
- zstd support is added, it will need -q since otherwise it's
- noisy in normal situations.
-
- Thanks to Étienne Mollier and Sebastian Andrzej Siewior.
+ This is not a problem in GCC.
- src/scripts/xzdiff.in | 35 +++++++++++++++++++++--------------
- 1 file changed, 21 insertions(+), 14 deletions(-)
+ src/liblzma/check/crc64_fast.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
-commit f7fa309e1f7178d04c7bedc03b73077639371e97
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2021-01-09 21:14:36 +0200
+commit 43845fa70fc751736c44c18f4cee42d49bfd1392
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-18 22:52:25 +0800
- liblzma: Make lzma_outq usable for threaded decompression too.
-
- Before this commit all output queue buffers were allocated as
- a single big allocation. Now each buffer is allocated separately
- when needed. Used buffers are cached to avoid reallocation
- overhead but the cache will keep only one buffer size at a time.
- This should make things work OK in the decompression where most
- of the time the buffer sizes will be the same but with some less
- common files the buffer sizes may vary.
+ liblzma: Reword lzma_str_list_filters() documentation.
- While this should work fine, it's still a bit preliminary
- and may even get reverted if it turns out to be useless for
- decompression.
+ This further improves the documentation from commit
+ f36ca7982f6bd5e9827219ed4f3c5a1fbf5d7bdf. The previous wording of
+ "supported options" was slightly misleading since the options that are
+ printed are the ones that are relevant for encoding/decoding. It is not
+ about which options can or must be specified.
- src/liblzma/common/outqueue.c | 268 +++++++++++++++++++++------------
- src/liblzma/common/outqueue.h | 138 ++++++++++++-----
- src/liblzma/common/stream_encoder_mt.c | 52 ++++---
- 3 files changed, 301 insertions(+), 157 deletions(-)
+ src/liblzma/api/lzma/filter.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit a35a69d693ce37d4ba7c1855bda7d9cfa13d1778
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-12-23 17:15:49 +0200
+commit 818701ba1c9dff780b7fbf28f9ab8eb11a25dd67
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-18 22:49:57 +0800
- Update THANKS.
+ liblzma: Improve comment in string_conversion.c.
+
+ The comment used "flag" when referring to decoder options. Just
+ referring to them as options is more clear and consistent.
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ src/liblzma/common/string_conversion.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit 4fd79b90c52396d70e0b1206ceb1a873a0ad2589
-Author: H.J. Lu <hjl.tools@gmail.com>
-Date: 2020-12-23 06:49:04 -0800
+commit b6b7d065853cd4c3f5b8d9be8aea0b6dcb0fe090
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2023-07-18 17:37:33 +0300
- liblzma: Enable Intel CET in x86 CRC assembly codes
-
- When Intel CET is enabled, we need to include <cet.h> in assembly codes
- to mark Intel CET support and add _CET_ENDBR to indirect jump targets.
+ xz: Translate the second "%s: " in message.c since French needs "%s : ".
- Tested on Intel Tiger Lake under CET enabled Linux.
+ This string is used to print a filename when using "xz -v" and
+ stderr isn't a terminal.
- src/liblzma/check/crc32_x86.S | 9 +++++++++
- src/liblzma/check/crc64_x86.S | 9 +++++++++
- 2 files changed, 18 insertions(+)
+ src/xz/message.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit bb3b8c6a23e25db79f862b1de325c56052e0354b
+commit be644042c3066d8e7a2834f989671ba74d27f749
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-12-16 18:33:29 +0200
+Date: 2023-07-18 14:35:33 +0300
- Update THANKS.
+ xz: Make "%s: %s" translatable because French needs "%s : %s".
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ src/xz/args.c | 5 ++++-
+ src/xz/coder.c | 8 ++++----
+ src/xz/file_io.c | 8 ++++----
+ src/xz/list.c | 11 ++++++-----
+ 4 files changed, 18 insertions(+), 14 deletions(-)
-commit 21588ca34af98738954fc12ded1b89d7294ef646
+commit 97fd5cb669ee0afc48d2087675ab166aff89eaa2
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-12-16 18:30:14 +0200
+Date: 2023-07-18 13:57:54 +0300
- Build: Don't build bundles on Apple OSes.
+ liblzma: Tweak #if condition in memcmplen.h.
- Thanks to Daniel Packard.
+ Maybe ICC always #defines _MSC_VER on Windows but now
+ it's very clear which code will get used.
- CMakeLists.txt | 3 +++
- 1 file changed, 3 insertions(+)
+ src/liblzma/common/memcmplen.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit d05b0c42dd8b38d8c6b8193c8af50e9bd3d16f28
+commit 40392c19f71985852d75997f109dea97177d6f3f
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-12-05 22:44:03 +0200
+Date: 2023-07-18 13:49:43 +0300
- Update THANKS.
+ liblzma: Omit unnecessary parenthesis in a preprocessor directive.
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ src/liblzma/common/memcmplen.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit 1890351f3423627ba5c4c495402f32d7e9ed90b7
-Author: Adam Borowski <kilobyte@angband.pl>
-Date: 2020-09-25 03:35:18 +0200
+commit abc1d5601b7e419ebc28a1ab4b268613b52e6f98
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-18 00:51:48 +0800
- Scripts: Add zstd support to xzgrep.
-
- Thanks to Adam Borowski.
+ xz: Update Authors list in a few files.
- src/scripts/xzgrep.1 | 9 ++++++---
- src/scripts/xzgrep.in | 1 +
- 2 files changed, 7 insertions(+), 3 deletions(-)
+ src/xz/args.c | 3 ++-
+ src/xz/args.h | 3 ++-
+ src/xz/coder.c | 3 ++-
+ src/xz/coder.h | 3 ++-
+ src/xz/message.c | 3 ++-
+ 5 files changed, 10 insertions(+), 5 deletions(-)
-commit 2f108abb3d82e4e2313b438dae9c0c7c7a6366f2
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-11-17 20:51:48 +0200
+commit 289034a168878baa9df6ff6e159110aade69cba5
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-14 23:20:33 +0800
- CMake: Fix compatibility with CMake 3.13.
+ Docs: Add a new section to INSTALL for Tests.
- The syntax "if(DEFINED CACHE{FOO})" requires CMake 3.14.
- In some other places the code treats the cache variables
- like normal variables already (${FOO} or if(FOO) is used,
- not ${CACHE{FOO}).
+ The new Tests section describes basic information about the tests, how
+ to run them, and important details when cross compiling. We have had a
+ few questions about how to compile the tests without running them, so
+ hopefully this information will help others with the same question in the
+ future.
- Thanks to ygrek for reporting the bug on IRC.
+ Fixes: https://github.com/tukaani-project/xz/issues/54
- CMakeLists.txt | 2 +-
- cmake/tuklib_cpucores.cmake | 4 ++--
- cmake/tuklib_physmem.cmake | 4 ++--
- 3 files changed, 5 insertions(+), 5 deletions(-)
+ INSTALL | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++--------------
+ 1 file changed, 64 insertions(+), 17 deletions(-)
-commit 5af726a79273fafa5de5745b117e567f21c90e49
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-11-01 22:56:43 +0200
+commit 1119e5f5a519b0ab71c81fc4dc84c0cc72abe513
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-14 21:10:27 +0800
- Update THANKS.
+ Docs: Update README.
+
+ This adds an entry to "Other implementations of the .xz format" for
+ XZ for Java.
- THANKS | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
+ README | 4 ++++
+ 1 file changed, 4 insertions(+)
-commit 4575d9d365c756ec189899f9f743e0b3515ce72d
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-11-01 22:34:25 +0200
+commit f99e2e4e53b7ea89e4eef32ddd4882e0416357c9
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-13 23:32:10 +0800
- xz: Avoid unneeded \f escapes on the man page.
-
- I don't want to use \c in macro arguments but groff_man(7)
- suggests that \f has better portability. \f would be needed
- for the .TP strings for portability reasons anyway.
+ xz: Fix typo in man page.
- Thanks to Bjarni Ingi Gislason.
+ The Memory limit information section described three output
+ columns when it actually has six. This was reworded to
+ "multiple" to make it more future proof.
- src/xz/xz.1 | 31 ++++++++++++++++++++++---------
- 1 file changed, 22 insertions(+), 9 deletions(-)
+ src/xz/xz.1 | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 620b32f5339f86710cb4435e01ecdac972ccac73
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-11-01 19:09:53 +0200
+commit f907705eb1f6c5edaafc9668a34c51a989932f1d
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-13 21:46:12 +0800
- xz: Use non-breaking spaces when intentionally using more than one space.
+ xz: Minor clean up for coder.c
- This silences some style checker warnings. Seems that spaces
- in the beginning of a line don't need this treatment.
+ * Moved max_block_list_size from a global to local variable.
+ * Reworded error message in validate_block_list_filter().
+ * Removed helper function filter_chain_error().
+ * Changed 1 << X to 1U << X in many places
+
+ src/xz/coder.c | 53 +++++++++++++++++++++--------------------------------
+ 1 file changed, 21 insertions(+), 32 deletions(-)
+
+commit 9adc9e56157ecbf2948e5036df8567809b9ae177
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-13 21:26:47 +0800
+
+ xz: Update man page Authors and date.
+
+ src/xz/xz.1 | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+commit c12e429f2635da8d8f5749e5f733f451baca6945
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-06-20 20:32:59 +0800
+
+ xz: Add a section to man page for robot mode --filters-help.
+
+ src/xz/xz.1 | 32 ++++++++++++++++++++++++++++++--
+ 1 file changed, 30 insertions(+), 2 deletions(-)
+
+commit e10f2db5d10300c16fa482a136ed31c1aa6e8e8d
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-06-19 23:11:41 +0800
+
+ xz: Slight reword in xz man page for consistency.
- Thanks to Bjarni Ingi Gislason.
+ Changed will print => prints in xz --robot --version description to
+ match --robot --info-memory description.
src/xz/xz.1 | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-commit cb1f34988c8a4130485091b2f8b641303d8f701b
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-11-01 18:49:37 +0200
+commit f5dc172a402fa946f3c45a16929d7fe14c9f5e81
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-06-19 23:07:10 +0800
- xz: Protect the ellipsis (...) on the man page with \&.
+ xz: Reorder robot mode subsections in the man page.
- This does it only when ... appears outside macro calls.
+ The order is now consistent with the order the command line arguments
+ are documented earlier in the man page. The new order is:
+ 1. --list
+ 2. --info-memory
+ 3. --version
- Thanks to Bjarni Ingi Gislason.
+ Instead of the previous order:
+ 1. --version
+ 2. --info-memory
+ 3. --list
- src/xz/xz.1 | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ src/xz/xz.1 | 192 ++++++++++++++++++++++++++++++------------------------------
+ 1 file changed, 96 insertions(+), 96 deletions(-)
-commit 5d224da3da87400f2fab313abbd7c710e7169ef9
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-11-01 18:41:21 +0200
+commit 9628be23aef2784249fd9f3199799d785d2ec5cc
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-13 00:46:50 +0800
- xz: Avoid the abbreviation "e.g." on the man page.
-
- A few are simply omitted, most are converted to "for example"
- and surrounded with commas. Sounds like that this is better
- style, for example, man-pages(7) recommends avoiding such
- abbreviations except in parenthesis.
-
- Thanks to Bjarni Ingi Gislason.
+ xz: Update man page for new --filters-help option.
- src/xz/xz.1 | 66 ++++++++++++++++++++++++++++++-------------------------------
- 1 file changed, 33 insertions(+), 33 deletions(-)
+ src/xz/xz.1 | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
-commit 90457dbe3e5717660f5b81f8c604860fc5137c0c
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-07-12 23:10:03 +0300
+commit a165d7df1964121eb9df715e6f836a31c865beef
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-13 00:44:41 +0800
- xz man page: Change \- (minus) to \(en (en-dash) for a numeric range.
+ xz: Add a new --filters-help option.
- Docs of ancient troff/nroff mention \(em (em-dash) but not \(en
- and \- was used for both minus and en-dash. I don't know how
- portable \(en is nowadays but it can be changed back if someone
- complains. At least GNU groff and OpenBSD's mandoc support it.
+ The --filters-help can be used to help create filter chains with the
+ --filters and --filtersX options. The message in --long-help is too
+ short to fully explain the syntax to construct complex filter chains.
- Thanks to Bjarni Ingi Gislason for the patch.
+ In --robot mode, xz will only print the output from liblzma function
+ lzma_str_list_filters.
- src/xz/xz.1 | 16 ++++++++--------
- 1 file changed, 8 insertions(+), 8 deletions(-)
+ src/xz/args.c | 8 ++++++++
+ src/xz/message.c | 30 ++++++++++++++++++++++++++++++
+ src/xz/message.h | 5 +++++
+ 3 files changed, 43 insertions(+)
-commit 352ba2d69af2136bc814aa1df1a132559d445616
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-07-12 20:46:24 +0300
+commit 95f1a414b156ee35d3e71862a14915fdd138f913
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-04-21 20:28:11 +0800
- Windows: Fix building of resource files when config.h isn't used.
-
- Now CMake + Visual Studio works for building liblzma.dll.
+ xz: Update the man page for --block-list and --filtersX
- Thanks to Markus Rickert.
+ The --block-list option description needed updating since the new
+ --filtersX option changes how it can be used. The new entry for
+ --filters1=FILTERS ... --filter9=FILTERS was created right after
+ the --filters option.
- src/common/common_w32res.rc | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
+ src/xz/xz.1 | 106 +++++++++++++++++++++++++++++++++++++++++++++---------------
+ 1 file changed, 80 insertions(+), 26 deletions(-)
-commit a9e2a87f1d61dcf684d809bf08c8ebea93f8a480
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-04-06 19:31:50 +0300
+commit 47a63cad2aa778280e0c1926b7159427ea028cb1
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-04-21 19:50:14 +0800
- src/scripts/xzgrep.1: Filenames to xzgrep are optional.
-
- xzgrep --help was correct already.
+ xz: Update --long-help for the new --filtersX option.
- src/scripts/xzgrep.1 | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ src/xz/message.c | 12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
-commit a7ba275d9b855d186abb29eb7a4f4cb6d9ca6fe0
-Author: Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
-Date: 2020-03-26 22:17:31 +0000
+commit 8b9913a13daca2550d02dfdcdc9be15f55ca4d13
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-06-17 20:46:21 +0800
- src/script/xzgrep.1: Remove superfluous '.RB'
-
- Output is from: test-groff -b -e -mandoc -T utf8 -rF0 -t -w w -z
-
- [ "test-groff" is a developmental version of "groff" ]
+ xz: Ignore filter chains that are set but never used in --block-list.
- Input file is ./src/scripts/xzgrep.1
+ If a filter chain is set but not used in --block-list, it introduced
+ unexpected behavior such as requiring an unneeded amount of memory to
+ compress, reducing the number of threads in multi-threaded encoding, and
+ printing an incorrect amount of memory needed to decompress.
- <src/scripts/xzgrep.1>:20 (macro RB): only 1 argument, but more are expected
- <src/scripts/xzgrep.1>:23 (macro RB): only 1 argument, but more are expected
- <src/scripts/xzgrep.1>:26 (macro RB): only 1 argument, but more are expected
- <src/scripts/xzgrep.1>:29 (macro RB): only 1 argument, but more are expected
- <src/scripts/xzgrep.1>:32 (macro RB): only 1 argument, but more are expected
-
- "abc..." does not mean the same as "abc ...".
-
- The output from nroff and troff is unchanged except for the space
- between "file" and "...".
-
- Signed-off-by: Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+ This also renames filters_init_mask => filters_used_mask. A filter is
+ assumed to be used if it is specified in --filtersX until
+ coder_set_compression_settings() determines which filters are referenced
+ in --block-list.
- src/scripts/xzgrep.1 | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
+ src/xz/coder.c | 66 ++++++++++++++++++++++++++++++++++++++++++----------------
+ 1 file changed, 48 insertions(+), 18 deletions(-)
-commit 133d498db0f4b14f066d192d64dbcade45deae6b
-Author: Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
-Date: 2020-03-30 21:56:36 +0000
+commit 183819bfd9efac8c184d9bf123325719b7eee30f
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-13 20:11:13 +0800
- xzgrep.1: Delete superfluous '.PP'
-
- Summary:
-
- mandoc -T lint xzgrep.1 :
- mandoc: xzgrep.1:79:2: WARNING: skipping paragraph macro: PP empty
+ xz: Set the Block size for mt encoding correctly.
- There is no change in the output of "nroff" and "troff".
-
- Signed-off-by: Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+ When opt_block_size is not used, the Block size for mt encoder is
+ derived from the minimum of the largest Block specified by
+ --block-list and the recommended Block size on all filter chains
+ calculated by lzma_mt_block_size(). This avoids using unnecessary
+ memory and ensures that all Blocks are large enough for the most memory
+ needy filter chain.
- src/scripts/xzgrep.1 | 1 -
- 1 file changed, 1 deletion(-)
+ src/xz/coder.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 67 insertions(+), 1 deletion(-)
-commit 057839ca982f886387b66746bffe749cb14fd8cd
-Author: Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
-Date: 2020-03-26 21:16:18 +0000
+commit afb2dbec3d857b026486b75e42a4728e12d234cb
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-11 00:09:41 +0800
- src/xz/xz.1: Correct misused two-fonts macros
-
- Output is from: test-groff -b -e -mandoc -T utf8 -rF0 -t -w w -z
-
- [ "test-groff" is a developmental version of "groff" ]
-
- Input file is ./src/xz/xz.1
-
- <src/xz/xz.1>:408 (macro BR): only 1 argument, but more are expected
- <src/xz/xz.1>:1009 (macro BR): only 1 argument, but more are expected
- <src/xz/xz.1>:1743 (macro BR): only 1 argument, but more are expected
- <src/xz/xz.1>:1920 (macro BR): only 1 argument, but more are expected
- <src/xz/xz.1>:2213 (macro BR): only 1 argument, but more are expected
-
- Output from nroff and troff is unchanged, except for a font change of a
- full stop (.).
+ xz: Validate --flush-timeout for all specified filter chains.
+
+ src/xz/coder.c | 24 ++++++++++++++++--------
+ 1 file changed, 16 insertions(+), 8 deletions(-)
+
+commit 5f0c5a04388f8334962c70bc37a8c2ff8f605e0a
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-13 19:54:33 +0800
+
+ xz: Allows --block-list filters to scale down memory usage.
- Signed-off-by: Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+ Previously, only the default filter chain could have its memory usage
+ adjusted. The filter chains specified with --filtersX were not checked
+ for memory usage. Now, all used filter chains will be adjusted if
+ necessary.
- src/xz/xz.1 | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
+ src/xz/coder.c | 269 +++++++++++++++++++++++++++++++++++++++++++++------------
+ 1 file changed, 214 insertions(+), 55 deletions(-)
-commit b8e12f5ab4c9fd3cb09a4330b2861f6b979ababd
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-03-23 18:07:50 +0200
+commit 479fd58d60622331fcbe48fddf756927b9f80d9a
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-10 21:50:33 +0800
- Typo fixes from fossies.org.
+ xz: Do not include block splitting if encoders are disabled.
- https://fossies.org/linux/misc/xz-5.2.5.tar.xz/codespell.html
+ The block splitting logic and split_block() function are not needed if
+ encoders are disabled. This will help slightly reduce the binary size
+ when built without encoders and allow split_block() to use functions
+ that require encoders being enabled.
- Makefile.am | 2 +-
- doc/examples/01_compress_easy.c | 2 +-
- src/liblzma/api/lzma/base.h | 2 +-
- src/liblzma/check/crc32_x86.S | 2 +-
- src/liblzma/common/index.c | 2 +-
- src/xz/xz.1 | 4 ++--
- 6 files changed, 7 insertions(+), 7 deletions(-)
+ src/xz/coder.c | 29 ++++++++++++++++++++---------
+ 1 file changed, 20 insertions(+), 9 deletions(-)
-commit 869b9d1b4edd6df07f819d360d306251f8147353
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-03-17 16:24:28 +0200
+commit f86ede22500f7ae024ec3ec3f3489ab5a857a3b3
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-10 22:38:59 +0800
- Update NEWS for 5.2.5.
+ xz: Free filters[] in debug mode.
+
+ This will only free filter chains created with --filters1-9 since the
+ default filter chain may be set from a static function variable. The
+ complexity to free the default filter chain is not worth the burden on
+ code maintenance.
- NEWS | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 105 insertions(+)
+ src/xz/coder.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
-commit a048e3a92d238c65f050a765174d9c75417231d4
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-03-16 20:01:37 +0200
+commit f281cd0d692ac0c70fc7669b80dddb863ea947e1
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-13 19:28:23 +0800
- README: Update outdated sections.
+ xz: Add a message if --block-list is used outside of xz compresssion.
+
+ --block-list is only supported with compression in xz format. This avoids
+ silently ignoring when --block-list is unused.
- README | 21 +++++++++++----------
- 1 file changed, 11 insertions(+), 10 deletions(-)
+ src/xz/args.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
-commit 29aed815ad4f98f3e4d355faa76a244ecd8ce716
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-03-16 19:39:45 +0200
+commit d6af7f347077b22403133239592e478931307759
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-04-18 20:29:09 +0800
- README: Mention that man pages can be translated.
+ xz: Create command line options for filters[1-9].
+
+ The new command line options are meant to be combined with --block-list.
+ They work as an optional extension to --block-list to specify a custom
+ filter chain for each block listed. The new options allow the creation
+ of up to 9 reusable filter chains. For instance:
+
+ xz --block-list=1:10MiB,3:5MiB,,2:5MiB,1:0 --filters1=delta--lzma2 \
+ --filters2=x86--lzma2 --filters3=arm64--lzma2
+
+ Will create the following blocks:
+ 1. A block of size 10 MiB with filter chain delta, lzma2.
+ 2. A block of size 5 MiB with filter chain arm64, lzma2.
+ 3. A block of size 5 MiB with filter chain arm64, lzma2.
+ 4. A block of size 5 MiB with filter chain x86, lzma2.
+ 5. A block containing the rest of the file contents with filter chain
+ delta, lzma2.
- README | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
+ src/xz/args.c | 82 ++++++++++++++++++++++---
+ src/xz/coder.c | 188 ++++++++++++++++++++++++++++++++++++++++++---------------
+ src/xz/coder.h | 20 +++++-
+ 3 files changed, 230 insertions(+), 60 deletions(-)
-commit 7fa7653940cc9dcfcbce2fbc5166ea343ad4e3c1
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-03-16 16:43:29 +0200
+commit 072d29250113268536719ad0e040ab8a66fb6435
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-13 19:36:09 +0800
- Update INSTALL.generic from Automake 1.16.1.
+ xz: Use lzma_filters_free() in forget_filter_chain().
+
+ This is a little cleaner than the previous implementation of
+ forget_filter_chain(). It is also more consistent since
+ lzma_str_to_filters() will always terminate the filter chain so there
+ is no need to terminate it later in coder_set_compression_settings().
- INSTALL.generic | 321 ++++++++++++++++++++++++++++----------------------------
- 1 file changed, 162 insertions(+), 159 deletions(-)
+ src/xz/coder.c | 18 ++++++++++--------
+ 1 file changed, 10 insertions(+), 8 deletions(-)
-commit 9bd317ef03ab9b3e6a927c27c2e9c4ac041182f0
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-03-15 15:27:22 +0200
+commit 3d21da5cff4b511633cb6e0d8a1090485c0c1059
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-04-17 22:22:45 +0800
- Update INSTALL for Windows and DOS and add preliminary info for z/OS.
+ xz: Separate string to filter conversion into a helper function.
+
+ Converting from string to filter will also need to be done for block
+ specific filter chains.
- INSTALL | 51 +++++++++++++++++++++++++++++++++++++++++----------
- 1 file changed, 41 insertions(+), 10 deletions(-)
+ src/xz/coder.c | 33 ++++++++++++++++++++-------------
+ 1 file changed, 20 insertions(+), 13 deletions(-)
-commit a3148c0446dc7fa96363752df414d22539c9007b
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-03-15 15:26:20 +0200
+commit a6583726e5f950278f96abcf79c04f1056810be6
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-06 00:03:35 +0800
- Build: Update m4/ax_pthread.m4 from Autoconf Archive (again).
+ Tests: Use new --filters option in test_compress.sh
- m4/ax_pthread.m4 | 219 +++++++++++++++++++++++++++++--------------------------
- 1 file changed, 117 insertions(+), 102 deletions(-)
+ tests/test_compress.sh | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
-commit 7812002dd3ed319e42a14662a8531802cca8ca67
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-03-11 21:15:35 +0200
+commit 5f3b898d07cc9b7160c7c88b3120b7edabb8a5b0
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-06 00:03:06 +0800
- xz: Never use thousand separators in DJGPP builds.
-
- DJGPP 2.05 added support for thousands separators but it's
- broken at least under WinXP with Finnish locale that uses
- a non-breaking space as the thousands separator. Workaround
- by disabling thousands separators for DJGPP builds.
+ xz: Update --long-help and man page for new --filters option.
- src/xz/util.c | 14 ++++++++++++--
- 1 file changed, 12 insertions(+), 2 deletions(-)
+ src/xz/message.c | 6 ++++++
+ src/xz/xz.1 | 41 ++++++++++++++++++++++++++++++++++++-----
+ 2 files changed, 42 insertions(+), 5 deletions(-)
-commit 7c8f688bf7fccd65d396e0130cbf4ea5dff5c56f
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-03-11 19:38:08 +0200
+commit 9ded880a0221f4d1256845fc4ab957ffd377c760
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-06 00:02:29 +0800
- DOS: Update dos/Makefile for DJGPP 2.05.
+ xz: Add --filters option to CLI.
- It doesn't need -fgnu89-inline like 2.04beta did.
+ The --filters option uses the new lzma_str_to_filters() function
+ to convert a string into a full filter chain. Using this option
+ will reset all previous filters set by --preset, --[filter], or
+ --filters.
- dos/Makefile | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
+ src/xz/args.c | 9 +++++++--
+ src/xz/coder.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++--
+ src/xz/coder.h | 3 +++
+ 3 files changed, 58 insertions(+), 4 deletions(-)
-commit 319ca928d73de87940c54e30bffe69f9fa65efdf
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-03-11 19:36:07 +0200
+commit 2c189bb00af73dc7ba1a67a9d274d5be03ee3a88
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-14 21:30:25 +0800
- DOS: Update instructions in dos/INSTALL.txt.
+ Tests: Improve feature testing for skipping.
+
+ Fixed a bug where test_compress_* would all fail if arm64 or armthumb
+ filters were enabled for compression but arm was disabled. Since the
+ grep tests only checked for "define HAVE_ENCODER_ARM", this would match
+ on HAVE_ENCODER_ARM64 or HAVE_ENCODER_ARMTHUMB.
+
+ Now the config.h feature test requires " 1" at the end to prevent the
+ prefix problem. have_feature() was also updated for this even though
+ there were known current bugs affecting it. This is just in case future
+ features have a similar prefix problem.
- dos/INSTALL.txt | 59 ++++++++++++++++++++++++++++-----------------------------
- 1 file changed, 29 insertions(+), 30 deletions(-)
+ tests/test_compress.sh | 4 ++--
+ tests/test_files.sh | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
-commit cb6b227ce39932824812ccd8a0647bd968de27d2
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-03-11 17:58:51 +0200
+commit 80a6b9bcad016c99c9ba3f3eeb4a619fcadfd357
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-10 20:56:28 +0800
- DOS: Update config.h.
-
- The added defines assume GCC >= 4.8.
+ Translations: Update the Chinese (traditional) translation.
- dos/config.h | 8 ++++++++
- 1 file changed, 8 insertions(+)
+ po/zh_TW.po | 659 ++++++++++++++++++++++++++++++++++--------------------------
+ 1 file changed, 377 insertions(+), 282 deletions(-)
-commit 4572d53e16e87eee375bc5624de2fd59bb0ae9cd
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-03-02 13:54:33 +0200
+commit 17f8844e6fc355abf997d77637a7447c4f7bbcbd
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-08 21:24:19 +0800
- liblzma: Fix a comment and RC_SYMBOLS_MAX.
+ liblzma: Remove non-portable empty initializer.
- The comment didn't match the value of RC_SYMBOLS_MAX and the value
- itself was slightly larger than actually needed. The only harm
- about this was that memory usage was a few bytes larger.
+ Commit 78704f36e74205857c898a351c757719a6c8b666 added an empty
+ initializer {} to prevent a warning. The empty initializer is a GNU
+ extension and results in a build failure on MSVC. The -wpedantic flag
+ warns about empty initializers.
- src/liblzma/rangecoder/range_encoder.h | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ src/liblzma/common/stream_encoder_mt.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 265daa873c0d871f5f23f9b56e133a6f20045a0a
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-27 20:58:52 +0200
+commit 3aca4f629cd577f0c54f594d5d88722edf0b0413
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-07-08 20:03:59 +0800
- Build: Make CMake build fail if tuklib_cpucores or tuklib_physmem fails.
+ Translations: Update the Vietnamese translation.
- CMakeLists.txt | 18 ++++++++++++++++++
- 1 file changed, 18 insertions(+)
+ po/vi.po | 620 +++++++++++++++++++++++++++++++++++----------------------------
+ 1 file changed, 349 insertions(+), 271 deletions(-)
-commit 7c8b904527cdbe61248c80edcc2e20d840c4fef9
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-27 20:24:27 +0200
+commit 66bdcfa85fef2911cc80f5f30fed3f9610faccb4
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-06-28 20:46:31 +0800
- Build: Add support for --no-po4a option to autogen.sh.
+ Tests: Fix memory leaks in test_index.
- Normally, if po4a isn't available, autogen.sh will return
- with non-zero exit status. The option --no-po4a can be useful
- when one knows that po4a isn't available but wants autogen.sh
- to still return with zero exit status.
+ Several tests were missing calls to lzma_index_end() to clean up the
+ lzma_index structs. The memory leaks were discovered by using
+ -fsanitize=address with GCC.
- autogen.sh | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
+ tests/test_index.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
-commit 292a5c0f9c9b3a66f5a5c652dc46381836d4537f
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-25 21:35:14 +0200
+commit fe3bd438fb119f9bad3f08dc29d331e4956196e1
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-06-28 20:43:29 +0800
- Update THANKS.
+ Tests: Fix memory leaks in test_block_header.
+
+ test_block_header was not properly freeing the filter options between
+ calls to lzma_block_header_decode(). The memory leaks were discovered by
+ using -fsanitize=address with GCC.
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ tests/test_block_header.c | 38 ++++++++++++++++++++++----------------
+ 1 file changed, 22 insertions(+), 16 deletions(-)
-commit 474320e9908786ba2021035f9013191e16cde08a
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-25 20:42:31 +0200
+commit 78704f36e74205857c898a351c757719a6c8b666
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-06-28 20:31:11 +0800
- Build: Fix bugs in the CMake files.
+ liblzma: Prevent uninitialzed warning in mt stream encoder.
- Seems that the phrase "add more quotes" from sh/bash scripting
- applies to CMake as well. E.g. passing an unquoted list ${FOO}
- to a function that expects one argument results in only the
- first element of the list being passed as an argument and
- the rest get ignored. Adding quotes helps ("${FOO}").
+ This change only impacts the compiler warning since it was impossible
+ for the wait_abs struct in stream_encode_mt() to be used before it was
+ initialized since mythread_condtime_set() will always be called before
+ mythread_cond_timedwait().
- list(INSERT ...) is weird. Inserting an empty string to an empty
- variable results in empty list, but inserting it to a non-empty
- variable does insert an empty element to the list.
+ Since the mythread.h code is different between the POSIX and
+ Windows versions, this warning was only present on Windows builds.
- Since INSERT requires at least one element,
- "${CMAKE_THREAD_LIBS_INIT}" needs to be quoted in CMakeLists.txt.
- It might result in an empty element in the list. It seems to not
- matter as empty elements consistently get ignored in that variable.
- In fact, calling cmake_check_push_state() and cmake_check_pop_state()
- will strip the empty elements from CMAKE_REQUIRED_LIBRARIES!
+ Thanks to Arthur S for reporting the warning and providing an initial
+ patch.
+
+ src/liblzma/common/stream_encoder_mt.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit e3356a204c5ae02db3ec4552b6c1be354e9b6142
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-06-28 20:22:38 +0800
+
+ liblzma: Prevent warning for MSYS2 Windows build.
- In addition to quoting fixes, this fixes checks for the cache
- variables in tuklib_cpucores.cmake and tuklib_physmem.cmake.
+ In lzma_memcmplen(), the <intrin.h> header file is only included if
+ _MSC_VER and _M_X64 are both defined but _BitScanForward64() was
+ previously used if _M_X64 was defined. GCC for MSYS2 defines _M_X64 but
+ not _MSC_VER so _BitScanForward64() was used without including
+ <intrin.h>.
- Thanks to Martin Matuška for testing and reporting the problems.
- These fixes aren't tested yet but hopefully they soon will be.
+ Now, lzma_memcmplen() will use __builtin_ctzll() for MSYS2 GCC builds as
+ expected.
- CMakeLists.txt | 52 ++++++++++++++++++++++-----------------------
- cmake/tuklib_common.cmake | 8 ++++---
- cmake/tuklib_cpucores.cmake | 30 ++++++++++++++------------
- cmake/tuklib_integer.cmake | 34 +++++++++++++++--------------
- cmake/tuklib_mbstr.cmake | 6 +++---
- cmake/tuklib_physmem.cmake | 29 +++++++++++++------------
- cmake/tuklib_progname.cmake | 4 ++--
- 7 files changed, 85 insertions(+), 78 deletions(-)
+ src/liblzma/common/memcmplen.h | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
-commit 7e3493d40eac0c3fa3d5124097745a70e15c41f6
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-24 23:38:16 +0200
+commit 45e250a9e9f3c3e8e8af2983366b170bf54f890e
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-06-28 21:01:22 +0800
- Build: Add very limited experimental CMake support.
+ CI: Add test with -fsanitize=address,undefined.
- This does *NOT* replace the Autotools-based build system in
- the foreseeable future. See the comment in the beginning
- of CMakeLists.txt.
+ ci_build.sh was updated to accept disabling of __attribute__ ifunc
+ and CLMUL. This will allow -fsanitize=address to pass because ifunc
+ is incompatible with -fsanitize=address. The CLMUL implementation has
+ optimizations that potentially read past the buffer and mask out the
+ unwanted bytes.
- So far this has been tested only on GNU/Linux but I commit
- it anyway to make it easier for others to test. Since I
- haven't played much with CMake before, it's likely that
- there are things that have been done in a silly or wrong
- way and need to be fixed.
+ This test will only run on Autotools Linux.
- CMakeLists.txt | 643 ++++++++++++++++++++++++++++++++++++++++++++
- cmake/tuklib_common.cmake | 47 ++++
- cmake/tuklib_cpucores.cmake | 173 ++++++++++++
- cmake/tuklib_integer.cmake | 100 +++++++
- cmake/tuklib_mbstr.cmake | 20 ++
- cmake/tuklib_physmem.cmake | 149 ++++++++++
- cmake/tuklib_progname.cmake | 19 ++
- 7 files changed, 1151 insertions(+)
+ .github/workflows/ci.yml | 23 +++++++++++++++++++----
+ build-aux/ci_build.sh | 8 +++++++-
+ 2 files changed, 26 insertions(+), 5 deletions(-)
-commit 21bd4701fca3e9002ce78bc135debca369ed8545
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-24 23:37:07 +0200
+commit 596ee722cd7ddf0afae584fc06365adc0e735977
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-06-28 20:16:04 +0800
- Update m4/.gitignore.
+ CI: Upgrade checkout action from v2 to v3.
- m4/.gitignore | 1 +
- 1 file changed, 1 insertion(+)
+ .github/workflows/ci.yml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit e094d1d0f196a91ec703e8d0055948feef349ae8
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-24 23:29:35 +0200
+commit 86118ea320f867e09e98a8682cc08cbbdfd640e2
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-06-27 23:38:32 +0800
- tuklib: Omit an unneeded <sys/types.h> from a tests.
-
- tuklib_cpucores.c and tuklib_physmem.c don't include <sys/types.h>
- even via other files in this package, so clearly that header isn't
- needed in the tests either (no one has reported build problems due
- to a missing header in a .c file).
+ Update THANKS.
- m4/tuklib_cpucores.m4 | 1 -
- m4/tuklib_physmem.m4 | 1 -
- 2 files changed, 2 deletions(-)
+ THANKS | 1 +
+ 1 file changed, 1 insertion(+)
-commit b3ed19a55fe99a45bd77614e149d39d18498075c
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-24 23:01:00 +0200
+commit 3d1fdddf92321b516d55651888b9c669e254634e
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-06-27 17:27:09 +0300
- liblzma: Remove unneeded <sys/types.h> from fastpos_tablegen.c.
-
- This file only generates fastpos_table.c.
- It isn't built as a part of liblzma.
+ Docs: Document the configure option --disable-ifunc in INSTALL.
- src/liblzma/lzma/fastpos_tablegen.c | 1 -
- 1 file changed, 1 deletion(-)
+ INSTALL | 8 ++++++++
+ 1 file changed, 8 insertions(+)
-commit 7b8982b29179b3c586e0456dc9ecbd4f58dcea59
+commit b4cf7a2822e8d30eb2b12a1a07fd04383b10ade3
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-22 14:15:07 +0200
+Date: 2023-06-27 17:24:49 +0300
- Use defined(__GNUC__) before __GNUC__ in preprocessor lines.
-
- This should silence the equivalent of -Wundef in compilers that
- don't define __GNUC__.
+ Minor tweaks to style and comments.
- src/common/sysdefs.h | 3 ++-
- src/liblzma/api/lzma.h | 5 +++--
- 2 files changed, 5 insertions(+), 3 deletions(-)
+ CMakeLists.txt | 8 ++++----
+ configure.ac | 9 +++++----
+ 2 files changed, 9 insertions(+), 8 deletions(-)
-commit 43dfe04e6209c691cf4fbe3072d4ee91271748f1
+commit 23fb9e3a329117c2968c1e7388b6ef07c782dba1
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-21 17:40:02 +0200
+Date: 2023-06-27 17:19:49 +0300
- liblzma: Add more uses of lzma_memcmplen() to the normal mode of LZMA.
+ CMake: Rename CHECK_ATTR_IFUNC to ALLOW_ATTR_IFUNC.
- This gives a tiny encoder speed improvement. This could have been done
- in 2014 after the commit 544aaa3d13554e8640f9caf7db717a96360ec0f6 but
- it was forgotten.
+ It's so that there's a clear difference in wording compared
+ to liblzma's integrity check types.
- src/liblzma/lzma/lzma_encoder_optimum_normal.c | 16 ++++++++++------
- 1 file changed, 10 insertions(+), 6 deletions(-)
+ CMakeLists.txt | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
-commit 59e6eb4840b9f52fa3a61544974017279b448216
+commit ee44863ae88e377a5df10db007ba9bfadde3d314
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-21 17:01:15 +0200
+Date: 2023-06-27 17:05:23 +0300
- Build: Add visibility.m4 from gnulib.
+ liblzma: Add ifunc implementation to crc64_fast.c.
+
+ The ifunc method avoids indirection via the function pointer
+ crc64_func. This works on GNU/Linux and probably on FreeBSD too.
+ The previous __attribute((__constructor__)) method is kept for
+ compatibility with ELF platforms which do support ifunc.
- Appears that this file used to get included as a side effect of
- gettext. After the change to gettext version requirements this file
- no longer got copied to the package and so the build was broken.
+ The ifunc method has some limitations, for example, building
+ liblzma with -fsanitize=address will result in segfaults.
+ The configure option --disable-ifunc must be used for such builds.
+
+ Thanks to Hans Jansen for the original patch.
+ Closes: https://github.com/tukaani-project/xz/pull/53
- m4/.gitignore | 1 -
- m4/visibility.m4 | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 77 insertions(+), 1 deletion(-)
+ src/liblzma/check/crc64_fast.c | 35 ++++++++++++++++++++++++++---------
+ 1 file changed, 26 insertions(+), 9 deletions(-)
-commit 7fe3ef2eaa53d439cec043727ea1998f4ff0e22a
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-21 16:10:44 +0200
+commit b72d21202402a603db6d512fb9271cfa83249639
+Author: Hans Jansen <hansjansen162@outlook.com>
+Date: 2023-06-22 19:49:30 +0200
- xz: Silence a warning when sig_atomic_t is long int.
+ Add ifunc check to CMakeLists.txt
- It can be true at least on z/OS.
+ CMake build system will now verify if __attribute__((__ifunc__())) can be
+ used in the build system. If so, HAVE_FUNC_ATTRIBUTE_IFUNC will be
+ defined to 1.
- src/xz/signals.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ CMakeLists.txt | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
-commit b0a2a77d10940c42b449d47a005bfc2e50ab5db8
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-21 15:59:26 +0200
+commit 23b5c36fb71904bfbe16bb20f976da38dadf6c3b
+Author: Hans Jansen <hansjansen162@outlook.com>
+Date: 2023-06-22 19:46:55 +0200
- xz: Avoid unneeded access of a volatile variable.
+ Add ifunc check to configure.ac
+
+ configure.ac will now verify if __attribute__((__ifunc__())) can be used in
+ the build system. If so, HAVE_FUNC_ATTRIBUTE_IFUNC will be defined to 1.
- src/xz/signals.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ configure.ac | 28 ++++++++++++++++++++++++++++
+ 1 file changed, 28 insertions(+)
-commit 524c2f12c762032b819757aeda8af7c47c4cabce
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-21 01:24:18 +0200
+commit dbb3a536ed9873ffa0870321f6873e564c6a9da8
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-06-07 00:18:30 +0800
- tuklib_integer.m4: Optimize the check order.
+ CI: Add apt update command before installing dependencies.
- The __builtin byteswapping is the preferred one so check for it first.
+ Without the extra command, all of the CI tests were automatically
+ failing because the Ubuntu servers could not be reached properly.
- m4/tuklib_integer.m4 | 56 +++++++++++++++++++++++++++-------------------------
- 1 file changed, 29 insertions(+), 27 deletions(-)
+ .github/workflows/ci.yml | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
-commit 57360bb4fd79b358b36d2877db26ac828d1fdfcb
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-20 18:54:04 +0200
+commit 6bcd516812331de42b347922913230895bebad34
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-06-07 00:10:38 +0800
- tuklib_exit: Add missing header.
-
- strerror() needs <string.h> which happened to be included via
- tuklib_common.h -> tuklib_config.h -> sysdefs.h if HAVE_CONFIG_H
- was defined. This wasn't tested without config.h before so it
- had worked fine.
+ Update THANKS.
- src/common/tuklib_exit.c | 1 +
+ THANKS | 1 +
1 file changed, 1 insertion(+)
-commit fddd31175e74a538997a939d930462fde17d2dd4
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-18 19:12:35 +0200
+commit 0d94ba69220d894d2a86081821d2d7a89df5a10b
+Author: Benjamin Buch <bebuch@users.noreply.github.com>
+Date: 2023-06-06 15:32:45 +0200
- Revert the previous commit and add a comment.
+ CMake: Protects against double find_package
- The previous commit broke crc32_tablegen.c.
+ Boost iostream uses `find_package` in quiet mode and then again uses
+ `find_package` with required. This second call triggers a
+ `add_library cannot create imported target "ZLIB::ZLIB" because another
+ target with the same name already exists.`
- If the whole package is built without config.h (with defines
- set on the compiler command line) this should still work fine
- as long as these headers conform to C99 well enough.
+ This can simply be fixed by skipping the alias part on secondary
+ `find_package` runs.
- src/common/tuklib_config.h | 17 ++++++++++-------
- 1 file changed, 10 insertions(+), 7 deletions(-)
+ CMakeLists.txt | 16 +++++++++-------
+ 1 file changed, 9 insertions(+), 7 deletions(-)
-commit 4e4e9fbb7e66d45319525ac224bff48fbdd0cf6e
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-17 23:37:20 +0200
+commit 045d7aae286ecd2ce163be9e0d9041343a03f89a
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-31 20:26:42 +0800
- Do not check for HAVE_CONFIG_H in tuklib_config.h.
-
- In XZ Utils sysdefs.h takes care of it and the required headers.
+ Translations: Update the Esperanto translation.
- src/common/tuklib_config.h | 15 +++++++--------
- 1 file changed, 7 insertions(+), 8 deletions(-)
+ po/eo.po | 185 +++++++++++++++++++++++++++++++--------------------------------
+ 1 file changed, 92 insertions(+), 93 deletions(-)
-commit 2d4cef954feba82073951358466a1d614141cf33
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-16 11:18:28 +0200
+commit b0cc7c2dcefe4cbc4e1e697598c14fb687ed0b78
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-31 20:25:00 +0800
- sysdefs.h: Omit the conditionals around string.h and limits.h.
-
- string.h is used unconditionally elsewhere in the project and
- configure has always stopped if limits.h is missing, so these
- headers must have been always available even on the weirdest
- systems.
+ Translations: Update the Croatian translation.
- src/common/sysdefs.h | 8 ++------
- 1 file changed, 2 insertions(+), 6 deletions(-)
+ po/hr.po | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit feb9c1969bc3eb33d4ecb72cfa897f92dae84939
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-15 15:07:11 +0200
+commit af045ef6f848f02cd14c9ad195a5f87bb0c02dce
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-31 20:15:53 +0800
- Build: Bump Autoconf and Libtool version requirements.
-
- There is no specific reason for this other than blocking
- the most ancient versions. These are still old:
-
- Autoconf 2.69 (2012)
- Automake 1.12 (2012)
- gettext 0.19.6 (2015)
- Libtool 2.4 (2010)
+ Translations: Update the Chinese (simplified) translation.
- configure.ac | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ po/zh_CN.po | 317 ++++++++++++++++++++++++++++++------------------------------
+ 1 file changed, 157 insertions(+), 160 deletions(-)
-commit 3d576cf92158d62790017ad7f2dd6dc1dd6b42bb
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-15 03:08:32 +0200
+commit e6b92d5817fe91ad27a0f7f57bd0f2144311e383
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-17 23:12:13 +0800
- Build: Use AM_GNU_GETTEXT_REQUIRE_VERSION and require 0.19.6.
-
- This bumps the version requirement from 0.19 (from 2014) to
- 0.19.6 (2015).
-
- Using only the old AM_GNU_GETTEXT_VERSION results in old
- gettext infrastructure being placed in the package. By using
- both macros we get the latest gettext files while the other
- programs in the Autotools family can still see the old macro.
+ Translations: Update German translation of man pages.
- configure.ac | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
+ po4a/de.po | 52 ++++++++++++----------------------------------------
+ 1 file changed, 12 insertions(+), 40 deletions(-)
-commit fa792b8befaf7cb3960b655e0a9410da866d756f
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-14 20:42:06 +0200
+commit 592961ccdbba39c7d60fe37e36764232feb57c60
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-17 23:09:18 +0800
- Translations: Add German translation of the man pages.
-
- Thanks to Mario Blättermann.
+ Translations: Update the German translation.
- po4a/de.po | 5532 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- po4a/po4a.conf | 2 +-
- 2 files changed, 5533 insertions(+), 1 deletion(-)
+ po/de.po | 189 +++++++++++++++++++++++++++++++--------------------------------
+ 1 file changed, 94 insertions(+), 95 deletions(-)
-commit 6f7211b6bb47a895b47f533282dba9ee9a1b0c8b
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-07 15:32:21 +0200
+commit 13572cb2c391f5b7503e333c6e05b20bd5bbb524
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-17 20:30:01 +0800
- Build: Add support for translated man pages using po4a.
-
- The dependency on po4a is optional. It's never required to install
- the translated man pages when xz is built from a release tarball.
- If po4a is missing when building from xz.git, the translated man
- pages won't be generated but otherwise the build will work normally.
-
- The translations are only updated automatically by autogen.sh and
- by "make mydist". This makes it easy to keep po4a as an optional
- dependency and ensures that I won't forget to put updated
- translations to a release tarball.
-
- The translated man pages aren't installed if --disable-nls is used.
-
- The installation of translated man pages abuses Automake internals
- by calling "install-man" with redefined dist_man_MANS and man_MANS.
- This makes the hairy script code slightly less hairy. If it breaks
- some day, this code needs to be fixed; don't blame Automake developers.
-
- Also, this adds more quotes to the existing shell script code in
- the Makefile.am "-hook"s.
+ Translations: Update the Croatian translation.
- Makefile.am | 4 ++++
- autogen.sh | 8 ++++---
- po4a/.gitignore | 2 ++
- po4a/po4a.conf | 14 +++++++++++
- po4a/update-po | 45 ++++++++++++++++++++++++++++++++++
- src/scripts/Makefile.am | 64 +++++++++++++++++++++++++++++++++++++------------
- src/xz/Makefile.am | 50 +++++++++++++++++++++++++++-----------
- src/xzdec/Makefile.am | 55 ++++++++++++++++++++++++++++++++----------
- 8 files changed, 197 insertions(+), 45 deletions(-)
+ po/hr.po | 187 +++++++++++++++++++++++++++++++--------------------------------
+ 1 file changed, 93 insertions(+), 94 deletions(-)
-commit 426f9e5819ff7710a5ff573a96c02940be65d52f
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-06 17:31:38 +0200
+commit 4e6e425ea8f097c6fb43e69cc9540294dca3680d
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-17 20:26:54 +0800
- Update THANKS.
+ Translations: Update Korean translation of man pages.
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ po4a/ko.po | 3015 ++++++++++++------------------------------------------------
+ 1 file changed, 568 insertions(+), 2447 deletions(-)
-commit e3a4481d020e4de89efa037f335cf50f3ca55592
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-05 22:35:06 +0200
+commit d5ef1f6faf7c270f60093629257150085ecf19ca
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-17 20:13:01 +0800
- Update tests/.gitignore.
+ Translations: Update the Korean translation.
- .gitignore | 4 ++++
- 1 file changed, 4 insertions(+)
+ po/ko.po | 319 +++++++++++++++++++++++++++++++--------------------------------
+ 1 file changed, 158 insertions(+), 161 deletions(-)
-commit 07208de92f2d5bca764f6d0ebe9d9866051dc4ef
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-05 22:28:51 +0200
+commit e22d0b0f2e301e7906d0106689d967ed84362028
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-16 23:49:09 +0800
- Update m4/.gitignore.
+ Translations: Update the Spanish translation.
- m4/.gitignore | 1 +
- 1 file changed, 1 insertion(+)
+ po/es.po | 319 +++++++++++++++++++++++++++++++--------------------------------
+ 1 file changed, 158 insertions(+), 161 deletions(-)
-commit c91fbf223db46c3b3cb9df769863a1a60cd9c908
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-05 20:47:38 +0200
+commit f50da74d52d01f6cfd826a921249e289cf671678
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-16 23:47:23 +0800
- Update THANKS.
+ Translations: Update the Romanian translation.
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ po/ro.po | 195 ++++++++++++++++++++++++++++++++-------------------------------
+ 1 file changed, 98 insertions(+), 97 deletions(-)
-commit 15a133b6d1a3eab4faf6eb52a71fdc56bd65846f
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-05 20:40:14 +0200
+commit 4b9ad60a7305e9841b7cb4ea611bdf5fa7271696
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-16 23:45:43 +0800
- xz: Make it a fatal error if enabling the sandbox fails.
-
- Perhaps it's too drastic but on the other hand it will let me
- learn about possible problems if people report the errors.
- This won't be backported to the v5.2 branch.
+ Translations: Update Romanian translation of man pages.
- src/xz/file_io.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ po4a/ro.po | 19 ++++++++++---------
+ 1 file changed, 10 insertions(+), 9 deletions(-)
-commit af0fb386ef55db66654ae39e2deec6e04190c4ff
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-05 20:33:50 +0200
+commit cb6fd57f889c5d9fab36ae8c9e10083a5fe32dea
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-16 23:43:51 +0800
- xz: Comment out annoying sandboxing messages.
+ Translations: Update Ukrainian translation of man pages.
- src/xz/file_io.c | 10 +++++++---
- 1 file changed, 7 insertions(+), 3 deletions(-)
+ po4a/uk.po | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
-commit 986d8c9b52b824474088e5bb3b6940651660f0e2
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-05 19:33:37 +0200
+commit c3e8fcbc2db4861f92ad15606c995bd255803c52
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-16 23:37:54 +0800
- Build: Workaround a POSIX shell detection problem on Solaris.
-
- I don't know if the problem is in gnulib's gl_POSIX_SHELL macro
- or if xzgrep does something that isn't in POSIX. The workaround
- adds a special case for Solaris: if /usr/xpg4/bin/sh exists and
- gl_cv_posix_shell wasn't overriden on the configure command line,
- use that shell for xzgrep and other scripts. That shell is known
- to work and exists on most Solaris systems.
+ Translations: Update the Ukrainian translation.
- configure.ac | 10 ++++++++++
- 1 file changed, 10 insertions(+)
+ po/uk.po | 321 +++++++++++++++++++++++++++++++--------------------------------
+ 1 file changed, 159 insertions(+), 162 deletions(-)
-commit 6629ed929cc7d45a11e385f357ab58ec15e7e4ad
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-03 22:03:50 +0200
+commit 27b81b84fcedbc55aa6e6b21004c44070b15b038
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-16 23:07:35 +0800
- Build: Update m4/ax_pthread.m4 from Autoconf Archive.
+ Translations: Update the Polish translation.
- m4/ax_pthread.m4 | 398 ++++++++++++++++++++++++++++++++++++++-----------------
- 1 file changed, 279 insertions(+), 119 deletions(-)
+ po/pl.po | 316 +++++++++++++++++++++++++++++++--------------------------------
+ 1 file changed, 155 insertions(+), 161 deletions(-)
-commit 353970510895f6a80adfe60cf71b70a95adfa8bc
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-02-01 19:56:18 +0200
+commit 8024ad636a65ed6ea95c94d57255be4c6724d6ed
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-16 22:52:14 +0800
- xz: Limit --memlimit-compress to at most 4020 MiB for 32-bit xz.
-
- See the code comment for reasoning. It's far from perfect but
- hopefully good enough for certain cases while hopefully doing
- nothing bad in other situations.
-
- At presets -5 ... -9, 4020 MiB vs. 4096 MiB makes no difference
- on how xz scales down the number of threads.
-
- The limit has to be a few MiB below 4096 MiB because otherwise
- things like "xz --lzma2=dict=500MiB" won't scale down the dict
- size enough and xz cannot allocate enough memory. With
- "ulimit -v $((4096 * 1024))" on x86-64, the limit in xz had
- to be no more than 4085 MiB. Some safety margin is good though.
-
- This is hack but it should be useful when running 32-bit xz on
- a 64-bit kernel that gives full 4 GiB address space to xz.
- Hopefully this is enough to solve this:
-
- https://bugzilla.redhat.com/show_bug.cgi?id=1196786
-
- FreeBSD has a patch that limits the result in tuklib_physmem()
- to SIZE_MAX on 32-bit systems. While I think it's not the way
- to do it, the results on --memlimit-compress have been good. This
- commit should achieve practically identical results for compression
- while leaving decompression and tuklib_physmem() and thus
- lzma_physmem() unaffected.
+ Translations: Update the Swedish translation.
- src/xz/hardware.c | 32 +++++++++++++++++++++++++++++++-
- src/xz/xz.1 | 21 ++++++++++++++++++++-
- 2 files changed, 51 insertions(+), 2 deletions(-)
+ po/sv.po | 319 +++++++++++++++++++++++++++++++--------------------------------
+ 1 file changed, 158 insertions(+), 161 deletions(-)
-commit ba76d67585f88677af9f48b48e7bdc3bb7687def
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-01-26 20:53:25 +0200
+commit 6699a29673f227c4664826db485ed9f7596320d2
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-16 21:21:38 +0800
- xz: Set the --flush-timeout deadline when the first input byte arrives.
-
- xz --flush-timeout=2000, old version:
-
- 1. xz is started. The next flush will happen after two seconds.
- 2. No input for one second.
- 3. A burst of a few kilobytes of input.
- 4. No input for one second.
- 5. Two seconds have passed and flushing starts.
-
- The first second counted towards the flush-timeout even though
- there was no pending data. This can cause flushing to occur more
- often than needed.
-
- xz --flush-timeout=2000, after this commit:
+ Translations: Update the Esperanto translation.
+
+ po/eo.po | 34 +++++++++++++++++-----------------
+ 1 file changed, 17 insertions(+), 17 deletions(-)
+
+commit f36ca7982f6bd5e9827219ed4f3c5a1fbf5d7bdf
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-13 21:21:54 +0800
+
+ liblzma: Slightly rewords lzma_str_list_filters() documentation.
- 1. xz is started.
- 2. No input for one second.
- 3. A burst of a few kilobytes of input. The next flush will
- happen after two seconds counted from the time when the
- first bytes of the burst were read.
- 4. No input for one second.
- 5. No input for another second.
- 6. Two seconds have passed and flushing starts.
+ Reword "options required" to "supported options". The previous may have
+ suggested that the options listed were all required anytime a filter is
+ used for encoding or decoding. The reword makes this more clear that
+ adjusting the options is optional.
- src/xz/coder.c | 6 +-----
- src/xz/file_io.c | 6 +++++-
- src/xz/mytime.c | 1 -
- 3 files changed, 6 insertions(+), 7 deletions(-)
+ src/liblzma/api/lzma/filter.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit fd47fd62bbb1bfd13ab63869137971d8b390025f
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-01-26 20:19:19 +0200
+commit 3374a5359e52f1671d8f831d65827d5020fe2595
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-11 23:49:23 +0800
- xz: Move flush_needed from mytime.h to file_pair struct in file_io.h.
+ liblzma: Adds lzma_nothrow to MicroLZMA API functions.
+
+ None of the liblzma functions may throw an exception, so this
+ attribute should be applied to all liblzma API functions.
- src/xz/coder.c | 3 ++-
- src/xz/file_io.c | 3 ++-
- src/xz/file_io.h | 3 +++
- src/xz/mytime.c | 3 ---
- src/xz/mytime.h | 4 ----
- 5 files changed, 7 insertions(+), 9 deletions(-)
+ src/liblzma/api/lzma/container.h | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
-commit 815035681063d5774d3640fc20b8ede783dd574e
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-01-26 14:49:22 +0200
+commit 8f236574986e7c414c0ea059f441982d1387e6a4
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-09 20:20:06 +0800
- xz: coder.c: Make writing output a separate function.
+ liblzma: Exports lzma_mt_block_size() as an API function.
+
+ The lzma_mt_block_size() was previously just an internal function for
+ the multithreaded .xz encoder. It is used to provide a recommended Block
+ size for a given filter chain.
- The same code sequence repeats so it's nicer as a separate function.
- Note that in one case there was no test for opt_mode != MODE_TEST,
- but that was only because that condition would always be true, so
- this commit doesn't change the behavior there.
+ This function is helpful to determine the maximum Block size for the
+ multithreaded .xz encoder when one wants to change the filters between
+ blocks. Then, this determined Block size can be provided to
+ lzma_stream_encoder_mt() in the lzma_mt options parameter when
+ intializing the coder. This requires one to know all the filter chains
+ they are using before starting to encode (or at least the filter chain
+ that will need the largest Block size), but that isn't a bad limitation.
- src/xz/coder.c | 30 +++++++++++++++++-------------
- 1 file changed, 17 insertions(+), 13 deletions(-)
+ src/liblzma/api/lzma/container.h | 28 ++++++++++++++++++++++++++++
+ src/liblzma/common/filter_encoder.c | 16 ++++++++++------
+ src/liblzma/common/filter_encoder.h | 6 +-----
+ src/liblzma/common/stream_encoder_mt.c | 20 +++++++++-----------
+ src/liblzma/liblzma_generic.map | 5 +++++
+ src/liblzma/liblzma_linux.map | 5 +++++
+ src/liblzma/lzma/lzma2_encoder.c | 3 +++
+ 7 files changed, 61 insertions(+), 22 deletions(-)
-commit 5a49e081a098455bcdbd95cefb90e9b18780fe58
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-01-26 14:13:42 +0200
+commit d0f33d672a4da7985ebb5ba8d829f885de49c171
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-08 22:58:09 +0800
- xz: Fix semi-busy-waiting in xz --flush-timeout.
+ liblzma: Creates IS_ENC_DICT_SIZE_VALID() macro.
- When input blocked, xz --flush-timeout=1 would wake up every
- millisecond and initiate flushing which would have nothing to
- flush and thus would just waste CPU time. The fix disables the
- timeout when no input has been seen since the previous flush.
+ This creates an internal liblzma macro to test if the dictionary size
+ is valid for encoding.
- src/xz/coder.c | 4 ++++
- src/xz/file_io.c | 15 +++++++++++----
- src/xz/file_io.h | 4 ++++
- 3 files changed, 19 insertions(+), 4 deletions(-)
+ src/liblzma/lz/lz_encoder.c | 4 +---
+ src/liblzma/lz/lz_encoder.h | 8 ++++++++
+ 2 files changed, 9 insertions(+), 3 deletions(-)
-commit dcca70fe9fa3c4bec56cf9c79e966166c9a9cf6a
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-01-26 13:47:31 +0200
+commit c247d06e1f6cada9a76f4f6225cbd97ea760f52f
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-02 20:39:56 +0800
- xz: Refactor io_read() a bit.
+ Add NEWS for 5.4.3.
- src/xz/file_io.c | 17 ++++++++---------
- 1 file changed, 8 insertions(+), 9 deletions(-)
+ NEWS | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
-commit 4ae9ab70cd3214395756435d13d8d000368ca2cb
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-01-26 13:37:08 +0200
+commit 77050b78364ffb6b0f129e742b7c31602d725c08
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-02 20:39:37 +0800
- xz: Update a comment in file_io.h.
+ Add NEWS for 5.2.12.
- src/xz/file_io.h | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
+ NEWS | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
-commit 3333ba4a6795a55cf0375329ba08152bd7fcbd46
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-01-26 13:27:51 +0200
+commit 713e15e43eb6279a7ab4bbad3d1325ebfdcf09a0
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-04 20:38:52 +0800
- xz: Move the setting of flush_needed in file_io.c to a nicer location.
+ Translations: Update the Croatian translation.
- src/xz/file_io.c | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
+ po/hr.po | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
-commit cf2df0f05ac98c1158c6e48145900b773223605d
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2020-01-19 21:54:33 +0200
+commit 9ad64bdf309844b6ca6c3e8a4dfb6dbaedda0ca9
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-04 20:30:25 +0800
- Use $(LIB_FUZZING_ENGINE) in tests/ossfuzz/Makefile.
+ tuklib_integer.h: Reverts previous commit.
- https://github.com/google/oss-fuzz/pull/3219#issuecomment-573751048
-
- Thanks to Bhargava Shastry for sending the patch.
+ Previous commit 6be460dde07113fe3f08f814b61ddc3264125a96 would cause an
+ error if the integer size was 32 bit.
- tests/ossfuzz/Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ src/common/tuklib_integer.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit 7136f1735c60ac6967c4b8e277fcde53d485234f
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-12-31 00:41:28 +0200
+commit 6be460dde07113fe3f08f814b61ddc3264125a96
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-05-04 19:25:20 +0800
- Rename unaligned_read32ne to read32ne, and similarly for the others.
+ tuklib_integer.h: Changes two other UINT_MAX == UINT32_MAX to >=.
- src/common/tuklib_integer.h | 64 +++++++++++++++----------------
- src/liblzma/common/alone_encoder.c | 2 +-
- src/liblzma/common/block_header_decoder.c | 2 +-
- src/liblzma/common/block_header_encoder.c | 2 +-
- src/liblzma/common/memcmplen.h | 9 ++---
- src/liblzma/common/stream_flags_decoder.c | 6 +--
- src/liblzma/common/stream_flags_encoder.c | 8 ++--
- src/liblzma/lz/lz_encoder_hash.h | 2 +-
- src/liblzma/lzma/lzma_decoder.c | 2 +-
- src/liblzma/lzma/lzma_encoder.c | 2 +-
- src/liblzma/lzma/lzma_encoder_private.h | 3 +-
- src/liblzma/simple/simple_decoder.c | 2 +-
- src/liblzma/simple/simple_encoder.c | 2 +-
- tests/test_block_header.c | 4 +-
- tests/test_stream_flags.c | 6 +--
- 15 files changed, 54 insertions(+), 62 deletions(-)
+ src/common/tuklib_integer.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit 5e78fcbf2eb21936022c9c5c3625d4da76f4b241
+commit 44c0c5eae990a22ef04e9b88c1a15838a0d00878
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-12-31 00:29:48 +0200
+Date: 2023-05-03 22:46:42 +0300
- Rename read32ne to aligned_read32ne, and similarly for the others.
+ tuklib_integer.h: Fix a recent copypaste error in Clang detection.
- Using the aligned methods requires more care to ensure that
- the address really is aligned, so it's nicer if the aligned
- methods are prefixed. The next commit will remove the unaligned_
- prefix from the unaligned methods which in liblzma are used in
- more places than the aligned ones.
+ Wrong line was changed in 7062348bf35c1e4cbfee00ad9fffb4a21aa6eff7.
+ Also, this has >= instead of == since ints larger than 32 bits would
+ work too even if not relevant in practice.
- src/common/tuklib_integer.h | 56 +++++++++++++++++++++---------------------
- src/liblzma/check/crc32_fast.c | 4 +--
- src/liblzma/check/crc64_fast.c | 4 +--
- 3 files changed, 32 insertions(+), 32 deletions(-)
+ src/common/tuklib_integer.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit 77bc5bc6dd67056cfd5888520ac930cfc57b4516
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-12-31 00:18:24 +0200
+commit 2cf5ae5b5b279b0b2e69ca4724e7bd705865fe68
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-04-25 20:06:15 +0800
+
+ CI: Adds a build and test for small configuration.
+
+ .github/workflows/ci.yml | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit 16b81a057a87c2f18e6ed6447f003af0cbdcfe43
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-04-25 20:05:26 +0800
+
+ CI: ci_build.sh allows configuring small build.
+
+ build-aux/ci_build.sh | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+commit 78ccd93951f9e988d447bcdd70b24f6df5448d1d
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-04-20 20:15:00 +0800
+
+ Update THANKS.
+
+ THANKS | 1 +
+ 1 file changed, 1 insertion(+)
- Revise tuklib_integer.h and .m4.
+commit f41df2ac2fed347d3f107f3533e76e000d29c6cb
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-04-19 22:22:16 +0800
+
+ Windows: Include <intrin.h> when needed.
- Add a configure option --enable-unsafe-type-punning to get the
- old non-conforming memory access methods. It can be useful with
- old compilers or in some other less typical situations but
- shouldn't normally be used.
+ Legacy Windows did not need to #include <intrin.h> to use the MSVC
+ intrinsics. Newer versions likely just issue a warning, but the MSVC
+ documentation says to include the header file for the intrinsics we use.
- Omit the packed struct trick for unaligned access. While it's
- best in some cases, this is simpler. If the memcpy trick doesn't
- work, one can request unsafe type punning from configure.
+ GCC and Clang can "pretend" to be MSVC on Windows, so extra checks are
+ needed in tuklib_integer.h to only include <intrin.h> when it will is
+ actually needed.
+
+ src/common/tuklib_integer.h | 6 ++++++
+ src/liblzma/common/memcmplen.h | 10 ++++++++++
+ 2 files changed, 16 insertions(+)
+
+commit 7062348bf35c1e4cbfee00ad9fffb4a21aa6eff7
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-04-19 21:59:03 +0800
+
+ tuklib_integer: Use __builtin_clz() with Clang.
- Because CRC32/CRC64 code needs fast aligned reads, if no very
- safe way to do it is found, type punning is used as a fallback.
- This sucks but since it currently works in practice, it seems to
- be the least bad option. It's never needed with GCC >= 4.7 or
- Clang >= 3.6 since these support __builtin_assume_aligned and
- thus fast aligned access can be done with the memcpy trick.
+ Clang has support for __builtin_clz(), but previously Clang would
+ fallback to either the MSVC intrinsic or the regular C code. This was
+ discovered due to a bug where a new version of Clang required the
+ <intrin.h> header file in order to use the MSVC intrinsics.
- Other things:
- - Support GCC/Clang __builtin_bswapXX
- - Cleaner bswap fallback macros
- - Minor cleanups
+ Thanks to Anton Kochkov for notifying us about the bug.
- m4/tuklib_integer.m4 | 46 ++++-
- src/common/tuklib_integer.h | 488 ++++++++++++++++++++++++--------------------
- 2 files changed, 316 insertions(+), 218 deletions(-)
+ src/common/tuklib_integer.h | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
-commit 8b72950a6b2e2a36c2d8fdc8857564b57191b088
+commit 3938718ce3773c90755785c0df8777f133b7ae29
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-12-29 22:51:58 +0200
+Date: 2023-04-14 18:42:33 +0300
- Tests: Hopefully fix test_check.c to work on EBCDIC systems.
+ liblzma: Update project maintainers in lzma.h.
- Thanks to Daniel Richard G.
+ AUTHORS was updated earlier, lzma.h was simply forgotten.
- tests/test_check.c | 9 +++++++--
- 1 file changed, 7 insertions(+), 2 deletions(-)
+ src/liblzma/api/lzma.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 43ce4ea7c762238d3df9717b34126d3e0d7cd51c
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-09-24 23:02:40 +0300
+commit 2a89670ab295e377f8b44f5bda6d198deb8ea285
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-04-13 20:45:19 +0800
- Scripts: Put /usr/xpg4/bin to the beginning of PATH on Solaris.
-
- This adds a configure option --enable-path-for-scripts=PREFIX
- which defaults to empty except on Solaris it is /usr/xpg4/bin
- to make POSIX grep and others available. The Solaris case had
- been documented in INSTALL with a manual fix but it's better
- to do this automatically since it is needed on most Solaris
- systems anyway.
-
- Thanks to Daniel Richard G.
+ liblzma: Cleans up old commented out code.
- INSTALL | 43 +++++++++++++++++++++++++++++++++++--------
- configure.ac | 26 ++++++++++++++++++++++++++
- src/scripts/xzdiff.in | 1 +
- src/scripts/xzgrep.in | 1 +
- src/scripts/xzless.in | 1 +
- src/scripts/xzmore.in | 1 +
- 6 files changed, 65 insertions(+), 8 deletions(-)
+ src/liblzma/common/alone_encoder.c | 11 -----------
+ 1 file changed, 11 deletions(-)
-commit 6a89e656ebedd53a10cd1a063a32a9e4ade0da1f
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-07-12 18:57:43 +0300
+commit 0fbb2b87a7b5a1dd9d0f4a5e84ac7919557dbe81
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-04-07 20:46:41 +0800
- Fix comment typos in tuklib_mbstr* files.
+ Docs: Add missing word to SECURITY.md.
- src/common/tuklib_mbstr.h | 2 +-
- src/common/tuklib_mbstr_fw.c | 2 +-
- src/common/tuklib_mbstr_width.c | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
+ .github/SECURITY.md | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit ac0b4212656a48ef0c187c0c941d40ac9489ae36
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-07-12 18:30:46 +0300
+commit fb9c50f38a17bf37581de4034b36c8df8ec90a87
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-04-07 20:43:22 +0800
- Add missing include to tuklib_mbstr_width.c.
-
- It didn't matter in XZ Utils because sysdefs.h
- includes string.h anyway.
+ Update THANKS.
- src/common/tuklib_mbstr_width.c | 1 +
+ THANKS | 1 +
1 file changed, 1 insertion(+)
-commit 72a443281fb0b91aebf8cdff2ab1f7c07b081240
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-07-12 18:10:57 +0300
+commit 537c6cd8a9db0dd6b13683e64ddac2943190d715
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-04-07 20:42:12 +0800
- Update tuklib base headers to include stdbool.h.
+ Docs: Minor edits to SECURITY.md.
- src/common/tuklib_common.h | 2 +-
- src/common/tuklib_config.h | 1 +
- 2 files changed, 2 insertions(+), 1 deletion(-)
+ .github/SECURITY.md | 25 ++++++++++++++++++++-----
+ 1 file changed, 20 insertions(+), 5 deletions(-)
-commit de1f47b2b40e960b7bc3acba754f66dd19705921
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-28 00:54:31 +0300
+commit 6549df8dd53f358345957e232648fdb699930074
+Author: Gabriela Gutierrez <gabigutierrez@google.com>
+Date: 2023-04-07 12:08:30 +0000
- xz: Automatically align the strings in --info-memory.
+ Docs: Create SECURITY.md
- This makes it easier to translate the strings.
-
- Also, the string for amount of RAM was shortened.
+ Signed-off-by: Gabriela Gutierrez <gabigutierrez@google.com>
- src/xz/hardware.c | 45 ++++++++++++++++++++++++++++++++++-----------
- 1 file changed, 34 insertions(+), 11 deletions(-)
+ .github/SECURITY.md | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
-commit 8ce679125dbd0e2058d8f886e738d7f19a45cab5
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-25 23:15:21 +0300
+commit d0faa85df5a5d253a4625d45313cf5e9277e6cd2
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-28 22:48:24 +0800
- liblzma: Fix a buggy comment.
+ CI: Tests for disabling threading on CMake builds.
- src/liblzma/lz/lz_encoder_mf.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ .github/workflows/ci.yml | 3 ---
+ build-aux/ci_build.sh | 4 ++--
+ 2 files changed, 2 insertions(+), 5 deletions(-)
-commit fc77929e92e869f6869bf88931066103fd75f376
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-25 00:16:06 +0300
+commit 8be5cc3b1359d88b4b30a39067466c0ae0bfbc4d
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-28 22:45:42 +0800
- configure.ac: Fix a typo in a comment.
+ CI: Removes CMakeCache.txt between builds.
+
+ If the cache file is not removed, CMake will not reset configurations
+ back to their default values. In order to make the tests independent, it
+ is simplest to purge the cache. Unfortunatly, this will slow down the
+ tests a little and repeat some checks.
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ build-aux/ci_build.sh | 2 ++
+ 1 file changed, 2 insertions(+)
-commit e873902641794210ad7db59743f98e3e1cd6139f
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-25 00:08:13 +0300
+commit 2cb6028fc31de082b7f927632363bb1426b61aaa
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-28 22:32:40 +0800
- Tests: Silence warnings from clang -Wassign-enum.
+ CMake: Update liblzma-config.cmake generation.
- Also changed 999 to 99 so it fits even if lzma_check happened
- to be 8 bits wide.
+ Now that the threading is configurable, the liblzma CMake package only
+ needs the threading library when using POSIX threads.
- tests/test_block_header.c | 3 ++-
- tests/test_stream_flags.c | 2 +-
- 2 files changed, 3 insertions(+), 2 deletions(-)
+ CMakeLists.txt | 33 ++++++++++++++++++++++-----------
+ 1 file changed, 22 insertions(+), 11 deletions(-)
-commit d499e467d99efeaae688564eedc4548837c1416a
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-24 23:52:17 +0300
+commit 4d7fac0b07cc722825ba8d7838c558827e635611
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-28 22:25:33 +0800
- liblzma: Add a comment.
+ CMake: Allows setting thread method.
+
+ The thread method is now configurable for the CMake build. It matches
+ the Autotools build by allowing ON (pick the best threading method),
+ OFF (no threading), posix, win95, and vista. If both Windows and
+ posix threading are both available, then ON will choose Windows
+ threading. Windows threading will also not use:
+
+ target_link_libraries(liblzma Threads::Threads)
+
+ since on systems like MinGW-w64 it would link the posix threads
+ without purpose.
- src/liblzma/common/stream_encoder_mt.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ CMakeLists.txt | 144 +++++++++++++++++++++++++++++++++++++++++----------------
+ 1 file changed, 104 insertions(+), 40 deletions(-)
-commit a12b13c5f0d54c684fa8446f93fdac08ab2a716b
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-24 23:45:21 +0300
+commit 20cd905d898c1494dee42b78530769bb9c9f8076
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-24 23:05:48 +0800
- liblzma: Silence clang -Wmissing-variable-declarations.
+ CI: Runs CMake feature tests.
+
+ Now, CMake will run similar feature disable tests that the Autotools
+ version did before. In order to do this without repeating lines in
+ ci.yml, it now makes sense to use the GitHub Workflow matrix to create
+ a loop.
- src/liblzma/check/crc32_table.c | 3 +++
- src/liblzma/check/crc64_table.c | 3 +++
- 2 files changed, 6 insertions(+)
+ .github/workflows/ci.yml | 169 +++++++++++++++--------------------------------
+ 1 file changed, 55 insertions(+), 114 deletions(-)
-commit 1b4675cebf7471f7cc9b7072c950e3de97147063
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-24 23:25:41 +0300
+commit 4fabdb269f1fc5624b3b94a170c4efb329d1d229
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-24 20:35:11 +0800
- Add LZMA_RET_INTERNAL1..8 to lzma_ret and use one for LZMA_TIMED_OUT.
+ CI: ci_build.sh allows CMake features to be configured.
- LZMA_TIMED_OUT is *internally* used as a value for lzma_ret
- enumeration. Previously it was #defined to 32 and cast to lzma_ret.
- That way it wasn't visible in the public API, but this was hackish.
+ Also included various clean ups for style and helper functions for
+ repeated work.
+
+ build-aux/ci_build.sh | 233 +++++++++++++++++++++++++++++++-------------------
+ 1 file changed, 143 insertions(+), 90 deletions(-)
+
+commit cf3d1f130e50cf63da4bb1031771605f6f443b6a
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-24 20:06:33 +0800
+
+ CI: Change ci_build.sh to use bash instead of sh.
- Now the public API has eight LZMA_RET_INTERNALx members and
- LZMA_TIMED_OUT is #defined to LZMA_RET_INTERNAL1. This way
- the code is cleaner overall although the public API has a few
- extra mysterious enum members.
+ This script is only meant to be run as part of the CI build/test process
+ on machines that are known to have bash (Ubuntu and MacOS). If this
+ assumption changes in the future, then the bash specific commands will
+ need to be replaced with a more portable option. For now, it is
+ convenient to use bash commands.
- src/liblzma/api/lzma/base.h | 15 ++++++++++++++-
- src/liblzma/common/common.c | 4 +---
- src/liblzma/common/common.h | 5 ++---
- src/xz/message.c | 8 ++++++++
- 4 files changed, 25 insertions(+), 7 deletions(-)
+ build-aux/ci_build.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 159c43875eb25deea626ed651274464bae3e32ef
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-24 22:57:43 +0300
+commit ddfe164368e779c40d061aa4ccc376129e92f8e1
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-24 20:05:59 +0800
- xz: Silence a warning from clang -Wsign-conversion in main.c.
+ CMake: Only build xzdec if decoders are enabled.
- src/xz/main.c | 2 +-
+ CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-commit 466cfcd3e52f6750ce28a635997f3dd84fb18515
+commit 116e81f002c503d3c3cd12726db8f9116e58ef25
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-22 15:42:04 +0800
+
+ Build: Removes redundant check for LZMA1 filter support.
+
+ src/liblzma/lzma/Makefile.inc | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+commit 0ba234f692772595329d225462d391fe2c199d0a
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-24 22:52:20 +0300
+Date: 2023-03-23 15:14:29 +0200
- xz: Make "headings" static in list.c.
+ CMake: Bump maximum policy version to 3.26.
- Caught by clang -Wmissing-variable-declarations.
+ It adds only one new policy related to FOLDERS which we don't use.
+ This makes it clear that the code is compatible with the policies
+ up to 3.26.
- src/xz/list.c | 2 +-
+ CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-commit 608517b9b76c41fac6613dbda1193d6f41338e19
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-24 22:47:39 +0300
+commit b0891684b4436aed31510fddcbb218d513bd5489
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-21 23:36:00 +0800
+
+ CMake: Conditionally build xz list.* files if decoders are enabled.
+
+ CMakeLists.txt | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+commit 2c1a830efb61d9d65906a09c9ee3ce27c2c49227
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-25 11:46:50 +0800
- liblzma: Remove incorrect uses of lzma_attribute((__unused__)).
+ CMake: Allow configuring features as cache variables.
- Caught by clang -Wused-but-marked-unused.
+ This allows users to change the features they build either in
+ CMakeCache.txt or by using a CMake GUI. The sources built for
+ liblzma are affected by this too, so only the necessary files
+ will be compiled.
- src/liblzma/common/alone_decoder.c | 3 +--
- src/liblzma/common/alone_encoder.c | 3 +--
- src/liblzma/lz/lz_decoder.c | 3 +--
- 3 files changed, 3 insertions(+), 6 deletions(-)
+ CMakeLists.txt | 528 ++++++++++++++++++++++++++++++++++++++++++---------------
+ 1 file changed, 391 insertions(+), 137 deletions(-)
-commit c2d2ab6a9d41a2b55d047c5b710aacf80d219255
+commit 8be136f667aaeb8f9e16fbd57a83cb282f0c27ff
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-24 20:53:55 +0300
+Date: 2023-03-21 14:07:51 +0200
- Tests: Silence a warning from -Wsign-conversion.
+ Build: Add a comment that AC_PROG_CC_C99 is needed for Autoconf 2.69.
+
+ It's obsolete in Autoconf >= 2.70 and just an alias for AC_PROG_CC
+ but Autoconf 2.69 requires AC_PROG_CC_C99 to get a C99 compiler.
- tests/create_compress_files.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
+ configure.ac | 3 +++
+ 1 file changed, 3 insertions(+)
-commit 2402f7873dcae719d0ebddd23bb579074519ac52
+commit 53cc475f2652d9e390ca002018dfd0af0626ef80
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-24 20:45:49 +0300
+Date: 2023-03-21 14:04:37 +0200
- xz: Fix an integer overflow with 32-bit off_t.
+ Build: configure.ac: Use AS_IF and AS_CASE where required.
- Or any off_t which isn't very big (like signed 64 bit integer
- that most system have). A small off_t could overflow if the
- file being decompressed had long enough run of zero bytes,
- which would result in corrupt output.
+ This makes no functional difference in the generated configure
+ (at least with the Autotools versions I have installed) but this
+ change might prevent future bugs like the one that was just
+ fixed in the commit 5a5bd7f871818029d5ccbe189f087f591258c294.
- src/xz/file_io.c | 11 +++++++++--
- 1 file changed, 9 insertions(+), 2 deletions(-)
+ configure.ac | 30 +++++++++++++++---------------
+ 1 file changed, 15 insertions(+), 15 deletions(-)
-commit 4fd3a8dd0b60f029e1c66a0ee634f9e9fda3caa9
+commit 3b8890a40233b6c783bb101ec14405e786871775
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-24 01:24:17 +0300
+Date: 2023-03-21 13:12:03 +0200
- xz: Cleanup io_seek_src() a bit.
-
- lseek() returns -1 on error and checking for -1 is nicer.
+ Update THANKS.
- src/xz/file_io.c | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
+ THANKS | 1 +
+ 1 file changed, 1 insertion(+)
-commit dfda7cf6afa486e10df035327d68753896dfb48a
+commit 5a5bd7f871818029d5ccbe189f087f591258c294
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-24 00:57:23 +0300
+Date: 2023-03-21 13:11:49 +0200
- Tests: Remove a duplicate branch from tests/tests.h.
+ Build: Fix --disable-threads breaking the building of shared libs.
- The duplication was introduced about eleven years ago and
- should have been cleaned up back then already.
+ This is broken in the releases 5.2.6 to 5.4.2. A workaround
+ for these releases is to pass EGREP='grep -E' as an argument
+ to configure in addition to --disable-threads.
- This was caught by -Wduplicated-branches.
+ The problem appeared when m4/ax_pthread.m4 was updated in
+ the commit 6629ed929cc7d45a11e385f357ab58ec15e7e4ad which
+ introduced the use of AC_EGREP_CPP. AC_EGREP_CPP calls
+ AC_REQUIRE([AC_PROG_EGREP]) to set the shell variable EGREP
+ but this was only executed if POSIX threads were enabled.
+ Libtool code also has AC_REQUIRE([AC_PROG_EGREP]) but Autoconf
+ omits it as AC_PROG_EGREP has already been required earlier.
+ Thus, if not using POSIX threads, the shell variable EGREP
+ would be undefined in the Libtool code in configure.
+
+ ax_pthread.m4 is fine. The bug was in configure.ac which called
+ AX_PTHREAD conditionally in an incorrect way. Using AS_CASE
+ ensures that all AC_REQUIREs get always run.
+
+ Thanks to Frank Busse for reporting the bug.
+ Fixes: https://github.com/tukaani-project/xz/issues/45
- tests/tests.h | 9 ++-------
- 1 file changed, 2 insertions(+), 7 deletions(-)
+ configure.ac | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
-commit 1d4a904d8fb634bd5a04f7fbdd17d3739f3d8866
+commit dfe1710784c0a3c3a90c17b80c9e1fe19b5fce06
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-24 00:40:45 +0300
+Date: 2023-03-19 22:45:59 +0200
- xz: Change io_seek_src and io_pread arguments from off_t to uint64_t.
+ liblzma: Silence -Wsign-conversion in SSE2 code in memcmplen.h.
- This helps fixing warnings from -Wsign-conversion and makes the
- code look better too.
+ Thanks to Christian Hesse for reporting the issue.
+ Fixes: https://github.com/tukaani-project/xz/issues/44
- src/xz/file_io.c | 16 ++++++++++++----
- src/xz/file_io.h | 4 ++--
- src/xz/list.c | 9 ++++-----
- 3 files changed, 18 insertions(+), 11 deletions(-)
+ src/liblzma/common/memcmplen.h | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
-commit 50120deb0159fcb53ee1a6caffb2bb81a1ecd990
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-24 00:12:38 +0300
+commit f0c580c5fc38bf49a184b48d76c1d8c057d499ce
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-18 22:10:57 +0800
- xz: list.c: Fix some warnings from -Wsign-conversion.
+ Add NEWS for 5.4.2.
- src/xz/list.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
+ NEWS | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 48 insertions(+)
-commit d0a78751eb54fb1572002746c533936a118e4e42
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-23 23:22:45 +0300
+commit af4925e6043113ec9b5f9c0cf13abf2a18ccb1f6
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-18 22:10:12 +0800
- tuklib_mbstr_width: Fix a warning from -Wsign-conversion.
+ Add NEWS for 5.2.11.
- src/common/tuklib_mbstr_width.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ NEWS | 27 +++++++++++++++++++++++++++
+ 1 file changed, 27 insertions(+)
-commit 7883d73530b4b2a701ddd7d50c35676cbc158039
+commit 5a7b930efa7f9849d8da8397e8e5d8638f92be40
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-23 23:19:34 +0300
+Date: 2023-03-18 16:00:54 +0200
- xz: Fix some of the warnings from -Wsign-conversion.
+ Update the copy of GNU GPLv3 from gnu.org to COPYING.GPLv3.
- src/xz/args.c | 4 ++--
- src/xz/coder.c | 4 ++--
- src/xz/file_io.c | 5 +++--
- src/xz/message.c | 4 ++--
- src/xz/mytime.c | 4 ++--
- src/xz/options.c | 2 +-
- src/xz/util.c | 4 ++--
- 7 files changed, 14 insertions(+), 13 deletions(-)
+ COPYING.GPLv3 | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
-commit c2b994fe3d35e9e575c28869a2f7f534f2495d05
+commit b473a92891f7e991398a3b5eff305f6f2b6d7293
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-23 22:27:45 +0300
+Date: 2023-03-18 15:51:57 +0200
- tuklib_cpucores: Silence warnings from -Wsign-conversion.
+ Change a few HTTP URLs to HTTPS.
+
+ The xz man page timestamp was intentionally left unchanged.
- src/common/tuklib_cpucores.c | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
+ INSTALL | 2 +-
+ README | 8 ++++----
+ configure.ac | 2 +-
+ dos/INSTALL.txt | 4 ++--
+ src/liblzma/api/lzma.h | 8 ++++----
+ src/liblzma/check/sha256.c | 2 +-
+ src/xz/xz.1 | 2 +-
+ windows/INSTALL-MinGW.txt | 10 +++++-----
+ 8 files changed, 19 insertions(+), 19 deletions(-)
-commit 07c4fa9e1a195e0543f271380c8de22a3ab145ff
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-23 21:40:47 +0300
+commit 8b2f6001b4f412c259a7883427f2f2c8cea98ea8
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-18 00:40:28 +0800
- xzdec: Fix warnings from -Wsign-conversion.
+ CMake: Fix typo in a comment.
- src/xzdec/xzdec.c | 2 +-
+ CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-commit dfac2c9a1d7d4a2b8a5d7c9c6d567dee48318bcf
+commit 76e2315e14c399c15cc90e7930fd4d3d086b0227
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-23 21:38:56 +0300
+Date: 2023-03-17 18:36:22 +0200
- liblzma: Fix warnings from -Wsign-conversion.
-
- Also, more parentheses were added to the literal_subcoder
- macro in lzma_comon.h (better style but no functional change
- in the current usage).
+ Windows: build.bash: Copy liblzma API docs to the output package.
- src/liblzma/common/block_header_decoder.c | 2 +-
- src/liblzma/delta/delta_decoder.c | 2 +-
- src/liblzma/lzma/fastpos.h | 2 +-
- src/liblzma/lzma/lzma2_decoder.c | 8 ++++----
- src/liblzma/lzma/lzma_common.h | 3 ++-
- src/liblzma/lzma/lzma_decoder.c | 16 ++++++++--------
- src/liblzma/simple/arm.c | 6 +++---
- src/liblzma/simple/armthumb.c | 8 ++++----
- src/liblzma/simple/ia64.c | 2 +-
- src/liblzma/simple/powerpc.c | 9 +++++----
- src/liblzma/simple/x86.c | 2 +-
- 11 files changed, 31 insertions(+), 29 deletions(-)
+ windows/build.bash | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
-commit 41838dcc26375f6aa393a63e4d81e2f4d223de07
+commit 133cf55edc5ce92952d2709abd992e48ef1f45ee
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-23 19:33:55 +0300
+Date: 2023-03-17 08:53:38 +0200
- tuklib_integer: Silence warnings from -Wsign-conversion.
+ Windows: Add microlzma_*.c to the VS project files.
+
+ These should have been included in 5.3.2alpha already.
- src/common/tuklib_integer.h | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
+ windows/vs2013/liblzma.vcxproj | 2 ++
+ windows/vs2013/liblzma_dll.vcxproj | 2 ++
+ windows/vs2017/liblzma.vcxproj | 2 ++
+ windows/vs2017/liblzma_dll.vcxproj | 2 ++
+ windows/vs2019/liblzma.vcxproj | 2 ++
+ windows/vs2019/liblzma_dll.vcxproj | 2 ++
+ 6 files changed, 12 insertions(+)
-commit 3ce05d235f736d392347a05086b8033416874b87
+commit 75c9ca450fab6982fda9286b168081c9d54126cd
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-20 19:40:30 +0300
+Date: 2023-03-17 08:43:51 +0200
- tuklib_integer: Fix usage of conv macros.
+ CMake: Add microlzma_*.c to the build.
- Use a temporary variable instead of e.g.
- conv32le(unaligned_read32ne(buf)) because the macro can
- evaluate its argument multiple times.
+ These should have been included in 5.3.2alpha already.
- src/common/tuklib_integer.h | 12 ++++++++----
- 1 file changed, 8 insertions(+), 4 deletions(-)
+ CMakeLists.txt | 2 ++
+ 1 file changed, 2 insertions(+)
-commit b525b0c0ef40cd89b69294c9b8d57f4a8db58e1f
+commit 0cc3313bd4e569c51e686e5aab8c40c35241d34b
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-03 20:44:19 +0300
+Date: 2023-03-17 08:41:36 +0200
- Update THANKS.
+ Build: Update comments about unaligned access to mention 64-bit.
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ cmake/tuklib_integer.cmake | 7 +++----
+ m4/tuklib_integer.m4 | 4 ++--
+ 2 files changed, 5 insertions(+), 6 deletions(-)
-commit 039a168e8cf201d5104a25ec41f0cf25eda6cc53
+commit 5e57e3301319f20c35f8111dea73fa58403b96b1
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-03 20:41:54 +0300
+Date: 2023-03-17 00:02:30 +0200
- liblzma: Fix comments.
-
- Thanks to Bruce Stark.
+ Tests: Update .gitignore.
- src/liblzma/common/alone_encoder.c | 4 ++--
- src/liblzma/common/block_util.c | 2 +-
- src/liblzma/common/common.c | 2 +-
- src/liblzma/common/filter_common.h | 2 +-
- src/liblzma/common/filter_decoder.h | 2 +-
- src/liblzma/common/filter_flags_encoder.c | 2 +-
- 6 files changed, 7 insertions(+), 7 deletions(-)
+ .gitignore | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
-commit c460f6defebc5a81bbca90adc2476154ca244f69
+commit 0007394d54e21bf30abb9a5e09cbc1e8d44a73ac
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-02 00:50:59 +0300
+Date: 2023-03-14 20:04:03 +0200
- liblzma: Fix one more unaligned read to use unaligned_read16ne().
+ po4a/update-po: Display the script name consistently in error messages.
- src/liblzma/lz/lz_encoder_hash.h | 2 +-
+ po4a/update-po | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-commit c81d77c537f0b8c8672868e1dc6cf7290ce4a25b
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-01 21:41:55 +0300
+commit 509157c80c500426ec853bd992d684ebafc8500c
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-17 01:30:36 +0800
- Update THANKS.
+ Doc: Rename Doxygen HTML doc directory name liblzma => api.
+
+ When the docs are installed, calling the directory "liblzma" is
+ confusing since multiple other files in the doc directory are for
+ liblzma. This should also make it more natural for distros when they
+ package the documentation.
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ .gitignore | 2 +-
+ Makefile.am | 18 +++++++++---------
+ PACKAGERS | 4 ++--
+ doxygen/Doxyfile | 2 +-
+ doxygen/update-doxygen | 18 +++++++++---------
+ 5 files changed, 22 insertions(+), 22 deletions(-)
-commit 386394fc9fcde2615391f804eaa466749f96f4ef
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-01 21:36:13 +0300
+commit fd90e2f4c29180b44e33c7ef726f94e4eae54ed3
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-16 22:07:15 +0800
- liblzma: memcmplen: Use ctz32() from tuklib_integer.h.
+ liblzma: Remove note from lzma_options_bcj about the ARM64 exception.
- The same compiler-specific #ifdefs are already in tuklib_integer.h
+ This was left in by mistake since an early version of the ARM64 filter
+ used a different struct for its options.
- src/liblzma/common/memcmplen.h | 10 +---------
- 1 file changed, 1 insertion(+), 9 deletions(-)
+ src/liblzma/api/lzma/bcj.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 264ab971ce2994baac41b1579c9c35aba7743fc8
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-01 21:30:03 +0300
+commit 4f50763b981f9056c5f1763dfb26cfa4a26a181d
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-16 21:44:02 +0800
- tuklib_integer: Cleanup MSVC-specific code.
+ CI: Add doxygen as a dependency.
+
+ Autogen now requires --no-doxygen or having doxygen installed to run
+ without errors.
- src/common/tuklib_integer.h | 20 +++++++++-----------
- 1 file changed, 9 insertions(+), 11 deletions(-)
+ .github/workflows/ci.yml | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
-commit 33773c6f2a8711d4aa6656795db52c59a28580ec
+commit f68f4b27f62f53fdac570885a1f4f23367ce6599
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-01 19:01:21 +0300
+Date: 2023-03-15 19:19:13 +0200
+
+ COPYING: Add a note about the included Doxygen-generated HTML.
+
+ COPYING | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+commit 8979308528c1f45cb9ee52d511f05232b4ad90a1
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-16 21:41:09 +0800
+
+ Doc: Update PACKAGERS with details about liblzma API docs install.
+
+ PACKAGERS | 22 ++++++++++++++++------
+ 1 file changed, 16 insertions(+), 6 deletions(-)
- liblzma: Use unaligned_readXXne functions instead of type punning.
+commit 55ba6e93004842ae0a0792214a23504267ad8f43
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-16 21:38:32 +0800
+
+ liblzma: Add set lzma.h as the main page for Doxygen documentation.
+
+ The \mainpage command is used in the first block of comments in lzma.h.
+ This changes the previously nearly empty index.html to use the first
+ comment block in lzma.h for its contents.
- Now gcc -fsanitize=undefined should be clean.
+ lzma.h is no longer documented separately, but this is for the better
+ since lzma.h only defined a few macros that users do not need to use.
+ The individual API header files all have a disclaimer that they should
+ not be #included directly, so there should be no confusion on the fact
+ that lzma.h should be the only header used by applications.
- Thanks to Jeffrey Walton.
+ Additionally, the note "See ../lzma.h for information about liblzma as
+ a whole." was removed since lzma.h is now the main page of the
+ generated HTML and does not have its own page anymore. So it would be
+ confusing in the HTML version and was only a "nice to have" when
+ browsing the source files.
- src/liblzma/common/memcmplen.h | 12 ++++++------
- src/liblzma/lzma/lzma_encoder_private.h | 2 +-
- 2 files changed, 7 insertions(+), 7 deletions(-)
+ src/liblzma/api/lzma.h | 1 +
+ src/liblzma/api/lzma/base.h | 2 --
+ src/liblzma/api/lzma/bcj.h | 2 --
+ src/liblzma/api/lzma/block.h | 2 --
+ src/liblzma/api/lzma/check.h | 2 --
+ src/liblzma/api/lzma/container.h | 2 --
+ src/liblzma/api/lzma/delta.h | 2 --
+ src/liblzma/api/lzma/filter.h | 2 --
+ src/liblzma/api/lzma/hardware.h | 2 --
+ src/liblzma/api/lzma/index.h | 2 --
+ src/liblzma/api/lzma/index_hash.h | 4 +---
+ src/liblzma/api/lzma/lzma12.h | 2 --
+ src/liblzma/api/lzma/stream_flags.h | 2 --
+ src/liblzma/api/lzma/version.h | 2 --
+ src/liblzma/api/lzma/vli.h | 2 --
+ 15 files changed, 2 insertions(+), 29 deletions(-)
-commit e5f13a66567b1987e0aae42c6fdcd277bb5810ba
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-01 18:46:54 +0300
+commit 16f21255597f6a57e5692780f962cdc090f62b8c
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-16 21:37:32 +0800
- tuklib_integer: Autodetect support for unaligned access on ARM.
+ Build: Generate doxygen documentation in autogen.sh.
- The result is used as the default for --enable-unaligned-access.
- The test should work with GCC and Clang.
+ Another command line option (--no-doxygen) was added to disable
+ creating the doxygen documenation in cases where it not wanted or
+ if the doxygen tool is not installed.
- m4/tuklib_integer.m4 | 11 +++++++++++
- 1 file changed, 11 insertions(+)
+ autogen.sh | 35 +++++++++++++++++++++++++++++------
+ 1 file changed, 29 insertions(+), 6 deletions(-)
-commit 3bc112c2d38d5f348bce7bc2422286b1692c7490
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-06-01 18:41:16 +0300
+commit 1321852a3be7196bd7fcfd146221a5669e46407c
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-16 21:35:55 +0800
- tuklib_integer: Improve unaligned memory access.
+ Build: Create doxygen/update-doxygen script.
- Now memcpy() or GNU C packed structs for unaligned access instead
- of type punning. See the comment in this commit for details.
+ This is a helper script to generate the Doxygen documentation. It can be
+ run in 'liblzma' or 'internal' mode by setting the first argument. It
+ will default to 'liblzma' mode and only generate documentation for the
+ liblzma API header files.
- Avoiding type punning with unaligned access is needed to
- silence gcc -fsanitize=undefined.
+ The helper script will be run during the custom mydist hook when we
+ create releases. This hook already alters the source directory, so its
+ fine to do it here too. This way, we can include the Doxygen generated
+ files in the distrubtion and when installing.
- New functions: unaliged_readXXne and unaligned_writeXXne where
- XX is 16, 32, or 64.
+ In 'liblzma' mode, the JavaScript is stripped from the .html files and
+ the .js files are removed. This avoids license hassle from jQuery and
+ other libraries that Doxygen 1.9.6 puts into jquery.js in minified form.
- src/common/tuklib_integer.h | 180 +++++++++++++++++++++++++++++++++++++++++---
- 1 file changed, 168 insertions(+), 12 deletions(-)
+ Makefile.am | 1 +
+ doxygen/update-doxygen | 111 +++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 112 insertions(+)
-commit 2a22de439ec63da1927b640eda309296a1e8dce5
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-05-13 20:05:17 +0300
+commit b1216a7772952d2fe7fe9c6acfcbd98d30abbc7b
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-16 21:34:36 +0800
- liblzma: Avoid memcpy(NULL, foo, 0) because it is undefined behavior.
+ Build: Install Doxygen docs and include in distribution if generated.
- I should have always known this but I didn't. Here is an example
- as a reminder to myself:
+ Added a install-data-local target to install the Doxygen documentation
+ only when it has been generated. In order to correctly remove the docs,
+ a corresponding uninstall-local target was added.
- int mycopy(void *dest, void *src, size_t n)
- {
- memcpy(dest, src, n);
- return dest == NULL;
- }
+ If the doxygen docs exist in the source tree, they will also be included
+ in the distribution now too.
+
+ Makefile.am | 18 ++++++++++++++++++
+ 1 file changed, 18 insertions(+)
+
+commit c97d12f300b2a94c9f54a44c8931c8bc08cf0a73
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2023-03-16 21:23:48 +0800
+
+ Doxygen: Refactor Doxyfile.in to doxygen/Doxyfile.
- In the example, a compiler may assume that dest != NULL because
- passing NULL to memcpy() would be undefined behavior. Testing
- with GCC 8.2.1, mycopy(NULL, NULL, 0) returns 1 with -O0 and -O1.
- With -O2 the return value is 0 because the compiler infers that
- dest cannot be NULL because it was already used with memcpy()
- and thus the test for NULL gets optimized out.
+ Instead of having Doxyfile.in configured by Autoconf, the Doxyfile
+ can have the tags that need to be configured piped into the doxygen
+ command through stdin with the overrides after Doxyfile's contents.
- In liblzma, if a null-pointer was passed to memcpy(), there were
- no checks for NULL *after* the memcpy() call, so I cautiously
- suspect that it shouldn't have caused bad behavior in practice,
- but it's hard to be sure, and the problematic cases had to be
- fixed anyway.
+ Going forward, the documentation should be generated in two different
+ modes: liblzma or internal.
+
+ liblzma is useful for most users. It is the documentation for just
+ the liblzma API header files. This is the default.
- Thanks to Jeffrey Walton.
+ internal is for people who want to understand how xz and liblzma work.
+ It might be useful for people who want to contribute to the project.
- src/liblzma/common/common.c | 6 +++++-
- src/liblzma/lz/lz_decoder.c | 12 +++++++++---
- src/liblzma/simple/simple_coder.c | 10 +++++++++-
- 3 files changed, 23 insertions(+), 5 deletions(-)
+ .gitignore | 3 +-
+ Makefile.am | 1 -
+ configure.ac | 40 ---
+ Doxyfile.in => doxygen/Doxyfile | 721 +++++++++++++++++++++++++---------------
+ 4 files changed, 456 insertions(+), 309 deletions(-)
-commit d3fc850cfedc058247d9e334ce59bbc8f2286d8a
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-05-11 20:56:08 +0300
+commit 1b7661faa4bbf4a54c6b75900b5059835c382a0f
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-28 23:22:36 +0800
- Update THANKS.
+ Tests: Remove unused macros and functions.
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ tests/tests.h | 75 -----------------------------------------------------------
+ 1 file changed, 75 deletions(-)
-commit 4adb8288ab61d5f14e212007b8742df0710baf73
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-05-11 20:54:12 +0300
+commit af55191102f01e76de658c881299f0909ca0feda
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2022-12-29 21:52:15 +0800
- xz: Update xz man page date.
+ liblzma: Defines masks for return values from lzma_index_checks().
- src/xz/xz.1 | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ src/liblzma/api/lzma/index.h | 23 +++++++++++++++++++++++
+ tests/test_index.c | 22 +++++++++++-----------
+ 2 files changed, 34 insertions(+), 11 deletions(-)
-commit 2fb0ddaa557ce86e38fe06439930fa8665f092fd
-Author: Antoine Cœur <antoine.coeur@ef.com>
-Date: 2019-05-08 13:30:57 +0800
+commit 8f38cdd9ab71e2a9d5a9787550222b7578243b73
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-12 22:29:07 +0800
- spelling
+ Tests: Refactors existing lzma_index tests.
+
+ Converts the existing lzma_index tests into tuktests and covers every
+ API function from index.h except for lzma_file_info_decoder, which can
+ be tested in the future.
- Doxyfile.in | 2 +-
- NEWS | 2 +-
- doc/examples/11_file_info.c | 2 +-
- src/liblzma/api/lzma/block.h | 2 +-
- src/liblzma/api/lzma/hardware.h | 2 +-
- src/liblzma/api/lzma/lzma12.h | 2 +-
- src/liblzma/api/lzma/vli.h | 2 +-
- src/liblzma/common/file_info.c | 4 ++--
- src/liblzma/common/hardware_physmem.c | 2 +-
- src/liblzma/common/index.c | 4 ++--
- src/liblzma/common/stream_encoder_mt.c | 2 +-
- src/liblzma/common/vli_decoder.c | 2 +-
- src/liblzma/lz/lz_decoder.c | 2 +-
- src/scripts/xzgrep.in | 2 +-
- src/xz/args.c | 2 +-
- src/xz/coder.c | 4 ++--
- src/xz/list.c | 4 ++--
- src/xz/main.c | 2 +-
- src/xz/mytime.h | 2 +-
- src/xz/private.h | 2 +-
- src/xz/xz.1 | 2 +-
- windows/build.bash | 2 +-
- 22 files changed, 26 insertions(+), 26 deletions(-)
+ tests/test_index.c | 2036 ++++++++++++++++++++++++++++++++++++++--------------
+ 1 file changed, 1492 insertions(+), 544 deletions(-)
-commit 4ed339606156bd313ed99237485cb8ed0362d64f
+commit 717aa3651ce582807f379d8654c2516e1594df77
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-05-01 18:43:10 +0300
+Date: 2023-03-11 18:42:08 +0200
- xz: In xz -lvv look at the widths of the check names too.
+ xz: Simplify the error-label in Capsicum sandbox code.
- Now the widths of the check names is used to adjust the width
- of the Check column. This way there no longer is a need to restrict
- the widths of the check names to be at most ten terminal-columns.
+ Also remove unneeded "sandbox_allowed = false;" as this code
+ will never be run more than once (making it work with multiple
+ input files isn't trivial).
- src/xz/list.c | 32 ++++++++++++++++++++++++++------
- 1 file changed, 26 insertions(+), 6 deletions(-)
+ src/xz/file_io.c | 27 ++++++++++++---------------
+ 1 file changed, 12 insertions(+), 15 deletions(-)
-commit 2f4281a1001dcf7fdf1418c0c0d246c16561fb65
+commit a0eecc235d3ba8ad3453da98b46c7bc3e644de75
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-05-01 18:33:25 +0300
+Date: 2023-03-07 19:59:23 +0200
- xz: Fix xz -lvv column alignment to look at the translated strings.
+ xz: Make Capsicum sandbox more strict with stdin and stdout.
- src/xz/list.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ src/xz/file_io.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
-commit 01d01b7c7c0b8eaf7f780a5584ec52c22d10fa4a
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-05-01 16:52:36 +0300
+commit 916448d624aaf55cef0fc3e53754affb8c4f309d
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-08 23:08:46 +0800
- Update THANKS.
+ Revert: "Add warning if Capsicum sandbox system calls are unsupported."
+
+ The warning causes the exit status to be 2, so this will cause problems
+ for many scripted use cases for xz. The sandbox usage is already very
+ limited already, so silently disabling this allows it to be more usable.
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ src/xz/file_io.c | 10 ++++------
+ 1 file changed, 4 insertions(+), 6 deletions(-)
-commit 64030c6b17f7743df03a9948a0ccfcdf40c6b97c
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-05-01 16:43:16 +0300
+commit 01587dda2a8f13fef7e12fd624e6d05da5f9624f
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-07 20:02:22 +0800
- Windows: Update VS version in windows/vs2019/config.h.
+ xz: Fix -Wunused-label in io_sandbox_enter().
+
+ Thanks to Xin Li for recommending the fix.
- windows/vs2019/config.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ src/xz/file_io.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit 2dc9117f5fbfab31444a3ca1e55795ccfa8a9f51
-Author: Julien Marrec <julien.marrec@gmail.com>
-Date: 2019-04-25 17:44:06 +0200
+commit 5fb936786601a1cd013a5d436adde65982b1e13c
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-06 21:37:45 +0800
- Windows: Upgrade solution itself
+ xz: Add warning if Capsicum sandbox system calls are unsupported.
+
+ The warning is only used when errno == ENOSYS. Otherwise, xz still
+ issues a fatal error.
- windows/vs2019/xz_win.sln | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
+ src/xz/file_io.c | 2 ++
+ 1 file changed, 2 insertions(+)
-commit ac31413916fa9b11bab17f0f0aa63e2869360f6f
-Author: Julien Marrec <julien.marrec@gmail.com>
-Date: 2019-04-25 17:40:24 +0200
+commit 61ee82cb1232a402c82282bbae42821f2b952b0d
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-06 21:27:53 +0800
- Windows: Upgrade solution with VS2019
+ xz: Skip Capsicum sandbox system calls when they are unsupported.
+
+ If a system has the Capsicum header files but does not actually
+ implement the system calls, then this would render xz unusable. Instead,
+ we can check if errno == ENOSYS and not issue a fatal error.
- windows/vs2019/liblzma.vcxproj | 15 ++++++++-------
- windows/vs2019/liblzma_dll.vcxproj | 15 ++++++++-------
- 2 files changed, 16 insertions(+), 14 deletions(-)
+ src/xz/file_io.c | 22 +++++++++++++++++-----
+ 1 file changed, 17 insertions(+), 5 deletions(-)
-commit be25a0c37ba92a20c390b4d17fe502457fe96b71
-Author: Julien Marrec <julien.marrec@gmail.com>
-Date: 2019-04-25 17:39:32 +0200
+commit f070722b57ba975a0dff36492d766f03026b1d21
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-03-06 21:08:26 +0800
- Windows: Duplicate windows/vs2017 before upgrading
+ xz: Reorder cap_enter() to beginning of capsicum sandbox code.
+
+ cap_enter() puts the process into the sandbox. If later calls to
+ cap_rights_limit() fail, then the process can still have some extra
+ protections.
- windows/vs2019/config.h | 148 ++++++++++++++
- windows/vs2019/liblzma.vcxproj | 356 ++++++++++++++++++++++++++++++++++
- windows/vs2019/liblzma_dll.vcxproj | 385 +++++++++++++++++++++++++++++++++++++
- windows/vs2019/xz_win.sln | 48 +++++
- 4 files changed, 937 insertions(+)
+ src/xz/file_io.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
-commit d0e58b3a51e8e616f3dc26ec7b7e4aa0fa6991ad
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-03-04 22:49:04 +0200
+commit f1ab1f6b339d16a53ac53efeb97779ecd2bae70f
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-24 23:46:23 +0800
- README: Update translation instructions.
+ liblzma: Clarify lzma_lzma_preset() documentation in lzma12.h.
+
+ lzma_lzma_preset() does not guarentee that the lzma_options_lzma are
+ usable in an encoder even if it returns false (success). If liblzma
+ is built with default configurations, then the options will always be
+ usable. However if the match finders hc3, hc4, or bt4 are disabled, then
+ the options may not be usable depending on the preset level requested.
- XZ Utils is now part of the Translation Project
- <https://translationproject.org/>.
+ The documentation was updated to reflect this complexity, since this
+ behavior was unclear before.
- README | 32 +++++++++++++-------------------
- 1 file changed, 13 insertions(+), 19 deletions(-)
+ src/liblzma/api/lzma/lzma12.h | 5 +++++
+ 1 file changed, 5 insertions(+)
-commit a750c35a7d45a16c11c1d40fecee8443c32a9996
+commit 4b7fb3bf41a0ca4c97fad3799949a2aa61b13b99
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-03-04 21:20:39 +0200
+Date: 2023-02-27 18:38:35 +0200
+
+ CMake: Require that the C compiler supports C99 or a newer standard.
+
+ Thanks to autoantwort for reporting the issue and suggesting
+ a different patch:
+ https://github.com/tukaani-project/xz/pull/42
- xz: Automatically align column headings in xz -lvv.
+ CMakeLists.txt | 8 ++++++++
+ 1 file changed, 8 insertions(+)
- src/xz/list.c | 263 ++++++++++++++++++++++++++++++++++++++++++++++------------
- 1 file changed, 212 insertions(+), 51 deletions(-)
+commit 9aa7fdeb04c486d2700967090956af88fdccab7e
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-24 18:10:37 +0800
-commit 6cb42e8aa1dc37bf403a9f5acbd07e86036b7e77
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-03-04 01:07:59 +0200
+ Tests: Small tweak to test-vli.c.
+
+ The static global variables can be disabled if encoders and decoders
+ are not built. If they are not disabled and -Werror is used, it will
+ cause an usused warning as an error.
- xz: Automatically align strings ending in a colon in --list output.
+ tests/test_vli.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 3cf72c4bcba5370f07477c9b9b62ae33069ef9a9
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-06 21:46:43 +0800
+
+ liblzma: Replace '\n' -> newline in filter.h documentation.
- This should avoid alignment errors in translations with these
- strings.
+ The '\n' renders as a newline when the comments are converted to html
+ by Doxygen.
- src/xz/list.c | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++-------
- 1 file changed, 102 insertions(+), 12 deletions(-)
+ src/liblzma/api/lzma/filter.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 1e3f29b62f2c03e50fc9ebea7b83c1497dd35484
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2019-01-13 17:29:23 +0200
+commit 002006be62d77c706565fa6ec828bea64be302da
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-06 21:45:37 +0800
- Windows/VS2017: Omit WindowsTargetPlatformVersion from project files.
+ liblzma: Shorten return description for two functions in filter.h.
- I understood that if a WTPV is specified, it's often wrong
- because different VS installations have different SDK version
- installed. Omitting the WTPV tag makes VS2017 default to
- Windows SDK 8.1 which often is also missing, so in any case
- people may need to specify the WTPV before building. But some
- day in the future a missing WTPV tag will start to default to
- the latest installed SDK which sounds reasonable:
+ Shorten the description for lzma_raw_encoder_memusage() and
+ lzma_raw_decoder_memusage().
+
+ src/liblzma/api/lzma/filter.h | 8 ++------
+ 1 file changed, 2 insertions(+), 6 deletions(-)
+
+commit 463d9359b8595f01d44ada1739d75aeb87f36524
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-06 21:44:45 +0800
+
+ liblzma: Reword a few lines in filter.h
+
+ src/liblzma/api/lzma/filter.h | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+commit 01441df92c0fd6a6c02fe5ac27982a54ce887cc0
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-06 21:35:06 +0800
+
+ liblzma: Improve documentation in filter.h.
- https://developercommunity.visualstudio.com/content/problem/140294/windowstargetplatformversion-makes-it-impossible-t.html
+ All functions now explicitly specify parameter and return values.
+ The notes and code annotations were moved before the parameter and
+ return value descriptions for consistency.
- Thanks to "dom".
+ Also, the description above lzma_filter_encoder_is_supported() about
+ not being able to list available filters was removed since
+ lzma_str_list_filters() will do this.
- windows/INSTALL-MSVC.txt | 4 ++++
- windows/vs2017/liblzma.vcxproj | 1 -
- windows/vs2017/liblzma_dll.vcxproj | 1 -
- 3 files changed, 4 insertions(+), 2 deletions(-)
+ src/liblzma/api/lzma/filter.h | 226 ++++++++++++++++++++++++++----------------
+ 1 file changed, 143 insertions(+), 83 deletions(-)
-commit 4d86076332aece6314063d3712a5f364172bbb0f
+commit 805b45cd60bfd5da3d3d89077de3789df179b324
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2018-12-20 20:42:29 +0200
+Date: 2023-02-23 20:46:16 +0200
Update THANKS.
THANKS | 1 +
1 file changed, 1 insertion(+)
-commit b55d79461d1f6aeaac03c7dae84481e5eb8bea4c
+commit 30e95bb44c36ae26b2ab12a94343b215fec285e7
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2018-12-14 20:34:30 +0200
+Date: 2023-02-21 22:57:10 +0200
- xz: Fix a crash in progress indicator when in passthru mode.
+ liblzma: Avoid null pointer + 0 (undefined behavior in C).
+
+ In the C99 and C17 standards, section 6.5.6 paragraph 8 means that
+ adding 0 to a null pointer is undefined behavior. As of writing,
+ "clang -fsanitize=undefined" (Clang 15) diagnoses this. However,
+ I'm not aware of any compiler that would take advantage of this
+ when optimizing (Clang 15 included). It's good to avoid this anyway
+ since compilers might some day infer that pointer arithmetic implies
+ that the pointer is not NULL. That is, the following foo() would then
+ unconditionally return 0, even for foo(NULL, 0):
+
+ void bar(char *a, char *b);
+
+ int foo(char *a, size_t n)
+ {
+ bar(a, a + n);
+ return a == NULL;
+ }
+
+ In contrast to C, C++ explicitly allows null pointer + 0. So if
+ the above is compiled as C++ then there is no undefined behavior
+ in the foo(NULL, 0) call.
+
+ To me it seems that changing the C standard would be the sane
+ thing to do (just add one sentence) as it would ensure that a huge
+ amount of old code won't break in the future. Based on web searches
+ it seems that a large number of codebases (where null pointer + 0
+ occurs) are being fixed instead to be future-proof in case compilers
+ will some day optimize based on it (like making the above foo(NULL, 0)
+ return 0) which in the worst case will cause security bugs.
+
+ Some projects don't plan to change it. For example, gnulib and thus
+ many GNU tools currently require that null pointer + 0 is defined:
- "xz -dcfv not_an_xz_file" crashed (all four options are
- required to trigger it). It caused xz to call
- lzma_get_progress(&strm, ...) when no coder was initialized
- in strm. In this situation strm.internal is NULL which leads
- to a crash in lzma_get_progress().
+ https://lists.gnu.org/archive/html/bug-gnulib/2021-11/msg00000.html
- The bug was introduced when xz started using lzma_get_progress()
- to get progress info for multi-threaded compression, so the
- bug is present in versions 5.1.3alpha and higher.
+ https://www.gnu.org/software/gnulib/manual/html_node/Other-portability-assumptions.html
- Thanks to Filip Palian <Filip.Palian@pjwstk.edu.pl> for
- the bug report.
+ In XZ Utils null pointer + 0 issue should be fixed after this
+ commit. This adds a few if-statements and thus branches to avoid
+ null pointer + 0. These check for size > 0 instead of ptr != NULL
+ because this way bugs where size > 0 && ptr == NULL will likely
+ get caught quickly. None of them are in hot spots so it shouldn't
+ matter for performance.
+
+ A little less readable version would be replacing
+
+ ptr + offset
+
+ with
+
+ offset != 0 ? ptr + offset : ptr
+
+ or creating a macro for it:
+
+ #define my_ptr_add(ptr, offset) \
+ ((offset) != 0 ? ((ptr) + (offset)) : (ptr))
+
+ Checking for offset != 0 instead of ptr != NULL allows GCC >= 8.1,
+ Clang >= 7, and Clang-based ICX to optimize it to the very same code
+ as ptr + offset. That is, it won't create a branch. So for hot code
+ this could be a good solution to avoid null pointer + 0. Unfortunately
+ other compilers like ICC 2021 or MSVC 19.33 (VS2022) will create a
+ branch from my_ptr_add().
+
+ Thanks to Marcin Kowalczyk for reporting the problem:
+ https://github.com/tukaani-project/xz/issues/36
- src/xz/coder.c | 11 +++++++----
- src/xz/message.c | 18 ++++++++++++++++--
- src/xz/message.h | 3 ++-
- 3 files changed, 25 insertions(+), 7 deletions(-)
+ src/liblzma/common/block_decoder.c | 5 ++++-
+ src/liblzma/common/block_encoder.c | 7 +++++--
+ src/liblzma/common/common.c | 20 ++++++++++++++------
+ src/liblzma/common/index_decoder.c | 13 ++++++++++---
+ src/liblzma/common/index_encoder.c | 11 +++++++++--
+ src/liblzma/common/index_hash.c | 13 ++++++++++---
+ src/liblzma/common/lzip_decoder.c | 6 +++++-
+ src/liblzma/delta/delta_decoder.c | 7 ++++++-
+ src/liblzma/delta/delta_encoder.c | 12 ++++++++++--
+ src/liblzma/simple/simple_coder.c | 6 ++++--
+ 10 files changed, 77 insertions(+), 23 deletions(-)
-commit 4ae5526de013efd1021686fa80bdd10cf1cb9c56
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2018-11-22 17:20:31 +0200
+commit fa9065fac54194fe0407fc7f0cc9633fdce13c21
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-07 00:00:44 +0800
- xz: Update man page timestamp.
+ liblzma: Adjust container.h for consistency with filter.h.
- src/xz/xz.1 | 2 +-
+ src/liblzma/api/lzma/container.h | 20 +++++++++-----------
+ 1 file changed, 9 insertions(+), 11 deletions(-)
+
+commit 00a721b63d82dfb658dca8d8cb599d8a245c663f
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-07 00:00:09 +0800
+
+ liblzma: Fix small typos and reword a few things in filter.h.
+
+ src/liblzma/api/lzma/container.h | 13 ++++++-------
+ 1 file changed, 6 insertions(+), 7 deletions(-)
+
+commit 5b1c171d4ffe89ef18fa31509bb0185d6fd11d39
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-06 23:42:08 +0800
+
+ liblzma: Convert list of flags in lzma_mt to bulleted list.
+
+ src/liblzma/api/lzma/container.h | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+commit dbd47622eb99fefb3538a22baec3def002aa56f5
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-26 23:17:41 +0800
+
+ liblzma: Fix typo in documentation in container.h
+
+ lzma_microlzma_decoder -> lzma_microlzma_encoder
+
+ src/liblzma/api/lzma/container.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-commit 6a36d0d5f49e0080ff64dd9ef250abd489bea2ad
-Author: Pavel Raiskup <praiskup@redhat.com>
-Date: 2018-11-22 15:14:34 +0100
+commit 14cd30806d69e55906073745bcce3ee50e0ec942
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-26 23:16:34 +0800
- 'have have' typos
+ liblzma: Improve documentation for container.h
+
+ Standardizing each function to always specify parameters and return
+ values. Also moved the parameters and return values to the end of each
+ function description.
- src/xz/signals.c | 2 +-
- src/xz/xz.1 | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
+ src/liblzma/api/lzma/container.h | 146 +++++++++++++++++++++++++--------------
+ 1 file changed, 93 insertions(+), 53 deletions(-)
-commit 9eca51ef805ed8002a851df1b4995d71826c8b6e
+commit c9c8bfae3502842dcead85eeb2b951b437c2cd88
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-22 20:59:41 +0800
+
+ CMake: Add LZIP decoder test to list of tests.
+
+ CMakeLists.txt | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit b9f171dd00a3cc32b6d41ea8e082cf545640ec2a
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2018-11-02 20:40:48 +0200
+Date: 2023-02-17 20:56:49 +0200
Update THANKS.
THANKS | 1 +
1 file changed, 1 insertion(+)
-commit 106d1a663d4ba42b63231caa289f531548df81c1
+commit 2ee86d20e49985b903b78ebcfa3fa672e73e93aa
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2018-11-02 20:18:45 +0200
+Date: 2023-02-17 20:48:28 +0200
- Tests: Add a fuzz test program and a config file for OSS-Fuzz.
+ Build: Use only the generic symbol versioning on MicroBlaze.
+
+ On MicroBlaze, GCC 12 is broken in sense that
+ __has_attribute(__symver__) returns true but it still doesn't
+ support the __symver__ attribute even though the platform is ELF
+ and symbol versioning is supported if using the traditional
+ __asm__(".symver ...") method. Avoiding the traditional method is
+ good because it breaks LTO (-flto) builds with GCC.
+
+ See also: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101766
+
+ For now the only extra symbols in liblzma_linux.map are the
+ compatibility symbols with the patch that spread from RHEL/CentOS 7.
+ These require the use of __symver__ attribute or __asm__(".symver ...")
+ in the C code. Compatibility with the patch from CentOS 7 doesn't
+ seem valuable on MicroBlaze so use liblzma_generic.map on MicroBlaze
+ instead. It doesn't require anything special in the C code and thus
+ no LTO issues either.
+
+ An alternative would be to detect support for __symver__
+ attribute in configure.ac and CMakeLists.txt and fall back
+ to __asm__(".symver ...") but then LTO would be silently broken
+ on MicroBlaze. It sounds likely that MicroBlaze is a special
+ case so let's treat it as a such because that is simpler. If
+ a similar issue exists on some other platform too then hopefully
+ someone will report it and this can be reconsidered.
+
+ (This doesn't do the same fix in CMakeLists.txt. Perhaps it should
+ but perhaps CMake build of liblzma doesn't matter much on MicroBlaze.
+ The problem breaks the build so it's easy to notice and can be fixed
+ later.)
- Thanks to Bhargava Shastry and Github user pdknsk.
+ Thanks to Vincent Fazio for reporting the problem and proposing
+ a patch (in the end that solution wasn't used):
+ https://github.com/tukaani-project/xz/pull/32
- tests/Makefile.am | 1 +
- tests/ossfuzz/Makefile | 7 ++++
- tests/ossfuzz/config/fuzz.dict | 2 +
- tests/ossfuzz/config/fuzz.options | 2 +
- tests/ossfuzz/fuzz.c | 82 +++++++++++++++++++++++++++++++++++++++
- 5 files changed, 94 insertions(+)
+ configure.ac | 12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
-commit a18ae42a79a19b1394b41eb3e238139fd28012ec
+commit d831072cceca458d94d2d5da201862f6d43a417b
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2018-10-26 22:49:10 +0300
+Date: 2023-02-16 21:09:00 +0200
- liblzma: Don't verify header CRC32s if building for fuzz testing.
+ liblzma: Very minor API doc tweaks.
- FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION is #defined when liblzma
- is being built for fuzz testing.
+ Use "member" to refer to struct members as that's the term used
+ by the C standard.
- Most fuzzed inputs would normally get rejected because of incorrect
- CRC32 and the actual header decoding code wouldn't get fuzzed.
- Disabling CRC32 checks avoids this problem. The fuzzer program
- must still use LZMA_IGNORE_CHECK flag to disable verification of
- integrity checks of uncompressed data.
+ Use lzma_options_delta.dist and such in docs so that in Doxygen's
+ HTML output they will link to the doc of the struct member.
+
+ Clean up a few trailing white spaces too.
- src/liblzma/common/block_header_decoder.c | 5 ++++-
- src/liblzma/common/index_decoder.c | 5 ++++-
- src/liblzma/common/index_hash.c | 5 ++++-
- src/liblzma/common/stream_flags_decoder.c | 10 ++++++++--
- 4 files changed, 20 insertions(+), 5 deletions(-)
+ src/liblzma/api/lzma/block.h | 6 +++---
+ src/liblzma/api/lzma/delta.h | 6 +++---
+ src/liblzma/api/lzma/index.h | 10 +++++-----
+ src/liblzma/api/lzma/stream_flags.h | 6 +++---
+ 4 files changed, 14 insertions(+), 14 deletions(-)
+
+commit f029daea39c215fd7d5cb6b6798818b055cf5b22
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-17 00:54:33 +0800
+
+ liblzma: Adjust spacing in doc headers in bcj.h.
+
+ src/liblzma/api/lzma/bcj.h | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
-commit f76f7516d6a1c832f61810c82e92d151cc80966c
+commit a5de68bac2bb7e1b9119e6cea7d761a22ea73e9c
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-17 00:44:44 +0800
+
+ liblzma: Adjust documentation in bcj.h for consistent style.
+
+ src/liblzma/api/lzma/bcj.h | 43 ++++++++++++++++++++++---------------------
+ 1 file changed, 22 insertions(+), 21 deletions(-)
+
+commit efa498c13b883810497e0ea8a169efd6f48f5026
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-17 00:36:05 +0800
+
+ liblzma: Rename field => member in documentation.
+
+ Also adjusted preset value => preset level.
+
+ src/liblzma/api/lzma/base.h | 18 +++++++--------
+ src/liblzma/api/lzma/block.h | 44 ++++++++++++++++++-------------------
+ src/liblzma/api/lzma/container.h | 26 +++++++++++-----------
+ src/liblzma/api/lzma/delta.h | 12 +++++-----
+ src/liblzma/api/lzma/index.h | 30 ++++++++++++-------------
+ src/liblzma/api/lzma/lzma12.h | 28 +++++++++++------------
+ src/liblzma/api/lzma/stream_flags.h | 32 +++++++++++++--------------
+ 7 files changed, 95 insertions(+), 95 deletions(-)
+
+commit 718b22a6c5e3ee5de123323ea798872381f9320e
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2018-07-27 18:10:44 +0300
+Date: 2023-02-16 17:59:50 +0200
- xzless: Rename unused variables to silence static analysers.
+ liblzma: Silence a warning from MSVC.
- In this particular case I don't see this affecting readability
- of the code.
+ It gives C4146 here since unary minus with unsigned integer
+ is still unsigned (which is the intention here). Doing it
+ with substraction makes it clearer and avoids the warning.
- Thanks to Pavel Raiskup.
+ Thanks to Nathan Moinvaziri for reporting this.
- src/scripts/xzless.in | 2 +-
+ src/liblzma/check/crc64_fast.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-commit 3cbcaeb07eb7543735befd6f507fdb5fa4363cff
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2018-07-27 16:02:58 +0300
+commit 87c53553fa7d50f777b4edfa99f2083628f590fe
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-16 21:04:54 +0800
- liblzma: Remove an always-true condition from lzma_index_cat().
+ liblzma: Improve documentation for stream_flags.h
- This should help static analysis tools to see that newg
- isn't leaked.
+ Standardizing each function to always specify parameters and return
+ values. Also moved the parameters and return values to the end of each
+ function description.
- Thanks to Pavel Raiskup.
+ A few small things were reworded and long sentences broken up.
- src/liblzma/common/index.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ src/liblzma/api/lzma/stream_flags.h | 76 ++++++++++++++++++++++---------------
+ 1 file changed, 46 insertions(+), 30 deletions(-)
-commit 76762ae6098ec55c326f4b4b4a42e8c1918ee81f
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2018-05-19 21:23:25 +0300
+commit 13d99e75a543e9e5f8633cc241eae55b91a3b242
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-14 21:50:16 +0800
- liblzma: Improve lzma_properties_decode() API documentation.
+ liblzma: Improve documentation in lzma12.h.
+
+ All functions now explicitly specify parameter and return values.
- src/liblzma/api/lzma/filter.h | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
+ src/liblzma/api/lzma/lzma12.h | 32 +++++++++++++++++++++++---------
+ 1 file changed, 23 insertions(+), 9 deletions(-)
-commit 2267f5b0d20a5d24e93fcd9f72ea7eeb0d89708c
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2018-04-29 18:58:19 +0300
+commit 43ec344c868f930e96879eb9e49212cce92a9884
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-27 22:44:06 +0800
- Bump the version number to 5.3.1alpha.
+ liblzma: Improve documentation in check.h.
+
+ All functions now explicitly specify parameter and return values.
+ Also moved the note about SHA-256 functions not being exported to the
+ top of the file.
- src/liblzma/api/lzma/version.h | 2 +-
- src/liblzma/liblzma.map | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
+ src/liblzma/api/lzma/check.h | 41 ++++++++++++++++++++++++++++-------------
+ 1 file changed, 28 insertions(+), 13 deletions(-)
-commit cee3021d30704858e4bdd22240e7d28e570d7451
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2018-04-29 18:48:00 +0300
+commit 9c71db4e884fd49aea3d1e711036bff45ca66487
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-08 21:33:52 +0800
- extra/scanlzma: Fix compiler warnings.
+ liblzma: Improve documentation in index.h
+
+ All functions now explicitly specify parameter and return values.
- extra/scanlzma/scanlzma.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
+ src/liblzma/api/lzma/index.h | 177 ++++++++++++++++++++++++++++++-------------
+ 1 file changed, 126 insertions(+), 51 deletions(-)
-commit c5c7ceb08a011b97d261798033e2c39613a69eb7
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2018-04-29 18:44:47 +0300
+commit 421f2f2e160720f6009e3b6a125cafe2feaa9419
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-08 20:35:32 +0800
- DOS: Add file_info.c to the list of files to build.
+ liblzma: Reword a comment in index.h.
- dos/Makefile | 1 +
- 1 file changed, 1 insertion(+)
+ src/liblzma/api/lzma/index.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit 114cab97af766b21e0fc8620479202fb1e7a5e41
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2018-04-29 18:33:10 +0300
+commit b67539484981351d501b68de5e925425e50c59b1
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-08 20:30:23 +0800
- Update NEWS for 5.3.1alpha.
+ liblzma: Omit lzma_index_iter's internal field from Doxygen docs.
+
+ Add \private above this field and its sub-fields since it is not meant
+ to be modified by users.
- NEWS | 11 +++++++++++
- 1 file changed, 11 insertions(+)
+ src/liblzma/api/lzma/index.h | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
-commit b8139e11c512bbf32bf58ab0689f9bb6c52819da
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2018-04-29 18:15:37 +0300
+commit 0c9e4fc2ad6d88d54f299240fcc5a2ce7d695d96
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-21 21:32:03 +0800
- Add NEWS for 5.2.4.
+ liblzma: Fix documentation for LZMA_MEMLIMIT_ERROR.
+
+ LZMA_MEMLIMIT_ERROR was missing the "<" character needed to put
+ documentation after a member.
- NEWS | 27 +++++++++++++++++++++++++++
- 1 file changed, 27 insertions(+)
+ src/liblzma/api/lzma/base.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 47b59d47cfd904a420fbd45629d168ca1973721d
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2018-02-06 19:36:30 +0200
+commit 816fec125aa74bcef46512c73acc6d9e5a700d15
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-21 00:29:38 +0800
- Update THANKS.
+ liblzma: Improve documentation for base.h.
+
+ Standardizing each function to always specify params and return values.
+ Also fixed a small grammar mistake.
- THANKS | 2 ++
- 1 file changed, 2 insertions(+)
+ src/liblzma/api/lzma/base.h | 30 +++++++++++++++++++++++++-----
+ 1 file changed, 25 insertions(+), 5 deletions(-)
+
+commit 862dacef1a4e7e1b28d465956fa4244ed01df154
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-14 00:12:34 +0800
-commit bc197991690ede24ab143665b5b0f0f9cb35cc46
-Author: Ben Boeckel <mathstuf@gmail.com>
-Date: 2018-01-29 13:58:18 -0500
+ liblzma: Add one more missing [out] annotation in vli.h
- nothrow: use noexcept for C++11 and newer
+ src/liblzma/api/lzma/vli.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 867b08ae4254bf55dd1f7fd502cc618231b92f75
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-14 00:08:33 +0800
+
+ liblzma: Minor improvements to vli.h.
- In C++11, the `throw()` specifier is deprecated and `noexcept` is
- preffered instead.
+ Added [out] annotations to parameters that are pointers and can have
+ their value changed. Also added a clarification to lzma_vli_is_valid.
- src/liblzma/api/lzma.h | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
+ src/liblzma/api/lzma/vli.h | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
-commit fb6d4f83cb6e144734f2a4216bb117bd56dc3cb5
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2018-02-06 18:02:48 +0200
+commit 90d0e628ff11e5030bcc4fc000bca056adda6603
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-10 21:38:02 +0800
- liblzma: Remove incorrect #ifdef from range_common.h.
+ liblzma: Add comments for macros in delta.h.
- In most cases it was harmless but it could affect some
- custom build systems.
+ Document LZMA_DELTA_DIST_MIN and LZMA_DELTA_DIST_MAX for completeness
+ and to avoid Doxygen warnings.
+
+ src/liblzma/api/lzma/delta.h | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+commit 9255fffdb13e59874bf7f95c370c410ad3a7e114
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-10 21:35:23 +0800
+
+ liblzma: Improve documentation in index_hash.h.
- Thanks to Pippijn van Steenhoven.
+ All functions now explicitly specify parameter and return values.
+ Also reworded the description of lzma_index_hash_init() for readability.
- src/liblzma/rangecoder/range_common.h | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
+ src/liblzma/api/lzma/index_hash.h | 36 +++++++++++++++++++++++++++---------
+ 1 file changed, 27 insertions(+), 9 deletions(-)
-commit bc577d35c2d0ed17f554d2d8107b2a2a9abbac76
+commit 1dbe12b90cff79bb51923733ac0840747b4b4131
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2018-01-10 22:10:39 +0200
+Date: 2023-02-07 19:07:45 +0200
- Update THANKS.
+ xz: Improve the comment about start_time in mytime.c.
+
+ start_time is relative to an arbitary point in time, it's not
+ time of day, so using it for anything else than time differences
+ wouldn't make sense.
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ src/xz/mytime.c | 15 ++++++++++-----
+ 1 file changed, 10 insertions(+), 5 deletions(-)
-commit 713bbc1a80f26d34c96ed3dbb9887362204de3a1
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2018-01-10 21:54:27 +0200
+commit 7673ef5aa80c1af7fb693360dd82f527b46c2c56
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-04 21:06:35 +0800
- tuklib_integer: New Intel C compiler needs immintrin.h.
+ Build: Adjust CMake version search regex.
- Thanks to Melanie Blower (Intel) for the patch.
+ Now, the LZMA_VERSION_MAJOR, LZMA_VERSION_MINOR, and LZMA_VERSION_PATCH
+ macros do not need to be on consecutive lines in version.h. They can be
+ separated by more whitespace, comments, or even other content, as long
+ as they appear in the proper order (major, minor, patch).
- src/common/tuklib_integer.h | 11 +++++++++++
- 1 file changed, 11 insertions(+)
+ CMakeLists.txt | 2 ++
+ 1 file changed, 2 insertions(+)
-commit a0ee1afbd99da138b559cb27fa2022e7f1ab44f3
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2017-09-24 20:04:24 +0300
+commit b8bce89be7fb5bffe5fef4a2782ca9b2b107eaac
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-04 12:01:23 +0800
- Update THANKS.
+ xz: Add a comment clarifying the use of start_time in mytime.c.
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ src/xz/mytime.c | 5 +++++
+ 1 file changed, 5 insertions(+)
-commit a1e2c568de29c0b57d873eab40a2879b749da429
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2017-09-16 20:36:20 +0300
+commit 912af91b10a18fb9bb3167247ecaaefca8248ee9
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-26 09:50:21 +0800
- Windows: Fix paths in VS project files.
+ liblzma: Improve documentation for version.h.
- Some paths use slashes instead of backslashes as directory
- separators... now it should work (I tested VS2013 version).
+ Specified parameter and return values for API functions and documented
+ a few more of the macros.
- windows/vs2013/liblzma.vcxproj | 12 ++++++------
- windows/vs2013/liblzma_dll.vcxproj | 24 ++++++++++++------------
- windows/vs2017/liblzma.vcxproj | 12 ++++++------
- windows/vs2017/liblzma_dll.vcxproj | 24 ++++++++++++------------
- 4 files changed, 36 insertions(+), 36 deletions(-)
+ src/liblzma/api/lzma/version.h | 29 ++++++++++++++++++++++-------
+ 1 file changed, 22 insertions(+), 7 deletions(-)
-commit cea5cf8d26c9d1dc30a808614d79c0b25640e15e
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2017-09-16 12:56:20 +0300
+commit 850adec171203cd22b57d016084d713f72ae5307
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-03 22:52:55 +0800
- Windows: Update VS2017 project files to include file info decoder.
+ Docs: Omit SIGTSTP not handled from TODO.
- windows/vs2017/liblzma.vcxproj | 2 ++
- windows/vs2017/liblzma_dll.vcxproj | 2 ++
- 2 files changed, 4 insertions(+)
+ TODO | 4 ----
+ 1 file changed, 4 deletions(-)
-commit 95d563db3ee497b223e522b699c4d4c29943eef0
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2017-09-16 12:54:23 +0300
+commit 2c78a83c6faec70154d9eb78022a618ed62cdcb3
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-03 00:33:32 +0800
- Windows: Add project files for VS2017.
+ liblzma: Fix bug in lzma_str_from_filters() not checking filters[] length.
- These files match the v5.2 branch (no file info decoder).
+ The bug is only a problem in applications that do not properly terminate
+ the filters[] array with LZMA_VLI_UNKNOWN or have more than
+ LZMA_FILTERS_MAX filters. This bug does not affect xz.
- windows/vs2017/config.h | 148 ++++++++++++++
- windows/vs2017/liblzma.vcxproj | 355 ++++++++++++++++++++++++++++++++++
- windows/vs2017/liblzma_dll.vcxproj | 384 +++++++++++++++++++++++++++++++++++++
- windows/vs2017/xz_win.sln | 48 +++++
- 4 files changed, 935 insertions(+)
+ src/liblzma/common/string_conversion.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
-commit ab72416d62ea8f50ad31d5b8545fcb6a2bf96b73
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2017-09-16 12:45:50 +0300
+commit e01f01b9af1c074463b92694a16ecc16a31907c0
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-03 00:32:47 +0800
- Windows: Update VS2013 project files to include file info decoder.
+ Tests: Create test_filter_str.c.
+
+ Tests lzma_str_to_filters(), lzma_str_from_filters(), and
+ lzma_str_list_filters() API functions.
- windows/vs2013/liblzma.vcxproj | 2 ++
- windows/vs2013/liblzma_dll.vcxproj | 2 ++
- 2 files changed, 4 insertions(+)
+ CMakeLists.txt | 1 +
+ tests/Makefile.am | 2 +
+ tests/test_filter_str.c | 593 ++++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 596 insertions(+)
-commit 82388980187b0e3794d187762054200bbdcc9a53
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2017-09-16 12:39:43 +0300
+commit 8dfc029e7a4ce45809c30313dc0e502f0d22be26
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-22 08:49:00 +0800
- Windows: Move VS2013 files into windows/vs2013 directory.
+ liblzma: Fix typos in comments in string_conversion.c.
- windows/{ => vs2013}/config.h | 0
- windows/{ => vs2013}/liblzma.vcxproj | 278 +++++++++++++++---------------
- windows/{ => vs2013}/liblzma_dll.vcxproj | 280 +++++++++++++++----------------
- windows/{ => vs2013}/xz_win.sln | 0
- 4 files changed, 279 insertions(+), 279 deletions(-)
+ src/liblzma/common/string_conversion.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit 94e3f986aa4e14b4ff01ac24857f499630d6d180
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2017-08-14 20:08:33 +0300
+commit 54ad83c1ae2180dcc0cb2445b181dc1e9732a5d6
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-03 00:20:20 +0800
- Fix or hide warnings from GCC 7's -Wimplicit-fallthrough.
+ liblzma: Clarify block encoder and decoder documentation.
+
+ Added a few sentences to the description for lzma_block_encoder() and
+ lzma_block_decoder() to highlight that the Block Header must be coded
+ before calling these functions.
- src/liblzma/lzma/lzma_decoder.c | 6 ++++++
- src/xz/list.c | 2 ++
- 2 files changed, 8 insertions(+)
+ src/liblzma/api/lzma/block.h | 15 +++++++++++----
+ 1 file changed, 11 insertions(+), 4 deletions(-)
-commit 0b0e1e6803456aac641a59332200f8e95e2b7ea8
-Author: Alexey Tourbin <alexey.tourbin@gmail.com>
-Date: 2017-05-16 23:56:35 +0300
+commit f680e771b3eb2a46310fe85b3e000ac3a1a0640f
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-03 00:12:24 +0800
- Docs: Fix a typo in a comment in doc/examples/02_decompress.c.
+ Update lzma_block documentation for lzma_block_uncomp_encode().
- doc/examples/02_decompress.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ src/liblzma/api/lzma/block.h | 3 +++
+ 1 file changed, 3 insertions(+)
-commit a015cd1f90116e655be4eaf4aad42c4c911c2807
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2017-05-23 18:34:43 +0300
+commit 504cf4af895fd45aad0c56eb3b49d90acd54465b
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-03 00:11:37 +0800
- xz: Fix "xz --list --robot missing_or_bad_file.xz".
-
- It ended up printing an uninitialized char-array when trying to
- print the check names (column 7) on the "totals" line.
-
- This also changes the column 12 (minimum xz version) to
- 50000002 (xz 5.0.0) instead of 0 when there are no valid
- input files.
-
- Thanks to kidmin for the bug report.
+ liblzma: Minor edits to lzma_block header_size documentation.
- src/xz/list.c | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
+ src/liblzma/api/lzma/block.h | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
-commit c2e29f06a7d1e3ba242ac2fafc69f5d6e92f62cd
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2017-04-24 20:20:11 +0300
+commit 115b720fb521f99aa832d06b2c12b7f8c6c50680
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-03 00:11:07 +0800
- Docs: Add doc/examples/11_file_info.c.
+ liblzma: Enumerate functions that read version in lzma_block.
- doc/examples/11_file_info.c | 206 ++++++++++++++++++++++++++++++++++++++++++++
- doc/examples/Makefile | 3 +-
- 2 files changed, 208 insertions(+), 1 deletion(-)
+ src/liblzma/api/lzma/block.h | 13 +++++++++++--
+ 1 file changed, 11 insertions(+), 2 deletions(-)
-commit 1520f6ec808896375ac7bf778c449e0f7dea5f46
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2017-04-24 19:48:47 +0300
+commit 85ea0979adcf808a3830aefbe7a4ec884e542ea1
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-03 00:10:34 +0800
- Build: Omit pre-5.0.0 entries from the generated ChangeLog.
-
- It makes ChangeLog significantly smaller.
+ liblzma: Clarify comment in block.h.
- Makefile.am | 3 ++-
+ src/liblzma/api/lzma/block.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-commit 8269782283806c90a8509c2ac2a308344f70e171
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2017-04-24 19:48:23 +0300
+commit 1f7ab90d9ce224230a04de6b921ad6e2029023a8
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-03 00:07:23 +0800
- xz: Use lzma_file_info_decoder() for --list.
+ liblzma: Improve documentation for block.h.
+
+ Standardizing each function to always specify params and return values.
+ Output pointer parameters are also marked with doxygen style [out] to
+ make it clear. Any note sections were also moved above the parameter and
+ return sections for consistency.
- src/xz/list.c | 254 ++++++++++------------------------------------------------
- 1 file changed, 44 insertions(+), 210 deletions(-)
+ src/liblzma/api/lzma/block.h | 96 ++++++++++++++++++++++++++++++++++----------
+ 1 file changed, 75 insertions(+), 21 deletions(-)
-commit e353d0b1cc0d3997ae5048faa8e6786414953e06
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2017-04-24 19:35:50 +0300
+commit c563a4bc554a96bd0b6aab3c139715b7ec8f6ca3
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-01 23:38:30 +0800
+
+ liblzma: Clarify a comment about LZMA_STR_NO_VALIDATION.
+
+ The flag description for LZMA_STR_NO_VALIDATION was previously confusing
+ about the treatment for filters than cannot be used with .xz format
+ (lzma1) without using LZMA_STR_ALL_FILTERS. Now, it is clear that
+ LZMA_STR_NO_VALIDATION is not a super set of LZMA_STR_ALL_FILTERS.
- liblzma: Add lzma_file_info_decoder().
+ src/liblzma/api/lzma/filter.h | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
- src/liblzma/api/lzma/index.h | 66 ++++
- src/liblzma/common/Makefile.inc | 1 +
- src/liblzma/common/file_info.c | 855 ++++++++++++++++++++++++++++++++++++++++
- src/liblzma/liblzma.map | 7 +-
- 4 files changed, 928 insertions(+), 1 deletion(-)
+commit 315c64c7e18acc59a745b68148188a73e998252b
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-01 21:43:33 +0800
-commit 144ef9e19e9496c995b21505dd1e111c442968d1
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2017-04-24 19:30:22 +0300
+ CI: Update .gitignore for artifacts directory in build-aux.
+
+ The workflow action for our CI pipeline can only reference artifacts in
+ the source directory, so we should ignore these files if the ci_build.sh
+ is run locally.
- Update the Git repository URL to HTTPS in ChangeLog.
+ .gitignore | 1 +
+ 1 file changed, 1 insertion(+)
- ChangeLog | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+commit 2c1341f4fa06e7f487d61142aa354c433e17ec7f
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-01 21:36:46 +0800
-commit 8c9842c265993d7dd4039f732d3546267fb5ecc4
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2017-04-21 15:05:16 +0300
+ CI: Add quotes around variables in a few places.
- liblzma: Rename LZMA_SEEK to LZMA_SEEK_NEEDED and seek_in to seek_pos.
+ build-aux/ci_build.sh | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
- src/liblzma/api/lzma/base.h | 18 +++++++++---------
- src/liblzma/common/common.c | 2 +-
- src/xz/message.c | 2 +-
- 3 files changed, 11 insertions(+), 11 deletions(-)
+commit 3a401b0e0c7a2658af7801dd0690256ef24149e0
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-02-01 21:36:22 +0800
-commit 662b27c417cab248cb365dd7682121bdec4d5ae7
+ CI: Upload test logs as artifacts if a test fails.
+
+ .github/workflows/ci.yml | 60 ++++++++++++++++++++++++++++++++++--------------
+ build-aux/ci_build.sh | 31 ++++++++++++++++++++-----
+ 2 files changed, 68 insertions(+), 23 deletions(-)
+
+commit 610dde15a88f12cc540424eb3eb3ed61f3876f74
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2017-04-19 22:17:35 +0300
+Date: 2023-01-27 20:02:49 +0200
- Update the home page URLs to HTTPS.
+ xz: Use clock_gettime() even if CLOCK_MONOTONIC isn't available.
+
+ mythread.h and thus liblzma already does it.
- COPYING | 2 +-
- README | 2 +-
- configure.ac | 2 +-
- doc/faq.txt | 4 ++--
- dos/config.h | 2 +-
- src/common/common_w32res.rc | 2 +-
- src/xz/xz.1 | 6 +++---
- src/xzdec/xzdec.1 | 4 ++--
- windows/README-Windows.txt | 2 +-
- windows/config.h | 2 +-
- 10 files changed, 14 insertions(+), 14 deletions(-)
+ src/xz/mytime.c | 11 ++++++++---
+ src/xz/private.h | 3 +--
+ 2 files changed, 9 insertions(+), 5 deletions(-)
-commit c28f0b3d00af87b92dda229831548d8eb0067d1d
+commit 2e02877288f6576cd4595e9ac7684f867cd47d68
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2017-04-05 18:47:22 +0300
+Date: 2023-01-27 19:41:19 +0200
- xz: Add io_seek_src().
+ po4a/po4a.conf: Sort the language identifiers in alphabetical order.
- src/xz/file_io.c | 20 +++++++++++++++++---
- src/xz/file_io.h | 13 +++++++++++++
- 2 files changed, 30 insertions(+), 3 deletions(-)
+ po4a/po4a.conf | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit bba477257d7319c8764890f3669175b866d24944
+commit ff592c616eda274215b485cf1b8d34f060c9f3be
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2017-03-30 22:01:54 +0300
+Date: 2023-01-26 18:29:17 +0200
- xz: Use POSIX_FADV_RANDOM for in "xz --list" mode.
+ xz: Add SIGTSTP handler for progress indicator time keeping.
+
+ This way, if xz is stopped the elapsed time and estimated time
+ remaining won't get confused by the amount of time spent in
+ the stopped state.
+
+ This raises SIGSTOP. It's not clear to me if this is the correct way.
+ POSIX and glibc docs say that SIGTSTP shouldn't stop the process if
+ it is orphaned but this commit doesn't attempt to handle that.
+
+ Search for SIGTSTP in section 2.4.3:
- xz --list is random access so POSIX_FADV_SEQUENTIAL was clearly
- wrong.
+ https://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html
- src/xz/file_io.c | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
+ src/xz/mytime.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
+ src/xz/mytime.h | 6 ++++++
+ src/xz/private.h | 12 ++++++++++++
+ src/xz/signals.c | 17 ++++++++++++++++-
+ 4 files changed, 89 insertions(+), 2 deletions(-)
-commit 310d19816d1652b0c8bb1b82574d46345d924752
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2017-03-30 20:03:05 +0300
+commit 3b1c8ac8d1d553cbb1fb22b545d2b1424c752b76
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-27 20:14:51 +0800
- liblzma: Make lzma_index_decoder_init() visible to other liblzma funcs.
+ Translations: Add Brazilian Portuguese translation of man pages.
- This is to allow other functions to use it without going
- via the public API (lzma_index_decoder()).
+ Thanks to Rafael Fontenelle.
- src/liblzma/common/Makefile.inc | 1 +
- src/liblzma/common/index_decoder.c | 10 +++++-----
- src/liblzma/common/index_decoder.h | 24 ++++++++++++++++++++++++
- 3 files changed, 30 insertions(+), 5 deletions(-)
+ po4a/po4a.conf | 2 +-
+ po4a/pt_BR.po | 3677 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 3678 insertions(+), 1 deletion(-)
-commit a27920002dbc469f778a134fc665b7c3ea73701b
+commit a15a7552f9f67c4e402f5d2967324e0ccfd6fccc
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2017-03-30 20:00:09 +0300
+Date: 2023-01-26 17:51:06 +0200
- liblzma: Add generic support for input seeking (LZMA_SEEK).
-
- Also mention LZMA_SEEK in xz/message.c to silence a warning.
+ Build: Avoid different quoting style in --enable-doxygen doc.
- src/liblzma/api/lzma/base.h | 31 ++++++++++++++++++++++++++++++-
- src/liblzma/common/common.c | 12 +++++++++++-
- src/xz/message.c | 1 +
- 3 files changed, 42 insertions(+), 2 deletions(-)
+ configure.ac | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
-commit a0b1dda409bc3e6e2957a2651663fc411d2caf2d
+commit af5a4bd5afc089d9697756dded38feafaa987ae4
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2017-03-30 19:47:45 +0300
+Date: 2023-01-26 17:39:46 +0200
- liblzma: Fix lzma_memlimit_set(strm, 0).
-
- The 0 got treated specially in a buggy way and as a result
- the function did nothing. The API doc said that 0 was supposed
- to return LZMA_PROG_ERROR but it didn't.
-
- Now 0 is treated as if 1 had been specified. This is done because
- 0 is already used to indicate an error from lzma_memlimit_get()
- and lzma_memusage().
+ tuklib_physmem: Check for __has_warning before GCC version.
- In addition, lzma_memlimit_set() no longer checks that the new
- limit is at least LZMA_MEMUSAGE_BASE. It's counter-productive
- for the Index decoder and was actually needed only by the
- auto decoder. Auto decoder has now been modified to check for
- LZMA_MEMUSAGE_BASE.
+ Clang can be configured to fake a too high GCC version so
+ this way it's more robust.
- src/liblzma/api/lzma/base.h | 7 ++++++-
- src/liblzma/common/auto_decoder.c | 3 +++
- src/liblzma/common/common.c | 6 ++++--
- 3 files changed, 13 insertions(+), 3 deletions(-)
+ src/common/tuklib_physmem.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
-commit 84462afaada61379f5878e46f8f00e25a1cdcf29
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2017-03-30 19:16:55 +0300
+commit f35d98e20609e0be6a04ae2604bfb7cb9d5bd5e4
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-24 20:48:50 +0800
- liblzma: Similar memlimit fix for stream_, alone_, and auto_decoder.
+ liblzma: Fix documentation in filter.h for lzma_str_to_filters()
+
+ The previous documentation for lzma_str_to_filters() was technically
+ correct, but misleading. lzma_str_to_filters() returns NULL on success,
+ which is in practice always defined to 0. This is the same value as
+ LZMA_OK, but lzma_str_to_filters() does not return lzma_ret so we should
+ be more clear.
- src/liblzma/api/lzma/container.h | 21 +++++++++++++++++----
- src/liblzma/common/alone_decoder.c | 5 +----
- src/liblzma/common/auto_decoder.c | 5 +----
- src/liblzma/common/stream_decoder.c | 5 +----
- 4 files changed, 20 insertions(+), 16 deletions(-)
+ src/liblzma/api/lzma/filter.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit cbc74017939690d13441b8926bb743fb03211b83
+commit 2f78ecc5939b3d97ddfc2a6bd31b50108a28d0a2
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2017-03-30 18:58:18 +0300
+Date: 2023-01-23 23:44:58 +0200
- liblzma: Fix handling of memlimit == 0 in lzma_index_decoder().
+ Revert "tuklib_common: Define __has_warning if it is not defined."
- It returned LZMA_PROG_ERROR, which was done to avoid zero as
- the limit (because it's a special value elsewhere), but using
- LZMA_PROG_ERROR is simply inconvenient and can cause bugs.
+ This reverts commit 82e3c968bfa10e3ff13333bd9cbbadb5988d6766.
- The fix/workaround is to treat 0 as if it were 1 byte. It's
- effectively the same thing. The only weird consequence is
- that then lzma_memlimit_get() will return 1 even when 0 was
- specified as the limit.
+ Macros in the reserved namespace (_foo or __foo) shouldn't be #defined
+ without a very good reason. Here the alternative would have been
+ to #define tuklib_has_warning(str) to an approriate value.
- This fixes a very rare corner case in xz --list where a specific
- memory usage limit and a multi-stream file could print the
- error message "Internal error (bug)" instead of saying that
- the memory usage limit is too low.
+ Also the tuklib_* files should stay namespace clean if possible.
- src/liblzma/api/lzma/index.h | 18 +++++++++++-------
- src/liblzma/common/index_decoder.c | 4 ++--
- 2 files changed, 13 insertions(+), 9 deletions(-)
+ src/common/tuklib_common.h | 7 -------
+ 1 file changed, 7 deletions(-)
-commit 78ae13bced912b1b92ae927992c99cbcc463cae7
+commit 8366cf8738e8b7bb74c967d07bf0fd2a1878e575
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2016-12-30 13:25:10 +0200
+Date: 2023-01-23 23:38:34 +0200
- Update NEWS for 5.2.3.
+ tuklib_physmem: Clean up the way -Wcast-function-type is silenced on Windows.
+
+ __has_warning and other __has_foo macros are meant to become
+ compiler-agnostic so it's not good to check for __clang__ with it.
+
+ This also relied on tuklib_common.h for #defining __has_warning
+ which was confusing as #defining reserved macros is generally
+ not a good idea.
- NEWS | 39 +++++++++++++++++++++++++++++++++++++++
- 1 file changed, 39 insertions(+)
+ src/common/tuklib_physmem.c | 17 +++++++++++++----
+ 1 file changed, 13 insertions(+), 4 deletions(-)
-commit 0297863fdb453aed1a25eb025f3ba7bacbbb1357
+commit 683a3c7e2fcd922200c31078e5c9dd1348e90941
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2016-12-26 20:55:52 +0200
+Date: 2023-01-24 00:05:38 +0200
- Document --enable-sandbox configure option in INSTALL.
+ xz: Flip the return value of suffix_is_set to match the documentation.
+
+ Also edit style to match the existing coding style in the project.
- INSTALL | 23 +++++++++++++++++++++++
- 1 file changed, 23 insertions(+)
+ src/xz/args.c | 6 +++---
+ src/xz/suffix.c | 2 +-
+ src/xz/suffix.h | 1 +
+ 3 files changed, 5 insertions(+), 4 deletions(-)
-commit d4a0462abe5478193521c14625e1c81fead87f9f
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2016-11-21 20:24:50 +0200
-
- liblzma: Avoid multiple definitions of lzma_coder structures.
-
- Only one definition was visible in a translation unit.
- It avoided a few casts and temp variables but seems that
- this hack doesn't work with link-time optimizations in compilers
- as it's not C99/C11 compliant.
-
- Fixes:
- http://www.mail-archive.com/xz-devel@tukaani.org/msg00279.html
-
- src/liblzma/common/alone_decoder.c | 44 +++++----
- src/liblzma/common/alone_encoder.c | 34 ++++---
- src/liblzma/common/auto_decoder.c | 35 ++++---
- src/liblzma/common/block_decoder.c | 41 ++++----
- src/liblzma/common/block_encoder.c | 40 ++++----
- src/liblzma/common/common.h | 18 ++--
- src/liblzma/common/index_decoder.c | 33 ++++---
- src/liblzma/common/index_encoder.c | 16 ++--
- src/liblzma/common/stream_decoder.c | 50 +++++-----
- src/liblzma/common/stream_encoder.c | 56 ++++++-----
- src/liblzma/common/stream_encoder_mt.c | 124 ++++++++++++++-----------
- src/liblzma/delta/delta_common.c | 25 ++---
- src/liblzma/delta/delta_decoder.c | 6 +-
- src/liblzma/delta/delta_encoder.c | 12 ++-
- src/liblzma/delta/delta_private.h | 4 +-
- src/liblzma/lz/lz_decoder.c | 60 ++++++------
- src/liblzma/lz/lz_decoder.h | 13 ++-
- src/liblzma/lz/lz_encoder.c | 57 +++++++-----
- src/liblzma/lz/lz_encoder.h | 9 +-
- src/liblzma/lzma/lzma2_decoder.c | 32 ++++---
- src/liblzma/lzma/lzma2_encoder.c | 51 +++++-----
- src/liblzma/lzma/lzma_decoder.c | 27 +++---
- src/liblzma/lzma/lzma_encoder.c | 29 +++---
- src/liblzma/lzma/lzma_encoder.h | 9 +-
- src/liblzma/lzma/lzma_encoder_optimum_fast.c | 3 +-
- src/liblzma/lzma/lzma_encoder_optimum_normal.c | 23 ++---
- src/liblzma/lzma/lzma_encoder_private.h | 6 +-
- src/liblzma/simple/arm.c | 2 +-
- src/liblzma/simple/armthumb.c | 2 +-
- src/liblzma/simple/ia64.c | 2 +-
- src/liblzma/simple/powerpc.c | 2 +-
- src/liblzma/simple/simple_coder.c | 61 ++++++------
- src/liblzma/simple/simple_private.h | 12 +--
- src/liblzma/simple/sparc.c | 2 +-
- src/liblzma/simple/x86.c | 15 +--
- 35 files changed, 532 insertions(+), 423 deletions(-)
-
-commit a01794c52add98263b49119842c3e7141d1b9ced
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2016-10-24 18:53:25 +0300
+commit cc5aa9ab138beeecaee5a1e81197591893ee9ca0
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-07 21:55:06 +0800
- Update THANKS.
+ xz: Refactor duplicated check for custom suffix when using --format=raw
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ src/xz/args.c | 8 ++++++++
+ src/xz/suffix.c | 26 ++++++++------------------
+ src/xz/suffix.h | 7 +++++++
+ 3 files changed, 23 insertions(+), 18 deletions(-)
-commit df8f446e3ad47e5148b8c8d8b6e519d3ce29cb9d
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2016-10-24 18:51:36 +0300
+commit 9663141274e01592a281a7f2df5d7a31a1dac8bf
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-20 21:53:14 +0800
- tuklib_cpucores: Add support for sched_getaffinity().
-
- It's available in glibc (GNU/Linux, GNU/kFreeBSD). It's better
- than sysconf(_SC_NPROCESSORS_ONLN) because sched_getaffinity()
- gives the number of cores available to the process instead of
- the total number of cores online.
+ liblzma: Set documentation on all reserved fields to private.
- As a side effect, this commit fixes a bug on GNU/kFreeBSD where
- configure would detect the FreeBSD-specific cpuset_getaffinity()
- but it wouldn't actually work because on GNU/kFreeBSD it requires
- using -lfreebsd-glue when linking. Now the glibc-specific function
- will be used instead.
+ This prevents the reserved fields from being part of the generated
+ Doxygen documentation.
+
+ src/liblzma/api/lzma/base.h | 17 +++++++++++++++
+ src/liblzma/api/lzma/block.h | 43 +++++++++++++++++++++++++++++++++++++
+ src/liblzma/api/lzma/container.h | 24 +++++++++++++++++++++
+ src/liblzma/api/lzma/delta.h | 12 +++++++++++
+ src/liblzma/api/lzma/index.h | 27 +++++++++++++++++++++++
+ src/liblzma/api/lzma/lzma12.h | 22 +++++++++++++++++++
+ src/liblzma/api/lzma/stream_flags.h | 28 ++++++++++++++++++++++++
+ 7 files changed, 173 insertions(+)
+
+commit 6327a045f34d48fc5afc58ba0d32a82c94403049
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2022-12-20 21:39:59 +0800
+
+ Doxygen: Update Doxyfile.in from 1.4.7 to 1.8.17.
- Thanks to Sebastian Andrzej Siewior for the original patch
- and testing.
+ A few Doxygen tags were obsolete from 1.4.7. Version 1.8.17 released
+ in 2019, so this should be compatible with resonable modern distros.
+ The purpose of Doxygen these days is for docs on the website, so it
+ doesn't necessarily have to work for everyone. Just when the maintainers
+ want to update the docs.
- m4/tuklib_cpucores.m4 | 30 +++++++++++++++++++++++++++++-
- src/common/tuklib_cpucores.c | 9 +++++++++
- 2 files changed, 38 insertions(+), 1 deletion(-)
+ Doxyfile.in | 2523 ++++++++++++++++++++++++++++++++++++++++++++---------------
+ 1 file changed, 1893 insertions(+), 630 deletions(-)
-commit 446e4318fa79788e09299d5953b5dd428953d14b
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2016-06-30 20:27:36 +0300
+commit bbf71b69ebf9d0d62a0af150a5c37d193b8159ad
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-03 20:37:30 +0800
- xz: Fix copying of timestamps on Windows.
+ Doxygen: Make Doxygen only produce liblzma API documentation by default.
- xz used to call utime() on Windows, but its result gets lost
- on close(). Using _futime() seems to work.
+ Doxygen is now configurable in autotools only with
+ --enable-doxygen=[api|all]. The default is "api", which will only
+ generate HTML output for liblzma API functions. The LaTex documentation
+ output was also disabled.
+
+ Doxyfile.in | 18 +++++++++---------
+ configure.ac | 39 +++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 48 insertions(+), 9 deletions(-)
+
+commit 6fcf4671b6047113c583a0919fc850987a4ec5f4
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2022-12-21 23:59:43 +0800
+
+ liblzma: Highlight liblzma API headers should not be included directly.
- Thanks to Martok for reporting the bug:
- http://www.mail-archive.com/xz-devel@tukaani.org/msg00261.html
+ This improves the generated Doxygen HTML files to better highlight
+ how to properly use the liblzma API header files.
- configure.ac | 2 +-
- src/xz/file_io.c | 18 ++++++++++++++++++
- 2 files changed, 19 insertions(+), 1 deletion(-)
+ src/liblzma/api/lzma/base.h | 5 +++--
+ src/liblzma/api/lzma/bcj.h | 5 +++--
+ src/liblzma/api/lzma/block.h | 5 +++--
+ src/liblzma/api/lzma/check.h | 5 +++--
+ src/liblzma/api/lzma/container.h | 5 +++--
+ src/liblzma/api/lzma/delta.h | 5 +++--
+ src/liblzma/api/lzma/filter.h | 5 +++--
+ src/liblzma/api/lzma/hardware.h | 5 +++--
+ src/liblzma/api/lzma/index.h | 5 +++--
+ src/liblzma/api/lzma/index_hash.h | 5 +++--
+ src/liblzma/api/lzma/lzma12.h | 5 +++--
+ src/liblzma/api/lzma/stream_flags.h | 5 +++--
+ src/liblzma/api/lzma/version.h | 5 +++--
+ src/liblzma/api/lzma/vli.h | 5 +++--
+ 14 files changed, 42 insertions(+), 28 deletions(-)
-commit 1b0ac0c53c761263e91e34195cb21dfdcfeac0bd
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2016-06-16 22:46:02 +0300
+commit b43ff180fb2e372adce876bfa155fc9bcf0c3db4
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-19 20:35:09 +0800
- xz: Silence warnings from -Wlogical-op.
+ tuklib_physmem: Silence warning from -Wcast-function-type on MinGW-w64.
- Thanks to Evan Nemerson.
+ tuklib_physmem depends on GetProcAddress() for both MSVC and MinGW-w64
+ to retrieve a function address. The proper way to do this is to cast the
+ return value to the type of function pointer retrieved. Unfortunately,
+ this causes a cast-function-type warning, so the best solution is to
+ simply ignore the warning.
- src/xz/file_io.c | 12 ++++++++++--
- 1 file changed, 10 insertions(+), 2 deletions(-)
+ src/common/tuklib_physmem.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
-commit c83b7a03342c3325ff10400b22ee21edfcd1e026
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2016-04-10 20:55:49 +0300
+commit 82e3c968bfa10e3ff13333bd9cbbadb5988d6766
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-19 20:32:40 +0800
- Build: Fix = to += for xz_SOURCES in src/xz/Makefile.am.
+ tuklib_common: Define __has_warning if it is not defined.
- Thanks to Christian Kujau.
+ clang supports the __has_warning macro to determine if the version of
+ clang compiling the code supports a given warning. If we do not define
+ it for other compilers, it may cause a preprocessor error.
- src/xz/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ src/common/tuklib_common.h | 7 +++++++
+ 1 file changed, 7 insertions(+)
-commit ade31a2bfb95c94d05fbfc0ecbba5d6377f2506e
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2016-04-10 20:54:17 +0300
+commit b2ba1a489df451cdcd93b2334e319dd06778de19
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-18 22:11:05 +0800
- Build: Bump GNU Gettext version requirement to 0.19.
+ CI: Reorder 32-bit build first for Linux autotool builds.
- It silences a few warnings and most people probably have
- 0.19 even on stable distributions.
+ The 32-bit build needs to be first so the configure cache only needs to
+ be reset one time. The 32-bit build sets the CFLAGS env variable, so any
+ build using that flag after will fail unless the cache is reset.
+
+ .github/workflows/ci.yml | 17 ++++++++++++-----
+ 1 file changed, 12 insertions(+), 5 deletions(-)
+
+commit dd1c1135741057c91e8d018be9ec4d43968b0e64
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-18 21:51:43 +0800
+
+ CI: Enable --config-cache in autotool builds.
- Thanks to Christian Kujau.
+ If CFLAGS are set in a build, the cache must be cleared with
+ "make distclean", or by deleting the cache file.
- configure.ac | 2 +-
+ build-aux/ci_build.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-commit ac398c3bafa6e4c80e20571373a96947db863b3d
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2016-03-13 20:21:49 +0200
+commit d3e11477053764c003eec2daa5198c747d70ff69
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-16 21:35:45 +0800
- liblzma: Disable external SHA-256 by default.
-
- This is the sane thing to do. The conflict with OpenSSL
- on some OSes and especially that the OS-provided versions
- can be significantly slower makes it clear that it was
- a mistake to have the external SHA-256 support enabled by
- default.
-
- Those who want it can now pass --enable-external-sha256 to
- configure. INSTALL was updated with notes about OSes where
- this can be a bad idea.
-
- The SHA-256 detection code in configure.ac had some bugs that
- could lead to a build failure in some situations. These were
- fixed, although it doesn't matter that much now that the
- external SHA-256 is disabled by default.
+ xz: Add missing comment for coder_set_compression_settings()
+
+ src/xz/coder.h | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 123255b6ed15f4428b2aa92e4962015a5362f6bf
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-16 20:55:10 +0800
+
+ xz: Do not set compression settings with raw format in list mode.
- MINIX >= 3.2.0 uses NetBSD's libc and thus has SHA256_Init
- in libc instead of libutil. Support for the libutil version
- was removed.
+ Calling coder_set_compression_settings() in list mode with verbose mode
+ on caused the filter chain and memory requirements to print. This was
+ unnecessary since the command results in an error and not consistent
+ with other formats like lzma and alone.
- INSTALL | 36 ++++++++++++++++++++++
- configure.ac | 76 +++++++++++++++++++++++------------------------
- src/liblzma/check/check.h | 16 ++++------
- 3 files changed, 79 insertions(+), 49 deletions(-)
+ src/xz/args.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
-commit 6fd5ecb589a9fdd7a576ea48c4850d496bab9ce5
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2016-03-10 20:27:05 +0200
+commit 571919c47b9ff5171ede84378620ed0a9aeb98c0
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-13 20:37:06 +0800
- Update THANKS.
+ Translations: Update the Brazilian Portuguese translation.
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ po/pt_BR.po | 603 ++++++++++++++++++++++++++++++++++--------------------------
+ 1 file changed, 344 insertions(+), 259 deletions(-)
-commit 473ef0dc69a30e64d5fa0d34aca02f7309faa3e9
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2016-03-10 20:26:49 +0200
+commit 81cb02e2c22bbc036cdfaa2d2c4176f6bd60d3cf
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-12 23:43:06 +0800
- Build: Avoid SHA256_Init on FreeBSD and MINIX 3.
-
- On FreeBSD 10 and older, SHA256_Init from libmd conflicts
- with libcrypto from OpenSSL. The OpenSSL version has
- different sizeof(SHA256_CTX) and it can cause weird
- problems if wrong SHA256_Init gets used.
+ CI: Disable shared and nls from various jobs in autotool runners.
- Looking at the source, MINIX 3 seems to have a similar issue but
- I'm not sure. To be safe, I disabled SHA256_Init on MINIX 3 too.
+ Disabling shared library generation and linking should help speed up the
+ runners. The shared library is still being tested in the 32 bit build
+ and the full feature.
- NetBSD has SHA256_Init in libc and they had a similar problem,
- but they already fixed it in 2009.
+ Disabling nls is to check for any unexpected warnings or errors.
+
+ .github/workflows/ci.yml | 56 ++++++++++++++++++++++++------------------------
+ 1 file changed, 28 insertions(+), 28 deletions(-)
+
+commit 58a052198a7bcaf6e958f87fad72e69e19a2579b
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-12 23:39:19 +0800
+
+ CI: Reorder the 32-bit job in the Ubuntu runner.
- Thanks to Jim Wilcoxson for the bug report that helped
- in finding the problem.
+ Run the 32 bit job sooner since this is a more interesting test than
+ some of the later jobs.
- configure.ac | 27 +++++++++++++++++++++------
- 1 file changed, 21 insertions(+), 6 deletions(-)
+ .github/workflows/ci.yml | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
-commit faf302137e54d605b44ecf0373cb51a6403a2de1
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-11-08 20:16:10 +0200
+commit 4110a998b83459fe2bc9bc1bec30ad68afa8f797
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-12 23:09:03 +0800
- tuklib_physmem: Hopefully silence a warning on Windows.
+ CI: Allow disabling Native Language Support.
- src/common/tuklib_physmem.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
+ build-aux/ci_build.sh | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
-commit e52e9151cf8613022d1de4712ff39dbcb666e991
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-11-04 23:17:43 +0200
+commit 0dec634e705b5bf89a37c5d62d71e8511d480058
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-12 23:02:20 +0800
- Update THANKS.
+ CI: Only run autogen.sh if it has not already run.
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ build-aux/ci_build.sh | 11 ++++++++---
+ 1 file changed, 8 insertions(+), 3 deletions(-)
-commit 14115f84a38161d55eaa2d070f08739bde37e966
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-11-04 23:14:00 +0200
+commit 32287dc8def94df4546e903495d14c132bd54cc4
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-12 22:58:36 +0800
- liblzma: Make Valgrind happier with optimized (gcc -O2) liblzma.
-
- When optimizing, GCC can reorder code so that an uninitialized
- value gets used in a comparison, which makes Valgrind unhappy.
- It doesn't happen when compiled with -O0, which I tend to use
- when running Valgrind.
-
- Thanks to Rich Prohaska. I remember this being mentioned long
- ago by someone else but nothing was done back then.
+ CI: Allow disabling shared library in autotools builds.
- src/liblzma/lz/lz_encoder.c | 4 ++++
- 1 file changed, 4 insertions(+)
+ build-aux/ci_build.sh | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
-commit f4c95ba94beb71a608eb6eadbf82b44f53a0260e
+commit 77d1ebcc99ddd82a300d1838f608150221931dcd
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-12 22:44:18 +0800
+
+ CI: Improve Usage readability and add -h option.
+
+ build-aux/ci_build.sh | 15 +++++++++++++--
+ 1 file changed, 13 insertions(+), 2 deletions(-)
+
+commit a8bb8358d10b059274f3cf993d9b8f490bafb268
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-11-03 20:55:45 +0200
+Date: 2023-01-12 13:04:05 +0200
- liblzma: Rename lzma_presets.c back to lzma_encoder_presets.c.
+ Build: Omit -Wmissing-noreturn from the default warnings.
- It would be too annoying to update other build systems
- just because of this.
+ It's not that important. It can be annoying in builds that
+ disable many features since in those cases the tests programs
+ will correctly trigger this warning with Clang.
- src/liblzma/lzma/Makefile.inc | 2 +-
- src/liblzma/lzma/{lzma_presets.c => lzma_encoder_presets.c} | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
+ configure.ac | 1 -
+ 1 file changed, 1 deletion(-)
-commit c7bc20a6f3e71920871d48db31a79ab58b5a0a4b
+commit 52dc033d0bde0d19e3912303c6c74bae559d6498
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-11-03 20:47:07 +0200
+Date: 2023-01-12 06:05:58 +0200
- Build: Disable xzdec, lzmadec, and lzmainfo when they cannot be built.
+ xz: Use ssize_t for the to-be-ignored return value from write(fd, ptr, 1).
- They all need decoder support and if that isn't available,
- there's no point trying to build them.
+ It makes no difference here as the return value fits into an int
+ too and it then gets ignored but this looks better.
- configure.ac | 3 +++
- 1 file changed, 3 insertions(+)
+ src/xz/file_io.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 5cbca1205deeb6fb7afe7a864fa68a57466d928a
+commit b1a6d180a363d57b2b1c89526ff3f0782bf863d3
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-11-03 20:35:19 +0200
+Date: 2023-01-12 06:01:12 +0200
- Build: Simplify $enable_{encoders,decoders} usage a bit.
+ xz: Silence warnings from -Wsign-conversion in a 32-bit build.
- configure.ac | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
+ src/common/tuklib_mbstr_fw.c | 2 +-
+ src/xz/list.c | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
-commit af13781886c8e7a0aabebb5141ea282dc364f5c6
+commit 31c21c734b7c7d7428a3da7402a2cb7bc2587339
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-11-03 20:31:31 +0200
+Date: 2023-01-12 05:38:48 +0200
- Windows/MSVC: Update config.h.
+ liblzma: Silence another warning from -Wsign-conversion in a 32-bit build.
+
+ It doesn't warn on a 64-bit system because truncating
+ a ptrdiff_t (signed long) to uint32_t is diagnosed under
+ -Wconversion by GCC and -Wshorten-64-to-32 by Clang.
- windows/config.h | 6 ++++++
- 1 file changed, 6 insertions(+)
+ src/liblzma/lz/lz_encoder_mf.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
-commit 9fa5949330f162c5a2f6653f83025327837e8f39
+commit 37fbdfb7263522c11c7ad2685413d6295532581d
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-11-03 20:29:58 +0200
+Date: 2023-01-12 04:46:45 +0200
- DOS: Update config.h.
+ liblzma: Silence a warning from -Wsign-conversion in a 32-bit build.
- dos/config.h | 6 ++++++
- 1 file changed, 6 insertions(+)
+ src/common/mythread.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit cb3111e3ed84152912b5138d690c8d9f00c6ef02
+commit 5ce6ddc221d0bfb57d810d845bb65fb0aac0b008
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-11-03 20:29:33 +0200
+Date: 2023-01-12 04:17:24 +0200
- xz: Make xz buildable even when encoders or decoders are disabled.
+ Build: Make configure add more warning flags for GCC and Clang.
- The patch is quite long but it's mostly about adding new #ifdefs
- to omit code when encoders or decoders have been disabled.
+ -Wstrict-aliasing was removed from the list since it is enabled
+ by -Wall already.
- This adds two new #defines to config.h: HAVE_ENCODERS and
- HAVE_DECODERS.
+ A normal build is clean with these on GNU/Linux x86-64 with
+ GCC 12.2.0 and Clang 14.0.6.
- configure.ac | 4 ++++
- src/xz/Makefile.am | 8 ++++++--
- src/xz/args.c | 16 ++++++++++++++++
- src/xz/coder.c | 33 +++++++++++++++++++++++++--------
- src/xz/main.c | 9 +++++++--
- src/xz/private.h | 5 ++++-
- 6 files changed, 62 insertions(+), 13 deletions(-)
+ configure.ac | 36 +++++++++++++++++++++++++++++++-----
+ 1 file changed, 31 insertions(+), 5 deletions(-)
-commit 4cc584985c0b7a13901da1b7a64ef9f7cc36e8ab
+commit bfc3a0a8ac16de90049c1b1ba1445a7626d0230c
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-11-03 18:06:40 +0200
+Date: 2023-01-12 04:14:18 +0200
- Build: Build LZMA1/2 presets also when only decoder is wanted.
+ Tests: Fix warnings from clang --Wassign-enum.
- People shouldn't rely on the presets when decoding raw streams,
- but xz uses the presets as the starting point for raw decoder
- options anyway.
+ Explicitly casting the integer to lzma_check silences the warning.
+ Since such an invalid value is needed in multiple tests, a constant
+ INVALID_LZMA_CHECK_ID was added to tests.h.
- lzma_encocder_presets.c was renamed to lzma_presets.c to
- make it clear it's not used solely by the encoder code.
+ The use of 0x1000 for lzma_block.check wasn't optimal as if
+ the underlying type is a char then 0x1000 will be truncated to 0.
+ However, in these test cases the value is ignored, thus even with
+ such truncation the test would have passed.
- src/liblzma/lzma/Makefile.inc | 6 +++++-
- src/liblzma/lzma/{lzma_encoder_presets.c => lzma_presets.c} | 3 ++-
- 2 files changed, 7 insertions(+), 2 deletions(-)
+ tests/test_block_header.c | 6 +++---
+ tests/test_check.c | 2 +-
+ tests/test_stream_flags.c | 8 ++++----
+ tests/tests.h | 9 +++++++++
+ 4 files changed, 17 insertions(+), 8 deletions(-)
-commit 23ed1d41489f632155bbc9660f323d57e09da180
+commit 49245bb31e215ad455a1ab85e4ed6783152dc522
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-11-03 17:54:48 +0200
+Date: 2023-01-12 03:51:07 +0200
- Build: Fix configure to handle LZMA1 dependency with LZMA2.
+ Tests: Silence warnings from -Wsign-conversion.
- Now it gives an error if LZMA1 encoder/decoder is missing
- when LZMA2 encoder/decoder was requested. Even better would
- be LZMA2 implicitly enabling LZMA1 but it would need more code.
+ Note that assigning an unsigned int to lzma_check doesn't warn
+ on GNU/Linux x86-64 since the enum type is unsigned on that
+ platform. The enum can be signed on some other platform though
+ so it's best to use enumeration type lzma_check in these situations.
- configure.ac | 5 -----
- 1 file changed, 5 deletions(-)
+ tests/test_check.c | 6 +++---
+ tests/test_stream_flags.c | 10 +++++-----
+ 2 files changed, 8 insertions(+), 8 deletions(-)
-commit b0bc3e03852af13419ea2960881824258d451117
+commit 3f13bf6b9e8624cbe6d6e3e82d6c98a3ed1ad571
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-11-03 17:41:54 +0200
+Date: 2023-01-12 03:19:59 +0200
- Build: Don't omit lzma_cputhreads() unless using --disable-threads.
+ liblzma: Silence warnings from clang -Wconditional-uninitialized.
- Previously it was omitted if encoders were disabled
- with --disable-encoders. It didn't make sense and
- it also broke the build.
+ This is similar to 2ce4f36f179a81d0c6e182a409f363df759d1ad0.
+ The actual initialization of the variables is done inside
+ mythread_sync() macro. Clang doesn't seem to see that
+ the initialization code inside the macro is always executed.
- src/liblzma/common/Makefile.inc | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
+ src/liblzma/common/stream_decoder_mt.c | 8 +++++---
+ src/liblzma/common/stream_encoder_mt.c | 2 +-
+ 2 files changed, 6 insertions(+), 4 deletions(-)
-commit c6bf438ab39e0fb4a47d3c81725c227919502726
+commit 6c886cc5b3c90c6a75e6be8b1278ec2261e452a6
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-11-02 18:16:51 +0200
+Date: 2023-01-12 03:11:40 +0200
- liblzma: Fix a build failure related to external SHA-256 support.
-
- If an appropriate header and structure were found by configure,
- but a library with a usable SHA-256 functions wasn't, the build
- failed.
+ Fix warnings from clang -Wdocumentation.
- src/liblzma/check/check.h | 32 +++++++++++++++++++++++---------
- 1 file changed, 23 insertions(+), 9 deletions(-)
+ src/liblzma/check/check.h | 4 ----
+ src/liblzma/lz/lz_encoder_mf.c | 4 ++--
+ src/xz/options.c | 4 ++--
+ 3 files changed, 4 insertions(+), 8 deletions(-)
-commit e18adc56f2262aa9394d46681e9e4b9981ed5e97
+commit a0e7fb1c1ea658b67f30517f5d1975efd0226dba
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-11-02 15:19:10 +0200
+Date: 2023-01-12 03:04:28 +0200
- xz: Always close the file before trying to delete it.
-
- unlink() can return EBUSY in errno for open files on some
- operating systems and file systems.
+ Tests: test_lzip_decoder: Remove trailing white-space.
- src/xz/file_io.c | 25 ++++++++++++-------------
- 1 file changed, 12 insertions(+), 13 deletions(-)
+ tests/test_lzip_decoder.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit 282e768a1484e88c8b7ec35655ee4959954ec87a
+commit c0f8d6782f29e219fd496dd23f6a033270509d5c
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-10-12 21:08:42 +0300
+Date: 2023-01-12 03:03:55 +0200
- Update THANKS.
+ Tests: test_lzip_decoder: Silence warnings from -Wsign-conversion.
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ tests/test_lzip_decoder.c | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
-commit 372e402713a1d4337ffce5f56d5c5c9ed99a66d0
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-10-12 21:07:41 +0300
+commit 62efd48a825e8f439e84c85e165d8774ddc68fd2
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-11 23:58:16 +0800
- Tests: Add tests for the two bugs fixed in index.c.
+ Add NEWS for 5.4.1.
- tests/test_index.c | 30 ++++++++++++++++++++++++++++++
- 1 file changed, 30 insertions(+)
+ NEWS | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 70 insertions(+)
-commit 21515d79d778b8730a434f151b07202d52a04611
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-10-12 20:45:15 +0300
+commit d1561c47ec8cd3844a785d3741dc932f9b9c5790
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-11 22:46:48 +0800
- liblzma: Fix lzma_index_dup() for empty Streams.
+ xz: Fix warning -Wformat-nonliteral on clang in message.c.
- Stream Flags and Stream Padding weren't copied from
- empty Streams.
+ clang and gcc differ in how they handle -Wformat-nonliteral. gcc will
+ allow a non-literal format string as long as the function takes its
+ format arguments as a va_list.
- src/liblzma/common/index.c | 11 ++++++-----
- 1 file changed, 6 insertions(+), 5 deletions(-)
+ src/xz/message.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
-commit 09f395b6b360c0b13e8559eece1d179b908ebd3a
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-10-12 20:31:44 +0300
+commit 8c0f115cc489331c48df77beca92fe378039d919
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-11 20:58:31 +0800
- liblzma: Add a note to index.c for those using static analyzers.
+ Tests: Fix test_filter_flags copy/paste error.
- src/liblzma/common/index.c | 3 +++
- 1 file changed, 3 insertions(+)
+ tests/test_filter_flags.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit 3bf857edfef51374f6f3fffae3d817f57d3264a0
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-10-12 20:29:09 +0300
+commit 25035813d1d596fde692addc33e7f715f1fe55eb
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-11 20:42:29 +0800
- liblzma: Fix a memory leak in error path of lzma_index_dup().
-
- lzma_index_dup() calls index_dup_stream() which, in case of
- an error, calls index_stream_end() to free memory allocated
- by index_stream_init(). However, it illogically didn't
- actually free the memory. To make it logical, the tree
- handling code was modified a bit in addition to changing
- index_stream_end().
+ Tests: Fix type-limits warning in test_filter_flags.
- Thanks to Evan Nemerson for the bug report.
+ This only occurs in test_filter_flags when the BCJ filters are not
+ configured and built. In this case, ARRAY_SIZE() returns 0 and causes a
+ type-limits warning with the loop variable since an unsigned number will
+ always be >= 0.
- src/liblzma/common/index.c | 18 +++++++++---------
- 1 file changed, 9 insertions(+), 9 deletions(-)
+ tests/test_filter_flags.c | 13 ++++++++++---
+ 1 file changed, 10 insertions(+), 3 deletions(-)
-commit 7f05803979b4b79642d5be4218a79da7a0b12c47
+commit 0b8fa310cf56fec55663f62340e49e8e1441594f
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-09-29 13:57:28 +0300
+Date: 2023-01-10 22:14:03 +0200
- Update NEWS for 5.2.2.
+ liblzma: CLMUL CRC64: Work around a bug in MSVC, second attempt.
+
+ This affects only 32-bit x86 builds. x86-64 is OK as is.
+
+ I still cannot easily test this myself. The reporter has tested
+ this and it passes the tests included in the CMake build and
+ performance is good: raw CRC64 is 2-3 times faster than the
+ C version of the slice-by-four method. (Note that liblzma doesn't
+ include a MSVC-compatible version of the 32-bit x86 assembly code
+ for the slice-by-four method.)
+
+ Thanks to Iouri Kharon for figuring out a fix, testing, and
+ benchmarking.
- NEWS | 18 ++++++++++++++++++
+ src/liblzma/check/crc64_fast.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
-commit 397fcc0946315b55c3c6d80e37e82a2a78bc15c1
-Author: Hauke Henningsen <sqrt@entless.org>
-Date: 2015-08-17 04:59:54 +0200
+commit 765354b50c2886fc0d294d6be3b207f7ae2ada70
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-11 01:18:50 +0800
+
+ Tests: Fix unused function warning in test_block_header.
+
+ One of the global arrays of filters was only used in a test that
+ required both encoders and decoders to be configured in the build.
+
+ tests/test_block_header.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit 7c23c05befdcc73231c0d6632a7d943dbeaea1aa
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-11 01:08:03 +0800
+
+ Tests: Fix unused function warning in test_index_hash.
+
+ test_index_hash does not use fill_index_hash() unless both encoders
+ and decoders are configured in the build.
+
+ tests/test_index_hash.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+commit 57464bb4ebd6c00dc8b19803f05ea55ddd0826f6
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-11 00:54:45 +0800
- Update German translation, mostly wrt orthography
+ CI/CD: Add 32-bit build and test steps to Ubuntu autotools runner.
- Provide an update of the German translation.
- * A lot of compound words were previously written with spaces, while
- German orthography is relatively clear in that the components
- should not be separated.
- * When referring to the actual process of (de)compression rather than the
- concept, replace “(De-)Kompression” with “(De-)Komprimierung”.
- Previously, both forms were used in this context and are now used in a
- manner consistent with “Komprimierung” being more likely to refer to
- a process.
- * Consistently translate “standard input”/“output”
- * Use “Zeichen” instead of false friend “Charakter” for “character”
- * Insert commas around relative clauses (as required in German)
- * Some other minor corrections
- * Capitalize “ß” as “ẞ”
- * Consistently start option descriptions in --help with capital letters
+ If all goes well, Mac autotools and Linux and Mac CMake will be added
+ later for 32-bit builds.
+
+ .github/workflows/ci.yml | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+commit 923eb689a4b863b6cca8df6360d4962aae994edf
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-11 00:51:01 +0800
+
+ CI/CD: Enables warnings as errors in autotool build.
- Acked-By: Andre Noll <maan@tuebingen.mpg.de>
+ This will help us catch warnings and potential bugs in builds that are
+ not often tested by us.
+
+ build-aux/ci_build.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit feae5528a30c006b6e2f96a95116e20b983703fc
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-11 00:48:35 +0800
+
+ CI/CD: Add -f argument to set CFLAGS in ci_build.sh.
- * Update after msgmerge
+ For now, the suggested option is for -m32 only, but this can be updated
+ later if other flags are deemed useful.
- po/de.po | 383 ++++++++++++++++++++++++++++++++-------------------------------
- 1 file changed, 196 insertions(+), 187 deletions(-)
+ build-aux/ci_build.sh | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
-commit cbc9e39bae715accb44168930a71888480aad569
+commit cfabb62a4874c146e7d6f30445637602545bc054
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-08-11 13:23:04 +0300
+Date: 2023-01-10 12:47:16 +0200
- Build: Minor Cygwin cleanup.
+ Revert "liblzma: CLMUL CRC64: Workaround a bug in MSVC (VS2015-2022)."
+
+ This reverts commit 36edc65ab4cf10a131f239acbd423b4510ba52d5.
- Some tests used "cygwin*" and some used "cygwin". I changed
- them all to use "cygwin". Shouldn't affect anything in practice.
+ It was reported that it wasn't a good enough fix and MSVC
+ still produced (different kind of) bad code when building
+ for 32-bit x86 if optimizations are enabled.
+
+ Thanks to Iouri Kharon.
- configure.ac | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
+ src/liblzma/check/crc64_fast.c | 6 ------
+ 1 file changed, 6 deletions(-)
-commit bcacd8ce7a031566858e5e03c1009064c3f1c89e
+commit 0b64215170dd3562f207ef26f794755bcd600526
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-08-11 13:21:52 +0300
+Date: 2023-01-10 11:56:11 +0200
- Build: Support building of MSYS2 binaries.
+ sysdefs.h: Don't include strings.h anymore.
+
+ On some platforms src/xz/suffix.c may need <strings.h> for
+ strcasecmp() but suffix.c includes the header when it needs it.
+
+ Unless there is an old system that otherwise supports enough C99
+ to build XZ Utils but doesn't have C89/C90-compatible <string.h>,
+ there should be no need to include <strings.h> in sysdefs.h.
- configure.ac | 16 +++++++++++-----
- 1 file changed, 11 insertions(+), 5 deletions(-)
+ src/common/sysdefs.h | 6 ------
+ 1 file changed, 6 deletions(-)
-commit 0275a5398c01d57b724dec7fea52dec3bd6edc6c
+commit ec2fc39fe4f4e6e242b3a669585049763968cdeb
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-08-09 21:06:26 +0300
+Date: 2023-01-10 11:23:41 +0200
- Windows: Define DLL_EXPORT when building liblzma.dll with MSVC.
+ xz: Include <strings.h> in suffix.c if needed for strcasecmp().
- src/liblzma/common/common.h uses it to set __declspec(dllexport)
- for the API symbols.
+ SUSv2 and POSIX.1‐2017 declare only a few functions in <strings.h>.
+ Of these, strcasecmp() is used on some platforms in suffix.c.
+ Nothing else in the project needs <strings.h> (at least if
+ building on a modern system).
+
+ sysdefs.h currently includes <strings.h> if HAVE_STRINGS_H is
+ defined and suffix.c relied on this.
- Thanks to Adam Walling.
+ Note that dos/config.h doesn't #define HAVE_STRINGS_H even though
+ DJGPP does have strings.h. It isn't needed with DJGPP as strcasecmp()
+ is also in <string.h> in DJGPP.
- windows/liblzma_dll.vcxproj | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
+ src/xz/suffix.c | 3 +++
+ 1 file changed, 3 insertions(+)
-commit a74525cf9b945fb0b370e64cf406104beb31729b
+commit 7049c4a76c805ad27d6cf4ee119a2ef2a7add59f
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-08-09 21:02:20 +0300
+Date: 2023-01-10 10:05:13 +0200
- Windows: Omit unneeded header files from MSVC project files.
+ sysdefs.h: Fix a comment.
- windows/liblzma.vcxproj | 5 -----
- windows/liblzma_dll.vcxproj | 5 -----
- 2 files changed, 10 deletions(-)
+ src/common/sysdefs.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit fbbb295a91caf39faf8838c8c39526e4cb4dc121
+commit 194a5fab69277d9e804a6113b5f676b8666b3a61
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-07-12 20:48:19 +0300
+Date: 2023-01-10 10:04:06 +0200
- liblzma: A MSVC-specific hack isn't needed with MSVC 2013 and newer.
+ sysdefs.h: Don't include memory.h anymore even if it were available.
+
+ It quite probably was never needed, that is, any system where memory.h
+ was required likely couldn't compile XZ Utils for other reasons anyway.
+
+ XZ Utils 5.2.6 and later source packages were generated using
+ Autoconf 2.71 which no longer defines HAVE_MEMORY_H. So the code
+ being removed is no longer used anyway.
- src/liblzma/api/lzma.h | 18 +++++++++++++-----
- 1 file changed, 13 insertions(+), 5 deletions(-)
+ src/common/sysdefs.h | 8 ++------
+ 1 file changed, 2 insertions(+), 6 deletions(-)
-commit 713dbe5c230fe00865a54f5c32358ea30f9a1156
+commit 5e34774c31d1b7509b5cb77a3be9973adec59ea0
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-06-19 20:38:55 +0300
+Date: 2023-01-10 08:29:32 +0200
- Update THANKS.
+ CMake: Fix appending to CMAKE_RC_FLAGS.
+
+ It's a string, not a list. It only worked when the variable was empty.
+
+ Thanks to Iouri Kharon.
- THANKS | 2 ++
- 1 file changed, 2 insertions(+)
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 3a5d755d055d51f99c523b4c2952727e1e69cfa1
+commit 6e652ceb18c615c578c869db300fa0756788b4e0
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-06-19 20:21:30 +0300
+Date: 2023-01-10 00:33:14 +0200
- Windows: Update the docs.
+ Windows: Update INSTALL-MSVC.txt to recommend CMake over project files.
- INSTALL | 29 ++++++++-----
- windows/INSTALL-MSVC.txt | 47 ++++++++++++++++++++++
- windows/{INSTALL-Windows.txt => INSTALL-MinGW.txt} | 2 +-
- 3 files changed, 67 insertions(+), 11 deletions(-)
+ windows/INSTALL-MSVC.txt | 19 ++++++++++++-------
+ 1 file changed, 12 insertions(+), 7 deletions(-)
-commit b0798c6aa6184efcefd0bdcca20f96121a13feda
+commit 6b117d3b1fe91eb26d533ab16a2e552f84148d47
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-06-19 17:25:31 +0300
+Date: 2023-01-09 23:41:25 +0200
- Windows: Add MSVC project files for building liblzma.
+ CMake: Fix windres issues again.
- Thanks to Adam Walling for creating these files.
+ At least on some systems, GNU windres needs --use-temp-file
+ in addition to the \x20 hack to avoid spaces in the command line
+ argument. Hovever, that \x20 syntax is broken with llvm-windres
+ version 15.0.0 (results in "XZx20Utils") but luckily it works
+ with a regular space. Thus it is best to limit the workarounds
+ to GNU toolchain on Windows.
- windows/liblzma.vcxproj | 359 ++++++++++++++++++++++++++++++++++++++++
- windows/liblzma_dll.vcxproj | 388 ++++++++++++++++++++++++++++++++++++++++++++
- windows/xz_win.sln | 48 ++++++
- 3 files changed, 795 insertions(+)
+ CMakeLists.txt | 35 +++++++++++++++++++++++------------
+ 1 file changed, 23 insertions(+), 12 deletions(-)
-commit 9b02a4ffdac1b9f066658ec4c95c0834f4cd2fb7
-Author: Andre Noll <maan@tuebingen.mpg.de>
-Date: 2015-05-28 15:50:00 +0200
+commit 0c210ca7f489e971e94e1ddc72b0b0806e3c7935
+Author: Lasse Collin <lasse.collin@tukaani.org>
+Date: 2023-01-06 22:53:38 +0200
- Fix typo in German translation.
+ Tests: test_filter_flags: Clean up minor issues.
- As pointed out by Robert Pollak, there's a typo in the German
- translation of the compression preset option (-0 ... -9) help text.
- "The compressor" translates to "der Komprimierer", and the genitive
- form is "des Komprimierers". The old word makes no sense at all.
+ Here are the list of the most significant issues addressed:
+ - Avoid using internal common.h header. It's not good to copy the
+ constants like this but common.h cannot be included for use outside
+ of liblzma. This is the quickest thing to do that could be fixed later.
+
+ - Omit the INIT_FILTER macro. Initialization should be done with just
+ regular designated initializers.
+
+ - Use start_offset = 257 for BCJ tests. It demonstrates that Filter
+ Flags encoder and decoder don't validate the options thoroughly.
+ 257 is valid only for the x86 filter. This is a bit silly but
+ not a significant problem in practice because the encoder and
+ decoder initialization functions will catch bad alignment still.
+ Perhaps this should be fixed but it's not urgent and doesn't need
+ to be in 5.4.x.
+
+ - Various tweaks to comments such as filter id -> Filter ID
- po/de.po | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ tests/test_filter_flags.c | 153 +++++++++++++++++++++++-----------------------
+ 1 file changed, 78 insertions(+), 75 deletions(-)
+
+commit 5c9fdd3bf53a9655f5eb2807d662b3af0d5e1865
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2022-12-29 23:33:33 +0800
+
+ Tests: Refactors existing filter flags tests.
+
+ Converts the existing filter flags tests into tuktests.
-commit c7f4041f6b8f4729f88d3bc888b2a4080ae51f72
+ tests/test_filter_flags.c | 655 ++++++++++++++++++++++++++++++++--------------
+ 1 file changed, 457 insertions(+), 198 deletions(-)
+
+commit 36edc65ab4cf10a131f239acbd423b4510ba52d5
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-05-13 20:57:55 +0300
+Date: 2023-01-09 12:22:05 +0200
- Tests: Fix a memory leak in test_bcj_exact_size.
+ liblzma: CLMUL CRC64: Workaround a bug in MSVC (VS2015-2022).
+
+ I haven't tested with MSVC myself and there doesn't seem to be
+ information about the problem online, so I'm relying on the bug report.
- Thanks to Cristian Rodríguez.
+ Thanks to Iouri Kharon for the bug report and the patch.
- tests/test_bcj_exact_size.c | 1 +
- 1 file changed, 1 insertion(+)
+ src/liblzma/check/crc64_fast.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
-commit 17b29d4f0ae0f780fbd69e15a398dc478d8492f8
+commit 790a12a95a78ff82d8c6d4efe3b789851ca9470d
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-05-12 18:08:24 +0300
+Date: 2023-01-09 11:27:24 +0200
- Fix NEWS about threading in 5.2.0.
+ CMake: Fix a copypaste error in xzdec Windows resource file handling.
- Thanks to Andy Hochhaus.
+ It was my mistake. Thanks to Iouri Kharon for the bug report.
- NEWS | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
+ CMakeLists.txt | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit 49c26920d6e2d85e5c6123e34958aed2e77485ad
+commit 0e1545fea39c0514c7b7032a0a3592a9a33d2848
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-05-11 21:26:16 +0300
+Date: 2023-01-08 00:32:29 +0200
- xz: Document that threaded decompression hasn't been implemented yet.
+ Tests: tuktest.h: Support tuktest_malloc(0).
+
+ It's not needed in XZ Utils at least for now. It's good to support
+ it still because if such use is needed later, it wouldn't be
+ caught on GNU/Linux since malloc(0) from glibc returns non-NULL.
- src/xz/xz.1 | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
+ tests/tuktest.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-commit 5b2458cb244ed237efe4de1ebcf06e1b3a1f4256
+commit 69d5d78c6904668eb09a131da86276beec3281f8
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-04-20 20:20:29 +0300
+Date: 2023-01-08 00:24:23 +0200
Update THANKS.
THANKS | 1 +
1 file changed, 1 insertion(+)
-commit 6bd0349c58451b13442e8f463e35de83548bf985
+commit dd38655f80c113c9db73b9ed370dc900e1c4dc41
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-04-20 19:59:18 +0300
+Date: 2023-01-07 21:57:11 +0200
- Revert "xz: Use pipe2() if available."
-
- This reverts commit 7a11c4a8e5e15f13d5fa59233b3172e65428efdd.
- It is a problem when libc has pipe2() but the kernel is too
- old to have pipe2() and thus pipe2() fails. In xz it's pointless
- to have a fallback for non-functioning pipe2(); it's better to
- avoid pipe2() completely.
+ CMake: Update cmake_minimum_required from 3.13...3.16 to 3.13...3.25.
- Thanks to Michael Fox for the bug report.
-
- configure.ac | 4 ++--
- src/xz/file_io.c | 9 +--------
- 2 files changed, 3 insertions(+), 10 deletions(-)
-
-commit fc0df0f8db87dff45543708a711e17d29c37f632
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-04-01 14:45:25 +0300
-
- xz: Fix the Capsicum rights on user_abort_pipe.
+ The changes listed on cmake-policies(7) for versions 3.17 to 3.25
+ shouldn't affect this project.
- src/xz/file_io.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 57393615b31b3788dd77280452d845bcc12d33af
+commit a890a637bee9193d5b690aefa9a59eba5b8532ae
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-03-31 22:20:11 +0300
+Date: 2023-01-07 19:50:35 +0200
Update THANKS.
THANKS | 1 +
1 file changed, 1 insertion(+)
-commit 1238381143a9a7ce84839c2582ccd56ff750a440
+commit 6e38e595dd56ac1800478cef1f6f754d0eba0d2e
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-03-31 22:19:34 +0300
+Date: 2023-01-07 19:50:03 +0200
- xz: Add support for sandboxing with Capsicum.
-
- The sandboxing is used conditionally as described in main.c.
- This isn't optimal but it was much easier to implement than
- a full sandboxing solution and it still covers the most common
- use cases where xz is writing to standard output. This should
- have practically no effect on performance even with small files
- as fork() isn't needed.
-
- C and locale libraries can open files as needed. This has been
- fine in the past, but it's a problem with things like Capsicum.
- io_sandbox_enter() tries to ensure that various locale-related
- files have been loaded before cap_enter() is called, but it's
- possible that there are other similar problems which haven't
- been seen yet.
+ CMake/Windows: Add resource files to xz.exe and xzdec.exe.
- Currently Capsicum is available on FreeBSD 10 and later
- and there is a port to Linux too.
+ The command line tools cannot be built with MSVC for now but
+ they can be built with MinGW-w64.
- Thanks to Loganaden Velvindron for help.
+ Thanks to Iouri Kharon for the bug report and the original patch.
- configure.ac | 41 +++++++++++++++++++++++++++
- src/xz/Makefile.am | 2 +-
- src/xz/file_io.c | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
- src/xz/file_io.h | 6 ++++
- src/xz/main.c | 18 ++++++++++++
- src/xz/private.h | 4 +++
- 6 files changed, 151 insertions(+), 1 deletion(-)
+ CMakeLists.txt | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
-commit 29a087fb5a0c879f0b1bc4c6b989f7b87bacdf9e
+commit 443dfebced041adc88f10d824188eeef5b5821a9
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-03-31 21:12:30 +0300
+Date: 2023-01-07 19:48:52 +0200
- Fix bugs and otherwise improve ax_check_capsicum.m4.
-
- AU_ALIAS was removed because the new version is incompatible
- with the old version.
-
- It no longer checks for <sys/capability.h> separately.
- It's enough to test for it as part of AC_CHECK_DECL.
- The defines HAVE_CAPSICUM_SYS_CAPSICUM_H and
- HAVE_CAPSICUM_SYS_CAPABILITY_H were removed as unneeded.
- HAVE_SYS_CAPSICUM_H from AC_CHECK_HEADERS is enough.
-
- It no longer does a useless search for the Capsicum library
- if the header wasn't found.
-
- Fixed a bug in ACTION-IF-FOUND (the first argument). Specifying
- the argument omitted the default action but the given action
- wasn't used instead.
-
- AC_DEFINE([HAVE_CAPSICUM]) is now always called when Capsicum
- support is found. Previously it was part of the default
- ACTION-IF-FOUND which a custom action would override. Now
- the default action only prepends ${CAPSICUM_LIB} to LIBS.
-
- The documentation was updated.
+ CMake/Windows: Add a workaround for windres from GNU binutils.
- Since there as no serial number, "#serial 2" was added.
+ Thanks to Iouri Kharon for the bug report and the original patch.
- m4/ax_check_capsicum.m4 | 103 ++++++++++++++++++++++++------------------------
- 1 file changed, 51 insertions(+), 52 deletions(-)
+ CMakeLists.txt | 21 ++++++++++++++++++++-
+ 1 file changed, 20 insertions(+), 1 deletion(-)
-commit 6e845c6a3eddf2fde9db5a29950421dff60a43ac
+commit ceb805011747d04a915f3f39e4bed9eed151c634
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-03-31 19:20:24 +0300
+Date: 2023-01-07 19:31:15 +0200
- Add m4/ax_check_capsicum.m4 for detecting Capsicum support.
+ Build: Require that _mm_set_epi64x() is usable to enable CLMUL support.
- The file was loaded from this web page:
- https://github.com/google/capsicum-test/blob/dev/autoconf/m4/ax_check_capsicum.m4
+ VS2013 doesn't have _mm_set_epi64x() so this way CLMUL gets
+ disabled with VS2013.
- Thanks to Loganaden Velvindron for pointing it out for me.
+ Thanks to Iouri Kharon for the bug report.
- m4/ax_check_capsicum.m4 | 86 +++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 86 insertions(+)
+ CMakeLists.txt | 3 ++-
+ configure.ac | 8 ++++++--
+ 2 files changed, 8 insertions(+), 3 deletions(-)
-commit 3717885f9ef2c06f1bcbad9f4c2ed2d5695f844e
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-03-30 22:44:02 +0300
+commit 8d372bd94066b1a5b0570b2550f83c2868486adf
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-07 21:05:15 +0800
- Bump version to 5.3.0alpha and soname to 5.3.99.
+ CI/CD: Split CMake Linux and MacOS build phase to build and test.
- The idea of 99 is that it looks a bit weird in this context.
- For new features there's no API/ABI stability in devel versions.
+ The phase split was only done for Autotools before, so should also
+ apply to CMake.
- src/liblzma/Makefile.am | 2 +-
- src/liblzma/api/lzma/version.h | 6 +++---
- 2 files changed, 4 insertions(+), 4 deletions(-)
+ .github/workflows/ci.yml | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
-commit eccd8155e107c5ada03d13e7730675cdf1a44ddc
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-03-29 22:14:47 +0300
+commit 747c7f2b34bd498f6702c6875500a26b06201772
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-07 11:16:55 +0800
- Update THANKS.
+ CI/CD: Reduce job runners to 4 instead of using matrix strategy.
+
+ The old version used too many runners that resulted in unnecessary
+ dependency downloads. Now, the runners are reused for the different
+ configurations for each OS and build system.
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ .github/workflows/ci.yml | 95 ++++++++++++++++++++++++++++++++++++++++++------
+ 1 file changed, 83 insertions(+), 12 deletions(-)
-commit 25263fd9e7a8a913395cb93d7c104cd48c2b4a00
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-03-29 22:13:48 +0300
+commit 4de35fd6b58d46fc887c78faf163f6a37b790c45
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-07 10:07:20 +0800
- Fix the detection of installed RAM on QNX.
-
- The earlier version compiled but didn't actually work
- since sysconf(_SC_PHYS_PAGES) always fails (or so I was told).
+ CI/CD: Add new -p (PHASE) argument to ci_build.sh
- Thanks to Ole André Vadla Ravnås for the patch and testing.
+ The new PHASE argument can be build, test, or all. all is the default.
+ This way, the CI/CD script can differentiate between the build and test
+ phases to make it easier to track down errors when they happen.
- m4/tuklib_physmem.m4 | 6 +++---
- src/common/tuklib_physmem.c | 14 +++++++++++++-
- 2 files changed, 16 insertions(+), 4 deletions(-)
+ build-aux/ci_build.sh | 140 +++++++++++++++++++++++++++-----------------------
+ 1 file changed, 76 insertions(+), 64 deletions(-)
-commit 4c544d2410903d38402221cb783ed85585b6a007
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-03-27 22:39:07 +0200
+commit 6fd39664de47801e670a16617863196bfbde4755
+Merge: 78e0561d fc0c7884
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-07 00:10:50 +0800
- Fix CPU core count detection on QNX.
-
- It tried to use sysctl() on QNX but
- - it broke the build because sysctl() needs -lsocket on QNX;
- - sysctl() doesn't work for detecting the core count on QNX
- even if it compiled.
+ Merge pull request #7 from tukaani-project/tuktest_index_hash
- sysconf() works. An alternative would have been to use
- QNX-specific SYSPAGE_ENTRY(num_cpu) from <sys/syspage.h>.
-
- Thanks to Ole André Vadla Ravnås.
-
- m4/tuklib_cpucores.m4 | 15 +++++++++++----
- 1 file changed, 11 insertions(+), 4 deletions(-)
+ Tuktest index hash
-commit e0ea6737b03e83ccaff4514d00e31bb926f8f0f3
+commit fc0c788469159f634f09ff23c8cef6925c91da57
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-03-07 22:05:57 +0200
+Date: 2023-01-06 17:58:48 +0200
- xz: size_t/uint32_t cleanup in options.c.
+ Tests: test_index_hash: Add an assert_uint_eq().
- src/xz/options.c | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
+ tests/test_index_hash.c | 3 +++
+ 1 file changed, 3 insertions(+)
-commit 8bcca29a65335fd679c13814b70b35b68fa5daed
+commit d550304f5343b3a082da265107cd820e0d81dc71
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-03-07 22:04:23 +0200
+Date: 2023-01-06 17:55:06 +0200
- xz: Fix a comment and silence a warning in message.c.
+ Tests: test_index_hash: Fix a memory leak.
- src/xz/message.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
+ tests/test_index_hash.c | 2 ++
+ 1 file changed, 2 insertions(+)
-commit f243f5f44c6b19a7c289a0ec73a03ee08364cb5b
+commit 02608f74ea1f2d2d56585711ff241c34b4ad0937
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-03-07 22:01:00 +0200
+Date: 2023-01-06 17:53:03 +0200
- liblzma: Silence more uint32_t vs. size_t warnings.
+ Tests: test_index_hash: Don't treat pointers as booleans.
- src/liblzma/lz/lz_encoder.c | 2 +-
- src/liblzma/lzma/lzma_encoder.c | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
+ tests/test_index_hash.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
-commit 7f0a4c50f4a374c40acf4b86848f301ad1e82d34
+commit 056766c8601a3808bea1761f6cc833197a35a3e0
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-03-07 19:54:00 +0200
+Date: 2023-01-06 17:51:41 +0200
- xz: Make arg_count an unsigned int to silence a warning.
-
- Actually the value of arg_count cannot exceed INT_MAX
- but it's nicer as an unsigned int.
+ Tests: test_index_hash: Fix a typo in a comment.
- src/xz/args.h | 2 +-
- src/xz/main.c | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
+ tests/test_index_hash.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit f6ec46801588b1be29c07c9db98558b521304002
+commit 873e684028ba9738f071c5236db7d452ed797b4c
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-03-07 19:33:17 +0200
+Date: 2023-01-06 17:44:29 +0200
- liblzma: Fix a warning in index.c.
+ Tests: test_index_hash: Avoid the variable name "index".
+
+ It can trigger warnings from -Wshadow on some systems.
- src/liblzma/common/index.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
+ tests/test_index_hash.c | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
-commit a24518971cc621315af142dd3bb7614fab04ad27
+commit d1f24c35874eeba8432d75aa77b06c50375ed937
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-02-26 20:46:14 +0200
+Date: 2023-01-06 17:35:50 +0200
- Build: Fix a CR+LF problem when running autoreconf -fi on OS/2.
+ Tests: test_index_hash: Use the word "Record" instead of "entry".
- build-aux/version.sh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ tests/test_index_hash.c | 102 ++++++++++++++++++++++++------------------------
+ 1 file changed, 51 insertions(+), 51 deletions(-)
-commit dec11497a71518423b5ff0e759100cf8aadf6c7b
+commit b93f7c5cbb02b42024ac866fc0af541de3d816e2
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-02-26 16:53:44 +0200
+Date: 2023-01-06 17:35:05 +0200
- Bump version and soname for 5.2.1.
+ Tests: test_index_hash: Tweak comments and style.
+
+ The words defined in the .xz file format specification
+ begin with capital letter to emphasize that they have
+ a specific meaning.
- src/liblzma/Makefile.am | 2 +-
- src/liblzma/api/lzma/version.h | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
+ tests/test_index_hash.c | 62 ++++++++++++++++++++++++++-----------------------
+ 1 file changed, 33 insertions(+), 29 deletions(-)
-commit 29e39c79975ab89ee5dd671e97064534a9f3a649
+commit c48b24fc06d98569adb72f13c2e8e5ff30bb8036
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-02-26 13:01:09 +0200
+Date: 2023-01-06 17:17:37 +0200
- Update NEWS for 5.2.1.
+ Tests: test_index_hash: Use INDEX_INDICATOR constant instead of 0.
- NEWS | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
+ tests/test_index_hash.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 7a11c4a8e5e15f13d5fa59233b3172e65428efdd
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-02-22 19:38:48 +0200
+commit 78e0561dfebaa9d5e34558de537efcda890e0629
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-06 20:43:31 +0800
- xz: Use pipe2() if available.
+ Style: Change #if !defined() to #ifndef in mythread.h.
- configure.ac | 4 ++--
- src/xz/file_io.c | 9 ++++++++-
- 2 files changed, 10 insertions(+), 3 deletions(-)
+ src/common/mythread.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 117d962685c72682c63edc9bb765367189800202
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-02-21 23:40:26 +0200
+commit e834e1e934ed0af673598d8c0c34afb2af56bee0
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-06 20:35:55 +0800
- liblzma: Fix a compression-ratio regression in LZMA1/2 in fast mode.
+ Build: Add missing stream_decoder_mt.c to .vcxproj files.
- The bug was added in the commit
- f48fce093b07aeda95c18850f5e086d9f2383380 and thus
- affected 5.1.4beta and 5.2.0. Luckily the bug cannot
- cause data corruption or other nasty things.
+ The line in the .vcxproj files for building with was missing in 5.4.0.
+ Thank to Hajin Jang for reporting the issue.
- src/liblzma/lzma/lzma_encoder_optimum_fast.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ windows/vs2013/liblzma.vcxproj | 1 +
+ windows/vs2013/liblzma_dll.vcxproj | 1 +
+ windows/vs2017/liblzma.vcxproj | 1 +
+ windows/vs2017/liblzma_dll.vcxproj | 1 +
+ windows/vs2019/liblzma.vcxproj | 1 +
+ windows/vs2019/liblzma_dll.vcxproj | 1 +
+ 6 files changed, 6 insertions(+)
-commit ae984e31c167d3bc52972ec422dd1ebd5f5d5719
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-02-21 23:00:19 +0200
+commit 84f9687cbae972c2c342e10bf69f8ec8f70ae111
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-05 20:57:25 +0800
- xz: Fix the fcntl() usage when creating a pipe for the self-pipe trick.
+ liblzma: Remove common.h include from common/index.h.
- Now it reads the old flags instead of blindly setting O_NONBLOCK.
- The old code may have worked correctly, but this is better.
+ common/index.h is needed by liblzma internally and tests. common.h will
+ include and define many things that are not needed by the tests. Also,
+ this prevents include order problems because common.h will redefine
+ LZMA_API resulting in a warning.
- src/xz/file_io.c | 16 +++++++++++-----
- 1 file changed, 11 insertions(+), 5 deletions(-)
+ src/liblzma/common/index.c | 1 +
+ src/liblzma/common/index.h | 9 +++++++--
+ src/liblzma/common/index_decoder.h | 1 +
+ src/liblzma/common/stream_buffer_encoder.c | 1 +
+ 4 files changed, 10 insertions(+), 2 deletions(-)
-commit 2205bb5853098aea36a56df6f5747037175f66b4
+commit 7657ce1c3c4abff7560336a7b687d98e0e2bd14f
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-02-10 15:29:34 +0200
+Date: 2023-01-04 22:40:54 +0200
Update THANKS.
THANKS | 1 +
1 file changed, 1 insertion(+)
-commit d935b0cdf3db440269b9d952b2b281b18f8c7b08
+commit aafd67fba045ab99683971263a5a26fb2a6e8ce2
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-02-10 15:28:30 +0200
+Date: 2023-01-04 18:40:28 +0200
- tuklib_cpucores: Use cpuset_getaffinity() on FreeBSD if available.
-
- In FreeBSD, cpuset_getaffinity() is the preferred way to get
- the number of available cores.
+ Tests: Adjust style in test_compress.sh.
+
+ tests/test_compress.sh | 12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+commit 52380678f42364daa4510f92f6d3b18ec98c3638
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-04 23:58:58 +0800
+
+ Tests: Replace non portable shell parameter expansion
- Thanks to Rui Paulo for the patch. I edited it slightly, but
- hopefully I didn't break anything.
+ The shell parameter expansion using # and ## is not supported in
+ Solaris 10 Bourne shell (/bin/sh). Even though this is POSIX, it is not fully
+ portable, so we should avoid it.
- m4/tuklib_cpucores.m4 | 23 ++++++++++++++++++++++-
- src/common/tuklib_cpucores.c | 18 ++++++++++++++++++
- 2 files changed, 40 insertions(+), 1 deletion(-)
+ tests/create_compress_files.c | 2 +-
+ tests/test_compress.sh | 20 +++++++++++++-------
+ tests/test_compress_prepared_bcj_sparc | 2 +-
+ tests/test_compress_prepared_bcj_x86 | 2 +-
+ 4 files changed, 16 insertions(+), 10 deletions(-)
-commit eb61bc58c20769cac4d05f363b9c0e8c9c71a560
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-02-09 22:08:37 +0200
+commit d0eb345bb7d148a62883ee299adec2b74a0f6f3b
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-03 21:02:38 +0800
- xzdiff: Make the mktemp usage compatible with FreeBSD's mktemp.
+ Translations: Add Korean translation of man pages.
- Thanks to Rui Paulo for the fix.
+ Thanks to Seong-ho Cho
- src/scripts/xzdiff.in | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
+ po4a/ko.po | 5552 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ po4a/po4a.conf | 2 +-
+ 2 files changed, 5553 insertions(+), 1 deletion(-)
-commit b9a5b6b7a29029680af733082b6a46e0fc01623a
+commit c4145978d95ebf1690c778d354e15f7c2823d7a8
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-03 20:47:27 +0800
+
+ Translations: Update the Esperanto translation.
+
+ po/eo.po | 620 ++++++++++++++++++++++++++++++++++-----------------------------
+ 1 file changed, 332 insertions(+), 288 deletions(-)
+
+commit 4103a2e78ac60b00c888485cd967a5fe5d1b917c
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-02-03 21:45:53 +0200
+Date: 2023-01-02 17:20:47 +0200
- Add a few casts to tuklib_integer.h to silence possible warnings.
+ Bump version and soname for 5.5.0alpha.
- I heard that Visual Studio 2013 gave warnings without the casts.
+ 5.5.0alpha won't be released, it's just to mark that
+ the branch is not for stable 5.4.x.
- Thanks to Gabi Davar.
+ Once again there is no API/ABI stability for new features
+ in devel versions. The major soname won't be bumped even
+ if API/ABI of new features breaks between devel releases.
- src/common/tuklib_integer.h | 24 ++++++++++++------------
- 1 file changed, 12 insertions(+), 12 deletions(-)
+ src/liblzma/Makefile.am | 2 +-
+ src/liblzma/api/lzma/version.h | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
-commit c45757135f40e4a0de730ba5fff0100219493982
+commit 73c9e6d6b970ccc3d5ad61dcaa21cba050e5df0a
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-01-26 21:24:39 +0200
+Date: 2023-01-02 17:05:07 +0200
- liblzma: Set LZMA_MEMCMPLEN_EXTRA depending on the compare method.
+ Build: Fix config.h comments.
- src/liblzma/common/memcmplen.h | 15 ++++++++++-----
- 1 file changed, 10 insertions(+), 5 deletions(-)
+ configure.ac | 2 +-
+ m4/tuklib_progname.m4 | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
-commit 3c500174ed5485f550972a2a6109c361e875f069
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-01-26 20:40:16 +0200
+commit bb740e3b117f1a3c65152d01e5755523a908ecb1
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2023-01-02 22:33:48 +0800
- Update THANKS.
+ Build: Only define HAVE_PROGRAM_INVOCATION_NAME if it is set to 1.
+
+ HAVE_DECL_PROGRAM_INVOCATION_NAME is renamed to
+ HAVE_PROGRAM_INVOCATION_NAME. Previously,
+ HAVE_DECL_PROGRAM_INVOCATION_NAME was always set when
+ building with autotools. CMake would only set this when it was 1, and the
+ dos/config.h did not define it. The new macro definition is consistent
+ across build systems.
- THANKS | 1 +
+ cmake/tuklib_progname.cmake | 5 ++---
+ m4/tuklib_progname.m4 | 5 ++++-
+ src/common/tuklib_progname.c | 2 +-
+ src/common/tuklib_progname.h | 2 +-
+ 4 files changed, 8 insertions(+), 6 deletions(-)
+
+commit 064cd385a716abc78d93a3612411a82d69ceb221
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2022-12-29 00:30:52 +0800
+
+ Adds test_index_hash to .gitignore.
+
+ .gitignore | 1 +
1 file changed, 1 insertion(+)
-commit fec88d41e672d9e197c9442aecf02bd0dfa6d516
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-01-26 20:39:28 +0200
+commit 3959162baec074511d83ba0fec1284c3ed724799
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2022-12-29 00:25:18 +0800
- liblzma: Silence harmless Valgrind errors.
+ Tests: Creates test_index_hash.c
- Thanks to Torsten Rupp for reporting this. I had
- forgotten to run Valgrind before the 5.2.0 release.
+ Tests all API functions exported from index_hash.h. Does not have a
+ dedicated test for lzma_index_hash_end.
- src/liblzma/lz/lz_encoder.c | 6 ++++++
- 1 file changed, 6 insertions(+)
+ CMakeLists.txt | 2 +
+ tests/Makefile.am | 3 +
+ tests/test_index_hash.c | 379 ++++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 384 insertions(+)
-commit a9b45badfec0928d20a27c7176c005fa637f7d1e
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-01-09 21:50:19 +0200
+commit f16e12d5e755d371247202fcccbcccd1ec16b2cf
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2022-08-17 20:20:16 +0800
- xz: Fix comments.
+ liblzma: Add NULL check to lzma_index_hash_append.
+
+ This is for consistency with lzma_index_append.
- src/xz/file_io.c | 12 ++++++++----
- 1 file changed, 8 insertions(+), 4 deletions(-)
+ src/liblzma/common/index_hash.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-commit 541aee6dd4aa97a809aba281475a21b641bb89e2
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-01-09 21:35:06 +0200
+commit 203b008eb220208981902e0db541c02d1c1c9f5e
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2022-08-17 17:59:51 +0800
- Update THANKS.
+ liblzma: Replaced hardcoded 0x0 index indicator byte with macro
- THANKS | 1 +
- 1 file changed, 1 insertion(+)
+ src/liblzma/common/index.h | 3 +++
+ src/liblzma/common/index_decoder.c | 2 +-
+ src/liblzma/common/index_encoder.c | 2 +-
+ src/liblzma/common/index_hash.c | 2 +-
+ src/liblzma/common/stream_decoder.c | 3 ++-
+ src/liblzma/common/stream_decoder_mt.c | 2 +-
+ 6 files changed, 9 insertions(+), 5 deletions(-)
-commit 4170edc914655310d2363baccf5e615e09b04911
+commit dfecda875211f737d0db92dc1d3c58a3a2afb0c0
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-01-09 21:34:06 +0200
+Date: 2022-12-30 20:10:08 +0200
- xz: Don't fail if stdout doesn't support O_NONBLOCK.
-
- This is similar to the case with stdin.
-
- Thanks to Brad Smith for the bug report and testing
- on OpenBSD.
+ Tests: test_check: Test corner cases of CLMUL CRC64.
- src/xz/file_io.c | 36 +++++++++++++++---------------------
- 1 file changed, 15 insertions(+), 21 deletions(-)
+ tests/test_check.c | 27 +++++++++++++++++++++++++++
+ 1 file changed, 27 insertions(+)
-commit 04bbc0c2843c50c8ad1cba42b937118e38b0508d
+commit ce96bb20435212fe797d6d84738fb9fd4ea13cc7
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-01-07 19:18:20 +0200
+Date: 2022-12-30 19:36:49 +0200
- xz: Fix a memory leak in DOS-specific code.
+ Tests: Clarify a comment in test_lzip_decoder.c.
- src/xz/file_io.c | 2 ++
- 1 file changed, 2 insertions(+)
+ tests/test_lzip_decoder.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
-commit f0f1f6c7235ffa901cf76fe18e33749e200b3eea
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-01-07 19:08:06 +0200
+commit 2fcba17fc4d7eda8fc60567169cf2a0e6fcfb2f8
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2022-12-29 01:55:19 +0800
+
+ xz: Includes <time.h> and <sys/time.h> conditionally in mytime.c.
+
+ Previously, mytime.c depended on mythread.h for <time.h> to be included.
+
+ src/xz/mytime.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+commit f82294c8318a7a0990583d51ac5c7de682ad36ef
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2022-12-29 01:15:27 +0800
- xz: Don't fail if stdin doesn't support O_NONBLOCK.
+ liblzma: Includes sys/time.h conditionally in mythread
- It's a problem at least on OpenBSD which doesn't support
- O_NONBLOCK on e.g. /dev/null. I'm not surprised if it's
- a problem on other OSes too since this behavior is allowed
- in POSIX-1.2008.
+ Previously, <sys/time.h> was always included, even if mythread only used
+ clock_gettime. <time.h> is still needed even if clock_gettime is not used
+ though because struct timespec is needed for mythread_condtime.
+
+ src/common/mythread.h | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+commit 74dae7d30091e906d6a92a57952dea4354473f9b
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2022-12-29 01:10:53 +0800
+
+ Build: No longer require HAVE_DECL_CLOCK_MONOTONIC to always be set.
- The code relying on this behavior was committed in June 2013
- and included in 5.1.3alpha released on 2013-10-26. Clearly
- the development releases only get limited testing.
+ Previously, if threading was enabled HAVE_DECL_CLOCK_MONOTONIC would always
+ be set to 0 or 1. However, this macro was needed in xz so if xz was not
+ built with threading and HAVE_DECL_CLOCK_MONOTONIC was not defined but
+ HAVE_CLOCK_GETTIME was, it caused a warning during build. Now,
+ HAVE_DECL_CLOCK_MONOTONIC has been renamed to HAVE_CLOCK_MONOTONIC and
+ will only be set if it is 1.
- src/xz/file_io.c | 18 +++++++-----------
- 1 file changed, 7 insertions(+), 11 deletions(-)
+ CMakeLists.txt | 8 +++-----
+ configure.ac | 5 ++++-
+ src/common/mythread.h | 4 ++--
+ src/xz/mytime.c | 5 ++---
+ 4 files changed, 11 insertions(+), 11 deletions(-)
-commit d2d484647d9d9d679f03c75abb0404f67069271c
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2015-01-06 20:30:15 +0200
+commit 7339e39dc060df6eda74a2c5b69961befc3d5d24
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2022-12-28 01:14:07 +0800
- Tests: Don't hide unexpected error messages in test_files.sh.
+ Translations: Add Ukrainian translations of man pages.
- Hiding them makes no sense since normally there's no error
- when testing the "good" files. With "bad" files errors are
- expected and then it makes sense to keep the messages hidden.
+ Thanks to Yuri Chornoivan
- tests/test_files.sh | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ po4a/po4a.conf | 2 +-
+ po4a/uk.po | 3676 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 3677 insertions(+), 1 deletion(-)
-commit aae6a6aeda51cf94a47e39ad624728f9bee75e30
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2014-12-30 11:17:16 +0200
+commit 9f05c27a58ce8cd7803079aa295e41c24665ce6e
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2022-12-23 00:34:48 +0800
- Update Solaris notes in INSTALL.
+ CI/CD: Create initial version of CI/CD workflow.
- Mention the possible "make check" failure on Solaris in the
- Solaris-specific section of INSTALL. It was already in
- section 4.5 but it is better mention it in the OS-specific
- section too.
+ The CI/CD workflow will only execute on Ubuntu and MacOS latest version.
+ The workflow will attempt to build with autotools and CMake and execute
+ the tests. The workflow will run for all pull requests and pushes done
+ to the master branch.
- INSTALL | 4 ++++
- 1 file changed, 4 insertions(+)
+ .github/workflows/ci.yml | 72 ++++++++++++++++++++++++
+ build-aux/ci_build.sh | 141 +++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 213 insertions(+)
-commit 7815112153178800a3521b9f31960e7cdc26cfba
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2014-12-26 12:00:05 +0200
+commit 1275ebfba74230dbd028049141423c79c8b83b8f
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2022-12-22 23:14:53 +0800
- Build: POSIX shell isn't required if scripts are disabled.
+ liblzma: Update documentation for lzma_filter_encoder.
- INSTALL | 3 ++-
- configure.ac | 2 +-
- 2 files changed, 3 insertions(+), 2 deletions(-)
+ src/liblzma/common/filter_encoder.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
-commit a0cd05ee71d330b79ead6eb9222e1b24e1559d3a
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2014-12-21 20:48:37 +0200
+commit 7c9ff5f1667a16733163b75dfd4b509662c387f4
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2022-12-21 21:12:03 +0800
+
+ Tests: Adds lzip decoder tests
- DOS: Update Makefile.
+ .gitignore | 1 +
+ tests/Makefile.am | 2 +
+ tests/test_lzip_decoder.c | 471 ++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 474 insertions(+)
- dos/Makefile | 1 +
- 1 file changed, 1 insertion(+)
+commit 799ead162de63b8400733603d3abcd2e1977bdca
+Author: Jia Cheong Tan <jiat0218@gmail.com>
+Date: 2022-12-20 22:05:21 +0800
-commit b85ee0905ec4ab7656d22e63519fdd3bedb21f2e
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2014-12-21 19:50:38 +0200
+ Doxygen: Update .gitignore for generating docs for in source build.
+
+ In source builds are not recommended, but we should still ignore
+ the generated artifacts.
- Windows: Fix bin_i486 to bin_i686 in build.bash.
+ .gitignore | 2 ++
+ 1 file changed, 2 insertions(+)
- windows/build.bash | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+commit 5f7ce42a16b1e86ca8408b5c670c25e2a12acc4e
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2022-12-20 20:46:44 +0800
-commit cbafa710918195dbba3db02c3fab4f0538235206
-Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2014-12-21 18:58:44 +0200
+ liblzma: Fix lzma_microlzma_encoder() return value.
+
+ Using return_if_error on lzma_lzma_lclppb_encode was improper because
+ return_if_error is expecting an lzma_ret value, but
+ lzma_lzma_lclppb_encode returns a boolean. This could result in
+ lzma_microlzma_encoder, which would be misleading for applications.
- Docs: Use lzma_cputhreads() in 04_compress_easy_mt.c.
+ src/liblzma/common/microlzma_encoder.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
- doc/examples/04_compress_easy_mt.c | 30 ++++++++++++++++++++++++++----
- 1 file changed, 26 insertions(+), 4 deletions(-)
+commit 8ace358d65059152d9a1f43f4770170d29d35754
+Author: Jia Tan <jiat0218@gmail.com>
+Date: 2022-12-16 20:58:55 +0800
-commit 8dbb57238d372c7263cfeb3e7f7fd9a73173156a
+ CMake: Update .gitignore for CMake artifacts from in source build.
+
+ In source builds are not recommended, but we can make it easier
+ by ignoring the generated artifacts from CMake.
+
+ .gitignore | 23 +++++++++++++++++++++++
+ 1 file changed, 23 insertions(+)
+
+commit 8fd225a2c149f30aeac377e68eb5abf6b28300ad
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2014-12-21 18:56:44 +0200
+Date: 2022-12-16 18:30:02 +0200
- Docs: Update docs/examples/00_README.txt.
+ liblzma: Update authors list in arm64.c.
- doc/examples/00_README.txt | 4 ++++
- 1 file changed, 4 insertions(+)
+ src/liblzma/simple/arm64.c | 1 +
+ 1 file changed, 1 insertion(+)
-commit 6060f7dc76fd6c2a8a1f8e85d0e4d86bb78273e6
+commit b69da6d4bb6bb11fc0cf066920791990d2b22a06
Author: Lasse Collin <lasse.collin@tukaani.org>
-Date: 2014-12-21 18:11:17 +0200
+Date: 2022-12-13 20:37:17 +0200
- Bump version and soname for 5.2.0.
-
- I know that soname != app version, but I skip AGE=1
- in -version-info to make the soname match the liblzma
- version anyway. It doesn't hurt anything as long as
- it doesn't conflict with library versioning rules.
+ Bump version to 5.4.0 and soname to 5.4.0.
- src/liblzma/Makefile.am | 2 +-
- src/liblzma/api/lzma/version.h | 6 +++---
- src/liblzma/liblzma.map | 2 +-
- 3 files changed, 5 insertions(+), 5 deletions(-)
+ src/liblzma/Makefile.am | 2 +-
+ src/liblzma/api/lzma/version.h | 6 +++---
+ src/liblzma/liblzma_generic.map | 2 +-
+ src/liblzma/liblzma_linux.map | 2 +-
+ 4 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/INSTALL b/INSTALL
index 7ef2cb4..ba187bb 100644
--- a/INSTALL
+++ b/INSTALL
@@ -90,21 +90,15 @@ XZ Utils Installation
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.
+ Version 3.3.0 and later are supported.
- 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>.
+ Multithreading isn't supported because MINIX 3 doesn't have
+ pthreads. The option --disable-threads must be passed to configure
+ as this isn't autodetected.
- 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 5.4 in this file about symbol visibility warnings (you
- may want to pass gl_cv_cc_visibility=no to configure).
+ Note that disabling threads causes "make check" to show a few tests
+ as skipped ("SKIP"). It's only due to a few threading-dependent
+ subtests are skipped. See the matching tests/test_*.log files.
1.2.4. OpenVMS
@@ -143,43 +137,37 @@ XZ Utils Installation
1.2.7. Windows
- If it is enough to build liblzma (no command line tools):
+ The "windows" directory contains instructions for a few types
+ of builds:
- - There is CMake support. It should be good enough to build
- static liblzma or liblzma.dll with Visual Studio. The CMake
- support may work with MinGW or MinGW-w64. Read the comment
- in the beginning of CMakeLists.txt before running CMake!
+ - INSTALL-MinGW-w64_with_CMake.txt
+ Simple instructions how to build XZ Utils natively on
+ Windows using only CMake and a prebuilt toolchain
+ (GCC + MinGW-w64 or Clang/LLVM + MinGW-w64).
- - 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.
+ - INSTALL-MinGW-w64_with_Autotools.txt
+ Native build under MSYS2 or cross-compilation from
+ GNU/Linux using a bash script that creates a .zip
+ and .7z archives of the binaries and documentation.
+ The related file README-Windows.txt is for the
+ resulting binary package.
- To build also the command line tools:
+ - INSTALL-MSVC.txt
+ Building with MSVC / Visual Studio and CMake.
- - 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.
+ - liblzma-crt-mixing.txt
+ Documentation what to take into account as a programmer
+ if liblzma.dll and the application don't use the same
+ CRT (MSVCRT or UCRT).
- - MinGW + MSYS (32-bit x86): I haven't recently tested this.
+ Other choices:
- - 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".
+ - Cygwin: https://cygwin.com/
+ Building on Cygwin can be done like on many POSIX operating
+ systems. XZ Utils >= 5.2.0 isn't compatible with Cygwin older
+ than 1.7.35 (data loss!). 1.7.35 was released on 2015-03-04.
- 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.
+ - MSYS2: https://www.msys2.org/
1.2.8. DOS
@@ -358,21 +346,27 @@ XZ Utils Installation
will still be installed. The $docdir can be changed
with --docdir=DIR.
+ --enable-doxygen
+ Enable generation of the HTML version of the liblzma API
+ documentation using Doxygen. The resulting files are
+ installed to $docdir/api. This option assumes that
+ the 'doxygen' tool is available.
+
--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
+ This disables CRC32 and CRC64 assembly code on
+ 32-bit x86. This option currently does nothing
+ on other architectures (not even on x86-64).
+
+ The 32-bit x86 assembly is position-independent code
+ which is suitable for use in shared libraries and
+ position-independent executables. It uses only i386
+ instructions 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.
--disable-clmul-crc
- Disable the use carryless multiplication for CRC
+ Disable the use of carryless multiplication for CRC
calculation even if compiler support for it is detected.
The code uses runtime detection of SSSE3, SSE4.1, and
CLMUL instructions on x86. On 32-bit x86 this currently
@@ -383,6 +377,16 @@ XZ Utils Installation
required extensions (-msse4.1 -mpclmul) then runtime
detection isn't used and the generic code is omitted.
+ --disable-arm64-crc32
+ Disable the use of the ARM64 CRC32 instruction extension
+ even if compiler support for it is detected. The code will
+ detect support for the instruction at runtime.
+
+ If using compiler options that unconditionally allow the
+ required extensions (-march=armv8-a+crc or -march=armv8.1-a
+ and later) then runtime detection isn't used and the
+ generic code is omitted.
+
--enable-unaligned-access
Allow liblzma to use unaligned memory access for 16-bit,
32-bit, and 64-bit loads and stores. This should be
@@ -392,8 +396,43 @@ XZ Utils Installation
slow. This option shouldn't be used on systems that
rely on such emulation.
- Unaligned access is enabled by default on x86, x86-64,
- big endian PowerPC, some ARM, and some ARM64 systems.
+ Unaligned access is enabled by default on these:
+ - 32-bit x86
+ - 64-bit x86-64
+ - 32-bit big endian PowerPC
+ - 64-bit big endian PowerPC
+ - 64-bit little endian PowerPC
+ - some RISC-V [1]
+ - some 32-bit ARM [2]
+ - some 64-bit ARM64 [2] (NOTE: Autodetection bug
+ if using GCC -mstrict-align, see below.)
+
+ [1] Unaligned access is enabled by default if
+ configure sees that the C compiler
+ #defines __riscv_misaligned_fast.
+
+ [2] Unaligned access is enabled by default if
+ configure sees that the C compiler
+ #defines __ARM_FEATURE_UNALIGNED:
+
+ - ARMv7 + GCC or Clang: It works. The options
+ -munaligned-access and -mno-unaligned-access
+ affect this macro correctly.
+
+ - ARM64 + Clang: It works. The options
+ -munaligned-access, -mno-unaligned-access,
+ and -mstrict-align affect this macro correctly.
+ Clang >= 17 supports -mno-strict-align too.
+
+ - ARM64 + GCC: It partially works. The macro
+ is always #defined by GCC versions at least
+ up to 13.2, even when using -mstrict-align.
+ If building for strict-align ARM64, the
+ configure option --disable-unaligned-access
+ should be used if using a GCC version that has
+ this issue because otherwise the performance
+ may be degraded. It likely won't crash due to
+ how unaligned access is done in the C code.
--enable-unsafe-type-punning
This enables use of code like
@@ -460,14 +499,14 @@ XZ Utils Installation
too. This is the default for 32-bit x86
Windows builds. Unless the compiler
supports __attribute__((__constructor__)),
- the `win95' threading is incompatible with
+ 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').
+ x86-64 the default is 'vista').
no Disable threading support. This is the
same as using --disable-threads.
@@ -480,13 +519,16 @@ XZ Utils Installation
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'.
+ There is limited sandboxing support in the xz and xzdec
+ tools. If built with sandbox support, xz uses it
+ automatically when (de)compressing exactly one file to
+ standard output when the options --files or --files0 aren'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'.
+ xzdec always uses the sandbox, except when more than one
+ file are decompressed. In this case it will enable the
+ sandbox for the last file that is decompressed.
Supported METHODs:
@@ -498,7 +540,7 @@ XZ Utils Installation
no Disable sandboxing support.
capsicum
- Use Capsicum (FreeBSD >= 10) for
+ Use Capsicum (FreeBSD >= 10.2) for
sandboxing. If no Capsicum support
is found, configure will give an error.
@@ -506,10 +548,50 @@ XZ Utils Installation
sandboxing. If pledge(2) isn't found,
configure will give an error.
- --enable-symbol-versions
- Use symbol versioning for liblzma. This is enabled by
- default on GNU/Linux, other GNU-based systems, and
- FreeBSD.
+ landlock
+ Use Landlock (Linux >= 5.13) for
+ sandboxing. If no Landlock support
+ is found, configure will give an error.
+
+ --enable-symbol-versions[=VARIANT]
+ Use symbol versioning for liblzma shared library.
+ This is enabled by default on GNU/Linux (glibc only),
+ other GNU-based systems, and FreeBSD.
+
+ Symbol versioning is never used for static liblzma. This
+ option is ignored when not building a shared library.
+
+ Supported VARIANTs:
+
+ no Disable symbol versioning. This is the
+ same as using --disable-symbol-versions.
+
+ auto Autodetect between "no", "linux",
+ and "generic".
+
+ yes Autodetect between "linux" and
+ "generic". This forces symbol
+ versioning to be used when
+ building a shared library.
+
+ generic Generic version is the default for
+ FreeBSD and GNU/Linux on MicroBlaze.
+
+ This is also used on GNU/Linux when
+ building with NVIDIA HPC Compiler
+ because the compiler doesn't support
+ the features required for the "linux"
+ variant below.
+
+ linux Special version for GNU/Linux (glibc
+ only). This adds a few extra symbol
+ versions for compatibility with binaries
+ that have been linked against a liblzma
+ version that has been patched with
+ "xz-5.2.2-compat-libs.patch" from
+ RHEL/CentOS 7. That patch was used
+ by some build tools outside of
+ RHEL/CentOS 7 too.
--enable-debug
This enables the assert() macro and possibly some other
diff --git a/Makefile.am b/Makefile.am
index f562f90..f6e7363 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,9 +1,5 @@
-##
+## SPDX-License-Identifier: 0BSD
## 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
@@ -21,11 +17,11 @@ if COND_DOC
dist_doc_DATA = \
AUTHORS \
COPYING \
+ COPYING.0BSD \
COPYING.GPLv2 \
NEWS \
README \
THANKS \
- TODO \
doc/faq.txt \
doc/history.txt \
doc/xz-file-format.txt \
@@ -38,47 +34,33 @@ dist_examples_DATA = \
doc/examples/02_decompress.c \
doc/examples/03_compress_custom.c \
doc/examples/04_compress_easy_mt.c \
+ doc/examples/11_file_info.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
-
-# Install the Doxygen generated documentation if they were built.
-install-data-local:
- if test -d "$(srcdir)/doc/api" ; then \
- $(MKDIR_P) "$(DESTDIR)$(docdir)/api" && \
- $(INSTALL_DATA) "$(srcdir)"/doc/api/* \
- "$(DESTDIR)$(docdir)/api"; \
- fi
-
-# Remove the Doxygen generated documentation when uninstalling.
-uninstall-local:
- rm -rf "$(DESTDIR)$(docdir)/api"
endif
EXTRA_DIST = \
- po4a \
- extra \
+ cmake \
dos \
doxygen \
+ extra \
+ po4a \
windows \
- macosx \
- cmake \
CMakeLists.txt \
- autogen.sh \
COPYING.GPLv2 \
COPYING.GPLv3 \
COPYING.LGPLv2.1 \
INSTALL.generic \
PACKAGERS \
+ TODO \
+ autogen.sh \
build-aux/manconv.sh \
- build-aux/version.sh
+ build-aux/version.sh \
+ po/xz.pot-header
ACLOCAL_AMFLAGS = -I m4
-# List of man pages to convert to PDF and plain text in the dist-hook target.
+# List of man pages to convert to plain text in the dist-hook target
+# or to PDF in the pdf-local target.
manfiles = \
src/xz/xz.1 \
src/xzdec/xzdec.1 \
@@ -89,42 +71,31 @@ manfiles = \
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.
+# Convert the man pages to plain text (ASCII only) format.
dist-hook:
if test -d "$(srcdir)/.git" && type git > /dev/null 2>&1; then \
( cd "$(srcdir)" && git log --date=iso --stat \
- 6060f7dc76fd6c2a8a1f8e85d0e4d86bb78273e6^..HEAD ) \
+ b69da6d4bb6bb11fc0cf066920791990d2b22a06^..HEAD ) \
> "$(distdir)/ChangeLog"; \
fi
- if type groff > /dev/null 2>&1 && type ps2pdf > /dev/null 2>&1; then \
+ if type groff > /dev/null 2>&1; then \
dest="$(distdir)/doc/man" && \
- $(MKDIR_P) "$$dest/pdf-a4" "$$dest/pdf-letter" "$$dest/txt" && \
+ $(MKDIR_P) "$$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 \
+ $(SHELL) "$(srcdir)/build-aux/manconv.sh" ascii \
< "$(srcdir)/$$FILE" \
> "$$dest/txt/$$BASE.txt"; \
done; \
fi
- if test -d "$(srcdir)/doc/api" ; then \
- $(MKDIR_P) "$(distdir)/doc/api" && \
- $(INSTALL_DATA) "$(srcdir)"/doc/api/* \
- "$(distdir)/doc/api"; \
- fi
# This works with GNU tar and gives cleaner package than normal 'make dist'.
-# This also ensures that the man page translations are up to date (dist-hook
+# This also ensures that the 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
- cd "$(srcdir)/doxygen" && sh update-doxygen
+ $(SHELL) "$(srcdir)/src/liblzma/validate_map.sh"
+ cd po && $(MAKE) xz.pot-update
+ cd "$(srcdir)/po4a" && $(SHELL) 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-`; \
@@ -132,3 +103,17 @@ mydist:
fi; \
TAR_OPTIONS='--owner=0 --group=0 --numeric-owner --mode=u+rw,go+r-w' \
$(MAKE) VERSION="$$VERSION" dist-gzip
+
+# NOTE: This only creates the PDFs. The install rules are missing.
+pdf-local:
+ dest="doc/man" && \
+ $(MKDIR_P) "$$dest/pdf-a4" "$$dest/pdf-letter" && \
+ for FILE in $(manfiles); do \
+ BASE=`basename $$FILE .1` && \
+ $(SHELL) "$(srcdir)/build-aux/manconv.sh" pdf a4 \
+ < "$(srcdir)/$$FILE" \
+ > "$$dest/pdf-a4/$$BASE-a4.pdf" && \
+ $(SHELL) "$(srcdir)/build-aux/manconv.sh" pdf letter \
+ < "$(srcdir)/$$FILE" \
+ > "$$dest/pdf-letter/$$BASE-letter.pdf"; \
+ done
diff --git a/Makefile.in b/Makefile.in
index 2889d08..4b80f1d 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -91,8 +91,8 @@ host_triplet = @host@
@COND_GNULIB_TRUE@am__append_1 = lib
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_capsicum.m4 \
- $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/getopt.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
+ $(top_srcdir)/m4/build-to-host.m4 $(top_srcdir)/m4/getopt.m4 \
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/host-cpu-c-abi.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -112,8 +112,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
$(am__configure_deps) $(am__dist_doc_DATA_DIST) \
- $(am__dist_examples_DATA_DIST) \
- $(am__dist_examplesold_DATA_DIST) $(am__DIST_COMMON)
+ $(am__dist_examples_DATA_DIST) $(am__DIST_COMMON)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d
@@ -147,9 +146,9 @@ am__can_run_installinfo = \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
-am__dist_doc_DATA_DIST = AUTHORS COPYING COPYING.GPLv2 NEWS README \
- THANKS TODO doc/faq.txt doc/history.txt doc/xz-file-format.txt \
- doc/lzma-file-format.txt
+am__dist_doc_DATA_DIST = AUTHORS COPYING COPYING.0BSD COPYING.GPLv2 \
+ NEWS README THANKS doc/faq.txt doc/history.txt \
+ doc/xz-file-format.txt doc/lzma-file-format.txt
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -177,15 +176,13 @@ am__uninstall_files_from_dir = { \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
-am__installdirs = "$(DESTDIR)$(docdir)" "$(DESTDIR)$(examplesdir)" \
- "$(DESTDIR)$(examplesolddir)"
+am__installdirs = "$(DESTDIR)$(docdir)" "$(DESTDIR)$(examplesdir)"
am__dist_examples_DATA_DIST = 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
-am__dist_examplesold_DATA_DIST = doc/examples_old/xz_pipe_comp.c \
- doc/examples_old/xz_pipe_decomp.c
-DATA = $(dist_doc_DATA) $(dist_examples_DATA) $(dist_examplesold_DATA)
+ doc/examples/04_compress_easy_mt.c doc/examples/11_file_info.c \
+ doc/examples/Makefile
+DATA = $(dist_doc_DATA) $(dist_examples_DATA)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
am__recursive_targets = \
@@ -277,7 +274,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CAPSICUM_LIB = @CAPSICUM_LIB@
CC = @CC@
CCAS = @CCAS@
CCASDEPMODE = @CCASDEPMODE@
@@ -406,6 +402,8 @@ install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
+localedir_c = @localedir_c@
+localedir_c_make = @localedir_c_make@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
@@ -432,11 +430,11 @@ SUBDIRS = $(am__append_1) src po tests
@COND_DOC_TRUE@dist_doc_DATA = \
@COND_DOC_TRUE@ AUTHORS \
@COND_DOC_TRUE@ COPYING \
+@COND_DOC_TRUE@ COPYING.0BSD \
@COND_DOC_TRUE@ COPYING.GPLv2 \
@COND_DOC_TRUE@ NEWS \
@COND_DOC_TRUE@ README \
@COND_DOC_TRUE@ THANKS \
-@COND_DOC_TRUE@ TODO \
@COND_DOC_TRUE@ doc/faq.txt \
@COND_DOC_TRUE@ doc/history.txt \
@COND_DOC_TRUE@ doc/xz-file-format.txt \
@@ -449,34 +447,32 @@ SUBDIRS = $(am__append_1) src po tests
@COND_DOC_TRUE@ doc/examples/02_decompress.c \
@COND_DOC_TRUE@ doc/examples/03_compress_custom.c \
@COND_DOC_TRUE@ doc/examples/04_compress_easy_mt.c \
+@COND_DOC_TRUE@ doc/examples/11_file_info.c \
@COND_DOC_TRUE@ doc/examples/Makefile
-@COND_DOC_TRUE@examplesolddir = $(docdir)/examples_old
-@COND_DOC_TRUE@dist_examplesold_DATA = \
-@COND_DOC_TRUE@ doc/examples_old/xz_pipe_comp.c \
-@COND_DOC_TRUE@ doc/examples_old/xz_pipe_decomp.c
-
EXTRA_DIST = \
- po4a \
- extra \
+ cmake \
dos \
doxygen \
+ extra \
+ po4a \
windows \
- macosx \
- cmake \
CMakeLists.txt \
- autogen.sh \
COPYING.GPLv2 \
COPYING.GPLv3 \
COPYING.LGPLv2.1 \
INSTALL.generic \
PACKAGERS \
+ TODO \
+ autogen.sh \
build-aux/manconv.sh \
- build-aux/version.sh
+ build-aux/version.sh \
+ po/xz.pot-header
ACLOCAL_AMFLAGS = -I m4
-# List of man pages to convert to PDF and plain text in the dist-hook target.
+# List of man pages to convert to plain text in the dist-hook target
+# or to PDF in the pdf-local target.
manfiles = \
src/xz/xz.1 \
src/xzdec/xzdec.1 \
@@ -589,27 +585,6 @@ uninstall-dist_examplesDATA:
@list='$(dist_examples_DATA)'; test -n "$(examplesdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(examplesdir)'; $(am__uninstall_files_from_dir)
-install-dist_examplesoldDATA: $(dist_examplesold_DATA)
- @$(NORMAL_INSTALL)
- @list='$(dist_examplesold_DATA)'; test -n "$(examplesolddir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(examplesolddir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(examplesolddir)" || exit 1; \
- fi; \
- for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; \
- done | $(am__base_list) | \
- while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(examplesolddir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(examplesolddir)" || exit $$?; \
- done
-
-uninstall-dist_examplesoldDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(dist_examplesold_DATA)'; test -n "$(examplesolddir)" || list=; \
- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- dir='$(DESTDIR)$(examplesolddir)'; $(am__uninstall_files_from_dir)
# This directory's subdirectories are mostly independent; you can cd
# into them and run 'make' without going through this Makefile.
@@ -926,7 +901,7 @@ check: check-recursive
all-am: Makefile $(DATA) config.h
installdirs: installdirs-recursive
installdirs-am:
- for dir in "$(DESTDIR)$(docdir)" "$(DESTDIR)$(examplesdir)" "$(DESTDIR)$(examplesolddir)"; do \
+ for dir in "$(DESTDIR)$(docdir)" "$(DESTDIR)$(examplesdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-recursive
@@ -959,8 +934,6 @@ distclean-generic:
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
-@COND_DOC_FALSE@install-data-local:
-@COND_DOC_FALSE@uninstall-local:
clean: clean-recursive
clean-am: clean-generic clean-libtool mostlyclean-am
@@ -983,8 +956,7 @@ info: info-recursive
info-am:
-install-data-am: install-data-local install-dist_docDATA \
- install-dist_examplesDATA install-dist_examplesoldDATA
+install-data-am: install-dist_docDATA install-dist_examplesDATA
install-dvi: install-dvi-recursive
@@ -1024,14 +996,13 @@ mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-recursive
-pdf-am:
+pdf-am: pdf-local
ps: ps-recursive
ps-am:
-uninstall-am: uninstall-dist_docDATA uninstall-dist_examplesDATA \
- uninstall-dist_examplesoldDATA uninstall-local
+uninstall-am: uninstall-dist_docDATA uninstall-dist_examplesDATA
.MAKE: $(am__recursive_targets) all install-am install-strip
@@ -1043,71 +1014,46 @@ uninstall-am: uninstall-dist_docDATA uninstall-dist_examplesDATA \
distclean-generic distclean-hdr distclean-libtool \
distclean-tags distcleancheck distdir distuninstallcheck dvi \
dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-data-local \
- install-dist_docDATA install-dist_examplesDATA \
- install-dist_examplesoldDATA install-dvi install-dvi-am \
+ install-data install-data-am install-dist_docDATA \
+ install-dist_examplesDATA install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs installdirs-am \
maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags tags-am uninstall uninstall-am uninstall-dist_docDATA \
- uninstall-dist_examplesDATA uninstall-dist_examplesoldDATA \
- uninstall-local
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am pdf-local \
+ ps ps-am tags tags-am uninstall uninstall-am \
+ uninstall-dist_docDATA uninstall-dist_examplesDATA
.PRECIOUS: Makefile
-# Install the Doxygen generated documentation if they were built.
-@COND_DOC_TRUE@install-data-local:
-@COND_DOC_TRUE@ if test -d "$(srcdir)/doc/api" ; then \
-@COND_DOC_TRUE@ $(MKDIR_P) "$(DESTDIR)$(docdir)/api" && \
-@COND_DOC_TRUE@ $(INSTALL_DATA) "$(srcdir)"/doc/api/* \
-@COND_DOC_TRUE@ "$(DESTDIR)$(docdir)/api"; \
-@COND_DOC_TRUE@ fi
-
-# Remove the Doxygen generated documentation when uninstalling.
-@COND_DOC_TRUE@uninstall-local:
-@COND_DOC_TRUE@ rm -rf "$(DESTDIR)$(docdir)/api"
-
# Create ChangeLog from output of "git log --date=iso --stat".
-# Convert the man pages to PDF and plain text (ASCII only) formats.
+# Convert the man pages to plain text (ASCII only) format.
dist-hook:
if test -d "$(srcdir)/.git" && type git > /dev/null 2>&1; then \
( cd "$(srcdir)" && git log --date=iso --stat \
- 6060f7dc76fd6c2a8a1f8e85d0e4d86bb78273e6^..HEAD ) \
+ b69da6d4bb6bb11fc0cf066920791990d2b22a06^..HEAD ) \
> "$(distdir)/ChangeLog"; \
fi
- if type groff > /dev/null 2>&1 && type ps2pdf > /dev/null 2>&1; then \
+ if type groff > /dev/null 2>&1; then \
dest="$(distdir)/doc/man" && \
- $(MKDIR_P) "$$dest/pdf-a4" "$$dest/pdf-letter" "$$dest/txt" && \
+ $(MKDIR_P) "$$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 \
+ $(SHELL) "$(srcdir)/build-aux/manconv.sh" ascii \
< "$(srcdir)/$$FILE" \
> "$$dest/txt/$$BASE.txt"; \
done; \
fi
- if test -d "$(srcdir)/doc/api" ; then \
- $(MKDIR_P) "$(distdir)/doc/api" && \
- $(INSTALL_DATA) "$(srcdir)"/doc/api/* \
- "$(distdir)/doc/api"; \
- fi
# This works with GNU tar and gives cleaner package than normal 'make dist'.
-# This also ensures that the man page translations are up to date (dist-hook
+# This also ensures that the 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
- cd "$(srcdir)/doxygen" && sh update-doxygen
+ $(SHELL) "$(srcdir)/src/liblzma/validate_map.sh"
+ cd po && $(MAKE) xz.pot-update
+ cd "$(srcdir)/po4a" && $(SHELL) 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-`; \
@@ -1116,6 +1062,20 @@ mydist:
TAR_OPTIONS='--owner=0 --group=0 --numeric-owner --mode=u+rw,go+r-w' \
$(MAKE) VERSION="$$VERSION" dist-gzip
+# NOTE: This only creates the PDFs. The install rules are missing.
+pdf-local:
+ dest="doc/man" && \
+ $(MKDIR_P) "$$dest/pdf-a4" "$$dest/pdf-letter" && \
+ for FILE in $(manfiles); do \
+ BASE=`basename $$FILE .1` && \
+ $(SHELL) "$(srcdir)/build-aux/manconv.sh" pdf a4 \
+ < "$(srcdir)/$$FILE" \
+ > "$$dest/pdf-a4/$$BASE-a4.pdf" && \
+ $(SHELL) "$(srcdir)/build-aux/manconv.sh" pdf letter \
+ < "$(srcdir)/$$FILE" \
+ > "$$dest/pdf-letter/$$BASE-letter.pdf"; \
+ done
+
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/NEWS b/NEWS
index d26b636..77eab74 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,566 @@
XZ Utils Release Notes
======================
+5.6.2 (2024-05-29)
+
+ * Remove the backdoor (CVE-2024-3094).
+
+ * Not changed: Memory sanitizer (MSAN) has a false positive
+ in the CRC CLMUL code which also makes OSS Fuzz unhappy.
+ Valgrind is smarter and doesn't complain.
+
+ A revision to the CLMUL code is coming anyway and this issue
+ will be cleaned up as part of it. It won't be backported to
+ 5.6.x or 5.4.x because the old code isn't wrong. There is
+ no reason to risk introducing regressions in old branches
+ just to silence a false positive.
+
+ * liblzma:
+
+ - lzma_index_decoder() and lzma_index_buffer_decode(): Fix
+ a missing output pointer initialization (*i = NULL) if the
+ functions are called with invalid arguments. The API docs
+ say that such an initialization is always done. In practice
+ this matters very little because the problem can only occur
+ if the calling application has a bug and these functions
+ return LZMA_PROG_ERROR.
+
+ - lzma_str_to_filters(): Fix a missing output pointer
+ initialization (*error_pos = 0). This is very similar
+ to the fix above.
+
+ - Fix C standard conformance with function pointer types.
+
+ - Remove GNU indirect function (IFUNC) support. This is *NOT*
+ done for security reasons even though the backdoor relied on
+ this code. The performance benefits of IFUNC are too tiny in
+ this project to make the extra complexity worth it.
+
+ - FreeBSD on ARM64: Add error checking to CRC32 instruction
+ support detection.
+
+ - Fix building with NVIDIA HPC SDK.
+
+ * xz:
+
+ - Fix a C standard conformance issue in --block-list parsing
+ (arithmetic on a null pointer).
+
+ - Fix a warning from GNU groff when processing the man page:
+ "warning: cannot select font 'CW'"
+
+ * xzdec: Add support for Linux Landlock ABI version 4. xz already
+ had the v3-to-v4 change but it had been forgotten from xzdec.
+
+ * Autotools-based build system (configure):
+
+ - Symbol versioning variant can now be overridden with
+ --enable-symbol-versions. Documentation in INSTALL was
+ updated to match.
+
+ - Add new configure option --enable-doxygen to enable
+ generation and installation of the liblzma API documentation
+ using Doxygen. Documentation in INSTALL and PACKAGERS was
+ updated to match.
+
+ CMake:
+
+ - Fix detection of Linux Landlock support. The detection code
+ in CMakeLists.txt had been sabotaged.
+
+ - Disable symbol versioning on non-glibc Linux to match what
+ the Autotools build does. For example, symbol versioning
+ isn't enabled with musl.
+
+ - Symbol versioning variant can now be overridden by setting
+ SYMBOL_VERSIONING to "OFF", "generic", or "linux".
+
+ - Add support for all tests in typical build configurations.
+ Now the only difference to the tests coverage to Autotools
+ is that CMake-based build will skip more tests if features
+ are disabled. Such builds are only for special cases like
+ embedded systems.
+
+ - Separate the CMake code for the tests into tests/tests.cmake.
+ It is used conditionally, thus it is possible to
+
+ rm -rf tests
+
+ and the CMake-based build will still work normally except
+ that no tests are then available.
+
+ - Add a option ENABLE_DOXYGEN to enable generation and
+ installation of the liblzma API documentation using Doxygen.
+
+ * Documentation:
+
+ - Omit the Doxygen-generated liblzma API documentation from the
+ package. Instead, the generation and installation of the API
+ docs can be enabled with a configure or CMake option if
+ Doxygen is available.
+
+ - Remove the XZ logo which was used in the API documentation.
+ The logo has been retired and isn't used by the project
+ anymore. However, it's OK to use it in contexts that refer
+ to the backdoor incident.
+
+ - Remove the PDF versions of the man pages from the source
+ package. These existed primarily for users of operating
+ systems which don't come with tools to render man page
+ source files. The plain text versions are still included
+ in doc/man/txt. PDF files can still be generated to doc/man,
+ if the required tools are available, using "make pdf" after
+ running "configure".
+
+ - Update home page URLs back to their old locations on
+ tukaani.org.
+
+ - Update maintainer info.
+
+ * Tests:
+
+ - In tests/files/README, explain how to recreate the ARM64
+ test files.
+
+ - Remove two tests that used tiny x86 and SPARC object files
+ as the input files. The matching .c file was included but
+ the object files aren't easy to reproduce. The test cases
+ weren't great anyway; they were from the early days (2009)
+ of the project when the test suite had very few tests.
+
+ - Improve a few tests.
+
+
+5.6.1 (2024-03-09)
+
+ IMPORTANT: This fixed bugs in the backdoor (CVE-2024-3094) (someone
+ had forgot to run Valgrind).
+
+ * liblzma: Fixed two bugs relating to GNU indirect function (IFUNC)
+ with GCC. The more serious bug caused a program linked with
+ liblzma to crash on start up if the flag -fprofile-generate was
+ used to build liblzma. The second bug caused liblzma to falsely
+ report an invalid write to Valgrind when loading liblzma.
+
+ * xz: Changed the messages for thread reduction due to memory
+ constraints to only appear under the highest verbosity level.
+
+ * Build:
+
+ - Fixed a build issue when the header file <linux/landlock.h>
+ was present on the system but the Landlock system calls were
+ not defined in <sys/syscall.h>.
+
+ - The CMake build now warns and disables NLS if both gettext
+ tools and pre-created .gmo files are missing. Previously,
+ this caused the CMake build to fail.
+
+ * Minor improvements to man pages.
+
+ * Minor improvements to tests.
+
+
+5.6.0 (2024-02-24)
+
+ IMPORTANT: This added a backdoor (CVE-2024-3094). It's enabled only
+ in the release tarballs.
+
+ This bumps the minor version of liblzma because new features were
+ added. The API and ABI are still backward compatible with liblzma
+ 5.4.x and 5.2.x and 5.0.x.
+
+ NOTE: As described in the NEWS for 5.5.2beta, the core components
+ are now under the BSD Zero Clause License (0BSD).
+
+ Since 5.5.2beta:
+
+ * liblzma:
+
+ - Disabled the branchless C variant in the LZMA decoder based
+ on the benchmark results from the community.
+
+ - Disabled x86-64 inline assembly on x32 to fix the build.
+
+ * Sandboxing support in xz:
+
+ - Landlock is now used even when xz needs to create files.
+ In this case the sandbox has to be more permissive than
+ when no files need to be created. A similar thing was
+ already in use with pledge(2) since 5.3.4alpha.
+
+ - Landlock and pledge(2) are now stricter when reading from
+ more than one input file and only writing to standard output.
+
+ - Added support for Landlock ABI version 4.
+
+ * CMake:
+
+ - Default to -O2 instead of -O3 with CMAKE_BUILD_TYPE=Release.
+ -O3 is not useful for speed and makes the code larger.
+
+ - Now builds lzmainfo and lzmadec.
+
+ - xzdiff, xzgrep, xzless, xzmore, and their symlinks are now
+ installed. The scripts are also tested during "make test".
+
+ - Added translation support for xz, lzmainfo, and the
+ man pages.
+
+ - Applied the symbol versioning workaround for MicroBlaze that
+ is used in the Autotools build.
+
+ - The general XZ Utils and liblzma API documentation is now
+ installed.
+
+ - The CMake component names were changed a little and several
+ were added. liblzma_Runtime and liblzma_Development are
+ unchanged.
+
+ - Minimum required CMake version is now 3.14. However,
+ translation support is disabled with CMake versions
+ older than 3.20.
+
+ - The CMake-based build is now close to feature parity with the
+ Autotools-based build. Most importantly a few tests aren't
+ run yet. Testing the CMake-based build on different operating
+ systems would be welcome now. See the comment at the top of
+ CMakeLists.txt.
+
+ * Fixed a bug in the Autotools feature test for ARM64 CRC32
+ instruction support for old versions of Clang. This did not
+ affect the CMake build.
+
+ * Windows:
+
+ - The build instructions in INSTALL and windows/INSTALL*.txt
+ were revised completely.
+
+ - windows/build-with-cmake.bat along with the instructions
+ in windows/INSTALL-MinGW-w64_with_CMake.txt should make
+ it very easy to build liblzma.dll and xz.exe on Windows
+ using CMake and MinGW-w64 with either GCC or Clang/LLVM.
+
+ - windows/build.bash was updated. It now works on MSYS2 and
+ on GNU/Linux (cross-compiling) to create a .zip and .7z
+ package for 32-bit and 64-bit x86 using GCC + MinGW-w64.
+
+ * The TODO file is no longer installed as part of the
+ documentation. The file is out of date and does not reflect
+ the actual tasks that will be completed in the future.
+
+ * Translations:
+
+ - Translated lzmainfo man pages are now installed. These
+ had been forgotten in earlier versions.
+
+ - Updated Croatian, Esperanto, German, Hungarian, Korean,
+ Polish, Romanian, Spanish, Swedish, Vietnamese, and Ukrainian
+ translations.
+
+ - Updated German, Korean, Romanian, and Ukrainian man page
+ translations.
+
+ * Added a few tests.
+
+ Summary of new features added in the 5.5.x development releases:
+
+ * liblzma:
+
+ - LZMA decoder: Speed optimizations to the C code and
+ added GCC & Clang compatible inline assembly for x86-64.
+
+ - Added lzma_mt_block_size() to recommend a Block size for
+ multithreaded encoding.
+
+ - Added CLMUL-based CRC32 on x86-64 and E2K with runtime
+ processor detection. Similar to CRC64, on 32-bit x86 it
+ isn't available unless --disable-assembler is used.
+
+ - Optimized the CRC32 calculation on ARM64 platforms using the
+ CRC32 instructions. Runtime detection for the instruction is
+ used on GNU/Linux, FreeBSD, Windows, and macOS. If the
+ compiler flags indicate unconditional CRC32 instruction
+ support (+crc) then the generic version is not built.
+
+ - Added definitions of mask values like
+ LZMA_INDEX_CHECK_MASK_CRC32 to <lzma/index.h>.
+
+ * xz:
+
+ - Multithreaded mode is now the default. This improves
+ compression speed and creates .xz files that can be
+ decompressed in multithreaded mode. The downsides are
+ increased memory usage and slightly worse compression ratio.
+
+ - Added a new command line option --filters to set the filter
+ chain using the liblzma filter string syntax.
+
+ - Added new command line options --filters1 ... --filters9 to
+ set additional filter chains using the liblzma filter string
+ syntax. The --block-list option now allows specifying filter
+ chains that were set using these new options.
+
+ - Ported the command line tools to Windows MSVC.
+ Visual Studio 2015 or later is required.
+
+ * Added lz4 support to xzdiff/xzcmp and xzgrep.
+
+
+5.5.2beta (2024-02-14)
+
+ * Licensing change: The core components are now under the
+ BSD Zero Clause License (0BSD). In XZ Utils 5.4.6 and older
+ and 5.5.1alpha these components are in the public domain and
+ obviously remain so; the change affects the new releases only.
+
+ 0BSD is an extremely permissive license which doesn't require
+ retaining or reproducing copyright or license notices when
+ distributing the code, thus in practice there is extremely
+ little difference to public domain.
+
+ * liblzma
+
+ - Significant speed optimizations to the LZMA decoder were
+ made. There are now three variants that can be chosen at
+ build time:
+
+ * Basic C version: This is a few percent faster than
+ 5.4.x due to some new optimizations.
+
+ * Branchless C: This is currently the default on platforms
+ for which there is no assembly code. This should be a few
+ percent faster than the basic C version.
+
+ * x86-64 inline assembly. This works with GCC and Clang.
+
+ The default choice can currently be overridden by setting
+ LZMA_RANGE_DECODER_CONFIG in CPPFLAGS: 0 means the basic
+ version and 3 means that branchless C version.
+
+ - Optimized the CRC32 calculation on ARM64 platforms using the
+ CRC32 instructions. The instructions are optional in ARMv8.0
+ and are required in ARMv8.1 and later. Runtime detection for
+ the instruction is used on GNU/Linux, FreeBSD, Windows, and
+ macOS. If the compiler flags indicate unconditional CRC32
+ instruction support (+crc) then the generic version is not
+ built.
+
+ * Added lz4 support to xzdiff/xzcmp and xzgrep.
+
+ * Man pages of xzdiff/xzcmp, xzgrep, and xzmore were rewritten
+ to simplify licensing of the man page translations.
+
+ * Translations:
+
+ - Updated Chinese (simplified), German, Korean, Polish,
+ Romanian, Spanish, Swedish, and Ukrainian translations.
+
+ - Updated German, Korean, Romanian, and Ukrainian man page
+ translations.
+
+ * Small improvements to the tests.
+
+ * Added doc/examples/11_file_info.c. It was added to the Git
+ repository in 2017 but forgotten to be added into distribution
+ tarballs.
+
+ * Removed doc/examples_old. These were from 2012.
+
+ * Removed the macos/build.sh script. It had not been updated
+ since 2013.
+
+
+5.5.1alpha (2024-01-26)
+
+ * Added a new filter for RISC-V binaries. The filter can be used
+ for 32-bit and 64-bit binaries with either little or big
+ endianness. In liblzma, the Filter ID is LZMA_FILTER_RISCV (0x0B)
+ and the xz option is --riscv. liblzma filter string syntax
+ recognizes this filter as "riscv".
+
+ * liblzma:
+
+ - Added lzma_mt_block_size() to recommend a Block size for
+ multithreaded encoding
+
+ - Added CLMUL-based CRC32 on x86-64 and E2K with runtime
+ processor detection. Similar to CRC64, on 32-bit x86 it
+ isn't available unless --disable-assembler is used.
+
+ - Implemented GNU indirect function (IFUNC) as a runtime
+ function dispatching method for CRC32 and CRC64 fast
+ implementations on x86. Only GNU/Linux (glibc) and FreeBSD
+ builds will use IFUNC, unless --enable-ifunc is specified to
+ configure.
+
+ - Added definitions of mask values like
+ LZMA_INDEX_CHECK_MASK_CRC32 to <lzma/index.h>.
+
+ - The XZ logo is now included in the Doxygen generated
+ documentation. It is licensed under Creative Commons
+ Attribution-ShareAlike 4.0.
+
+ * xz:
+
+ - Multithreaded mode is now the default. This improves
+ compression speed and creates .xz files that can be
+ decompressed multithreaded at the cost of increased memory
+ usage and slightly worse compression ratio.
+
+ - Added new command line option --filters to set the filter
+ chain using liblzma filter string syntax.
+
+ - Added new command line options --filters1 ... --filters9 to
+ set additional filter chains using liblzma filter string
+ syntax. The --block-list option now allows specifying filter
+ chains that were set using these new options.
+
+ - Added support for Linux Landlock as a sandboxing method.
+
+ - xzdec now supports pledge(2), Capsicum, and Linux Landlock as
+ sandboxing methods.
+
+ - Progress indicator time stats remain accurate after pausing
+ xz with SIGTSTP.
+
+ - Ported xz and xzdec to Windows MSVC. Visual Studio 2015 or
+ later is required.
+
+ * CMake Build:
+
+ - Supports pledge(2), Capsicum, and Linux Landlock sandboxing
+ methods.
+
+ - Replacement functions for getopt_long() are used on platforms
+ that do not have it.
+
+ * Enabled unaligned access by default on PowerPC64LE and on RISC-V
+ targets that define __riscv_misaligned_fast.
+
+ * Tests:
+
+ - Added two new fuzz targets to OSS-Fuzz.
+
+ - Implemented Continuous Integration (CI) testing using
+ GitHub Actions.
+
+ * Changed quoting style from `...' to '...' in all messages,
+ scripts, and documentation.
+
+ * Added basic Codespell support to help catch typo errors.
+
+
+5.4.7 (2024-05-29)
+
+ * Not changed: Memory sanitizer (MSAN) has a false positive
+ in the CRC CLMUL code which also makes OSS Fuzz unhappy.
+ Valgrind is smarter and doesn't complain.
+
+ A revision to the CLMUL code is coming anyway and this issue
+ will be cleaned up as part of it. It won't be backported to
+ 5.6.x or 5.4.x because the old code isn't wrong. There is
+ no reason to risk introducing regressions in old branches
+ just to silence a false positive.
+
+ * liblzma:
+
+ - lzma_index_decoder() and lzma_index_buffer_decode(): Fix
+ a missing output pointer initialization (*i = NULL) if the
+ functions are called with invalid arguments. The API docs
+ say that such an initialization is always done. In practice
+ this matters very little because the problem can only occur
+ if the calling application has a bug and these functions
+ return LZMA_PROG_ERROR.
+
+ - lzma_str_to_filters(): Fix a missing output pointer
+ initialization (*error_pos = 0). This is very similar
+ to the fix above.
+
+ - Fix C standard conformance with function pointer types.
+ This newly showed up with Clang 17 with -fsanitize=undefined.
+ There are no bug reports about this.
+
+ - Fix building with NVIDIA HPC SDK.
+
+ * xz:
+
+ - Fix a C standard conformance issue in --block-list parsing
+ (arithmetic on a null pointer).
+
+ - Fix a warning from GNU groff when processing the man page:
+ "warning: cannot select font 'CW'"
+
+ - Fix outdated threading related information on the man page.
+
+ * xzless:
+
+ - With "less" version 451 and later, use "||-" instead of "|-"
+ in the environment variable LESSOPEN. This way compressed
+ files that contain no uncompressed data are shown correctly
+ as empty.
+
+ - With "less" version 632 and later, use --show-preproc-errors
+ to make "less" show a warning on decompression errors.
+
+ * Autotools-based build system (configure):
+
+ - Symbol versioning variant can now be overridden with
+ --enable-symbol-versions. Documentation in INSTALL was
+ updated to match.
+
+ CMake:
+
+ - Linux on MicroBlaze is handled specially now. This matches
+ the changes made to the Autotools-based build in XZ Utils
+ 5.4.2 and 5.2.11.
+
+ - Disable symbol versioning on non-glibc Linux to match what
+ the Autotools build does. For example, symbol versioning
+ isn't enabled with musl.
+
+ - Symbol versioning variant can now be overridden by setting
+ SYMBOL_VERSIONING to "OFF", "generic", or "linux".
+
+ * Documentation:
+
+ - Clarify the description of --disable-assembler in INSTALL.
+ The option only affects 32-bit x86 assembly usage.
+
+ - Add doc/examples/11_file_info.c. It was added to the
+ Git repository in 2017 but forgotten to be added into
+ distribution tarballs.
+
+ - Don't install the TODO file as part of the documentation.
+ The file is out of date.
+
+ - Update home page URLs back to their old locations on
+ tukaani.org.
+
+ - Update maintainer info.
+
+
+5.4.6 (2024-01-26)
+
+ * Fixed a bug involving internal function pointers in liblzma not
+ being initialized to NULL. The bug can only be triggered if
+ lzma_filters_update() is called on a LZMA1 encoder, so it does
+ not affect xz or any application known to us that uses liblzma.
+
+ * xz:
+
+ - Fixed a regression introduced in 5.4.2 that caused encoding
+ in the raw format to unnecessarily fail if --suffix was not
+ used. For instance, the following command no longer reports
+ that --suffix must be used:
+
+ echo foo | xz --format=raw --lzma2 | wc -c
+
+ - Fixed an issue on MinGW-w64 builds that prevented reading
+ from or writing to non-terminal character devices like NUL.
+
+ * Added a new test.
+
+
5.4.5 (2023-11-01)
* liblzma:
@@ -804,6 +1364,162 @@ XZ Utils Release Notes
(FreeBSD >= 10).
+5.2.13 (2024-05-29)
+
+ * liblzma:
+
+ - lzma_index_append(): Fix an assertion failure that could be
+ triggered by a large unpadded_size argument. It was verified
+ that there was no other bug than the assertion failure.
+
+ - lzma_index_decoder() and lzma_index_buffer_decode(): Fix
+ a missing output pointer initialization (*i = NULL) if the
+ functions are called with invalid arguments. The API docs
+ say that such an initialization is always done. In practice
+ this matters very little because the problem can only occur
+ if the calling application has a bug and these functions
+ return LZMA_PROG_ERROR.
+
+ - Fix C standard conformance with function pointer types.
+ This newly showed up with Clang 17 with -fsanitize=undefined.
+ There are no bug reports about this.
+
+ - Fix building with NVIDIA HPC SDK.
+
+ - Fix building with Windows Vista threads and --enable-small.
+ (CMake build doesn't support ENABLE_SMALL in XZ Utils 5.2.x.)
+
+ * xz:
+
+ - Fix a C standard conformance issue in --block-list parsing
+ (arithmetic on a null pointer).
+
+ - Fix a warning from GNU groff when processing the man page:
+ "warning: cannot select font 'CW'"
+
+ - Windows: Handle special files such as "con" or "nul". Earlier
+ the following wrote "foo" to the console and deleted the input
+ file "con_xz":
+
+ echo foo | xz > con_xz
+ xz --suffix=_xz --decompress con_xz
+
+ - Windows: Fix an issue that prevented reading from or writing
+ to non-terminal character devices like NUL.
+
+ * xzless:
+
+ - With "less" version 451 and later, use "||-" instead of "|-"
+ in the environment variable LESSOPEN. This way compressed
+ files that contain no uncompressed data are shown correctly
+ as empty.
+
+ - With "less" version 632 and later, use --show-preproc-errors
+ to make "less" show a warning on decompression errors.
+
+ * Build systems:
+
+ - Add a new line to liblzma.pc for MSYS2 (Windows):
+
+ Cflags.private: -DLZMA_API_STATIC
+
+ When compiling code that will link against static liblzma,
+ the LZMA_API_STATIC macro needs to be defined on Windows.
+
+ - Autotools (configure):
+
+ * Symbol versioning variant can now be overridden with
+ --enable-symbol-versions. Documentation in INSTALL was
+ updated to match.
+
+ - CMake:
+
+ * Fix a bug that prevented other projects from including
+ liblzma multiple times using find_package().
+
+ * Fix a bug where configuring CMake multiple times resulted
+ in HAVE_CLOCK_GETTIME and HAVE_CLOCK_MONOTONIC not being
+ defined.
+
+ * Fix the build with MinGW-w64-based Clang/LLVM 17.
+ llvm-windres now has more accurate GNU windres emulation
+ so the GNU windres workaround from 5.4.1 is needed with
+ llvm-windres version 17 too.
+
+ * The import library on Windows is now properly named
+ "liblzma.dll.a" instead of "libliblzma.dll.a"
+
+ * Add large file support by default for platforms that
+ need it to handle files larger than 2 GiB. This includes
+ MinGW-w64, even 64-bit builds.
+
+ * Linux on MicroBlaze is handled specially now. This
+ matches the changes made to the Autotools-based build
+ in XZ Utils 5.4.2 and 5.2.11.
+
+ * Disable symbol versioning on non-glibc Linux to match
+ what the Autotools build does. For example, symbol
+ versioning isn't enabled with musl.
+
+ * Symbol versioning variant can now be overridden by
+ setting SYMBOL_VERSIONING to "OFF", "generic", or
+ "linux".
+
+ * Documentation:
+
+ - Clarify the description of --disable-assembler in INSTALL.
+ The option only affects 32-bit x86 assembly usage.
+
+ - Don't install the TODO file as part of the documentation.
+ The file is out of date.
+
+ - Update home page URLs back to their old locations on
+ tukaani.org.
+
+ - Update maintainer info.
+
+
+5.2.12 (2023-05-04)
+
+ * Fixed a build system bug that prevented building liblzma as a
+ shared library when configured with --disable-threads. This bug
+ affected releases 5.2.6 to 5.2.11 and 5.4.0 to 5.4.2.
+
+ * Include <intrin.h> for Windows intrinsic functions where they are
+ needed. This fixed a bug that prevented building liblzma using
+ clang-cl on Windows.
+
+ * Minor update to the Croatian translation. The small change
+ applies to a string in both 5.2 and 5.4 branches.
+
+
+5.2.11 (2023-03-18)
+
+ * Removed all possible cases of null pointer + 0. It is undefined
+ behavior in C99 and C17. This was detected by a sanitizer and had
+ not caused any known issues.
+
+ * Build systems:
+
+ - Added a workaround for building with GCC on MicroBlaze Linux.
+ GCC 12 on MicroBlaze doesn't support the __symver__ attribute
+ even though __has_attribute(__symver__) returns true. The
+ build is now done without the extra RHEL/CentOS 7 symbols
+ that were added in XZ Utils 5.2.7. The workaround only
+ applies to the Autotools build (not CMake).
+
+ - CMake: Ensure that the C compiler language is set to C99 or
+ a newer standard.
+
+ - CMake changes from XZ Utils 5.4.1:
+
+ * Added a workaround for a build failure with
+ windres from GNU binutils.
+
+ * Included the Windows resource files in the xz
+ and xzdec build rules.
+
+
5.2.10 (2022-12-13)
* xz: Don't modify argv[] when parsing the --memlimit* and
diff --git a/PACKAGERS b/PACKAGERS
index 3042c66..b12c485 100644
--- a/PACKAGERS
+++ b/PACKAGERS
@@ -44,8 +44,8 @@ Information to packagers of XZ Utils
lzmadec binary for compatibility with LZMA Utils
liblzma liblzma.so.*
liblzma-devel liblzma.so, liblzma.a, API headers
- liblzma-doc Doxygen-generated liblzma API docs (HTML),
- example programs
+ liblzma-doc Example programs and, if enabled at build time,
+ Doxygen-generated liblzma API docs (HTML)
2. Package description
@@ -124,14 +124,15 @@ Information to packagers of XZ Utils
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+".
+ XZ Utils are under the BSD Zero Clause License (0BSD), 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
+ "BSD0 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).
+ 0BSD-licensed code from XZ Utils (compiler or linker may add some
+ third-party code which may have other licenses).
4. configure options
@@ -169,13 +170,14 @@ Information to packagers of XZ Utils
can be replaced with a symlink if your distro ships with shared
copies of the common license texts.
- The Doxygen-generated documentation (HTML) for the liblzma API
- headers is included in the source release and will be installed by
- "make install" to $docdir/api. All JavaScript is removed to
- simplify license compliance and to reduce the install size. If the
- liblzma API documentation is not desired, either run configure with
- --disable-doc or remove the doc/api directory before running
- "make install".
+ The Doxygen-generated liblzma API documentation (HTML) is built and
+ installed if the configure option --enable-doxygen is used (it's
+ disabled by default). This requires that Doxygen is available. The
+ API documentation is installed by "make install" to $docdir/api.
+
+ NOTE: The files generated by Doxygen include content from
+ Doxygen itself. Check the license info before distributing
+ the Doxygen-generated files.
6. Extra files
diff --git a/README b/README
index 9e76301..9d097de 100644
--- a/README
+++ b/README
@@ -67,24 +67,25 @@ XZ Utils
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
+ 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.0BSD BSD Zero Clause License
+ 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.
@@ -94,9 +95,9 @@ XZ Utils
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.
+ are also provided in plain text (ASCII only) format 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
@@ -297,11 +298,13 @@ XZ Utils
6. Contact information
----------------------
- If you have questions, bug reports, patches etc. related to XZ Utils,
- the project maintainers Lasse Collin and Jia Tan can be reached via
- <xz@tukaani.org>.
+ XZ Utils in general:
+ - Home page: https://tukaani.org/xz/
+ - Email to maintainer(s): xz@tukaani.org
+ - IRC: #tukaani on Libera Chat
+ - GitHub: https://github.com/tukaani-project/xz
- You might find Lasse also from #tukaani on Libera Chat (IRC).
- The nick is Larhzu. The channel tends to be pretty quiet,
- so just ask your question and someone might wake up.
+ Lead maintainer:
+ - Email: Lasse Collin <lasse.collin@tukaani.org>
+ - IRC: Larhzu on Libera Chat
diff --git a/THANKS b/THANKS
index 0206af9..7d2d4fe 100644
--- a/THANKS
+++ b/THANKS
@@ -5,6 +5,7 @@ Thanks
Some people have helped more, some less, but nevertheless everyone's help
has been important. :-) In alphabetical order:
- Mark Adler
+ - Kian-Meng Ang
- H. Peter Anvin
- Jeff Bastian
- Nelson H. F. Beebe
@@ -45,15 +46,18 @@ has been important. :-) In alphabetical order:
- Vincent Fazio
- Michael Felt
- Michael Fox
+ - Andres Freund
- Mike Frysinger
- Daniel Richard G.
- Tomasz Gajc
- Bjarni Ingi Gislason
- John Paul Adrian Glaubitz
- Bill Glessner
+ - Matthew Good
- Michał Górny
- Jason Gorski
- Juan Manuel Guerrero
+ - Gabriela Gutierrez
- Diederik de Haas
- Joachim Henke
- Christian Hesse
@@ -62,6 +66,7 @@ has been important. :-) In alphabetical order:
- Nicholas Jackson
- Sam James
- Hajin Jang
+ - Hans Jansen
- Jouk Jansen
- Jun I Jin
- Kiyoshi Kanazawa
@@ -72,6 +77,7 @@ has been important. :-) In alphabetical order:
- Richard Koch
- Anton Kochkov
- Ville Koskinen
+ - Sergey Kosukhin
- Marcin Kowalczyk
- Jan Kratochvil
- Christian Kujau
@@ -79,6 +85,7 @@ has been important. :-) In alphabetical order:
- Ilya Kurdyukov
- Peter Lawler
- James M Leddy
+ - Kelvin Lee
- Vincent Lefevre
- Hin-Tak Leung
- Andraž 'ruskie' Levstik
@@ -89,6 +96,7 @@ has been important. :-) In alphabetical order:
- Lorenzo De Liso
- H.J. Lu
- Bela Lubkin
+ - Chenxi Mao
- Gregory Margo
- Julien Marrec
- Ed Maste
@@ -144,12 +152,12 @@ has been important. :-) In alphabetical order:
- Martin Storsjö
- Jonathan Stott
- Dan Stromberg
- - Jia Tan
- Vincent Torri
+ - Alexey Tourbin
- Paul Townsend
- Mohammed Adnène Trojette
- - Alexey Tourbin
- Taiki Tsunekawa
+ - Maksym Vatsyk
- Loganaden Velvindron
- Patrick J. Volkerding
- Martin Väth
@@ -164,6 +172,7 @@ has been important. :-) In alphabetical order:
- Charles Wilson
- Lars Wirzenius
- Pilorz Wojciech
+ - Chien Wong
- Ryan Young
- Andreas Zieringer
diff --git a/TODO b/TODO
index 7b9a3ad..ad37f3f 100644
--- a/TODO
+++ b/TODO
@@ -24,10 +24,6 @@ Known bugs
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.
diff --git a/aclocal.m4 b/aclocal.m4
index 6d41ec8..86f1749 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -14,8 +14,8 @@
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.71],,
-[m4_warning([this file was generated for autoconf 2.71.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.72],,
+[m4_warning([this file was generated for autoconf 2.72.
You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
@@ -1168,8 +1168,8 @@ AC_SUBST([am__tar])
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
-m4_include([m4/ax_check_capsicum.m4])
m4_include([m4/ax_pthread.m4])
+m4_include([m4/build-to-host.m4])
m4_include([m4/getopt.m4])
m4_include([m4/gettext.m4])
m4_include([m4/host-cpu-c-abi.m4])
diff --git a/autogen.sh b/autogen.sh
index d5cec1b..3ac75e8 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -1,12 +1,10 @@
#!/bin/sh
+# SPDX-License-Identifier: 0BSD
###############################################################################
#
# Author: Lasse Collin
#
-# This file has been put into the public domain.
-# You can do whatever you want with this file.
-#
###############################################################################
set -e -x
@@ -19,14 +17,12 @@ ${AUTOCONF:-autoconf}
${AUTOHEADER:-autoheader}
${AUTOMAKE:-automake} -acf --foreign
-# Generate the translated man pages and the doxygen documentation if the
-# "po4a" and "doxygen" tools are available.
+# 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 or --no-doxygen to this script to skip these steps.
-# It can be useful when you know that po4a or doxygen aren't available and
+# Pass --no-po4a o 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.
generate_po4a="y"
-generate_doxygen="y"
for arg in "$@"
do
@@ -34,10 +30,6 @@ do
"--no-po4a")
generate_po4a="n"
;;
-
- "--no-doxygen")
- generate_doxygen="n"
- ;;
esac
done
@@ -47,10 +39,4 @@ if test "$generate_po4a" != "n"; then
cd ..
fi
-if test "$generate_doxygen" != "n"; then
- cd doxygen
- sh update-doxygen
- cd ..
-fi
-
exit 0
diff --git a/build-aux/config.guess b/build-aux/config.guess
index 7f76b62..f6d217a 100755
--- a/build-aux/config.guess
+++ b/build-aux/config.guess
@@ -1,10 +1,10 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright 1992-2022 Free Software Foundation, Inc.
+# Copyright 1992-2024 Free Software Foundation, Inc.
# shellcheck disable=SC2006,SC2268 # see below for rationale
-timestamp='2022-01-09'
+timestamp='2024-01-01'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -47,7 +47,7 @@ me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
Usage: $0 [OPTION]
-Output the configuration name of the system \`$me' is run on.
+Output the configuration name of the system '$me' is run on.
Options:
-h, --help print this help, then exit
@@ -60,13 +60,13 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright 1992-2022 Free Software Foundation, Inc.
+Copyright 1992-2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
help="
-Try \`$me --help' for more information."
+Try '$me --help' for more information."
# Parse command line
while test $# -gt 0 ; do
@@ -102,8 +102,8 @@ GUESS=
# temporary files to be created and, as you can see below, it is a
# headache to deal with in a portable fashion.
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
+# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still
+# use 'HOST_CC' if defined, but it is deprecated.
# Portable tmp directory creation inspired by the Autoconf team.
@@ -155,6 +155,9 @@ Linux|GNU|GNU/*)
set_cc_for_build
cat <<-EOF > "$dummy.c"
+ #if defined(__ANDROID__)
+ LIBC=android
+ #else
#include <features.h>
#if defined(__UCLIBC__)
LIBC=uclibc
@@ -162,6 +165,8 @@ Linux|GNU|GNU/*)
LIBC=dietlibc
#elif defined(__GLIBC__)
LIBC=gnu
+ #elif defined(__LLVM_LIBC__)
+ LIBC=llvm
#else
#include <stdarg.h>
/* First heuristic to detect musl libc. */
@@ -169,6 +174,7 @@ Linux|GNU|GNU/*)
LIBC=musl
#endif
#endif
+ #endif
EOF
cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
eval "$cc_set_libc"
@@ -459,7 +465,7 @@ case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in
UNAME_RELEASE=`uname -v`
;;
esac
- # Japanese Language versions have a version number like `4.1.3-JL'.
+ # Japanese Language versions have a version number like '4.1.3-JL'.
SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'`
GUESS=sparc-sun-sunos$SUN_REL
;;
@@ -904,7 +910,7 @@ EOF
fi
;;
*:FreeBSD:*:*)
- UNAME_PROCESSOR=`/usr/bin/uname -p`
+ UNAME_PROCESSOR=`uname -p`
case $UNAME_PROCESSOR in
amd64)
UNAME_PROCESSOR=x86_64 ;;
@@ -966,11 +972,37 @@ EOF
GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC
;;
+ x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*)
+ GUESS="$UNAME_MACHINE-pc-managarm-mlibc"
+ ;;
+ *:[Mm]anagarm:*:*)
+ GUESS="$UNAME_MACHINE-unknown-managarm-mlibc"
+ ;;
*:Minix:*:*)
GUESS=$UNAME_MACHINE-unknown-minix
;;
aarch64:Linux:*:*)
- GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ set_cc_for_build
+ CPU=$UNAME_MACHINE
+ LIBCABI=$LIBC
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
+ ABI=64
+ sed 's/^ //' << EOF > "$dummy.c"
+ #ifdef __ARM_EABI__
+ #ifdef __ARM_PCS_VFP
+ ABI=eabihf
+ #else
+ ABI=eabi
+ #endif
+ #endif
+EOF
+ cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'`
+ eval "$cc_set_abi"
+ case $ABI in
+ eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;;
+ esac
+ fi
+ GUESS=$CPU-unknown-linux-$LIBCABI
;;
aarch64_be:Linux:*:*)
UNAME_MACHINE=aarch64_be
@@ -1036,7 +1068,16 @@ EOF
k1om:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
- loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*)
+ kvx:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ kvx:cos:*:*)
+ GUESS=$UNAME_MACHINE-unknown-cos
+ ;;
+ kvx:mbr:*:*)
+ GUESS=$UNAME_MACHINE-unknown-mbr
+ ;;
+ loongarch32:Linux:*:* | loongarch64:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
m32r*:Linux:*:*)
@@ -1151,16 +1192,27 @@ EOF
;;
x86_64:Linux:*:*)
set_cc_for_build
+ CPU=$UNAME_MACHINE
LIBCABI=$LIBC
if test "$CC_FOR_BUILD" != no_compiler_found; then
- if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_X32 >/dev/null
- then
- LIBCABI=${LIBC}x32
- fi
+ ABI=64
+ sed 's/^ //' << EOF > "$dummy.c"
+ #ifdef __i386__
+ ABI=x86
+ #else
+ #ifdef __ILP32__
+ ABI=x32
+ #endif
+ #endif
+EOF
+ cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'`
+ eval "$cc_set_abi"
+ case $ABI in
+ x86) CPU=i686 ;;
+ x32) LIBCABI=${LIBC}x32 ;;
+ esac
fi
- GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI
+ GUESS=$CPU-pc-linux-$LIBCABI
;;
xtensa*:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
@@ -1180,7 +1232,7 @@ EOF
GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION
;;
i*86:OS/2:*:*)
- # If we were able to find `uname', then EMX Unix compatibility
+ # If we were able to find 'uname', then EMX Unix compatibility
# is probably installed.
GUESS=$UNAME_MACHINE-pc-os2-emx
;;
@@ -1321,7 +1373,7 @@ EOF
GUESS=ns32k-sni-sysv
fi
;;
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort
# says <Richard.M.Bartel@ccMail.Census.GOV>
GUESS=i586-unisys-sysv4
;;
@@ -1367,8 +1419,11 @@ EOF
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
GUESS=i586-pc-haiku
;;
- x86_64:Haiku:*:*)
- GUESS=x86_64-unknown-haiku
+ ppc:Haiku:*:*) # Haiku running on Apple PowerPC
+ GUESS=powerpc-apple-haiku
+ ;;
+ *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat)
+ GUESS=$UNAME_MACHINE-unknown-haiku
;;
SX-4:SUPER-UX:*:*)
GUESS=sx4-nec-superux$UNAME_RELEASE
@@ -1540,6 +1595,9 @@ EOF
*:Unleashed:*:*)
GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE
;;
+ *:Ironclad:*:*)
+ GUESS=$UNAME_MACHINE-unknown-ironclad
+ ;;
esac
# Do we have a guess based on uname results?
diff --git a/build-aux/config.rpath b/build-aux/config.rpath
index 1e1ab67..3893ddd 100755
--- a/build-aux/config.rpath
+++ b/build-aux/config.rpath
@@ -2,7 +2,7 @@
# Output a system dependent set of variables, describing how to set the
# run time search path of shared libraries in an executable.
#
-# Copyright 1996-2022 Free Software Foundation, Inc.
+# Copyright 1996-2024 Free Software Foundation, Inc.
# Taken from GNU libtool, 2001
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
#
diff --git a/build-aux/config.sub b/build-aux/config.sub
index 9b62e37..2c6a07a 100755
--- a/build-aux/config.sub
+++ b/build-aux/config.sub
@@ -1,10 +1,10 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright 1992-2021 Free Software Foundation, Inc.
+# Copyright 1992-2024 Free Software Foundation, Inc.
# shellcheck disable=SC2006,SC2268 # see below for rationale
-timestamp='2021-12-25'
+timestamp='2024-01-01'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -76,13 +76,13 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright 1992-2021 Free Software Foundation, Inc.
+Copyright 1992-2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
help="
-Try \`$me --help' for more information."
+Try '$me --help' for more information."
# Parse command line
while test $# -gt 0 ; do
@@ -130,7 +130,7 @@ IFS=$saved_IFS
# Separate into logical components for further validation
case $1 in
*-*-*-*-*)
- echo Invalid configuration \`"$1"\': more than four components >&2
+ echo "Invalid configuration '$1': more than four components" >&2
exit 1
;;
*-*-*-*)
@@ -145,7 +145,8 @@ case $1 in
nto-qnx* | linux-* | uclinux-uclibc* \
| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
- | storm-chaos* | os2-emx* | rtmk-nova*)
+ | storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \
+ | windows-* )
basic_machine=$field1
basic_os=$maybe_os
;;
@@ -943,7 +944,7 @@ $basic_machine
EOF
IFS=$saved_IFS
;;
- # We use `pc' rather than `unknown'
+ # We use 'pc' rather than 'unknown'
# because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users.
i*86 | x86_64)
@@ -1075,7 +1076,7 @@ case $cpu-$vendor in
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
cpu=i586
;;
- pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
+ pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
cpu=i686
;;
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
@@ -1180,7 +1181,7 @@ case $cpu-$vendor in
case $cpu in
1750a | 580 \
| a29k \
- | aarch64 | aarch64_be \
+ | aarch64 | aarch64_be | aarch64c | arm64ec \
| abacus \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
@@ -1199,50 +1200,29 @@ case $cpu-$vendor in
| d10v | d30v | dlx | dsp16xx \
| e2k | elxsi | epiphany \
| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
+ | javascript \
| h8300 | h8500 \
| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| hexagon \
| i370 | i*86 | i860 | i960 | ia16 | ia64 \
| ip2k | iq2000 \
| k1om \
+ | kvx \
| le32 | le64 \
| lm32 \
- | loongarch32 | loongarch64 | loongarchx32 \
+ | loongarch32 | loongarch64 \
| m32c | m32r | m32rle \
| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
| m88110 | m88k | maxq | mb | mcore | mep | metag \
| microblaze | microblazeel \
- | mips | mipsbe | mipseb | mipsel | mipsle \
- | mips16 \
- | mips64 | mips64eb | mips64el \
- | mips64octeon | mips64octeonel \
- | mips64orion | mips64orionel \
- | mips64r5900 | mips64r5900el \
- | mips64vr | mips64vrel \
- | mips64vr4100 | mips64vr4100el \
- | mips64vr4300 | mips64vr4300el \
- | mips64vr5000 | mips64vr5000el \
- | mips64vr5900 | mips64vr5900el \
- | mipsisa32 | mipsisa32el \
- | mipsisa32r2 | mipsisa32r2el \
- | mipsisa32r3 | mipsisa32r3el \
- | mipsisa32r5 | mipsisa32r5el \
- | mipsisa32r6 | mipsisa32r6el \
- | mipsisa64 | mipsisa64el \
- | mipsisa64r2 | mipsisa64r2el \
- | mipsisa64r3 | mipsisa64r3el \
- | mipsisa64r5 | mipsisa64r5el \
- | mipsisa64r6 | mipsisa64r6el \
- | mipsisa64sb1 | mipsisa64sb1el \
- | mipsisa64sr71k | mipsisa64sr71kel \
- | mipsr5900 | mipsr5900el \
- | mipstx39 | mipstx39el \
+ | mips* \
| mmix \
| mn10200 | mn10300 \
| moxie \
| mt \
| msp430 \
+ | nanomips* \
| nds32 | nds32le | nds32be \
| nfp \
| nios | nios2 | nios2eb | nios2el \
@@ -1274,6 +1254,7 @@ case $cpu-$vendor in
| ubicom32 \
| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
| vax \
+ | vc4 \
| visium \
| w65 \
| wasm32 | wasm64 \
@@ -1285,7 +1266,7 @@ case $cpu-$vendor in
;;
*)
- echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
+ echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2
exit 1
;;
esac
@@ -1306,11 +1287,12 @@ esac
# Decode manufacturer-specific aliases for certain operating systems.
-if test x$basic_os != x
+if test x"$basic_os" != x
then
# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
# set os.
+obj=
case $basic_os in
gnu/linux*)
kernel=linux
@@ -1341,6 +1323,10 @@ EOF
kernel=linux
os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
;;
+ managarm*)
+ kernel=managarm
+ os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
+ ;;
*)
kernel=
os=$basic_os
@@ -1506,10 +1492,16 @@ case $os in
os=eabi
;;
*)
- os=elf
+ os=
+ obj=elf
;;
esac
;;
+ aout* | coff* | elf* | pe*)
+ # These are machine code file formats, not OSes
+ obj=$os
+ os=
+ ;;
*)
# No normalization, but not necessarily accepted, that comes below.
;;
@@ -1528,12 +1520,15 @@ else
# system, and we'll never get to this point.
kernel=
+obj=
case $cpu-$vendor in
score-*)
- os=elf
+ os=
+ obj=elf
;;
spu-*)
- os=elf
+ os=
+ obj=elf
;;
*-acorn)
os=riscix1.2
@@ -1543,28 +1538,35 @@ case $cpu-$vendor in
os=gnu
;;
arm*-semi)
- os=aout
+ os=
+ obj=aout
;;
c4x-* | tic4x-*)
- os=coff
+ os=
+ obj=coff
;;
c8051-*)
- os=elf
+ os=
+ obj=elf
;;
clipper-intergraph)
os=clix
;;
hexagon-*)
- os=elf
+ os=
+ obj=elf
;;
tic54x-*)
- os=coff
+ os=
+ obj=coff
;;
tic55x-*)
- os=coff
+ os=
+ obj=coff
;;
tic6x-*)
- os=coff
+ os=
+ obj=coff
;;
# This must come before the *-dec entry.
pdp10-*)
@@ -1586,19 +1588,24 @@ case $cpu-$vendor in
os=sunos3
;;
m68*-cisco)
- os=aout
+ os=
+ obj=aout
;;
mep-*)
- os=elf
+ os=
+ obj=elf
;;
mips*-cisco)
- os=elf
+ os=
+ obj=elf
;;
- mips*-*)
- os=elf
+ mips*-*|nanomips*-*)
+ os=
+ obj=elf
;;
or32-*)
- os=coff
+ os=
+ obj=coff
;;
*-tti) # must be before sparc entry or we get the wrong os.
os=sysv3
@@ -1607,7 +1614,8 @@ case $cpu-$vendor in
os=sunos4.1.1
;;
pru-*)
- os=elf
+ os=
+ obj=elf
;;
*-be)
os=beos
@@ -1688,10 +1696,12 @@ case $cpu-$vendor in
os=uxpv
;;
*-rom68k)
- os=coff
+ os=
+ obj=coff
;;
*-*bug)
- os=coff
+ os=
+ obj=coff
;;
*-apple)
os=macos
@@ -1709,10 +1719,11 @@ esac
fi
-# Now, validate our (potentially fixed-up) OS.
+# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ).
+
case $os in
# Sometimes we do "kernel-libc", so those need to count as OSes.
- musl* | newlib* | relibc* | uclibc*)
+ llvm* | musl* | newlib* | relibc* | uclibc*)
;;
# Likewise for "kernel-abi"
eabi* | gnueabi*)
@@ -1720,6 +1731,9 @@ case $os in
# VxWorks passes extra cpu info in the 4th filed.
simlinux | simwindows | spe)
;;
+ # See `case $cpu-$os` validation below
+ ghcjs)
+ ;;
# Now accept the basic system types.
# The portable systems comes first.
# Each alternative MUST end in a * to match a version number.
@@ -1728,7 +1742,7 @@ case $os in
| hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
| sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \
| hiux* | abug | nacl* | netware* | windows* \
- | os9* | macos* | osx* | ios* \
+ | os9* | macos* | osx* | ios* | tvos* | watchos* \
| mpw* | magic* | mmixware* | mon960* | lnews* \
| amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
| aos* | aros* | cloudabi* | sortix* | twizzler* \
@@ -1737,11 +1751,11 @@ case $os in
| mirbsd* | netbsd* | dicos* | openedition* | ose* \
| bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
| ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
- | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
- | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
+ | bosx* | nextstep* | cxux* | oabi* \
+ | ptx* | ecoff* | winnt* | domain* | vsta* \
| udi* | lites* | ieee* | go32* | aux* | hcos* \
| chorusrdb* | cegcc* | glidix* | serenity* \
- | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
+ | cygwin* | msys* | moss* | proelf* | rtems* \
| midipix* | mingw32* | mingw64* | mint* \
| uxpv* | beos* | mpeix* | udk* | moxiebox* \
| interix* | uwin* | mks* | rhapsody* | darwin* \
@@ -1754,49 +1768,116 @@ case $os in
| onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
| midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
| nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
- | fiwix* )
+ | fiwix* | mlibc* | cos* | mbr* | ironclad* )
;;
# This one is extra strict with allowed versions
sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
# Don't forget version if it is 3.2v4 or newer.
;;
+ # This refers to builds using the UEFI calling convention
+ # (which depends on the architecture) and PE file format.
+ # Note that this is both a different calling convention and
+ # different file format than that of GNU-EFI
+ # (x86_64-w64-mingw32).
+ uefi)
+ ;;
none)
;;
+ kernel* | msvc* )
+ # Restricted further below
+ ;;
+ '')
+ if test x"$obj" = x
+ then
+ echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2
+ fi
+ ;;
+ *)
+ echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2
+ exit 1
+ ;;
+esac
+
+case $obj in
+ aout* | coff* | elf* | pe*)
+ ;;
+ '')
+ # empty is fine
+ ;;
*)
- echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
+ echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
+ exit 1
+ ;;
+esac
+
+# Here we handle the constraint that a (synthetic) cpu and os are
+# valid only in combination with each other and nowhere else.
+case $cpu-$os in
+ # The "javascript-unknown-ghcjs" triple is used by GHC; we
+ # accept it here in order to tolerate that, but reject any
+ # variations.
+ javascript-ghcjs)
+ ;;
+ javascript-* | *-ghcjs)
+ echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
exit 1
;;
esac
# As a final step for OS-related things, validate the OS-kernel combination
# (given a valid OS), if there is a kernel.
-case $kernel-$os in
- linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
- | linux-musl* | linux-relibc* | linux-uclibc* )
+case $kernel-$os-$obj in
+ linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
+ | linux-mlibc*- | linux-musl*- | linux-newlib*- \
+ | linux-relibc*- | linux-uclibc*- )
+ ;;
+ uclinux-uclibc*- )
+ ;;
+ managarm-mlibc*- | managarm-kernel*- )
;;
- uclinux-uclibc* )
+ windows*-msvc*-)
;;
- -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
+ -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
+ | -uclibc*- )
# These are just libc implementations, not actual OSes, and thus
# require a kernel.
- echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
+ echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2
exit 1
;;
- kfreebsd*-gnu* | kopensolaris*-gnu*)
+ -kernel*- )
+ echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
+ exit 1
;;
- vxworks-simlinux | vxworks-simwindows | vxworks-spe)
+ *-kernel*- )
+ echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
+ exit 1
;;
- nto-qnx*)
+ *-msvc*- )
+ echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
+ exit 1
;;
- os2-emx)
+ kfreebsd*-gnu*- | kopensolaris*-gnu*-)
+ ;;
+ vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
+ ;;
+ nto-qnx*-)
+ ;;
+ os2-emx-)
;;
- *-eabi* | *-gnueabi*)
+ *-eabi*- | *-gnueabi*-)
;;
- -*)
+ none--*)
+ # None (no kernel, i.e. freestanding / bare metal),
+ # can be paired with an machine code file format
+ ;;
+ -*-)
# Blank kernel with real OS is always fine.
;;
- *-*)
- echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
+ --*)
+ # Blank kernel and OS with real machine code file format is always fine.
+ ;;
+ *-*-*)
+ echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
exit 1
;;
esac
@@ -1879,7 +1960,7 @@ case $vendor in
;;
esac
-echo "$cpu-$vendor-${kernel:+$kernel-}$os"
+echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}"
exit
# Local variables:
diff --git a/build-aux/ltmain.sh b/build-aux/ltmain.sh
index 5506693..51e57e3 100644
--- a/build-aux/ltmain.sh
+++ b/build-aux/ltmain.sh
@@ -2,11 +2,11 @@
## DO NOT EDIT - This file generated from ./build-aux/ltmain.in
## by inline-source v2019-02-19.15
-# libtool (GNU libtool) 2.4.7.4-1ec8f-dirty
+# libtool (GNU libtool) 2.5.0.1-38c1-dirty
# Provide generalized library-building support services.
# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-# Copyright (C) 1996-2019, 2021-2022 Free Software Foundation, Inc.
+# Copyright (C) 1996-2019, 2021-2024 Free Software Foundation, Inc.
# This is free software; see the source for copying conditions. There is NO
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
@@ -31,8 +31,8 @@
PROGRAM=libtool
PACKAGE=libtool
-VERSION=2.4.7.4-1ec8f-dirty
-package_revision=2.4.7.4
+VERSION=2.5.0.1-38c1-dirty
+package_revision=2.5.0.1
## ------ ##
@@ -72,11 +72,11 @@ scriptversion=2019-02-19.15; # UTC
# This is free software. There is NO warranty; not even for
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
-# Copyright (C) 2004-2019, 2021 Bootstrap Authors
+# Copyright (C) 2004-2019, 2021, 2023 Bootstrap Authors
#
# This file is dual licensed under the terms of the MIT license
-# <https://opensource.org/license/MIT>, and GPL version 2 or later
-# <http://www.gnu.org/licenses/gpl-2.0.html>. You must apply one of
+# <https://opensource.org/licenses/MIT>, and GPL version 2 or later
+# <https://www.gnu.org/licenses/gpl-2.0.html>. You must apply one of
# these licenses when using or redistributing this software or any of
# the files within it. See the URLs above, or the file `LICENSE`
# included in the Bootstrap distribution for the full license texts.
@@ -143,7 +143,7 @@ nl='
'
IFS="$sp $nl"
-# There are apparently some retarded systems that use ';' as a PATH separator!
+# There are apparently some systems that use ';' as a PATH separator!
if test "${PATH_SEPARATOR+set}" != set; then
PATH_SEPARATOR=:
(PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
@@ -1536,11 +1536,11 @@ func_lt_ver ()
# This is free software. There is NO warranty; not even for
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
-# Copyright (C) 2010-2019, 2021 Bootstrap Authors
+# Copyright (C) 2010-2019, 2021, 2023 Bootstrap Authors
#
# This file is dual licensed under the terms of the MIT license
-# <https://opensource.org/license/MIT>, and GPL version 2 or later
-# <http://www.gnu.org/licenses/gpl-2.0.html>. You must apply one of
+# <https://opensource.org/licenses/MIT>, and GPL version 2 or later
+# <https://www.gnu.org/licenses/gpl-2.0.html>. You must apply one of
# these licenses when using or redistributing this software or any of
# the files within it. See the URLs above, or the file `LICENSE`
# included in the Bootstrap distribution for the full license texts.
@@ -2215,7 +2215,7 @@ func_version ()
# End:
# Set a version string.
-scriptversion='(GNU libtool) 2.4.7.4-1ec8f-dirty'
+scriptversion='(GNU libtool) 2.5.0.1-38c1-dirty'
# func_echo ARG...
@@ -2306,13 +2306,13 @@ include the following information:
compiler: $LTCC
compiler flags: $LTCFLAGS
linker: $LD (gnu? $with_gnu_ld)
- version: $progname (GNU libtool) 2.4.7.4-1ec8f-dirty
+ version: $progname (GNU libtool) 2.5.0.1-38c1-dirty
automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q`
Report bugs to <bug-libtool@gnu.org>.
-GNU libtool home page: <http://www.gnu.org/s/libtool/>.
-General help using GNU software: <http://www.gnu.org/gethelp/>."
+GNU libtool home page: <https://www.gnu.org/s/libtool/>.
+General help using GNU software: <https://www.gnu.org/gethelp/>."
exit 0
}
@@ -2668,10 +2668,10 @@ libtool_validate_options ()
# preserve --debug
test : = "$debug_cmd" || func_append preserve_args " --debug"
- case $host in
+ case $host_os in
# Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452
# see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788
- *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*)
+ cygwin* | mingw* | windows* | pw32* | cegcc* | solaris2* | os2*)
# don't eliminate duplications in $postdeps and $predeps
opt_duplicate_compiler_generated_deps=:
;;
@@ -3003,7 +3003,7 @@ EOF
# func_convert_core_file_wine_to_w32 ARG
# Helper function used by file name conversion functions when $build is *nix,
-# and $host is mingw, cygwin, or some other w32 environment. Relies on a
+# and $host is mingw, windows, cygwin, or some other w32 environment. Relies on a
# correctly configured wine environment available, with the winepath program
# in $build's $PATH.
#
@@ -3035,9 +3035,10 @@ func_convert_core_file_wine_to_w32 ()
# func_convert_core_path_wine_to_w32 ARG
# Helper function used by path conversion functions when $build is *nix, and
-# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
-# configured wine environment available, with the winepath program in $build's
-# $PATH. Assumes ARG has no leading or trailing path separator characters.
+# $host is mingw, windows, cygwin, or some other w32 environment. Relies on a
+# correctly configured wine environment available, with the winepath program
+# in $build's $PATH. Assumes ARG has no leading or trailing path separator
+# characters.
#
# ARG is path to be converted from $build format to win32.
# Result is available in $func_convert_core_path_wine_to_w32_result.
@@ -3692,7 +3693,7 @@ func_mode_compile ()
# On Cygwin there's no "real" PIC flag so we must build both object types
case $host_os in
- cygwin* | mingw* | pw32* | os2* | cegcc*)
+ cygwin* | mingw* | windows* | pw32* | os2* | cegcc*)
pic_mode=default
;;
esac
@@ -4569,7 +4570,7 @@ func_mode_install ()
'exit $?'
tstripme=$stripme
case $host_os in
- cygwin* | mingw* | pw32* | cegcc*)
+ cygwin* | mingw* | windows* | pw32* | cegcc*)
case $realname in
*.dll.a)
tstripme=
@@ -4682,7 +4683,7 @@ func_mode_install ()
# Do a test to see if this is really a libtool program.
case $host in
- *cygwin* | *mingw*)
+ *cygwin* | *mingw* | *windows*)
if func_ltwrapper_executable_p "$file"; then
func_ltwrapper_scriptname "$file"
wrapper=$func_ltwrapper_scriptname_result
@@ -4910,7 +4911,7 @@ extern \"C\" {
$RM $export_symbols
eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
case $host in
- *cygwin* | *mingw* | *cegcc* )
+ *cygwin* | *mingw* | *windows* | *cegcc* )
eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
;;
@@ -4922,7 +4923,7 @@ extern \"C\" {
eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
eval '$MV "$nlist"T "$nlist"'
case $host in
- *cygwin* | *mingw* | *cegcc* )
+ *cygwin* | *mingw* | *windows* | *cegcc* )
eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
;;
@@ -4936,7 +4937,7 @@ extern \"C\" {
func_basename "$dlprefile"
name=$func_basename_result
case $host in
- *cygwin* | *mingw* | *cegcc* )
+ *cygwin* | *mingw* | *windows* | *cegcc* )
# if an import library, we need to obtain dlname
if func_win32_import_lib_p "$dlprefile"; then
func_tr_sh "$dlprefile"
@@ -5111,7 +5112,7 @@ static const void *lt_preloaded_setup() {
# Transform the symbol file into the correct name.
symfileobj=$output_objdir/${my_outputname}S.$objext
case $host in
- *cygwin* | *mingw* | *cegcc* )
+ *cygwin* | *mingw* | *windows* | *cegcc* )
if test -f "$output_objdir/$my_outputname.def"; then
compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
@@ -5454,7 +5455,7 @@ func_extract_archives ()
#
# Emit a libtool wrapper script on stdout.
# Don't directly open a file because we may want to
-# incorporate the script contents within a cygwin/mingw
+# incorporate the script contents within a cygwin/mingw/windows
# wrapper executable. Must ONLY be called from within
# func_mode_link because it depends on a number of variables
# set therein.
@@ -5462,7 +5463,7 @@ func_extract_archives ()
# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
# variable will take. If 'yes', then the emitted script
# will assume that the directory where it is stored is
-# the $objdir directory. This is a cygwin/mingw-specific
+# the $objdir directory. This is a cygwin/mingw/windows-specific
# behavior.
func_emit_wrapper ()
{
@@ -5587,7 +5588,7 @@ func_exec_program_core ()
"
case $host in
# Backslashes separate directories on plain windows
- *-*-mingw | *-*-os2* | *-cegcc*)
+ *-*-mingw* | *-*-windows* | *-*-os2* | *-cegcc*)
$ECHO "\
if test -n \"\$lt_option_debug\"; then
\$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2
@@ -5655,7 +5656,7 @@ func_exec_program ()
file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
done
- # Usually 'no', except on cygwin/mingw when embedded into
+ # Usually 'no', except on cygwin/mingw/windows when embedded into
# the cwrapper.
WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
@@ -5787,7 +5788,7 @@ EOF
#endif
#include <stdio.h>
#include <stdlib.h>
-#ifdef _MSC_VER
+#if defined _WIN32 && !defined __GNUC__
# include <direct.h>
# include <process.h>
# include <io.h>
@@ -5812,7 +5813,7 @@ EOF
/* declarations of non-ANSI functions */
#if defined __MINGW32__
# ifdef __STRICT_ANSI__
-int _putenv (const char *);
+_CRTIMP int __cdecl _putenv (const char *);
# endif
#elif defined __CYGWIN__
# ifdef __STRICT_ANSI__
@@ -6010,7 +6011,7 @@ main (int argc, char *argv[])
{
EOF
case $host in
- *mingw* | *cygwin* )
+ *mingw* | *windows* | *cygwin* )
# make stdout use "unix" line endings
echo " setmode(1,_O_BINARY);"
;;
@@ -6029,7 +6030,7 @@ EOF
{
/* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
namespace, but it is not one of the ones we know about and
- have already dealt with, above (inluding dump-script), then
+ have already dealt with, above (including dump-script), then
report an error. Otherwise, targets might begin to believe
they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
namespace. The first time any user complains about this, we'll
@@ -6113,7 +6114,7 @@ EOF
EOF
case $host_os in
- mingw*)
+ mingw* | windows*)
cat <<"EOF"
{
char* p;
@@ -6155,7 +6156,7 @@ EOF
EOF
case $host_os in
- mingw*)
+ mingw* | windows*)
cat <<"EOF"
/* execv doesn't actually work on mingw as expected on unix */
newargz = prepare_spawn (newargz);
@@ -6574,7 +6575,7 @@ lt_update_lib_path (const char *name, const char *value)
EOF
case $host_os in
- mingw*)
+ mingw* | windows*)
cat <<"EOF"
/* Prepares an argument vector before calling spawn().
@@ -6749,7 +6750,7 @@ func_mode_link ()
$debug_cmd
case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+ *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-cegcc*)
# It is impossible to link a dll without this setting, and
# we shouldn't force the makefile maintainer to figure out
# what system we are compiling for in order to pass an extra
@@ -7255,7 +7256,7 @@ func_mode_link ()
;;
esac
case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+ *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-cegcc*)
testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
case :$dllsearchpath: in
*":$dir:"*) ;;
@@ -7275,7 +7276,7 @@ func_mode_link ()
-l*)
if test X-lc = "X$arg" || test X-lm = "X$arg"; then
case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
+ *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
# These systems don't actually have a C or math library (as such)
continue
;;
@@ -7283,7 +7284,7 @@ func_mode_link ()
# These systems don't actually have a C library (as such)
test X-lc = "X$arg" && continue
;;
- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*)
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*)
# Do not include libc due to us having libc/libc_r.
test X-lc = "X$arg" && continue
;;
@@ -7303,7 +7304,7 @@ func_mode_link ()
esac
elif test X-lc_r = "X$arg"; then
case $host in
- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*)
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*)
# Do not include libc_r directly, use -pthread flag.
continue
;;
@@ -7347,7 +7348,7 @@ func_mode_link ()
continue
;;
-mt|-mthreads|-kthread|-Kthread|-pthreads|--thread-safe \
- |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+ |-threads|-fopenmp|-fopenmp=*|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
func_append compiler_flags " $arg"
func_append compile_command " $arg"
func_append finalize_command " $arg"
@@ -7370,7 +7371,7 @@ func_mode_link ()
-no-install)
case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
+ *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
# The PATH hackery in wrapper scripts is required on Windows
# and Darwin in order for the loader to find any dlls it needs.
func_warning "'-no-install' is ignored for $host"
@@ -7555,14 +7556,27 @@ func_mode_link ()
# -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
# -specs=* GCC specs files
# -stdlib=* select c++ std lib with clang
+ # -fdiagnostics-color* simply affects output
+ # -frecord-gcc-switches used to verify flags were respected
# -fsanitize=* Clang/GCC memory and address sanitizer
+ # -fno-sanitize* Clang/GCC memory and address sanitizer
+ # -shared-libsan Link with shared sanitizer runtimes (Clang)
+ # -static-libsan Link with static sanitizer runtimes (Clang)
+ # -no-canonical-prefixes Do not expand any symbolic links
# -fuse-ld=* Linker select flags for GCC
+ # -rtlib=* select c runtime lib with clang
+ # --unwindlib=* select unwinder library with clang
+ # -f{file|debug|macro|profile}-prefix-map=* needed for lto linking
# -Wa,* Pass flags directly to the assembler
# -Werror, -Werror=* Report (specified) warnings as errors
-64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
- -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
- -specs=*|-fsanitize=*|-fuse-ld=*|-Wa,*|-Werror|-Werror=*)
+ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-no-canonical-prefixes| \
+ -stdlib=*|-rtlib=*|--unwindlib=*| \
+ -specs=*|-fsanitize=*|-fno-sanitize*|-shared-libsan|-static-libsan| \
+ -ffile-prefix-map=*|-fdebug-prefix-map=*|-fmacro-prefix-map=*|-fprofile-prefix-map=*| \
+ -fdiagnostics-color*|-frecord-gcc-switches| \
+ -fuse-ld=*|-Wa,*|-Werror|-Werror=*)
func_quote_arg pretty "$arg"
arg=$func_quote_arg_result
func_append compile_command " $arg"
@@ -7892,7 +7906,7 @@ func_mode_link ()
found=false
case $deplib in
-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
- |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+ |-threads|-fopenmp|-fopenmp=*|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
if test prog,link = "$linkmode,$pass"; then
compile_deplibs="$deplib $compile_deplibs"
finalize_deplibs="$deplib $finalize_deplibs"
@@ -8069,18 +8083,15 @@ func_mode_link ()
;;
esac
if $valid_a_lib; then
- echo
- $ECHO "*** Warning: Linking the shared library $output against the"
- $ECHO "*** static library $deplib is not portable!"
+ func_warning "Linking the shared library $output against the static library $deplib is not portable!"
deplibs="$deplib $deplibs"
else
- echo
- $ECHO "*** Warning: Trying to link with static lib archive $deplib."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
- echo "*** shared version of the library, which you do not appear to have"
- echo "*** because the file extensions .$libext of this argument makes me believe"
- echo "*** that it is just a static archive that I should not use here."
+ func_warning "Trying to link with static lib archive $deplib."
+ func_warning "I have the capability to make that library automatically link in when"
+ func_warning "you link to this library. But I can only do this if you have a"
+ func_warning "shared version of the library, which you do not appear to have"
+ func_warning "because the file extensions .$libext of this argument makes me believe"
+ func_warning "that it is just a static archive that I should not use here."
fi
;;
esac
@@ -8275,7 +8286,7 @@ func_mode_link ()
fi
case $host in
# special handling for platforms with PE-DLLs.
- *cygwin* | *mingw* | *cegcc* )
+ *cygwin* | *mingw* | *windows* | *cegcc* )
# Linker will automatically link against shared library if both
# static and shared are present. Therefore, ensure we extract
# symbols from the import library if a shared library is present
@@ -8418,8 +8429,8 @@ func_mode_link ()
fi
if test -n "$library_names" &&
{ test no = "$use_static_libs" || test -z "$old_library"; }; then
- case $host in
- *cygwin* | *mingw* | *cegcc* | *os2*)
+ case $host_os in
+ cygwin* | mingw* | windows* | cegcc* | os2*)
# No point in relinking DLLs because paths are not encoded
func_append notinst_deplibs " $lib"
need_relink=no
@@ -8445,11 +8456,11 @@ func_mode_link ()
if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then
echo
if test prog = "$linkmode"; then
- $ECHO "*** Warning: Linking the executable $output against the loadable module"
+ func_warning "Linking the executable $output against the loadable module"
else
- $ECHO "*** Warning: Linking the shared library $output against the loadable module"
+ func_warning "Linking the shared library $output against the loadable module"
fi
- $ECHO "*** $linklib is not portable!"
+ func_warning "$linklib is not portable!"
fi
if test lib = "$linkmode" &&
test yes = "$hardcode_into_libs"; then
@@ -8488,8 +8499,8 @@ func_mode_link ()
soname=$dlname
elif test -n "$soname_spec"; then
# bleh windows
- case $host in
- *cygwin* | mingw* | *cegcc* | *os2*)
+ case $host_os in
+ cygwin* | mingw* | windows* | cegcc* | os2*)
func_arith $current - $age
major=$func_arith_result
versuffix=-$major
@@ -8544,11 +8555,10 @@ func_mode_link ()
if /usr/bin/file -L $add 2> /dev/null |
$GREP ": [^:]* bundle" >/dev/null; then
if test "X$dlopenmodule" != "X$lib"; then
- $ECHO "*** Warning: lib $linklib is a module, not a shared library"
+ func_warning "lib $linklib is a module, not a shared library"
if test -z "$old_library"; then
- echo
- echo "*** And there doesn't seem to be a static archive available"
- echo "*** The link will probably fail, sorry"
+ func_warning "And there doesn't seem to be a static archive available"
+ func_warning "The link will probably fail, sorry"
else
add=$dir/$old_library
fi
@@ -8688,21 +8698,19 @@ func_mode_link ()
# Just print a warning and add the library to dependency_libs so
# that the program can be linked against the static library.
- echo
- $ECHO "*** Warning: This system cannot link to static lib archive $lib."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
- echo "*** shared version of the library, which you do not appear to have."
+ func_warning "This system cannot link to static lib archive $lib."
+ func_warning "I have the capability to make that library automatically link in when"
+ func_warning "you link to this library. But I can only do this if you have a"
+ func_warning "shared version of the library, which you do not appear to have."
if test yes = "$module"; then
- echo "*** But as you try to build a module library, libtool will still create "
- echo "*** a static module, that should work as long as the dlopening application"
- echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+ func_warning "But as you try to build a module library, libtool will still create "
+ func_warning "a static module, that should work as long as the dlopening application"
+ func_warning "is linked with the -dlopen flag to resolve symbols at runtime."
if test -z "$global_symbol_pipe"; then
- echo
- echo "*** However, this would only work if libtool was able to extract symbol"
- echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
- echo "*** not find such a program. So, this module is probably useless."
- echo "*** 'nm' from GNU binutils and a full rebuild may help."
+ func_warning "However, this would only work if libtool was able to extract symbol"
+ func_warning "lists from a program, using 'nm' or equivalent, but libtool could"
+ func_warning "not find such a program. So, this module is probably useless."
+ func_warning "'nm' from GNU binutils and a full rebuild may help."
fi
if test no = "$build_old_libs"; then
build_libtool_libs=module
@@ -9029,9 +9037,7 @@ func_mode_link ()
if test pass_all != "$deplibs_check_method"; then
func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs"
else
- echo
- $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
- $ECHO "*** objects $objs is not portable!"
+ func_warning "Linking the shared library $output against the non-libtool objects $objs is not portable!"
func_append libobjs " $objs"
fi
fi
@@ -9092,13 +9098,13 @@ func_mode_link ()
#
case $version_type in
# correct linux to gnu/linux during the next big refactor
- darwin|freebsd-elf|linux|midnightbsd-elf|osf|windows|none)
+ darwin|freebsd-elf|linux|midnightbsd-elf|osf|qnx|windows|none)
func_arith $number_major + $number_minor
current=$func_arith_result
age=$number_minor
revision=$number_revision
;;
- freebsd-aout|qnx|sunos)
+ freebsd-aout|sco|sunos)
current=$number_major
revision=$number_minor
age=0
@@ -9245,8 +9251,9 @@ func_mode_link ()
;;
qnx)
- major=.$current
- versuffix=.$current
+ func_arith $current - $age
+ major=.$func_arith_result
+ versuffix=$major.$age.$revision
;;
sco)
@@ -9399,7 +9406,7 @@ func_mode_link ()
if test yes = "$build_libtool_libs"; then
if test -n "$rpath"; then
case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
+ *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
# these systems don't actually have a c library (as such)!
;;
*-*-rhapsody* | *-*-darwin1.[012])
@@ -9450,108 +9457,6 @@ func_mode_link ()
# implementing what was already the behavior.
newdeplibs=$deplibs
;;
- test_compile)
- # This code stresses the "libraries are programs" paradigm to its
- # limits. Maybe even breaks it. We compile a program, linking it
- # against the deplibs as a proxy for the library. Then we can check
- # whether they linked in statically or dynamically with ldd.
- $opt_dry_run || $RM conftest.c
- cat > conftest.c <<EOF
- int main() { return 0; }
-EOF
- $opt_dry_run || $RM conftest
- if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
- ldd_output=`ldd conftest`
- for i in $deplibs; do
- case $i in
- -l*)
- func_stripname -l '' "$i"
- name=$func_stripname_result
- if test yes = "$allow_libtool_libs_with_static_runtimes"; then
- case " $predeps $postdeps " in
- *" $i "*)
- func_append newdeplibs " $i"
- i=
- ;;
- esac
- fi
- if test -n "$i"; then
- libname=`eval "\\$ECHO \"$libname_spec\""`
- deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
- set dummy $deplib_matches; shift
- deplib_match=$1
- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
- func_append newdeplibs " $i"
- else
- droppeddeps=yes
- echo
- $ECHO "*** Warning: dynamic linker does not accept needed library $i."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
- echo "*** shared version of the library, which I believe you do not have"
- echo "*** because a test_compile did reveal that the linker did not use it for"
- echo "*** its dynamic dependency list that programs get resolved with at runtime."
- fi
- fi
- ;;
- *)
- func_append newdeplibs " $i"
- ;;
- esac
- done
- else
- # Error occurred in the first compile. Let's try to salvage
- # the situation: Compile a separate program for each library.
- for i in $deplibs; do
- case $i in
- -l*)
- func_stripname -l '' "$i"
- name=$func_stripname_result
- $opt_dry_run || $RM conftest
- if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
- ldd_output=`ldd conftest`
- if test yes = "$allow_libtool_libs_with_static_runtimes"; then
- case " $predeps $postdeps " in
- *" $i "*)
- func_append newdeplibs " $i"
- i=
- ;;
- esac
- fi
- if test -n "$i"; then
- libname=`eval "\\$ECHO \"$libname_spec\""`
- deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
- set dummy $deplib_matches; shift
- deplib_match=$1
- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
- func_append newdeplibs " $i"
- else
- droppeddeps=yes
- echo
- $ECHO "*** Warning: dynamic linker does not accept needed library $i."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
- echo "*** shared version of the library, which you do not appear to have"
- echo "*** because a test_compile did reveal that the linker did not use this one"
- echo "*** as a dynamic dependency that programs can get resolved with at runtime."
- fi
- fi
- else
- droppeddeps=yes
- echo
- $ECHO "*** Warning! Library $i is needed by this library but I was not able to"
- echo "*** make it link in! You will probably need to install it or some"
- echo "*** library that it depends on before this library will be fully"
- echo "*** functional. Installing it before continuing would be even better."
- fi
- ;;
- *)
- func_append newdeplibs " $i"
- ;;
- esac
- done
- fi
- ;;
file_magic*)
set dummy $deplibs_check_method; shift
file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
@@ -9615,17 +9520,16 @@ EOF
fi
if test -n "$a_deplib"; then
droppeddeps=yes
- echo
- $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
- echo "*** shared version of the library, which you do not appear to have"
- echo "*** because I did check the linker path looking for a file starting"
+ func_warning "Linker path does not have real file for library $a_deplib."
+ func_warning "I have the capability to make that library automatically link in when"
+ func_warning "you link to this library. But I can only do this if you have a"
+ func_warning "shared version of the library, which you do not appear to have"
+ func_warning "because I did check the linker path looking for a file starting"
if test -z "$potlib"; then
- $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
+ func_warning "with $libname but no candidates were found. (...for file magic test)"
else
- $ECHO "*** with $libname and none of the candidates passed a file format test"
- $ECHO "*** using a file magic. Last file checked: $potlib"
+ func_warning "with $libname and none of the candidates passed a file format test"
+ func_warning "using a file magic. Last file checked: $potlib"
fi
fi
;;
@@ -9669,17 +9573,16 @@ EOF
fi
if test -n "$a_deplib"; then
droppeddeps=yes
- echo
- $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
- echo "*** shared version of the library, which you do not appear to have"
- echo "*** because I did check the linker path looking for a file starting"
+ func_warning "Linker path does not have real file for library $a_deplib."
+ func_warning "I have the capability to make that library automatically link in when"
+ func_warning "you link to this library. But I can only do this if you have a"
+ func_warning "shared version of the library, which you do not appear to have"
+ func_warning "because I did check the linker path looking for a file starting"
if test -z "$potlib"; then
- $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
+ func_warning "with $libname but no candidates were found. (...for regex pattern test)"
else
- $ECHO "*** with $libname and none of the candidates passed a file format test"
- $ECHO "*** using a regex pattern. Last file checked: $potlib"
+ func_warning "with $libname and none of the candidates passed a file format test"
+ func_warning "using a regex pattern. Last file checked: $potlib"
fi
fi
;;
@@ -9703,11 +9606,11 @@ EOF
*[!\ \ ]*)
echo
if test none = "$deplibs_check_method"; then
- echo "*** Warning: inter-library dependencies are not supported in this platform."
+ func_warning "Inter-library dependencies are not supported in this platform."
else
- echo "*** Warning: inter-library dependencies are not known to be supported."
+ func_warning "Inter-library dependencies are not known to be supported."
fi
- echo "*** All declared inter-library dependencies are being dropped."
+ func_warning "All declared inter-library dependencies are being dropped."
droppeddeps=yes
;;
esac
@@ -9728,17 +9631,15 @@ EOF
if test yes = "$droppeddeps"; then
if test yes = "$module"; then
- echo
- echo "*** Warning: libtool could not satisfy all declared inter-library"
- $ECHO "*** dependencies of module $libname. Therefore, libtool will create"
- echo "*** a static module, that should work as long as the dlopening"
- echo "*** application is linked with the -dlopen flag."
+ func_warning "libtool could not satisfy all declared inter-library"
+ func_warning "dependencies of module $libname. Therefore, libtool will create"
+ func_warning "a static module, that should work as long as the dlopening"
+ func_warning "application is linked with the -dlopen flag."
if test -z "$global_symbol_pipe"; then
- echo
- echo "*** However, this would only work if libtool was able to extract symbol"
- echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
- echo "*** not find such a program. So, this module is probably useless."
- echo "*** 'nm' from GNU binutils and a full rebuild may help."
+ func_warning "However, this would only work if libtool was able to extract symbol"
+ func_warning "lists from a program, using 'nm' or equivalent, but libtool could"
+ func_warning "not find such a program. So, this module is probably useless."
+ func_warning "'nm' from GNU binutils and a full rebuild may help."
fi
if test no = "$build_old_libs"; then
oldlibs=$output_objdir/$libname.$libext
@@ -9913,7 +9814,7 @@ EOF
orig_export_symbols=
case $host_os in
- cygwin* | mingw* | cegcc*)
+ cygwin* | mingw* | windows* | cegcc*)
if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
# exporting using user supplied symfile
func_dll_def_p "$export_symbols" || {
@@ -10583,7 +10484,7 @@ EOF
esac
fi
case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+ *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-cegcc*)
testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'`
case :$dllsearchpath: in
*":$libdir:"*) ;;
@@ -10661,7 +10562,7 @@ EOF
# Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
wrappers_required=false
;;
- *cygwin* | *mingw* )
+ *cygwin* | *mingw* | *windows* )
test yes = "$build_libtool_libs" || wrappers_required=false
;;
*)
@@ -10815,7 +10716,7 @@ EOF
*) exeext= ;;
esac
case $host in
- *cygwin* | *mingw* )
+ *cygwin* | *mingw* | windows* )
func_dirname_and_basename "$output" "" "."
output_name=$func_basename_result
output_path=$func_dirname_result
@@ -11149,7 +11050,7 @@ EOF
# tests/bindir.at for full details.
tdlname=$dlname
case $host,$output,$installed,$module,$dlname in
- *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *windows*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
# If a -bindir argument was supplied, place the dll there.
if test -n "$bindir"; then
func_relative_path "$install_libdir" "$bindir"
diff --git a/build-aux/manconv.sh b/build-aux/manconv.sh
index 73e8e3b..0f5ee09 100644
--- a/build-aux/manconv.sh
+++ b/build-aux/manconv.sh
@@ -1,5 +1,6 @@
#!/bin/sh
-#
+# SPDX-License-Identifier: 0BSD
+
###############################################################################
#
# Wrapper for GNU groff to convert man pages to a few formats
@@ -17,9 +18,6 @@
#
# Author: Lasse Collin
#
-# This file has been put into the public domain.
-# You can do whatever you want with this file.
-#
###############################################################################
FORMAT=$1
diff --git a/build-aux/version.sh b/build-aux/version.sh
index f9fcda7..bef1b33 100644
--- a/build-aux/version.sh
+++ b/build-aux/version.sh
@@ -1,5 +1,6 @@
#!/bin/sh
-#
+# SPDX-License-Identifier: 0BSD
+
#############################################################################
#
# Get the version string from version.h and print it out without
@@ -9,9 +10,6 @@
#
# 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/
diff --git a/cmake/remove-ordinals.cmake b/cmake/remove-ordinals.cmake
index 96419d5..de85ddf 100644
--- a/cmake/remove-ordinals.cmake
+++ b/cmake/remove-ordinals.cmake
@@ -1,3 +1,5 @@
+# SPDX-License-Identifier: 0BSD
+
#############################################################################
#
# remove-ordinals.cmake
@@ -16,9 +18,6 @@
#
# Author: Lasse Collin
#
-# This file has been put into the public domain.
-# You can do whatever you want with this file.
-#
#############################################################################
file(READ "${INPUT_FILE}" STR)
diff --git a/cmake/tuklib_common.cmake b/cmake/tuklib_common.cmake
index 088a3cb..a7f101f 100644
--- a/cmake/tuklib_common.cmake
+++ b/cmake/tuklib_common.cmake
@@ -1,11 +1,12 @@
+# SPDX-License-Identifier: 0BSD
+
+#############################################################################
#
# 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
diff --git a/cmake/tuklib_cpucores.cmake b/cmake/tuklib_cpucores.cmake
index ea16e42..e5e9c34 100644
--- a/cmake/tuklib_cpucores.cmake
+++ b/cmake/tuklib_cpucores.cmake
@@ -1,11 +1,12 @@
+# SPDX-License-Identifier: 0BSD
+
+#############################################################################
#
# 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)
diff --git a/cmake/tuklib_integer.cmake b/cmake/tuklib_integer.cmake
index 949d2d9..7e1ed3c 100644
--- a/cmake/tuklib_integer.cmake
+++ b/cmake/tuklib_integer.cmake
@@ -1,11 +1,12 @@
+# SPDX-License-Identifier: 0BSD
+
+#############################################################################
#
# 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)
@@ -59,25 +60,64 @@ function(tuklib_integer TARGET_OR_ALL)
endif()
endif()
- # 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.
+ # Guess that unaligned access is fast on these archs:
+ # - 32/64-bit x86 / x86-64
+ # - 32/64-bit big endian PowerPC
+ # - 64-bit little endian PowerPC
+ # - Some 32-bit ARM
+ # - Some 64-bit ARM64 (AArch64)
+ # - Some 32/64-bit RISC-V
#
- # 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.
+ # CMake doesn't provide a standardized/normalized list of processor arch
+ # names. For example, x86-64 may be "x86_64" (Linux), "AMD64" (Windows),
+ # or even "EM64T" (64-bit WinXP).
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)
+ string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" PROCESSOR)
+
+ # There is no ^ in the first regex branch to allow "i" at the beginning
+ # so it can match "i386" to "i786", and "x86_64".
+ if(PROCESSOR MATCHES "[x34567]86|^x64|^amd64|^em64t")
+ set(FAST_UNALIGNED_GUESS ON)
+
+ elseif(PROCESSOR MATCHES "^powerpc|^ppc")
+ if(WORDS_BIGENDIAN OR PROCESSOR MATCHES "64")
+ set(FAST_UNALIGNED_GUESS ON)
+ endif()
+
+ elseif(PROCESSOR MATCHES "^arm|^aarch64|^riscv")
+ # On 32-bit and 64-bit ARM, GCC and Clang
+ # #define __ARM_FEATURE_UNALIGNED if
+ # unaligned access is supported.
+ #
+ # Exception: GCC at least up to 13.2.0
+ # defines it even when using -mstrict-align
+ # so in that case this autodetection goes wrong.
+ # Most of the time -mstrict-align isn't used so it
+ # shouldn't be a common problem in practice. See:
+ # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111555
+ #
+ # RISC-V C API Specification says that if
+ # __riscv_misaligned_fast is defined then
+ # unaligned access is known to be fast.
+ #
+ # MSVC is handled as a special case: We assume that
+ # 32/64-bit ARM supports fast unaligned access.
+ # If MSVC gets RISC-V support then this will assume
+ # fast unaligned access on RISC-V too.
+ check_c_source_compiles("
+ #if !defined(__ARM_FEATURE_UNALIGNED) \
+ && !defined(__riscv_misaligned_fast) \
+ && !defined(_MSC_VER)
+ compile error
+ #endif
+ int main(void) { return 0; }
+ "
+ TUKLIB_FAST_UNALIGNED_DEFINED_BY_PREPROCESSOR)
+ if(TUKLIB_FAST_UNALIGNED_DEFINED_BY_PREPROCESSOR)
+ set(FAST_UNALIGNED_GUESS ON)
endif()
endif()
+
option(TUKLIB_FAST_UNALIGNED_ACCESS
"Enable if the system supports *fast* unaligned memory access \
with 16-bit, 32-bit, and 64-bit integers."
diff --git a/cmake/tuklib_large_file_support.cmake b/cmake/tuklib_large_file_support.cmake
index 0800faa..4ed1d09 100644
--- a/cmake/tuklib_large_file_support.cmake
+++ b/cmake/tuklib_large_file_support.cmake
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: 0BSD
+
+#############################################################################
#
# tuklib_large_file_support.cmake
#
@@ -8,9 +11,7 @@
#
# 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)
diff --git a/cmake/tuklib_mbstr.cmake b/cmake/tuklib_mbstr.cmake
index e073be6..71e16cc 100644
--- a/cmake/tuklib_mbstr.cmake
+++ b/cmake/tuklib_mbstr.cmake
@@ -1,11 +1,12 @@
+# SPDX-License-Identifier: 0BSD
+
+#############################################################################
#
# 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)
diff --git a/cmake/tuklib_physmem.cmake b/cmake/tuklib_physmem.cmake
index f5ed888..e4888eb 100644
--- a/cmake/tuklib_physmem.cmake
+++ b/cmake/tuklib_physmem.cmake
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: 0BSD
+
+#############################################################################
#
# tuklib_physmem.cmake - see tuklib_physmem.m4 for description and comments
#
@@ -6,9 +9,7 @@
#
# 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)
diff --git a/cmake/tuklib_progname.cmake b/cmake/tuklib_progname.cmake
index d4ab006..a1f15bd 100644
--- a/cmake/tuklib_progname.cmake
+++ b/cmake/tuklib_progname.cmake
@@ -1,11 +1,12 @@
+# SPDX-License-Identifier: 0BSD
+
+#############################################################################
#
# 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)
diff --git a/config.h.in b/config.h.in
index 5e254c3..95f8cce 100644
--- a/config.h.in
+++ b/config.h.in
@@ -10,6 +10,10 @@
language is requested. */
#undef ENABLE_NLS
+/* Define to 1 if ARM64 CRC32 instruction is supported. See configure.ac for
+ details. */
+#undef HAVE_ARM64_CRC32
+
/* Define to 1 if bswap_16 is available. */
#undef HAVE_BSWAP_16
@@ -22,13 +26,13 @@
/* Define to 1 if you have the <byteswap.h> header file. */
#undef HAVE_BYTESWAP_H
-/* Define to 1 if Capsicum is available. */
-#undef HAVE_CAPSICUM
+/* Define to 1 if you have the 'cap_rights_limit' function. */
+#undef HAVE_CAP_RIGHTS_LIMIT
-/* Define to 1 if the system has the type `CC_SHA256_CTX'. */
+/* Define to 1 if the system has the type 'CC_SHA256_CTX'. */
#undef HAVE_CC_SHA256_CTX
-/* Define to 1 if you have the `CC_SHA256_Init' function. */
+/* Define to 1 if you have the 'CC_SHA256_Init' function. */
#undef HAVE_CC_SHA256_INIT
/* Define to 1 if you have the Mac OS X function
@@ -48,10 +52,10 @@
/* Define to 1 if sha256 integrity check is enabled. */
#undef HAVE_CHECK_SHA256
-/* Define to 1 if you have the `clock_gettime' function. */
+/* Define to 1 if you have the 'clock_gettime' function. */
#undef HAVE_CLOCK_GETTIME
-/* Define to 1 if `CLOCK_MONOTONIC' is declared in <time.h>. */
+/* Define to 1 if 'CLOCK_MONOTONIC' is declared in <time.h>. */
#undef HAVE_CLOCK_MONOTONIC
/* Define to 1 if you have the <CommonCrypto/CommonDigest.h> header file. */
@@ -91,6 +95,9 @@
/* Define to 1 if powerpc decoder is enabled. */
#undef HAVE_DECODER_POWERPC
+/* Define to 1 if riscv decoder is enabled. */
+#undef HAVE_DECODER_RISCV
+
/* Define to 1 if sparc decoder is enabled. */
#undef HAVE_DECODER_SPARC
@@ -100,6 +107,9 @@
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
+/* Define to 1 if you have the 'elf_aux_info' function. */
+#undef HAVE_ELF_AUX_INFO
+
/* Define to 1 if any of HAVE_ENCODER_foo have been defined. */
#undef HAVE_ENCODERS
@@ -127,32 +137,35 @@
/* Define to 1 if powerpc encoder is enabled. */
#undef HAVE_ENCODER_POWERPC
+/* Define to 1 if riscv encoder is enabled. */
+#undef HAVE_ENCODER_RISCV
+
/* Define to 1 if sparc encoder is enabled. */
#undef HAVE_ENCODER_SPARC
/* Define to 1 if x86 encoder is enabled. */
#undef HAVE_ENCODER_X86
-/* Define to 1 if you have the <fcntl.h> header file. */
-#undef HAVE_FCNTL_H
-
/* Define to 1 if __attribute__((__constructor__)) is supported for functions.
*/
#undef HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR
-/* Define to 1 if you have the `futimens' function. */
+/* Define to 1 if you have the 'futimens' function. */
#undef HAVE_FUTIMENS
-/* Define to 1 if you have the `futimes' function. */
+/* Define to 1 if you have the 'futimes' function. */
#undef HAVE_FUTIMES
-/* Define to 1 if you have the `futimesat' function. */
+/* Define to 1 if you have the 'futimesat' function. */
#undef HAVE_FUTIMESAT
+/* Define to 1 if you have the 'getauxval' function. */
+#undef HAVE_GETAUXVAL
+
/* Define to 1 if you have the <getopt.h> header file. */
#undef HAVE_GETOPT_H
-/* Define to 1 if you have the `getopt_long' function. */
+/* Define to 1 if you have the 'getopt_long' function. */
#undef HAVE_GETOPT_LONG
/* Define if the GNU gettext() function is already present or preinstalled. */
@@ -167,8 +180,9 @@
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
-/* Define to 1 if you have the <limits.h> header file. */
-#undef HAVE_LIMITS_H
+/* Define to 1 if Linux Landlock is supported. See configure.ac for details.
+ */
+#undef HAVE_LINUX_LANDLOCK
/* Define to 1 if .lz (lzip) decompression support is enabled. */
#undef HAVE_LZIP_DECODER
@@ -197,34 +211,34 @@
/* Define to 1 if getopt.h declares extern int optreset. */
#undef HAVE_OPTRESET
-/* Define to 1 if you have the `pledge' function. */
+/* Define to 1 if you have the 'pledge' function. */
#undef HAVE_PLEDGE
-/* Define to 1 if you have the `posix_fadvise' function. */
+/* Define to 1 if you have the 'posix_fadvise' function. */
#undef HAVE_POSIX_FADVISE
-/* Define to 1 if `program_invocation_name' is declared in <errno.h>. */
+/* Define to 1 if 'program_invocation_name' is declared in <errno.h>. */
#undef HAVE_PROGRAM_INVOCATION_NAME
-/* Define to 1 if you have the `pthread_condattr_setclock' function. */
+/* Define to 1 if you have the 'pthread_condattr_setclock' function. */
#undef HAVE_PTHREAD_CONDATTR_SETCLOCK
/* Have PTHREAD_PRIO_INHERIT. */
#undef HAVE_PTHREAD_PRIO_INHERIT
-/* Define to 1 if you have the `SHA256Init' function. */
+/* Define to 1 if you have the 'SHA256Init' function. */
#undef HAVE_SHA256INIT
-/* Define to 1 if the system has the type `SHA256_CTX'. */
+/* Define to 1 if the system has the type 'SHA256_CTX'. */
#undef HAVE_SHA256_CTX
/* Define to 1 if you have the <sha256.h> header file. */
#undef HAVE_SHA256_H
-/* Define to 1 if you have the `SHA256_Init' function. */
+/* Define to 1 if you have the 'SHA256_Init' function. */
#undef HAVE_SHA256_INIT
-/* Define to 1 if the system has the type `SHA2_CTX'. */
+/* Define to 1 if the system has the type 'SHA2_CTX'. */
#undef HAVE_SHA2_CTX
/* Define to 1 if you have the <sha2.h> header file. */
@@ -251,19 +265,19 @@
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
-/* Define to 1 if `st_atimensec' is a member of `struct stat'. */
+/* Define to 1 if 'st_atimensec' is a member of 'struct stat'. */
#undef HAVE_STRUCT_STAT_ST_ATIMENSEC
-/* Define to 1 if `st_atimespec.tv_nsec' is a member of `struct stat'. */
+/* Define to 1 if 'st_atimespec.tv_nsec' is a member of 'struct stat'. */
#undef HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC
-/* Define to 1 if `st_atim.st__tim.tv_nsec' is a member of `struct stat'. */
+/* Define to 1 if 'st_atim.st__tim.tv_nsec' is a member of 'struct stat'. */
#undef HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC
-/* Define to 1 if `st_atim.tv_nsec' is a member of `struct stat'. */
+/* Define to 1 if 'st_atim.tv_nsec' is a member of 'struct stat'. */
#undef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
-/* Define to 1 if `st_uatime' is a member of `struct stat'. */
+/* Define to 1 if 'st_uatime' is a member of 'struct stat'. */
#undef HAVE_STRUCT_STAT_ST_UATIME
/* Define to 1 to if GNU/Linux-specific details are unconditionally wanted for
@@ -273,11 +287,14 @@
must be used together with liblzma_linux.map. */
#undef HAVE_SYMBOL_VERSIONS_LINUX
+/* Define to 1 if you have the 'sysctlbyname' function. */
+#undef HAVE_SYSCTLBYNAME
+
/* Define to 1 if you have the <sys/byteorder.h> header file. */
#undef HAVE_SYS_BYTEORDER_H
-/* Define to 1 if you have the <sys/capsicum.h> header file. */
-#undef HAVE_SYS_CAPSICUM_H
+/* Define to 1 if you have the <sys/cdefs.h> header file. */
+#undef HAVE_SYS_CDEFS_H
/* Define to 1 if you have the <sys/endian.h> header file. */
#undef HAVE_SYS_ENDIAN_H
@@ -288,13 +305,10 @@
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
-/* Define to 1 if you have the <sys/time.h> header file. */
-#undef HAVE_SYS_TIME_H
-
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
-/* Define to 1 if the system has the type `uintptr_t'. */
+/* Define to 1 if the system has the type 'uintptr_t'. */
#undef HAVE_UINTPTR_T
/* Define to 1 if you have the <unistd.h> header file. */
@@ -304,10 +318,10 @@
configure.ac for details. */
#undef HAVE_USABLE_CLMUL
-/* Define to 1 if you have the `utime' function. */
+/* Define to 1 if you have the 'utime' function. */
#undef HAVE_UTIME
-/* Define to 1 if you have the `utimes' function. */
+/* Define to 1 if you have the 'utimes' function. */
#undef HAVE_UTIMES
/* Define to 1 or 0, depending whether the compiler supports simple visibility
@@ -317,13 +331,13 @@
/* Define to 1 if you have the <wchar.h> header file. */
#undef HAVE_WCHAR_H
-/* Define to 1 if you have the `wcwidth' function. */
+/* Define to 1 if you have the 'wcwidth' function. */
#undef HAVE_WCWIDTH
-/* Define to 1 if the system has the type `_Bool'. */
+/* Define to 1 if the system has the type '_Bool'. */
#undef HAVE__BOOL
-/* Define to 1 if you have the `_futime' function. */
+/* Define to 1 if you have the '_futime' function. */
#undef HAVE__FUTIME
/* Define to 1 if _mm_movemask_epi8 is available. */
@@ -379,10 +393,10 @@
your system. */
#undef PTHREAD_CREATE_JOINABLE
-/* The size of `size_t', as computed by sizeof. */
+/* The size of 'size_t', as computed by sizeof. */
#undef SIZEOF_SIZE_T
-/* Define to 1 if all of the C90 standard headers exist (not just the ones
+/* Define to 1 if all of the C89 standard headers exist (not just the ones
required in a freestanding environment). This macro is provided for
backward compatibility; new code need not use it. */
#undef STDC_HEADERS
@@ -444,7 +458,7 @@
and might result in broken code. */
#undef TUKLIB_USE_UNSAFE_TYPE_PUNNING
-/* Enable extensions on AIX 3, Interix. */
+/* Enable extensions on AIX, Interix, z/OS. */
#ifndef _ALL_SOURCE
# undef _ALL_SOURCE
#endif
@@ -505,11 +519,15 @@
#ifndef __STDC_WANT_IEC_60559_DFP_EXT__
# undef __STDC_WANT_IEC_60559_DFP_EXT__
#endif
+/* Enable extensions specified by C23 Annex F. */
+#ifndef __STDC_WANT_IEC_60559_EXT__
+# undef __STDC_WANT_IEC_60559_EXT__
+#endif
/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */
#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__
# undef __STDC_WANT_IEC_60559_FUNCS_EXT__
#endif
-/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */
+/* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */
#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__
# undef __STDC_WANT_IEC_60559_TYPES_EXT__
#endif
@@ -550,9 +568,12 @@
/* Number of bits in a file offset, on hosts where this is settable. */
#undef _FILE_OFFSET_BITS
-/* Define for large files, on AIX-style hosts. */
+/* Define to 1 on platforms where this makes off_t a 64-bit type. */
#undef _LARGE_FILES
+/* Number of bits in time_t, on hosts where this is settable. */
+#undef _TIME_BITS
+
/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
<pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
#define below would cause a syntax error. */
@@ -572,6 +593,9 @@
used. */
#undef __GETOPT_PREFIX
+/* Define to 1 on platforms where this makes time_t a 64-bit type. */
+#undef __MINGW_USE_VC2005_COMPAT
+
/* Define to the type of a signed integer type of width exactly 32 bits if
such a type exists and the standard includes do not define it. */
#undef int32_t
diff --git a/configure b/configure
index 5f8aa8c..897a25f 100755
--- a/configure
+++ b/configure
@@ -1,11 +1,11 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for XZ Utils 5.4.5.
+# Generated by GNU Autoconf 2.72 for XZ Utils 5.6.2.
#
# Report bugs to <xz@tukaani.org>.
#
#
-# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
+# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation,
# Inc.
#
#
@@ -17,7 +17,6 @@
# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
-as_nop=:
if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
then :
emulate sh
@@ -26,12 +25,13 @@ then :
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
-else $as_nop
- case `(set -o) 2>/dev/null` in #(
+else case e in #(
+ e) case `(set -o) 2>/dev/null` in #(
*posix*) :
set -o posix ;; #(
*) :
;;
+esac ;;
esac
fi
@@ -103,7 +103,7 @@ IFS=$as_save_IFS
;;
esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
+# We did not find ourselves, most probably we were run as 'sh COMMAND'
# in which case we are not to be found in the path.
if test "x$as_myself" = x; then
as_myself=$0
@@ -133,15 +133,14 @@ case $- in # ((((
esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
+# out after a failed 'exec'.
printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
exit 255
fi
# We don't want this to propagate to other subprocesses.
{ _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
- as_bourne_compatible="as_nop=:
-if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+ as_bourne_compatible="if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
then :
emulate sh
NULLCMD=:
@@ -149,12 +148,13 @@ then :
# is contrary to our usage. Disable this feature.
alias -g '\${1+\"\$@\"}'='\"\$@\"'
setopt NO_GLOB_SUBST
-else \$as_nop
- case \`(set -o) 2>/dev/null\` in #(
+else case e in #(
+ e) case \`(set -o) 2>/dev/null\` in #(
*posix*) :
set -o posix ;; #(
*) :
;;
+esac ;;
esac
fi
"
@@ -172,8 +172,9 @@ as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
if ( set x; as_fn_ret_success y && test x = \"\$1\" )
then :
-else \$as_nop
- exitcode=1; echo positional parameters were not saved.
+else case e in #(
+ e) exitcode=1; echo positional parameters were not saved. ;;
+esac
fi
test x\$exitcode = x0 || exit 1
blah=\$(echo \$(echo blah))
@@ -195,14 +196,15 @@ test \$(( 1 + 1 )) = 2 || exit 1
if (eval "$as_required") 2>/dev/null
then :
as_have_required=yes
-else $as_nop
- as_have_required=no
+else case e in #(
+ e) as_have_required=no ;;
+esac
fi
if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null
then :
-else $as_nop
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+else case e in #(
+ e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
as_found=false
for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
do
@@ -235,12 +237,13 @@ IFS=$as_save_IFS
if $as_found
then :
-else $as_nop
- if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+else case e in #(
+ e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null
then :
CONFIG_SHELL=$SHELL as_have_required=yes
-fi
+fi ;;
+esac
fi
@@ -262,7 +265,7 @@ case $- in # ((((
esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
+# out after a failed 'exec'.
printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
exit 255
fi
@@ -282,7 +285,8 @@ $0: manually run the script under such a shell if you do
$0: have one."
fi
exit 1
-fi
+fi ;;
+esac
fi
fi
SHELL=${CONFIG_SHELL-/bin/sh}
@@ -321,14 +325,6 @@ as_fn_exit ()
as_fn_set_status $1
exit $1
} # as_fn_exit
-# as_fn_nop
-# ---------
-# Do nothing but, unlike ":", preserve the value of $?.
-as_fn_nop ()
-{
- return $?
-}
-as_nop=as_fn_nop
# as_fn_mkdir_p
# -------------
@@ -397,11 +393,12 @@ then :
{
eval $1+=\$2
}'
-else $as_nop
- as_fn_append ()
+else case e in #(
+ e) as_fn_append ()
{
eval $1=\$$1\$2
- }
+ } ;;
+esac
fi # as_fn_append
# as_fn_arith ARG...
@@ -415,21 +412,14 @@ then :
{
as_val=$(( $* ))
}'
-else $as_nop
- as_fn_arith ()
+else case e in #(
+ e) as_fn_arith ()
{
as_val=`expr "$@" || test $? -eq 1`
- }
+ } ;;
+esac
fi # as_fn_arith
-# as_fn_nop
-# ---------
-# Do nothing but, unlike ":", preserve the value of $?.
-as_fn_nop ()
-{
- return $?
-}
-as_nop=as_fn_nop
# as_fn_error STATUS ERROR [LINENO LOG_FD]
# ----------------------------------------
@@ -503,6 +493,8 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
/[$]LINENO/=
' <$as_myself |
sed '
+ t clear
+ :clear
s/[$]LINENO.*/&-/
t lineno
b
@@ -551,7 +543,6 @@ esac
as_echo='printf %s\n'
as_echo_n='printf %s'
-
rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
@@ -563,9 +554,9 @@ if (echo >conf$$.file) 2>/dev/null; then
if ln -s conf$$.file conf$$ 2>/dev/null; then
as_ln_s='ln -s'
# ... but there are two gotchas:
- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -pR'.
+ # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable.
+ # In both cases, we have to default to 'cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
@@ -590,10 +581,12 @@ as_test_x='test -x'
as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated
# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+as_tr_sh="eval sed '$as_sed_sh'" # deprecated
SHELL=${CONFIG_SHELL-/bin/sh}
@@ -621,8 +614,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='XZ Utils'
PACKAGE_TARNAME='xz'
-PACKAGE_VERSION='5.4.5'
-PACKAGE_STRING='XZ Utils 5.4.5'
+PACKAGE_VERSION='5.6.2'
+PACKAGE_STRING='XZ Utils 5.6.2'
PACKAGE_BUGREPORT='xz@tukaani.org'
PACKAGE_URL='https://tukaani.org/xz/'
@@ -660,6 +653,7 @@ ac_includes_default="\
ac_header_c_list=
gt_needs=
+enable_year2038=no
ac_subst_vars='am__EXEEXT_FALSE
am__EXEEXT_TRUE
LTLIBOBJS
@@ -669,11 +663,12 @@ COND_GNULIB_FALSE
COND_GNULIB_TRUE
HAVE_VISIBILITY
CFLAG_VISIBILITY
-CAPSICUM_LIB
COND_INTERNAL_SHA256_FALSE
COND_INTERNAL_SHA256_TRUE
GETOPT_H
LIBOBJS
+localedir_c_make
+localedir_c
POSUB
LTLIBINTL
LIBINTL
@@ -714,6 +709,8 @@ ac_ct_DUMPBIN
DUMPBIN
LD
FGREP
+EGREP
+GREP
LIBTOOL
OBJDUMP
DLLTOOL
@@ -725,8 +722,6 @@ PTHREAD_LIBS
PTHREAD_CXX
PTHREAD_CC
ax_pthread_config
-EGREP
-GREP
CPP
SED
am__fastdepCCAS_FALSE
@@ -784,6 +779,8 @@ INSTALL_PROGRAM
PREFERABLY_POSIX_SHELL
POSIX_SHELL
enable_path_for_scripts
+COND_DOXYGEN_FALSE
+COND_DOXYGEN_TRUE
COND_DOC_FALSE
COND_DOC_TRUE
COND_SCRIPTS_FALSE
@@ -824,6 +821,12 @@ COND_ENCODER_SIMPLE_FALSE
COND_ENCODER_SIMPLE_TRUE
COND_FILTER_SIMPLE_FALSE
COND_FILTER_SIMPLE_TRUE
+COND_DECODER_RISCV_FALSE
+COND_DECODER_RISCV_TRUE
+COND_ENCODER_RISCV_FALSE
+COND_ENCODER_RISCV_TRUE
+COND_FILTER_RISCV_FALSE
+COND_FILTER_RISCV_TRUE
COND_DECODER_SPARC_FALSE
COND_DECODER_SPARC_TRUE
COND_ENCODER_SPARC_FALSE
@@ -952,6 +955,7 @@ enable_microlzma
enable_lzip_decoder
enable_assembler
enable_clmul_crc
+enable_arm64_crc32
enable_small
enable_threads
enable_assume_ram
@@ -962,6 +966,7 @@ enable_lzmainfo
enable_lzma_links
enable_scripts
enable_doc
+enable_doxygen
enable_sandbox
enable_path_for_scripts
enable_silent_rules
@@ -983,6 +988,7 @@ enable_largefile
enable_unaligned_access
enable_unsafe_type_punning
enable_werror
+enable_year2038
'
ac_precious_vars='build_alias
host_alias
@@ -1104,7 +1110,7 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: \`$ac_useropt'"
+ as_fn_error $? "invalid feature name: '$ac_useropt'"
ac_useropt_orig=$ac_useropt
ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
@@ -1130,7 +1136,7 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: \`$ac_useropt'"
+ as_fn_error $? "invalid feature name: '$ac_useropt'"
ac_useropt_orig=$ac_useropt
ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
@@ -1343,7 +1349,7 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: \`$ac_useropt'"
+ as_fn_error $? "invalid package name: '$ac_useropt'"
ac_useropt_orig=$ac_useropt
ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
@@ -1359,7 +1365,7 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: \`$ac_useropt'"
+ as_fn_error $? "invalid package name: '$ac_useropt'"
ac_useropt_orig=$ac_useropt
ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
@@ -1389,8 +1395,8 @@ do
| --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
x_libraries=$ac_optarg ;;
- -*) as_fn_error $? "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information"
+ -*) as_fn_error $? "unrecognized option: '$ac_option'
+Try '$0 --help' for more information"
;;
*=*)
@@ -1398,7 +1404,7 @@ Try \`$0 --help' for more information"
# Reject names that are not valid shell variable names.
case $ac_envvar in #(
'' | [0-9]* | *[!_$as_cr_alnum]* )
- as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+ as_fn_error $? "invalid variable name: '$ac_envvar'" ;;
esac
eval $ac_envvar=\$ac_optarg
export $ac_envvar ;;
@@ -1448,7 +1454,7 @@ do
as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
done
-# There might be people who depend on the old broken behavior: `$host'
+# There might be people who depend on the old broken behavior: '$host'
# used to hold the argument of --host etc.
# FIXME: To remove some day.
build=$build_alias
@@ -1516,7 +1522,7 @@ if test ! -r "$srcdir/$ac_unique_file"; then
test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work"
ac_abs_confdir=`(
cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
pwd)`
@@ -1544,7 +1550,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures XZ Utils 5.4.5 to adapt to many kinds of systems.
+'configure' configures XZ Utils 5.6.2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1558,11 +1564,11 @@ Configuration:
--help=short display options specific to this package
--help=recursive display the short help of all the included packages
-V, --version display version information and exit
- -q, --quiet, --silent do not print \`checking ...' messages
+ -q, --quiet, --silent do not print 'checking ...' messages
--cache-file=FILE cache test results in FILE [disabled]
- -C, --config-cache alias for \`--cache-file=config.cache'
+ -C, --config-cache alias for '--cache-file=config.cache'
-n, --no-create do not create output files
- --srcdir=DIR find the sources in DIR [configure dir or \`..']
+ --srcdir=DIR find the sources in DIR [configure dir or '..']
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
@@ -1570,10 +1576,10 @@ Installation directories:
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
[PREFIX]
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
+By default, 'make install' will install all the files in
+'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than '$ac_default_prefix' using '--prefix',
+for instance '--prefix=\$HOME'.
For better control, use the options below.
@@ -1615,7 +1621,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of XZ Utils 5.4.5:";;
+ short | recursive ) echo "Configuration of XZ Utils 5.6.2:";;
esac
cat <<\_ACEOF
@@ -1626,7 +1632,7 @@ Optional Features:
--enable-debug Enable debugging code.
--enable-encoders=LIST Comma-separated list of encoders to build.
Default=all. Available encoders: lzma1 lzma2 delta
- x86 powerpc ia64 arm armthumb arm64 sparc
+ x86 powerpc ia64 arm armthumb arm64 sparc riscv
--enable-decoders=LIST Comma-separated list of decoders to build.
Default=all. Available decoders are the same as
available encoders.
@@ -1649,10 +1655,12 @@ Optional Features:
exist for the architecture.
--disable-clmul-crc Do not use carryless multiplication for CRC
calculation even if support for it is detected.
+ --disable-arm64-crc32 Do not use ARM64 CRC32 instructions even if support
+ for it is detected.
--enable-small Make liblzma smaller and a little slower. This is
disabled by default to optimize for speed.
- --enable-threads=METHOD Supported METHODS are `yes', `no', `posix', `win95',
- and `vista'. The default is `yes'. Using `no'
+ --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-assume-ram=SIZE
@@ -1669,11 +1677,15 @@ Optional Features:
--disable-scripts do not install the scripts xzdiff, xzgrep, xzless,
xzmore, and their symlinks
--disable-doc do not install documentation files to docdir (man
- pages will still be installed)
- --enable-sandbox=METHOD Sandboxing METHOD can be `auto', `no', `capsicum',
- or `pledge'. The default is `auto' which enables
- sandboxing if a supported sandboxing method is
- found.
+ pages are still installed and, if --enable-doxygen
+ is used, liblzma API documentation is installed too)
+ --enable-doxygen generate HTML version of the liblzma API
+ documentation using Doxygen and install the result
+ to docdir
+ --enable-sandbox=METHOD Sandboxing METHOD can be 'auto', 'no', 'capsicum',
+ 'pledge', or 'landlock'. The default is 'auto' which
+ enables sandboxing if a supported sandboxing method
+ is found.
--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).
@@ -1700,8 +1712,10 @@ Optional Features:
--enable-unaligned-access
Enable if the system supports *fast* unaligned
memory access with 16-bit, 32-bit, and 64-bit
- integers. By default, this is enabled only on x86,
- x86_64, big endian PowerPC, and some ARM systems.
+ integers. By default, this is enabled on x86,
+ x86-64, 32/64-bit big endian PowerPC, 64-bit little
+ endian PowerPC, and some ARM, ARM64, and RISC-V
+ systems.
--enable-unsafe-type-punning
This introduces strict aliasing violations and may
result in broken code. However, this might improve
@@ -1710,6 +1724,7 @@ Optional Features:
on ARMv6 and ARMv7).
--enable-werror Enable -Werror to abort compilation on all compiler
warnings.
+ --enable-year2038 support timestamps after 2038
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -1742,7 +1757,7 @@ Some influential environment variables:
LT_SYS_LIBRARY_PATH
User-defined run-time library search path.
-Use these variables to override the choices made by `configure' or to help
+Use these variables to override the choices made by 'configure' or to help
it to find libraries and programs with nonstandard names/locations.
Report bugs to <xz@tukaani.org>.
@@ -1810,10 +1825,10 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-XZ Utils configure 5.4.5
-generated by GNU Autoconf 2.71
+XZ Utils configure 5.6.2
+generated by GNU Autoconf 2.72
-Copyright (C) 2021 Free Software Foundation, Inc.
+Copyright (C) 2023 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -1852,11 +1867,12 @@ printf "%s\n" "$ac_try_echo"; } >&5
} && test -s conftest.$ac_objext
then :
ac_retval=0
-else $as_nop
- printf "%s\n" "$as_me: failed program was:" >&5
+else case e in #(
+ e) printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
- ac_retval=1
+ ac_retval=1 ;;
+esac
fi
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
@@ -1875,8 +1891,8 @@ printf %s "checking for $2... " >&6; }
if eval test \${$3+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+ e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
#include <$2>
@@ -1884,10 +1900,12 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
eval "$3=yes"
-else $as_nop
- eval "$3=no"
+else case e in #(
+ e) eval "$3=no" ;;
+esac
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
fi
eval ac_res=\$$3
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
@@ -1927,11 +1945,12 @@ printf "%s\n" "$ac_try_echo"; } >&5
}
then :
ac_retval=0
-else $as_nop
- printf "%s\n" "$as_me: failed program was:" >&5
+else case e in #(
+ e) printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
- ac_retval=1
+ ac_retval=1 ;;
+esac
fi
# Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
# created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
@@ -1970,11 +1989,12 @@ printf "%s\n" "$ac_try_echo"; } >&5
}
then :
ac_retval=0
-else $as_nop
- printf "%s\n" "$as_me: failed program was:" >&5
+else case e in #(
+ e) printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
- ac_retval=1
+ ac_retval=1 ;;
+esac
fi
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
@@ -1992,15 +2012,15 @@ printf %s "checking for $2... " >&6; }
if eval test \${$3+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+ e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
For example, HP-UX 11i <limits.h> declares gettimeofday. */
#define $2 innocuous_$2
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $2 (); below. */
+ which can conflict with char $2 (void); below. */
#include <limits.h>
#undef $2
@@ -2011,7 +2031,7 @@ else $as_nop
#ifdef __cplusplus
extern "C"
#endif
-char $2 ();
+char $2 (void);
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
@@ -2030,11 +2050,13 @@ _ACEOF
if ac_fn_c_try_link "$LINENO"
then :
eval "$3=yes"
-else $as_nop
- eval "$3=no"
+else case e in #(
+ e) eval "$3=no" ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
+ conftest$ac_exeext conftest.$ac_ext ;;
+esac
fi
eval ac_res=\$$3
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
@@ -2043,58 +2065,6 @@ printf "%s\n" "$ac_res" >&6; }
} # ac_fn_c_check_func
-# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR
-# ------------------------------------------------------------------
-# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
-# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR.
-ac_fn_check_decl ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- as_decl_name=`echo $2|sed 's/ *(.*//'`
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
-printf %s "checking whether $as_decl_name is declared... " >&6; }
-if eval test \${$3+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
- as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
- eval ac_save_FLAGS=\$$6
- as_fn_append $6 " $5"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main (void)
-{
-#ifndef $as_decl_name
-#ifdef __cplusplus
- (void) $as_decl_use;
-#else
- (void) $as_decl_name;
-#endif
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- eval "$3=yes"
-else $as_nop
- eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- eval $6=\$ac_save_FLAGS
-
-fi
-eval ac_res=\$$3
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-printf "%s\n" "$ac_res" >&6; }
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_check_decl
-
# ac_fn_c_try_run LINENO
# ----------------------
# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that
@@ -2125,12 +2095,13 @@ printf "%s\n" "$ac_try_echo"; } >&5
test $ac_status = 0; }; }
then :
ac_retval=0
-else $as_nop
- printf "%s\n" "$as_me: program exited with status $ac_status" >&5
+else case e in #(
+ e) printf "%s\n" "$as_me: program exited with status $ac_status" >&5
printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
- ac_retval=$ac_status
+ ac_retval=$ac_status ;;
+esac
fi
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
@@ -2150,8 +2121,8 @@ printf %s "checking for $2... " >&6; }
if eval test \${$3+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- eval "$3=no"
+else case e in #(
+ e) eval "$3=no"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
@@ -2181,12 +2152,14 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
-else $as_nop
- eval "$3=yes"
+else case e in #(
+ e) eval "$3=yes" ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
fi
eval ac_res=\$$3
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
@@ -2207,8 +2180,8 @@ printf %s "checking for uint$2_t... " >&6; }
if eval test \${$3+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- eval "$3=no"
+else case e in #(
+ e) eval "$3=no"
# Order is important - never check a type that is potentially smaller
# than half of the expected target width.
for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \
@@ -2240,10 +2213,12 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
if eval test \"x\$"$3"\" = x"no"
then :
-else $as_nop
- break
+else case e in #(
+ e) break ;;
+esac
fi
- done
+ done ;;
+esac
fi
eval ac_res=\$$3
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
@@ -2264,8 +2239,8 @@ printf %s "checking for int$2_t... " >&6; }
if eval test \${$3+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- eval "$3=no"
+else case e in #(
+ e) eval "$3=no"
# Order is important - never check a type that is potentially smaller
# than half of the expected target width.
for ac_type in int$2_t 'int' 'long int' \
@@ -2306,12 +2281,13 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
-else $as_nop
- case $ac_type in #(
+else case e in #(
+ e) case $ac_type in #(
int$2_t) :
eval "$3=yes" ;; #(
*) :
eval "$3=\$ac_type" ;;
+esac ;;
esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
@@ -2320,10 +2296,12 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
if eval test \"x\$"$3"\" = x"no"
then :
-else $as_nop
- break
+else case e in #(
+ e) break ;;
+esac
fi
- done
+ done ;;
+esac
fi
eval ac_res=\$$3
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
@@ -2377,18 +2355,19 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
ac_hi=$ac_mid; break
-else $as_nop
- as_fn_arith $ac_mid + 1 && ac_lo=$as_val
+else case e in #(
+ e) as_fn_arith $ac_mid + 1 && ac_lo=$as_val
if test $ac_lo -le $ac_mid; then
ac_lo= ac_hi=
break
fi
- as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
+ as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
done
-else $as_nop
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+ e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
@@ -2423,20 +2402,23 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
ac_lo=$ac_mid; break
-else $as_nop
- as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
+else case e in #(
+ e) as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
if test $ac_mid -le $ac_hi; then
ac_lo= ac_hi=
break
fi
- as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
+ as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
done
-else $as_nop
- ac_lo= ac_hi=
+else case e in #(
+ e) ac_lo= ac_hi= ;;
+esac
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
# Binary search between lo and hi bounds.
@@ -2459,8 +2441,9 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
ac_hi=$ac_mid
-else $as_nop
- as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
+else case e in #(
+ e) as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
done
@@ -2508,8 +2491,9 @@ _ACEOF
if ac_fn_c_try_run "$LINENO"
then :
echo >>conftest.val; read $3 <conftest.val; ac_retval=0
-else $as_nop
- ac_retval=1
+else case e in #(
+ e) ac_retval=1 ;;
+esac
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
@@ -2533,8 +2517,8 @@ printf %s "checking for $2.$3... " >&6; }
if eval test \${$4+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+ e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$5
int
@@ -2550,8 +2534,8 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
eval "$4=yes"
-else $as_nop
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+ e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$5
int
@@ -2567,12 +2551,15 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
eval "$4=yes"
-else $as_nop
- eval "$4=no"
+else case e in #(
+ e) eval "$4=no" ;;
+esac
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
fi
eval ac_res=\$$4
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
@@ -2580,6 +2567,60 @@ printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_member
+
+# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR
+# ------------------------------------------------------------------
+# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
+# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR.
+ac_fn_check_decl ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ as_decl_name=`echo $2|sed 's/ *(.*//'`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+printf %s "checking whether $as_decl_name is declared... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
+ eval ac_save_FLAGS=\$$6
+ as_fn_append $6 " $5"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main (void)
+{
+#ifndef $as_decl_name
+#ifdef __cplusplus
+ (void) $as_decl_use;
+#else
+ (void) $as_decl_name;
+#endif
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ eval "$3=yes"
+else case e in #(
+ e) eval "$3=no" ;;
+esac
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ eval $6=\$ac_save_FLAGS
+ ;;
+esac
+fi
+eval ac_res=\$$3
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_check_decl
ac_configure_args_raw=
for ac_arg
do
@@ -2604,8 +2645,8 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by XZ Utils $as_me 5.4.5, which was
-generated by GNU Autoconf 2.71. Invocation command line was
+It was created by XZ Utils $as_me 5.6.2, which was
+generated by GNU Autoconf 2.72. Invocation command line was
$ $0$ac_configure_args_raw
@@ -2851,10 +2892,10 @@ esac
printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;}
sed 's/^/| /' "$ac_site_file" >&5
. "$ac_site_file" \
- || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
+See 'config.log' for more details" "$LINENO" 5; }
fi
done
@@ -2890,9 +2931,7 @@ struct stat;
/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */
struct buf { int x; };
struct buf * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
+static char *e (char **p, int i)
{
return p[i];
}
@@ -2906,6 +2945,21 @@ static char *f (char * (*g) (char **, int), char **p, ...)
return s;
}
+/* C89 style stringification. */
+#define noexpand_stringify(a) #a
+const char *stringified = noexpand_stringify(arbitrary+token=sequence);
+
+/* C89 style token pasting. Exercises some of the corner cases that
+ e.g. old MSVC gets wrong, but not very hard. */
+#define noexpand_concat(a,b) a##b
+#define expand_concat(a,b) noexpand_concat(a,b)
+extern int vA;
+extern int vbee;
+#define aye A
+#define bee B
+int *pvA = &expand_concat(v,aye);
+int *pvbee = &noexpand_concat(v,bee);
+
/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
function prototypes and stuff, but not \xHH hex character constants.
These do not provoke an error unfortunately, instead are silently treated
@@ -2933,16 +2987,19 @@ ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]);
# Test code for whether the C compiler supports C99 (global declarations)
ac_c_conftest_c99_globals='
-// Does the compiler advertise C99 conformance?
+/* Does the compiler advertise C99 conformance? */
#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L
# error "Compiler does not advertise C99 conformance"
#endif
+// See if C++-style comments work.
+
#include <stdbool.h>
extern int puts (const char *);
extern int printf (const char *, ...);
extern int dprintf (int, const char *, ...);
extern void *malloc (size_t);
+extern void free (void *);
// Check varargs macros. These examples are taken from C99 6.10.3.5.
// dprintf is used instead of fprintf to avoid needing to declare
@@ -2992,7 +3049,6 @@ typedef const char *ccp;
static inline int
test_restrict (ccp restrict text)
{
- // See if C++-style comments work.
// Iterate through items via the restricted pointer.
// Also check for declarations in for loops.
for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i)
@@ -3058,6 +3114,8 @@ ac_c_conftest_c99_main='
ia->datasize = 10;
for (int i = 0; i < ia->datasize; ++i)
ia->data[i] = i * 1.234;
+ // Work around memory leak warnings.
+ free (ia);
// Check named initializers.
struct named_init ni = {
@@ -3079,7 +3137,7 @@ ac_c_conftest_c99_main='
# Test code for whether the C compiler supports C11 (global declarations)
ac_c_conftest_c11_globals='
-// Does the compiler advertise C11 conformance?
+/* Does the compiler advertise C11 conformance? */
#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L
# error "Compiler does not advertise C11 conformance"
#endif
@@ -3195,6 +3253,7 @@ as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H"
as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H"
as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H"
gt_needs="$gt_needs "
+as_fn_append ac_header_c_list " sys/cdefs.h sys_cdefs_h HAVE_SYS_CDEFS_H"
# Auxiliary files required by this configure script.
ac_aux_files="config.rpath ltmain.sh compile missing install-sh config.guess config.sub"
@@ -3274,8 +3333,9 @@ IFS=$as_save_IFS
if $as_found
then :
-else $as_nop
- as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5
+else case e in #(
+ e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;;
+esac
fi
@@ -3303,12 +3363,12 @@ for ac_var in $ac_precious_vars; do
eval ac_new_val=\$ac_env_${ac_var}_value
case $ac_old_set,$ac_new_set in
set,)
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5
+printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;}
ac_cache_corrupted=: ;;
,set)
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5
+printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;}
ac_cache_corrupted=: ;;
,);;
*)
@@ -3317,18 +3377,18 @@ printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
ac_old_val_w=`echo x $ac_old_val`
ac_new_val_w=`echo x $ac_new_val`
if test "$ac_old_val_w" != "$ac_new_val_w"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5
+printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;}
ac_cache_corrupted=:
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5
+printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;}
eval $ac_var=\$ac_old_val
fi
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
-printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;}
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
-printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5
+printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5
+printf "%s\n" "$as_me: current value: '$ac_new_val'" >&2;}
fi;;
esac
# Pass precious variables to config.status.
@@ -3344,11 +3404,11 @@ printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;}
fi
done
if $ac_cache_corrupted; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;}
- as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file'
+ as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file'
and start over" "$LINENO" 5
fi
## -------------------- ##
@@ -3386,15 +3446,16 @@ printf %s "checking build system type... " >&6; }
if test ${ac_cv_build+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- ac_build_alias=$build_alias
+else case e in #(
+ e) ac_build_alias=$build_alias
test "x$ac_build_alias" = x &&
ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"`
test "x$ac_build_alias" = x &&
as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` ||
as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
printf "%s\n" "$ac_cv_build" >&6; }
@@ -3421,14 +3482,15 @@ printf %s "checking host system type... " >&6; }
if test ${ac_cv_host+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test "x$host_alias" = x; then
+else case e in #(
+ e) if test "x$host_alias" = x; then
ac_cv_host=$ac_cv_build
else
ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` ||
as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5
fi
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
printf "%s\n" "$ac_cv_host" >&6; }
@@ -3496,8 +3558,9 @@ printf %s "checking if debugging code should be compiled... " >&6; }
if test ${enable_debug+y}
then :
enableval=$enable_debug;
-else $as_nop
- enable_debug=no
+else case e in #(
+ e) enable_debug=no ;;
+esac
fi
if test "x$enable_debug" = xyes; then
@@ -3549,6 +3612,9 @@ enable_decoder_arm64=no
enable_filter_sparc=no
enable_encoder_sparc=no
enable_decoder_sparc=no
+enable_filter_riscv=no
+enable_encoder_riscv=no
+enable_decoder_riscv=no
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which encoders to build" >&5
printf %s "checking which encoders to build... " >&6; }
@@ -3556,8 +3622,9 @@ printf %s "checking which encoders to build... " >&6; }
if test ${enable_encoders+y}
then :
enableval=$enable_encoders;
-else $as_nop
- enable_encoders=lzma1,lzma2,delta,x86,powerpc,ia64,arm,armthumb,arm64,sparc
+else case e in #(
+ e) enable_encoders=lzma1,lzma2,delta,x86,powerpc,ia64,arm,armthumb,arm64,sparc,riscv ;;
+esac
fi
enable_encoders=`echo "$enable_encoders" | sed 's/,/ /g'`
@@ -3639,6 +3706,13 @@ printf "%s\n" "#define HAVE_ENCODER_ARM64 1" >>confdefs.h
printf "%s\n" "#define HAVE_ENCODER_SPARC 1" >>confdefs.h
;;
+ riscv)
+ enable_filter_riscv=yes
+ enable_encoder_riscv=yes
+
+printf "%s\n" "#define HAVE_ENCODER_RISCV 1" >>confdefs.h
+
+ ;;
*)
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5
printf "%s\n" "" >&6; }
@@ -3659,8 +3733,9 @@ printf %s "checking which decoders to build... " >&6; }
if test ${enable_decoders+y}
then :
enableval=$enable_decoders;
-else $as_nop
- enable_decoders=lzma1,lzma2,delta,x86,powerpc,ia64,arm,armthumb,arm64,sparc
+else case e in #(
+ e) enable_decoders=lzma1,lzma2,delta,x86,powerpc,ia64,arm,armthumb,arm64,sparc,riscv ;;
+esac
fi
enable_decoders=`echo "$enable_decoders" | sed 's/,/ /g'`
@@ -3742,6 +3817,13 @@ printf "%s\n" "#define HAVE_DECODER_ARM64 1" >>confdefs.h
printf "%s\n" "#define HAVE_DECODER_SPARC 1" >>confdefs.h
;;
+ riscv)
+ enable_filter_riscv=yes
+ enable_decoder_riscv=yes
+
+printf "%s\n" "#define HAVE_DECODER_RISCV 1" >>confdefs.h
+
+ ;;
*)
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5
printf "%s\n" "" >&6; }
@@ -4018,6 +4100,30 @@ else
COND_DECODER_SPARC_FALSE=
fi
+ if test "x$enable_filter_riscv" = xyes; then
+ COND_FILTER_RISCV_TRUE=
+ COND_FILTER_RISCV_FALSE='#'
+else
+ COND_FILTER_RISCV_TRUE='#'
+ COND_FILTER_RISCV_FALSE=
+fi
+
+ if test "x$enable_encoder_riscv" = xyes; then
+ COND_ENCODER_RISCV_TRUE=
+ COND_ENCODER_RISCV_FALSE='#'
+else
+ COND_ENCODER_RISCV_TRUE='#'
+ COND_ENCODER_RISCV_FALSE=
+fi
+
+ if test "x$enable_decoder_riscv" = xyes; then
+ COND_DECODER_RISCV_TRUE=
+ COND_DECODER_RISCV_FALSE='#'
+else
+ COND_DECODER_RISCV_TRUE='#'
+ COND_DECODER_RISCV_FALSE=
+fi
+
# The so called "simple filters" share common code.
enable_filter_simple=no
@@ -4044,6 +4150,9 @@ test "x$enable_decoder_arm64" = xyes && enable_decoder_simple=yes
test "x$enable_filter_sparc" = xyes && enable_filter_simple=yes
test "x$enable_encoder_sparc" = xyes && enable_encoder_simple=yes
test "x$enable_decoder_sparc" = xyes && enable_decoder_simple=yes
+test "x$enable_filter_riscv" = xyes && enable_filter_simple=yes
+test "x$enable_encoder_riscv" = xyes && enable_encoder_simple=yes
+test "x$enable_decoder_riscv" = xyes && enable_decoder_simple=yes
if test "x$enable_filter_simple" = xyes; then
COND_FILTER_SIMPLE_TRUE=
COND_FILTER_SIMPLE_FALSE='#'
@@ -4124,8 +4233,9 @@ printf %s "checking which match finders to build... " >&6; }
if test ${enable_match_finders+y}
then :
enableval=$enable_match_finders;
-else $as_nop
- enable_match_finders=hc3,hc4,bt2,bt3,bt4
+else case e in #(
+ e) enable_match_finders=hc3,hc4,bt2,bt3,bt4 ;;
+esac
fi
enable_match_finders=`echo "$enable_match_finders" | sed 's/,/ /g'`
@@ -4198,8 +4308,9 @@ printf %s "checking which integrity checks to build... " >&6; }
if test ${enable_checks+y}
then :
enableval=$enable_checks;
-else $as_nop
- enable_checks=crc32,crc64,sha256
+else case e in #(
+ e) enable_checks=crc32,crc64,sha256 ;;
+esac
fi
enable_checks=`echo "$enable_checks" | sed 's/,/ /g'`
@@ -4273,8 +4384,9 @@ printf %s "checking if external SHA-256 should be used... " >&6; }
if test ${enable_external_sha256+y}
then :
enableval=$enable_external_sha256;
-else $as_nop
- enable_external_sha256=no
+else case e in #(
+ e) enable_external_sha256=no ;;
+esac
fi
if test "x$enable_check_sha256" != "xyes"; then
@@ -4299,8 +4411,9 @@ printf %s "checking if MicroLZMA support should be built... " >&6; }
if test ${enable_microlzma+y}
then :
enableval=$enable_microlzma;
-else $as_nop
- enable_microlzma=yes
+else case e in #(
+ e) enable_microlzma=yes ;;
+esac
fi
case $enable_microlzma in
@@ -4311,7 +4424,7 @@ printf "%s\n" "$enable_microlzma" >&6; }
*)
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5
printf "%s\n" "" >&6; }
- as_fn_error $? "--enable-microlzma accepts only \`yes' or \`no'." "$LINENO" 5
+ as_fn_error $? "--enable-microlzma accepts only 'yes' or 'no'." "$LINENO" 5
;;
esac
if test "x$enable_microlzma" = xyes; then
@@ -4334,8 +4447,9 @@ printf %s "checking if .lz (lzip) decompression support should be built... " >&6
if test ${enable_lzip_decoder+y}
then :
enableval=$enable_lzip_decoder;
-else $as_nop
- enable_lzip_decoder=yes
+else case e in #(
+ e) enable_lzip_decoder=yes ;;
+esac
fi
if test "x$enable_decoder_lzma1" != xyes; then
@@ -4372,8 +4486,9 @@ printf %s "checking if assembler optimizations should be used... " >&6; }
if test ${enable_assembler+y}
then :
enableval=$enable_assembler;
-else $as_nop
- enable_assembler=yes
+else case e in #(
+ e) enable_assembler=yes ;;
+esac
fi
if test "x$enable_assembler" = xyes; then
@@ -4396,7 +4511,7 @@ printf "%s\n" "$enable_assembler" >&6; }
*)
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5
printf "%s\n" "" >&6; }
- as_fn_error $? "--enable-assembler accepts only \`yes', \`no', or \`x86' (32-bit)." "$LINENO" 5
+ as_fn_error $? "--enable-assembler accepts only 'yes', 'no', or 'x86' (32-bit)." "$LINENO" 5
;;
esac
if test "x$enable_assembler" = xx86; then
@@ -4417,8 +4532,24 @@ fi
if test ${enable_clmul_crc+y}
then :
enableval=$enable_clmul_crc;
-else $as_nop
- enable_clmul_crc=yes
+else case e in #(
+ e) enable_clmul_crc=yes ;;
+esac
+fi
+
+
+
+############################
+# ARM64 CRC32 Instructions #
+############################
+
+# Check whether --enable-arm64-crc32 was given.
+if test ${enable_arm64_crc32+y}
+then :
+ enableval=$enable_arm64_crc32;
+else case e in #(
+ e) enable_arm64_crc32=yes ;;
+esac
fi
@@ -4433,8 +4564,9 @@ printf %s "checking if small size is preferred over speed... " >&6; }
if test ${enable_small+y}
then :
enableval=$enable_small;
-else $as_nop
- enable_small=no
+else case e in #(
+ e) enable_small=no ;;
+esac
fi
if test "x$enable_small" = xyes; then
@@ -4444,7 +4576,7 @@ printf "%s\n" "#define HAVE_SMALL 1" >>confdefs.h
elif test "x$enable_small" != xno; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5
printf "%s\n" "" >&6; }
- as_fn_error $? "--enable-small accepts only \`yes' or \`no'" "$LINENO" 5
+ as_fn_error $? "--enable-small accepts only 'yes' or 'no'" "$LINENO" 5
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_small" >&5
printf "%s\n" "$enable_small" >&6; }
@@ -4468,8 +4600,9 @@ printf %s "checking if threading support is wanted... " >&6; }
if test ${enable_threads+y}
then :
enableval=$enable_threads;
-else $as_nop
- enable_threads=yes
+else case e in #(
+ e) enable_threads=yes ;;
+esac
fi
@@ -4499,7 +4632,7 @@ printf "%s\n" "no" >&6; }
*)
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5
printf "%s\n" "" >&6; }
- as_fn_error $? "--enable-threads only accepts \`yes', \`no', \`posix', \`win95', or \`vista'" "$LINENO" 5
+ as_fn_error $? "--enable-threads only accepts 'yes', 'no', 'posix', 'win95', or 'vista'" "$LINENO" 5
;;
esac
@@ -4520,8 +4653,9 @@ printf %s "checking how much RAM to assume if the real amount is unknown... " >&
if test ${enable_assume_ram+y}
then :
enableval=$enable_assume_ram;
-else $as_nop
- enable_assume_ram=128
+else case e in #(
+ e) enable_assume_ram=128 ;;
+esac
fi
assume_ram_check=`echo "$enable_assume_ram" | tr -d 0123456789`
@@ -4545,8 +4679,9 @@ printf "%s\n" "#define ASSUME_RAM $enable_assume_ram" >>confdefs.h
if test ${enable_xz+y}
then :
enableval=$enable_xz;
-else $as_nop
- enable_xz=yes
+else case e in #(
+ e) enable_xz=yes ;;
+esac
fi
if test x$enable_xz != xno; then
@@ -4562,8 +4697,9 @@ fi
if test ${enable_xzdec+y}
then :
enableval=$enable_xzdec;
-else $as_nop
- enable_xzdec=yes
+else case e in #(
+ e) enable_xzdec=yes ;;
+esac
fi
test "x$enable_decoders" = xno && enable_xzdec=no
@@ -4580,8 +4716,9 @@ fi
if test ${enable_lzmadec+y}
then :
enableval=$enable_lzmadec;
-else $as_nop
- enable_lzmadec=yes
+else case e in #(
+ e) enable_lzmadec=yes ;;
+esac
fi
test "x$enable_decoder_lzma1" = xno && enable_lzmadec=no
@@ -4598,8 +4735,9 @@ fi
if test ${enable_lzmainfo+y}
then :
enableval=$enable_lzmainfo;
-else $as_nop
- enable_lzmainfo=yes
+else case e in #(
+ e) enable_lzmainfo=yes ;;
+esac
fi
test "x$enable_decoder_lzma1" = xno && enable_lzmainfo=no
@@ -4616,8 +4754,9 @@ fi
if test ${enable_lzma_links+y}
then :
enableval=$enable_lzma_links;
-else $as_nop
- enable_lzma_links=yes
+else case e in #(
+ e) enable_lzma_links=yes ;;
+esac
fi
if test x$enable_lzma_links != xno; then
@@ -4633,8 +4772,9 @@ fi
if test ${enable_scripts+y}
then :
enableval=$enable_scripts;
-else $as_nop
- enable_scripts=yes
+else case e in #(
+ e) enable_scripts=yes ;;
+esac
fi
if test x$enable_scripts != xno; then
@@ -4650,8 +4790,9 @@ fi
if test ${enable_doc+y}
then :
enableval=$enable_doc;
-else $as_nop
- enable_doc=yes
+else case e in #(
+ e) enable_doc=yes ;;
+esac
fi
if test x$enable_doc != xno; then
@@ -4663,6 +4804,24 @@ else
fi
+# Check whether --enable-doxygen was given.
+if test ${enable_doxygen+y}
+then :
+ enableval=$enable_doxygen;
+else case e in #(
+ e) enable_doxygen=no ;;
+esac
+fi
+
+ if test x$enable_doxygen != xno; then
+ COND_DOXYGEN_TRUE=
+ COND_DOXYGEN_FALSE='#'
+else
+ COND_DOXYGEN_TRUE='#'
+ COND_DOXYGEN_FALSE=
+fi
+
+
##############
# Sandboxing #
@@ -4674,23 +4833,29 @@ printf %s "checking if sandboxing should be used... " >&6; }
if test ${enable_sandbox+y}
then :
enableval=$enable_sandbox;
-else $as_nop
- enable_sandbox=auto
+else case e in #(
+ e) enable_sandbox=auto ;;
+esac
fi
-case $enable_sandbox in
- auto)
+case $enable_xzdec-$enable_xz-$enable_sandbox in
+ no-no-*)
+ enable_sandbox=no
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, --disable-xz and --disable-xzdec was used" >&5
+printf "%s\n" "no, --disable-xz and --disable-xzdec was used" >&6; }
+ ;;
+ *-*-auto)
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: maybe (autodetect)" >&5
printf "%s\n" "maybe (autodetect)" >&6; }
;;
- no | capsicum | pledge)
+ *-*-no | *-*-capsicum | *-*-pledge | *-*-landlock)
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_sandbox" >&5
printf "%s\n" "$enable_sandbox" >&6; }
;;
*)
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5
printf "%s\n" "" >&6; }
- as_fn_error $? "--enable-sandbox only accepts \`auto', \`no', \`capsicum', or \`pledge'." "$LINENO" 5
+ as_fn_error $? "--enable-sandbox only accepts 'auto', 'no', 'capsicum', 'pledge', or 'landlock'." "$LINENO" 5
;;
esac
@@ -4705,13 +4870,14 @@ esac
if test ${enable_path_for_scripts+y}
then :
enableval=$enable_path_for_scripts;
-else $as_nop
-
+else case e in #(
+ e)
case $host_os in
solaris*) enable_path_for_scripts=/usr/xpg4/bin ;;
*) enable_path_for_scripts= ;;
esac
-
+ ;;
+esac
fi
if test -n "$enable_path_for_scripts" && test "x$enable_path_for_scripts" != xno ; then
@@ -4743,8 +4909,8 @@ printf %s "checking for a shell that conforms to POSIX... " >&6; }
if test ${gl_cv_posix_shell+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- gl_test_posix_shell_script='
+else case e in #(
+ e) gl_test_posix_shell_script='
func_return () {
(exit $1)
}
@@ -4778,7 +4944,8 @@ else $as_nop
"$gl_cv_posix_shell" -c "$gl_test_posix_shell_script" 2>/dev/null \
&& break;;
esac
- done
+ done ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_posix_shell" >&5
printf "%s\n" "$gl_cv_posix_shell" >&6; }
@@ -4828,8 +4995,8 @@ if test -z "$INSTALL"; then
if test ${ac_cv_path_install+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+else case e in #(
+ e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
@@ -4883,7 +5050,8 @@ esac
IFS=$as_save_IFS
rm -rf conftest.one conftest.two conftest.dir
-
+ ;;
+esac
fi
if test ${ac_cv_path_install+y}; then
INSTALL=$ac_cv_path_install
@@ -4979,7 +5147,7 @@ test "$program_prefix" != NONE &&
test "$program_suffix" != NONE &&
program_transform_name="s&\$&$program_suffix&;$program_transform_name"
# Double any \ or $.
-# By default was `s,x,x', remove it if useless.
+# By default was 's,x,x', remove it if useless.
ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"`
@@ -5022,8 +5190,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_STRIP+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$STRIP"; then
+else case e in #(
+ e) if test -n "$STRIP"; then
ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -5045,7 +5213,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
STRIP=$ac_cv_prog_STRIP
if test -n "$STRIP"; then
@@ -5067,8 +5236,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_STRIP+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$ac_ct_STRIP"; then
+else case e in #(
+ e) if test -n "$ac_ct_STRIP"; then
ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -5090,7 +5259,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
if test -n "$ac_ct_STRIP"; then
@@ -5126,8 +5296,8 @@ if test -z "$MKDIR_P"; then
if test ${ac_cv_path_mkdir+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+else case e in #(
+ e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
do
IFS=$as_save_IFS
@@ -5141,7 +5311,7 @@ do
as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue
case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #(
'mkdir ('*'coreutils) '* | \
- 'BusyBox '* | \
+ *'BusyBox '* | \
'mkdir (fileutils) '4.1*)
ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext
break 3;;
@@ -5150,18 +5320,17 @@ do
done
done
IFS=$as_save_IFS
-
+ ;;
+esac
fi
test -d ./--version && rmdir ./--version
if test ${ac_cv_path_mkdir+y}; then
MKDIR_P="$ac_cv_path_mkdir -p"
else
- # As a last resort, use the slow shell script. Don't cache a
- # value for MKDIR_P within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the value is a relative name.
- MKDIR_P="$ac_install_sh -d"
+ # As a last resort, use plain mkdir -p,
+ # in the hope it doesn't have the bugs of ancient mkdir.
+ MKDIR_P='mkdir -p'
fi
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
@@ -5176,8 +5345,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_AWK+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$AWK"; then
+else case e in #(
+ e) if test -n "$AWK"; then
ac_cv_prog_AWK="$AWK" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -5199,7 +5368,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
AWK=$ac_cv_prog_AWK
if test -n "$AWK"; then
@@ -5221,8 +5391,8 @@ ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
if eval test \${ac_cv_prog_make_${ac_make}_set+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- cat >conftest.make <<\_ACEOF
+else case e in #(
+ e) cat >conftest.make <<\_ACEOF
SHELL = /bin/sh
all:
@echo '@@@%%%=$(MAKE)=@@@%%%'
@@ -5234,7 +5404,8 @@ case `${MAKE-make} -f conftest.make 2>/dev/null` in
*)
eval ac_cv_prog_make_${ac_make}_set=no;;
esac
-rm -f conftest.make
+rm -f conftest.make ;;
+esac
fi
if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
@@ -5272,8 +5443,8 @@ printf %s "checking whether $am_make supports nested variables... " >&6; }
if test ${am_cv_make_support_nested_variables+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if printf "%s\n" 'TRUE=$(BAR$(V))
+else case e in #(
+ e) if printf "%s\n" 'TRUE=$(BAR$(V))
BAR0=false
BAR1=true
V=1
@@ -5283,7 +5454,8 @@ am__doit:
am_cv_make_support_nested_variables=yes
else
am_cv_make_support_nested_variables=no
-fi
+fi ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
printf "%s\n" "$am_cv_make_support_nested_variables" >&6; }
@@ -5318,7 +5490,7 @@ fi
# Define the identity of the package.
PACKAGE='xz'
- VERSION='5.4.5'
+ VERSION='5.6.2'
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -5519,8 +5691,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_CC+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$CC"; then
+else case e in #(
+ e) if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -5542,7 +5714,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
@@ -5564,8 +5737,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_CC+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$ac_ct_CC"; then
+else case e in #(
+ e) if test -n "$ac_ct_CC"; then
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -5587,7 +5760,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
@@ -5622,8 +5796,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_CC+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$CC"; then
+else case e in #(
+ e) if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -5645,7 +5819,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
@@ -5667,8 +5842,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_CC+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$CC"; then
+else case e in #(
+ e) if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
ac_prog_rejected=no
@@ -5707,7 +5882,8 @@ if test $ac_prog_rejected = yes; then
ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@"
fi
fi
-fi
+fi ;;
+esac
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
@@ -5731,8 +5907,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_CC+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$CC"; then
+else case e in #(
+ e) if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -5754,7 +5930,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
@@ -5780,8 +5957,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_CC+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$ac_ct_CC"; then
+else case e in #(
+ e) if test -n "$ac_ct_CC"; then
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -5803,7 +5980,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
@@ -5841,8 +6019,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_CC+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$CC"; then
+else case e in #(
+ e) if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -5864,7 +6042,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
@@ -5886,8 +6065,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_CC+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$ac_ct_CC"; then
+else case e in #(
+ e) if test -n "$ac_ct_CC"; then
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -5909,7 +6088,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
@@ -5938,10 +6118,10 @@ fi
fi
-test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
+See 'config.log' for more details" "$LINENO" 5; }
# Provide some information about the compiler.
printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
@@ -6013,8 +6193,8 @@ printf "%s\n" "$ac_try_echo"; } >&5
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
then :
- # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+ # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'.
+# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no'
# in a Makefile. We should not override ac_cv_exeext if it was cached,
# so that the user can short-circuit this test for compilers unknown to
# Autoconf.
@@ -6034,7 +6214,7 @@ do
ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
fi
# We set ac_cv_exeext here because the later test for it is not
- # safe: cross compilers may not add the suffix if given an `-o'
+ # safe: cross compilers may not add the suffix if given an '-o'
# argument, so we may need to know it at that point already.
# Even if this section looks crufty: it has the advantage of
# actually working.
@@ -6045,8 +6225,9 @@ do
done
test "$ac_cv_exeext" = no && ac_cv_exeext=
-else $as_nop
- ac_file=''
+else case e in #(
+ e) ac_file='' ;;
+esac
fi
if test -z "$ac_file"
then :
@@ -6055,13 +6236,14 @@ printf "%s\n" "no" >&6; }
printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else $as_nop
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
+See 'config.log' for more details" "$LINENO" 5; }
+else case e in #(
+ e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; } ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
printf %s "checking for C compiler default output file name... " >&6; }
@@ -6085,10 +6267,10 @@ printf "%s\n" "$ac_try_echo"; } >&5
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
then :
- # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
+ # If both 'conftest.exe' and 'conftest' are 'present' (well, observable)
+# catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will
+# work properly (i.e., refer to 'conftest.exe'), while it won't with
+# 'rm'.
for ac_file in conftest.exe conftest conftest.*; do
test -f "$ac_file" || continue
case $ac_file in
@@ -6098,11 +6280,12 @@ for ac_file in conftest.exe conftest conftest.*; do
* ) break;;
esac
done
-else $as_nop
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+else case e in #(
+ e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
+See 'config.log' for more details" "$LINENO" 5; } ;;
+esac
fi
rm -f conftest conftest$ac_cv_exeext
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
@@ -6118,6 +6301,8 @@ int
main (void)
{
FILE *f = fopen ("conftest.out", "w");
+ if (!f)
+ return 1;
return ferror (f) || fclose (f) != 0;
;
@@ -6157,26 +6342,27 @@ printf "%s\n" "$ac_try_echo"; } >&5
if test "$cross_compiling" = maybe; then
cross_compiling=yes
else
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
as_fn_error 77 "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
+If you meant to cross compile, use '--host'.
+See 'config.log' for more details" "$LINENO" 5; }
fi
fi
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
printf "%s\n" "$cross_compiling" >&6; }
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+rm -f conftest.$ac_ext conftest$ac_cv_exeext \
+ conftest.o conftest.obj conftest.out
ac_clean_files=$ac_clean_files_save
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
printf %s "checking for suffix of object files... " >&6; }
if test ${ac_cv_objext+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+ e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
@@ -6208,16 +6394,18 @@ then :
break;;
esac
done
-else $as_nop
- printf "%s\n" "$as_me: failed program was:" >&5
+else case e in #(
+ e) printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
+See 'config.log' for more details" "$LINENO" 5; } ;;
+esac
fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
+rm -f conftest.$ac_cv_objext conftest.$ac_ext ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
printf "%s\n" "$ac_cv_objext" >&6; }
@@ -6228,8 +6416,8 @@ printf %s "checking whether the compiler supports GNU C... " >&6; }
if test ${ac_cv_c_compiler_gnu+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+ e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
@@ -6246,12 +6434,14 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
ac_compiler_gnu=yes
-else $as_nop
- ac_compiler_gnu=no
+else case e in #(
+ e) ac_compiler_gnu=no ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; }
@@ -6269,8 +6459,8 @@ printf %s "checking whether $CC accepts -g... " >&6; }
if test ${ac_cv_prog_cc_g+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- ac_save_c_werror_flag=$ac_c_werror_flag
+else case e in #(
+ e) ac_save_c_werror_flag=$ac_c_werror_flag
ac_c_werror_flag=yes
ac_cv_prog_cc_g=no
CFLAGS="-g"
@@ -6288,8 +6478,8 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
ac_cv_prog_cc_g=yes
-else $as_nop
- CFLAGS=""
+else case e in #(
+ e) CFLAGS=""
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -6304,8 +6494,8 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
-else $as_nop
- ac_c_werror_flag=$ac_save_c_werror_flag
+else case e in #(
+ e) ac_c_werror_flag=$ac_save_c_werror_flag
CFLAGS="-g"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -6322,12 +6512,15 @@ if ac_fn_c_try_compile "$LINENO"
then :
ac_cv_prog_cc_g=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- ac_c_werror_flag=$ac_save_c_werror_flag
+ ac_c_werror_flag=$ac_save_c_werror_flag ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
printf "%s\n" "$ac_cv_prog_cc_g" >&6; }
@@ -6354,8 +6547,8 @@ printf %s "checking for $CC option to enable C11 features... " >&6; }
if test ${ac_cv_prog_cc_c11+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- ac_cv_prog_cc_c11=no
+else case e in #(
+ e) ac_cv_prog_cc_c11=no
ac_save_CC=$CC
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -6372,25 +6565,28 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam
test "x$ac_cv_prog_cc_c11" != "xno" && break
done
rm -f conftest.$ac_ext
-CC=$ac_save_CC
+CC=$ac_save_CC ;;
+esac
fi
if test "x$ac_cv_prog_cc_c11" = xno
then :
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
printf "%s\n" "unsupported" >&6; }
-else $as_nop
- if test "x$ac_cv_prog_cc_c11" = x
+else case e in #(
+ e) if test "x$ac_cv_prog_cc_c11" = x
then :
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
printf "%s\n" "none needed" >&6; }
-else $as_nop
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5
+else case e in #(
+ e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5
printf "%s\n" "$ac_cv_prog_cc_c11" >&6; }
- CC="$CC $ac_cv_prog_cc_c11"
+ CC="$CC $ac_cv_prog_cc_c11" ;;
+esac
fi
ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11
- ac_prog_cc_stdc=c11
+ ac_prog_cc_stdc=c11 ;;
+esac
fi
fi
if test x$ac_prog_cc_stdc = xno
@@ -6400,8 +6596,8 @@ printf %s "checking for $CC option to enable C99 features... " >&6; }
if test ${ac_cv_prog_cc_c99+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- ac_cv_prog_cc_c99=no
+else case e in #(
+ e) ac_cv_prog_cc_c99=no
ac_save_CC=$CC
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -6418,25 +6614,28 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam
test "x$ac_cv_prog_cc_c99" != "xno" && break
done
rm -f conftest.$ac_ext
-CC=$ac_save_CC
+CC=$ac_save_CC ;;
+esac
fi
if test "x$ac_cv_prog_cc_c99" = xno
then :
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
printf "%s\n" "unsupported" >&6; }
-else $as_nop
- if test "x$ac_cv_prog_cc_c99" = x
+else case e in #(
+ e) if test "x$ac_cv_prog_cc_c99" = x
then :
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
printf "%s\n" "none needed" >&6; }
-else $as_nop
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
+else case e in #(
+ e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
printf "%s\n" "$ac_cv_prog_cc_c99" >&6; }
- CC="$CC $ac_cv_prog_cc_c99"
+ CC="$CC $ac_cv_prog_cc_c99" ;;
+esac
fi
ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
- ac_prog_cc_stdc=c99
+ ac_prog_cc_stdc=c99 ;;
+esac
fi
fi
if test x$ac_prog_cc_stdc = xno
@@ -6446,8 +6645,8 @@ printf %s "checking for $CC option to enable C89 features... " >&6; }
if test ${ac_cv_prog_cc_c89+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- ac_cv_prog_cc_c89=no
+else case e in #(
+ e) ac_cv_prog_cc_c89=no
ac_save_CC=$CC
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -6464,25 +6663,28 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam
test "x$ac_cv_prog_cc_c89" != "xno" && break
done
rm -f conftest.$ac_ext
-CC=$ac_save_CC
+CC=$ac_save_CC ;;
+esac
fi
if test "x$ac_cv_prog_cc_c89" = xno
then :
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
printf "%s\n" "unsupported" >&6; }
-else $as_nop
- if test "x$ac_cv_prog_cc_c89" = x
+else case e in #(
+ e) if test "x$ac_cv_prog_cc_c89" = x
then :
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
printf "%s\n" "none needed" >&6; }
-else $as_nop
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+else case e in #(
+ e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
printf "%s\n" "$ac_cv_prog_cc_c89" >&6; }
- CC="$CC $ac_cv_prog_cc_c89"
+ CC="$CC $ac_cv_prog_cc_c89" ;;
+esac
fi
ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
- ac_prog_cc_stdc=c89
+ ac_prog_cc_stdc=c89 ;;
+esac
fi
fi
@@ -6503,8 +6705,8 @@ printf %s "checking whether $CC understands -c and -o together... " >&6; }
if test ${am_cv_prog_cc_c_o+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+ e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
@@ -6534,7 +6736,8 @@ _ACEOF
fi
done
rm -f core conftest*
- unset am_i
+ unset am_i ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
printf "%s\n" "$am_cv_prog_cc_c_o" >&6; }
@@ -6560,8 +6763,8 @@ printf %s "checking dependency style of $depcc... " >&6; }
if test ${am_cv_CC_dependencies_compiler_type+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+else case e in #(
+ e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
# We make a subdir and do the tests there. Otherwise we can end up
# making bogus files that we don't know about and never remove. For
# instance it was reported that on HP-UX the gcc test will end up
@@ -6665,7 +6868,8 @@ else $as_nop
else
am_cv_CC_dependencies_compiler_type=none
fi
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; }
@@ -6702,8 +6906,8 @@ printf %s "checking dependency style of $depcc... " >&6; }
if test ${am_cv_CCAS_dependencies_compiler_type+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+else case e in #(
+ e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
# We make a subdir and do the tests there. Otherwise we can end up
# making bogus files that we don't know about and never remove. For
# instance it was reported that on HP-UX the gcc test will end up
@@ -6805,7 +7009,8 @@ else $as_nop
else
am_cv_CCAS_dependencies_compiler_type=none
fi
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5
printf "%s\n" "$am_cv_CCAS_dependencies_compiler_type" >&6; }
@@ -6863,8 +7068,8 @@ printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; }
if test ${ac_cv_safe_to_define___extensions__+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+ e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
# define __EXTENSIONS__ 1
@@ -6880,10 +7085,12 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
ac_cv_safe_to_define___extensions__=yes
-else $as_nop
- ac_cv_safe_to_define___extensions__=no
+else case e in #(
+ e) ac_cv_safe_to_define___extensions__=no ;;
+esac
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; }
@@ -6893,8 +7100,8 @@ printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; }
if test ${ac_cv_should_define__xopen_source+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- ac_cv_should_define__xopen_source=no
+else case e in #(
+ e) ac_cv_should_define__xopen_source=no
if test $ac_cv_header_wchar_h = yes
then :
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6913,8 +7120,8 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
-else $as_nop
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+ e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#define _XOPEN_SOURCE 500
@@ -6932,10 +7139,12 @@ if ac_fn_c_try_compile "$LINENO"
then :
ac_cv_should_define__xopen_source=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
+fi ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5
printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; }
@@ -6960,6 +7169,8 @@ printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; }
printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_EXT__ 1" >>confdefs.h
+
printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h
printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h
@@ -6979,8 +7190,9 @@ then :
printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h
-else $as_nop
- MINIX=
+else case e in #(
+ e) MINIX= ;;
+esac
fi
if test $ac_cv_safe_to_define___extensions__ = yes
then :
@@ -6999,8 +7211,8 @@ printf %s "checking for a sed that does not truncate output... " >&6; }
if test ${ac_cv_path_SED+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+else case e in #(
+ e) ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
for ac_i in 1 2 3 4 5 6 7; do
ac_script="$ac_script$as_nl$ac_script"
done
@@ -7025,9 +7237,10 @@ do
as_fn_executable_p "$ac_path_SED" || continue
# Check for GNU ac_path_SED and select it if it is found.
# Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
+case `"$ac_path_SED" --version 2>&1` in #(
*GNU*)
ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+#(
*)
ac_count=0
printf %s 0123456789 >"conftest.in"
@@ -7062,7 +7275,8 @@ IFS=$as_save_IFS
else
ac_cv_path_SED=$SED
fi
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
printf "%s\n" "$ac_cv_path_SED" >&6; }
@@ -7084,8 +7298,8 @@ if test -z "$CPP"; then
if test ${ac_cv_prog_CPP+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- # Double quotes because $CC needs to be expanded
+else case e in #(
+ e) # Double quotes because $CC needs to be expanded
for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp
do
ac_preproc_ok=false
@@ -7103,9 +7317,10 @@ _ACEOF
if ac_fn_c_try_cpp "$LINENO"
then :
-else $as_nop
- # Broken: fails on valid input.
-continue
+else case e in #(
+ e) # Broken: fails on valid input.
+continue ;;
+esac
fi
rm -f conftest.err conftest.i conftest.$ac_ext
@@ -7119,15 +7334,16 @@ if ac_fn_c_try_cpp "$LINENO"
then :
# Broken: success on invalid input.
continue
-else $as_nop
- # Passes both tests.
+else case e in #(
+ e) # Passes both tests.
ac_preproc_ok=:
-break
+break ;;
+esac
fi
rm -f conftest.err conftest.i conftest.$ac_ext
done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped.
rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok
then :
@@ -7136,7 +7352,8 @@ fi
done
ac_cv_prog_CPP=$CPP
-
+ ;;
+esac
fi
CPP=$ac_cv_prog_CPP
else
@@ -7159,9 +7376,10 @@ _ACEOF
if ac_fn_c_try_cpp "$LINENO"
then :
-else $as_nop
- # Broken: fails on valid input.
-continue
+else case e in #(
+ e) # Broken: fails on valid input.
+continue ;;
+esac
fi
rm -f conftest.err conftest.i conftest.$ac_ext
@@ -7175,24 +7393,26 @@ if ac_fn_c_try_cpp "$LINENO"
then :
# Broken: success on invalid input.
continue
-else $as_nop
- # Passes both tests.
+else case e in #(
+ e) # Passes both tests.
ac_preproc_ok=:
-break
+break ;;
+esac
fi
rm -f conftest.err conftest.i conftest.$ac_ext
done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped.
rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok
then :
-else $as_nop
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+else case e in #(
+ e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
+See 'config.log' for more details" "$LINENO" 5; } ;;
+esac
fi
ac_ext=c
@@ -7202,14 +7422,14 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-printf %s "checking for grep that handles long lines and -e... " >&6; }
-if test ${ac_cv_path_GREP+y}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5
+printf %s "checking for egrep -e... " >&6; }
+if test ${ac_cv_path_EGREP_TRADITIONAL+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -z "$GREP"; then
- ac_path_GREP_found=false
+else case e in #(
+ e) if test -z "$EGREP_TRADITIONAL"; then
+ ac_path_EGREP_TRADITIONAL_found=false
# Loop through the user's path and test for each of PROGNAME-LIST
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -7223,13 +7443,14 @@ do
for ac_prog in grep ggrep
do
for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
- # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
+ ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+ # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
*GNU*)
- ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+ ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
*)
ac_count=0
printf %s 0123456789 >"conftest.in"
@@ -7238,14 +7459,14 @@ case `"$ac_path_GREP" --version 2>&1` in
cat "conftest.in" "conftest.in" >"conftest.tmp"
mv "conftest.tmp" "conftest.in"
cp "conftest.in" "conftest.nl"
- printf "%s\n" 'GREP' >> "conftest.nl"
- "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+ "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
# Best one so far, save it but keep looking for a better one
- ac_cv_path_GREP="$ac_path_GREP"
- ac_path_GREP_max=$ac_count
+ ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+ ac_path_EGREP_TRADITIONAL_max=$ac_count
fi
# 10*(2^10) chars as input seems more than enough
test $ac_count -gt 10 && break
@@ -7253,35 +7474,24 @@ case `"$ac_path_GREP" --version 2>&1` in
rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
esac
- $ac_path_GREP_found && break 3
+ $ac_path_EGREP_TRADITIONAL_found && break 3
done
done
done
IFS=$as_save_IFS
- if test -z "$ac_cv_path_GREP"; then
- as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
+ :
fi
else
- ac_cv_path_GREP=$GREP
+ ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
fi
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-printf "%s\n" "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-printf %s "checking for egrep... " >&6; }
-if test ${ac_cv_path_EGREP+y}
+ if test "$ac_cv_path_EGREP_TRADITIONAL"
then :
- printf %s "(cached) " >&6
-else $as_nop
- if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
- then ac_cv_path_EGREP="$GREP -E"
- else
- if test -z "$EGREP"; then
- ac_path_EGREP_found=false
+ ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E"
+else case e in #(
+ e) if test -z "$EGREP_TRADITIONAL"; then
+ ac_path_EGREP_TRADITIONAL_found=false
# Loop through the user's path and test for each of PROGNAME-LIST
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -7295,13 +7505,14 @@ do
for ac_prog in egrep
do
for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
- # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
+ ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+ # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
*GNU*)
- ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+ ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
*)
ac_count=0
printf %s 0123456789 >"conftest.in"
@@ -7310,14 +7521,14 @@ case `"$ac_path_EGREP" --version 2>&1` in
cat "conftest.in" "conftest.in" >"conftest.tmp"
mv "conftest.tmp" "conftest.in"
cp "conftest.in" "conftest.nl"
- printf "%s\n" 'EGREP' >> "conftest.nl"
- "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+ "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
# Best one so far, save it but keep looking for a better one
- ac_cv_path_EGREP="$ac_path_EGREP"
- ac_path_EGREP_max=$ac_count
+ ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+ ac_path_EGREP_TRADITIONAL_max=$ac_count
fi
# 10*(2^10) chars as input seems more than enough
test $ac_count -gt 10 && break
@@ -7325,104 +7536,25 @@ case `"$ac_path_EGREP" --version 2>&1` in
rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
esac
- $ac_path_EGREP_found && break 3
+ $ac_path_EGREP_TRADITIONAL_found && break 3
done
done
done
IFS=$as_save_IFS
- if test -z "$ac_cv_path_EGREP"; then
+ if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
fi
else
- ac_cv_path_EGREP=$EGREP
+ ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
fi
-
- fi
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-printf "%s\n" "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5
-printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; }
-if test ${ac_cv_c_undeclared_builtin_options+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
- ac_save_CFLAGS=$CFLAGS
- ac_cv_c_undeclared_builtin_options='cannot detect'
- for ac_arg in '' -fno-builtin; do
- CFLAGS="$ac_save_CFLAGS $ac_arg"
- # This test program should *not* compile successfully.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main (void)
-{
-(void) strchr;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
-else $as_nop
- # This test program should compile successfully.
- # No library function is consistently available on
- # freestanding implementations, so test against a dummy
- # declaration. Include always-available headers on the
- # off chance that they somehow elicit warnings.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <float.h>
-#include <limits.h>
-#include <stdarg.h>
-#include <stddef.h>
-extern void ac_decl (int, char *);
-
-int
-main (void)
-{
-(void) ac_decl (0, (char *) 0);
- (void) ac_decl;
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- if test x"$ac_arg" = x
-then :
- ac_cv_c_undeclared_builtin_options='none needed'
-else $as_nop
- ac_cv_c_undeclared_builtin_options=$ac_arg
-fi
- break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- done
- CFLAGS=$ac_save_CFLAGS
-
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5
-printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; }
- case $ac_cv_c_undeclared_builtin_options in #(
- 'cannot detect') :
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot make $CC report undeclared builtins
-See \`config.log' for more details" "$LINENO" 5; } ;; #(
- 'none needed') :
- ac_c_undeclared_builtin_options='' ;; #(
- *) :
- ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;;
+ ;;
esac
+fi ;;
+esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5
+printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; }
+ EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL
case $enable_threads in #(
posix) :
@@ -7469,8 +7601,14 @@ printf %s "checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS...
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-char pthread_join ();
+ builtin and then its argument prototype would still apply.
+ The 'extern "C"' is for builds by C++ compilers;
+ although this is not generally supported in C code supporting it here
+ has little cost and some practical benefit (sr 110532). */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_join (void);
int
main (void)
{
@@ -7564,7 +7702,7 @@ case $host_os in
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1
+ $EGREP_TRADITIONAL "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1
then :
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&5
printf "%s\n" "$as_me: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&2;}
@@ -7594,8 +7732,8 @@ printf %s "checking whether $CC is Clang... " >&6; }
if test ${ax_cv_PTHREAD_CLANG+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- ax_cv_PTHREAD_CLANG=no
+else case e in #(
+ e) ax_cv_PTHREAD_CLANG=no
# Note that Autoconf sets GCC=yes for Clang as well as GCC
if test "x$GCC" = "xyes"; then
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7607,14 +7745,15 @@ else $as_nop
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1
+ $EGREP_TRADITIONAL "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1
then :
ax_cv_PTHREAD_CLANG=yes
fi
rm -rf conftest*
fi
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG" >&5
printf "%s\n" "$ax_cv_PTHREAD_CLANG" >&6; }
@@ -7664,8 +7803,9 @@ esac
if test "x$ax_pthread_check_macro" = "x--"
then :
ax_pthread_check_cond=0
-else $as_nop
- ax_pthread_check_cond="!defined($ax_pthread_check_macro)"
+else case e in #(
+ e) ax_pthread_check_cond="!defined($ax_pthread_check_macro)" ;;
+esac
fi
@@ -7699,8 +7839,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ax_pthread_config+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$ax_pthread_config"; then
+else case e in #(
+ e) if test -n "$ax_pthread_config"; then
ac_cv_prog_ax_pthread_config="$ax_pthread_config" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -7723,7 +7863,8 @@ done
IFS=$as_save_IFS
test -z "$ac_cv_prog_ax_pthread_config" && ac_cv_prog_ax_pthread_config="no"
-fi
+fi ;;
+esac
fi
ax_pthread_config=$ac_cv_prog_ax_pthread_config
if test -n "$ax_pthread_config"; then
@@ -7856,8 +7997,8 @@ printf %s "checking whether Clang needs flag to prevent \"argument unused\" warn
if test ${ax_cv_PTHREAD_CLANG_NO_WARN_FLAG+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown
+else case e in #(
+ e) 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
@@ -7903,7 +8044,8 @@ then :
ax_pthread_try=no
fi
ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try"
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&5
printf "%s\n" "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&6; }
@@ -7930,8 +8072,8 @@ printf %s "checking for joinable pthread attribute... " >&6; }
if test ${ax_cv_PTHREAD_JOINABLE_ATTR+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- ax_cv_PTHREAD_JOINABLE_ATTR=unknown
+else case e in #(
+ e) ax_cv_PTHREAD_JOINABLE_ATTR=unknown
for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -7951,7 +8093,8 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
done
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_JOINABLE_ATTR" >&5
printf "%s\n" "$ax_cv_PTHREAD_JOINABLE_ATTR" >&6; }
@@ -7971,14 +8114,15 @@ printf %s "checking whether more special flags are required for pthreads... " >&
if test ${ax_cv_PTHREAD_SPECIAL_FLAGS+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- ax_cv_PTHREAD_SPECIAL_FLAGS=no
+else case e in #(
+ e) ax_cv_PTHREAD_SPECIAL_FLAGS=no
case $host_os in
solaris*)
ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS"
;;
esac
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_SPECIAL_FLAGS" >&5
printf "%s\n" "$ax_cv_PTHREAD_SPECIAL_FLAGS" >&6; }
@@ -7994,8 +8138,8 @@ printf %s "checking for PTHREAD_PRIO_INHERIT... " >&6; }
if test ${ax_cv_PTHREAD_PRIO_INHERIT+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+ e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <pthread.h>
int
@@ -8010,12 +8154,14 @@ _ACEOF
if ac_fn_c_try_link "$LINENO"
then :
ax_cv_PTHREAD_PRIO_INHERIT=yes
-else $as_nop
- ax_cv_PTHREAD_PRIO_INHERIT=no
+else case e in #(
+ e) ax_cv_PTHREAD_PRIO_INHERIT=no ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5
printf "%s\n" "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; }
@@ -8065,8 +8211,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_PTHREAD_CC+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$PTHREAD_CC"; then
+else case e in #(
+ e) if test -n "$PTHREAD_CC"; then
ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -8088,7 +8234,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
PTHREAD_CC=$ac_cv_prog_PTHREAD_CC
if test -n "$PTHREAD_CC"; then
@@ -8115,8 +8262,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_PTHREAD_CXX+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$PTHREAD_CXX"; then
+else case e in #(
+ e) if test -n "$PTHREAD_CXX"; then
ac_cv_prog_PTHREAD_CXX="$PTHREAD_CXX" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -8138,7 +8285,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
PTHREAD_CXX=$ac_cv_prog_PTHREAD_CXX
if test -n "$PTHREAD_CXX"; then
@@ -8197,95 +8345,16 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
printf "%s\n" "#define MYTHREAD_POSIX 1" >>confdefs.h
- # 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.
+ # This is nice to have but not mandatory.
OLD_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5
-printf %s "checking for library containing clock_gettime... " >&6; }
-if test ${ac_cv_search_clock_gettime+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
- ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-char clock_gettime ();
-int
-main (void)
-{
-return clock_gettime ();
- ;
- return 0;
-}
-_ACEOF
-for ac_lib in '' rt
-do
- if test -z "$ac_lib"; then
- ac_res="none required"
- else
- ac_res=-l$ac_lib
- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
- fi
- if ac_fn_c_try_link "$LINENO"
-then :
- ac_cv_search_clock_gettime=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext
- if test ${ac_cv_search_clock_gettime+y}
-then :
- break
-fi
-done
-if test ${ac_cv_search_clock_gettime+y}
-then :
-
-else $as_nop
- ac_cv_search_clock_gettime=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5
-printf "%s\n" "$ac_cv_search_clock_gettime" >&6; }
-ac_res=$ac_cv_search_clock_gettime
-if test "$ac_res" != no
-then :
- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
- ac_fn_c_check_func "$LINENO" "clock_gettime" "ac_cv_func_clock_gettime"
-if test "x$ac_cv_func_clock_gettime" = xyes
-then :
- printf "%s\n" "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h
-
-fi
-ac_fn_c_check_func "$LINENO" "pthread_condattr_setclock" "ac_cv_func_pthread_condattr_setclock"
+ ac_fn_c_check_func "$LINENO" "pthread_condattr_setclock" "ac_cv_func_pthread_condattr_setclock"
if test "x$ac_cv_func_pthread_condattr_setclock" = xyes
then :
printf "%s\n" "#define HAVE_PTHREAD_CONDATTR_SETCLOCK 1" >>confdefs.h
fi
- ac_fn_check_decl "$LINENO" "CLOCK_MONOTONIC" "ac_cv_have_decl_CLOCK_MONOTONIC" "#include <time.h>
-" "$ac_c_undeclared_builtin_options" "CFLAGS"
-if test "x$ac_cv_have_decl_CLOCK_MONOTONIC" = xyes
-then :
-
-printf "%s\n" "#define HAVE_CLOCK_MONOTONIC 1" >>confdefs.h
-
-fi
CFLAGS=$OLD_CFLAGS
;; #(
win95) :
@@ -8324,8 +8393,8 @@ esac
-macro_version='2.4.7.4-1ec8f-dirty'
-macro_revision='2.4.7.4'
+macro_version='2.5.0.1-38c1-dirty'
+macro_revision='2.5.0.1'
@@ -8416,8 +8485,8 @@ printf %s "checking for a sed that does not truncate output... " >&6; }
if test ${ac_cv_path_SED+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+else case e in #(
+ e) ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
for ac_i in 1 2 3 4 5 6 7; do
ac_script="$ac_script$as_nl$ac_script"
done
@@ -8442,9 +8511,10 @@ do
as_fn_executable_p "$ac_path_SED" || continue
# Check for GNU ac_path_SED and select it if it is found.
# Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
+case `"$ac_path_SED" --version 2>&1` in #(
*GNU*)
ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+#(
*)
ac_count=0
printf %s 0123456789 >"conftest.in"
@@ -8479,7 +8549,8 @@ IFS=$as_save_IFS
else
ac_cv_path_SED=$SED
fi
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
printf "%s\n" "$ac_cv_path_SED" >&6; }
@@ -8499,13 +8570,161 @@ Xsed="$SED -e 1s/^X//"
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+printf %s "checking for grep that handles long lines and -e... " >&6; }
+if test ${ac_cv_path_GREP+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in grep ggrep
+ do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in #(
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+#(
+*)
+ ac_count=0
+ printf %s 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ printf "%s\n" 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_GREP=$GREP
+fi
+ ;;
+esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+printf "%s\n" "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+printf %s "checking for egrep... " >&6; }
+if test ${ac_cv_path_EGREP+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in egrep
+ do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in #(
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+#(
+*)
+ ac_count=0
+ printf %s 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ printf "%s\n" 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi ;;
+esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+printf "%s\n" "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+ EGREP_TRADITIONAL=$EGREP
+ ac_cv_path_EGREP_TRADITIONAL=$EGREP
+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
printf %s "checking for fgrep... " >&6; }
if test ${ac_cv_path_FGREP+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+else case e in #(
+ e) if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
then ac_cv_path_FGREP="$GREP -F"
else
if test -z "$FGREP"; then
@@ -8527,9 +8746,10 @@ do
as_fn_executable_p "$ac_path_FGREP" || continue
# Check for GNU ac_path_FGREP and select it if it is found.
# Check for GNU $ac_path_FGREP
-case `"$ac_path_FGREP" --version 2>&1` in
+case `"$ac_path_FGREP" --version 2>&1` in #(
*GNU*)
ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+#(
*)
ac_count=0
printf %s 0123456789 >"conftest.in"
@@ -8565,7 +8785,8 @@ else
ac_cv_path_FGREP=$FGREP
fi
- fi
+ fi ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
printf "%s\n" "$ac_cv_path_FGREP" >&6; }
@@ -8596,8 +8817,9 @@ test -z "$GREP" && GREP=grep
if test ${with_gnu_ld+y}
then :
withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
-else $as_nop
- with_gnu_ld=no
+else case e in #(
+ e) with_gnu_ld=no ;;
+esac
fi
ac_prog=ld
@@ -8606,7 +8828,7 @@ if test yes = "$GCC"; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
printf %s "checking for ld used by $CC... " >&6; }
case $host in
- *-*-mingw*)
+ *-*-mingw* | *-*-windows*)
# gcc leaves a trailing carriage return, which upsets mingw
ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
*)
@@ -8642,8 +8864,8 @@ fi
if test ${lt_cv_path_LD+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -z "$LD"; then
+else case e in #(
+ e) if test -z "$LD"; then
lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
for ac_dir in $PATH; do
IFS=$lt_save_ifs
@@ -8666,7 +8888,8 @@ else $as_nop
IFS=$lt_save_ifs
else
lt_cv_path_LD=$LD # Let the user override the test with a path.
-fi
+fi ;;
+esac
fi
LD=$lt_cv_path_LD
@@ -8683,8 +8906,8 @@ printf %s "checking if the linker ($LD) is GNU ld... " >&6; }
if test ${lt_cv_prog_gnu_ld+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- # I'd rather use --version here, but apparently some GNU lds only accept -v.
+else case e in #(
+ e) # I'd rather use --version here, but apparently some GNU lds only accept -v.
case `$LD -v 2>&1 </dev/null` in
*GNU* | *'with BFD'*)
lt_cv_prog_gnu_ld=yes
@@ -8692,6 +8915,7 @@ case `$LD -v 2>&1 </dev/null` in
*)
lt_cv_prog_gnu_ld=no
;;
+esac ;;
esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
@@ -8711,8 +8935,8 @@ printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
if test ${lt_cv_path_NM+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$NM"; then
+else case e in #(
+ e) if test -n "$NM"; then
# Let the user override the test.
lt_cv_path_NM=$NM
else
@@ -8733,7 +8957,7 @@ else
# Tru64's nm complains that /dev/null is an invalid object file
# MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
case $build_os in
- mingw*) lt_bad_file=conftest.nm/nofile ;;
+ mingw* | windows*) lt_bad_file=conftest.nm/nofile ;;
*) lt_bad_file=/dev/null ;;
esac
case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in
@@ -8759,7 +8983,8 @@ else
IFS=$lt_save_ifs
done
: ${lt_cv_path_NM=no}
-fi
+fi ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
printf "%s\n" "$lt_cv_path_NM" >&6; }
@@ -8780,8 +9005,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_DUMPBIN+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$DUMPBIN"; then
+else case e in #(
+ e) if test -n "$DUMPBIN"; then
ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -8803,7 +9028,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
DUMPBIN=$ac_cv_prog_DUMPBIN
if test -n "$DUMPBIN"; then
@@ -8829,8 +9055,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_DUMPBIN+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$ac_ct_DUMPBIN"; then
+else case e in #(
+ e) if test -n "$ac_ct_DUMPBIN"; then
ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -8852,7 +9078,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
if test -n "$ac_ct_DUMPBIN"; then
@@ -8906,8 +9133,8 @@ printf %s "checking the name lister ($NM) interface... " >&6; }
if test ${lt_cv_nm_interface+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- lt_cv_nm_interface="BSD nm"
+else case e in #(
+ e) lt_cv_nm_interface="BSD nm"
echo "int some_variable = 0;" > conftest.$ac_ext
(eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
(eval "$ac_compile" 2>conftest.err)
@@ -8920,7 +9147,8 @@ else $as_nop
if $GREP 'External.*some_variable' conftest.out > /dev/null; then
lt_cv_nm_interface="MS dumpbin"
fi
- rm -f conftest*
+ rm -f conftest* ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
printf "%s\n" "$lt_cv_nm_interface" >&6; }
@@ -8931,8 +9159,8 @@ printf %s "checking the maximum length of command line arguments... " >&6; }
if test ${lt_cv_sys_max_cmd_len+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- i=0
+else case e in #(
+ e) i=0
teststring=ABCD
case $build_os in
@@ -8951,7 +9179,7 @@ else $as_nop
lt_cv_sys_max_cmd_len=-1;
;;
- cygwin* | mingw* | cegcc*)
+ cygwin* | mingw* | windows* | cegcc*)
# On Win9x/ME, this test blows up -- it succeeds, but takes
# about 5 minutes as the teststring grows exponentially.
# Worse, since 9x/ME are not pre-emptively multitasking,
@@ -8973,7 +9201,7 @@ else $as_nop
lt_cv_sys_max_cmd_len=8192;
;;
- bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*)
+ darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*)
# This has been around since 386BSD, at least. Likely further.
if test -x /sbin/sysctl; then
lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
@@ -9054,7 +9282,8 @@ else $as_nop
fi
;;
esac
-
+ ;;
+esac
fi
if test -n "$lt_cv_sys_max_cmd_len"; then
@@ -9111,11 +9340,11 @@ printf %s "checking how to convert $build file names to $host format... " >&6; }
if test ${lt_cv_to_host_file_cmd+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- case $host in
+else case e in #(
+ e) case $host in
*-*-mingw* )
case $build in
- *-*-mingw* ) # actually msys
+ *-*-mingw* | *-*-windows* ) # actually msys
lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
;;
*-*-cygwin* )
@@ -9128,7 +9357,7 @@ else $as_nop
;;
*-*-cygwin* )
case $build in
- *-*-mingw* ) # actually msys
+ *-*-mingw* | *-*-windows* ) # actually msys
lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
;;
*-*-cygwin* )
@@ -9143,7 +9372,8 @@ else $as_nop
lt_cv_to_host_file_cmd=func_convert_file_noop
;;
esac
-
+ ;;
+esac
fi
to_host_file_cmd=$lt_cv_to_host_file_cmd
@@ -9159,19 +9389,20 @@ printf %s "checking how to convert $build file names to toolchain format... " >&
if test ${lt_cv_to_tool_file_cmd+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- #assume ordinary cross tools, or native build.
+else case e in #(
+ e) #assume ordinary cross tools, or native build.
lt_cv_to_tool_file_cmd=func_convert_file_noop
case $host in
- *-*-mingw* )
+ *-*-mingw* | *-*-windows* )
case $build in
- *-*-mingw* ) # actually msys
+ *-*-mingw* | *-*-windows* ) # actually msys
lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
;;
esac
;;
esac
-
+ ;;
+esac
fi
to_tool_file_cmd=$lt_cv_to_tool_file_cmd
@@ -9187,8 +9418,9 @@ printf %s "checking for $LD option to reload object files... " >&6; }
if test ${lt_cv_ld_reload_flag+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- lt_cv_ld_reload_flag='-r'
+else case e in #(
+ e) lt_cv_ld_reload_flag='-r' ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
printf "%s\n" "$lt_cv_ld_reload_flag" >&6; }
@@ -9199,7 +9431,7 @@ case $reload_flag in
esac
reload_cmds='$LD$reload_flag -o $output$reload_objs'
case $host_os in
- cygwin* | mingw* | pw32* | cegcc*)
+ cygwin* | mingw* | windows* | pw32* | cegcc*)
if test yes != "$GCC"; then
reload_cmds=false
fi
@@ -9221,16 +9453,15 @@ esac
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}file", so it can be a program name with args.
-set dummy ${ac_tool_prefix}file; ac_word=$2
+# Extract the first word of "file", so it can be a program name with args.
+set dummy file; ac_word=$2
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_FILECMD+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$FILECMD"; then
+else case e in #(
+ e) if test -n "$FILECMD"; then
ac_cv_prog_FILECMD="$FILECMD" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -9244,7 +9475,7 @@ do
esac
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
- ac_cv_prog_FILECMD="${ac_tool_prefix}file"
+ ac_cv_prog_FILECMD=":"
printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
@@ -9252,7 +9483,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
FILECMD=$ac_cv_prog_FILECMD
if test -n "$FILECMD"; then
@@ -9264,65 +9496,6 @@ printf "%s\n" "no" >&6; }
fi
-fi
-if test -z "$ac_cv_prog_FILECMD"; then
- ac_ct_FILECMD=$FILECMD
- # Extract the first word of "file", so it can be a program name with args.
-set dummy file; ac_word=$2
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-printf %s "checking for $ac_word... " >&6; }
-if test ${ac_cv_prog_ac_ct_FILECMD+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
- if test -n "$ac_ct_FILECMD"; then
- ac_cv_prog_ac_ct_FILECMD="$ac_ct_FILECMD" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- case $as_dir in #(((
- '') as_dir=./ ;;
- */) ;;
- *) as_dir=$as_dir/ ;;
- esac
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_FILECMD="file"
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_FILECMD=$ac_cv_prog_ac_ct_FILECMD
-if test -n "$ac_ct_FILECMD"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FILECMD" >&5
-printf "%s\n" "$ac_ct_FILECMD" >&6; }
-else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-fi
-
- if test "x$ac_ct_FILECMD" = x; then
- FILECMD=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- FILECMD=$ac_ct_FILECMD
- fi
-else
- FILECMD="$ac_cv_prog_FILECMD"
-fi
-
@@ -9337,8 +9510,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_OBJDUMP+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$OBJDUMP"; then
+else case e in #(
+ e) if test -n "$OBJDUMP"; then
ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -9360,7 +9533,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
OBJDUMP=$ac_cv_prog_OBJDUMP
if test -n "$OBJDUMP"; then
@@ -9382,8 +9556,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_OBJDUMP+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$ac_ct_OBJDUMP"; then
+else case e in #(
+ e) if test -n "$ac_ct_OBJDUMP"; then
ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -9405,7 +9579,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
if test -n "$ac_ct_OBJDUMP"; then
@@ -9443,8 +9618,8 @@ printf %s "checking how to recognize dependent libraries... " >&6; }
if test ${lt_cv_deplibs_check_method+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- lt_cv_file_magic_cmd='$MAGIC_CMD'
+else case e in #(
+ e) lt_cv_file_magic_cmd='$MAGIC_CMD'
lt_cv_file_magic_test_file=
lt_cv_deplibs_check_method='unknown'
# Need to set the preceding variable on all platforms that support
@@ -9452,7 +9627,6 @@ lt_cv_deplibs_check_method='unknown'
# 'none' -- dependencies not supported.
# 'unknown' -- same as none, but documents that we really don't know.
# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
# 'file_magic [[regex]]' -- check by looking for files in library path
# that responds to the $file_magic_cmd with a given extended regex.
# If you have 'file' or equivalent on your system and you're not sure
@@ -9479,7 +9653,7 @@ cygwin*)
lt_cv_file_magic_cmd='func_win32_libid'
;;
-mingw* | pw32*)
+mingw* | windows* | pw32*)
# Base MSYS/MinGW do not provide the 'file' command needed by
# func_win32_libid shell function, so use a weaker test based on 'objdump',
# unless we find 'file', for example because we are cross-compiling.
@@ -9579,7 +9753,7 @@ newos6*)
lt_cv_deplibs_check_method=pass_all
;;
-openbsd* | bitrig*)
+openbsd*)
if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
else
@@ -9637,7 +9811,8 @@ os2*)
lt_cv_deplibs_check_method=pass_all
;;
esac
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
printf "%s\n" "$lt_cv_deplibs_check_method" >&6; }
@@ -9646,7 +9821,7 @@ file_magic_glob=
want_nocaseglob=no
if test "$build" = "$host"; then
case $host_os in
- mingw* | pw32*)
+ mingw* | windows* | pw32*)
if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
want_nocaseglob=yes
else
@@ -9689,8 +9864,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_DLLTOOL+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$DLLTOOL"; then
+else case e in #(
+ e) if test -n "$DLLTOOL"; then
ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -9712,7 +9887,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
DLLTOOL=$ac_cv_prog_DLLTOOL
if test -n "$DLLTOOL"; then
@@ -9734,8 +9910,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_DLLTOOL+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$ac_ct_DLLTOOL"; then
+else case e in #(
+ e) if test -n "$ac_ct_DLLTOOL"; then
ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -9757,7 +9933,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
if test -n "$ac_ct_DLLTOOL"; then
@@ -9796,11 +9973,11 @@ printf %s "checking how to associate runtime and link libraries... " >&6; }
if test ${lt_cv_sharedlib_from_linklib_cmd+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- lt_cv_sharedlib_from_linklib_cmd='unknown'
+else case e in #(
+ e) lt_cv_sharedlib_from_linklib_cmd='unknown'
case $host_os in
-cygwin* | mingw* | pw32* | cegcc*)
+cygwin* | mingw* | windows* | pw32* | cegcc*)
# two different shell functions defined in ltmain.sh;
# decide which one to use based on capabilities of $DLLTOOL
case `$DLLTOOL --help 2>&1` in
@@ -9817,7 +9994,8 @@ cygwin* | mingw* | pw32* | cegcc*)
lt_cv_sharedlib_from_linklib_cmd=$ECHO
;;
esac
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
@@ -9840,8 +10018,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_AR+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$AR"; then
+else case e in #(
+ e) if test -n "$AR"; then
ac_cv_prog_AR="$AR" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -9863,7 +10041,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
AR=$ac_cv_prog_AR
if test -n "$AR"; then
@@ -9889,8 +10068,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_AR+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$ac_ct_AR"; then
+else case e in #(
+ e) if test -n "$ac_ct_AR"; then
ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -9912,7 +10091,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
ac_ct_AR=$ac_cv_prog_ac_ct_AR
if test -n "$ac_ct_AR"; then
@@ -9949,7 +10129,7 @@ fi
# Use ARFLAGS variable as AR's operation code to sync the variable naming with
# Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have
-# higher priority because thats what people were doing historically (setting
+# higher priority because that's what people were doing historically (setting
# ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS
# variable obsoleted/removed.
@@ -9974,8 +10154,8 @@ printf %s "checking for archiver @FILE support... " >&6; }
if test ${lt_cv_ar_at_file+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- lt_cv_ar_at_file=no
+else case e in #(
+ e) lt_cv_ar_at_file=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -10012,7 +10192,8 @@ then :
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
printf "%s\n" "$lt_cv_ar_at_file" >&6; }
@@ -10037,8 +10218,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_STRIP+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$STRIP"; then
+else case e in #(
+ e) if test -n "$STRIP"; then
ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -10060,7 +10241,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
STRIP=$ac_cv_prog_STRIP
if test -n "$STRIP"; then
@@ -10082,8 +10264,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_STRIP+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$ac_ct_STRIP"; then
+else case e in #(
+ e) if test -n "$ac_ct_STRIP"; then
ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -10105,7 +10287,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
if test -n "$ac_ct_STRIP"; then
@@ -10146,8 +10329,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_RANLIB+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$RANLIB"; then
+else case e in #(
+ e) if test -n "$RANLIB"; then
ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -10169,7 +10352,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
RANLIB=$ac_cv_prog_RANLIB
if test -n "$RANLIB"; then
@@ -10191,8 +10375,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_RANLIB+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$ac_ct_RANLIB"; then
+else case e in #(
+ e) if test -n "$ac_ct_RANLIB"; then
ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -10214,7 +10398,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
if test -n "$ac_ct_RANLIB"; then
@@ -10253,15 +10438,8 @@ old_postinstall_cmds='chmod 644 $oldlib'
old_postuninstall_cmds=
if test -n "$RANLIB"; then
- case $host_os in
- bitrig* | openbsd*)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
- ;;
- *)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
- ;;
- esac
old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
fi
case $host_os in
@@ -10325,8 +10503,8 @@ printf %s "checking command to parse $NM output from $compiler object... " >&6;
if test ${lt_cv_sys_global_symbol_pipe+y}
then :
printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+ e)
# These are sane defaults that work on at least a few old systems.
# [They come from Ultrix. What could be older than Ultrix?!! ;)]
@@ -10341,7 +10519,7 @@ case $host_os in
aix*)
symcode='[BCDT]'
;;
-cygwin* | mingw* | pw32* | cegcc*)
+cygwin* | mingw* | windows* | pw32* | cegcc*)
symcode='[ABCDGISTW]'
;;
hpux*)
@@ -10356,7 +10534,7 @@ osf*)
symcode='[BCDEGQRST]'
;;
solaris*)
- symcode='[BDRT]'
+ symcode='[BCDRT]'
;;
sco3.2v5*)
symcode='[DT]'
@@ -10420,7 +10598,7 @@ $lt_c_name_lib_hook\
# Handle CRLF in mingw tool chain
opt_cr=
case $build_os in
-mingw*)
+mingw* | windows*)
opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
;;
esac
@@ -10581,7 +10759,8 @@ _LT_EOF
lt_cv_sys_global_symbol_pipe=
fi
done
-
+ ;;
+esac
fi
if test -z "$lt_cv_sys_global_symbol_pipe"; then
@@ -10645,8 +10824,9 @@ printf %s "checking for sysroot... " >&6; }
if test ${with_sysroot+y}
then :
withval=$with_sysroot;
-else $as_nop
- with_sysroot=no
+else case e in #(
+ e) with_sysroot=no ;;
+esac
fi
@@ -10654,7 +10834,9 @@ lt_sysroot=
case $with_sysroot in #(
yes)
if test yes = "$GCC"; then
- lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ # Trim trailing / since we'll always append absolute paths and we want
+ # to avoid //, if only for less confusing output for the user.
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null | $SED 's:/\+$::'`
fi
;; #(
/*)
@@ -10681,8 +10863,8 @@ printf %s "checking for a working dd... " >&6; }
if test ${ac_cv_path_lt_DD+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- printf 0123456789abcdef0123456789abcdef >conftest.i
+else case e in #(
+ e) printf 0123456789abcdef0123456789abcdef >conftest.i
cat conftest.i conftest.i >conftest2.i
: ${lt_DD:=$DD}
if test -z "$lt_DD"; then
@@ -10718,7 +10900,8 @@ else
ac_cv_path_lt_DD=$lt_DD
fi
-rm -f conftest.i conftest2.i conftest.out
+rm -f conftest.i conftest2.i conftest.out ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5
printf "%s\n" "$ac_cv_path_lt_DD" >&6; }
@@ -10729,8 +10912,8 @@ printf %s "checking how to truncate binary pipes... " >&6; }
if test ${lt_cv_truncate_bin+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- printf 0123456789abcdef0123456789abcdef >conftest.i
+else case e in #(
+ e) printf 0123456789abcdef0123456789abcdef >conftest.i
cat conftest.i conftest.i >conftest2.i
lt_cv_truncate_bin=
if "$ac_cv_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
@@ -10738,7 +10921,8 @@ if "$ac_cv_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; the
&& lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1"
fi
rm -f conftest.i conftest2.i conftest.out
-test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"
+test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5
printf "%s\n" "$lt_cv_truncate_bin" >&6; }
@@ -10869,7 +11053,7 @@ mips64*-*linux*)
;;
x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*|x86_64-gnu*)
# Find out what ABI is being produced by ac_compile, and set linker
# options accordingly. Note that the listed cases only cover the
# situations where additional linker options are needed (such as when
@@ -10888,7 +11072,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*kfreebsd*-gnu)
LD="${LD-ld} -m elf_i386_fbsd"
;;
- x86_64-*linux*)
+ x86_64-*linux*|x86_64-gnu*)
case `$FILECMD conftest.o` in
*x86-64*)
LD="${LD-ld} -m elf32_x86_64"
@@ -10917,7 +11101,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*kfreebsd*-gnu)
LD="${LD-ld} -m elf_x86_64_fbsd"
;;
- x86_64-*linux*)
+ x86_64-*linux*|x86_64-gnu*)
LD="${LD-ld} -m elf_x86_64"
;;
powerpcle-*linux*)
@@ -10948,8 +11132,8 @@ printf %s "checking whether the C compiler needs -belf... " >&6; }
if test ${lt_cv_cc_needs_belf+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- ac_ext=c
+else case e in #(
+ e) ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
@@ -10969,8 +11153,9 @@ _ACEOF
if ac_fn_c_try_link "$LINENO"
then :
lt_cv_cc_needs_belf=yes
-else $as_nop
- lt_cv_cc_needs_belf=no
+else case e in #(
+ e) lt_cv_cc_needs_belf=no ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
@@ -10979,7 +11164,8 @@ ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
printf "%s\n" "$lt_cv_cc_needs_belf" >&6; }
@@ -11037,8 +11223,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_MANIFEST_TOOL+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$MANIFEST_TOOL"; then
+else case e in #(
+ e) if test -n "$MANIFEST_TOOL"; then
ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -11060,7 +11246,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
if test -n "$MANIFEST_TOOL"; then
@@ -11082,8 +11269,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$ac_ct_MANIFEST_TOOL"; then
+else case e in #(
+ e) if test -n "$ac_ct_MANIFEST_TOOL"; then
ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -11105,7 +11292,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
if test -n "$ac_ct_MANIFEST_TOOL"; then
@@ -11134,22 +11322,23 @@ fi
test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
-if test ${lt_cv_path_mainfest_tool+y}
+if test ${lt_cv_path_manifest_tool+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- lt_cv_path_mainfest_tool=no
+else case e in #(
+ e) lt_cv_path_manifest_tool=no
echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
$MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
cat conftest.err >&5
if $GREP 'Manifest Tool' conftest.out > /dev/null; then
- lt_cv_path_mainfest_tool=yes
+ lt_cv_path_manifest_tool=yes
fi
- rm -f conftest*
+ rm -f conftest* ;;
+esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
-printf "%s\n" "$lt_cv_path_mainfest_tool" >&6; }
-if test yes != "$lt_cv_path_mainfest_tool"; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_manifest_tool" >&5
+printf "%s\n" "$lt_cv_path_manifest_tool" >&6; }
+if test yes != "$lt_cv_path_manifest_tool"; then
MANIFEST_TOOL=:
fi
@@ -11168,8 +11357,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_DSYMUTIL+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$DSYMUTIL"; then
+else case e in #(
+ e) if test -n "$DSYMUTIL"; then
ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -11191,7 +11380,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
DSYMUTIL=$ac_cv_prog_DSYMUTIL
if test -n "$DSYMUTIL"; then
@@ -11213,8 +11403,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_DSYMUTIL+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$ac_ct_DSYMUTIL"; then
+else case e in #(
+ e) if test -n "$ac_ct_DSYMUTIL"; then
ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -11236,7 +11426,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
if test -n "$ac_ct_DSYMUTIL"; then
@@ -11270,8 +11461,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_NMEDIT+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$NMEDIT"; then
+else case e in #(
+ e) if test -n "$NMEDIT"; then
ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -11293,7 +11484,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
NMEDIT=$ac_cv_prog_NMEDIT
if test -n "$NMEDIT"; then
@@ -11315,8 +11507,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_NMEDIT+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$ac_ct_NMEDIT"; then
+else case e in #(
+ e) if test -n "$ac_ct_NMEDIT"; then
ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -11338,7 +11530,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
if test -n "$ac_ct_NMEDIT"; then
@@ -11372,8 +11565,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_LIPO+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$LIPO"; then
+else case e in #(
+ e) if test -n "$LIPO"; then
ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -11395,7 +11588,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
LIPO=$ac_cv_prog_LIPO
if test -n "$LIPO"; then
@@ -11417,8 +11611,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_LIPO+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$ac_ct_LIPO"; then
+else case e in #(
+ e) if test -n "$ac_ct_LIPO"; then
ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -11440,7 +11634,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
if test -n "$ac_ct_LIPO"; then
@@ -11474,8 +11669,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_OTOOL+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$OTOOL"; then
+else case e in #(
+ e) if test -n "$OTOOL"; then
ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -11497,7 +11692,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
OTOOL=$ac_cv_prog_OTOOL
if test -n "$OTOOL"; then
@@ -11519,8 +11715,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_OTOOL+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$ac_ct_OTOOL"; then
+else case e in #(
+ e) if test -n "$ac_ct_OTOOL"; then
ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -11542,7 +11738,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
if test -n "$ac_ct_OTOOL"; then
@@ -11576,8 +11773,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_OTOOL64+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$OTOOL64"; then
+else case e in #(
+ e) if test -n "$OTOOL64"; then
ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -11599,7 +11796,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
OTOOL64=$ac_cv_prog_OTOOL64
if test -n "$OTOOL64"; then
@@ -11621,8 +11819,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_OTOOL64+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$ac_ct_OTOOL64"; then
+else case e in #(
+ e) if test -n "$ac_ct_OTOOL64"; then
ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -11644,7 +11842,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
if test -n "$ac_ct_OTOOL64"; then
@@ -11701,8 +11900,8 @@ printf %s "checking for -single_module linker flag... " >&6; }
if test ${lt_cv_apple_cc_single_mod+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- lt_cv_apple_cc_single_mod=no
+else case e in #(
+ e) lt_cv_apple_cc_single_mod=no
if test -z "$LT_MULTI_MODULE"; then
# By default we will add the -single_module flag. You can override
# by either setting the environment variable LT_MULTI_MODULE
@@ -11728,7 +11927,8 @@ else $as_nop
fi
rm -rf libconftest.dylib*
rm -f conftest.*
- fi
+ fi ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; }
@@ -11738,8 +11938,8 @@ printf %s "checking for -exported_symbols_list linker flag... " >&6; }
if test ${lt_cv_ld_exported_symbols_list+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- lt_cv_ld_exported_symbols_list=no
+else case e in #(
+ e) lt_cv_ld_exported_symbols_list=no
save_LDFLAGS=$LDFLAGS
echo "_main" > conftest.sym
LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
@@ -11757,13 +11957,15 @@ _ACEOF
if ac_fn_c_try_link "$LINENO"
then :
lt_cv_ld_exported_symbols_list=yes
-else $as_nop
- lt_cv_ld_exported_symbols_list=no
+else case e in #(
+ e) lt_cv_ld_exported_symbols_list=no ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LDFLAGS=$save_LDFLAGS
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; }
@@ -11773,8 +11975,8 @@ printf %s "checking for -force_load linker flag... " >&6; }
if test ${lt_cv_ld_force_load+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- lt_cv_ld_force_load=no
+else case e in #(
+ e) lt_cv_ld_force_load=no
cat > conftest.c << _LT_EOF
int forced_loaded() { return 2;}
_LT_EOF
@@ -11799,7 +12001,8 @@ _LT_EOF
fi
rm -f conftest.err libconftest.a conftest conftest.c
rm -rf conftest.dSYM
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
printf "%s\n" "$lt_cv_ld_force_load" >&6; }
@@ -11884,7 +12087,7 @@ fi
enable_win32_dll=yes
case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
+*-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-cegcc*)
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
set dummy ${ac_tool_prefix}as; ac_word=$2
@@ -11893,8 +12096,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_AS+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$AS"; then
+else case e in #(
+ e) if test -n "$AS"; then
ac_cv_prog_AS="$AS" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -11916,7 +12119,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
AS=$ac_cv_prog_AS
if test -n "$AS"; then
@@ -11938,8 +12142,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_AS+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$ac_ct_AS"; then
+else case e in #(
+ e) if test -n "$ac_ct_AS"; then
ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -11961,7 +12165,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
ac_ct_AS=$ac_cv_prog_ac_ct_AS
if test -n "$ac_ct_AS"; then
@@ -11995,8 +12200,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_DLLTOOL+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$DLLTOOL"; then
+else case e in #(
+ e) if test -n "$DLLTOOL"; then
ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -12018,7 +12223,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
DLLTOOL=$ac_cv_prog_DLLTOOL
if test -n "$DLLTOOL"; then
@@ -12040,8 +12246,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_DLLTOOL+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$ac_ct_DLLTOOL"; then
+else case e in #(
+ e) if test -n "$ac_ct_DLLTOOL"; then
ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -12063,7 +12269,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
if test -n "$ac_ct_DLLTOOL"; then
@@ -12097,8 +12304,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_OBJDUMP+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$OBJDUMP"; then
+else case e in #(
+ e) if test -n "$OBJDUMP"; then
ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -12120,7 +12327,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
OBJDUMP=$ac_cv_prog_OBJDUMP
if test -n "$OBJDUMP"; then
@@ -12142,8 +12350,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_OBJDUMP+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$ac_ct_OBJDUMP"; then
+else case e in #(
+ e) if test -n "$ac_ct_OBJDUMP"; then
ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -12165,7 +12373,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
if test -n "$ac_ct_OBJDUMP"; then
@@ -12238,8 +12447,9 @@ then :
IFS=$lt_save_ifs
;;
esac
-else $as_nop
- enable_shared=yes
+else case e in #(
+ e) enable_shared=yes ;;
+esac
fi
@@ -12270,8 +12480,9 @@ then :
IFS=$lt_save_ifs
;;
esac
-else $as_nop
- enable_static=yes
+else case e in #(
+ e) enable_static=yes ;;
+esac
fi
@@ -12302,8 +12513,9 @@ then :
IFS=$lt_save_ifs
;;
esac
-else $as_nop
- pic_mode=default
+else case e in #(
+ e) pic_mode=default ;;
+esac
fi
@@ -12333,8 +12545,9 @@ then :
IFS=$lt_save_ifs
;;
esac
-else $as_nop
- enable_fast_install=yes
+else case e in #(
+ e) enable_fast_install=yes ;;
+esac
fi
@@ -12361,15 +12574,17 @@ then :
;;
esac
lt_cv_with_aix_soname=$with_aix_soname
-else $as_nop
- if test ${lt_cv_with_aix_soname+y}
+else case e in #(
+ e) if test ${lt_cv_with_aix_soname+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- lt_cv_with_aix_soname=aix
+else case e in #(
+ e) lt_cv_with_aix_soname=aix ;;
+esac
fi
- with_aix_soname=$lt_cv_with_aix_soname
+ with_aix_soname=$lt_cv_with_aix_soname ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5
@@ -12460,8 +12675,8 @@ printf %s "checking for objdir... " >&6; }
if test ${lt_cv_objdir+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- rm -f .libs 2>/dev/null
+else case e in #(
+ e) rm -f .libs 2>/dev/null
mkdir .libs 2>/dev/null
if test -d .libs; then
lt_cv_objdir=.libs
@@ -12469,7 +12684,8 @@ else
# MS-DOS does not allow filenames that begin with a dot.
lt_cv_objdir=_libs
fi
-rmdir .libs 2>/dev/null
+rmdir .libs 2>/dev/null ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
printf "%s\n" "$lt_cv_objdir" >&6; }
@@ -12530,8 +12746,8 @@ printf %s "checking for ${ac_tool_prefix}file... " >&6; }
if test ${lt_cv_path_MAGIC_CMD+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- case $MAGIC_CMD in
+else case e in #(
+ e) case $MAGIC_CMD in
[\\/*] | ?:[\\/]*)
lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
;;
@@ -12574,6 +12790,7 @@ _LT_EOF
IFS=$lt_save_ifs
MAGIC_CMD=$lt_save_MAGIC_CMD
;;
+esac ;;
esac
fi
@@ -12597,8 +12814,8 @@ printf %s "checking for file... " >&6; }
if test ${lt_cv_path_MAGIC_CMD+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- case $MAGIC_CMD in
+else case e in #(
+ e) case $MAGIC_CMD in
[\\/*] | ?:[\\/]*)
lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
;;
@@ -12641,6 +12858,7 @@ _LT_EOF
IFS=$lt_save_ifs
MAGIC_CMD=$lt_save_MAGIC_CMD
;;
+esac ;;
esac
fi
@@ -12740,8 +12958,8 @@ printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
if test ${lt_cv_prog_compiler_rtti_exceptions+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- lt_cv_prog_compiler_rtti_exceptions=no
+else case e in #(
+ e) lt_cv_prog_compiler_rtti_exceptions=no
ac_outfile=conftest.$ac_objext
echo "$lt_simple_compile_test_code" > conftest.$ac_ext
lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment
@@ -12769,7 +12987,8 @@ else $as_nop
fi
fi
$RM conftest*
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
@@ -12825,7 +13044,7 @@ lt_prog_compiler_static=
# PIC is the default for these OSes.
;;
- mingw* | cygwin* | pw32* | os2* | cegcc*)
+ mingw* | windows* | cygwin* | pw32* | os2* | cegcc*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
# Although the cygwin gcc ignores -fPIC, still need this for old-style
@@ -12928,7 +13147,7 @@ lt_prog_compiler_static=
esac
;;
- mingw* | cygwin* | pw32* | os2* | cegcc*)
+ mingw* | windows* | cygwin* | pw32* | os2* | cegcc*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
lt_prog_compiler_pic='-DDLL_EXPORT'
@@ -12969,6 +13188,12 @@ lt_prog_compiler_static=
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-static'
;;
+ *flang)
+ # Flang compiler.
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fPIC'
+ lt_prog_compiler_static='-static'
+ ;;
# icc used to be incompatible with GCC.
# ICC 10 doesn't accept -KPIC any more.
icc* | ifort*)
@@ -13134,8 +13359,9 @@ printf %s "checking for $compiler option to produce PIC... " >&6; }
if test ${lt_cv_prog_compiler_pic+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
+else case e in #(
+ e) lt_cv_prog_compiler_pic=$lt_prog_compiler_pic ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; }
@@ -13150,8 +13376,8 @@ printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6;
if test ${lt_cv_prog_compiler_pic_works+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- lt_cv_prog_compiler_pic_works=no
+else case e in #(
+ e) lt_cv_prog_compiler_pic_works=no
ac_outfile=conftest.$ac_objext
echo "$lt_simple_compile_test_code" > conftest.$ac_ext
lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment
@@ -13179,7 +13405,8 @@ else $as_nop
fi
fi
$RM conftest*
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; }
@@ -13215,8 +13442,8 @@ printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6;
if test ${lt_cv_prog_compiler_static_works+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- lt_cv_prog_compiler_static_works=no
+else case e in #(
+ e) lt_cv_prog_compiler_static_works=no
save_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
echo "$lt_simple_link_test_code" > conftest.$ac_ext
@@ -13237,7 +13464,8 @@ else $as_nop
fi
$RM -r conftest*
LDFLAGS=$save_LDFLAGS
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; }
@@ -13259,8 +13487,8 @@ printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
if test ${lt_cv_prog_compiler_c_o+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- lt_cv_prog_compiler_c_o=no
+else case e in #(
+ e) lt_cv_prog_compiler_c_o=no
$RM -r conftest 2>/dev/null
mkdir conftest
cd conftest
@@ -13300,7 +13528,8 @@ else $as_nop
cd ..
$RM -r conftest
$RM conftest*
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; }
@@ -13315,8 +13544,8 @@ printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
if test ${lt_cv_prog_compiler_c_o+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- lt_cv_prog_compiler_c_o=no
+else case e in #(
+ e) lt_cv_prog_compiler_c_o=no
$RM -r conftest 2>/dev/null
mkdir conftest
cd conftest
@@ -13356,7 +13585,8 @@ else $as_nop
cd ..
$RM -r conftest
$RM conftest*
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; }
@@ -13435,7 +13665,7 @@ printf %s "checking whether the $compiler linker ($LD) supports shared libraries
extract_expsyms_cmds=
case $host_os in
- cygwin* | mingw* | pw32* | cegcc*)
+ cygwin* | mingw* | windows* | pw32* | cegcc*)
# FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++ or Intel C++ Compiler.
@@ -13447,7 +13677,7 @@ printf %s "checking whether the $compiler linker ($LD) supports shared libraries
# we just hope/assume this is gcc and not c89 (= MSVC++ or ICC)
with_gnu_ld=yes
;;
- openbsd* | bitrig*)
+ openbsd*)
with_gnu_ld=no
;;
esac
@@ -13550,7 +13780,7 @@ _LT_EOF
fi
;;
- cygwin* | mingw* | pw32* | cegcc*)
+ cygwin* | mingw* | windows* | pw32* | cegcc*)
# _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
# as there is no search path for DLLs.
hardcode_libdir_flag_spec='-L$libdir'
@@ -13606,7 +13836,7 @@ _LT_EOF
cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
emximp -o $lib $output_objdir/$libname.def'
- old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+ old_archive_from_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
enable_shared_with_static_runtimes=yes
file_list_spec='@'
;;
@@ -13951,8 +14181,8 @@ else
if test ${lt_cv_aix_libpath_+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+ e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
@@ -13984,7 +14214,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
if test -z "$lt_cv_aix_libpath_"; then
lt_cv_aix_libpath_=/usr/lib:/lib
fi
-
+ ;;
+esac
fi
aix_libpath=$lt_cv_aix_libpath_
@@ -14006,8 +14237,8 @@ else
if test ${lt_cv_aix_libpath_+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+ e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
@@ -14039,7 +14270,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
if test -z "$lt_cv_aix_libpath_"; then
lt_cv_aix_libpath_=/usr/lib:/lib
fi
-
+ ;;
+esac
fi
aix_libpath=$lt_cv_aix_libpath_
@@ -14095,7 +14327,7 @@ fi
export_dynamic_flag_spec=-rdynamic
;;
- cygwin* | mingw* | pw32* | cegcc*)
+ cygwin* | mingw* | windows* | pw32* | cegcc*)
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++ or Intel C++ Compiler.
# hardcode_libdir_flag_spec is actually meaningless, as there is
@@ -14112,14 +14344,14 @@ fi
# Tell ltmain to make .dll files, not .so files.
shrext_cmds=.dll
# FIXME: Setting linknames here is a bad hack.
- archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+ archive_cmds='$CC -Fe $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then
cp "$export_symbols" "$output_objdir/$soname.def";
echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
else
$SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
fi~
- $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+ $CC -Fe $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
linknames='
# The linker will not automatically build a static lib if we build a DLL.
# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
@@ -14290,8 +14522,8 @@ printf %s "checking if $CC understands -b... " >&6; }
if test ${lt_cv_prog_compiler__b+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- lt_cv_prog_compiler__b=no
+else case e in #(
+ e) lt_cv_prog_compiler__b=no
save_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS -b"
echo "$lt_simple_link_test_code" > conftest.$ac_ext
@@ -14312,7 +14544,8 @@ else $as_nop
fi
$RM -r conftest*
LDFLAGS=$save_LDFLAGS
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
printf "%s\n" "$lt_cv_prog_compiler__b" >&6; }
@@ -14360,8 +14593,8 @@ printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&
if test ${lt_cv_irix_exported_symbol+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- save_LDFLAGS=$LDFLAGS
+else case e in #(
+ e) save_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -14370,12 +14603,14 @@ _ACEOF
if ac_fn_c_try_link "$LINENO"
then :
lt_cv_irix_exported_symbol=yes
-else $as_nop
- lt_cv_irix_exported_symbol=no
+else case e in #(
+ e) lt_cv_irix_exported_symbol=no ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
- LDFLAGS=$save_LDFLAGS
+ LDFLAGS=$save_LDFLAGS ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; }
@@ -14425,7 +14660,7 @@ printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; }
*nto* | *qnx*)
;;
- openbsd* | bitrig*)
+ openbsd*)
if test -f /usr/libexec/ld.so; then
hardcode_direct=yes
hardcode_shlibpath_var=no
@@ -14468,7 +14703,7 @@ printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; }
cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
emximp -o $lib $output_objdir/$libname.def'
- old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+ old_archive_from_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
enable_shared_with_static_runtimes=yes
file_list_spec='@'
;;
@@ -14701,8 +14936,8 @@ printf %s "checking whether -lc should be explicitly linked in... " >&6; }
if test ${lt_cv_archive_cmds_need_lc+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- $RM conftest*
+else case e in #(
+ e) $RM conftest*
echo "$lt_simple_compile_test_code" > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
@@ -14738,7 +14973,8 @@ else $as_nop
cat conftest.err 1>&5
fi
$RM conftest*
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; }
@@ -14909,7 +15145,7 @@ if test yes = "$GCC"; then
*) lt_awk_arg='/^libraries:/' ;;
esac
case $host_os in
- mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;;
+ mingw* | windows* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;;
*) lt_sed_strip_eq='s|=/|/|g' ;;
esac
lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
@@ -14967,7 +15203,7 @@ BEGIN {RS = " "; FS = "/|\n";} {
# AWK program above erroneously prepends '/' to C:/dos/paths
# for these hosts.
case $host_os in
- mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+ mingw* | windows* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
$SED 's|/\([A-Za-z]:\)|\1|g'` ;;
esac
sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
@@ -15135,7 +15371,7 @@ bsdi[45]*)
# libtool to hard-code these into programs
;;
-cygwin* | mingw* | pw32* | cegcc*)
+cygwin* | mingw* | windows* | pw32* | cegcc*)
version_type=windows
shrext_cmds=.dll
need_version=no
@@ -15167,7 +15403,7 @@ cygwin* | mingw* | pw32* | cegcc*)
sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
;;
- mingw* | cegcc*)
+ mingw* | windows* | cegcc*)
# MinGW DLLs use traditional 'lib' prefix
soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
;;
@@ -15186,7 +15422,7 @@ cygwin* | mingw* | pw32* | cegcc*)
library_names_spec='$libname.dll.lib'
case $build_os in
- mingw*)
+ mingw* | windows*)
sys_lib_search_path_spec=
lt_save_ifs=$IFS
IFS=';'
@@ -15434,7 +15670,7 @@ linux*android*)
version_type=none # Android doesn't support versioned libraries.
need_lib_prefix=no
need_version=no
- library_names_spec='$libname$release$shared_ext'
+ library_names_spec='$libname$release$shared_ext $libname$shared_ext'
soname_spec='$libname$release$shared_ext'
finish_cmds=
shlibpath_var=LD_LIBRARY_PATH
@@ -15446,8 +15682,9 @@ linux*android*)
hardcode_into_libs=yes
dynamic_linker='Android linker'
- # Don't embed -rpath directories since the linker doesn't support them.
- hardcode_libdir_flag_spec='-L$libdir'
+ # -rpath works at least for libraries that are not overridden by
+ # libraries installed in system locations.
+ hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
;;
# This must be glibc/ELF.
@@ -15465,8 +15702,8 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
if test ${lt_cv_shlibpath_overrides_runpath+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- lt_cv_shlibpath_overrides_runpath=no
+else case e in #(
+ e) lt_cv_shlibpath_overrides_runpath=no
save_LDFLAGS=$LDFLAGS
save_libdir=$libdir
eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
@@ -15493,7 +15730,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LDFLAGS=$save_LDFLAGS
libdir=$save_libdir
-
+ ;;
+esac
fi
shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
@@ -15503,7 +15741,7 @@ fi
# before this can be enabled.
hardcode_into_libs=yes
- # Ideally, we could use ldconfig to report *all* directores which are
+ # Ideally, we could use ldconfig to report *all* directories which are
# searched for libraries, however this is still not possible. Aside from not
# being certain /sbin/ldconfig is available, command
# 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
@@ -15560,7 +15798,7 @@ newsos6)
dynamic_linker='ldqnx.so'
;;
-openbsd* | bitrig*)
+openbsd*)
version_type=sunos
sys_lib_dlsearch_path_spec=/usr/lib
need_lib_prefix=no
@@ -15901,7 +16139,7 @@ else
lt_cv_dlopen_self=yes
;;
- mingw* | pw32* | cegcc*)
+ mingw* | windows* | pw32* | cegcc*)
lt_cv_dlopen=LoadLibrary
lt_cv_dlopen_libs=
;;
@@ -15918,16 +16156,22 @@ printf %s "checking for dlopen in -ldl... " >&6; }
if test ${ac_cv_lib_dl_dlopen+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- ac_check_lib_save_LIBS=$LIBS
+else case e in #(
+ e) ac_check_lib_save_LIBS=$LIBS
LIBS="-ldl $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-char dlopen ();
+ builtin and then its argument prototype would still apply.
+ The 'extern "C"' is for builds by C++ compilers;
+ although this is not generally supported in C code supporting it here
+ has little cost and some practical benefit (sr 110532). */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen (void);
int
main (void)
{
@@ -15939,24 +16183,27 @@ _ACEOF
if ac_fn_c_try_link "$LINENO"
then :
ac_cv_lib_dl_dlopen=yes
-else $as_nop
- ac_cv_lib_dl_dlopen=no
+else case e in #(
+ e) ac_cv_lib_dl_dlopen=no ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+LIBS=$ac_check_lib_save_LIBS ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; }
if test "x$ac_cv_lib_dl_dlopen" = xyes
then :
lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
-else $as_nop
-
+else case e in #(
+ e)
lt_cv_dlopen=dyld
lt_cv_dlopen_libs=
lt_cv_dlopen_self=yes
-
+ ;;
+esac
fi
;;
@@ -15974,22 +16221,28 @@ fi
if test "x$ac_cv_func_shl_load" = xyes
then :
lt_cv_dlopen=shl_load
-else $as_nop
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+else case e in #(
+ e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
printf %s "checking for shl_load in -ldld... " >&6; }
if test ${ac_cv_lib_dld_shl_load+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- ac_check_lib_save_LIBS=$LIBS
+else case e in #(
+ e) ac_check_lib_save_LIBS=$LIBS
LIBS="-ldld $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-char shl_load ();
+ builtin and then its argument prototype would still apply.
+ The 'extern "C"' is for builds by C++ compilers;
+ although this is not generally supported in C code supporting it here
+ has little cost and some practical benefit (sr 110532). */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load (void);
int
main (void)
{
@@ -16001,39 +16254,47 @@ _ACEOF
if ac_fn_c_try_link "$LINENO"
then :
ac_cv_lib_dld_shl_load=yes
-else $as_nop
- ac_cv_lib_dld_shl_load=no
+else case e in #(
+ e) ac_cv_lib_dld_shl_load=no ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+LIBS=$ac_check_lib_save_LIBS ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; }
if test "x$ac_cv_lib_dld_shl_load" = xyes
then :
lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld
-else $as_nop
- ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+else case e in #(
+ e) ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
if test "x$ac_cv_func_dlopen" = xyes
then :
lt_cv_dlopen=dlopen
-else $as_nop
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+else case e in #(
+ e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
printf %s "checking for dlopen in -ldl... " >&6; }
if test ${ac_cv_lib_dl_dlopen+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- ac_check_lib_save_LIBS=$LIBS
+else case e in #(
+ e) ac_check_lib_save_LIBS=$LIBS
LIBS="-ldl $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-char dlopen ();
+ builtin and then its argument prototype would still apply.
+ The 'extern "C"' is for builds by C++ compilers;
+ although this is not generally supported in C code supporting it here
+ has little cost and some practical benefit (sr 110532). */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen (void);
int
main (void)
{
@@ -16045,34 +16306,42 @@ _ACEOF
if ac_fn_c_try_link "$LINENO"
then :
ac_cv_lib_dl_dlopen=yes
-else $as_nop
- ac_cv_lib_dl_dlopen=no
+else case e in #(
+ e) ac_cv_lib_dl_dlopen=no ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+LIBS=$ac_check_lib_save_LIBS ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; }
if test "x$ac_cv_lib_dl_dlopen" = xyes
then :
lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
-else $as_nop
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+else case e in #(
+ e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
printf %s "checking for dlopen in -lsvld... " >&6; }
if test ${ac_cv_lib_svld_dlopen+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- ac_check_lib_save_LIBS=$LIBS
+else case e in #(
+ e) ac_check_lib_save_LIBS=$LIBS
LIBS="-lsvld $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-char dlopen ();
+ builtin and then its argument prototype would still apply.
+ The 'extern "C"' is for builds by C++ compilers;
+ although this is not generally supported in C code supporting it here
+ has little cost and some practical benefit (sr 110532). */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen (void);
int
main (void)
{
@@ -16084,34 +16353,42 @@ _ACEOF
if ac_fn_c_try_link "$LINENO"
then :
ac_cv_lib_svld_dlopen=yes
-else $as_nop
- ac_cv_lib_svld_dlopen=no
+else case e in #(
+ e) ac_cv_lib_svld_dlopen=no ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+LIBS=$ac_check_lib_save_LIBS ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; }
if test "x$ac_cv_lib_svld_dlopen" = xyes
then :
lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld
-else $as_nop
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+else case e in #(
+ e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
printf %s "checking for dld_link in -ldld... " >&6; }
if test ${ac_cv_lib_dld_dld_link+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- ac_check_lib_save_LIBS=$LIBS
+else case e in #(
+ e) ac_check_lib_save_LIBS=$LIBS
LIBS="-ldld $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-char dld_link ();
+ builtin and then its argument prototype would still apply.
+ The 'extern "C"' is for builds by C++ compilers;
+ although this is not generally supported in C code supporting it here
+ has little cost and some practical benefit (sr 110532). */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link (void);
int
main (void)
{
@@ -16123,12 +16400,14 @@ _ACEOF
if ac_fn_c_try_link "$LINENO"
then :
ac_cv_lib_dld_dld_link=yes
-else $as_nop
- ac_cv_lib_dld_dld_link=no
+else case e in #(
+ e) ac_cv_lib_dld_dld_link=no ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+LIBS=$ac_check_lib_save_LIBS ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; }
@@ -16137,19 +16416,24 @@ then :
lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld
fi
-
+ ;;
+esac
fi
-
+ ;;
+esac
fi
-
+ ;;
+esac
fi
-
+ ;;
+esac
fi
-
+ ;;
+esac
fi
;;
@@ -16177,8 +16461,8 @@ printf %s "checking whether a program can dlopen itself... " >&6; }
if test ${lt_cv_dlopen_self+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test yes = "$cross_compiling"; then :
+else case e in #(
+ e) if test yes = "$cross_compiling"; then :
lt_cv_dlopen_self=cross
else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
@@ -16272,7 +16556,8 @@ _LT_EOF
fi
rm -fr conftest*
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
printf "%s\n" "$lt_cv_dlopen_self" >&6; }
@@ -16284,8 +16569,8 @@ printf %s "checking whether a statically linked program can dlopen itself... " >
if test ${lt_cv_dlopen_self_static+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test yes = "$cross_compiling"; then :
+else case e in #(
+ e) if test yes = "$cross_compiling"; then :
lt_cv_dlopen_self_static=cross
else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
@@ -16379,7 +16664,8 @@ _LT_EOF
fi
rm -fr conftest*
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
printf "%s\n" "$lt_cv_dlopen_self_static" >&6; }
@@ -16553,8 +16839,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_RC+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$RC"; then
+else case e in #(
+ e) if test -n "$RC"; then
ac_cv_prog_RC="$RC" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -16576,7 +16862,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
RC=$ac_cv_prog_RC
if test -n "$RC"; then
@@ -16598,8 +16885,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_RC+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$ac_ct_RC"; then
+else case e in #(
+ e) if test -n "$ac_ct_RC"; then
ac_cv_prog_ac_ct_RC="$ac_ct_RC" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -16621,7 +16908,8 @@ done
done
IFS=$as_save_IFS
-fi
+fi ;;
+esac
fi
ac_ct_RC=$ac_cv_prog_ac_ct_RC
if test -n "$ac_ct_RC"; then
@@ -16752,8 +17040,9 @@ printf %s "checking if library symbol versioning should be used... " >&6; }
if test ${enable_symbol_versions+y}
then :
enableval=$enable_symbol_versions;
-else $as_nop
- enable_symbol_versions=auto
+else case e in #(
+ e) enable_symbol_versions=auto ;;
+esac
fi
if test "x$enable_symbol_versions" = xauto; then
@@ -16786,57 +17075,96 @@ fi
# --with-pic and --without-pic though. As long as neither --with-pic nor
# --without-pic is used then we can use #ifdef PIC to detect if the file is
# being built for a shared library.
-if test "x$enable_symbol_versions" = xno ; then
+if test "x$enable_symbol_versions" = xno
+then :
+
enable_symbol_versions=no
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
-elif test "x$enable_shared" = xno ; then
+
+elif test "x$enable_shared" = xno
+then :
+
enable_symbol_versions=no
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no (not building a shared library)" >&5
printf "%s\n" "no (not building a shared library)" >&6; }
-else
- case "$host_cpu-$host_os" in
- microblaze*)
- # GCC 12 on MicroBlaze doesn't support __symver__
- # attribute. It's simplest and safest to use the
- # generic version on that platform since then only
- # the linker script is needed. The RHEL/CentOS 7
- # compatibility symbols don't matter on MicroBlaze.
- enable_symbol_versions=generic
- ;;
- *-linux*)
- case "$pic_mode-$enable_static" in
- default-*)
- # Use symvers if PIC is defined.
- have_symbol_versions_linux=2
- ;;
- *-no)
- # Not building static library.
- # Use symvers unconditionally.
- have_symbol_versions_linux=1
- ;;
- *)
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5
+
+else case e in #(
+ e)
+ # "yes" means that symbol version are to be used but we need to
+ # autodetect which variant to use.
+ if test "x$enable_symbol_versions" = xyes ; then
+ case "$host_cpu-$host_os" in
+ microblaze*)
+ # GCC 12 on MicroBlaze doesn't support
+ # __symver__ attribute. It's simplest and
+ # safest to use the generic version on that
+ # platform since then only the linker script
+ # is needed. The RHEL/CentOS 7 compatibility
+ # symbols don't matter on MicroBlaze.
+ enable_symbol_versions=generic
+ ;;
+ *-linux*)
+ # NVIDIA HPC Compiler doesn't support symbol
+ # versioning but the linker script can still
+ # be used.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __NVCOMPILER
+ use_generic_symbol_versioning
+ #endif
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP_TRADITIONAL "use_generic_symbol_versioning" >/dev/null 2>&1
+then :
+ enable_symbol_versions=generic
+else case e in #(
+ e) enable_symbol_versions=linux ;;
+esac
+fi
+rm -rf conftest*
+
+ ;;
+ *)
+ enable_symbol_versions=generic
+ ;;
+ esac
+ fi
+
+ if test "x$enable_symbol_versions" = xlinux ; then
+ case "$pic_mode-$enable_static" in
+ default-*)
+ # Use symvers if PIC is defined.
+ have_symbol_versions_linux=2
+ ;;
+ *-no)
+ # Not building static library.
+ # Use symvers unconditionally.
+ have_symbol_versions_linux=1
+ ;;
+ *)
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5
printf "%s\n" "" >&6; }
- as_fn_error $? "
+ as_fn_error $? "
On GNU/Linux, building both shared and static library at the same time
is not supported if --with-pic or --without-pic is used.
Use either --disable-shared or --disable-static to build one type
of library at a time. If both types are needed, build one at a time,
possibly picking only src/liblzma/.libs/liblzma.a from the static build." "$LINENO" 5
- ;;
- esac
- enable_symbol_versions=linux
+ ;;
+ esac
printf "%s\n" "#define HAVE_SYMBOL_VERSIONS_LINUX $have_symbol_versions_linux" >>confdefs.h
- ;;
- *)
- enable_symbol_versions=generic
- ;;
- esac
+ elif test "x$enable_symbol_versions" != xgeneric ; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5
+printf "%s\n" "" >&6; }
+ as_fn_error $? "unknown symbol versioning variant '$enable_symbol_versions'" "$LINENO" 5
+ fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes ($enable_symbol_versions)" >&5
printf "%s\n" "yes ($enable_symbol_versions)" >&6; }
+ ;;
+esac
fi
if test "x$enable_symbol_versions" = xlinux; then
@@ -16872,8 +17200,9 @@ printf %s "checking whether NLS is requested... " >&6; }
if test ${enable_nls+y}
then :
enableval=$enable_nls; USE_NLS=$enableval
-else $as_nop
- USE_NLS=yes
+else case e in #(
+ e) USE_NLS=yes ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
@@ -16921,15 +17250,15 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_path_MSGFMT+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- case "$MSGFMT" in
+else case e in #(
+ e) case "$MSGFMT" in
[\\/]* | ?:[\\/]*)
ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
;;
*)
- ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+ gt_saved_IFS="$IFS"; IFS=$PATH_SEPARATOR
for ac_dir in $PATH; do
- IFS="$ac_save_IFS"
+ IFS="$gt_saved_IFS"
test -z "$ac_dir" && ac_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
@@ -16942,9 +17271,10 @@ else $as_nop
fi
done
done
- IFS="$ac_save_IFS"
+ IFS="$gt_saved_IFS"
test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":"
;;
+esac ;;
esac
fi
MSGFMT="$ac_cv_path_MSGFMT"
@@ -16963,8 +17293,8 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_path_GMSGFMT+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- case $GMSGFMT in
+else case e in #(
+ e) case $GMSGFMT in
[\\/]* | ?:[\\/]*)
ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
;;
@@ -16990,6 +17320,7 @@ IFS=$as_save_IFS
test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
;;
+esac ;;
esac
fi
GMSGFMT=$ac_cv_path_GMSGFMT
@@ -17044,15 +17375,15 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_path_XGETTEXT+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- case "$XGETTEXT" in
+else case e in #(
+ e) case "$XGETTEXT" in
[\\/]* | ?:[\\/]*)
ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
;;
*)
- ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+ gt_saved_IFS="$IFS"; IFS=$PATH_SEPARATOR
for ac_dir in $PATH; do
- IFS="$ac_save_IFS"
+ IFS="$gt_saved_IFS"
test -z "$ac_dir" && ac_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
@@ -17065,9 +17396,10 @@ else $as_nop
fi
done
done
- IFS="$ac_save_IFS"
+ IFS="$gt_saved_IFS"
test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
;;
+esac ;;
esac
fi
XGETTEXT="$ac_cv_path_XGETTEXT"
@@ -17122,15 +17454,15 @@ printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_path_MSGMERGE+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- case "$MSGMERGE" in
+else case e in #(
+ e) case "$MSGMERGE" in
[\\/]* | ?:[\\/]*)
ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path.
;;
*)
- ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+ gt_saved_IFS="$IFS"; IFS=$PATH_SEPARATOR
for ac_dir in $PATH; do
- IFS="$ac_save_IFS"
+ IFS="$gt_saved_IFS"
test -z "$ac_dir" && ac_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
@@ -17142,9 +17474,10 @@ else $as_nop
fi
done
done
- IFS="$ac_save_IFS"
+ IFS="$gt_saved_IFS"
test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":"
;;
+esac ;;
esac
fi
MSGMERGE="$ac_cv_path_MSGMERGE"
@@ -17185,10 +17518,10 @@ fi
else
acl_final_exec_prefix="$exec_prefix"
fi
- acl_save_prefix="$prefix"
+ acl_saved_prefix="$prefix"
prefix="$acl_final_prefix"
eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
- prefix="$acl_save_prefix"
+ prefix="$acl_saved_prefix"
@@ -17196,8 +17529,9 @@ fi
if test ${with_gnu_ld+y}
then :
withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
-else $as_nop
- with_gnu_ld=no
+else case e in #(
+ e) with_gnu_ld=no ;;
+esac
fi
# Prepare PATH_SEPARATOR.
@@ -17233,14 +17567,14 @@ else
if test ${acl_cv_path_LD+y}
then :
printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+ e)
acl_cv_path_LD= # Final result of this test
ac_prog=ld # Program to search in $PATH
if test "$GCC" = yes; then
# Check if gcc -print-prog-name=ld gives a path.
case $host in
- *-*-mingw*)
+ *-*-mingw* | windows*)
# gcc leaves a trailing carriage return which upsets mingw
acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
*)
@@ -17270,9 +17604,9 @@ else $as_nop
fi
if test -n "$ac_prog"; then
# Search for $ac_prog in $PATH.
- acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ acl_saved_IFS="$IFS"; IFS=$PATH_SEPARATOR
for ac_dir in $PATH; do
- IFS="$acl_save_ifs"
+ IFS="$acl_saved_IFS"
test -z "$ac_dir" && ac_dir=.
if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
acl_cv_path_LD="$ac_dir/$ac_prog"
@@ -17289,7 +17623,7 @@ else $as_nop
esac
fi
done
- IFS="$acl_save_ifs"
+ IFS="$acl_saved_IFS"
fi
case $host in
*-*-aix*)
@@ -17327,19 +17661,21 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
-else $as_nop
- # The compiler produces 32-bit code. Add option '-m elf32_sparc'
+else case e in #(
+ e) # The compiler produces 32-bit code. Add option '-m elf32_sparc'
# so that the linker groks 32-bit object files.
case "$acl_cv_path_LD " in
*" -m elf32_sparc "*) ;;
*) acl_cv_path_LD="$acl_cv_path_LD -m elf32_sparc" ;;
esac
-
+ ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
;;
esac
-
+ ;;
+esac
fi
LD="$acl_cv_path_LD"
@@ -17357,8 +17693,8 @@ printf %s "checking if the linker ($LD) is GNU ld... " >&6; }
if test ${acl_cv_prog_gnu_ld+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- # I'd rather use --version here, but apparently some GNU lds only accept -v.
+else case e in #(
+ e) # I'd rather use --version here, but apparently some GNU lds only accept -v.
case `$LD -v 2>&1 </dev/null` in
*GNU* | *'with BFD'*)
acl_cv_prog_gnu_ld=yes
@@ -17366,6 +17702,7 @@ case `$LD -v 2>&1 </dev/null` in
*)
acl_cv_prog_gnu_ld=no
;;
+esac ;;
esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5
@@ -17381,14 +17718,15 @@ printf %s "checking for shared library run path origin... " >&6; }
if test ${acl_cv_rpath+y}
then :
printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+ e)
CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
. ./conftest.sh
rm -f ./conftest.sh
acl_cv_rpath=done
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5
printf "%s\n" "$acl_cv_rpath" >&6; }
@@ -17405,8 +17743,9 @@ printf "%s\n" "$acl_cv_rpath" >&6; }
if test ${enable_rpath+y}
then :
enableval=$enable_rpath; :
-else $as_nop
- enable_rpath=yes
+else case e in #(
+ e) enable_rpath=yes ;;
+esac
fi
@@ -17417,263 +17756,67 @@ printf %s "checking 32-bit host C ABI... " >&6; }
if test ${gl_cv_host_cpu_c_abi_32bit+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if test -n "$gl_cv_host_cpu_c_abi"; then
- case "$gl_cv_host_cpu_c_abi" in
- i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc)
- gl_cv_host_cpu_c_abi_32bit=yes ;;
- x86_64 | alpha | arm64 | hppa64 | ia64 | mips64 | powerpc64 | powerpc64-elfv2 | riscv*-lp64* | s390x | sparc64 )
- gl_cv_host_cpu_c_abi_32bit=no ;;
- *)
- gl_cv_host_cpu_c_abi_32bit=unknown ;;
- esac
- else
- case "$host_cpu" in
-
- # CPUs that only support a 32-bit ABI.
- arc \
- | bfin \
- | cris* \
- | csky \
- | epiphany \
- | ft32 \
- | h8300 \
- | m68k \
- | microblaze | microblazeel \
- | nds32 | nds32le | nds32be \
- | nios2 | nios2eb | nios2el \
- | or1k* \
- | or32 \
- | sh | sh1234 | sh1234elb \
- | tic6x \
- | xtensa* )
- gl_cv_host_cpu_c_abi_32bit=yes
- ;;
-
- # CPUs that only support a 64-bit ABI.
- alpha | alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] \
- | mmix )
- gl_cv_host_cpu_c_abi_32bit=no
- ;;
-
- i[34567]86 )
- gl_cv_host_cpu_c_abi_32bit=yes
- ;;
-
- x86_64 )
- # On x86_64 systems, the C compiler may be generating code in one of
- # these ABIs:
- # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64.
- # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64
- # with native Windows (mingw, MSVC).
- # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32.
- # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#if (defined __x86_64__ || defined __amd64__ \
- || defined _M_X64 || defined _M_AMD64) \
- && !(defined __ILP32__ || defined _ILP32)
- int ok;
- #else
- error fail
- #endif
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- gl_cv_host_cpu_c_abi_32bit=no
-else $as_nop
- gl_cv_host_cpu_c_abi_32bit=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- ;;
-
- arm* | aarch64 )
- # Assume arm with EABI.
- # On arm64 systems, the C compiler may be generating code in one of
- # these ABIs:
- # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64.
- # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32.
- # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#if defined __aarch64__ && !(defined __ILP32__ || defined _ILP32)
- int ok;
- #else
- error fail
- #endif
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- gl_cv_host_cpu_c_abi_32bit=no
-else $as_nop
- gl_cv_host_cpu_c_abi_32bit=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- ;;
-
- hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
- # On hppa, the C compiler may be generating 32-bit code or 64-bit
- # code. In the latter case, it defines _LP64 and __LP64__.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifdef __LP64__
- int ok;
- #else
- error fail
- #endif
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- gl_cv_host_cpu_c_abi_32bit=no
-else $as_nop
- gl_cv_host_cpu_c_abi_32bit=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- ;;
-
- ia64* )
- # On ia64 on HP-UX, the C compiler may be generating 64-bit code or
- # 32-bit code. In the latter case, it defines _ILP32.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifdef _ILP32
- int ok;
- #else
- error fail
- #endif
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- gl_cv_host_cpu_c_abi_32bit=yes
-else $as_nop
- gl_cv_host_cpu_c_abi_32bit=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- ;;
-
- mips* )
- # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this
- # at 32.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64)
- int ok;
- #else
- error fail
- #endif
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- gl_cv_host_cpu_c_abi_32bit=no
-else $as_nop
- gl_cv_host_cpu_c_abi_32bit=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- ;;
-
- powerpc* )
- # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD.
- # No need to distinguish them here; the caller may distinguish
- # them based on the OS.
- # On powerpc64 systems, the C compiler may still be generating
- # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may
- # be generating 64-bit code.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#if defined __powerpc64__ || defined __LP64__
- int ok;
- #else
- error fail
- #endif
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- gl_cv_host_cpu_c_abi_32bit=no
-else $as_nop
- gl_cv_host_cpu_c_abi_32bit=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- ;;
-
- rs6000 )
- gl_cv_host_cpu_c_abi_32bit=yes
- ;;
-
- riscv32 | riscv64 )
- # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d.
- # Size of 'long' and 'void *':
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#if defined __LP64__
- int ok;
- #else
- error fail
- #endif
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- gl_cv_host_cpu_c_abi_32bit=no
-else $as_nop
- gl_cv_host_cpu_c_abi_32bit=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- ;;
-
- s390* )
- # On s390x, the C compiler may be generating 64-bit (= s390x) code
- # or 31-bit (= s390) code.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#if defined __LP64__ || defined __s390x__
- int ok;
- #else
- error fail
- #endif
+else case e in #(
+ e) case "$host_cpu" in
+
+ # CPUs that only support a 32-bit ABI.
+ arc \
+ | bfin \
+ | cris* \
+ | csky \
+ | epiphany \
+ | ft32 \
+ | h8300 \
+ | m68k \
+ | microblaze | microblazeel \
+ | nds32 | nds32le | nds32be \
+ | nios2 | nios2eb | nios2el \
+ | or1k* \
+ | or32 \
+ | sh | sh1234 | sh1234elb \
+ | tic6x \
+ | xtensa* )
+ gl_cv_host_cpu_c_abi_32bit=yes
+ ;;
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- gl_cv_host_cpu_c_abi_32bit=no
-else $as_nop
- gl_cv_host_cpu_c_abi_32bit=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- ;;
+ # CPUs that only support a 64-bit ABI.
+ alpha | alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] \
+ | mmix )
+ gl_cv_host_cpu_c_abi_32bit=no
+ ;;
- sparc | sparc64 )
- # UltraSPARCs running Linux have `uname -m` = "sparc64", but the
- # C compiler still generates 32-bit code.
+ *)
+ if test -n "$gl_cv_host_cpu_c_abi"; then
+ case "$gl_cv_host_cpu_c_abi" in
+ i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc)
+ gl_cv_host_cpu_c_abi_32bit=yes ;;
+ x86_64 | alpha | arm64 | aarch64c | hppa64 | ia64 | mips64 | powerpc64 | powerpc64-elfv2 | riscv*-lp64* | s390x | sparc64 )
+ gl_cv_host_cpu_c_abi_32bit=no ;;
+ *)
+ gl_cv_host_cpu_c_abi_32bit=unknown ;;
+ esac
+ else
+ gl_cv_host_cpu_c_abi_32bit=unknown
+ fi
+ if test $gl_cv_host_cpu_c_abi_32bit = unknown; then
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#if defined __sparcv9 || defined __arch64__
- int ok;
- #else
- error fail
- #endif
+int test_pointer_size[sizeof (void *) - 5];
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
gl_cv_host_cpu_c_abi_32bit=no
-else $as_nop
- gl_cv_host_cpu_c_abi_32bit=yes
+else case e in #(
+ e) gl_cv_host_cpu_c_abi_32bit=yes ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- ;;
-
- *)
- gl_cv_host_cpu_c_abi_32bit=unknown
- ;;
- esac
- fi
-
+ fi
+ ;;
+ esac
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi_32bit" >&5
printf "%s\n" "$gl_cv_host_cpu_c_abi_32bit" >&6; }
@@ -17689,8 +17832,8 @@ printf %s "checking for ELF binary format... " >&6; }
if test ${gl_cv_elf+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+ e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#if defined __ELF__ || (defined __linux__ && defined __EDG__)
Extensible Linking Format
@@ -17698,15 +17841,17 @@ else $as_nop
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "Extensible Linking Format" >/dev/null 2>&1
+ $EGREP_TRADITIONAL "Extensible Linking Format" >/dev/null 2>&1
then :
gl_cv_elf=yes
-else $as_nop
- gl_cv_elf=no
+else case e in #(
+ e) gl_cv_elf=no ;;
+esac
fi
rm -rf conftest*
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_elf" >&5
printf "%s\n" "$gl_cv_elf" >&6; }
@@ -17765,8 +17910,8 @@ printf %s "checking for the common suffixes of directories in the library search
if test ${acl_cv_libdirstems+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- acl_libdirstem=lib
+else case e in #(
+ e) acl_libdirstem=lib
acl_libdirstem2=
acl_libdirstem3=
case "$host_os" in
@@ -17779,6 +17924,13 @@ else $as_nop
esac
fi
;;
+ netbsd*)
+ if test $HOST_CPU_C_ABI_32BIT != no; then
+ case "$host_cpu" in
+ sparc*) acl_libdirstem2=lib/sparc ;;
+ esac
+ fi
+ ;;
*)
searchpath=`(LC_ALL=C $CC $CPPFLAGS $CFLAGS -print-search-dirs) 2>/dev/null \
| sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
@@ -17795,7 +17947,7 @@ else $as_nop
fi
fi
if test -n "$searchpath"; then
- acl_save_IFS="${IFS= }"; IFS=":"
+ acl_saved_IFS="${IFS= }"; IFS=":"
for searchdir in $searchpath; do
if test -d "$searchdir"; then
case "$searchdir" in
@@ -17812,7 +17964,7 @@ else $as_nop
esac
fi
done
- IFS="$acl_save_IFS"
+ IFS="$acl_saved_IFS"
if test $HOST_CPU_C_ABI_32BIT = yes; then
# 32-bit ABI.
acl_libdirstem3=
@@ -17827,7 +17979,8 @@ else $as_nop
test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
test -n "$acl_libdirstem3" || acl_libdirstem3="$acl_libdirstem"
acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2,$acl_libdirstem3"
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_libdirstems" >&5
printf "%s\n" "$acl_cv_libdirstems" >&6; }
@@ -17847,9 +18000,9 @@ printf "%s\n" "$acl_cv_libdirstems" >&6; }
use_additional=yes
- acl_save_prefix="$prefix"
+ acl_saved_prefix="$prefix"
prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
+ acl_saved_exec_prefix="$exec_prefix"
exec_prefix="$acl_final_exec_prefix"
eval additional_includedir=\"$includedir\"
@@ -17857,8 +18010,8 @@ printf "%s\n" "$acl_cv_libdirstems" >&6; }
eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\"
eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+ exec_prefix="$acl_saved_exec_prefix"
+ prefix="$acl_saved_prefix"
# Check whether --with-libiconv-prefix was given.
@@ -17870,9 +18023,9 @@ then :
else
if test "X$withval" = "X"; then
- acl_save_prefix="$prefix"
+ acl_saved_prefix="$prefix"
prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
+ acl_saved_exec_prefix="$exec_prefix"
exec_prefix="$acl_final_exec_prefix"
eval additional_includedir=\"$includedir\"
@@ -17880,8 +18033,8 @@ then :
eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\"
eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+ exec_prefix="$acl_saved_exec_prefix"
+ prefix="$acl_saved_prefix"
else
additional_includedir="$withval/include"
@@ -17993,13 +18146,13 @@ fi
if test "X$found_dir" = "X"; then
for x in $LDFLAGS $LTLIBICONV; do
- acl_save_prefix="$prefix"
+ acl_saved_prefix="$prefix"
prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
+ acl_saved_exec_prefix="$exec_prefix"
exec_prefix="$acl_final_exec_prefix"
eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+ exec_prefix="$acl_saved_exec_prefix"
+ prefix="$acl_saved_prefix"
case "$x" in
-L*)
@@ -18087,13 +18240,13 @@ fi
haveit=
for x in $LDFLAGS $LIBICONV; do
- acl_save_prefix="$prefix"
+ acl_saved_prefix="$prefix"
prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
+ acl_saved_exec_prefix="$exec_prefix"
exec_prefix="$acl_final_exec_prefix"
eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+ exec_prefix="$acl_saved_exec_prefix"
+ prefix="$acl_saved_prefix"
if test "X$x" = "X-L$found_dir"; then
haveit=yes
@@ -18155,13 +18308,13 @@ fi
if test -z "$haveit"; then
for x in $CPPFLAGS $INCICONV; do
- acl_save_prefix="$prefix"
+ acl_saved_prefix="$prefix"
prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
+ acl_saved_exec_prefix="$exec_prefix"
exec_prefix="$acl_final_exec_prefix"
eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+ exec_prefix="$acl_saved_exec_prefix"
+ prefix="$acl_saved_prefix"
if test "X$x" = "X-I$additional_includedir"; then
haveit=yes
@@ -18177,12 +18330,12 @@ fi
fi
fi
if test -n "$found_la"; then
- save_libdir="$libdir"
+ saved_libdir="$libdir"
case "$found_la" in
*/* | *\\*) . "$found_la" ;;
*) . "./$found_la" ;;
esac
- libdir="$save_libdir"
+ libdir="$saved_libdir"
for dep in $dependency_libs; do
case "$dep" in
-L*)
@@ -18204,13 +18357,13 @@ fi
haveit=
for x in $LDFLAGS $LIBICONV; do
- acl_save_prefix="$prefix"
+ acl_saved_prefix="$prefix"
prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
+ acl_saved_exec_prefix="$exec_prefix"
exec_prefix="$acl_final_exec_prefix"
eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+ exec_prefix="$acl_saved_exec_prefix"
+ prefix="$acl_saved_prefix"
if test "X$x" = "X-L$dependency_libdir"; then
haveit=yes
@@ -18225,13 +18378,13 @@ fi
haveit=
for x in $LDFLAGS $LTLIBICONV; do
- acl_save_prefix="$prefix"
+ acl_saved_prefix="$prefix"
prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
+ acl_saved_exec_prefix="$exec_prefix"
exec_prefix="$acl_final_exec_prefix"
eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+ exec_prefix="$acl_saved_exec_prefix"
+ prefix="$acl_saved_prefix"
if test "X$x" = "X-L$dependency_libdir"; then
haveit=yes
@@ -18305,17 +18458,17 @@ fi
for found_dir in $rpathdirs; do
alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
done
- acl_save_libdir="$libdir"
+ acl_saved_libdir="$libdir"
libdir="$alldirs"
eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
+ libdir="$acl_saved_libdir"
LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
else
for found_dir in $rpathdirs; do
- acl_save_libdir="$libdir"
+ acl_saved_libdir="$libdir"
libdir="$found_dir"
eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
+ libdir="$acl_saved_libdir"
LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
done
fi
@@ -18332,6 +18485,15 @@ fi
+ gl_sed_double_backslashes='s/\\/\\\\/g'
+ gl_sed_escape_doublequotes='s/"/\\"/g'
+ gl_sed_escape_for_make_1="s,\\([ \"&'();<>\\\\\`|]\\),\\\\\\1,g"
+ gl_sed_escape_for_make_2='s,\$,\\$$,g'
+ case `echo r | tr -d '\r'` in
+ '') gl_tr_cr='\015' ;;
+ *) gl_tr_cr='\r' ;;
+ esac
+
@@ -18359,8 +18521,8 @@ printf %s "checking for CFPreferencesCopyAppValue... " >&6; }
if test ${gt_cv_func_CFPreferencesCopyAppValue+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- gt_save_LIBS="$LIBS"
+else case e in #(
+ e) gt_saved_LIBS="$LIBS"
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18376,12 +18538,14 @@ _ACEOF
if ac_fn_c_try_link "$LINENO"
then :
gt_cv_func_CFPreferencesCopyAppValue=yes
-else $as_nop
- gt_cv_func_CFPreferencesCopyAppValue=no
+else case e in #(
+ e) gt_cv_func_CFPreferencesCopyAppValue=no ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
- LIBS="$gt_save_LIBS"
+ LIBS="$gt_saved_LIBS" ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
printf "%s\n" "$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
@@ -18395,8 +18559,8 @@ printf %s "checking for CFLocaleCopyPreferredLanguages... " >&6; }
if test ${gt_cv_func_CFLocaleCopyPreferredLanguages+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- gt_save_LIBS="$LIBS"
+else case e in #(
+ e) gt_saved_LIBS="$LIBS"
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18412,12 +18576,14 @@ _ACEOF
if ac_fn_c_try_link "$LINENO"
then :
gt_cv_func_CFLocaleCopyPreferredLanguages=yes
-else $as_nop
- gt_cv_func_CFLocaleCopyPreferredLanguages=no
+else case e in #(
+ e) gt_cv_func_CFLocaleCopyPreferredLanguages=no ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
- LIBS="$gt_save_LIBS"
+ LIBS="$gt_saved_LIBS" ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyPreferredLanguages" >&5
printf "%s\n" "$gt_cv_func_CFLocaleCopyPreferredLanguages" >&6; }
@@ -18429,7 +18595,7 @@ printf "%s\n" "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h
INTL_MACOSX_LIBS=
if test $gt_cv_func_CFPreferencesCopyAppValue = yes \
|| test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
- INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation -Wl,-framework -Wl,CoreServices"
fi
@@ -18474,8 +18640,8 @@ printf %s "checking for GNU gettext in libc... " >&6; }
if eval test \${$gt_func_gnugettext_libc+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+ e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <libintl.h>
@@ -18502,11 +18668,13 @@ _ACEOF
if ac_fn_c_try_link "$LINENO"
then :
eval "$gt_func_gnugettext_libc=yes"
-else $as_nop
- eval "$gt_func_gnugettext_libc=no"
+else case e in #(
+ e) eval "$gt_func_gnugettext_libc=no" ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
+ conftest$ac_exeext conftest.$ac_ext ;;
+esac
fi
eval ac_res=\$$gt_func_gnugettext_libc
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
@@ -18518,19 +18686,19 @@ printf "%s\n" "$ac_res" >&6; }
- am_save_CPPFLAGS="$CPPFLAGS"
+ gl_saved_CPPFLAGS="$CPPFLAGS"
for element in $INCICONV; do
haveit=
for x in $CPPFLAGS; do
- acl_save_prefix="$prefix"
+ acl_saved_prefix="$prefix"
prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
+ acl_saved_exec_prefix="$exec_prefix"
exec_prefix="$acl_final_exec_prefix"
eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+ exec_prefix="$acl_saved_exec_prefix"
+ prefix="$acl_saved_prefix"
if test "X$x" = "X$element"; then
haveit=yes
@@ -18548,8 +18716,8 @@ printf %s "checking for iconv... " >&6; }
if test ${am_cv_func_iconv+y}
then :
printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+ e)
am_cv_func_iconv="no, consider installing GNU libiconv"
am_cv_lib_iconv=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -18575,7 +18743,7 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
if test "$am_cv_func_iconv" != yes; then
- am_save_LIBS="$LIBS"
+ gl_saved_LIBS="$LIBS"
LIBS="$LIBS $LIBICONV"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18600,9 +18768,10 @@ then :
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
- LIBS="$am_save_LIBS"
+ LIBS="$gl_saved_LIBS"
fi
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
printf "%s\n" "$am_cv_func_iconv" >&6; }
@@ -18612,9 +18781,9 @@ printf %s "checking for working iconv... " >&6; }
if test ${am_cv_func_iconv_works+y}
then :
printf %s "(cached) " >&6
-else $as_nop
-
- am_save_LIBS="$LIBS"
+else case e in #(
+ e)
+ gl_saved_LIBS="$LIBS"
if test $am_cv_lib_iconv = yes; then
LIBS="$LIBS $LIBICONV"
fi
@@ -18626,8 +18795,8 @@ then :
aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
*) am_cv_func_iconv_works="guessing yes" ;;
esac
-else $as_nop
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+ e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <iconv.h>
@@ -18756,13 +18925,15 @@ then :
am_cv_func_iconv_works=yes
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
+ conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
fi
test "$am_cv_func_iconv_works" = no || break
done
- LIBS="$am_save_LIBS"
-
+ LIBS="$gl_saved_LIBS"
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5
printf "%s\n" "$am_cv_func_iconv_works" >&6; }
@@ -18784,7 +18955,7 @@ printf %s "checking how to link with libiconv... " >&6; }
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5
printf "%s\n" "$LIBICONV" >&6; }
else
- CPPFLAGS="$am_save_CPPFLAGS"
+ CPPFLAGS="$gl_saved_CPPFLAGS"
LIBICONV=
LTLIBICONV=
fi
@@ -18800,9 +18971,9 @@ printf "%s\n" "$LIBICONV" >&6; }
use_additional=yes
- acl_save_prefix="$prefix"
+ acl_saved_prefix="$prefix"
prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
+ acl_saved_exec_prefix="$exec_prefix"
exec_prefix="$acl_final_exec_prefix"
eval additional_includedir=\"$includedir\"
@@ -18810,8 +18981,8 @@ printf "%s\n" "$LIBICONV" >&6; }
eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\"
eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+ exec_prefix="$acl_saved_exec_prefix"
+ prefix="$acl_saved_prefix"
# Check whether --with-libintl-prefix was given.
@@ -18823,9 +18994,9 @@ then :
else
if test "X$withval" = "X"; then
- acl_save_prefix="$prefix"
+ acl_saved_prefix="$prefix"
prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
+ acl_saved_exec_prefix="$exec_prefix"
exec_prefix="$acl_final_exec_prefix"
eval additional_includedir=\"$includedir\"
@@ -18833,8 +19004,8 @@ then :
eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\"
eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+ exec_prefix="$acl_saved_exec_prefix"
+ prefix="$acl_saved_prefix"
else
additional_includedir="$withval/include"
@@ -18946,13 +19117,13 @@ fi
if test "X$found_dir" = "X"; then
for x in $LDFLAGS $LTLIBINTL; do
- acl_save_prefix="$prefix"
+ acl_saved_prefix="$prefix"
prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
+ acl_saved_exec_prefix="$exec_prefix"
exec_prefix="$acl_final_exec_prefix"
eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+ exec_prefix="$acl_saved_exec_prefix"
+ prefix="$acl_saved_prefix"
case "$x" in
-L*)
@@ -19040,13 +19211,13 @@ fi
haveit=
for x in $LDFLAGS $LIBINTL; do
- acl_save_prefix="$prefix"
+ acl_saved_prefix="$prefix"
prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
+ acl_saved_exec_prefix="$exec_prefix"
exec_prefix="$acl_final_exec_prefix"
eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+ exec_prefix="$acl_saved_exec_prefix"
+ prefix="$acl_saved_prefix"
if test "X$x" = "X-L$found_dir"; then
haveit=yes
@@ -19108,13 +19279,13 @@ fi
if test -z "$haveit"; then
for x in $CPPFLAGS $INCINTL; do
- acl_save_prefix="$prefix"
+ acl_saved_prefix="$prefix"
prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
+ acl_saved_exec_prefix="$exec_prefix"
exec_prefix="$acl_final_exec_prefix"
eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+ exec_prefix="$acl_saved_exec_prefix"
+ prefix="$acl_saved_prefix"
if test "X$x" = "X-I$additional_includedir"; then
haveit=yes
@@ -19130,12 +19301,12 @@ fi
fi
fi
if test -n "$found_la"; then
- save_libdir="$libdir"
+ saved_libdir="$libdir"
case "$found_la" in
*/* | *\\*) . "$found_la" ;;
*) . "./$found_la" ;;
esac
- libdir="$save_libdir"
+ libdir="$saved_libdir"
for dep in $dependency_libs; do
case "$dep" in
-L*)
@@ -19157,13 +19328,13 @@ fi
haveit=
for x in $LDFLAGS $LIBINTL; do
- acl_save_prefix="$prefix"
+ acl_saved_prefix="$prefix"
prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
+ acl_saved_exec_prefix="$exec_prefix"
exec_prefix="$acl_final_exec_prefix"
eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+ exec_prefix="$acl_saved_exec_prefix"
+ prefix="$acl_saved_prefix"
if test "X$x" = "X-L$dependency_libdir"; then
haveit=yes
@@ -19178,13 +19349,13 @@ fi
haveit=
for x in $LDFLAGS $LTLIBINTL; do
- acl_save_prefix="$prefix"
+ acl_saved_prefix="$prefix"
prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
+ acl_saved_exec_prefix="$exec_prefix"
exec_prefix="$acl_final_exec_prefix"
eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+ exec_prefix="$acl_saved_exec_prefix"
+ prefix="$acl_saved_prefix"
if test "X$x" = "X-L$dependency_libdir"; then
haveit=yes
@@ -19258,17 +19429,17 @@ fi
for found_dir in $rpathdirs; do
alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
done
- acl_save_libdir="$libdir"
+ acl_saved_libdir="$libdir"
libdir="$alldirs"
eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
+ libdir="$acl_saved_libdir"
LIBINTL="${LIBINTL}${LIBINTL:+ }$flag"
else
for found_dir in $rpathdirs; do
- acl_save_libdir="$libdir"
+ acl_saved_libdir="$libdir"
libdir="$found_dir"
eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
+ libdir="$acl_saved_libdir"
LIBINTL="${LIBINTL}${LIBINTL:+ }$flag"
done
fi
@@ -19288,8 +19459,8 @@ printf %s "checking for GNU gettext in libintl... " >&6; }
if eval test \${$gt_func_gnugettext_libintl+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- gt_save_CPPFLAGS="$CPPFLAGS"
+else case e in #(
+ e) gt_save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $INCINTL"
gt_save_LIBS="$LIBS"
LIBS="$LIBS $LIBINTL"
@@ -19324,13 +19495,20 @@ _ACEOF
if ac_fn_c_try_link "$LINENO"
then :
eval "$gt_func_gnugettext_libintl=yes"
-else $as_nop
- eval "$gt_func_gnugettext_libintl=no"
+else case e in #(
+ e) eval "$gt_func_gnugettext_libintl=no" ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
- if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
- LIBS="$LIBS $LIBICONV"
+ gt_LIBINTL_EXTRA="$INTL_MACOSX_LIBS"
+
+ case "$host_os" in
+ aix*) gt_LIBINTL_EXTRA="-lpthread" ;;
+ esac
+ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } \
+ && { test -n "$LIBICONV" || test -n "$gt_LIBINTL_EXTRA"; }; then
+ LIBS="$LIBS $LIBICONV $gt_LIBINTL_EXTRA"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -19361,8 +19539,8 @@ return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
_ACEOF
if ac_fn_c_try_link "$LINENO"
then :
- LIBINTL="$LIBINTL $LIBICONV"
- LTLIBINTL="$LTLIBINTL $LTLIBICONV"
+ LIBINTL="$LIBINTL $LIBICONV $gt_LIBINTL_EXTRA"
+ LTLIBINTL="$LTLIBINTL $LTLIBICONV $gt_LIBINTL_EXTRA"
eval "$gt_func_gnugettext_libintl=yes"
fi
@@ -19370,7 +19548,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
CPPFLAGS="$gt_save_CPPFLAGS"
- LIBS="$gt_save_LIBS"
+ LIBS="$gt_save_LIBS" ;;
+esac
fi
eval ac_res=\$$gt_func_gnugettext_libintl
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
@@ -19380,7 +19559,8 @@ printf "%s\n" "$ac_res" >&6; }
if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
|| { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
&& test "$PACKAGE" != gettext-runtime \
- && test "$PACKAGE" != gettext-tools; }; then
+ && test "$PACKAGE" != gettext-tools \
+ && test "$PACKAGE" != libintl; }; then
gt_use_preinstalled_gnugettext=yes
else
LIBINTL=
@@ -19441,13 +19621,13 @@ printf "%s\n" "$LIBINTL" >&6; }
haveit=
for x in $CPPFLAGS; do
- acl_save_prefix="$prefix"
+ acl_saved_prefix="$prefix"
prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
+ acl_saved_exec_prefix="$exec_prefix"
exec_prefix="$acl_final_exec_prefix"
eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+ exec_prefix="$acl_saved_exec_prefix"
+ prefix="$acl_saved_prefix"
if test "X$x" = "X$element"; then
haveit=yes
@@ -19474,7 +19654,8 @@ printf "%s\n" "#define HAVE_DCGETTEXT 1" >>confdefs.h
- INTLLIBS="$LIBINTL"
+
+ INTLLIBS="$LIBINTL"
@@ -19482,6 +19663,43 @@ printf "%s\n" "#define HAVE_DCGETTEXT 1" >>confdefs.h
+ gt_save_prefix="${prefix}"
+ gt_save_datarootdir="${datarootdir}"
+ gt_save_localedir="${localedir}"
+ if test "X$prefix" = "XNONE"; then
+ prefix="$ac_default_prefix"
+ fi
+ eval datarootdir="$datarootdir"
+ eval localedir="$localedir"
+
+
+
+
+
+ gl_final_localedir="$localedir"
+ case "$build_os" in
+ cygwin*)
+ case "$host_os" in
+ mingw* | windows*)
+ gl_final_localedir=`cygpath -w "$gl_final_localedir"` ;;
+ esac
+ ;;
+ esac
+ localedir_c=`printf '%s\n' "$gl_final_localedir" | sed -e "$gl_sed_double_backslashes" -e "$gl_sed_escape_doublequotes" | tr -d "$gl_tr_cr"`
+ localedir_c='"'"$localedir_c"'"'
+
+
+ localedir_c_make=`printf '%s\n' "$localedir_c" | sed -e "$gl_sed_escape_for_make_1" -e "$gl_sed_escape_for_make_2" | tr -d "$gl_tr_cr"`
+ if test "$localedir_c_make" = '\"'"${gl_final_localedir}"'\"'; then
+ localedir_c_make='\"$(localedir)\"'
+ fi
+
+
+ localedir="${gt_save_localedir}"
+ datarootdir="${gt_save_datarootdir}"
+ prefix="${gt_save_prefix}"
+
+
###############################################################################
# Checks for header files.
@@ -19490,24 +19708,6 @@ printf "%s\n" "#define HAVE_DCGETTEXT 1" >>confdefs.h
echo
echo "System headers and functions:"
-# There is currently no workarounds in this package if some of
-# these headers are missing.
- for ac_header in fcntl.h limits.h sys/time.h
-do :
- as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"
-then :
- cat >>confdefs.h <<_ACEOF
-#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-else $as_nop
- as_fn_error $? "Required header file(s) are missing." "$LINENO" 5
-fi
-
-done
-
# immintrin.h allows the use of the intrinsic functions if they are available.
# cpuid.h may be used for detecting x86 processor features at runtime.
ac_fn_c_check_header_compile "$LINENO" "immintrin.h" "ac_cv_header_immintrin_h" "$ac_includes_default"
@@ -19538,25 +19738,25 @@ printf "%s\n" "#define HAVE__BOOL 1" >>confdefs.h
fi
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
-printf %s "checking for stdbool.h that conforms to C99... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99 or later" >&5
+printf %s "checking for stdbool.h that conforms to C99 or later... " >&6; }
if test ${ac_cv_header_stdbool_h+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+ e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdbool.h>
- #ifndef __bool_true_false_are_defined
- #error "__bool_true_false_are_defined is not defined"
- #endif
- char a[__bool_true_false_are_defined == 1 ? 1 : -1];
+ /* "true" and "false" should be usable in #if expressions and
+ integer constant expressions, and "bool" should be a valid
+ type name.
- /* Regardless of whether this is C++ or "_Bool" is a
- valid type name, "true" and "false" should be usable
- in #if expressions and integer constant expressions,
- and "bool" should be a valid type name. */
+ Although C99 requires bool, true, and false to be macros,
+ C23 and C++11 overrule that, so do not test for that.
+ Although C99 requires __bool_true_false_are_defined and
+ _Bool, C23 says they are obsolescent, so do not require
+ them. */
#if !true
#error "'true' is not true"
@@ -19590,43 +19790,12 @@ else $as_nop
char n[sizeof m == h * sizeof m[0] ? 1 : -1];
char o[-1 - (bool) 0 < 0 ? 1 : -1];
/* Catch a bug in an HP-UX C compiler. See
- https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
- https://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+ https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+ https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html
*/
bool p = true;
bool *pp = &p;
- /* C 1999 specifies that bool, true, and false are to be
- macros, but C++ 2011 and later overrule this. */
- #if __cplusplus < 201103
- #ifndef bool
- #error "bool is not defined"
- #endif
- #ifndef false
- #error "false is not defined"
- #endif
- #ifndef true
- #error "true is not defined"
- #endif
- #endif
-
- /* If _Bool is available, repeat with it all the tests
- above that used bool. */
- #ifdef HAVE__BOOL
- struct sB { _Bool s: 1; _Bool t; } t;
-
- char q[(_Bool) 0.5 == true ? 1 : -1];
- char r[(_Bool) 0.0 == false ? 1 : -1];
- char u[sizeof (_Bool) > 0 ? 1 : -1];
- char v[sizeof t.t > 0 ? 1 : -1];
-
- _Bool w[h];
- char x[sizeof m == h * sizeof m[0] ? 1 : -1];
- char y[-1 - (_Bool) 0 < 0 ? 1 : -1];
- _Bool z = true;
- _Bool *pz = &p;
- #endif
-
int
main (void)
{
@@ -19635,20 +19804,10 @@ main (void)
*pp |= p;
*pp |= ! p;
- #ifdef HAVE__BOOL
- _Bool pt = &t;
- *pz |= z;
- *pz |= ! z;
- #endif
-
/* Refer to every declared value, so they cannot be
discarded as unused. */
- return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !j + !k
- + !l + !m + !n + !o + !p + !pp + !ps
- #ifdef HAVE__BOOL
- + !q + !r + !u + !v + !w + !x + !y + !z + !pt
- #endif
- );
+ return (!b + !c + !d + !e + !f + !g + !h + !i + !j + !k
+ + !l + !m + !n + !o + !p + !pp + !ps);
;
return 0;
@@ -19657,10 +19816,12 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
ac_cv_header_stdbool_h=yes
-else $as_nop
- ac_cv_header_stdbool_h=no
+else case e in #(
+ e) ac_cv_header_stdbool_h=no ;;
+esac
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
printf "%s\n" "$ac_cv_header_stdbool_h" >&6; }
@@ -19743,8 +19904,8 @@ then :
printf "%s\n" "#define HAVE_UINTPTR_T 1" >>confdefs.h
-else $as_nop
- for ac_type in 'unsigned int' 'unsigned long int' \
+else case e in #(
+ e) for ac_type in 'unsigned int' 'unsigned long int' \
'unsigned long long int'; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -19769,35 +19930,38 @@ printf "%s\n" "#define uintptr_t $ac_type" >>confdefs.h
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
test -z "$ac_type" && break
- done
+ done ;;
+esac
fi
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5
printf %s "checking size of size_t... " >&6; }
if test ${ac_cv_sizeof_size_t+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default"
+else case e in #(
+ e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default"
then :
-else $as_nop
- if test "$ac_cv_type_size_t" = yes; then
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+else case e in #(
+ e) if test "$ac_cv_type_size_t" = yes; then
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (size_t)
-See \`config.log' for more details" "$LINENO" 5; }
+See 'config.log' for more details" "$LINENO" 5; }
else
ac_cv_sizeof_size_t=0
- fi
+ fi ;;
+esac
fi
-
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5
printf "%s\n" "$ac_cv_sizeof_size_t" >&6; }
@@ -19858,31 +20022,34 @@ if test ${enable_largefile+y}
then :
enableval=$enable_largefile;
fi
-
-if test "$enable_largefile" != no; then
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
-printf %s "checking for special C compiler options needed for large files... " >&6; }
-if test ${ac_cv_sys_largefile_CC+y}
+if test "$enable_largefile,$enable_year2038" != no,no
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable large file support" >&5
+printf %s "checking for $CC option to enable large file support... " >&6; }
+if test ${ac_cv_sys_largefile_opts+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- ac_cv_sys_largefile_CC=no
- if test "$GCC" != yes; then
- ac_save_CC=$CC
- while :; do
- # IRIX 6.2 and later do not support large files by default,
- # so use the C compiler's -n32 option if that helps.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+ e) ac_save_CC="$CC"
+ ac_opt_found=no
+ for ac_opt in "none needed" "-D_FILE_OFFSET_BITS=64" "-D_LARGE_FILES=1" "-n32"; do
+ if test x"$ac_opt" != x"none needed"
+then :
+ CC="$ac_save_CC $ac_opt"
+fi
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
+#ifndef FTYPE
+# define FTYPE off_t
+#endif
+ /* Check that FTYPE can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_FTYPE to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
+#define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31))
+ int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721
+ && LARGE_FTYPE % 2147483647 == 1)
? 1 : -1];
int
main (void)
@@ -19892,142 +20059,88 @@ main (void)
return 0;
}
_ACEOF
- if ac_fn_c_try_compile "$LINENO"
+if ac_fn_c_try_compile "$LINENO"
then :
- break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam
- CC="$CC -n32"
+ if test x"$ac_opt" = x"none needed"
+then :
+ # GNU/Linux s390x and alpha need _FILE_OFFSET_BITS=64 for wide ino_t.
+ CC="$CC -DFTYPE=ino_t"
if ac_fn_c_try_compile "$LINENO"
then :
- ac_cv_sys_largefile_CC=' -n32'; break
+
+else case e in #(
+ e) CC="$CC -D_FILE_OFFSET_BITS=64"
+ if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_opt='-D_FILE_OFFSET_BITS=64'
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam
- break
- done
- CC=$ac_save_CC
- rm -f conftest.$ac_ext
- fi
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
-printf "%s\n" "$ac_cv_sys_largefile_CC" >&6; }
- if test "$ac_cv_sys_largefile_CC" != no; then
- CC=$CC$ac_cv_sys_largefile_CC
- fi
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
-printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
-if test ${ac_cv_sys_file_offset_bits+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
- while :; do
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
-int
-main (void)
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- ac_cv_sys_file_offset_bits=no; break
+ ac_cv_sys_largefile_opts=$ac_opt
+ ac_opt_found=yes
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#define _FILE_OFFSET_BITS 64
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
-int
-main (void)
-{
+ test $ac_opt_found = no || break
+ done
+ CC="$ac_save_CC"
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- ac_cv_sys_file_offset_bits=64; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- ac_cv_sys_file_offset_bits=unknown
- break
-done
+ test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected" ;;
+esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
-printf "%s\n" "$ac_cv_sys_file_offset_bits" >&6; }
-case $ac_cv_sys_file_offset_bits in #(
- no | unknown) ;;
- *)
-printf "%s\n" "#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h
-;;
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_opts" >&5
+printf "%s\n" "$ac_cv_sys_largefile_opts" >&6; }
+
+ac_have_largefile=yes
+case $ac_cv_sys_largefile_opts in #(
+ "none needed") :
+ ;; #(
+ "supported through gnulib") :
+ ;; #(
+ "support not detected") :
+ ac_have_largefile=no ;; #(
+ "-D_FILE_OFFSET_BITS=64") :
+
+printf "%s\n" "#define _FILE_OFFSET_BITS 64" >>confdefs.h
+ ;; #(
+ "-D_LARGE_FILES=1") :
+
+printf "%s\n" "#define _LARGE_FILES 1" >>confdefs.h
+ ;; #(
+ "-n32") :
+ CC="$CC -n32" ;; #(
+ *) :
+ as_fn_error $? "internal error: bad value for \$ac_cv_sys_largefile_opts" "$LINENO" 5 ;;
esac
-rm -rf conftest*
- if test $ac_cv_sys_file_offset_bits = unknown; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
-printf %s "checking for _LARGE_FILES value needed for large files... " >&6; }
-if test ${ac_cv_sys_large_files+y}
+
+if test "$enable_year2038" != no
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option for timestamps after 2038" >&5
+printf %s "checking for $CC option for timestamps after 2038... " >&6; }
+if test ${ac_cv_sys_year2038_opts+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- while :; do
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
-int
-main (void)
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
+else case e in #(
+ e) ac_save_CPPFLAGS="$CPPFLAGS"
+ ac_opt_found=no
+ for ac_opt in "none needed" "-D_TIME_BITS=64" "-D__MINGW_USE_VC2005_COMPAT" "-U_USE_32_BIT_TIME_T -D__MINGW_USE_VC2005_COMPAT"; do
+ if test x"$ac_opt" != x"none needed"
then :
- ac_cv_sys_large_files=no; break
+ CPPFLAGS="$ac_save_CPPFLAGS $ac_opt"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#define _LARGE_FILES 1
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
+
+ #include <time.h>
+ /* Check that time_t can represent 2**32 - 1 correctly. */
+ #define LARGE_TIME_T \\
+ ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30)))
+ int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535
+ && LARGE_TIME_T % 65537 == 0)
+ ? 1 : -1];
+
int
main (void)
{
@@ -20038,32 +20151,54 @@ main (void)
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
- ac_cv_sys_large_files=1; break
+ ac_cv_sys_year2038_opts="$ac_opt"
+ ac_opt_found=yes
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- ac_cv_sys_large_files=unknown
- break
-done
+ test $ac_opt_found = no || break
+ done
+ CPPFLAGS="$ac_save_CPPFLAGS"
+ test $ac_opt_found = yes || ac_cv_sys_year2038_opts="support not detected" ;;
+esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
-printf "%s\n" "$ac_cv_sys_large_files" >&6; }
-case $ac_cv_sys_large_files in #(
- no | unknown) ;;
- *)
-printf "%s\n" "#define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h
-;;
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_year2038_opts" >&5
+printf "%s\n" "$ac_cv_sys_year2038_opts" >&6; }
+
+ac_have_year2038=yes
+case $ac_cv_sys_year2038_opts in #(
+ "none needed") :
+ ;; #(
+ "support not detected") :
+ ac_have_year2038=no ;; #(
+ "-D_TIME_BITS=64") :
+
+printf "%s\n" "#define _TIME_BITS 64" >>confdefs.h
+ ;; #(
+ "-D__MINGW_USE_VC2005_COMPAT") :
+
+printf "%s\n" "#define __MINGW_USE_VC2005_COMPAT 1" >>confdefs.h
+ ;; #(
+ "-U_USE_32_BIT_TIME_T"*) :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
+as_fn_error $? "the 'time_t' type is currently forced to be 32-bit. It
+will stop working after mid-January 2038. Remove
+_USE_32BIT_TIME_T from the compiler flags.
+See 'config.log' for more details" "$LINENO" 5; } ;; #(
+ *) :
+ as_fn_error $? "internal error: bad value for \$ac_cv_sys_year2038_opts" "$LINENO" 5 ;;
esac
-rm -rf conftest*
- fi
+
fi
+fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
printf %s "checking whether byte ordering is bigendian... " >&6; }
if test ${ac_cv_c_bigendian+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- ac_cv_c_bigendian=unknown
+else case e in #(
+ e) ac_cv_c_bigendian=unknown
# See if we're dealing with a universal compiler.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -20109,8 +20244,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
int
main (void)
{
-#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
- && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \\
+ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \\
&& LITTLE_ENDIAN)
bogus endian macros
#endif
@@ -20141,8 +20276,9 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
ac_cv_c_bigendian=yes
-else $as_nop
- ac_cv_c_bigendian=no
+else case e in #(
+ e) ac_cv_c_bigendian=no ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
@@ -20186,8 +20322,9 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
ac_cv_c_bigendian=yes
-else $as_nop
- ac_cv_c_bigendian=no
+else case e in #(
+ e) ac_cv_c_bigendian=no ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
@@ -20214,22 +20351,23 @@ unsigned short int ascii_mm[] =
int use_ebcdic (int i) {
return ebcdic_mm[i] + ebcdic_ii[i];
}
- extern int foo;
-
-int
-main (void)
-{
-return use_ascii (foo) == use_ebcdic (foo);
- ;
- return 0;
-}
+ int
+ main (int argc, char **argv)
+ {
+ /* Intimidate the compiler so that it does not
+ optimize the arrays away. */
+ char *p = argv[0];
+ ascii_mm[1] = *p++; ebcdic_mm[1] = *p++;
+ ascii_ii[1] = *p++; ebcdic_ii[1] = *p++;
+ return use_ascii (argc) == use_ebcdic (*p);
+ }
_ACEOF
-if ac_fn_c_try_compile "$LINENO"
+if ac_fn_c_try_link "$LINENO"
then :
- if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+ if grep BIGenDianSyS conftest$ac_exeext >/dev/null; then
ac_cv_c_bigendian=yes
fi
- if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+ if grep LiTTleEnDian conftest$ac_exeext >/dev/null ; then
if test "$ac_cv_c_bigendian" = unknown; then
ac_cv_c_bigendian=no
else
@@ -20238,9 +20376,10 @@ then :
fi
fi
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-else $as_nop
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+else case e in #(
+ e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
int
@@ -20263,14 +20402,17 @@ _ACEOF
if ac_fn_c_try_run "$LINENO"
then :
ac_cv_c_bigendian=no
-else $as_nop
- ac_cv_c_bigendian=yes
+else case e in #(
+ e) ac_cv_c_bigendian=yes ;;
+esac
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
+ conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
fi
- fi
+ fi ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
printf "%s\n" "$ac_cv_c_bigendian" >&6; }
@@ -20323,16 +20465,16 @@ printf "%s\n" "#define HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR 1" >>confdefs.h
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
-else $as_nop
-
+else case e in #(
+ e)
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
-
+ ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS="$OLD_CFLAGS"
-
# The Win95 threading lacks a thread-safe one-time initialization function.
# The one-time initialization is needed for crc32_small.c and crc64_small.c
# create the CRC tables. So if small mode is enabled, the threading mode is
@@ -20347,13 +20489,99 @@ if test "x$enable_small$enable_threads$have_func_attribute_constructor" \
__attribute__((__constructor__))" "$LINENO" 5
fi
+
###############################################################################
# Checks for library functions.
###############################################################################
# Gnulib replacements as needed
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5
+printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; }
+if test ${ac_cv_c_undeclared_builtin_options+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) ac_save_CFLAGS=$CFLAGS
+ ac_cv_c_undeclared_builtin_options='cannot detect'
+ for ac_arg in '' -fno-builtin; do
+ CFLAGS="$ac_save_CFLAGS $ac_arg"
+ # This test program should *not* compile successfully.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main (void)
+{
+(void) strchr;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+
+else case e in #(
+ e) # This test program should compile successfully.
+ # No library function is consistently available on
+ # freestanding implementations, so test against a dummy
+ # declaration. Include always-available headers on the
+ # off chance that they somehow elicit warnings.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <float.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stddef.h>
+extern void ac_decl (int, char *);
+
+int
+main (void)
+{
+(void) ac_decl (0, (char *) 0);
+ (void) ac_decl;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ if test x"$ac_arg" = x
+then :
+ ac_cv_c_undeclared_builtin_options='none needed'
+else case e in #(
+ e) ac_cv_c_undeclared_builtin_options=$ac_arg ;;
+esac
+fi
+ break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ done
+ CFLAGS=$ac_save_CFLAGS
+ ;;
+esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5
+printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; }
+ case $ac_cv_c_undeclared_builtin_options in #(
+ 'cannot detect') :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
+as_fn_error $? "cannot make $CC report undeclared builtins
+See 'config.log' for more details" "$LINENO" 5; } ;; #(
+ 'none needed') :
+ ac_c_undeclared_builtin_options='' ;; #(
+ *) :
+ ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;;
+esac
+
+
+ gl_replace_getopt=
- if test -z "$GETOPT_H"; then
+ if test -z "$gl_replace_getopt"; then
for ac_header in getopt.h
do :
ac_fn_c_check_header_compile "$LINENO" "getopt.h" "ac_cv_header_getopt_h" "$ac_includes_default"
@@ -20361,14 +20589,15 @@ if test "x$ac_cv_header_getopt_h" = xyes
then :
printf "%s\n" "#define HAVE_GETOPT_H 1" >>confdefs.h
-else $as_nop
- GETOPT_H=getopt.h
+else case e in #(
+ e) gl_replace_getopt=yes ;;
+esac
fi
done
fi
- if test -z "$GETOPT_H"; then
+ if test -z "$gl_replace_getopt"; then
for ac_func in getopt_long
do :
@@ -20377,14 +20606,15 @@ if test "x$ac_cv_func_getopt_long" = xyes
then :
printf "%s\n" "#define HAVE_GETOPT_LONG 1" >>confdefs.h
-else $as_nop
- GETOPT_H=getopt.h
+else case e in #(
+ e) gl_replace_getopt=yes ;;
+esac
fi
done
fi
- if test -z "$GETOPT_H"; then
+ if test -z "$gl_replace_getopt"; then
ac_fn_check_decl "$LINENO" "optreset" "ac_cv_have_decl_optreset" "#include <getopt.h>
" "$ac_c_undeclared_builtin_options" "CFLAGS"
if test "x$ac_cv_have_decl_optreset" = xyes
@@ -20398,8 +20628,11 @@ fi
- if test -n "$GETOPT_H"
-then :
+
+
+
+
+ if test -n "$gl_replace_getopt"; then
case " $LIBOBJS " in
*" getopt.$ac_objext "* ) ;;
@@ -20414,26 +20647,121 @@ esac
esac
- GETOPT_H=getopt.h
+
+
printf "%s\n" "#define __GETOPT_PREFIX rpl_" >>confdefs.h
+ GETOPT_H=getopt.h
+
+
+ fi
+
+# If clock_gettime() is available, liblzma with pthreads may use it, and
+# xz may use it even when threading support is disabled. In XZ Utils 5.4.x
+# and older, configure checked for clock_gettime() only when using pthreads.
+# This way non-threaded builds of liblzma didn't get a useless dependency on
+# librt which further had a dependency on libpthread. Avoiding these was
+# useful when a small build was needed, for example, for initramfs use.
+#
+# The above reasoning is thoroughly obsolete: On GNU/Linux, librt hasn't
+# been needed for clock_gettime() since glibc 2.17 (2012-12-25).
+# Solaris 10 needs librt but Solaris 11 doesn't anymore.
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5
+printf %s "checking for library containing clock_gettime... " >&6; }
+if test ${ac_cv_search_clock_gettime+y}
+then :
+ printf %s "(cached) " >&6
+else case e in #(
+ e) ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply.
+ The 'extern "C"' is for builds by C++ compilers;
+ although this is not generally supported in C code supporting it here
+ has little cost and some practical benefit (sr 110532). */
+#ifdef __cplusplus
+extern "C"
+#endif
+char clock_gettime (void);
+int
+main (void)
+{
+return clock_gettime ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' rt
+do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_search_clock_gettime=$ac_res
fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext
+ if test ${ac_cv_search_clock_gettime+y}
+then :
+ break
+fi
+done
+if test ${ac_cv_search_clock_gettime+y}
+then :
+
+else case e in #(
+ e) ac_cv_search_clock_gettime=no ;;
+esac
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS ;;
+esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5
+printf "%s\n" "$ac_cv_search_clock_gettime" >&6; }
+ac_res=$ac_cv_search_clock_gettime
+if test "$ac_res" != no
+then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+ac_fn_c_check_func "$LINENO" "clock_gettime" "ac_cv_func_clock_gettime"
+if test "x$ac_cv_func_clock_gettime" = xyes
+then :
+ printf "%s\n" "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h
+
+fi
+
+ac_fn_check_decl "$LINENO" "CLOCK_MONOTONIC" "ac_cv_have_decl_CLOCK_MONOTONIC" "#include <time.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_CLOCK_MONOTONIC" = xyes
+then :
+printf "%s\n" "#define HAVE_CLOCK_MONOTONIC 1" >>confdefs.h
+
+fi
# Find the best function to set timestamps.
for ac_func in futimens futimes futimesat utimes _futime utime
do :
- as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh`
+ as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | sed "$as_sed_sh"`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
if eval test \"x\$"$as_ac_var"\" = x"yes"
then :
cat >>confdefs.h <<_ACEOF
-#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_func" | sed "$as_sed_cpp"` 1
_ACEOF
break
fi
@@ -20493,20 +20821,20 @@ printf "%s\n" "#define HAVE___BUILTIN_BSWAPXX 1" >>confdefs.h
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
-else $as_nop
-
+else case e in #(
+ e)
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
# Look for other byteswapping methods.
for ac_header in byteswap.h sys/endian.h sys/byteorder.h
do :
- as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh`
+ as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | sed "$as_sed_sh"`
ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
if eval test \"x\$"$as_ac_Header"\" = x"yes"
then :
cat >>confdefs.h <<_ACEOF
-#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_header" | sed "$as_sed_cpp"` 1
_ACEOF
break
fi
@@ -20539,9 +20867,10 @@ printf "%s\n" "#define HAVE_BSWAP_16 1" >>confdefs.h
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
-else $as_nop
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+else case e in #(
+ e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; } ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
@@ -20570,9 +20899,10 @@ printf "%s\n" "#define HAVE_BSWAP_32 1" >>confdefs.h
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
-else $as_nop
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+else case e in #(
+ e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; } ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
@@ -20601,15 +20931,17 @@ printf "%s\n" "#define HAVE_BSWAP_64 1" >>confdefs.h
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
-else $as_nop
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+else case e in #(
+ e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; } ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-
+ ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
@@ -20620,25 +20952,44 @@ printf %s "checking if unaligned memory access should be used... " >&6; }
if test ${enable_unaligned_access+y}
then :
enableval=$enable_unaligned_access;
-else $as_nop
- enable_unaligned_access=auto
+else case e in #(
+ e) enable_unaligned_access=auto ;;
+esac
fi
if test "x$enable_unaligned_access" = xauto ; then
- # TODO: There may be other architectures, on which unaligned access
- # is OK.
+ # NOTE: There might be other architectures on which unaligned access
+ # is fast.
case $host_cpu in
- i?86|x86_64|powerpc|powerpc64)
+ i?86|x86_64|powerpc|powerpc64|powerpc64le)
enable_unaligned_access=yes
;;
- arm*|aarch64*)
+ arm*|aarch64*|riscv*)
# On 32-bit and 64-bit ARM, GCC and Clang
# #define __ARM_FEATURE_UNALIGNED if
# unaligned access is supported.
+ #
+ # Exception: GCC at least up to 13.2.0
+ # defines it even when using -mstrict-align
+ # so in that case this autodetection goes wrong.
+ # Most of the time -mstrict-align isn't used so it
+ # shouldn't be a common problem in practice. See:
+ # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111555
+ #
+ # RISC-V C API Specification says that if
+ # __riscv_misaligned_fast is defined then
+ # unaligned access is known to be fast.
+ #
+ # MSVC is handled as a special case: We assume that
+ # 32/64-bit ARM supports fast unaligned access.
+ # If MSVC gets RISC-V support then this will assume
+ # fast unaligned access on RISC-V too.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifndef __ARM_FEATURE_UNALIGNED
+#if !defined(__ARM_FEATURE_UNALIGNED) \
+ && !defined(__riscv_misaligned_fast) \
+ && !defined(_MSC_VER)
compile error
#endif
int main(void) { return 0; }
@@ -20647,8 +20998,9 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
enable_unaligned_access=yes
-else $as_nop
- enable_unaligned_access=no
+else case e in #(
+ e) enable_unaligned_access=no ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
;;
@@ -20674,8 +21026,9 @@ printf %s "checking if unsafe type punning should be used... " >&6; }
if test ${enable_unsafe_type_punning+y}
then :
enableval=$enable_unsafe_type_punning;
-else $as_nop
- enable_unsafe_type_punning=no
+else case e in #(
+ e) enable_unsafe_type_punning=no ;;
+esac
fi
if test "x$enable_unsafe_type_punning" = xyes ; then
@@ -20711,11 +21064,12 @@ printf "%s\n" "#define HAVE___BUILTIN_ASSUME_ALIGNED 1" >>confdefs.h
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
-else $as_nop
-
+else case e in #(
+ e)
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
-
+ ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
@@ -20737,8 +21091,8 @@ printf %s "checking how to detect the amount of physical memory... " >&6; }
if test ${tuklib_cv_physmem_method+y}
then :
printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+ e)
# Maybe checking $host_os would be enough but this matches what
# tuklib_physmem.c does.
@@ -20760,8 +21114,8 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
tuklib_cv_physmem_method=special
-else $as_nop
-
+else case e in #(
+ e)
# Look for AIX-specific solution before sysconf(), because the test
# for sysconf() will pass on AIX but won't actually work
@@ -20782,8 +21136,8 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
tuklib_cv_physmem_method=aix
-else $as_nop
-
+else case e in #(
+ e)
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -20802,8 +21156,8 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
tuklib_cv_physmem_method=sysconf
-else $as_nop
-
+else case e in #(
+ e)
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -20826,8 +21180,8 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
tuklib_cv_physmem_method=sysctl
-else $as_nop
-
+else case e in #(
+ e)
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -20848,8 +21202,8 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
tuklib_cv_physmem_method=getsysinfo
-else $as_nop
-
+else case e in #(
+ e)
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -20871,8 +21225,8 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
tuklib_cv_physmem_method=pstat_getstatic
-else $as_nop
-
+else case e in #(
+ e)
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -20892,8 +21246,8 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
tuklib_cv_physmem_method=getinvent_r
-else $as_nop
-
+else case e in #(
+ e)
# This version of sysinfo() is Linux-specific. Some non-Linux systems have
# different sysinfo() so we must check $host_os.
@@ -20917,10 +21271,11 @@ then :
tuklib_cv_physmem_method=sysinfo
-else $as_nop
-
+else case e in #(
+ e)
tuklib_cv_physmem_method=unknown
-
+ ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
;;
@@ -20928,21 +21283,29 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
tuklib_cv_physmem_method=unknown
;;
esac
-
+ ;;
+esac
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tuklib_cv_physmem_method" >&5
printf "%s\n" "$tuklib_cv_physmem_method" >&6; }
@@ -21002,8 +21365,8 @@ printf %s "checking how to detect the number of available CPU cores... " >&6; }
if test ${tuklib_cv_cpucores_method+y}
then :
printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+ e)
# Maybe checking $host_os would be enough but this matches what
# tuklib_cpucores.c does.
@@ -21023,8 +21386,8 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
tuklib_cv_cpucores_method=special
-else $as_nop
-
+else case e in #(
+ e)
# 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
@@ -21047,8 +21410,8 @@ _ACEOF
if ac_fn_c_try_link "$LINENO"
then :
tuklib_cv_cpucores_method=sched_getaffinity
-else $as_nop
-
+else case e in #(
+ e)
# FreeBSD has both cpuset and sysctl. Look for cpuset first because
# it's a better approach.
@@ -21076,8 +21439,8 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
tuklib_cv_cpucores_method=cpuset
-else $as_nop
-
+else case e in #(
+ e)
# 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
@@ -21115,8 +21478,8 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
tuklib_cv_cpucores_method=sysctl
-else $as_nop
-
+else case e in #(
+ e)
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -21140,8 +21503,8 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
tuklib_cv_cpucores_method=sysconf
-else $as_nop
-
+else case e in #(
+ e)
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -21162,24 +21525,31 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
tuklib_cv_cpucores_method=pstat_getdynamic
-else $as_nop
-
+else case e in #(
+ e)
tuklib_cv_cpucores_method=unknown
-
+ ;;
+esac
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
+ conftest$ac_exeext conftest.$ac_ext ;;
+esac
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tuklib_cv_cpucores_method" >&5
printf "%s\n" "$tuklib_cv_cpucores_method" >&6; }
@@ -21220,8 +21590,8 @@ printf %s "checking whether mbrtowc and mbstate_t are properly declared... " >&6
if test ${ac_cv_func_mbrtowc+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+ e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <wchar.h>
int
@@ -21239,11 +21609,13 @@ _ACEOF
if ac_fn_c_try_link "$LINENO"
then :
ac_cv_func_mbrtowc=yes
-else $as_nop
- ac_cv_func_mbrtowc=no
+else case e in #(
+ e) ac_cv_func_mbrtowc=no ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
+ conftest$ac_exeext conftest.$ac_ext ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mbrtowc" >&5
printf "%s\n" "$ac_cv_func_mbrtowc" >&6; }
@@ -21288,12 +21660,12 @@ then :
# succeed.
for ac_header in CommonCrypto/CommonDigest.h sha256.h sha2.h
do :
- as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh`
+ as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | sed "$as_sed_sh"`
ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
if eval test \"x\$"$as_ac_Header"\" = x"yes"
then :
cat >>confdefs.h <<_ACEOF
-#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_header" | sed "$as_sed_cpp"` 1
_ACEOF
sha256_header_found=yes ; break
fi
@@ -21367,15 +21739,21 @@ printf %s "checking for library containing SHA256Init... " >&6; }
if test ${ac_cv_search_SHA256Init+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- ac_func_search_save_LIBS=$LIBS
+else case e in #(
+ e) ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-char SHA256Init ();
+ builtin and then its argument prototype would still apply.
+ The 'extern "C"' is for builds by C++ compilers;
+ although this is not generally supported in C code supporting it here
+ has little cost and some practical benefit (sr 110532). */
+#ifdef __cplusplus
+extern "C"
+#endif
+char SHA256Init (void);
int
main (void)
{
@@ -21406,11 +21784,13 @@ done
if test ${ac_cv_search_SHA256Init+y}
then :
-else $as_nop
- ac_cv_search_SHA256Init=no
+else case e in #(
+ e) ac_cv_search_SHA256Init=no ;;
+esac
fi
rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
+LIBS=$ac_func_search_save_LIBS ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_SHA256Init" >&5
printf "%s\n" "$ac_cv_search_SHA256Init" >&6; }
@@ -21426,15 +21806,21 @@ printf %s "checking for library containing SHA256_Init... " >&6; }
if test ${ac_cv_search_SHA256_Init+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- ac_func_search_save_LIBS=$LIBS
+else case e in #(
+ e) ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-char SHA256_Init ();
+ builtin and then its argument prototype would still apply.
+ The 'extern "C"' is for builds by C++ compilers;
+ although this is not generally supported in C code supporting it here
+ has little cost and some practical benefit (sr 110532). */
+#ifdef __cplusplus
+extern "C"
+#endif
+char SHA256_Init (void);
int
main (void)
{
@@ -21465,11 +21851,13 @@ done
if test ${ac_cv_search_SHA256_Init+y}
then :
-else $as_nop
- ac_cv_search_SHA256_Init=no
+else case e in #(
+ e) ac_cv_search_SHA256_Init=no ;;
+esac
fi
rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
+LIBS=$ac_func_search_save_LIBS ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_SHA256_Init" >&5
printf "%s\n" "$ac_cv_search_SHA256_Init" >&6; }
@@ -21483,12 +21871,12 @@ fi
for ac_func in CC_SHA256_Init SHA256Init SHA256_Init
do :
- as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh`
+ as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | sed "$as_sed_sh"`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
if eval test \"x\$"$as_ac_var"\" = x"yes"
then :
cat >>confdefs.h <<_ACEOF
-#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_func" | sed "$as_sed_cpp"` 1
_ACEOF
sha256_func_found=yes ; break
fi
@@ -21547,8 +21935,8 @@ then :
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, --disable-clmul-crc was used" >&5
printf "%s\n" "no, --disable-clmul-crc was used" >&6; }
-else $as_nop
-
+else case e in #(
+ e)
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -21578,141 +21966,136 @@ then :
printf "%s\n" "#define HAVE_USABLE_CLMUL 1" >>confdefs.h
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-else $as_nop
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+ enable_clmul_crc=yes
+else case e in #(
+ e)
+ enable_clmul_crc=no
+ ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_clmul_crc" >&5
+printf "%s\n" "$enable_clmul_crc" >&6; }
+ ;;
+esac
fi
-# Check for sandbox support. If one is found, set enable_sandbox=found.
-case $enable_sandbox in #(
- auto | capsicum) :
-
-
-# On FreeBSD >= 11.x and Linux, Capsicum is uses <sys/capsicum.h>.
-# If this header is found, it is assumed to be the right one.
-capsicum_header_found=no
- for ac_header in sys/capsicum.h
-do :
- ac_fn_c_check_header_compile "$LINENO" "sys/capsicum.h" "ac_cv_header_sys_capsicum_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_capsicum_h" = xyes
+# ARM64 C Language Extensions define CRC32 functions in arm_acle.h.
+# These are supported by at least GCC and Clang which both need
+# __attribute__((__target__("+crc"))), unless the needed compiler flags
+# are used to support the CRC instruction.
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ARM64 CRC32 instruction is usable" >&5
+printf %s "checking if ARM64 CRC32 instruction is usable... " >&6; }
+if test "x$enable_arm64_crc32" = xno
then :
- printf "%s\n" "#define HAVE_SYS_CAPSICUM_H 1" >>confdefs.h
- capsicum_header_found=yes
-fi
-done
-if test "$capsicum_header_found" = no ; then
- # On FreeBSD 10.x Capsicum uses <sys/capability.h>. Such a header exists
- # on Linux too but it describes POSIX.1e capabilities. Look for the
- # declaration of cap_rights_limit to check if <sys/capability.h> is
- # a Capsicum header.
- ac_fn_check_decl "$LINENO" "cap_rights_limit" "ac_cv_have_decl_cap_rights_limit" "#include <sys/capability.h>
-" "$ac_c_undeclared_builtin_options" "CFLAGS"
-if test "x$ac_cv_have_decl_cap_rights_limit" = xyes
-then :
- capsicum_header_found=yes
-fi
-fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, --disable-arm64-crc32 was used" >&5
+printf "%s\n" "no, --disable-arm64-crc32 was used" >&6; }
-capsicum_lib_found=no
-CAPSICUM_LIB=
-if test "$capsicum_header_found" = yes ; then
- ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+else case e in #(
+ e)
+ # Set -Werror here because some versions of Clang (14 and older)
+ # do not report the unsupported __attribute__((__target__("+crc")))
+ # or __crc32d() as an error, only as a warning. This does not need
+ # to be done with CMake because tests will attempt to link and the
+ # error will be reported then.
+ OLD_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -Werror"
- # FreeBSD >= 10.x has Capsicum functions in libc.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-char cap_rights_limit ();
-int
-main (void)
-{
-return cap_rights_limit ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
- capsicum_lib_found=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
- # Linux has Capsicum functions in libcaprights.
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cap_rights_limit in -lcaprights" >&5
-printf %s "checking for cap_rights_limit in -lcaprights... " >&6; }
-if test ${ac_cv_lib_caprights_cap_rights_limit+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcaprights $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+#include <arm_acle.h>
+#include <stdint.h>
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-char cap_rights_limit ();
-int
-main (void)
+#if (defined(__GNUC__) || defined(__clang__)) && !defined(__EDG__)
+__attribute__((__target__("+crc")))
+#endif
+uint32_t my_crc(uint32_t a, uint64_t b)
{
-return cap_rights_limit ();
- ;
- return 0;
+ return __crc32d(a, b);
}
+
_ACEOF
-if ac_fn_c_try_link "$LINENO"
+if ac_fn_c_try_compile "$LINENO"
then :
- ac_cv_lib_caprights_cap_rights_limit=yes
-else $as_nop
- ac_cv_lib_caprights_cap_rights_limit=no
+
+
+printf "%s\n" "#define HAVE_ARM64_CRC32 1" >>confdefs.h
+
+ enable_arm64_crc32=yes
+
+else case e in #(
+ e)
+ enable_arm64_crc32=no
+ ;;
+esac
fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_arm64_crc32" >&5
+printf "%s\n" "$enable_arm64_crc32" >&6; }
+
+ CFLAGS="$OLD_CFLAGS"
+ ;;
+esac
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_caprights_cap_rights_limit" >&5
-printf "%s\n" "$ac_cv_lib_caprights_cap_rights_limit" >&6; }
-if test "x$ac_cv_lib_caprights_cap_rights_limit" = xyes
+
+# Check for ARM64 CRC32 instruction runtime detection.
+# getauxval() is supported on Linux, elf_aux_info() on FreeBSD, and
+# sysctlbyname("hw.optional.armv8_crc32", ...) is supported on Darwin
+# (macOS, iOS, etc.). Note that sysctlbyname() is supported on FreeBSD,
+# NetBSD, and possibly others too but the string is specific to Apple OSes.
+# The C code is responsible for checking defined(__APPLE__) before using
+# sysctlbyname("hw.optional.armv8_crc32", ...).
+if test "x$enable_arm64_crc32" = xyes
then :
- CAPSICUM_LIB=-lcaprights
- capsicum_lib_found=yes
+
+
+ for ac_func in getauxval elf_aux_info sysctlbyname
+do :
+ as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | sed "$as_sed_sh"`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"
+then :
+ cat >>confdefs.h <<_ACEOF
+#define `printf "%s\n" "HAVE_$ac_func" | sed "$as_sed_cpp"` 1
+_ACEOF
+ break
fi
- ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+done
fi
-if test "$capsicum_lib_found" = yes ; then
+# Check for sandbox support. If one is found, set enable_sandbox=found.
+#
+# About -fsanitize: Of our three sandbox methods, only Landlock is
+# incompatible with -fsanitize. FreeBSD 13.2 with Capsicum was tested with
+# -fsanitize=address,undefined and had no issues. OpenBSD (as of version
+# 7.4) has minimal support for process instrumentation. OpenBSD does not
+# distribute the additional libraries needed (libasan, libubsan, etc.) with
+# GCC or Clang needed for runtime sanitization support and instead only
+# support -fsanitize-minimal-runtime for minimal undefined behavior
+# sanitization. This minimal support is compatible with our use of the
+# Pledge sandbox. So only Landlock will result in a build that cannot
+# compress or decompress a single file to standard out.
+case $enable_sandbox in #(
+ auto | capsicum) :
-printf "%s\n" "#define HAVE_CAPSICUM 1" >>confdefs.h
- enable_sandbox=found
-else
- :
+ for ac_func in cap_rights_limit
+do :
+ ac_fn_c_check_func "$LINENO" "cap_rights_limit" "ac_cv_func_cap_rights_limit"
+if test "x$ac_cv_func_cap_rights_limit" = xyes
+then :
+ printf "%s\n" "#define HAVE_CAP_RIGHTS_LIMIT 1" >>confdefs.h
+ enable_sandbox=found
fi
+done
+
;; #(
*) :
;;
@@ -21727,7 +22110,7 @@ do :
if test "x$ac_cv_func_pledge" = xyes
then :
printf "%s\n" "#define HAVE_PLEDGE 1" >>confdefs.h
- enable_sandbox=found ; break
+ enable_sandbox=found
fi
done
@@ -21736,6 +22119,65 @@ done
*) :
;;
esac
+case $enable_sandbox in #(
+ auto | landlock) :
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if Linux Landlock is usable" >&5
+printf %s "checking if Linux Landlock is usable... " >&6; }
+
+ # A compile check is done here because some systems have
+ # linux/landlock.h, but do not have the syscalls defined
+ # in order to actually use Linux Landlock.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <linux/landlock.h>
+ #include <sys/syscall.h>
+ #include <sys/prctl.h>
+
+ void my_sandbox(void)
+ {
+ (void)prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0);
+ (void)SYS_landlock_create_ruleset;
+ (void)SYS_landlock_restrict_self;
+ (void)LANDLOCK_CREATE_RULESET_VERSION;
+ return;
+ }
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+
+ enable_sandbox=found
+
+ case $CFLAGS in #(
+ *-fsanitize=*) :
+ as_fn_error $? "
+ CFLAGS contains '-fsanitize=' which is incompatible with the Landlock
+ sandboxing. Use --disable-sandbox when using '-fsanitize'." "$LINENO" 5 ;; #(
+ *) :
+ ;;
+esac
+
+
+printf "%s\n" "#define HAVE_LINUX_LANDLOCK 1" >>confdefs.h
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+
+else case e in #(
+ e)
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ ;;
+esac
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+
+ ;; #(
+ *) :
+ ;;
+esac
# If a specific sandboxing method was explicitly requested and it wasn't
# found, give an error.
@@ -21769,8 +22211,8 @@ printf %s "checking whether the -Werror option is usable... " >&6; }
if test ${gl_cv_cc_vis_werror+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- gl_save_CFLAGS="$CFLAGS"
+else case e in #(
+ e) gl_saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Werror"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -21786,12 +22228,14 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
gl_cv_cc_vis_werror=yes
-else $as_nop
- gl_cv_cc_vis_werror=no
+else case e in #(
+ e) gl_cv_cc_vis_werror=no ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- CFLAGS="$gl_save_CFLAGS"
-
+ CFLAGS="$gl_saved_CFLAGS"
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_vis_werror" >&5
printf "%s\n" "$gl_cv_cc_vis_werror" >&6; }
@@ -21800,8 +22244,8 @@ printf %s "checking for simple visibility declarations... " >&6; }
if test ${gl_cv_cc_visibility+y}
then :
printf %s "(cached) " >&6
-else $as_nop
- gl_save_CFLAGS="$CFLAGS"
+else case e in #(
+ e) gl_saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fvisibility=hidden"
if test $gl_cv_cc_vis_werror = yes; then
CFLAGS="$CFLAGS -Werror"
@@ -21830,12 +22274,14 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
gl_cv_cc_visibility=yes
-else $as_nop
- gl_cv_cc_visibility=no
+else case e in #(
+ e) gl_cv_cc_visibility=no ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- CFLAGS="$gl_save_CFLAGS"
-
+ CFLAGS="$gl_saved_CFLAGS"
+ ;;
+esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_visibility" >&5
printf "%s\n" "$gl_cv_cc_visibility" >&6; }
@@ -21875,7 +22321,6 @@ then :
-Wall \
-Wextra \
-Wvla \
- -Wc99-c11-compat \
-Wformat=2 \
-Winit-self \
-Wmissing-include-dirs \
@@ -21932,11 +22377,12 @@ then :
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
-else $as_nop
-
+else case e in #(
+ e)
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
-
+ ;;
+esac
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS="$OLD_CFLAGS"
@@ -21946,8 +22392,9 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
if test ${enable_werror+y}
then :
enableval=$enable_werror;
-else $as_nop
- enable_werror=no
+else case e in #(
+ e) enable_werror=no ;;
+esac
fi
if test "x$enable_werror" = "xyes"; then
@@ -22002,8 +22449,8 @@ cat >confcache <<\_ACEOF
# config.status only pays attention to the cache file if you give it
# the --recheck option to rerun configure.
#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# 'ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* 'ac_cv_foo' will be assigned the
# following values.
_ACEOF
@@ -22033,14 +22480,14 @@ printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;}
(set) 2>&1 |
case $as_nl`(ac_space=' '; set) 2>&1` in #(
*${as_nl}ac_space=\ *)
- # `set' does not quote correctly, so add quotes: double-quote
+ # 'set' does not quote correctly, so add quotes: double-quote
# substitution turns \\\\ into \\, and sed turns \\ into \.
sed -n \
"s/'/'\\\\''/g;
s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
;; #(
*)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
+ # 'set' quotes correctly as required by POSIX, so do not add quotes.
sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
;;
esac |
@@ -22233,6 +22680,18 @@ if test -z "${COND_DECODER_SPARC_TRUE}" && test -z "${COND_DECODER_SPARC_FALSE}"
as_fn_error $? "conditional \"COND_DECODER_SPARC\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${COND_FILTER_RISCV_TRUE}" && test -z "${COND_FILTER_RISCV_FALSE}"; then
+ as_fn_error $? "conditional \"COND_FILTER_RISCV\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${COND_ENCODER_RISCV_TRUE}" && test -z "${COND_ENCODER_RISCV_FALSE}"; then
+ as_fn_error $? "conditional \"COND_ENCODER_RISCV\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${COND_DECODER_RISCV_TRUE}" && test -z "${COND_DECODER_RISCV_FALSE}"; then
+ as_fn_error $? "conditional \"COND_DECODER_RISCV\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${COND_FILTER_SIMPLE_TRUE}" && test -z "${COND_FILTER_SIMPLE_FALSE}"; then
as_fn_error $? "conditional \"COND_FILTER_SIMPLE\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -22313,6 +22772,10 @@ if test -z "${COND_DOC_TRUE}" && test -z "${COND_DOC_FALSE}"; then
as_fn_error $? "conditional \"COND_DOC\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${COND_DOXYGEN_TRUE}" && test -z "${COND_DOXYGEN_FALSE}"; then
+ as_fn_error $? "conditional \"COND_DOXYGEN\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
printf %s "checking that generated files are newer than configure... " >&6; }
if test -n "$am_sleep_pid"; then
@@ -22357,6 +22820,12 @@ if test -z "${COND_SYMVERS_GENERIC_TRUE}" && test -z "${COND_SYMVERS_GENERIC_FAL
as_fn_error $? "conditional \"COND_SYMVERS_GENERIC\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+# Check whether --enable-year2038 was given.
+if test ${enable_year2038+y}
+then :
+ enableval=$enable_year2038;
+fi
+
if test -z "${COND_INTERNAL_SHA256_TRUE}" && test -z "${COND_INTERNAL_SHA256_FALSE}"; then
as_fn_error $? "conditional \"COND_INTERNAL_SHA256\" was never defined.
@@ -22395,7 +22864,6 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
-as_nop=:
if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
then :
emulate sh
@@ -22404,12 +22872,13 @@ then :
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
-else $as_nop
- case `(set -o) 2>/dev/null` in #(
+else case e in #(
+ e) case `(set -o) 2>/dev/null` in #(
*posix*) :
set -o posix ;; #(
*) :
;;
+esac ;;
esac
fi
@@ -22481,7 +22950,7 @@ IFS=$as_save_IFS
;;
esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
+# We did not find ourselves, most probably we were run as 'sh COMMAND'
# in which case we are not to be found in the path.
if test "x$as_myself" = x; then
as_myself=$0
@@ -22510,7 +22979,6 @@ as_fn_error ()
} # as_fn_error
-
# as_fn_set_status STATUS
# -----------------------
# Set $? to STATUS, without forking.
@@ -22550,11 +23018,12 @@ then :
{
eval $1+=\$2
}'
-else $as_nop
- as_fn_append ()
+else case e in #(
+ e) as_fn_append ()
{
eval $1=\$$1\$2
- }
+ } ;;
+esac
fi # as_fn_append
# as_fn_arith ARG...
@@ -22568,11 +23037,12 @@ then :
{
as_val=$(( $* ))
}'
-else $as_nop
- as_fn_arith ()
+else case e in #(
+ e) as_fn_arith ()
{
as_val=`expr "$@" || test $? -eq 1`
- }
+ } ;;
+esac
fi # as_fn_arith
@@ -22655,9 +23125,9 @@ if (echo >conf$$.file) 2>/dev/null; then
if ln -s conf$$.file conf$$ 2>/dev/null; then
as_ln_s='ln -s'
# ... but there are two gotchas:
- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -pR'.
+ # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable.
+ # In both cases, we have to default to 'cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
@@ -22738,10 +23208,12 @@ as_test_x='test -x'
as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated
# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+as_tr_sh="eval sed '$as_sed_sh'" # deprecated
exec 6>&1
@@ -22756,8 +23228,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by XZ Utils $as_me 5.4.5, which was
-generated by GNU Autoconf 2.71. Invocation command line was
+This file was extended by XZ Utils $as_me 5.6.2, which was
+generated by GNU Autoconf 2.72. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -22789,7 +23261,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
+'$as_me' instantiates files and other configuration actions
from templates according to the current configuration. Unless the files
and actions are specified as TAGs, all are instantiated by default.
@@ -22825,11 +23297,11 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-XZ Utils config.status 5.4.5
-configured by $0, generated by GNU Autoconf 2.71,
+XZ Utils config.status 5.6.2
+configured by $0, generated by GNU Autoconf 2.72,
with options \\"\$ac_cs_config\\"
-Copyright (C) 2021 Free Software Foundation, Inc.
+Copyright (C) 2023 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
@@ -22891,8 +23363,8 @@ do
ac_need_defaults=false;;
--he | --h)
# Conflict between --help and --header
- as_fn_error $? "ambiguous option: \`$1'
-Try \`$0 --help' for more information.";;
+ as_fn_error $? "ambiguous option: '$1'
+Try '$0 --help' for more information.";;
--help | --hel | -h )
printf "%s\n" "$ac_cs_usage"; exit ;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
@@ -22900,8 +23372,8 @@ Try \`$0 --help' for more information.";;
ac_cs_silent=: ;;
# This is an error.
- -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
+ -*) as_fn_error $? "unrecognized option: '$1'
+Try '$0 --help' for more information." ;;
*) as_fn_append ac_config_targets " $1"
ac_need_defaults=false ;;
@@ -23342,7 +23814,7 @@ do
"src/scripts/xzmore") CONFIG_FILES="$CONFIG_FILES src/scripts/xzmore" ;;
"src/scripts/xzless") CONFIG_FILES="$CONFIG_FILES src/scripts/xzless" ;;
- *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;;
esac
done
@@ -23362,7 +23834,7 @@ fi
# creating and moving files from /tmp can sometimes cause problems.
# Hook for its removal unless debugging.
# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
+# after its creation but before its name has been assigned to '$tmp'.
$debug ||
{
tmp= ac_tmp=
@@ -23386,7 +23858,7 @@ ac_tmp=$tmp
# Set up the scripts for CONFIG_FILES section.
# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
+# This happens for instance with './config.status config.h'.
if test -n "$CONFIG_FILES"; then
@@ -23544,13 +24016,13 @@ fi # test -n "$CONFIG_FILES"
# Set up the scripts for CONFIG_HEADERS section.
# No need to generate them if there are no CONFIG_HEADERS.
-# This happens for instance with `./config.status Makefile'.
+# This happens for instance with './config.status Makefile'.
if test -n "$CONFIG_HEADERS"; then
cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
BEGIN {
_ACEOF
-# Transform confdefs.h into an awk script `defines.awk', embedded as
+# Transform confdefs.h into an awk script 'defines.awk', embedded as
# here-document in config.status, that substitutes the proper values into
# config.h.in to produce config.h.
@@ -23660,7 +24132,7 @@ do
esac
case $ac_mode$ac_tag in
:[FHL]*:*);;
- :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;;
:[FH]-) ac_tag=-:-;;
:[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
esac
@@ -23682,19 +24154,19 @@ do
-) ac_f="$ac_tmp/stdin";;
*) # Look for the file first in the build tree, then in the source tree
# (if the path is not absolute). The absolute path cannot be DOS-style,
- # because $ac_f cannot contain `:'.
+ # because $ac_f cannot contain ':'.
test -f "$ac_f" ||
case $ac_f in
[\\/$]*) false;;
*) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
esac ||
- as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;;
esac
case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
as_fn_append ac_file_inputs " '$ac_f'"
done
- # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # Let's still pretend it is 'configure' which instantiates (i.e., don't
# use $as_me), people would be surprised to read:
# /* config.h. Generated by config.status. */
configure_input='Generated from '`
@@ -23827,7 +24299,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
esac
_ACEOF
-# Neutralize VPATH when `$srcdir' = `.'.
+# Neutralize VPATH when '$srcdir' = '.'.
# Shell code in configure.ac might set extrasub.
# FIXME: do we really want to maintain this feature?
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
@@ -23858,9 +24330,9 @@ test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
{ ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
{ ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
"$ac_tmp/out"`; test -z "$ac_out"; } &&
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir'
which seems to be undefined. Please make sure it is defined" >&5
-printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir'
which seems to be undefined. Please make sure it is defined" >&2;}
rm -f "$ac_tmp/stdin"
@@ -24015,15 +24487,15 @@ printf "%s\n" X/"$am_mf" |
(exit $ac_status); } || am_rc=$?
done
if test $am_rc -ne 0; then
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
as_fn_error $? "Something went wrong bootstrapping makefile fragments
for automatic dependency tracking. If GNU make was not used, consider
re-running the configure script with MAKE=\"gmake\" (or whatever is
necessary). You can also try re-running configure with the
'--disable-dependency-tracking' option to at least be able to build
the package (albeit without support for automatic dependency tracking).
-See \`config.log' for more details" "$LINENO" 5; }
+See 'config.log' for more details" "$LINENO" 5; }
fi
{ am_dirpart=; unset am_dirpart;}
{ am_filepart=; unset am_filepart;}
@@ -24052,13 +24524,13 @@ See \`config.log' for more details" "$LINENO" 5; }
# Provide generalized library-building support services.
# Written by Gordon Matzigkeit, 1996
-# Copyright (C) 2014 Free Software Foundation, Inc.
+# Copyright (C) 2024 Free Software Foundation, Inc.
# This is free software; see the source for copying conditions. There is NO
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# GNU Libtool 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 of the License, or
+# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# As a special exception to the GNU General Public License, if you
@@ -24442,7 +24914,7 @@ hardcode_direct=$hardcode_direct
# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \$shlibpath_var if the
+# "absolute",i.e. impossible to change by setting \$shlibpath_var if the
# library is relocated.
hardcode_direct_absolute=$hardcode_direct_absolute
@@ -24671,7 +25143,7 @@ hardcode_direct=$hardcode_direct_RC
# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \$shlibpath_var if the
+# "absolute",i.e. impossible to change by setting \$shlibpath_var if the
# library is relocated.
hardcode_direct_absolute=$hardcode_direct_absolute_RC
diff --git a/configure.ac b/configure.ac
index 1d1c811..2e3320f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,12 +1,11 @@
# -*- Autoconf -*-
-# Process this file with autoconf to produce a configure script.
+# SPDX-License-Identifier: 0BSD
###############################################################################
#
-# Author: Lasse Collin
+# Process this file with autoconf to produce a configure script.
#
-# This file has been put into the public domain.
-# You can do whatever you want with this file.
+# Author: Lasse Collin
#
###############################################################################
@@ -79,8 +78,8 @@ fi
# Filters #
###########
-m4_define([SUPPORTED_FILTERS], [lzma1,lzma2,delta,x86,powerpc,ia64,arm,armthumb,arm64,sparc])dnl
-m4_define([SIMPLE_FILTERS], [x86,powerpc,ia64,arm,armthumb,arm64,sparc])
+m4_define([SUPPORTED_FILTERS], [lzma1,lzma2,delta,x86,powerpc,ia64,arm,armthumb,arm64,sparc,riscv])dnl
+m4_define([SIMPLE_FILTERS], [x86,powerpc,ia64,arm,armthumb,arm64,sparc,riscv])
m4_define([LZ_FILTERS], [lzma1,lzma2])
m4_foreach([NAME], [SUPPORTED_FILTERS],
@@ -310,7 +309,7 @@ case $enable_microlzma in
;;
*)
AC_MSG_RESULT([])
- AC_MSG_ERROR([--enable-microlzma accepts only `yes' or `no'.])
+ AC_MSG_ERROR([--enable-microlzma accepts only 'yes' or 'no'.])
;;
esac
AM_CONDITIONAL(COND_MICROLZMA, test "x$enable_microlzma" = xyes)
@@ -364,7 +363,7 @@ case $enable_assembler in
;;
*)
AC_MSG_RESULT([])
- AC_MSG_ERROR([--enable-assembler accepts only `yes', `no', or `x86' (32-bit).])
+ AC_MSG_ERROR([--enable-assembler accepts only 'yes', 'no', or 'x86' (32-bit).])
;;
esac
AM_CONDITIONAL(COND_ASM_X86, test "x$enable_assembler" = xx86)
@@ -380,6 +379,16 @@ AC_ARG_ENABLE([clmul-crc], AS_HELP_STRING([--disable-clmul-crc],
[], [enable_clmul_crc=yes])
+############################
+# ARM64 CRC32 Instructions #
+############################
+
+AC_ARG_ENABLE([arm64-crc32], AS_HELP_STRING([--disable-arm64-crc32],
+ [Do not use ARM64 CRC32 instructions even if support for it
+ is detected.]),
+ [], [enable_arm64_crc32=yes])
+
+
#####################
# Size optimization #
#####################
@@ -393,7 +402,7 @@ 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'])
+ 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)
@@ -405,8 +414,8 @@ AM_CONDITIONAL(COND_SMALL, test "x$enable_small" = xyes)
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
+ [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])
@@ -433,7 +442,7 @@ case $enable_threads in
;;
*)
AC_MSG_RESULT([])
- AC_MSG_ERROR([--enable-threads only accepts `yes', `no', `posix', `win95', or `vista'])
+ AC_MSG_ERROR([--enable-threads only accepts 'yes', 'no', 'posix', 'win95', or 'vista'])
;;
esac
@@ -507,10 +516,18 @@ 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)])],
+ (man pages are still installed and,
+ if --enable-doxygen is used,
+ liblzma API documentation is installed too)])],
[], [enable_doc=yes])
AM_CONDITIONAL([COND_DOC], [test x$enable_doc != xno])
+AC_ARG_ENABLE([doxygen], [AS_HELP_STRING([--enable-doxygen],
+ [generate HTML version of the liblzma API documentation
+ using Doxygen and install the result to docdir])],
+ [], [enable_doxygen=no])
+AM_CONDITIONAL([COND_DOXYGEN], [test x$enable_doxygen != xno])
+
##############
# Sandboxing #
@@ -519,20 +536,24 @@ AM_CONDITIONAL([COND_DOC], [test x$enable_doc != xno])
AC_MSG_CHECKING([if sandboxing should be used])
AC_ARG_ENABLE([sandbox], [AS_HELP_STRING([--enable-sandbox=METHOD],
[Sandboxing METHOD can be
- `auto', `no', `capsicum', or `pledge'.
- The default is `auto' which enables sandboxing if
+ 'auto', 'no', 'capsicum', 'pledge', or 'landlock'.
+ The default is 'auto' which enables sandboxing if
a supported sandboxing method is found.])],
[], [enable_sandbox=auto])
-case $enable_sandbox in
- auto)
+case $enable_xzdec-$enable_xz-$enable_sandbox in
+ no-no-*)
+ enable_sandbox=no
+ AC_MSG_RESULT([no, --disable-xz and --disable-xzdec was used])
+ ;;
+ *-*-auto)
AC_MSG_RESULT([maybe (autodetect)])
;;
- no | capsicum | pledge)
+ *-*-no | *-*-capsicum | *-*-pledge | *-*-landlock)
AC_MSG_RESULT([$enable_sandbox])
;;
*)
AC_MSG_RESULT([])
- AC_MSG_ERROR([--enable-sandbox only accepts `auto', `no', `capsicum', or `pledge'.])
+ AC_MSG_ERROR([--enable-sandbox only accepts 'auto', 'no', 'capsicum', 'pledge', or 'landlock'.])
;;
esac
@@ -622,21 +643,10 @@ AS_CASE([$enable_threads],
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.
+ # This is nice to have but not mandatory.
OLD_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
- AC_SEARCH_LIBS([clock_gettime], [rt])
- AC_CHECK_FUNCS([clock_gettime pthread_condattr_setclock])
- AC_CHECK_DECL([CLOCK_MONOTONIC], [AC_DEFINE(
- [HAVE_CLOCK_MONOTONIC], [1], [Define to 1 if
- `CLOCK_MONOTONIC' is declared in <time.h>.])], [],
- [[#include <time.h>]])
+ AC_CHECK_FUNCS([pthread_condattr_setclock])
CFLAGS=$OLD_CFLAGS
],
[win95], [
@@ -707,61 +717,80 @@ fi
# --with-pic and --without-pic though. As long as neither --with-pic nor
# --without-pic is used then we can use #ifdef PIC to detect if the file is
# being built for a shared library.
-if test "x$enable_symbol_versions" = xno ; then
+AS_IF([test "x$enable_symbol_versions" = xno], [
enable_symbol_versions=no
AC_MSG_RESULT([no])
-elif test "x$enable_shared" = xno ; then
+], [test "x$enable_shared" = xno], [
enable_symbol_versions=no
AC_MSG_RESULT([no (not building a shared library)])
-else
- case "$host_cpu-$host_os" in
- microblaze*)
- # GCC 12 on MicroBlaze doesn't support __symver__
- # attribute. It's simplest and safest to use the
- # generic version on that platform since then only
- # the linker script is needed. The RHEL/CentOS 7
- # compatibility symbols don't matter on MicroBlaze.
- enable_symbol_versions=generic
- ;;
- *-linux*)
- case "$pic_mode-$enable_static" in
- default-*)
- # Use symvers if PIC is defined.
- have_symbol_versions_linux=2
- ;;
- *-no)
- # Not building static library.
- # Use symvers unconditionally.
- have_symbol_versions_linux=1
- ;;
- *)
- AC_MSG_RESULT([])
- AC_MSG_ERROR([
+], [
+ # "yes" means that symbol version are to be used but we need to
+ # autodetect which variant to use.
+ if test "x$enable_symbol_versions" = xyes ; then
+ case "$host_cpu-$host_os" in
+ microblaze*)
+ # GCC 12 on MicroBlaze doesn't support
+ # __symver__ attribute. It's simplest and
+ # safest to use the generic version on that
+ # platform since then only the linker script
+ # is needed. The RHEL/CentOS 7 compatibility
+ # symbols don't matter on MicroBlaze.
+ enable_symbol_versions=generic
+ ;;
+ *-linux*)
+ # NVIDIA HPC Compiler doesn't support symbol
+ # versioning but the linker script can still
+ # be used.
+ AC_EGREP_CPP([use_generic_symbol_versioning],
+ [#ifdef __NVCOMPILER
+ use_generic_symbol_versioning
+ #endif],
+ [enable_symbol_versions=generic],
+ [enable_symbol_versions=linux])
+ ;;
+ *)
+ enable_symbol_versions=generic
+ ;;
+ esac
+ fi
+
+ if test "x$enable_symbol_versions" = xlinux ; then
+ case "$pic_mode-$enable_static" in
+ default-*)
+ # Use symvers if PIC is defined.
+ have_symbol_versions_linux=2
+ ;;
+ *-no)
+ # Not building static library.
+ # Use symvers unconditionally.
+ have_symbol_versions_linux=1
+ ;;
+ *)
+ AC_MSG_RESULT([])
+ AC_MSG_ERROR([
On GNU/Linux, building both shared and static library at the same time
is not supported if --with-pic or --without-pic is used.
Use either --disable-shared or --disable-static to build one type
of library at a time. If both types are needed, build one at a time,
possibly picking only src/liblzma/.libs/liblzma.a from the static build.])
- ;;
- esac
- enable_symbol_versions=linux
- AC_DEFINE_UNQUOTED([HAVE_SYMBOL_VERSIONS_LINUX],
- [$have_symbol_versions_linux],
- [Define to 1 to if GNU/Linux-specific details
- are unconditionally wanted for symbol
- versioning. Define to 2 to if these are wanted
- only if also PIC is defined (allows building
- both shared and static liblzma at the same
- time with Libtool if neither --with-pic nor
- --without-pic is used). This define must be
- used together with liblzma_linux.map.])
- ;;
- *)
- enable_symbol_versions=generic
- ;;
- esac
+ ;;
+ esac
+ AC_DEFINE_UNQUOTED([HAVE_SYMBOL_VERSIONS_LINUX],
+ [$have_symbol_versions_linux],
+ [Define to 1 to if GNU/Linux-specific details
+ are unconditionally wanted for symbol
+ versioning. Define to 2 to if these are wanted
+ only if also PIC is defined (allows building
+ both shared and static liblzma at the same
+ time with Libtool if neither --with-pic nor
+ --without-pic is used). This define must be
+ used together with liblzma_linux.map.])
+ elif test "x$enable_symbol_versions" != xgeneric ; then
+ AC_MSG_RESULT([])
+ AC_MSG_ERROR([unknown symbol versioning variant '$enable_symbol_versions'])
+ fi
AC_MSG_RESULT([yes ($enable_symbol_versions)])
-fi
+])
AM_CONDITIONAL([COND_SYMVERS_LINUX],
[test "x$enable_symbol_versions" = xlinux])
@@ -790,12 +819,6 @@ AM_GNU_GETTEXT([external])
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.])])
-
# immintrin.h allows the use of the intrinsic functions if they are available.
# cpuid.h may be used for detecting x86 processor features at runtime.
AC_CHECK_HEADERS([immintrin.h cpuid.h])
@@ -858,7 +881,6 @@ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
])
CFLAGS="$OLD_CFLAGS"
-
# The Win95 threading lacks a thread-safe one-time initialization function.
# The one-time initialization is needed for crc32_small.c and crc64_small.c
# create the CRC tables. So if small mode is enabled, the threading mode is
@@ -873,6 +895,7 @@ if test "x$enable_small$enable_threads$have_func_attribute_constructor" \
__attribute__((__constructor__))])
fi
+
###############################################################################
# Checks for library functions.
###############################################################################
@@ -880,6 +903,22 @@ fi
# Gnulib replacements as needed
gl_GETOPT
+# If clock_gettime() is available, liblzma with pthreads may use it, and
+# xz may use it even when threading support is disabled. In XZ Utils 5.4.x
+# and older, configure checked for clock_gettime() only when using pthreads.
+# This way non-threaded builds of liblzma didn't get a useless dependency on
+# librt which further had a dependency on libpthread. Avoiding these was
+# useful when a small build was needed, for example, for initramfs use.
+#
+# The above reasoning is thoroughly obsolete: On GNU/Linux, librt hasn't
+# been needed for clock_gettime() since glibc 2.17 (2012-12-25).
+# Solaris 10 needs librt but Solaris 11 doesn't anymore.
+AC_SEARCH_LIBS([clock_gettime], [rt])
+AC_CHECK_FUNCS([clock_gettime])
+AC_CHECK_DECL([CLOCK_MONOTONIC], [AC_DEFINE([HAVE_CLOCK_MONOTONIC], [1],
+ [Define to 1 if 'CLOCK_MONOTONIC' is declared in <time.h>.])], [],
+ [[#include <time.h>]])
+
# Find the best function to set timestamps.
AC_CHECK_FUNCS([futimens futimes futimesat utimes _futime utime], [break])
@@ -999,21 +1038,121 @@ __m128i my_clmul(__m128i a)
[Define to 1 if _mm_set_epi64x and
_mm_clmulepi64_si128 are usable.
See configure.ac for details.])
- AC_MSG_RESULT([yes])
+ enable_clmul_crc=yes
], [
- AC_MSG_RESULT([no])
+ enable_clmul_crc=no
+ ])
+ AC_MSG_RESULT([$enable_clmul_crc])
+])
+
+# ARM64 C Language Extensions define CRC32 functions in arm_acle.h.
+# These are supported by at least GCC and Clang which both need
+# __attribute__((__target__("+crc"))), unless the needed compiler flags
+# are used to support the CRC instruction.
+AC_MSG_CHECKING([if ARM64 CRC32 instruction is usable])
+AS_IF([test "x$enable_arm64_crc32" = xno], [
+ AC_MSG_RESULT([no, --disable-arm64-crc32 was used])
+], [
+ # Set -Werror here because some versions of Clang (14 and older)
+ # do not report the unsupported __attribute__((__target__("+crc")))
+ # or __crc32d() as an error, only as a warning. This does not need
+ # to be done with CMake because tests will attempt to link and the
+ # error will be reported then.
+ OLD_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -Werror"
+
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include <arm_acle.h>
+#include <stdint.h>
+
+#if (defined(__GNUC__) || defined(__clang__)) && !defined(__EDG__)
+__attribute__((__target__("+crc")))
+#endif
+uint32_t my_crc(uint32_t a, uint64_t b)
+{
+ return __crc32d(a, b);
+}
+ ]])], [
+ AC_DEFINE([HAVE_ARM64_CRC32], [1],
+ [Define to 1 if ARM64 CRC32 instruction is supported.
+ See configure.ac for details.])
+ enable_arm64_crc32=yes
+ ], [
+ enable_arm64_crc32=no
])
+ AC_MSG_RESULT([$enable_arm64_crc32])
+
+ CFLAGS="$OLD_CFLAGS"
+])
+
+# Check for ARM64 CRC32 instruction runtime detection.
+# getauxval() is supported on Linux, elf_aux_info() on FreeBSD, and
+# sysctlbyname("hw.optional.armv8_crc32", ...) is supported on Darwin
+# (macOS, iOS, etc.). Note that sysctlbyname() is supported on FreeBSD,
+# NetBSD, and possibly others too but the string is specific to Apple OSes.
+# The C code is responsible for checking defined(__APPLE__) before using
+# sysctlbyname("hw.optional.armv8_crc32", ...).
+AS_IF([test "x$enable_arm64_crc32" = xyes], [
+ AC_CHECK_FUNCS([getauxval elf_aux_info sysctlbyname], [break])
])
+
# Check for sandbox support. If one is found, set enable_sandbox=found.
+#
+# About -fsanitize: Of our three sandbox methods, only Landlock is
+# incompatible with -fsanitize. FreeBSD 13.2 with Capsicum was tested with
+# -fsanitize=address,undefined and had no issues. OpenBSD (as of version
+# 7.4) has minimal support for process instrumentation. OpenBSD does not
+# distribute the additional libraries needed (libasan, libubsan, etc.) with
+# GCC or Clang needed for runtime sanitization support and instead only
+# support -fsanitize-minimal-runtime for minimal undefined behavior
+# sanitization. This minimal support is compatible with our use of the
+# Pledge sandbox. So only Landlock will result in a build that cannot
+# compress or decompress a single file to standard out.
AS_CASE([$enable_sandbox],
[auto | capsicum], [
- AX_CHECK_CAPSICUM([enable_sandbox=found], [:])
+ AC_CHECK_FUNCS([cap_rights_limit], [enable_sandbox=found])
]
)
AS_CASE([$enable_sandbox],
[auto | pledge], [
- AC_CHECK_FUNCS([pledge], [enable_sandbox=found ; break])
+ AC_CHECK_FUNCS([pledge], [enable_sandbox=found])
+ ]
+)
+AS_CASE([$enable_sandbox],
+ [auto | landlock], [
+ AC_MSG_CHECKING([if Linux Landlock is usable])
+
+ # A compile check is done here because some systems have
+ # linux/landlock.h, but do not have the syscalls defined
+ # in order to actually use Linux Landlock.
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+ #include <linux/landlock.h>
+ #include <sys/syscall.h>
+ #include <sys/prctl.h>
+
+ void my_sandbox(void)
+ {
+ (void)prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0);
+ (void)SYS_landlock_create_ruleset;
+ (void)SYS_landlock_restrict_self;
+ (void)LANDLOCK_CREATE_RULESET_VERSION;
+ return;
+ }
+ ]])], [
+ enable_sandbox=found
+
+ AS_CASE([$CFLAGS], [*-fsanitize=*], [AC_MSG_ERROR([
+ CFLAGS contains '-fsanitize=' which is incompatible with the Landlock
+ sandboxing. Use --disable-sandbox when using '-fsanitize'.])])
+
+ AC_DEFINE([HAVE_LINUX_LANDLOCK], [1],
+ [Define to 1 if Linux Landlock is supported.
+ See configure.ac for details.])
+ AC_MSG_RESULT([yes])
+ ], [
+ AC_MSG_RESULT([no])
+ ])
]
)
@@ -1063,7 +1202,6 @@ AS_IF([test "$GCC" = yes], [
-Wall \
-Wextra \
-Wvla \
- -Wc99-c11-compat \
-Wformat=2 \
-Winit-self \
-Wmissing-include-dirs \
diff --git a/debug/Makefile.am b/debug/Makefile.am
index 9026fd9..db6f47f 100644
--- a/debug/Makefile.am
+++ b/debug/Makefile.am
@@ -1,9 +1,5 @@
-##
+## SPDX-License-Identifier: 0BSD
## 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
@@ -15,7 +11,8 @@ noinst_PROGRAMS = \
memusage \
crc32 \
known_sizes \
- hex2bin
+ hex2bin \
+ testfilegen-arm64
AM_CPPFLAGS = \
-I$(top_srcdir)/src/common \
diff --git a/debug/Makefile.in b/debug/Makefile.in
index 256be27..58147f4 100644
--- a/debug/Makefile.in
+++ b/debug/Makefile.in
@@ -90,12 +90,13 @@ build_triplet = @build@
host_triplet = @host@
noinst_PROGRAMS = repeat$(EXEEXT) sync_flush$(EXEEXT) \
full_flush$(EXEEXT) memusage$(EXEEXT) crc32$(EXEEXT) \
- known_sizes$(EXEEXT) hex2bin$(EXEEXT)
+ known_sizes$(EXEEXT) hex2bin$(EXEEXT) \
+ testfilegen-arm64$(EXEEXT)
@COND_GNULIB_TRUE@am__append_1 = $(top_builddir)/lib/libgnu.a
subdir = debug
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_capsicum.m4 \
- $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/getopt.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
+ $(top_srcdir)/m4/build-to-host.m4 $(top_srcdir)/m4/getopt.m4 \
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/host-cpu-c-abi.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -159,6 +160,12 @@ sync_flush_OBJECTS = sync_flush.$(OBJEXT)
sync_flush_LDADD = $(LDADD)
sync_flush_DEPENDENCIES = $(top_builddir)/src/liblzma/liblzma.la \
$(am__append_1) $(am__DEPENDENCIES_1)
+testfilegen_arm64_SOURCES = testfilegen-arm64.c
+testfilegen_arm64_OBJECTS = testfilegen-arm64.$(OBJEXT)
+testfilegen_arm64_LDADD = $(LDADD)
+testfilegen_arm64_DEPENDENCIES = \
+ $(top_builddir)/src/liblzma/liblzma.la $(am__append_1) \
+ $(am__DEPENDENCIES_1)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
@@ -177,7 +184,7 @@ am__maybe_remake_depfiles = depfiles
am__depfiles_remade = ./$(DEPDIR)/crc32.Po ./$(DEPDIR)/full_flush.Po \
./$(DEPDIR)/hex2bin.Po ./$(DEPDIR)/known_sizes.Po \
./$(DEPDIR)/memusage.Po ./$(DEPDIR)/repeat.Po \
- ./$(DEPDIR)/sync_flush.Po
+ ./$(DEPDIR)/sync_flush.Po ./$(DEPDIR)/testfilegen-arm64.Po
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -198,9 +205,9 @@ am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = crc32.c full_flush.c hex2bin.c known_sizes.c memusage.c \
- repeat.c sync_flush.c
+ repeat.c sync_flush.c testfilegen-arm64.c
DIST_SOURCES = crc32.c full_flush.c hex2bin.c known_sizes.c memusage.c \
- repeat.c sync_flush.c
+ repeat.c sync_flush.c testfilegen-arm64.c
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@@ -236,7 +243,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CAPSICUM_LIB = @CAPSICUM_LIB@
CC = @CC@
CCAS = @CCAS@
CCASDEPMODE = @CCASDEPMODE@
@@ -365,6 +371,8 @@ install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
+localedir_c = @localedir_c@
+localedir_c_make = @localedir_c_make@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
@@ -463,6 +471,10 @@ sync_flush$(EXEEXT): $(sync_flush_OBJECTS) $(sync_flush_DEPENDENCIES) $(EXTRA_sy
@rm -f sync_flush$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(sync_flush_OBJECTS) $(sync_flush_LDADD) $(LIBS)
+testfilegen-arm64$(EXEEXT): $(testfilegen_arm64_OBJECTS) $(testfilegen_arm64_DEPENDENCIES) $(EXTRA_testfilegen_arm64_DEPENDENCIES)
+ @rm -f testfilegen-arm64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(testfilegen_arm64_OBJECTS) $(testfilegen_arm64_LDADD) $(LIBS)
+
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@@ -476,6 +488,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memusage.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/repeat.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sync_flush.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testfilegen-arm64.Po@am__quote@ # am--include-marker
$(am__depfiles_remade):
@$(MKDIR_P) $(@D)
@@ -641,6 +654,7 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/memusage.Po
-rm -f ./$(DEPDIR)/repeat.Po
-rm -f ./$(DEPDIR)/sync_flush.Po
+ -rm -f ./$(DEPDIR)/testfilegen-arm64.Po
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
@@ -693,6 +707,7 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/memusage.Po
-rm -f ./$(DEPDIR)/repeat.Po
-rm -f ./$(DEPDIR)/sync_flush.Po
+ -rm -f ./$(DEPDIR)/testfilegen-arm64.Po
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
diff --git a/debug/crc32.c b/debug/crc32.c
index e545a3c..eed4793 100644
--- a/debug/crc32.c
+++ b/debug/crc32.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file crc32.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "sysdefs.h"
diff --git a/debug/full_flush.c b/debug/full_flush.c
index 227f737..79c8f15 100644
--- a/debug/full_flush.c
+++ b/debug/full_flush.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file full_flush.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "sysdefs.h"
diff --git a/debug/hex2bin.c b/debug/hex2bin.c
index 7324624..4536843 100644
--- a/debug/hex2bin.c
+++ b/debug/hex2bin.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file hex2bin.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "sysdefs.h"
diff --git a/debug/known_sizes.c b/debug/known_sizes.c
index 6c3641f..3f5aada 100644
--- a/debug/known_sizes.c
+++ b/debug/known_sizes.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file known_sizes.c
@@ -9,9 +11,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "sysdefs.h"
diff --git a/debug/memusage.c b/debug/memusage.c
index bd72b5a..b592895 100644
--- a/debug/memusage.c
+++ b/debug/memusage.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file memusage.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "sysdefs.h"
diff --git a/debug/repeat.c b/debug/repeat.c
index a00bde2..4830b13 100644
--- a/debug/repeat.c
+++ b/debug/repeat.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file repeat.c
@@ -9,9 +11,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "sysdefs.h"
diff --git a/debug/sync_flush.c b/debug/sync_flush.c
index 2292333..5ce2e57 100644
--- a/debug/sync_flush.c
+++ b/debug/sync_flush.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file sync_flush.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "sysdefs.h"
diff --git a/debug/testfilegen-arm64.c b/debug/testfilegen-arm64.c
new file mode 100644
index 0000000..88cadca
--- /dev/null
+++ b/debug/testfilegen-arm64.c
@@ -0,0 +1,116 @@
+// SPDX-License-Identifier: 0BSD
+
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file testfilegen-arm64.c
+/// \brief Generates uncompressed test file for the ARM64 filter
+//
+// Author: Lasse Collin
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+
+
+static uint32_t pc4 = 0;
+
+
+static void
+put32le(uint32_t v)
+{
+ putchar((v >> 0) & 0xFF);
+ putchar((v >> 8) & 0xFF);
+ putchar((v >> 16) & 0xFF);
+ putchar((v >> 24) & 0xFF);
+ ++pc4;
+}
+
+
+static void
+putbl(uint32_t imm)
+{
+ imm &= (1U << 26) - 1;
+ imm |= 0x25U << 26;
+ put32le(imm);
+}
+
+
+static void
+putadrp32(uint32_t imm)
+{
+ imm &= 0x1FFFFFU;
+
+ // fprintf(stderr, "ADRP 0x%08X\n", imm);
+
+ uint32_t instr = 0x90000000;
+ instr |= (pc4 * 5 + 11) & 0x1F;
+ instr |= (imm & 3) << 29;
+ instr |= (imm >> 2) << 5;
+
+ put32le(instr);
+}
+
+
+extern int
+main(void)
+{
+ putbl(0);
+ putbl(0x03FFFFFF);
+ putbl(0x03FFFFFE);
+ putbl(0x03FFFFFD);
+
+ putbl(3);
+ putbl(2);
+ putbl(1);
+ putbl(0);
+
+
+ putbl(0x02000001);
+ putbl(0x02000000);
+ putbl(0x01FFFFFF);
+ putbl(0x01FFFFFE);
+
+ putbl(0x01111117);
+ putbl(0x01111116);
+ putbl(0x01111115);
+ putbl(0x01111114);
+
+
+ putbl(0x02222227);
+ putbl(0x02222226);
+ putbl(0x02222225);
+ putbl(0x02222224);
+
+ putbl(0U - pc4);
+ putbl(0U - pc4);
+ putbl(0U - pc4);
+ putbl(0U - pc4);
+
+ putadrp32(0x00);
+ putadrp32(0x05);
+ putadrp32(0x15);
+ putadrp32(0x25);
+
+ for (unsigned rep = 0; rep < 2; ++rep) {
+ while ((pc4 << 2) & 4095)
+ put32le(0x55555555U);
+
+ for (unsigned i = 10; i <= 21; ++i) {
+ const uint32_t neg = (0x1FFF00 >> (21 - i)) & ~255U;
+ const uint32_t plus = 1U << (i - 1);
+ putadrp32(0x000000 | plus);
+ putadrp32(0x000005 | plus);
+ putadrp32(0x0000FE | plus);
+ putadrp32(0x0000FF | plus);
+
+ putadrp32(0x000000 | neg);
+ putadrp32(0x000005 | neg);
+ putadrp32(0x0000FE | neg);
+ putadrp32(0x0000FF | neg);
+ }
+ }
+
+ return 0;
+}
diff --git a/debug/translation.bash b/debug/translation.bash
index df4210d..77a4c78 100644
--- a/debug/translation.bash
+++ b/debug/translation.bash
@@ -1,4 +1,5 @@
#!/bin/bash
+# SPDX-License-Identifier: 0BSD
###############################################################################
#
@@ -20,9 +21,6 @@
#
# Author: Lasse Collin
#
-# This file has been put into the public domain.
-# You can do whatever you want with this file.
-#
###############################################################################
set -e
@@ -80,7 +78,6 @@ for CMD in \
"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" \
diff --git a/doc/api/annotated.html b/doc/api/annotated.html
deleted file mode 100644
index 4016c49..0000000
--- a/doc/api/annotated.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): Data Structures</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div class="header">
- <div class="headertitle"><div class="title">Data Structures</div></div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock">Here are the data structures with brief descriptions:</div><div class="directory">
-<table class="directory">
-<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structlzma__allocator.html" target="_self">lzma_allocator</a></td><td class="desc">Custom functions for memory handling </td></tr>
-<tr id="row_1_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structlzma__block.html" target="_self">lzma_block</a></td><td class="desc">Options for the Block and Block Header encoders and decoders </td></tr>
-<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structlzma__filter.html" target="_self">lzma_filter</a></td><td class="desc">Filter options </td></tr>
-<tr id="row_3_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structlzma__index__iter.html" target="_self">lzma_index_iter</a></td><td class="desc">Iterator to get information about Blocks and Streams </td></tr>
-<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structlzma__mt.html" target="_self">lzma_mt</a></td><td class="desc">Multithreading options </td></tr>
-<tr id="row_5_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structlzma__options__bcj.html" target="_self">lzma_options_bcj</a></td><td class="desc">Options for BCJ filters </td></tr>
-<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structlzma__options__delta.html" target="_self">lzma_options_delta</a></td><td class="desc">Options for the Delta filter </td></tr>
-<tr id="row_7_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structlzma__options__lzma.html" target="_self">lzma_options_lzma</a></td><td class="desc">Options specific to the LZMA1 and LZMA2 filters </td></tr>
-<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structlzma__stream.html" target="_self">lzma_stream</a></td><td class="desc">Passing data to and from liblzma </td></tr>
-<tr id="row_9_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structlzma__stream__flags.html" target="_self">lzma_stream_flags</a></td><td class="desc">Options for encoding/decoding Stream Header and Stream Footer </td></tr>
-</table>
-</div><!-- directory -->
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/base_8h.html b/doc/api/base_8h.html
deleted file mode 100644
index 417ccef..0000000
--- a/doc/api/base_8h.html
+++ /dev/null
@@ -1,580 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma/base.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File&#160;List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div id="nav-path" class="navpath">
- <ul>
-<li class="navelem"><a class="el" href="dir_b17a1d403082bd69a703ed987cf158fb.html">lzma</a></li> </ul>
-</div>
-</div><!-- top -->
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> &#124;
-<a href="#define-members">Macros</a> &#124;
-<a href="#typedef-members">Typedefs</a> &#124;
-<a href="#enum-members">Enumerations</a> &#124;
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle"><div class="title">base.h File Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>Data types and functions used in many places in liblzma API.
-<a href="#details">More...</a></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__allocator.html">lzma_allocator</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Custom functions for memory handling. <a href="structlzma__allocator.html#details">More...</a><br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__stream.html">lzma_stream</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Passing data to and from liblzma. <a href="structlzma__stream.html#details">More...</a><br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
-Macros</h2></td></tr>
-<tr class="memitem:af31f0c8b6f14359cd082b9559f7f3e01"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="base_8h.html#af31f0c8b6f14359cd082b9559f7f3e01">LZMA_STREAM_INIT</a></td></tr>
-<tr class="memdesc:af31f0c8b6f14359cd082b9559f7f3e01"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialization for <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a>. <br /></td></tr>
-<tr class="separator:af31f0c8b6f14359cd082b9559f7f3e01"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
-Typedefs</h2></td></tr>
-<tr class="memitem:abbc819c74b484c846825ae1388a50a59"><td class="memItemLeft" align="right" valign="top">typedef unsigned char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="base_8h.html#abbc819c74b484c846825ae1388a50a59">lzma_bool</a></td></tr>
-<tr class="memdesc:abbc819c74b484c846825ae1388a50a59"><td class="mdescLeft">&#160;</td><td class="mdescRight">Boolean. <br /></td></tr>
-<tr class="separator:abbc819c74b484c846825ae1388a50a59"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab1a60127c640135687a5bcc232cec906"><td class="memItemLeft" align="right" valign="top">typedef struct lzma_internal_s&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="base_8h.html#ab1a60127c640135687a5bcc232cec906">lzma_internal</a></td></tr>
-<tr class="memdesc:ab1a60127c640135687a5bcc232cec906"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal data structure. <br /></td></tr>
-<tr class="separator:ab1a60127c640135687a5bcc232cec906"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
-Enumerations</h2></td></tr>
-<tr class="memitem:a05805a07754b2aa22f7d443eb7ece41a"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="base_8h.html#a05805a07754b2aa22f7d443eb7ece41a">lzma_reserved_enum</a> { <b>LZMA_RESERVED_ENUM</b> = 0
- }</td></tr>
-<tr class="memdesc:a05805a07754b2aa22f7d443eb7ece41a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type of reserved enumeration variable in structures. <a href="base_8h.html#a05805a07754b2aa22f7d443eb7ece41a">More...</a><br /></td></tr>
-<tr class="separator:a05805a07754b2aa22f7d443eb7ece41a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8494e0457e1463d6d2b6836018d87b6e"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> { <br />
-&#160;&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6eac003781ccb81bbd5578e29abed8a8cfe">LZMA_OK</a> = 0
-, <a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea91ecc6fab14c13ad36224afbcb4e55c4">LZMA_STREAM_END</a> = 1
-, <a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6eaa720d30092d504d7d138a320db1905ef">LZMA_NO_CHECK</a> = 2
-, <a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea989f393a1772d85bf545a9da48fc7ac2">LZMA_UNSUPPORTED_CHECK</a> = 3
-, <br />
-&#160;&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6eaa5b648c18da0f584f621cfdf7fef1bdb">LZMA_GET_CHECK</a> = 4
-, <a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea567e1464feca03900a5425fb45b2f5b6">LZMA_MEM_ERROR</a> = 5
-, <a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6eaa1d705effe6026f32c0fe9756b6326bc">LZMA_MEMLIMIT_ERROR</a> = 6
-, <a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea63b7a58949854eb9307f8e351358d56c">LZMA_FORMAT_ERROR</a> = 7
-, <br />
-&#160;&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6eaa9ff6dfee36b7aba4fae60706d37425f">LZMA_OPTIONS_ERROR</a> = 8
-, <a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea3aa72729a844790e39b4e1101a731dfb">LZMA_DATA_ERROR</a> = 9
-, <a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea9ca0ecb62459bdc84d6af47d16b23ae5">LZMA_BUF_ERROR</a> = 10
-, <a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea2dac8d451cb38da8550653d0d7be4ec2">LZMA_PROG_ERROR</a> = 11
-, <br />
-&#160;&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea6cf28e5345851f13bd798a4eab8cc939">LZMA_SEEK_NEEDED</a> = 12
-, <b>LZMA_RET_INTERNAL1</b> = 101
-, <b>LZMA_RET_INTERNAL2</b> = 102
-, <b>LZMA_RET_INTERNAL3</b> = 103
-, <br />
-&#160;&#160;<b>LZMA_RET_INTERNAL4</b> = 104
-, <b>LZMA_RET_INTERNAL5</b> = 105
-, <b>LZMA_RET_INTERNAL6</b> = 106
-, <b>LZMA_RET_INTERNAL7</b> = 107
-, <br />
-&#160;&#160;<b>LZMA_RET_INTERNAL8</b> = 108
-<br />
- }</td></tr>
-<tr class="memdesc:a8494e0457e1463d6d2b6836018d87b6e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return values used by several functions in liblzma. <a href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">More...</a><br /></td></tr>
-<tr class="separator:a8494e0457e1463d6d2b6836018d87b6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa92efcbf3cecfcac79c81fc645fce77e"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="base_8h.html#aa92efcbf3cecfcac79c81fc645fce77e">lzma_action</a> { <br />
-&#160;&#160;<a class="el" href="base_8h.html#aa92efcbf3cecfcac79c81fc645fce77ea868472b76492afcaef54020a481890b1">LZMA_RUN</a> = 0
-, <a class="el" href="base_8h.html#aa92efcbf3cecfcac79c81fc645fce77ea14d75152afcda85d215e877fdd9c4170">LZMA_SYNC_FLUSH</a> = 1
-, <a class="el" href="base_8h.html#aa92efcbf3cecfcac79c81fc645fce77eaab46f0d7c721f1ec377e9575eab2586f">LZMA_FULL_FLUSH</a> = 2
-, <a class="el" href="base_8h.html#aa92efcbf3cecfcac79c81fc645fce77eaf7bf60e3555a4d10ffad3ecc3d2e01f1">LZMA_FULL_BARRIER</a> = 4
-, <br />
-&#160;&#160;<a class="el" href="base_8h.html#aa92efcbf3cecfcac79c81fc645fce77ea7d24fb3c6c144d13bcb091195b8ebec1">LZMA_FINISH</a> = 3
-<br />
- }</td></tr>
-<tr class="memdesc:aa92efcbf3cecfcac79c81fc645fce77e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The `action' argument for <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> <a href="base_8h.html#aa92efcbf3cecfcac79c81fc645fce77e">More...</a><br /></td></tr>
-<tr class="separator:aa92efcbf3cecfcac79c81fc645fce77e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:a28cc09bc422d5ba1e0187c9f2af5d957"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957">lzma_code</a> (<a class="el" href="structlzma__stream.html">lzma_stream</a> *strm, <a class="el" href="base_8h.html#aa92efcbf3cecfcac79c81fc645fce77e">lzma_action</a> action) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a28cc09bc422d5ba1e0187c9f2af5d957"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encode or decode data. <br /></td></tr>
-<tr class="separator:a28cc09bc422d5ba1e0187c9f2af5d957"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a854ff37464ae1225febf14db1af43308"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="base_8h.html#a854ff37464ae1225febf14db1af43308">lzma_end</a> (<a class="el" href="structlzma__stream.html">lzma_stream</a> *strm) lzma_nothrow</td></tr>
-<tr class="memdesc:a854ff37464ae1225febf14db1af43308"><td class="mdescLeft">&#160;</td><td class="mdescRight">Free memory allocated for the coder data structures. <br /></td></tr>
-<tr class="separator:a854ff37464ae1225febf14db1af43308"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab6447cd68eeecbd6b88f21daeb8ce751"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="base_8h.html#ab6447cd68eeecbd6b88f21daeb8ce751">lzma_get_progress</a> (<a class="el" href="structlzma__stream.html">lzma_stream</a> *strm, uint64_t *progress_in, uint64_t *progress_out) lzma_nothrow</td></tr>
-<tr class="memdesc:ab6447cd68eeecbd6b88f21daeb8ce751"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get progress information. <br /></td></tr>
-<tr class="separator:ab6447cd68eeecbd6b88f21daeb8ce751"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a418b210cf206782a73cd9de7dc27f670"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="base_8h.html#a418b210cf206782a73cd9de7dc27f670">lzma_memusage</a> (const <a class="el" href="structlzma__stream.html">lzma_stream</a> *strm) lzma_nothrow lzma_attr_pure</td></tr>
-<tr class="memdesc:a418b210cf206782a73cd9de7dc27f670"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the memory usage of decoder filter chain. <br /></td></tr>
-<tr class="separator:a418b210cf206782a73cd9de7dc27f670"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac871bc2ead5d482c6d6b3d51bfec365c"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="base_8h.html#ac871bc2ead5d482c6d6b3d51bfec365c">lzma_memlimit_get</a> (const <a class="el" href="structlzma__stream.html">lzma_stream</a> *strm) lzma_nothrow lzma_attr_pure</td></tr>
-<tr class="memdesc:ac871bc2ead5d482c6d6b3d51bfec365c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the current memory usage limit. <br /></td></tr>
-<tr class="separator:ac871bc2ead5d482c6d6b3d51bfec365c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afc49d4cf75b73128a167df3407505f7b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="base_8h.html#afc49d4cf75b73128a167df3407505f7b">lzma_memlimit_set</a> (<a class="el" href="structlzma__stream.html">lzma_stream</a> *strm, uint64_t memlimit) lzma_nothrow</td></tr>
-<tr class="memdesc:afc49d4cf75b73128a167df3407505f7b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the memory usage limit. <br /></td></tr>
-<tr class="separator:afc49d4cf75b73128a167df3407505f7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Data types and functions used in many places in liblzma API. </p>
-<dl class="section note"><dt>Note</dt><dd>Never include this file directly. Use &lt;<a class="el" href="lzma_8h.html" title="The public API of liblzma data compression library.">lzma.h</a>&gt; instead. </dd></dl>
-</div><h2 class="groupheader">Macro Definition Documentation</h2>
-<a id="af31f0c8b6f14359cd082b9559f7f3e01" name="af31f0c8b6f14359cd082b9559f7f3e01"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#af31f0c8b6f14359cd082b9559f7f3e01">&#9670;&#160;</a></span>LZMA_STREAM_INIT</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_STREAM_INIT</td>
- </tr>
- </table>
-</div><div class="memdoc">
-<b>Value:</b><div class="fragment"><div class="line"> { NULL, 0, 0, NULL, 0, 0, NULL, NULL, \</div>
-<div class="line"> NULL, NULL, NULL, NULL, 0, 0, 0, 0, \</div>
-<div class="line"> LZMA_RESERVED_ENUM, LZMA_RESERVED_ENUM }</div>
-</div><!-- fragment -->
-<p>Initialization for <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a>. </p>
-<p>When you declare an instance of <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a>, you can immediately initialize it so that initialization functions know that no memory has been allocated yet:</p>
-<p><a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> strm = LZMA_STREAM_INIT;</p>
-<p>If you need to initialize a dynamically allocated <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a>, you can use memset(strm_pointer, 0, sizeof(lzma_stream)). Strictly speaking, this violates the C standard since NULL may have different internal representation than zero, but it should be portable enough in practice. Anyway, for maximum portability, you can use something like this:</p>
-<p><a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> tmp = LZMA_STREAM_INIT; *strm = tmp; </p>
-
-</div>
-</div>
-<h2 class="groupheader">Typedef Documentation</h2>
-<a id="abbc819c74b484c846825ae1388a50a59" name="abbc819c74b484c846825ae1388a50a59"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#abbc819c74b484c846825ae1388a50a59">&#9670;&#160;</a></span>lzma_bool</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef unsigned char <a class="el" href="base_8h.html#abbc819c74b484c846825ae1388a50a59">lzma_bool</a></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Boolean. </p>
-<p>This is here because C89 doesn't have stdbool.h. To set a value for variables having type lzma_bool, you can use</p><ul>
-<li>C99's `true' and `false' from stdbool.h;</li>
-<li>C++'s internal `true' and `false'; or</li>
-<li>integers one (true) and zero (false). </li>
-</ul>
-
-</div>
-</div>
-<a id="ab1a60127c640135687a5bcc232cec906" name="ab1a60127c640135687a5bcc232cec906"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ab1a60127c640135687a5bcc232cec906">&#9670;&#160;</a></span>lzma_internal</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef struct lzma_internal_s <a class="el" href="base_8h.html#ab1a60127c640135687a5bcc232cec906">lzma_internal</a></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Internal data structure. </p>
-<p>The contents of this structure is not visible outside the library. </p>
-
-</div>
-</div>
-<h2 class="groupheader">Enumeration Type Documentation</h2>
-<a id="a05805a07754b2aa22f7d443eb7ece41a" name="a05805a07754b2aa22f7d443eb7ece41a"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a05805a07754b2aa22f7d443eb7ece41a">&#9670;&#160;</a></span>lzma_reserved_enum</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">enum <a class="el" href="base_8h.html#a05805a07754b2aa22f7d443eb7ece41a">lzma_reserved_enum</a></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Type of reserved enumeration variable in structures. </p>
-<p>To avoid breaking library ABI when new features are added, several structures contain extra variables that may be used in future. Since sizeof(enum) can be different than sizeof(int), and sizeof(enum) may even vary depending on the range of enumeration constants, we specify a separate type to be used for reserved enumeration variables. All enumeration constants in liblzma API will be non-negative and less than 128, which should guarantee that the ABI won't break even when new constants are added to existing enumerations. </p>
-
-</div>
-</div>
-<a id="a8494e0457e1463d6d2b6836018d87b6e" name="a8494e0457e1463d6d2b6836018d87b6e"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a8494e0457e1463d6d2b6836018d87b6e">&#9670;&#160;</a></span>lzma_ret</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">enum <a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Return values used by several functions in liblzma. </p>
-<p>Check the descriptions of specific functions to find out which return values they can return. With some functions the return values may have more specific meanings than described here; those differences are described per-function basis. </p>
-<table class="fieldtable">
-<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a8494e0457e1463d6d2b6836018d87b6eac003781ccb81bbd5578e29abed8a8cfe" name="a8494e0457e1463d6d2b6836018d87b6eac003781ccb81bbd5578e29abed8a8cfe"></a>LZMA_OK&#160;</td><td class="fielddoc"><p>Operation completed successfully. </p>
-</td></tr>
-<tr><td class="fieldname"><a id="a8494e0457e1463d6d2b6836018d87b6ea91ecc6fab14c13ad36224afbcb4e55c4" name="a8494e0457e1463d6d2b6836018d87b6ea91ecc6fab14c13ad36224afbcb4e55c4"></a>LZMA_STREAM_END&#160;</td><td class="fielddoc"><p>End of stream was reached. </p>
-<p>In encoder, LZMA_SYNC_FLUSH, LZMA_FULL_FLUSH, or LZMA_FINISH was finished. In decoder, this indicates that all the data was successfully decoded.</p>
-<p>In all cases, when LZMA_STREAM_END is returned, the last output bytes should be picked from strm-&gt;next_out. </p>
-</td></tr>
-<tr><td class="fieldname"><a id="a8494e0457e1463d6d2b6836018d87b6eaa720d30092d504d7d138a320db1905ef" name="a8494e0457e1463d6d2b6836018d87b6eaa720d30092d504d7d138a320db1905ef"></a>LZMA_NO_CHECK&#160;</td><td class="fielddoc"><p>Input stream has no integrity check. </p>
-<p>This return value can be returned only if the LZMA_TELL_NO_CHECK flag was used when initializing the decoder. LZMA_NO_CHECK is just a warning, and the decoding can be continued normally.</p>
-<p>It is possible to call <a class="el" href="check_8h.html#a8d7c3ffabfd024485f03fa209536c746" title="Get the type of the integrity check.">lzma_get_check()</a> immediately after lzma_code has returned LZMA_NO_CHECK. The result will naturally be LZMA_CHECK_NONE, but the possibility to call <a class="el" href="check_8h.html#a8d7c3ffabfd024485f03fa209536c746" title="Get the type of the integrity check.">lzma_get_check()</a> may be convenient in some applications. </p>
-</td></tr>
-<tr><td class="fieldname"><a id="a8494e0457e1463d6d2b6836018d87b6ea989f393a1772d85bf545a9da48fc7ac2" name="a8494e0457e1463d6d2b6836018d87b6ea989f393a1772d85bf545a9da48fc7ac2"></a>LZMA_UNSUPPORTED_CHECK&#160;</td><td class="fielddoc"><p>Cannot calculate the integrity check. </p>
-<p>The usage of this return value is different in encoders and decoders.</p>
-<p>Encoders can return this value only from the initialization function. If initialization fails with this value, the encoding cannot be done, because there's no way to produce output with the correct integrity check.</p>
-<p>Decoders can return this value only from <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> and only if the LZMA_TELL_UNSUPPORTED_CHECK flag was used when initializing the decoder. The decoding can still be continued normally even if the check type is unsupported, but naturally the check will not be validated, and possible errors may go undetected.</p>
-<p>With decoder, it is possible to call <a class="el" href="check_8h.html#a8d7c3ffabfd024485f03fa209536c746" title="Get the type of the integrity check.">lzma_get_check()</a> immediately after <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> has returned LZMA_UNSUPPORTED_CHECK. This way it is possible to find out what the unsupported Check ID was. </p>
-</td></tr>
-<tr><td class="fieldname"><a id="a8494e0457e1463d6d2b6836018d87b6eaa5b648c18da0f584f621cfdf7fef1bdb" name="a8494e0457e1463d6d2b6836018d87b6eaa5b648c18da0f584f621cfdf7fef1bdb"></a>LZMA_GET_CHECK&#160;</td><td class="fielddoc"><p>Integrity check type is now available. </p>
-<p>This value can be returned only by the <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> function and only if the decoder was initialized with the LZMA_TELL_ANY_CHECK flag. LZMA_GET_CHECK tells the application that it may now call <a class="el" href="check_8h.html#a8d7c3ffabfd024485f03fa209536c746" title="Get the type of the integrity check.">lzma_get_check()</a> to find out the Check ID. This can be used, for example, to implement a decoder that accepts only files that have strong enough integrity check. </p>
-</td></tr>
-<tr><td class="fieldname"><a id="a8494e0457e1463d6d2b6836018d87b6ea567e1464feca03900a5425fb45b2f5b6" name="a8494e0457e1463d6d2b6836018d87b6ea567e1464feca03900a5425fb45b2f5b6"></a>LZMA_MEM_ERROR&#160;</td><td class="fielddoc"><p>Cannot allocate memory. </p>
-<p>Memory allocation failed, or the size of the allocation would be greater than SIZE_MAX.</p>
-<p>Due to internal implementation reasons, the coding cannot be continued even if more memory were made available after LZMA_MEM_ERROR. </p>
-</td></tr>
-<tr><td class="fieldname"><a id="a8494e0457e1463d6d2b6836018d87b6eaa1d705effe6026f32c0fe9756b6326bc" name="a8494e0457e1463d6d2b6836018d87b6eaa1d705effe6026f32c0fe9756b6326bc"></a>LZMA_MEMLIMIT_ERROR&#160;</td><td class="fielddoc"><p>Memory usage limit was reached. </p>
-<p>Decoder would need more memory than allowed by the specified memory usage limit. To continue decoding, the memory usage limit has to be increased with <a class="el" href="base_8h.html#afc49d4cf75b73128a167df3407505f7b" title="Set the memory usage limit.">lzma_memlimit_set()</a>.</p>
-<p>liblzma 5.2.6 and earlier had a bug in single-threaded .xz decoder (<a class="el" href="container_8h.html#a02b7683ef98d8049788961370a8b28c0" title="Initialize .xz Stream decoder.">lzma_stream_decoder()</a>) which made it impossible to continue decoding after LZMA_MEMLIMIT_ERROR even if the limit was increased using <a class="el" href="base_8h.html#afc49d4cf75b73128a167df3407505f7b" title="Set the memory usage limit.">lzma_memlimit_set()</a>. Other decoders worked correctly. </p>
-</td></tr>
-<tr><td class="fieldname"><a id="a8494e0457e1463d6d2b6836018d87b6ea63b7a58949854eb9307f8e351358d56c" name="a8494e0457e1463d6d2b6836018d87b6ea63b7a58949854eb9307f8e351358d56c"></a>LZMA_FORMAT_ERROR&#160;</td><td class="fielddoc"><p>File format not recognized. </p>
-<p>The decoder did not recognize the input as supported file format. This error can occur, for example, when trying to decode .lzma format file with lzma_stream_decoder, because lzma_stream_decoder accepts only the .xz format. </p>
-</td></tr>
-<tr><td class="fieldname"><a id="a8494e0457e1463d6d2b6836018d87b6eaa9ff6dfee36b7aba4fae60706d37425f" name="a8494e0457e1463d6d2b6836018d87b6eaa9ff6dfee36b7aba4fae60706d37425f"></a>LZMA_OPTIONS_ERROR&#160;</td><td class="fielddoc"><p>Invalid or unsupported options. </p>
-<p>Invalid or unsupported options, for example</p><ul>
-<li>unsupported filter(s) or filter options; or</li>
-<li>reserved bits set in headers (decoder only).</li>
-</ul>
-<p>Rebuilding liblzma with more features enabled, or upgrading to a newer version of liblzma may help. </p>
-</td></tr>
-<tr><td class="fieldname"><a id="a8494e0457e1463d6d2b6836018d87b6ea3aa72729a844790e39b4e1101a731dfb" name="a8494e0457e1463d6d2b6836018d87b6ea3aa72729a844790e39b4e1101a731dfb"></a>LZMA_DATA_ERROR&#160;</td><td class="fielddoc"><p>Data is corrupt. </p>
-<p>The usage of this return value is different in encoders and decoders. In both encoder and decoder, the coding cannot continue after this error.</p>
-<p>Encoders return this if size limits of the target file format would be exceeded. These limits are huge, thus getting this error from an encoder is mostly theoretical. For example, the maximum compressed and uncompressed size of a .xz Stream is roughly 8 EiB (2^63 bytes).</p>
-<p>Decoders return this error if the input data is corrupt. This can mean, for example, invalid CRC32 in headers or invalid check of uncompressed data. </p>
-</td></tr>
-<tr><td class="fieldname"><a id="a8494e0457e1463d6d2b6836018d87b6ea9ca0ecb62459bdc84d6af47d16b23ae5" name="a8494e0457e1463d6d2b6836018d87b6ea9ca0ecb62459bdc84d6af47d16b23ae5"></a>LZMA_BUF_ERROR&#160;</td><td class="fielddoc"><p>No progress is possible. </p>
-<p>This error code is returned when the coder cannot consume any new input and produce any new output. The most common reason for this error is that the input stream being decoded is truncated or corrupt.</p>
-<p>This error is not fatal. Coding can be continued normally by providing more input and/or more output space, if possible.</p>
-<p>Typically the first call to <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> that can do no progress returns LZMA_OK instead of LZMA_BUF_ERROR. Only the second consecutive call doing no progress will return LZMA_BUF_ERROR. This is intentional.</p>
-<p>With zlib, Z_BUF_ERROR may be returned even if the application is doing nothing wrong, so apps will need to handle Z_BUF_ERROR specially. The above hack guarantees that liblzma never returns LZMA_BUF_ERROR to properly written applications unless the input file is truncated or corrupt. This should simplify the applications a little. </p>
-</td></tr>
-<tr><td class="fieldname"><a id="a8494e0457e1463d6d2b6836018d87b6ea2dac8d451cb38da8550653d0d7be4ec2" name="a8494e0457e1463d6d2b6836018d87b6ea2dac8d451cb38da8550653d0d7be4ec2"></a>LZMA_PROG_ERROR&#160;</td><td class="fielddoc"><p>Programming error. </p>
-<p>This indicates that the arguments given to the function are invalid or the internal state of the decoder is corrupt.</p><ul>
-<li>Function arguments are invalid or the structures pointed by the argument pointers are invalid e.g. if strm-&gt;next_out has been set to NULL and strm-&gt;avail_out &gt; 0 when calling <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a>.</li>
-<li>lzma_* functions have been called in wrong order e.g. <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> was called right after <a class="el" href="base_8h.html#a854ff37464ae1225febf14db1af43308" title="Free memory allocated for the coder data structures.">lzma_end()</a>.</li>
-<li>If errors occur randomly, the reason might be flaky hardware.</li>
-</ul>
-<p>If you think that your code is correct, this error code can be a sign of a bug in liblzma. See the documentation how to report bugs. </p>
-</td></tr>
-<tr><td class="fieldname"><a id="a8494e0457e1463d6d2b6836018d87b6ea6cf28e5345851f13bd798a4eab8cc939" name="a8494e0457e1463d6d2b6836018d87b6ea6cf28e5345851f13bd798a4eab8cc939"></a>LZMA_SEEK_NEEDED&#160;</td><td class="fielddoc"><p>Request to change the input file position. </p>
-<p>Some coders can do random access in the input file. The initialization functions of these coders take the file size as an argument. No other coders can return LZMA_SEEK_NEEDED.</p>
-<p>When this value is returned, the application must seek to the file position given in <a class="el" href="structlzma__stream.html#af7c43a61f3dfeb0b9c8487b7f275054e" title="New seek input position for LZMA_SEEK_NEEDED.">lzma_stream.seek_pos</a>. This value is guaranteed to never exceed the file size that was specified at the coder initialization.</p>
-<p>After seeking the application should read new input and pass it normally via <a class="el" href="structlzma__stream.html#a72fdc738c793f07a5c29715aa57802cf">lzma_stream.next_in</a> and .avail_in. </p>
-</td></tr>
-</table>
-
-</div>
-</div>
-<a id="aa92efcbf3cecfcac79c81fc645fce77e" name="aa92efcbf3cecfcac79c81fc645fce77e"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aa92efcbf3cecfcac79c81fc645fce77e">&#9670;&#160;</a></span>lzma_action</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">enum <a class="el" href="base_8h.html#aa92efcbf3cecfcac79c81fc645fce77e">lzma_action</a></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>The `action' argument for <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> </p>
-<p>After the first use of LZMA_SYNC_FLUSH, LZMA_FULL_FLUSH, LZMA_FULL_BARRIER, or LZMA_FINISH, the same `action' must be used until <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> returns LZMA_STREAM_END. Also, the amount of input (that is, strm-&gt;avail_in) must not be modified by the application until <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> returns LZMA_STREAM_END. Changing the `action' or modifying the amount of input will make <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> return LZMA_PROG_ERROR. </p>
-<table class="fieldtable">
-<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="aa92efcbf3cecfcac79c81fc645fce77ea868472b76492afcaef54020a481890b1" name="aa92efcbf3cecfcac79c81fc645fce77ea868472b76492afcaef54020a481890b1"></a>LZMA_RUN&#160;</td><td class="fielddoc"><p>Continue coding. </p>
-<p>Encoder: Encode as much input as possible. Some internal buffering will probably be done (depends on the filter chain in use), which causes latency: the input used won't usually be decodeable from the output of the same <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> call.</p>
-<p>Decoder: Decode as much input as possible and produce as much output as possible. </p>
-</td></tr>
-<tr><td class="fieldname"><a id="aa92efcbf3cecfcac79c81fc645fce77ea14d75152afcda85d215e877fdd9c4170" name="aa92efcbf3cecfcac79c81fc645fce77ea14d75152afcda85d215e877fdd9c4170"></a>LZMA_SYNC_FLUSH&#160;</td><td class="fielddoc"><p>Make all the input available at output. </p>
-<p>Normally the encoder introduces some latency. LZMA_SYNC_FLUSH forces all the buffered data to be available at output without resetting the internal state of the encoder. This way it is possible to use compressed stream for example for communication over network.</p>
-<p>Only some filters support LZMA_SYNC_FLUSH. Trying to use LZMA_SYNC_FLUSH with filters that don't support it will make <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> return LZMA_OPTIONS_ERROR. For example, LZMA1 doesn't support LZMA_SYNC_FLUSH but LZMA2 does.</p>
-<p>Using LZMA_SYNC_FLUSH very often can dramatically reduce the compression ratio. With some filters (for example, LZMA2), fine-tuning the compression options may help mitigate this problem significantly (for example, match finder with LZMA2).</p>
-<p>Decoders don't support LZMA_SYNC_FLUSH. </p>
-</td></tr>
-<tr><td class="fieldname"><a id="aa92efcbf3cecfcac79c81fc645fce77eaab46f0d7c721f1ec377e9575eab2586f" name="aa92efcbf3cecfcac79c81fc645fce77eaab46f0d7c721f1ec377e9575eab2586f"></a>LZMA_FULL_FLUSH&#160;</td><td class="fielddoc"><p>Finish encoding of the current Block. </p>
-<p>All the input data going to the current Block must have been given to the encoder (the last bytes can still be pending in *next_in). Call <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> with LZMA_FULL_FLUSH until it returns LZMA_STREAM_END. Then continue normally with LZMA_RUN or finish the Stream with LZMA_FINISH.</p>
-<p>This action is currently supported only by Stream encoder and easy encoder (which uses Stream encoder). If there is no unfinished Block, no empty Block is created. </p>
-</td></tr>
-<tr><td class="fieldname"><a id="aa92efcbf3cecfcac79c81fc645fce77eaf7bf60e3555a4d10ffad3ecc3d2e01f1" name="aa92efcbf3cecfcac79c81fc645fce77eaf7bf60e3555a4d10ffad3ecc3d2e01f1"></a>LZMA_FULL_BARRIER&#160;</td><td class="fielddoc"><p>Finish encoding of the current Block. </p>
-<p>This is like LZMA_FULL_FLUSH except that this doesn't necessarily wait until all the input has been made available via the output buffer. That is, <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> might return LZMA_STREAM_END as soon as all the input has been consumed (avail_in == 0).</p>
-<p>LZMA_FULL_BARRIER is useful with a threaded encoder if one wants to split the .xz Stream into Blocks at specific offsets but doesn't care if the output isn't flushed immediately. Using LZMA_FULL_BARRIER allows keeping the threads busy while LZMA_FULL_FLUSH would make <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> wait until all the threads have finished until more data could be passed to the encoder.</p>
-<p>With a <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> initialized with the single-threaded <a class="el" href="container_8h.html#a1a97aec94c9fedd7646cfa51c4f4cd52" title="Initialize .xz Stream encoder using a custom filter chain.">lzma_stream_encoder()</a> or <a class="el" href="container_8h.html#acbdad999c544872f0f5d242f0d1a4ed4" title="Initialize .xz Stream encoder using a preset number.">lzma_easy_encoder()</a>, LZMA_FULL_BARRIER is an alias for LZMA_FULL_FLUSH. </p>
-</td></tr>
-<tr><td class="fieldname"><a id="aa92efcbf3cecfcac79c81fc645fce77ea7d24fb3c6c144d13bcb091195b8ebec1" name="aa92efcbf3cecfcac79c81fc645fce77ea7d24fb3c6c144d13bcb091195b8ebec1"></a>LZMA_FINISH&#160;</td><td class="fielddoc"><p>Finish the coding operation. </p>
-<p>All the input data must have been given to the encoder (the last bytes can still be pending in next_in). Call <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> with LZMA_FINISH until it returns LZMA_STREAM_END. Once LZMA_FINISH has been used, the amount of input must no longer be changed by the application.</p>
-<p>When decoding, using LZMA_FINISH is optional unless the LZMA_CONCATENATED flag was used when the decoder was initialized. When LZMA_CONCATENATED was not used, the only effect of LZMA_FINISH is that the amount of input must not be changed just like in the encoder. </p>
-</td></tr>
-</table>
-
-</div>
-</div>
-<h2 class="groupheader">Function Documentation</h2>
-<a id="a28cc09bc422d5ba1e0187c9f2af5d957" name="a28cc09bc422d5ba1e0187c9f2af5d957"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a28cc09bc422d5ba1e0187c9f2af5d957">&#9670;&#160;</a></span>lzma_code()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_code </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="base_8h.html#aa92efcbf3cecfcac79c81fc645fce77e">lzma_action</a>&#160;</td>
- <td class="paramname"><em>action</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Encode or decode data. </p>
-<p>Once the <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> has been successfully initialized (e.g. with <a class="el" href="container_8h.html#a1a97aec94c9fedd7646cfa51c4f4cd52" title="Initialize .xz Stream encoder using a custom filter chain.">lzma_stream_encoder()</a>), the actual encoding or decoding is done using this function. The application has to update strm-&gt;next_in, strm-&gt;avail_in, strm-&gt;next_out, and strm-&gt;avail_out to pass input to and get output from liblzma.</p>
-<p>See the description of the coder-specific initialization function to find out what `action' values are supported by the coder.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">strm</td><td>Pointer to <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> that is at least initialized with LZMA_STREAM_INIT. </td></tr>
- <tr><td class="paramname">action</td><td>Action for this function to take. Must be a valid lzma_action enum value.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Any valid lzma_ret. See the lzma_ret enum description for more information. </dd></dl>
-
-</div>
-</div>
-<a id="a854ff37464ae1225febf14db1af43308" name="a854ff37464ae1225febf14db1af43308"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a854ff37464ae1225febf14db1af43308">&#9670;&#160;</a></span>lzma_end()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void lzma_end </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Free memory allocated for the coder data structures. </p>
-<p>After lzma_end(strm), strm-&gt;internal is guaranteed to be NULL. No other members of the <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> structure are touched.</p>
-<dl class="section note"><dt>Note</dt><dd>zlib indicates an error if application end()s unfinished stream structure. liblzma doesn't do this, and assumes that application knows what it is doing.</dd></dl>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">strm</td><td>Pointer to <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> that is at least initialized with LZMA_STREAM_INIT. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a id="ab6447cd68eeecbd6b88f21daeb8ce751" name="ab6447cd68eeecbd6b88f21daeb8ce751"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ab6447cd68eeecbd6b88f21daeb8ce751">&#9670;&#160;</a></span>lzma_get_progress()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void lzma_get_progress </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint64_t *&#160;</td>
- <td class="paramname"><em>progress_in</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint64_t *&#160;</td>
- <td class="paramname"><em>progress_out</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Get progress information. </p>
-<p>In single-threaded mode, applications can get progress information from strm-&gt;total_in and strm-&gt;total_out. In multi-threaded mode this is less useful because a significant amount of both input and output data gets buffered internally by liblzma. This makes total_in and total_out give misleading information and also makes the progress indicator updates non-smooth.</p>
-<p>This function gives realistic progress information also in multi-threaded mode by taking into account the progress made by each thread. In single-threaded mode *progress_in and *progress_out are set to strm-&gt;total_in and strm-&gt;total_out, respectively.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir"></td><td class="paramname">strm</td><td>Pointer to <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> that is at least initialized with LZMA_STREAM_INIT. </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">progress_in</td><td>Pointer to the number of input bytes processed. </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">progress_out</td><td>Pointer to the number of output bytes processed. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a id="a418b210cf206782a73cd9de7dc27f670" name="a418b210cf206782a73cd9de7dc27f670"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a418b210cf206782a73cd9de7dc27f670">&#9670;&#160;</a></span>lzma_memusage()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint64_t lzma_memusage </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Get the memory usage of decoder filter chain. </p>
-<p>This function is currently supported only when *strm has been initialized with a function that takes a memlimit argument. With other functions, you should use e.g. <a class="el" href="filter_8h.html#a730f9391e85a5979bcd1b32643ae7176" title="Calculate approximate memory requirements for raw encoder.">lzma_raw_encoder_memusage()</a> or <a class="el" href="filter_8h.html#a58511249ae9206d7de7c5d1f05842297" title="Calculate approximate memory requirements for raw decoder.">lzma_raw_decoder_memusage()</a> to estimate the memory requirements.</p>
-<p>This function is useful e.g. after LZMA_MEMLIMIT_ERROR to find out how big the memory usage limit should have been to decode the input. Note that this may give misleading information if decoding .xz Streams that have multiple Blocks, because each Block can have different memory requirements.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">strm</td><td>Pointer to <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> that is at least initialized with LZMA_STREAM_INIT.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>How much memory is currently allocated for the filter decoders. If no filter chain is currently allocated, some non-zero value is still returned, which is less than or equal to what any filter chain would indicate as its memory requirement.</dd></dl>
-<p>If this function isn't supported by *strm or some other error occurs, zero is returned. </p>
-
-</div>
-</div>
-<a id="ac871bc2ead5d482c6d6b3d51bfec365c" name="ac871bc2ead5d482c6d6b3d51bfec365c"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ac871bc2ead5d482c6d6b3d51bfec365c">&#9670;&#160;</a></span>lzma_memlimit_get()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint64_t lzma_memlimit_get </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Get the current memory usage limit. </p>
-<p>This function is supported only when *strm has been initialized with a function that takes a memlimit argument.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">strm</td><td>Pointer to <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> that is at least initialized with LZMA_STREAM_INIT.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>On success, the current memory usage limit is returned (always non-zero). On error, zero is returned. </dd></dl>
-
-</div>
-</div>
-<a id="afc49d4cf75b73128a167df3407505f7b" name="afc49d4cf75b73128a167df3407505f7b"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#afc49d4cf75b73128a167df3407505f7b">&#9670;&#160;</a></span>lzma_memlimit_set()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_memlimit_set </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint64_t&#160;</td>
- <td class="paramname"><em>memlimit</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Set the memory usage limit. </p>
-<p>This function is supported only when *strm has been initialized with a function that takes a memlimit argument.</p>
-<p>liblzma 5.2.3 and earlier has a bug where memlimit value of 0 causes this function to do nothing (leaving the limit unchanged) and still return LZMA_OK. Later versions treat 0 as if 1 had been specified (so <a class="el" href="base_8h.html#ac871bc2ead5d482c6d6b3d51bfec365c" title="Get the current memory usage limit.">lzma_memlimit_get()</a> will return 1 even if you specify 0 here).</p>
-<p>liblzma 5.2.6 and earlier had a bug in single-threaded .xz decoder (<a class="el" href="container_8h.html#a02b7683ef98d8049788961370a8b28c0" title="Initialize .xz Stream decoder.">lzma_stream_decoder()</a>) which made it impossible to continue decoding after LZMA_MEMLIMIT_ERROR even if the limit was increased using <a class="el" href="base_8h.html#afc49d4cf75b73128a167df3407505f7b" title="Set the memory usage limit.">lzma_memlimit_set()</a>. Other decoders worked correctly.</p>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: New memory usage limit successfully set.</li>
-<li>LZMA_MEMLIMIT_ERROR: The new limit is too small. The limit was not changed.</li>
-<li>LZMA_PROG_ERROR: Invalid arguments, e.g. *strm doesn't support memory usage limit. </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/bc_s.png b/doc/api/bc_s.png
deleted file mode 100644
index bb50b82..0000000
--- a/doc/api/bc_s.png
+++ /dev/null
Binary files differ
diff --git a/doc/api/bc_sd.png b/doc/api/bc_sd.png
deleted file mode 100644
index 8d8be4c..0000000
--- a/doc/api/bc_sd.png
+++ /dev/null
Binary files differ
diff --git a/doc/api/bcj_8h.html b/doc/api/bcj_8h.html
deleted file mode 100644
index 1dabca4..0000000
--- a/doc/api/bcj_8h.html
+++ /dev/null
@@ -1,105 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma/bcj.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File&#160;List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div id="nav-path" class="navpath">
- <ul>
-<li class="navelem"><a class="el" href="dir_b17a1d403082bd69a703ed987cf158fb.html">lzma</a></li> </ul>
-</div>
-</div><!-- top -->
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> &#124;
-<a href="#define-members">Macros</a> </div>
- <div class="headertitle"><div class="title">bcj.h File Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>Branch/Call/Jump conversion filters.
-<a href="#details">More...</a></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__options__bcj.html">lzma_options_bcj</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Options for BCJ filters. <a href="structlzma__options__bcj.html#details">More...</a><br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
-Macros</h2></td></tr>
-<tr class="memitem:aa9eac1f580ddde3309518cd153d596b1"><td class="memItemLeft" align="right" valign="top"><a id="aa9eac1f580ddde3309518cd153d596b1" name="aa9eac1f580ddde3309518cd153d596b1"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_FILTER_X86</b>&#160;&#160;&#160;<a class="el" href="vli_8h.html#a2d8bf5322898bfa11945848420585881">LZMA_VLI_C</a>(0x04)</td></tr>
-<tr class="memdesc:aa9eac1f580ddde3309518cd153d596b1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Filter for x86 binaries. <br /></td></tr>
-<tr class="separator:aa9eac1f580ddde3309518cd153d596b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab7f667d4a5d319f227f23163cbea086f"><td class="memItemLeft" align="right" valign="top"><a id="ab7f667d4a5d319f227f23163cbea086f" name="ab7f667d4a5d319f227f23163cbea086f"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_FILTER_POWERPC</b>&#160;&#160;&#160;<a class="el" href="vli_8h.html#a2d8bf5322898bfa11945848420585881">LZMA_VLI_C</a>(0x05)</td></tr>
-<tr class="memdesc:ab7f667d4a5d319f227f23163cbea086f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Filter for Big endian PowerPC binaries. <br /></td></tr>
-<tr class="separator:ab7f667d4a5d319f227f23163cbea086f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2fe36218a38f400e1ce40820758f7427"><td class="memItemLeft" align="right" valign="top"><a id="a2fe36218a38f400e1ce40820758f7427" name="a2fe36218a38f400e1ce40820758f7427"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_FILTER_IA64</b>&#160;&#160;&#160;<a class="el" href="vli_8h.html#a2d8bf5322898bfa11945848420585881">LZMA_VLI_C</a>(0x06)</td></tr>
-<tr class="memdesc:a2fe36218a38f400e1ce40820758f7427"><td class="mdescLeft">&#160;</td><td class="mdescRight">Filter for IA-64 (Itanium) binaries. <br /></td></tr>
-<tr class="separator:a2fe36218a38f400e1ce40820758f7427"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a495a58f63ebc7a8b756099efba492f8b"><td class="memItemLeft" align="right" valign="top"><a id="a495a58f63ebc7a8b756099efba492f8b" name="a495a58f63ebc7a8b756099efba492f8b"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_FILTER_ARM</b>&#160;&#160;&#160;<a class="el" href="vli_8h.html#a2d8bf5322898bfa11945848420585881">LZMA_VLI_C</a>(0x07)</td></tr>
-<tr class="memdesc:a495a58f63ebc7a8b756099efba492f8b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Filter for ARM binaries. <br /></td></tr>
-<tr class="separator:a495a58f63ebc7a8b756099efba492f8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5ec62e7e5e7df3d9af5b2ea3f857689a"><td class="memItemLeft" align="right" valign="top"><a id="a5ec62e7e5e7df3d9af5b2ea3f857689a" name="a5ec62e7e5e7df3d9af5b2ea3f857689a"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_FILTER_ARMTHUMB</b>&#160;&#160;&#160;<a class="el" href="vli_8h.html#a2d8bf5322898bfa11945848420585881">LZMA_VLI_C</a>(0x08)</td></tr>
-<tr class="memdesc:a5ec62e7e5e7df3d9af5b2ea3f857689a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Filter for ARM-Thumb binaries. <br /></td></tr>
-<tr class="separator:a5ec62e7e5e7df3d9af5b2ea3f857689a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a50941088e93ef659c6b000bbcaf58143"><td class="memItemLeft" align="right" valign="top"><a id="a50941088e93ef659c6b000bbcaf58143" name="a50941088e93ef659c6b000bbcaf58143"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_FILTER_SPARC</b>&#160;&#160;&#160;<a class="el" href="vli_8h.html#a2d8bf5322898bfa11945848420585881">LZMA_VLI_C</a>(0x09)</td></tr>
-<tr class="memdesc:a50941088e93ef659c6b000bbcaf58143"><td class="mdescLeft">&#160;</td><td class="mdescRight">Filter for SPARC binaries. <br /></td></tr>
-<tr class="separator:a50941088e93ef659c6b000bbcaf58143"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a01765158cd31cac21b272b180628fc4b"><td class="memItemLeft" align="right" valign="top"><a id="a01765158cd31cac21b272b180628fc4b" name="a01765158cd31cac21b272b180628fc4b"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_FILTER_ARM64</b>&#160;&#160;&#160;<a class="el" href="vli_8h.html#a2d8bf5322898bfa11945848420585881">LZMA_VLI_C</a>(0x0A)</td></tr>
-<tr class="memdesc:a01765158cd31cac21b272b180628fc4b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Filter for ARM64 binaries. <br /></td></tr>
-<tr class="separator:a01765158cd31cac21b272b180628fc4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Branch/Call/Jump conversion filters. </p>
-<dl class="section note"><dt>Note</dt><dd>Never include this file directly. Use &lt;<a class="el" href="lzma_8h.html" title="The public API of liblzma data compression library.">lzma.h</a>&gt; instead. </dd></dl>
-</div></div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/block_8h.html b/doc/api/block_8h.html
deleted file mode 100644
index e2e1702..0000000
--- a/doc/api/block_8h.html
+++ /dev/null
@@ -1,758 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma/block.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File&#160;List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div id="nav-path" class="navpath">
- <ul>
-<li class="navelem"><a class="el" href="dir_b17a1d403082bd69a703ed987cf158fb.html">lzma</a></li> </ul>
-</div>
-</div><!-- top -->
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> &#124;
-<a href="#define-members">Macros</a> &#124;
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle"><div class="title">block.h File Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>.xz Block handling
-<a href="#details">More...</a></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__block.html">lzma_block</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Options for the Block and Block Header encoders and decoders. <a href="structlzma__block.html#details">More...</a><br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
-Macros</h2></td></tr>
-<tr class="memitem:a9263c5b314592e658772e5eb83ffdd78"><td class="memItemLeft" align="right" valign="top"><a id="a9263c5b314592e658772e5eb83ffdd78" name="a9263c5b314592e658772e5eb83ffdd78"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_BLOCK_HEADER_SIZE_MIN</b>&#160;&#160;&#160;8</td></tr>
-<tr class="separator:a9263c5b314592e658772e5eb83ffdd78"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af7a39189d0721c55313a401b63811e49"><td class="memItemLeft" align="right" valign="top"><a id="af7a39189d0721c55313a401b63811e49" name="af7a39189d0721c55313a401b63811e49"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_BLOCK_HEADER_SIZE_MAX</b>&#160;&#160;&#160;1024</td></tr>
-<tr class="separator:af7a39189d0721c55313a401b63811e49"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac025c940683a70f4c7f956bad814fd5f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="block_8h.html#ac025c940683a70f4c7f956bad814fd5f">lzma_block_header_size_decode</a>(b)&#160;&#160;&#160;(((uint32_t)(b) + 1) * 4)</td></tr>
-<tr class="memdesc:ac025c940683a70f4c7f956bad814fd5f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decode the Block Header Size field. <br /></td></tr>
-<tr class="separator:ac025c940683a70f4c7f956bad814fd5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:ae9b47abc872d0b02c2da9d3fa5a7dacd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="block_8h.html#ae9b47abc872d0b02c2da9d3fa5a7dacd">lzma_block_header_size</a> (<a class="el" href="structlzma__block.html">lzma_block</a> *block) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:ae9b47abc872d0b02c2da9d3fa5a7dacd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate Block Header Size. <br /></td></tr>
-<tr class="separator:ae9b47abc872d0b02c2da9d3fa5a7dacd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0eedbd6331d5708ea963260e6f2a92d0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="block_8h.html#a0eedbd6331d5708ea963260e6f2a92d0">lzma_block_header_encode</a> (const <a class="el" href="structlzma__block.html">lzma_block</a> *block, uint8_t *out) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a0eedbd6331d5708ea963260e6f2a92d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encode Block Header. <br /></td></tr>
-<tr class="separator:a0eedbd6331d5708ea963260e6f2a92d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7f5487c21a7b36a8bd17be36074d43c9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="block_8h.html#a7f5487c21a7b36a8bd17be36074d43c9">lzma_block_header_decode</a> (<a class="el" href="structlzma__block.html">lzma_block</a> *block, const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *allocator, const uint8_t *in) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a7f5487c21a7b36a8bd17be36074d43c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decode Block Header. <br /></td></tr>
-<tr class="separator:a7f5487c21a7b36a8bd17be36074d43c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6c3e102d76db06a07126a569abc6e2bc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="block_8h.html#a6c3e102d76db06a07126a569abc6e2bc">lzma_block_compressed_size</a> (<a class="el" href="structlzma__block.html">lzma_block</a> *block, <a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> unpadded_size) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a6c3e102d76db06a07126a569abc6e2bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Validate and set Compressed Size according to Unpadded Size. <br /></td></tr>
-<tr class="separator:a6c3e102d76db06a07126a569abc6e2bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a412d5605280fa29befae1b89e344bf30"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="block_8h.html#a412d5605280fa29befae1b89e344bf30">lzma_block_unpadded_size</a> (const <a class="el" href="structlzma__block.html">lzma_block</a> *block) lzma_nothrow lzma_attr_pure</td></tr>
-<tr class="memdesc:a412d5605280fa29befae1b89e344bf30"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate Unpadded Size. <br /></td></tr>
-<tr class="separator:a412d5605280fa29befae1b89e344bf30"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a694424f9dfdd5151e01debac1c501fa9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="block_8h.html#a694424f9dfdd5151e01debac1c501fa9">lzma_block_total_size</a> (const <a class="el" href="structlzma__block.html">lzma_block</a> *block) lzma_nothrow lzma_attr_pure</td></tr>
-<tr class="memdesc:a694424f9dfdd5151e01debac1c501fa9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate the total encoded size of a Block. <br /></td></tr>
-<tr class="separator:a694424f9dfdd5151e01debac1c501fa9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2218a49025a0b44f9a6f9d6d24359359"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="block_8h.html#a2218a49025a0b44f9a6f9d6d24359359">lzma_block_encoder</a> (<a class="el" href="structlzma__stream.html">lzma_stream</a> *strm, <a class="el" href="structlzma__block.html">lzma_block</a> *block) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a2218a49025a0b44f9a6f9d6d24359359"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize .xz Block encoder. <br /></td></tr>
-<tr class="separator:a2218a49025a0b44f9a6f9d6d24359359"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa92c73b2a228efe921fa2376aa7adc92"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="block_8h.html#aa92c73b2a228efe921fa2376aa7adc92">lzma_block_decoder</a> (<a class="el" href="structlzma__stream.html">lzma_stream</a> *strm, <a class="el" href="structlzma__block.html">lzma_block</a> *block) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:aa92c73b2a228efe921fa2376aa7adc92"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize .xz Block decoder. <br /></td></tr>
-<tr class="separator:aa92c73b2a228efe921fa2376aa7adc92"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a58ff73e2572b529f48cc590bfffe5b4f"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="block_8h.html#a58ff73e2572b529f48cc590bfffe5b4f">lzma_block_buffer_bound</a> (size_t uncompressed_size) lzma_nothrow</td></tr>
-<tr class="memdesc:a58ff73e2572b529f48cc590bfffe5b4f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate maximum output size for single-call Block encoding. <br /></td></tr>
-<tr class="separator:a58ff73e2572b529f48cc590bfffe5b4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af415fa5130ab64e8760e9c39e856fa54"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="block_8h.html#af415fa5130ab64e8760e9c39e856fa54">lzma_block_buffer_encode</a> (<a class="el" href="structlzma__block.html">lzma_block</a> *block, const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *allocator, const uint8_t *in, size_t in_size, uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:af415fa5130ab64e8760e9c39e856fa54"><td class="mdescLeft">&#160;</td><td class="mdescRight">Single-call .xz Block encoder. <br /></td></tr>
-<tr class="separator:af415fa5130ab64e8760e9c39e856fa54"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5a260f634ccd5f54fb98f570d8d92d8c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="block_8h.html#a5a260f634ccd5f54fb98f570d8d92d8c">lzma_block_uncomp_encode</a> (<a class="el" href="structlzma__block.html">lzma_block</a> *block, const uint8_t *in, size_t in_size, uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a5a260f634ccd5f54fb98f570d8d92d8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Single-call uncompressed .xz Block encoder. <br /></td></tr>
-<tr class="separator:a5a260f634ccd5f54fb98f570d8d92d8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0c6eb869d91b08f68648b1aa7a32ee9f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="block_8h.html#a0c6eb869d91b08f68648b1aa7a32ee9f">lzma_block_buffer_decode</a> (<a class="el" href="structlzma__block.html">lzma_block</a> *block, const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *allocator, const uint8_t *in, size_t *in_pos, size_t in_size, uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow</td></tr>
-<tr class="memdesc:a0c6eb869d91b08f68648b1aa7a32ee9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Single-call .xz Block decoder. <br /></td></tr>
-<tr class="separator:a0c6eb869d91b08f68648b1aa7a32ee9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>.xz Block handling </p>
-<dl class="section note"><dt>Note</dt><dd>Never include this file directly. Use &lt;<a class="el" href="lzma_8h.html" title="The public API of liblzma data compression library.">lzma.h</a>&gt; instead. </dd></dl>
-</div><h2 class="groupheader">Macro Definition Documentation</h2>
-<a id="ac025c940683a70f4c7f956bad814fd5f" name="ac025c940683a70f4c7f956bad814fd5f"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ac025c940683a70f4c7f956bad814fd5f">&#9670;&#160;</a></span>lzma_block_header_size_decode</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define lzma_block_header_size_decode</td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname">b</td><td>)</td>
- <td>&#160;&#160;&#160;(((uint32_t)(b) + 1) * 4)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Decode the Block Header Size field. </p>
-<p>To decode Block Header using <a class="el" href="block_8h.html#a7f5487c21a7b36a8bd17be36074d43c9" title="Decode Block Header.">lzma_block_header_decode()</a>, the size of the Block Header has to be known and stored into <a class="el" href="structlzma__block.html#a6689c4f7524b2c05772a2d6151138610" title="Size of the Block Header field in bytes.">lzma_block.header_size</a>. The size can be calculated from the first byte of a Block using this macro. Note that if the first byte is 0x00, it indicates beginning of Index; use this macro only when the byte is not 0x00.</p>
-<p>There is no encoding macro because <a class="el" href="block_8h.html#ae9b47abc872d0b02c2da9d3fa5a7dacd" title="Calculate Block Header Size.">lzma_block_header_size()</a> and <a class="el" href="block_8h.html#a0eedbd6331d5708ea963260e6f2a92d0" title="Encode Block Header.">lzma_block_header_encode()</a> should be used. </p>
-
-</div>
-</div>
-<h2 class="groupheader">Function Documentation</h2>
-<a id="ae9b47abc872d0b02c2da9d3fa5a7dacd" name="ae9b47abc872d0b02c2da9d3fa5a7dacd"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ae9b47abc872d0b02c2da9d3fa5a7dacd">&#9670;&#160;</a></span>lzma_block_header_size()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_block_header_size </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__block.html">lzma_block</a> *&#160;</td>
- <td class="paramname"><em>block</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Calculate Block Header Size. </p>
-<p>Calculate the minimum size needed for the Block Header field using the settings specified in the <a class="el" href="structlzma__block.html" title="Options for the Block and Block Header encoders and decoders.">lzma_block</a> structure. Note that it is OK to increase the calculated header_size value as long as it is a multiple of four and doesn't exceed LZMA_BLOCK_HEADER_SIZE_MAX. Increasing header_size just means that <a class="el" href="block_8h.html#a0eedbd6331d5708ea963260e6f2a92d0" title="Encode Block Header.">lzma_block_header_encode()</a> will add Header Padding.</p>
-<dl class="section note"><dt>Note</dt><dd>This doesn't check that all the options are valid i.e. this may return LZMA_OK even if <a class="el" href="block_8h.html#a0eedbd6331d5708ea963260e6f2a92d0" title="Encode Block Header.">lzma_block_header_encode()</a> or <a class="el" href="block_8h.html#a2218a49025a0b44f9a6f9d6d24359359" title="Initialize .xz Block encoder.">lzma_block_encoder()</a> would fail. If you want to validate the filter chain, consider using lzma_memlimit_encoder() which as a side-effect validates the filter chain.</dd></dl>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">block</td><td>Block options</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Size calculated successfully and stored to block-&gt;header_size.</li>
-<li>LZMA_OPTIONS_ERROR: Unsupported version, filters or filter options.</li>
-<li>LZMA_PROG_ERROR: Invalid values like compressed_size == 0. </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a0eedbd6331d5708ea963260e6f2a92d0" name="a0eedbd6331d5708ea963260e6f2a92d0"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a0eedbd6331d5708ea963260e6f2a92d0">&#9670;&#160;</a></span>lzma_block_header_encode()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_block_header_encode </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="structlzma__block.html">lzma_block</a> *&#160;</td>
- <td class="paramname"><em>block</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint8_t *&#160;</td>
- <td class="paramname"><em>out</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Encode Block Header. </p>
-<p>The caller must have calculated the size of the Block Header already with <a class="el" href="block_8h.html#ae9b47abc872d0b02c2da9d3fa5a7dacd" title="Calculate Block Header Size.">lzma_block_header_size()</a>. If a value larger than the one calculated by <a class="el" href="block_8h.html#ae9b47abc872d0b02c2da9d3fa5a7dacd" title="Calculate Block Header Size.">lzma_block_header_size()</a> is used, the Block Header will be padded to the specified size.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir"></td><td class="paramname">block</td><td>Block options to be encoded. </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">out</td><td>Beginning of the output buffer. This must be at least block-&gt;header_size bytes.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Encoding was successful. block-&gt;header_size bytes were written to output buffer.</li>
-<li>LZMA_OPTIONS_ERROR: Invalid or unsupported options.</li>
-<li>LZMA_PROG_ERROR: Invalid arguments, for example block-&gt;header_size is invalid or block-&gt;filters is NULL. </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a7f5487c21a7b36a8bd17be36074d43c9" name="a7f5487c21a7b36a8bd17be36074d43c9"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a7f5487c21a7b36a8bd17be36074d43c9">&#9670;&#160;</a></span>lzma_block_header_decode()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_block_header_decode </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__block.html">lzma_block</a> *&#160;</td>
- <td class="paramname"><em>block</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *&#160;</td>
- <td class="paramname"><em>allocator</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint8_t *&#160;</td>
- <td class="paramname"><em>in</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Decode Block Header. </p>
-<p>block-&gt;version should (usually) be set to the highest value supported by the application. If the application sets block-&gt;version to a value higher than supported by the current liblzma version, this function will downgrade block-&gt;version to the highest value supported by it. Thus one should check the value of block-&gt;version after calling this function if block-&gt;version was set to a non-zero value and the application doesn't otherwise know that the liblzma version being used is new enough to support the specified block-&gt;version.</p>
-<p>The size of the Block Header must have already been decoded with <a class="el" href="block_8h.html#ac025c940683a70f4c7f956bad814fd5f" title="Decode the Block Header Size field.">lzma_block_header_size_decode()</a> macro and stored to block-&gt;header_size.</p>
-<p>The integrity check type from Stream Header must have been stored to block-&gt;check.</p>
-<p>block-&gt;filters must have been allocated, but they don't need to be initialized (possible existing filter options are not freed).</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[out]</td><td class="paramname">block</td><td>Destination for Block options </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">allocator</td><td><a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> for custom allocator functions. Set to NULL to use malloc() (and also free() if an error occurs). </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in</td><td>Beginning of the input buffer. This must be at least block-&gt;header_size bytes.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Decoding was successful. block-&gt;header_size bytes were read from the input buffer.</li>
-<li>LZMA_OPTIONS_ERROR: The Block Header specifies some unsupported options such as unsupported filters. This can happen also if block-&gt;version was set to a too low value compared to what would be required to properly represent the information stored in the Block Header.</li>
-<li>LZMA_DATA_ERROR: Block Header is corrupt, for example, the CRC32 doesn't match.</li>
-<li>LZMA_PROG_ERROR: Invalid arguments, for example block-&gt;header_size is invalid or block-&gt;filters is NULL. </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a6c3e102d76db06a07126a569abc6e2bc" name="a6c3e102d76db06a07126a569abc6e2bc"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a6c3e102d76db06a07126a569abc6e2bc">&#9670;&#160;</a></span>lzma_block_compressed_size()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_block_compressed_size </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__block.html">lzma_block</a> *&#160;</td>
- <td class="paramname"><em>block</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td>
- <td class="paramname"><em>unpadded_size</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Validate and set Compressed Size according to Unpadded Size. </p>
-<p>Block Header stores Compressed Size, but Index has Unpadded Size. If the application has already parsed the Index and is now decoding Blocks, it can calculate Compressed Size from Unpadded Size. This function does exactly that with error checking:</p>
-<ul>
-<li>Compressed Size calculated from Unpadded Size must be positive integer, that is, Unpadded Size must be big enough that after Block Header and Check fields there's still at least one byte for Compressed Size.</li>
-<li>If Compressed Size was present in Block Header, the new value calculated from Unpadded Size is compared against the value from Block Header.</li>
-</ul>
-<dl class="section note"><dt>Note</dt><dd>This function must be called _after_ decoding the Block Header field so that it can properly validate Compressed Size if it was present in Block Header.</dd></dl>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">block</td><td>Block options: block-&gt;header_size must already be set with <a class="el" href="block_8h.html#ae9b47abc872d0b02c2da9d3fa5a7dacd" title="Calculate Block Header Size.">lzma_block_header_size()</a>. </td></tr>
- <tr><td class="paramname">unpadded_size</td><td>Unpadded Size from the Index field in bytes</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: block-&gt;compressed_size was set successfully.</li>
-<li>LZMA_DATA_ERROR: unpadded_size is too small compared to block-&gt;header_size and lzma_check_size(block-&gt;check).</li>
-<li>LZMA_PROG_ERROR: Some values are invalid. For example, block-&gt;header_size must be a multiple of four and between 8 and 1024 inclusive. </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a412d5605280fa29befae1b89e344bf30" name="a412d5605280fa29befae1b89e344bf30"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a412d5605280fa29befae1b89e344bf30">&#9670;&#160;</a></span>lzma_block_unpadded_size()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_block_unpadded_size </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="structlzma__block.html">lzma_block</a> *&#160;</td>
- <td class="paramname"><em>block</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Calculate Unpadded Size. </p>
-<p>The Index field stores Unpadded Size and Uncompressed Size. The latter can be taken directly from the <a class="el" href="structlzma__block.html" title="Options for the Block and Block Header encoders and decoders.">lzma_block</a> structure after coding a Block, but Unpadded Size needs to be calculated from Block Header Size, Compressed Size, and size of the Check field. This is where this function is needed.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">block</td><td>Block options: block-&gt;header_size must already be set with <a class="el" href="block_8h.html#ae9b47abc872d0b02c2da9d3fa5a7dacd" title="Calculate Block Header Size.">lzma_block_header_size()</a>.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Unpadded Size on success, or zero on error. </dd></dl>
-
-</div>
-</div>
-<a id="a694424f9dfdd5151e01debac1c501fa9" name="a694424f9dfdd5151e01debac1c501fa9"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a694424f9dfdd5151e01debac1c501fa9">&#9670;&#160;</a></span>lzma_block_total_size()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_block_total_size </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="structlzma__block.html">lzma_block</a> *&#160;</td>
- <td class="paramname"><em>block</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Calculate the total encoded size of a Block. </p>
-<p>This is equivalent to <a class="el" href="block_8h.html#a412d5605280fa29befae1b89e344bf30" title="Calculate Unpadded Size.">lzma_block_unpadded_size()</a> except that the returned value includes the size of the Block Padding field.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">block</td><td>Block options: block-&gt;header_size must already be set with <a class="el" href="block_8h.html#ae9b47abc872d0b02c2da9d3fa5a7dacd" title="Calculate Block Header Size.">lzma_block_header_size()</a>.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>On success, total encoded size of the Block. On error, zero is returned. </dd></dl>
-
-</div>
-</div>
-<a id="a2218a49025a0b44f9a6f9d6d24359359" name="a2218a49025a0b44f9a6f9d6d24359359"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a2218a49025a0b44f9a6f9d6d24359359">&#9670;&#160;</a></span>lzma_block_encoder()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_block_encoder </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="structlzma__block.html">lzma_block</a> *&#160;</td>
- <td class="paramname"><em>block</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Initialize .xz Block encoder. </p>
-<p>Valid actions for <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> are LZMA_RUN, LZMA_SYNC_FLUSH (only if the filter chain supports it), and LZMA_FINISH.</p>
-<p>The Block encoder encodes the Block Data, Block Padding, and Check value. It does NOT encode the Block Header which can be encoded with <a class="el" href="block_8h.html#a0eedbd6331d5708ea963260e6f2a92d0" title="Encode Block Header.">lzma_block_header_encode()</a>.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">strm</td><td>Pointer to <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> that is at least initialized with LZMA_STREAM_INIT. </td></tr>
- <tr><td class="paramname">block</td><td>Block options: block-&gt;version, block-&gt;check, and block-&gt;filters must have been initialized.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: All good, continue with <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a>.</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_OPTIONS_ERROR</li>
-<li>LZMA_UNSUPPORTED_CHECK: block-&gt;check specifies a Check ID that is not supported by this build of liblzma. Initializing the encoder failed.</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="aa92c73b2a228efe921fa2376aa7adc92" name="aa92c73b2a228efe921fa2376aa7adc92"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aa92c73b2a228efe921fa2376aa7adc92">&#9670;&#160;</a></span>lzma_block_decoder()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_block_decoder </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="structlzma__block.html">lzma_block</a> *&#160;</td>
- <td class="paramname"><em>block</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Initialize .xz Block decoder. </p>
-<p>Valid actions for <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> are LZMA_RUN and LZMA_FINISH. Using LZMA_FINISH is not required. It is supported only for convenience.</p>
-<p>The Block decoder decodes the Block Data, Block Padding, and Check value. It does NOT decode the Block Header which can be decoded with <a class="el" href="block_8h.html#a7f5487c21a7b36a8bd17be36074d43c9" title="Decode Block Header.">lzma_block_header_decode()</a>.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">strm</td><td>Pointer to <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> that is at least initialized with LZMA_STREAM_INIT. </td></tr>
- <tr><td class="paramname">block</td><td>Block options</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: All good, continue with <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a>.</li>
-<li>LZMA_PROG_ERROR</li>
-<li>LZMA_MEM_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a58ff73e2572b529f48cc590bfffe5b4f" name="a58ff73e2572b529f48cc590bfffe5b4f"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a58ff73e2572b529f48cc590bfffe5b4f">&#9670;&#160;</a></span>lzma_block_buffer_bound()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">size_t lzma_block_buffer_bound </td>
- <td>(</td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>uncompressed_size</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Calculate maximum output size for single-call Block encoding. </p>
-<p>This is equivalent to <a class="el" href="container_8h.html#a66d4366a47b8332bff2a512f44f5c45e" title="Calculate output buffer size for single-call Stream encoder.">lzma_stream_buffer_bound()</a> but for .xz Blocks. See the documentation of <a class="el" href="container_8h.html#a66d4366a47b8332bff2a512f44f5c45e" title="Calculate output buffer size for single-call Stream encoder.">lzma_stream_buffer_bound()</a>.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">uncompressed_size</td><td>Size of the data to be encoded with the single-call Block encoder.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Maximum output size in bytes for single-call Block encoding. </dd></dl>
-
-</div>
-</div>
-<a id="af415fa5130ab64e8760e9c39e856fa54" name="af415fa5130ab64e8760e9c39e856fa54"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#af415fa5130ab64e8760e9c39e856fa54">&#9670;&#160;</a></span>lzma_block_buffer_encode()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_block_buffer_encode </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__block.html">lzma_block</a> *&#160;</td>
- <td class="paramname"><em>block</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *&#160;</td>
- <td class="paramname"><em>allocator</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint8_t *&#160;</td>
- <td class="paramname"><em>in</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>in_size</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint8_t *&#160;</td>
- <td class="paramname"><em>out</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t *&#160;</td>
- <td class="paramname"><em>out_pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>out_size</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Single-call .xz Block encoder. </p>
-<p>In contrast to the multi-call encoder initialized with <a class="el" href="block_8h.html#a2218a49025a0b44f9a6f9d6d24359359" title="Initialize .xz Block encoder.">lzma_block_encoder()</a>, this function encodes also the Block Header. This is required to make it possible to write appropriate Block Header also in case the data isn't compressible, and different filter chain has to be used to encode the data in uncompressed form using uncompressed chunks of the LZMA2 filter.</p>
-<p>When the data isn't compressible, header_size, compressed_size, and uncompressed_size are set just like when the data was compressible, but it is possible that header_size is too small to hold the filter chain specified in block-&gt;filters, because that isn't necessarily the filter chain that was actually used to encode the data. <a class="el" href="block_8h.html#a412d5605280fa29befae1b89e344bf30" title="Calculate Unpadded Size.">lzma_block_unpadded_size()</a> still works normally, because it doesn't read the filters array.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir"></td><td class="paramname">block</td><td>Block options: block-&gt;version, block-&gt;check, and block-&gt;filters must have been initialized. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">allocator</td><td><a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> for custom allocator functions. Set to NULL to use malloc() and free(). </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in</td><td>Beginning of the input buffer </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in_size</td><td>Size of the input buffer </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">out</td><td>Beginning of the output buffer </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">out_pos</td><td>The next byte will be written to out[*out_pos]. *out_pos is updated only if encoding succeeds. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">out_size</td><td>Size of the out buffer; the first byte into which no data is written to is out[out_size].</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Encoding was successful.</li>
-<li>LZMA_BUF_ERROR: Not enough output buffer space.</li>
-<li>LZMA_UNSUPPORTED_CHECK</li>
-<li>LZMA_OPTIONS_ERROR</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_DATA_ERROR</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a5a260f634ccd5f54fb98f570d8d92d8c" name="a5a260f634ccd5f54fb98f570d8d92d8c"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a5a260f634ccd5f54fb98f570d8d92d8c">&#9670;&#160;</a></span>lzma_block_uncomp_encode()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_block_uncomp_encode </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__block.html">lzma_block</a> *&#160;</td>
- <td class="paramname"><em>block</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint8_t *&#160;</td>
- <td class="paramname"><em>in</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>in_size</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint8_t *&#160;</td>
- <td class="paramname"><em>out</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t *&#160;</td>
- <td class="paramname"><em>out_pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>out_size</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Single-call uncompressed .xz Block encoder. </p>
-<p>This is like <a class="el" href="block_8h.html#af415fa5130ab64e8760e9c39e856fa54" title="Single-call .xz Block encoder.">lzma_block_buffer_encode()</a> except this doesn't try to compress the data and instead encodes the data using LZMA2 uncompressed chunks. The required output buffer size can be determined with <a class="el" href="block_8h.html#a58ff73e2572b529f48cc590bfffe5b4f" title="Calculate maximum output size for single-call Block encoding.">lzma_block_buffer_bound()</a>.</p>
-<p>Since the data won't be compressed, this function ignores block-&gt;filters. This function doesn't take <a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> because this function doesn't allocate any memory from the heap.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir"></td><td class="paramname">block</td><td>Block options: block-&gt;version, block-&gt;check, and block-&gt;filters must have been initialized. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in</td><td>Beginning of the input buffer </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in_size</td><td>Size of the input buffer </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">out</td><td>Beginning of the output buffer </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">out_pos</td><td>The next byte will be written to out[*out_pos]. *out_pos is updated only if encoding succeeds. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">out_size</td><td>Size of the out buffer; the first byte into which no data is written to is out[out_size].</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Encoding was successful.</li>
-<li>LZMA_BUF_ERROR: Not enough output buffer space.</li>
-<li>LZMA_UNSUPPORTED_CHECK</li>
-<li>LZMA_OPTIONS_ERROR</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_DATA_ERROR</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a0c6eb869d91b08f68648b1aa7a32ee9f" name="a0c6eb869d91b08f68648b1aa7a32ee9f"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a0c6eb869d91b08f68648b1aa7a32ee9f">&#9670;&#160;</a></span>lzma_block_buffer_decode()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_block_buffer_decode </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__block.html">lzma_block</a> *&#160;</td>
- <td class="paramname"><em>block</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *&#160;</td>
- <td class="paramname"><em>allocator</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint8_t *&#160;</td>
- <td class="paramname"><em>in</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t *&#160;</td>
- <td class="paramname"><em>in_pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>in_size</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint8_t *&#160;</td>
- <td class="paramname"><em>out</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t *&#160;</td>
- <td class="paramname"><em>out_pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>out_size</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Single-call .xz Block decoder. </p>
-<p>This is single-call equivalent of <a class="el" href="block_8h.html#aa92c73b2a228efe921fa2376aa7adc92" title="Initialize .xz Block decoder.">lzma_block_decoder()</a>, and requires that the caller has already decoded Block Header and checked its memory usage.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir"></td><td class="paramname">block</td><td>Block options </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">allocator</td><td><a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> for custom allocator functions. Set to NULL to use malloc() and free(). </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in</td><td>Beginning of the input buffer </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in_pos</td><td>The next byte will be read from in[*in_pos]. *in_pos is updated only if decoding succeeds. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in_size</td><td>Size of the input buffer; the first byte that won't be read is in[in_size]. </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">out</td><td>Beginning of the output buffer </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">out_pos</td><td>The next byte will be written to out[*out_pos]. *out_pos is updated only if encoding succeeds. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">out_size</td><td>Size of the out buffer; the first byte into which no data is written to is out[out_size].</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Decoding was successful.</li>
-<li>LZMA_OPTIONS_ERROR</li>
-<li>LZMA_DATA_ERROR</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_BUF_ERROR: Output buffer was too small.</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/check_8h.html b/doc/api/check_8h.html
deleted file mode 100644
index 2323c6c..0000000
--- a/doc/api/check_8h.html
+++ /dev/null
@@ -1,340 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma/check.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File&#160;List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div id="nav-path" class="navpath">
- <ul>
-<li class="navelem"><a class="el" href="dir_b17a1d403082bd69a703ed987cf158fb.html">lzma</a></li> </ul>
-</div>
-</div><!-- top -->
-<div class="header">
- <div class="summary">
-<a href="#define-members">Macros</a> &#124;
-<a href="#enum-members">Enumerations</a> &#124;
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle"><div class="title">check.h File Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>Integrity checks.
-<a href="#details">More...</a></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
-Macros</h2></td></tr>
-<tr class="memitem:acd221ababe30230d9647aab469ad80cb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="check_8h.html#acd221ababe30230d9647aab469ad80cb">LZMA_CHECK_ID_MAX</a>&#160;&#160;&#160;15</td></tr>
-<tr class="memdesc:acd221ababe30230d9647aab469ad80cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum valid Check ID. <br /></td></tr>
-<tr class="separator:acd221ababe30230d9647aab469ad80cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a379e931cf86351ab1d97896cda9abbe0"><td class="memItemLeft" align="right" valign="top"><a id="a379e931cf86351ab1d97896cda9abbe0" name="a379e931cf86351ab1d97896cda9abbe0"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_CHECK_SIZE_MAX</b>&#160;&#160;&#160;64</td></tr>
-<tr class="memdesc:a379e931cf86351ab1d97896cda9abbe0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum size of a Check field. <br /></td></tr>
-<tr class="separator:a379e931cf86351ab1d97896cda9abbe0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
-Enumerations</h2></td></tr>
-<tr class="memitem:a0a6100c719ac9aa49be3fdf7519e8c3f"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3f">lzma_check</a> { <a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3fa7b9851d75abfabc08d7fc5b4aaeb6f20">LZMA_CHECK_NONE</a> = 0
-, <a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3fa0be65014a40b5cb4ab32252b3709bef7">LZMA_CHECK_CRC32</a> = 1
-, <a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3fa87b4b0697a1e1ccb6766dd5c2fa24afc">LZMA_CHECK_CRC64</a> = 4
-, <a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3faf26a55ddd204a50ae87ec3432e7bc309">LZMA_CHECK_SHA256</a> = 10
- }</td></tr>
-<tr class="memdesc:a0a6100c719ac9aa49be3fdf7519e8c3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type of the integrity check (Check ID) <a href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3f">More...</a><br /></td></tr>
-<tr class="separator:a0a6100c719ac9aa49be3fdf7519e8c3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:ae9391ed2acfad0ce9357b68c608f07d8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#abbc819c74b484c846825ae1388a50a59">lzma_bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="check_8h.html#ae9391ed2acfad0ce9357b68c608f07d8">lzma_check_is_supported</a> (<a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3f">lzma_check</a> check) lzma_nothrow lzma_attr_const</td></tr>
-<tr class="memdesc:ae9391ed2acfad0ce9357b68c608f07d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test if the given Check ID is supported. <br /></td></tr>
-<tr class="separator:ae9391ed2acfad0ce9357b68c608f07d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afd3fda19575d9d4f864c626c02b7cb48"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="check_8h.html#afd3fda19575d9d4f864c626c02b7cb48">lzma_check_size</a> (<a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3f">lzma_check</a> check) lzma_nothrow lzma_attr_const</td></tr>
-<tr class="memdesc:afd3fda19575d9d4f864c626c02b7cb48"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the size of the Check field with the given Check ID. <br /></td></tr>
-<tr class="separator:afd3fda19575d9d4f864c626c02b7cb48"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a760b569cce91bdd01e4ce9d78823c96d"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="check_8h.html#a760b569cce91bdd01e4ce9d78823c96d">lzma_crc32</a> (const uint8_t *buf, size_t size, uint32_t crc) lzma_nothrow lzma_attr_pure</td></tr>
-<tr class="memdesc:a760b569cce91bdd01e4ce9d78823c96d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate CRC32. <br /></td></tr>
-<tr class="separator:a760b569cce91bdd01e4ce9d78823c96d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aff2e74ce671b9f82a96adb549c68cea2"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="check_8h.html#aff2e74ce671b9f82a96adb549c68cea2">lzma_crc64</a> (const uint8_t *buf, size_t size, uint64_t crc) lzma_nothrow lzma_attr_pure</td></tr>
-<tr class="memdesc:aff2e74ce671b9f82a96adb549c68cea2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate CRC64. <br /></td></tr>
-<tr class="separator:aff2e74ce671b9f82a96adb549c68cea2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8d7c3ffabfd024485f03fa209536c746"><td class="memItemLeft" align="right" valign="top"><a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3f">lzma_check</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="check_8h.html#a8d7c3ffabfd024485f03fa209536c746">lzma_get_check</a> (const <a class="el" href="structlzma__stream.html">lzma_stream</a> *strm) lzma_nothrow</td></tr>
-<tr class="memdesc:a8d7c3ffabfd024485f03fa209536c746"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the type of the integrity check. <br /></td></tr>
-<tr class="separator:a8d7c3ffabfd024485f03fa209536c746"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Integrity checks. </p>
-<dl class="section note"><dt>Note</dt><dd>Never include this file directly. Use &lt;<a class="el" href="lzma_8h.html" title="The public API of liblzma data compression library.">lzma.h</a>&gt; instead. </dd></dl>
-</div><h2 class="groupheader">Macro Definition Documentation</h2>
-<a id="acd221ababe30230d9647aab469ad80cb" name="acd221ababe30230d9647aab469ad80cb"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#acd221ababe30230d9647aab469ad80cb">&#9670;&#160;</a></span>LZMA_CHECK_ID_MAX</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_CHECK_ID_MAX&#160;&#160;&#160;15</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Maximum valid Check ID. </p>
-<p>The .xz file format specification specifies 16 Check IDs (0-15). Some of them are only reserved, that is, no actual Check algorithm has been assigned. When decoding, liblzma still accepts unknown Check IDs for future compatibility. If a valid but unsupported Check ID is detected, liblzma can indicate a warning; see the flags LZMA_TELL_NO_CHECK, LZMA_TELL_UNSUPPORTED_CHECK, and LZMA_TELL_ANY_CHECK in <a class="el" href="container_8h.html" title="File formats.">container.h</a>. </p>
-
-</div>
-</div>
-<h2 class="groupheader">Enumeration Type Documentation</h2>
-<a id="a0a6100c719ac9aa49be3fdf7519e8c3f" name="a0a6100c719ac9aa49be3fdf7519e8c3f"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a0a6100c719ac9aa49be3fdf7519e8c3f">&#9670;&#160;</a></span>lzma_check</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">enum <a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3f">lzma_check</a></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Type of the integrity check (Check ID) </p>
-<p>The .xz format supports multiple types of checks that are calculated from the uncompressed data. They vary in both speed and ability to detect errors. </p>
-<table class="fieldtable">
-<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a0a6100c719ac9aa49be3fdf7519e8c3fa7b9851d75abfabc08d7fc5b4aaeb6f20" name="a0a6100c719ac9aa49be3fdf7519e8c3fa7b9851d75abfabc08d7fc5b4aaeb6f20"></a>LZMA_CHECK_NONE&#160;</td><td class="fielddoc"><p>No Check is calculated.</p>
-<p>Size of the Check field: 0 bytes </p>
-</td></tr>
-<tr><td class="fieldname"><a id="a0a6100c719ac9aa49be3fdf7519e8c3fa0be65014a40b5cb4ab32252b3709bef7" name="a0a6100c719ac9aa49be3fdf7519e8c3fa0be65014a40b5cb4ab32252b3709bef7"></a>LZMA_CHECK_CRC32&#160;</td><td class="fielddoc"><p>CRC32 using the polynomial from the IEEE 802.3 standard</p>
-<p>Size of the Check field: 4 bytes </p>
-</td></tr>
-<tr><td class="fieldname"><a id="a0a6100c719ac9aa49be3fdf7519e8c3fa87b4b0697a1e1ccb6766dd5c2fa24afc" name="a0a6100c719ac9aa49be3fdf7519e8c3fa87b4b0697a1e1ccb6766dd5c2fa24afc"></a>LZMA_CHECK_CRC64&#160;</td><td class="fielddoc"><p>CRC64 using the polynomial from the ECMA-182 standard</p>
-<p>Size of the Check field: 8 bytes </p>
-</td></tr>
-<tr><td class="fieldname"><a id="a0a6100c719ac9aa49be3fdf7519e8c3faf26a55ddd204a50ae87ec3432e7bc309" name="a0a6100c719ac9aa49be3fdf7519e8c3faf26a55ddd204a50ae87ec3432e7bc309"></a>LZMA_CHECK_SHA256&#160;</td><td class="fielddoc"><p>SHA-256</p>
-<p>Size of the Check field: 32 bytes </p>
-</td></tr>
-</table>
-
-</div>
-</div>
-<h2 class="groupheader">Function Documentation</h2>
-<a id="ae9391ed2acfad0ce9357b68c608f07d8" name="ae9391ed2acfad0ce9357b68c608f07d8"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ae9391ed2acfad0ce9357b68c608f07d8">&#9670;&#160;</a></span>lzma_check_is_supported()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#abbc819c74b484c846825ae1388a50a59">lzma_bool</a> lzma_check_is_supported </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3f">lzma_check</a>&#160;</td>
- <td class="paramname"><em>check</em></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Test if the given Check ID is supported. </p>
-<p>LZMA_CHECK_NONE and LZMA_CHECK_CRC32 are always supported (even if liblzma is built with limited features).</p>
-<dl class="section note"><dt>Note</dt><dd>It is safe to call this with a value that is not in the range [0, 15]; in that case the return value is always false.</dd></dl>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">check</td><td>Check ID</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>lzma_bool:<ul>
-<li>true if Check ID is supported by this liblzma build.</li>
-<li>false otherwise. </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="afd3fda19575d9d4f864c626c02b7cb48" name="afd3fda19575d9d4f864c626c02b7cb48"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#afd3fda19575d9d4f864c626c02b7cb48">&#9670;&#160;</a></span>lzma_check_size()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint32_t lzma_check_size </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3f">lzma_check</a>&#160;</td>
- <td class="paramname"><em>check</em></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Get the size of the Check field with the given Check ID. </p>
-<p>Although not all Check IDs have a check algorithm associated, the size of every Check is already frozen. This function returns the size (in bytes) of the Check field with the specified Check ID. The values are: { 0, 4, 4, 4, 8, 8, 8, 16, 16, 16, 32, 32, 32, 64, 64, 64 }</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">check</td><td>Check ID</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Size of the Check field in bytes. If the argument is not in the range [0, 15], UINT32_MAX is returned. </dd></dl>
-
-</div>
-</div>
-<a id="a760b569cce91bdd01e4ce9d78823c96d" name="a760b569cce91bdd01e4ce9d78823c96d"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a760b569cce91bdd01e4ce9d78823c96d">&#9670;&#160;</a></span>lzma_crc32()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint32_t lzma_crc32 </td>
- <td>(</td>
- <td class="paramtype">const uint8_t *&#160;</td>
- <td class="paramname"><em>buf</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>size</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint32_t&#160;</td>
- <td class="paramname"><em>crc</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Calculate CRC32. </p>
-<p>Calculate CRC32 using the polynomial from the IEEE 802.3 standard.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">buf</td><td>Pointer to the input buffer </td></tr>
- <tr><td class="paramname">size</td><td>Size of the input buffer </td></tr>
- <tr><td class="paramname">crc</td><td>Previously returned CRC value. This is used to calculate the CRC of a big buffer in smaller chunks. Set to zero when starting a new calculation.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Updated CRC value, which can be passed to this function again to continue CRC calculation. </dd></dl>
-
-</div>
-</div>
-<a id="aff2e74ce671b9f82a96adb549c68cea2" name="aff2e74ce671b9f82a96adb549c68cea2"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aff2e74ce671b9f82a96adb549c68cea2">&#9670;&#160;</a></span>lzma_crc64()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint64_t lzma_crc64 </td>
- <td>(</td>
- <td class="paramtype">const uint8_t *&#160;</td>
- <td class="paramname"><em>buf</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>size</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint64_t&#160;</td>
- <td class="paramname"><em>crc</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Calculate CRC64. </p>
-<p>Calculate CRC64 using the polynomial from the ECMA-182 standard.</p>
-<p>This function is used similarly to <a class="el" href="check_8h.html#a760b569cce91bdd01e4ce9d78823c96d" title="Calculate CRC32.">lzma_crc32()</a>.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">buf</td><td>Pointer to the input buffer </td></tr>
- <tr><td class="paramname">size</td><td>Size of the input buffer </td></tr>
- <tr><td class="paramname">crc</td><td>Previously returned CRC value. This is used to calculate the CRC of a big buffer in smaller chunks. Set to zero when starting a new calculation.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Updated CRC value, which can be passed to this function again to continue CRC calculation. </dd></dl>
-
-</div>
-</div>
-<a id="a8d7c3ffabfd024485f03fa209536c746" name="a8d7c3ffabfd024485f03fa209536c746"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a8d7c3ffabfd024485f03fa209536c746">&#9670;&#160;</a></span>lzma_get_check()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3f">lzma_check</a> lzma_get_check </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Get the type of the integrity check. </p>
-<p>This function can be called only immediately after <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> has returned LZMA_NO_CHECK, LZMA_UNSUPPORTED_CHECK, or LZMA_GET_CHECK. Calling this function in any other situation has undefined behavior.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">strm</td><td>Pointer to <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> meeting the above conditions.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Check ID in the <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a>, or undefined if called improperly. </dd></dl>
-
-</div>
-</div>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/classes.html b/doc/api/classes.html
deleted file mode 100644
index a010270..0000000
--- a/doc/api/classes.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): Data Structure Index</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div class="header">
- <div class="headertitle"><div class="title">Data Structure Index</div></div>
-</div><!--header-->
-<div class="contents">
-<div class="qindex"><a class="qindex" href="#letter_L">L</a></div>
-<div class="classindex">
-<dl class="classindex even">
-<dt class="alphachar"><a id="letter_L" name="letter_L">L</a></dt>
-<dd><a class="el" href="structlzma__allocator.html">lzma_allocator</a></dd><dd><a class="el" href="structlzma__block.html">lzma_block</a></dd><dd><a class="el" href="structlzma__filter.html">lzma_filter</a></dd><dd><a class="el" href="structlzma__index__iter.html">lzma_index_iter</a></dd><dd><a class="el" href="structlzma__mt.html">lzma_mt</a></dd><dd><a class="el" href="structlzma__options__bcj.html">lzma_options_bcj</a></dd><dd><a class="el" href="structlzma__options__delta.html">lzma_options_delta</a></dd><dd><a class="el" href="structlzma__options__lzma.html">lzma_options_lzma</a></dd><dd><a class="el" href="structlzma__stream.html">lzma_stream</a></dd><dd><a class="el" href="structlzma__stream__flags.html">lzma_stream_flags</a></dd></dl>
-</div>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/closed.png b/doc/api/closed.png
deleted file mode 100644
index 91f4888..0000000
--- a/doc/api/closed.png
+++ /dev/null
Binary files differ
diff --git a/doc/api/container_8h.html b/doc/api/container_8h.html
deleted file mode 100644
index 332b2b1..0000000
--- a/doc/api/container_8h.html
+++ /dev/null
@@ -1,1279 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma/container.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File&#160;List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div id="nav-path" class="navpath">
- <ul>
-<li class="navelem"><a class="el" href="dir_b17a1d403082bd69a703ed987cf158fb.html">lzma</a></li> </ul>
-</div>
-</div><!-- top -->
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> &#124;
-<a href="#define-members">Macros</a> &#124;
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle"><div class="title">container.h File Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>File formats.
-<a href="#details">More...</a></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__mt.html">lzma_mt</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multithreading options. <a href="structlzma__mt.html#details">More...</a><br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
-Macros</h2></td></tr>
-<tr class="memitem:af3ca20ff228b363a82515c1aee9e27bc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#af3ca20ff228b363a82515c1aee9e27bc">LZMA_PRESET_DEFAULT</a>&#160;&#160;&#160;UINT32_C(6)</td></tr>
-<tr class="memdesc:af3ca20ff228b363a82515c1aee9e27bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default compression preset. <br /></td></tr>
-<tr class="separator:af3ca20ff228b363a82515c1aee9e27bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a97e40265e355a21bd2465aaa5b85f03d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#a97e40265e355a21bd2465aaa5b85f03d">LZMA_PRESET_LEVEL_MASK</a>&#160;&#160;&#160;UINT32_C(0x1F)</td></tr>
-<tr class="memdesc:a97e40265e355a21bd2465aaa5b85f03d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mask for preset level. <br /></td></tr>
-<tr class="separator:a97e40265e355a21bd2465aaa5b85f03d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af524fe9af5737820fdadcd40a2c26deb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#af524fe9af5737820fdadcd40a2c26deb">LZMA_PRESET_EXTREME</a>&#160;&#160;&#160;(UINT32_C(1) &lt;&lt; 31)</td></tr>
-<tr class="memdesc:af524fe9af5737820fdadcd40a2c26deb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Extreme compression preset. <br /></td></tr>
-<tr class="separator:af524fe9af5737820fdadcd40a2c26deb"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ada9cd20febb28b5ed6656de9184a86e9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#ada9cd20febb28b5ed6656de9184a86e9">LZMA_TELL_NO_CHECK</a>&#160;&#160;&#160;UINT32_C(0x01)</td></tr>
-<tr class="separator:ada9cd20febb28b5ed6656de9184a86e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae21fb746037c82735d40d428c462e078"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#ae21fb746037c82735d40d428c462e078">LZMA_TELL_UNSUPPORTED_CHECK</a>&#160;&#160;&#160;UINT32_C(0x02)</td></tr>
-<tr class="separator:ae21fb746037c82735d40d428c462e078"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0bdde702a77ff42b90a99c0bf4147b6b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#a0bdde702a77ff42b90a99c0bf4147b6b">LZMA_TELL_ANY_CHECK</a>&#160;&#160;&#160;UINT32_C(0x04)</td></tr>
-<tr class="separator:a0bdde702a77ff42b90a99c0bf4147b6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1289925ae1c63a8e86f69f3657118a4d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#a1289925ae1c63a8e86f69f3657118a4d">LZMA_IGNORE_CHECK</a>&#160;&#160;&#160;UINT32_C(0x10)</td></tr>
-<tr class="separator:a1289925ae1c63a8e86f69f3657118a4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a563c84b5f368b3dd00d92ea903c5c33d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#a563c84b5f368b3dd00d92ea903c5c33d">LZMA_CONCATENATED</a>&#160;&#160;&#160;UINT32_C(0x08)</td></tr>
-<tr class="separator:a563c84b5f368b3dd00d92ea903c5c33d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa1f469ed3d4b2eaf12f8081657efc9d5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#aa1f469ed3d4b2eaf12f8081657efc9d5">LZMA_FAIL_FAST</a>&#160;&#160;&#160;UINT32_C(0x20)</td></tr>
-<tr class="separator:aa1f469ed3d4b2eaf12f8081657efc9d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:a62c853cf7dbf008bdbd97b2685c3eabf"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#a62c853cf7dbf008bdbd97b2685c3eabf">lzma_easy_encoder_memusage</a> (uint32_t preset) lzma_nothrow lzma_attr_pure</td></tr>
-<tr class="memdesc:a62c853cf7dbf008bdbd97b2685c3eabf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate approximate memory usage of easy encoder. <br /></td></tr>
-<tr class="separator:a62c853cf7dbf008bdbd97b2685c3eabf"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3562055d26c18fad067a7c7516eaddf5"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#a3562055d26c18fad067a7c7516eaddf5">lzma_easy_decoder_memusage</a> (uint32_t preset) lzma_nothrow lzma_attr_pure</td></tr>
-<tr class="memdesc:a3562055d26c18fad067a7c7516eaddf5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate approximate decoder memory usage of a preset. <br /></td></tr>
-<tr class="separator:a3562055d26c18fad067a7c7516eaddf5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acbdad999c544872f0f5d242f0d1a4ed4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#acbdad999c544872f0f5d242f0d1a4ed4">lzma_easy_encoder</a> (<a class="el" href="structlzma__stream.html">lzma_stream</a> *strm, uint32_t preset, <a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3f">lzma_check</a> check) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:acbdad999c544872f0f5d242f0d1a4ed4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize .xz Stream encoder using a preset number. <br /></td></tr>
-<tr class="separator:acbdad999c544872f0f5d242f0d1a4ed4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac5e71f2711b57391186671967435faf2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#ac5e71f2711b57391186671967435faf2">lzma_easy_buffer_encode</a> (uint32_t preset, <a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3f">lzma_check</a> check, const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *allocator, const uint8_t *in, size_t in_size, uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow</td></tr>
-<tr class="memdesc:ac5e71f2711b57391186671967435faf2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Single-call .xz Stream encoding using a preset number. <br /></td></tr>
-<tr class="separator:ac5e71f2711b57391186671967435faf2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1a97aec94c9fedd7646cfa51c4f4cd52"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#a1a97aec94c9fedd7646cfa51c4f4cd52">lzma_stream_encoder</a> (<a class="el" href="structlzma__stream.html">lzma_stream</a> *strm, const <a class="el" href="structlzma__filter.html">lzma_filter</a> *filters, <a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3f">lzma_check</a> check) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a1a97aec94c9fedd7646cfa51c4f4cd52"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize .xz Stream encoder using a custom filter chain. <br /></td></tr>
-<tr class="separator:a1a97aec94c9fedd7646cfa51c4f4cd52"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad7cf41496d77f4d346e006b26ed8e101"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#ad7cf41496d77f4d346e006b26ed8e101">lzma_stream_encoder_mt_memusage</a> (const <a class="el" href="structlzma__mt.html">lzma_mt</a> *options) lzma_nothrow lzma_attr_pure</td></tr>
-<tr class="memdesc:ad7cf41496d77f4d346e006b26ed8e101"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate approximate memory usage of multithreaded .xz encoder. <br /></td></tr>
-<tr class="separator:ad7cf41496d77f4d346e006b26ed8e101"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3f8793518711ee84d1abf12ea3aaba42"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#a3f8793518711ee84d1abf12ea3aaba42">lzma_stream_encoder_mt</a> (<a class="el" href="structlzma__stream.html">lzma_stream</a> *strm, const <a class="el" href="structlzma__mt.html">lzma_mt</a> *options) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a3f8793518711ee84d1abf12ea3aaba42"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize multithreaded .xz Stream encoder. <br /></td></tr>
-<tr class="separator:a3f8793518711ee84d1abf12ea3aaba42"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a26fcc5bccdf3f862caa4c992d01e1a72"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#a26fcc5bccdf3f862caa4c992d01e1a72">lzma_alone_encoder</a> (<a class="el" href="structlzma__stream.html">lzma_stream</a> *strm, const <a class="el" href="structlzma__options__lzma.html">lzma_options_lzma</a> *options) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a26fcc5bccdf3f862caa4c992d01e1a72"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize .lzma encoder (legacy file format) <br /></td></tr>
-<tr class="separator:a26fcc5bccdf3f862caa4c992d01e1a72"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a66d4366a47b8332bff2a512f44f5c45e"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#a66d4366a47b8332bff2a512f44f5c45e">lzma_stream_buffer_bound</a> (size_t uncompressed_size) lzma_nothrow</td></tr>
-<tr class="memdesc:a66d4366a47b8332bff2a512f44f5c45e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate output buffer size for single-call Stream encoder. <br /></td></tr>
-<tr class="separator:a66d4366a47b8332bff2a512f44f5c45e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6e645ccaeace3b13a6981e03c6e190ad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#a6e645ccaeace3b13a6981e03c6e190ad">lzma_stream_buffer_encode</a> (<a class="el" href="structlzma__filter.html">lzma_filter</a> *filters, <a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3f">lzma_check</a> check, const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *allocator, const uint8_t *in, size_t in_size, uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a6e645ccaeace3b13a6981e03c6e190ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Single-call .xz Stream encoder. <br /></td></tr>
-<tr class="separator:a6e645ccaeace3b13a6981e03c6e190ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abfc8f11acf837b167aa94b7071b54c30"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#abfc8f11acf837b167aa94b7071b54c30">lzma_microlzma_encoder</a> (<a class="el" href="structlzma__stream.html">lzma_stream</a> *strm, const <a class="el" href="structlzma__options__lzma.html">lzma_options_lzma</a> *options) lzma_nothrow</td></tr>
-<tr class="memdesc:abfc8f11acf837b167aa94b7071b54c30"><td class="mdescLeft">&#160;</td><td class="mdescRight">MicroLZMA encoder. <br /></td></tr>
-<tr class="separator:abfc8f11acf837b167aa94b7071b54c30"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a02b7683ef98d8049788961370a8b28c0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#a02b7683ef98d8049788961370a8b28c0">lzma_stream_decoder</a> (<a class="el" href="structlzma__stream.html">lzma_stream</a> *strm, uint64_t memlimit, uint32_t flags) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a02b7683ef98d8049788961370a8b28c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize .xz Stream decoder. <br /></td></tr>
-<tr class="separator:a02b7683ef98d8049788961370a8b28c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7179d178e6430c10e2006a467921e98e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#a7179d178e6430c10e2006a467921e98e">lzma_stream_decoder_mt</a> (<a class="el" href="structlzma__stream.html">lzma_stream</a> *strm, const <a class="el" href="structlzma__mt.html">lzma_mt</a> *options) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a7179d178e6430c10e2006a467921e98e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize multithreaded .xz Stream decoder. <br /></td></tr>
-<tr class="separator:a7179d178e6430c10e2006a467921e98e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a21cbebf2771617bb1e956385cfb353e3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#a21cbebf2771617bb1e956385cfb353e3">lzma_auto_decoder</a> (<a class="el" href="structlzma__stream.html">lzma_stream</a> *strm, uint64_t memlimit, uint32_t flags) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a21cbebf2771617bb1e956385cfb353e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decode .xz, .lzma, and .lz (lzip) files with autodetection. <br /></td></tr>
-<tr class="separator:a21cbebf2771617bb1e956385cfb353e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5f43c3a1035e5a226dcd298f4162b861"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#a5f43c3a1035e5a226dcd298f4162b861">lzma_alone_decoder</a> (<a class="el" href="structlzma__stream.html">lzma_stream</a> *strm, uint64_t memlimit) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a5f43c3a1035e5a226dcd298f4162b861"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize .lzma decoder (legacy file format) <br /></td></tr>
-<tr class="separator:a5f43c3a1035e5a226dcd298f4162b861"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a97689f5709e0db1e2dac450f5ce4e5eb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#a97689f5709e0db1e2dac450f5ce4e5eb">lzma_lzip_decoder</a> (<a class="el" href="structlzma__stream.html">lzma_stream</a> *strm, uint64_t memlimit, uint32_t flags) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a97689f5709e0db1e2dac450f5ce4e5eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize .lz (lzip) decoder (a foreign file format) <br /></td></tr>
-<tr class="separator:a97689f5709e0db1e2dac450f5ce4e5eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa58f237f6cea97ef0eb9bf5c37a3008d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#aa58f237f6cea97ef0eb9bf5c37a3008d">lzma_stream_buffer_decode</a> (uint64_t *memlimit, uint32_t flags, const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *allocator, const uint8_t *in, size_t *in_pos, size_t in_size, uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:aa58f237f6cea97ef0eb9bf5c37a3008d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Single-call .xz Stream decoder. <br /></td></tr>
-<tr class="separator:aa58f237f6cea97ef0eb9bf5c37a3008d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa8372dae3e7c907c36f7bb5426aeacdf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html#aa8372dae3e7c907c36f7bb5426aeacdf">lzma_microlzma_decoder</a> (<a class="el" href="structlzma__stream.html">lzma_stream</a> *strm, uint64_t comp_size, uint64_t uncomp_size, <a class="el" href="base_8h.html#abbc819c74b484c846825ae1388a50a59">lzma_bool</a> uncomp_size_is_exact, uint32_t dict_size) lzma_nothrow</td></tr>
-<tr class="memdesc:aa8372dae3e7c907c36f7bb5426aeacdf"><td class="mdescLeft">&#160;</td><td class="mdescRight">MicroLZMA decoder. <br /></td></tr>
-<tr class="separator:aa8372dae3e7c907c36f7bb5426aeacdf"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>File formats. </p>
-<dl class="section note"><dt>Note</dt><dd>Never include this file directly. Use &lt;<a class="el" href="lzma_8h.html" title="The public API of liblzma data compression library.">lzma.h</a>&gt; instead. </dd></dl>
-</div><h2 class="groupheader">Macro Definition Documentation</h2>
-<a id="af3ca20ff228b363a82515c1aee9e27bc" name="af3ca20ff228b363a82515c1aee9e27bc"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#af3ca20ff228b363a82515c1aee9e27bc">&#9670;&#160;</a></span>LZMA_PRESET_DEFAULT</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_PRESET_DEFAULT&#160;&#160;&#160;UINT32_C(6)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Default compression preset. </p>
-<p>It's not straightforward to recommend a default preset, because in some cases keeping the resource usage relatively low is more important that getting the maximum compression ratio. </p>
-
-</div>
-</div>
-<a id="a97e40265e355a21bd2465aaa5b85f03d" name="a97e40265e355a21bd2465aaa5b85f03d"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a97e40265e355a21bd2465aaa5b85f03d">&#9670;&#160;</a></span>LZMA_PRESET_LEVEL_MASK</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_PRESET_LEVEL_MASK&#160;&#160;&#160;UINT32_C(0x1F)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Mask for preset level. </p>
-<p>This is useful only if you need to extract the level from the preset variable. That should be rare. </p>
-
-</div>
-</div>
-<a id="af524fe9af5737820fdadcd40a2c26deb" name="af524fe9af5737820fdadcd40a2c26deb"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#af524fe9af5737820fdadcd40a2c26deb">&#9670;&#160;</a></span>LZMA_PRESET_EXTREME</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_PRESET_EXTREME&#160;&#160;&#160;(UINT32_C(1) &lt;&lt; 31)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Extreme compression preset. </p>
-<p>This flag modifies the preset to make the encoding significantly slower while improving the compression ratio only marginally. This is useful when you don't mind spending time to get as small result as possible.</p>
-<p>This flag doesn't affect the memory usage requirements of the decoder (at least not significantly). The memory usage of the encoder may be increased a little but only at the lowest preset levels (0-3). </p>
-
-</div>
-</div>
-<a id="ada9cd20febb28b5ed6656de9184a86e9" name="ada9cd20febb28b5ed6656de9184a86e9"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ada9cd20febb28b5ed6656de9184a86e9">&#9670;&#160;</a></span>LZMA_TELL_NO_CHECK</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_TELL_NO_CHECK&#160;&#160;&#160;UINT32_C(0x01)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-<p>This flag makes <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> return LZMA_NO_CHECK if the input stream being decoded has no integrity check. Note that when used with <a class="el" href="container_8h.html#a21cbebf2771617bb1e956385cfb353e3" title="Decode .xz, .lzma, and .lz (lzip) files with autodetection.">lzma_auto_decoder()</a>, all .lzma files will trigger LZMA_NO_CHECK if LZMA_TELL_NO_CHECK is used. </p>
-
-</div>
-</div>
-<a id="ae21fb746037c82735d40d428c462e078" name="ae21fb746037c82735d40d428c462e078"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ae21fb746037c82735d40d428c462e078">&#9670;&#160;</a></span>LZMA_TELL_UNSUPPORTED_CHECK</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_TELL_UNSUPPORTED_CHECK&#160;&#160;&#160;UINT32_C(0x02)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-<p>This flag makes <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> return LZMA_UNSUPPORTED_CHECK if the input stream has an integrity check, but the type of the integrity check is not supported by this liblzma version or build. Such files can still be decoded, but the integrity check cannot be verified. </p>
-
-</div>
-</div>
-<a id="a0bdde702a77ff42b90a99c0bf4147b6b" name="a0bdde702a77ff42b90a99c0bf4147b6b"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a0bdde702a77ff42b90a99c0bf4147b6b">&#9670;&#160;</a></span>LZMA_TELL_ANY_CHECK</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_TELL_ANY_CHECK&#160;&#160;&#160;UINT32_C(0x04)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-<p>This flag makes <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> return LZMA_GET_CHECK as soon as the type of the integrity check is known. The type can then be got with <a class="el" href="check_8h.html#a8d7c3ffabfd024485f03fa209536c746" title="Get the type of the integrity check.">lzma_get_check()</a>. </p>
-
-</div>
-</div>
-<a id="a1289925ae1c63a8e86f69f3657118a4d" name="a1289925ae1c63a8e86f69f3657118a4d"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a1289925ae1c63a8e86f69f3657118a4d">&#9670;&#160;</a></span>LZMA_IGNORE_CHECK</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_IGNORE_CHECK&#160;&#160;&#160;UINT32_C(0x10)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-<p>This flag makes <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> not calculate and verify the integrity check of the compressed data in .xz files. This means that invalid integrity check values won't be detected and LZMA_DATA_ERROR won't be returned in such cases.</p>
-<p>This flag only affects the checks of the compressed data itself; the CRC32 values in the .xz headers will still be verified normally.</p>
-<p>Don't use this flag unless you know what you are doing. Possible reasons to use this flag:</p>
-<ul>
-<li>Trying to recover data from a corrupt .xz file.</li>
-<li>Speeding up decompression, which matters mostly with SHA-256 or with files that have compressed extremely well. It's recommended to not use this flag for this purpose unless the file integrity is verified externally in some other way.</li>
-</ul>
-<p>Support for this flag was added in liblzma 5.1.4beta. </p>
-
-</div>
-</div>
-<a id="a563c84b5f368b3dd00d92ea903c5c33d" name="a563c84b5f368b3dd00d92ea903c5c33d"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a563c84b5f368b3dd00d92ea903c5c33d">&#9670;&#160;</a></span>LZMA_CONCATENATED</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_CONCATENATED&#160;&#160;&#160;UINT32_C(0x08)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-<p>This flag enables decoding of concatenated files with file formats that allow concatenating compressed files as is. From the formats currently supported by liblzma, only the .xz and .lz formats allow concatenated files. Concatenated files are not allowed with the legacy .lzma format.</p>
-<p>This flag also affects the usage of the `action' argument for <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a>. When LZMA_CONCATENATED is used, <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> won't return LZMA_STREAM_END unless LZMA_FINISH is used as `action'. Thus, the application has to set LZMA_FINISH in the same way as it does when encoding.</p>
-<p>If LZMA_CONCATENATED is not used, the decoders still accept LZMA_FINISH as `action' for <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a>, but the usage of LZMA_FINISH isn't required. </p>
-
-</div>
-</div>
-<a id="aa1f469ed3d4b2eaf12f8081657efc9d5" name="aa1f469ed3d4b2eaf12f8081657efc9d5"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aa1f469ed3d4b2eaf12f8081657efc9d5">&#9670;&#160;</a></span>LZMA_FAIL_FAST</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_FAIL_FAST&#160;&#160;&#160;UINT32_C(0x20)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-<p>This flag makes the threaded decoder report errors (like LZMA_DATA_ERROR) as soon as they are detected. This saves time when the application has no interest in a partially decompressed truncated or corrupt file. Note that due to timing randomness, if the same truncated or corrupt input is decompressed multiple times with this flag, a different amount of output may be produced by different runs, and even the error code might vary.</p>
-<p>When using LZMA_FAIL_FAST, it is recommended to use LZMA_FINISH to tell the decoder when no more input will be coming because it can help fast detection and reporting of truncated files. Note that in this situation truncated files might be diagnosed with LZMA_DATA_ERROR instead of LZMA_OK or LZMA_BUF_ERROR!</p>
-<p>Without this flag the threaded decoder will provide as much output as possible at first and then report the pending error. This default behavior matches the single-threaded decoder and provides repeatable behavior with truncated or corrupt input. There are a few special cases where the behavior can still differ like memory allocation failures (LZMA_MEM_ERROR).</p>
-<p>Single-threaded decoders currently ignore this flag.</p>
-<p>Support for this flag was added in liblzma 5.3.3alpha. Note that in older versions this flag isn't supported (LZMA_OPTIONS_ERROR) even by functions that ignore this flag in newer liblzma versions. </p>
-
-</div>
-</div>
-<h2 class="groupheader">Function Documentation</h2>
-<a id="a62c853cf7dbf008bdbd97b2685c3eabf" name="a62c853cf7dbf008bdbd97b2685c3eabf"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a62c853cf7dbf008bdbd97b2685c3eabf">&#9670;&#160;</a></span>lzma_easy_encoder_memusage()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint64_t lzma_easy_encoder_memusage </td>
- <td>(</td>
- <td class="paramtype">uint32_t&#160;</td>
- <td class="paramname"><em>preset</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Calculate approximate memory usage of easy encoder. </p>
-<p>This function is a wrapper for <a class="el" href="filter_8h.html#a730f9391e85a5979bcd1b32643ae7176" title="Calculate approximate memory requirements for raw encoder.">lzma_raw_encoder_memusage()</a>.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">preset</td><td>Compression preset (level and possible flags)</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Number of bytes of memory required for the given preset when encoding or UINT64_MAX on error. </dd></dl>
-
-</div>
-</div>
-<a id="a3562055d26c18fad067a7c7516eaddf5" name="a3562055d26c18fad067a7c7516eaddf5"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a3562055d26c18fad067a7c7516eaddf5">&#9670;&#160;</a></span>lzma_easy_decoder_memusage()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint64_t lzma_easy_decoder_memusage </td>
- <td>(</td>
- <td class="paramtype">uint32_t&#160;</td>
- <td class="paramname"><em>preset</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Calculate approximate decoder memory usage of a preset. </p>
-<p>This function is a wrapper for <a class="el" href="filter_8h.html#a58511249ae9206d7de7c5d1f05842297" title="Calculate approximate memory requirements for raw decoder.">lzma_raw_decoder_memusage()</a>.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">preset</td><td>Compression preset (level and possible flags)</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Number of bytes of memory required to decompress a file that was compressed using the given preset or UINT64_MAX on error. </dd></dl>
-
-</div>
-</div>
-<a id="acbdad999c544872f0f5d242f0d1a4ed4" name="acbdad999c544872f0f5d242f0d1a4ed4"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#acbdad999c544872f0f5d242f0d1a4ed4">&#9670;&#160;</a></span>lzma_easy_encoder()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_easy_encoder </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint32_t&#160;</td>
- <td class="paramname"><em>preset</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3f">lzma_check</a>&#160;</td>
- <td class="paramname"><em>check</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Initialize .xz Stream encoder using a preset number. </p>
-<p>This function is intended for those who just want to use the basic features of liblzma (that is, most developers out there).</p>
-<p>If initialization fails (return value is not LZMA_OK), all the memory allocated for *strm by liblzma is always freed. Thus, there is no need to call <a class="el" href="base_8h.html#a854ff37464ae1225febf14db1af43308" title="Free memory allocated for the coder data structures.">lzma_end()</a> after failed initialization.</p>
-<p>If initialization succeeds, use <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> to do the actual encoding. Valid values for `action' (the second argument of <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a>) are LZMA_RUN, LZMA_SYNC_FLUSH, LZMA_FULL_FLUSH, and LZMA_FINISH. In future, there may be compression levels or flags that don't support LZMA_SYNC_FLUSH.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">strm</td><td>Pointer to <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> that is at least initialized with LZMA_STREAM_INIT. </td></tr>
- <tr><td class="paramname">preset</td><td>Compression preset to use. A preset consist of level number and zero or more flags. Usually flags aren't used, so preset is simply a number [0, 9] which match the options -0 ... -9 of the xz command line tool. Additional flags can be be set using bitwise-or with the preset level number, e.g. 6 | LZMA_PRESET_EXTREME. </td></tr>
- <tr><td class="paramname">check</td><td>Integrity check type to use. See <a class="el" href="check_8h.html" title="Integrity checks.">check.h</a> for available checks. The xz command line tool defaults to LZMA_CHECK_CRC64, which is a good choice if you are unsure. LZMA_CHECK_CRC32 is good too as long as the uncompressed file is not many gigabytes.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Initialization succeeded. Use <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> to encode your data.</li>
-<li>LZMA_MEM_ERROR: Memory allocation failed.</li>
-<li>LZMA_OPTIONS_ERROR: The given compression preset is not supported by this build of liblzma.</li>
-<li>LZMA_UNSUPPORTED_CHECK: The given check type is not supported by this liblzma build.</li>
-<li>LZMA_PROG_ERROR: One or more of the parameters have values that will never be valid. For example, strm == NULL. </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="ac5e71f2711b57391186671967435faf2" name="ac5e71f2711b57391186671967435faf2"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ac5e71f2711b57391186671967435faf2">&#9670;&#160;</a></span>lzma_easy_buffer_encode()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_easy_buffer_encode </td>
- <td>(</td>
- <td class="paramtype">uint32_t&#160;</td>
- <td class="paramname"><em>preset</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3f">lzma_check</a>&#160;</td>
- <td class="paramname"><em>check</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *&#160;</td>
- <td class="paramname"><em>allocator</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint8_t *&#160;</td>
- <td class="paramname"><em>in</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>in_size</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint8_t *&#160;</td>
- <td class="paramname"><em>out</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t *&#160;</td>
- <td class="paramname"><em>out_pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>out_size</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Single-call .xz Stream encoding using a preset number. </p>
-<p>The maximum required output buffer size can be calculated with <a class="el" href="container_8h.html#a66d4366a47b8332bff2a512f44f5c45e" title="Calculate output buffer size for single-call Stream encoder.">lzma_stream_buffer_bound()</a>.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir"></td><td class="paramname">preset</td><td>Compression preset to use. See the description in <a class="el" href="container_8h.html#acbdad999c544872f0f5d242f0d1a4ed4" title="Initialize .xz Stream encoder using a preset number.">lzma_easy_encoder()</a>. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">check</td><td>Type of the integrity check to calculate from uncompressed data. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">allocator</td><td><a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> for custom allocator functions. Set to NULL to use malloc() and free(). </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in</td><td>Beginning of the input buffer </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in_size</td><td>Size of the input buffer </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">out</td><td>Beginning of the output buffer </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">out_pos</td><td>The next byte will be written to out[*out_pos]. *out_pos is updated only if encoding succeeds. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">out_size</td><td>Size of the out buffer; the first byte into which no data is written to is out[out_size].</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Encoding was successful.</li>
-<li>LZMA_BUF_ERROR: Not enough output buffer space.</li>
-<li>LZMA_UNSUPPORTED_CHECK</li>
-<li>LZMA_OPTIONS_ERROR</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_DATA_ERROR</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a1a97aec94c9fedd7646cfa51c4f4cd52" name="a1a97aec94c9fedd7646cfa51c4f4cd52"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a1a97aec94c9fedd7646cfa51c4f4cd52">&#9670;&#160;</a></span>lzma_stream_encoder()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_stream_encoder </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__filter.html">lzma_filter</a> *&#160;</td>
- <td class="paramname"><em>filters</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3f">lzma_check</a>&#160;</td>
- <td class="paramname"><em>check</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Initialize .xz Stream encoder using a custom filter chain. </p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">strm</td><td>Pointer to <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> that is at least initialized with LZMA_STREAM_INIT. </td></tr>
- <tr><td class="paramname">filters</td><td>Array of filters terminated with .id == LZMA_VLI_UNKNOWN. See filters.h for more information. </td></tr>
- <tr><td class="paramname">check</td><td>Type of the integrity check to calculate from uncompressed data.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Initialization was successful.</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_UNSUPPORTED_CHECK</li>
-<li>LZMA_OPTIONS_ERROR</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="ad7cf41496d77f4d346e006b26ed8e101" name="ad7cf41496d77f4d346e006b26ed8e101"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ad7cf41496d77f4d346e006b26ed8e101">&#9670;&#160;</a></span>lzma_stream_encoder_mt_memusage()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint64_t lzma_stream_encoder_mt_memusage </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="structlzma__mt.html">lzma_mt</a> *&#160;</td>
- <td class="paramname"><em>options</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Calculate approximate memory usage of multithreaded .xz encoder. </p>
-<p>Since doing the encoding in threaded mode doesn't affect the memory requirements of single-threaded decompressor, you can use lzma_easy_decoder_memusage(options-&gt;preset) or lzma_raw_decoder_memusage(options-&gt;filters) to calculate the decompressor memory requirements.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">options</td><td>Compression options</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Number of bytes of memory required for encoding with the given options. If an error occurs, for example due to unsupported preset or filter chain, UINT64_MAX is returned. </dd></dl>
-
-</div>
-</div>
-<a id="a3f8793518711ee84d1abf12ea3aaba42" name="a3f8793518711ee84d1abf12ea3aaba42"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a3f8793518711ee84d1abf12ea3aaba42">&#9670;&#160;</a></span>lzma_stream_encoder_mt()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_stream_encoder_mt </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__mt.html">lzma_mt</a> *&#160;</td>
- <td class="paramname"><em>options</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Initialize multithreaded .xz Stream encoder. </p>
-<p>This provides the functionality of <a class="el" href="container_8h.html#acbdad999c544872f0f5d242f0d1a4ed4" title="Initialize .xz Stream encoder using a preset number.">lzma_easy_encoder()</a> and <a class="el" href="container_8h.html#a1a97aec94c9fedd7646cfa51c4f4cd52" title="Initialize .xz Stream encoder using a custom filter chain.">lzma_stream_encoder()</a> as a single function for multithreaded use.</p>
-<p>The supported actions for <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> are LZMA_RUN, LZMA_FULL_FLUSH, LZMA_FULL_BARRIER, and LZMA_FINISH. Support for LZMA_SYNC_FLUSH might be added in the future.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">strm</td><td>Pointer to <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> that is at least initialized with LZMA_STREAM_INIT. </td></tr>
- <tr><td class="paramname">options</td><td>Pointer to multithreaded compression options</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_UNSUPPORTED_CHECK</li>
-<li>LZMA_OPTIONS_ERROR</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a26fcc5bccdf3f862caa4c992d01e1a72" name="a26fcc5bccdf3f862caa4c992d01e1a72"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a26fcc5bccdf3f862caa4c992d01e1a72">&#9670;&#160;</a></span>lzma_alone_encoder()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_alone_encoder </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__options__lzma.html">lzma_options_lzma</a> *&#160;</td>
- <td class="paramname"><em>options</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Initialize .lzma encoder (legacy file format) </p>
-<p>The .lzma format is sometimes called the LZMA_Alone format, which is the reason for the name of this function. The .lzma format supports only the LZMA1 filter. There is no support for integrity checks like CRC32.</p>
-<p>Use this function if and only if you need to create files readable by legacy LZMA tools such as LZMA Utils 4.32.x. Moving to the .xz format is strongly recommended.</p>
-<p>The valid action values for <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> are LZMA_RUN and LZMA_FINISH. No kind of flushing is supported, because the file format doesn't make it possible.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">strm</td><td>Pointer to <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> that is at least initialized with LZMA_STREAM_INIT. </td></tr>
- <tr><td class="paramname">options</td><td>Pointer to encoder options</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_OPTIONS_ERROR</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a66d4366a47b8332bff2a512f44f5c45e" name="a66d4366a47b8332bff2a512f44f5c45e"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a66d4366a47b8332bff2a512f44f5c45e">&#9670;&#160;</a></span>lzma_stream_buffer_bound()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">size_t lzma_stream_buffer_bound </td>
- <td>(</td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>uncompressed_size</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Calculate output buffer size for single-call Stream encoder. </p>
-<p>When trying to compress incompressible data, the encoded size will be slightly bigger than the input data. This function calculates how much output buffer space is required to be sure that <a class="el" href="container_8h.html#a6e645ccaeace3b13a6981e03c6e190ad" title="Single-call .xz Stream encoder.">lzma_stream_buffer_encode()</a> doesn't return LZMA_BUF_ERROR.</p>
-<p>The calculated value is not exact, but it is guaranteed to be big enough. The actual maximum output space required may be slightly smaller (up to about 100 bytes). This should not be a problem in practice.</p>
-<p>If the calculated maximum size doesn't fit into size_t or would make the Stream grow past LZMA_VLI_MAX (which should never happen in practice), zero is returned to indicate the error.</p>
-<dl class="section note"><dt>Note</dt><dd>The limit calculated by this function applies only to single-call encoding. Multi-call encoding may (and probably will) have larger maximum expansion when encoding incompressible data. Currently there is no function to calculate the maximum expansion of multi-call encoding.</dd></dl>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">uncompressed_size</td><td>Size in bytes of the uncompressed input data</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Maximum number of bytes needed to store the compressed data. </dd></dl>
-
-</div>
-</div>
-<a id="a6e645ccaeace3b13a6981e03c6e190ad" name="a6e645ccaeace3b13a6981e03c6e190ad"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a6e645ccaeace3b13a6981e03c6e190ad">&#9670;&#160;</a></span>lzma_stream_buffer_encode()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_stream_buffer_encode </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__filter.html">lzma_filter</a> *&#160;</td>
- <td class="paramname"><em>filters</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3f">lzma_check</a>&#160;</td>
- <td class="paramname"><em>check</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *&#160;</td>
- <td class="paramname"><em>allocator</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint8_t *&#160;</td>
- <td class="paramname"><em>in</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>in_size</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint8_t *&#160;</td>
- <td class="paramname"><em>out</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t *&#160;</td>
- <td class="paramname"><em>out_pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>out_size</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Single-call .xz Stream encoder. </p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir"></td><td class="paramname">filters</td><td>Array of filters terminated with .id == LZMA_VLI_UNKNOWN. See filters.h for more information. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">check</td><td>Type of the integrity check to calculate from uncompressed data. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">allocator</td><td><a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> for custom allocator functions. Set to NULL to use malloc() and free(). </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in</td><td>Beginning of the input buffer </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in_size</td><td>Size of the input buffer </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">out</td><td>Beginning of the output buffer </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">out_pos</td><td>The next byte will be written to out[*out_pos]. *out_pos is updated only if encoding succeeds. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">out_size</td><td>Size of the out buffer; the first byte into which no data is written to is out[out_size].</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Encoding was successful.</li>
-<li>LZMA_BUF_ERROR: Not enough output buffer space.</li>
-<li>LZMA_UNSUPPORTED_CHECK</li>
-<li>LZMA_OPTIONS_ERROR</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_DATA_ERROR</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="abfc8f11acf837b167aa94b7071b54c30" name="abfc8f11acf837b167aa94b7071b54c30"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#abfc8f11acf837b167aa94b7071b54c30">&#9670;&#160;</a></span>lzma_microlzma_encoder()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_microlzma_encoder </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__options__lzma.html">lzma_options_lzma</a> *&#160;</td>
- <td class="paramname"><em>options</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>MicroLZMA encoder. </p>
-<p>The MicroLZMA format is a raw LZMA stream whose first byte (always 0x00) has been replaced with bitwise-negation of the LZMA properties (lc/lp/pb). This encoding ensures that the first byte of MicroLZMA stream is never 0x00. There is no end of payload marker and thus the uncompressed size must be stored separately. For the best error detection the dictionary size should be stored separately as well but alternatively one may use the uncompressed size as the dictionary size when decoding.</p>
-<p>With the MicroLZMA encoder, <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> behaves slightly unusually. The action argument must be LZMA_FINISH and the return value will never be LZMA_OK. Thus the encoding is always done with a single <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> after the initialization. The benefit of the combination of initialization function and <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> is that memory allocations can be re-used for better performance.</p>
-<p><a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> will try to encode as much input as is possible to fit into the given output buffer. If not all input can be encoded, the stream will be finished without encoding all the input. The caller must check both input and output buffer usage after <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> (total_in and total_out in <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> can be convenient). Often <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> can fill the output buffer completely if there is a lot of input, but sometimes a few bytes may remain unused because the next LZMA symbol would require more space.</p>
-<p><a class="el" href="structlzma__stream.html#a5ff28ea4e39148723c19f59811627904">lzma_stream.avail_out</a> must be at least 6. Otherwise LZMA_PROG_ERROR will be returned.</p>
-<p>The LZMA dictionary should be reasonably low to speed up the encoder re-initialization. A good value is bigger than the resulting uncompressed size of most of the output chunks. For example, if output size is 4 KiB, dictionary size of 32 KiB or 64 KiB is good. If the data compresses extremely well, even 128 KiB may be useful.</p>
-<p>The MicroLZMA format and this encoder variant were made with the EROFS file system in mind. This format may be convenient in other embedded uses too where many small streams are needed. XZ Embedded includes a decoder for this format.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">strm</td><td>Pointer to <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> that is at least initialized with LZMA_STREAM_INIT. </td></tr>
- <tr><td class="paramname">options</td><td>Pointer to encoder options</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_STREAM_END: All good. Check the amounts of input used and output produced. Store the amount of input used (uncompressed size) as it needs to be known to decompress the data.</li>
-<li>LZMA_OPTIONS_ERROR</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_PROG_ERROR: In addition to the generic reasons for this error code, this may also be returned if there isn't enough output space (6 bytes) to create a valid MicroLZMA stream. </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a02b7683ef98d8049788961370a8b28c0" name="a02b7683ef98d8049788961370a8b28c0"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a02b7683ef98d8049788961370a8b28c0">&#9670;&#160;</a></span>lzma_stream_decoder()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_stream_decoder </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint64_t&#160;</td>
- <td class="paramname"><em>memlimit</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint32_t&#160;</td>
- <td class="paramname"><em>flags</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Initialize .xz Stream decoder. </p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">strm</td><td>Pointer to <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> that is at least initialized with LZMA_STREAM_INIT. </td></tr>
- <tr><td class="paramname">memlimit</td><td>Memory usage limit as bytes. Use UINT64_MAX to effectively disable the limiter. liblzma 5.2.3 and earlier don't allow 0 here and return LZMA_PROG_ERROR; later versions treat 0 as if 1 had been specified. </td></tr>
- <tr><td class="paramname">flags</td><td>Bitwise-or of zero or more of the decoder flags: LZMA_TELL_NO_CHECK, LZMA_TELL_UNSUPPORTED_CHECK, LZMA_TELL_ANY_CHECK, LZMA_IGNORE_CHECK, LZMA_CONCATENATED, LZMA_FAIL_FAST</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Initialization was successful.</li>
-<li>LZMA_MEM_ERROR: Cannot allocate memory.</li>
-<li>LZMA_OPTIONS_ERROR: Unsupported flags</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a7179d178e6430c10e2006a467921e98e" name="a7179d178e6430c10e2006a467921e98e"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a7179d178e6430c10e2006a467921e98e">&#9670;&#160;</a></span>lzma_stream_decoder_mt()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_stream_decoder_mt </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__mt.html">lzma_mt</a> *&#160;</td>
- <td class="paramname"><em>options</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Initialize multithreaded .xz Stream decoder. </p>
-<p>The decoder can decode multiple Blocks in parallel. This requires that each Block Header contains the Compressed Size and Uncompressed size fields which are added by the multi-threaded encoder, see <a class="el" href="container_8h.html#a3f8793518711ee84d1abf12ea3aaba42" title="Initialize multithreaded .xz Stream encoder.">lzma_stream_encoder_mt()</a>.</p>
-<p>A Stream with one Block will only utilize one thread. A Stream with multiple Blocks but without size information in Block Headers will be processed in single-threaded mode in the same way as done by <a class="el" href="container_8h.html#a02b7683ef98d8049788961370a8b28c0" title="Initialize .xz Stream decoder.">lzma_stream_decoder()</a>. Concatenated Streams are processed one Stream at a time; no inter-Stream parallelization is done.</p>
-<p>This function behaves like <a class="el" href="container_8h.html#a02b7683ef98d8049788961370a8b28c0" title="Initialize .xz Stream decoder.">lzma_stream_decoder()</a> when options-&gt;threads == 1 and options-&gt;memlimit_threading &lt;= 1.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">strm</td><td>Pointer to <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> that is at least initialized with LZMA_STREAM_INIT. </td></tr>
- <tr><td class="paramname">options</td><td>Pointer to multithreaded compression options</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Initialization was successful.</li>
-<li>LZMA_MEM_ERROR: Cannot allocate memory.</li>
-<li>LZMA_MEMLIMIT_ERROR: Memory usage limit was reached.</li>
-<li>LZMA_OPTIONS_ERROR: Unsupported flags.</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a21cbebf2771617bb1e956385cfb353e3" name="a21cbebf2771617bb1e956385cfb353e3"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a21cbebf2771617bb1e956385cfb353e3">&#9670;&#160;</a></span>lzma_auto_decoder()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_auto_decoder </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint64_t&#160;</td>
- <td class="paramname"><em>memlimit</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint32_t&#160;</td>
- <td class="paramname"><em>flags</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Decode .xz, .lzma, and .lz (lzip) files with autodetection. </p>
-<p>This decoder autodetects between the .xz, .lzma, and .lz file formats, and calls <a class="el" href="container_8h.html#a02b7683ef98d8049788961370a8b28c0" title="Initialize .xz Stream decoder.">lzma_stream_decoder()</a>, <a class="el" href="container_8h.html#a5f43c3a1035e5a226dcd298f4162b861" title="Initialize .lzma decoder (legacy file format)">lzma_alone_decoder()</a>, or <a class="el" href="container_8h.html#a97689f5709e0db1e2dac450f5ce4e5eb" title="Initialize .lz (lzip) decoder (a foreign file format)">lzma_lzip_decoder()</a> once the type of the input file has been detected.</p>
-<p>Support for .lz was added in 5.4.0.</p>
-<p>If the flag LZMA_CONCATENATED is used and the input is a .lzma file: For historical reasons concatenated .lzma files aren't supported. If there is trailing data after one .lzma stream, <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> will return LZMA_DATA_ERROR. (<a class="el" href="container_8h.html#a5f43c3a1035e5a226dcd298f4162b861" title="Initialize .lzma decoder (legacy file format)">lzma_alone_decoder()</a> doesn't have such a check as it doesn't support any decoder flags. It will return LZMA_STREAM_END after one .lzma stream.)</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">strm</td><td>Pointer to <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> that is at least initialized with LZMA_STREAM_INIT. </td></tr>
- <tr><td class="paramname">memlimit</td><td>Memory usage limit as bytes. Use UINT64_MAX to effectively disable the limiter. liblzma 5.2.3 and earlier don't allow 0 here and return LZMA_PROG_ERROR; later versions treat 0 as if 1 had been specified. </td></tr>
- <tr><td class="paramname">flags</td><td>Bitwise-or of zero or more of the decoder flags: LZMA_TELL_NO_CHECK, LZMA_TELL_UNSUPPORTED_CHECK, LZMA_TELL_ANY_CHECK, LZMA_IGNORE_CHECK, LZMA_CONCATENATED, LZMA_FAIL_FAST</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Initialization was successful.</li>
-<li>LZMA_MEM_ERROR: Cannot allocate memory.</li>
-<li>LZMA_OPTIONS_ERROR: Unsupported flags</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a5f43c3a1035e5a226dcd298f4162b861" name="a5f43c3a1035e5a226dcd298f4162b861"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a5f43c3a1035e5a226dcd298f4162b861">&#9670;&#160;</a></span>lzma_alone_decoder()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_alone_decoder </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint64_t&#160;</td>
- <td class="paramname"><em>memlimit</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Initialize .lzma decoder (legacy file format) </p>
-<p>Valid `action' arguments to <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> are LZMA_RUN and LZMA_FINISH. There is no need to use LZMA_FINISH, but it's allowed because it may simplify certain types of applications.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">strm</td><td>Pointer to <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> that is at least initialized with LZMA_STREAM_INIT. </td></tr>
- <tr><td class="paramname">memlimit</td><td>Memory usage limit as bytes. Use UINT64_MAX to effectively disable the limiter. liblzma 5.2.3 and earlier don't allow 0 here and return LZMA_PROG_ERROR; later versions treat 0 as if 1 had been specified.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a97689f5709e0db1e2dac450f5ce4e5eb" name="a97689f5709e0db1e2dac450f5ce4e5eb"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a97689f5709e0db1e2dac450f5ce4e5eb">&#9670;&#160;</a></span>lzma_lzip_decoder()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_lzip_decoder </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint64_t&#160;</td>
- <td class="paramname"><em>memlimit</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint32_t&#160;</td>
- <td class="paramname"><em>flags</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Initialize .lz (lzip) decoder (a foreign file format) </p>
-<p>This decoder supports the .lz format version 0 and the unextended .lz format version 1:</p>
-<ul>
-<li>Files in the format version 0 were produced by lzip 1.3 and older. Such files aren't common but may be found from file archives as a few source packages were released in this format. People might have old personal files in this format too. Decompression support for the format version 0 was removed in lzip 1.18.</li>
-<li>lzip 1.3 added decompression support for .lz format version 1 files. Compression support was added in lzip 1.4. In lzip 1.6 the .lz format version 1 was extended to support the Sync Flush marker. This extension is not supported by liblzma. <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> will return LZMA_DATA_ERROR at the location of the Sync Flush marker. In practice files with the Sync Flush marker are very rare and thus liblzma can decompress almost all .lz files.</li>
-</ul>
-<p>Just like with <a class="el" href="container_8h.html#a02b7683ef98d8049788961370a8b28c0" title="Initialize .xz Stream decoder.">lzma_stream_decoder()</a> for .xz files, LZMA_CONCATENATED should be used when decompressing normal standalone .lz files.</p>
-<p>The .lz format allows putting non-.lz data at the end of a file after at least one valid .lz member. That is, one can append custom data at the end of a .lz file and the decoder is required to ignore it. In liblzma this is relevant only when LZMA_CONCATENATED is used. In that case <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> will return LZMA_STREAM_END and leave <a class="el" href="structlzma__stream.html#a72fdc738c793f07a5c29715aa57802cf">lzma_stream.next_in</a> pointing to the first byte of the non-.lz data. An exception to this is if the first 1-3 bytes of the non-.lz data are identical to the .lz magic bytes (0x4C, 0x5A, 0x49, 0x50; "LZIP" in US-ASCII). In such a case the 1-3 bytes will have been ignored by <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a>. If one wishes to locate the non-.lz data reliably, one must ensure that the first byte isn't 0x4C. Actually one should ensure that none of the first four bytes of trailing data are equal to the magic bytes because lzip &gt;= 1.20 requires it by default.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">strm</td><td>Pointer to <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> that is at least initialized with LZMA_STREAM_INIT. </td></tr>
- <tr><td class="paramname">memlimit</td><td>Memory usage limit as bytes. Use UINT64_MAX to effectively disable the limiter. </td></tr>
- <tr><td class="paramname">flags</td><td>Bitwise-or of flags, or zero for no flags. All decoder flags listed above are supported although only LZMA_CONCATENATED and (in very rare cases) LZMA_IGNORE_CHECK are actually useful. LZMA_TELL_NO_CHECK, LZMA_TELL_UNSUPPORTED_CHECK, and LZMA_FAIL_FAST do nothing. LZMA_TELL_ANY_CHECK is supported for consistency only as CRC32 is always used in the .lz format.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Initialization was successful.</li>
-<li>LZMA_MEM_ERROR: Cannot allocate memory.</li>
-<li>LZMA_OPTIONS_ERROR: Unsupported flags</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="aa58f237f6cea97ef0eb9bf5c37a3008d" name="aa58f237f6cea97ef0eb9bf5c37a3008d"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aa58f237f6cea97ef0eb9bf5c37a3008d">&#9670;&#160;</a></span>lzma_stream_buffer_decode()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_stream_buffer_decode </td>
- <td>(</td>
- <td class="paramtype">uint64_t *&#160;</td>
- <td class="paramname"><em>memlimit</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint32_t&#160;</td>
- <td class="paramname"><em>flags</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *&#160;</td>
- <td class="paramname"><em>allocator</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint8_t *&#160;</td>
- <td class="paramname"><em>in</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t *&#160;</td>
- <td class="paramname"><em>in_pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>in_size</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint8_t *&#160;</td>
- <td class="paramname"><em>out</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t *&#160;</td>
- <td class="paramname"><em>out_pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>out_size</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Single-call .xz Stream decoder. </p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir"></td><td class="paramname">memlimit</td><td>Pointer to how much memory the decoder is allowed to allocate. The value pointed by this pointer is modified if and only if LZMA_MEMLIMIT_ERROR is returned. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">flags</td><td>Bitwise-or of zero or more of the decoder flags: LZMA_TELL_NO_CHECK, LZMA_TELL_UNSUPPORTED_CHECK, LZMA_IGNORE_CHECK, LZMA_CONCATENATED, LZMA_FAIL_FAST. Note that LZMA_TELL_ANY_CHECK is not allowed and will return LZMA_PROG_ERROR. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">allocator</td><td><a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> for custom allocator functions. Set to NULL to use malloc() and free(). </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in</td><td>Beginning of the input buffer </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in_pos</td><td>The next byte will be read from in[*in_pos]. *in_pos is updated only if decoding succeeds. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in_size</td><td>Size of the input buffer; the first byte that won't be read is in[in_size]. </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">out</td><td>Beginning of the output buffer </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">out_pos</td><td>The next byte will be written to out[*out_pos]. *out_pos is updated only if decoding succeeds. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">out_size</td><td>Size of the out buffer; the first byte into which no data is written to is out[out_size].</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Decoding was successful.</li>
-<li>LZMA_FORMAT_ERROR</li>
-<li>LZMA_OPTIONS_ERROR</li>
-<li>LZMA_DATA_ERROR</li>
-<li>LZMA_NO_CHECK: This can be returned only if using the LZMA_TELL_NO_CHECK flag.</li>
-<li>LZMA_UNSUPPORTED_CHECK: This can be returned only if using the LZMA_TELL_UNSUPPORTED_CHECK flag.</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_MEMLIMIT_ERROR: Memory usage limit was reached. The minimum required memlimit value was stored to *memlimit.</li>
-<li>LZMA_BUF_ERROR: Output buffer was too small.</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="aa8372dae3e7c907c36f7bb5426aeacdf" name="aa8372dae3e7c907c36f7bb5426aeacdf"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aa8372dae3e7c907c36f7bb5426aeacdf">&#9670;&#160;</a></span>lzma_microlzma_decoder()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_microlzma_decoder </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint64_t&#160;</td>
- <td class="paramname"><em>comp_size</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint64_t&#160;</td>
- <td class="paramname"><em>uncomp_size</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="base_8h.html#abbc819c74b484c846825ae1388a50a59">lzma_bool</a>&#160;</td>
- <td class="paramname"><em>uncomp_size_is_exact</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint32_t&#160;</td>
- <td class="paramname"><em>dict_size</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>MicroLZMA decoder. </p>
-<p>See <a class="el" href="container_8h.html#abfc8f11acf837b167aa94b7071b54c30" title="MicroLZMA encoder.">lzma_microlzma_encoder()</a> for more information.</p>
-<p>The <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> usage with this decoder is completely normal. The special behavior of <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> applies to <a class="el" href="container_8h.html#abfc8f11acf837b167aa94b7071b54c30" title="MicroLZMA encoder.">lzma_microlzma_encoder()</a> only.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">strm</td><td>Pointer to <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> that is at least initialized with LZMA_STREAM_INIT. </td></tr>
- <tr><td class="paramname">comp_size</td><td>Compressed size of the MicroLZMA stream. The caller must somehow know this exactly. </td></tr>
- <tr><td class="paramname">uncomp_size</td><td>Uncompressed size of the MicroLZMA stream. If the exact uncompressed size isn't known, this can be set to a value that is at most as big as the exact uncompressed size would be, but then the next argument uncomp_size_is_exact must be false. </td></tr>
- <tr><td class="paramname">uncomp_size_is_exact</td><td>If true, uncomp_size must be exactly correct. This will improve error detection at the end of the stream. If the exact uncompressed size isn't known, this must be false. uncomp_size must still be at most as big as the exact uncompressed size is. Setting this to false when the exact size is known will work but error detection at the end of the stream will be weaker. </td></tr>
- <tr><td class="paramname">dict_size</td><td>LZMA dictionary size that was used when compressing the data. It is OK to use a bigger value too but liblzma will then allocate more memory than would actually be required and error detection will be slightly worse. (Note that with the implementation in XZ Embedded it doesn't affect the memory usage if one specifies bigger dictionary than actually required.)</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_OPTIONS_ERROR</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/delta_8h.html b/doc/api/delta_8h.html
deleted file mode 100644
index dd64be2..0000000
--- a/doc/api/delta_8h.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma/delta.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File&#160;List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div id="nav-path" class="navpath">
- <ul>
-<li class="navelem"><a class="el" href="dir_b17a1d403082bd69a703ed987cf158fb.html">lzma</a></li> </ul>
-</div>
-</div><!-- top -->
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> &#124;
-<a href="#define-members">Macros</a> &#124;
-<a href="#enum-members">Enumerations</a> </div>
- <div class="headertitle"><div class="title">delta.h File Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>Delta filter.
-<a href="#details">More...</a></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__options__delta.html">lzma_options_delta</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Options for the Delta filter. <a href="structlzma__options__delta.html#details">More...</a><br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
-Macros</h2></td></tr>
-<tr class="memitem:a7ced67235ad7a01ae31d32ecf1e634cb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="delta_8h.html#a7ced67235ad7a01ae31d32ecf1e634cb">LZMA_FILTER_DELTA</a>&#160;&#160;&#160;<a class="el" href="vli_8h.html#a2d8bf5322898bfa11945848420585881">LZMA_VLI_C</a>(0x03)</td></tr>
-<tr class="memdesc:a7ced67235ad7a01ae31d32ecf1e634cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Filter ID. <br /></td></tr>
-<tr class="separator:a7ced67235ad7a01ae31d32ecf1e634cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a466886d9d01392f61bdf267687a4f96e"><td class="memItemLeft" align="right" valign="top"><a id="a466886d9d01392f61bdf267687a4f96e" name="a466886d9d01392f61bdf267687a4f96e"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_DELTA_DIST_MIN</b>&#160;&#160;&#160;1</td></tr>
-<tr class="memdesc:a466886d9d01392f61bdf267687a4f96e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Minimum value for <a class="el" href="structlzma__options__delta.html#a31b4b0b5a2462cb9433c2663b8a62790" title="Delta distance.">lzma_options_delta.dist</a>. <br /></td></tr>
-<tr class="separator:a466886d9d01392f61bdf267687a4f96e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afdf8a5ce184ddf9f8070de637775da94"><td class="memItemLeft" align="right" valign="top"><a id="afdf8a5ce184ddf9f8070de637775da94" name="afdf8a5ce184ddf9f8070de637775da94"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_DELTA_DIST_MAX</b>&#160;&#160;&#160;256</td></tr>
-<tr class="memdesc:afdf8a5ce184ddf9f8070de637775da94"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum value for <a class="el" href="structlzma__options__delta.html#a31b4b0b5a2462cb9433c2663b8a62790" title="Delta distance.">lzma_options_delta.dist</a>. <br /></td></tr>
-<tr class="separator:afdf8a5ce184ddf9f8070de637775da94"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
-Enumerations</h2></td></tr>
-<tr class="memitem:a04d84d7fa6cefdc219b6e2e96ff36fe1"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="delta_8h.html#a04d84d7fa6cefdc219b6e2e96ff36fe1">lzma_delta_type</a> { <b>LZMA_DELTA_TYPE_BYTE</b>
- }</td></tr>
-<tr class="memdesc:a04d84d7fa6cefdc219b6e2e96ff36fe1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type of the delta calculation. <a href="delta_8h.html#a04d84d7fa6cefdc219b6e2e96ff36fe1">More...</a><br /></td></tr>
-<tr class="separator:a04d84d7fa6cefdc219b6e2e96ff36fe1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Delta filter. </p>
-<dl class="section note"><dt>Note</dt><dd>Never include this file directly. Use &lt;<a class="el" href="lzma_8h.html" title="The public API of liblzma data compression library.">lzma.h</a>&gt; instead. </dd></dl>
-</div><h2 class="groupheader">Macro Definition Documentation</h2>
-<a id="a7ced67235ad7a01ae31d32ecf1e634cb" name="a7ced67235ad7a01ae31d32ecf1e634cb"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a7ced67235ad7a01ae31d32ecf1e634cb">&#9670;&#160;</a></span>LZMA_FILTER_DELTA</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_FILTER_DELTA&#160;&#160;&#160;<a class="el" href="vli_8h.html#a2d8bf5322898bfa11945848420585881">LZMA_VLI_C</a>(0x03)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Filter ID. </p>
-<p>Filter ID of the Delta filter. This is used as <a class="el" href="structlzma__filter.html#aef1d9709759f39e61db77547b2326929" title="Filter ID.">lzma_filter.id</a>. </p>
-
-</div>
-</div>
-<h2 class="groupheader">Enumeration Type Documentation</h2>
-<a id="a04d84d7fa6cefdc219b6e2e96ff36fe1" name="a04d84d7fa6cefdc219b6e2e96ff36fe1"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a04d84d7fa6cefdc219b6e2e96ff36fe1">&#9670;&#160;</a></span>lzma_delta_type</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">enum <a class="el" href="delta_8h.html#a04d84d7fa6cefdc219b6e2e96ff36fe1">lzma_delta_type</a></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Type of the delta calculation. </p>
-<p>Currently only byte-wise delta is supported. Other possible types could be, for example, delta of 16/32/64-bit little/big endian integers, but these are not currently planned since byte-wise delta is almost as good. </p>
-
-</div>
-</div>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/dir_b17a1d403082bd69a703ed987cf158fb.html b/doc/api/dir_b17a1d403082bd69a703ed987cf158fb.html
deleted file mode 100644
index ff360ae..0000000
--- a/doc/api/dir_b17a1d403082bd69a703ed987cf158fb.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma Directory Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div id="nav-path" class="navpath">
- <ul>
-<li class="navelem"><a class="el" href="dir_b17a1d403082bd69a703ed987cf158fb.html">lzma</a></li> </ul>
-</div>
-</div><!-- top -->
-<div class="header">
- <div class="headertitle"><div class="title">lzma Directory Reference</div></div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="files" name="files"></a>
-Files</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="base_8h.html">base.h</a></td></tr>
-<tr class="memdesc:base_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Data types and functions used in many places in liblzma API. <br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bcj_8h.html">bcj.h</a></td></tr>
-<tr class="memdesc:bcj_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Branch/Call/Jump conversion filters. <br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="block_8h.html">block.h</a></td></tr>
-<tr class="memdesc:block_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">.xz Block handling <br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="check_8h.html">check.h</a></td></tr>
-<tr class="memdesc:check_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Integrity checks. <br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="container_8h.html">container.h</a></td></tr>
-<tr class="memdesc:container_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">File formats. <br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="delta_8h.html">delta.h</a></td></tr>
-<tr class="memdesc:delta_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delta filter. <br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html">filter.h</a></td></tr>
-<tr class="memdesc:filter_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Common filter related types and functions. <br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="hardware_8h.html">hardware.h</a></td></tr>
-<tr class="memdesc:hardware_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Hardware information. <br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html">index.h</a></td></tr>
-<tr class="memdesc:index_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handling of .xz Index and related information. <br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index__hash_8h.html">index_hash.h</a></td></tr>
-<tr class="memdesc:index__hash_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Validate Index by using a hash function. <br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lzma12_8h.html">lzma12.h</a></td></tr>
-<tr class="memdesc:lzma12_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">LZMA1 and LZMA2 filters. <br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stream__flags_8h.html">stream_flags.h</a></td></tr>
-<tr class="memdesc:stream__flags_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">.xz Stream Header and Stream Footer encoder and decoder <br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="version_8h.html">version.h</a></td></tr>
-<tr class="memdesc:version_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Version number. <br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="vli_8h.html">vli.h</a></td></tr>
-<tr class="memdesc:vli_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">Variable-length integer handling. <br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/doc.svg b/doc/api/doc.svg
deleted file mode 100644
index 296728b..0000000
--- a/doc/api/doc.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
- "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" width="16" height="24" viewBox="0 0 80 60" id="doc" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
-<g style="fill:#195794">
-<path d="m 14,-1.1445312 c -2.824372,0 -5.1445313,2.320159 -5.1445312,5.1445312 v 72 c 0,2.824372 2.3201592,5.144531 5.1445312,5.144531 h 52 c 2.824372,0 5.144531,-2.320159 5.144531,-5.144531 V 23.699219 a 1.1447968,1.1447968 0 0 0 -0.01563,-0.1875 C 70.977847,22.605363 70.406495,21.99048 70.007812,21.591797 L 48.208984,-0.20898438 C 47.606104,-0.81186474 46.804652,-1.1445313 46,-1.1445312 Z m 1.144531,6.2890624 H 42.855469 V 24 c 0,1.724372 1.420159,3.144531 3.144531,3.144531 H 64.855469 V 74.855469 H 15.144531 Z m 34,4.4179688 L 60.4375,20.855469 H 49.144531 Z"/>
-</g>
-<g style="fill:#BFD9F4;stroke-width:0">
-<path d="M 3.0307167,13.993174 V 7.0307167 h 2.7576792 2.7576792 v 1.8826151 c 0,1.2578262 0.0099,1.9287572 0.029818,2.0216512 0.03884,0.181105 0.168631,0.348218 0.33827,0.43554 l 0.1355017,0.06975 1.9598092,0.0079 1.959809,0.0078 v 4.749829 4.749829 H 8 3.0307167 Z" transform="matrix(5,0,0,5,0,-30)" />
-<path d="M 9.8293515,9.0581469 V 7.9456453 l 1.1058025,1.1055492 c 0.608191,0.6080521 1.105802,1.1086775 1.105802,1.1125015 0,0.0038 -0.497611,0.007 -1.105802,0.007 H 9.8293515 Z" transform="matrix(5,0,0,5,0,-30)" />
-</g>
-</svg>
diff --git a/doc/api/docd.svg b/doc/api/docd.svg
deleted file mode 100644
index 65cf4b5..0000000
--- a/doc/api/docd.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
- "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" width="16" height="24" viewBox="0 0 80 60" id="doc" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
-<g style="fill:#A0C7EE">
-<path d="m 14,-1.1445312 c -2.824372,0 -5.1445313,2.320159 -5.1445312,5.1445312 v 72 c 0,2.824372 2.3201592,5.144531 5.1445312,5.144531 h 52 c 2.824372,0 5.144531,-2.320159 5.144531,-5.144531 V 23.699219 a 1.1447968,1.1447968 0 0 0 -0.01563,-0.1875 C 70.977847,22.605363 70.406495,21.99048 70.007812,21.591797 L 48.208984,-0.20898438 C 47.606104,-0.81186474 46.804652,-1.1445313 46,-1.1445312 Z m 1.144531,6.2890624 H 42.855469 V 24 c 0,1.724372 1.420159,3.144531 3.144531,3.144531 H 64.855469 V 74.855469 H 15.144531 Z m 34,4.4179688 L 60.4375,20.855469 H 49.144531 Z"/>
-</g>
-<g style="fill:#195794;stroke-width:0">
-<path d="M 3.0307167,13.993174 V 7.0307167 h 2.7576792 2.7576792 v 1.8826151 c 0,1.2578262 0.0099,1.9287572 0.029818,2.0216512 0.03884,0.181105 0.168631,0.348218 0.33827,0.43554 l 0.1355017,0.06975 1.9598092,0.0079 1.959809,0.0078 v 4.749829 4.749829 H 8 3.0307167 Z" transform="matrix(5,0,0,5,0,-30)" />
-<path d="M 9.8293515,9.0581469 V 7.9456453 l 1.1058025,1.1055492 c 0.608191,0.6080521 1.105802,1.1086775 1.105802,1.1125015 0,0.0038 -0.497611,0.007 -1.105802,0.007 H 9.8293515 Z" transform="matrix(5,0,0,5,0,-30)" />
-</g>
-</svg>
diff --git a/doc/api/doxygen.css b/doc/api/doxygen.css
deleted file mode 100644
index 6ce2813..0000000
--- a/doc/api/doxygen.css
+++ /dev/null
@@ -1,2017 +0,0 @@
-/* The standard CSS for doxygen 1.9.7*/
-
-html {
-/* page base colors */
---page-background-color: white;
---page-foreground-color: black;
---page-link-color: #144779;
---page-visited-link-color: #195794;
-
-/* index */
---index-odd-item-bg-color: #F3F8FD;
---index-even-item-bg-color: white;
---index-header-color: black;
---index-separator-color: #A0A0A0;
-
-/* header */
---header-background-color: #F5F9FD;
---header-separator-color: #A0C7EE;
---header-gradient-image: url('nav_h.png');
---group-header-separator-color: #4491DE;
---group-header-color: #113B65;
---inherit-header-color: gray;
-
---footer-foreground-color: #0C2B4A;
---footer-logo-width: 104px;
---citation-label-color: #10375F;
---glow-color: cyan;
-
---title-background-color: white;
---title-separator-color: #1E67AF;
---directory-separator-color: #62A3E4;
---separator-color: #1B5D9E;
-
---blockquote-background-color: #F1F7FC;
---blockquote-border-color: #62A3E4;
-
---scrollbar-thumb-color: #62A3E4;
---scrollbar-background-color: #F5F9FD;
-
---icon-background-color: #257FD9;
---icon-foreground-color: white;
---icon-doc-image: url('doc.svg');
---icon-folder-open-image: url('folderopen.svg');
---icon-folder-closed-image: url('folderclosed.svg');
-
-/* brief member declaration list */
---memdecl-background-color: #F5F9FD;
---memdecl-separator-color: #C8DFF5;
---memdecl-foreground-color: #555;
---memdecl-template-color: #195794;
-
-/* detailed member list */
---memdef-border-color: #74ADE7;
---memdef-title-background-color: #D0E3F6;
---memdef-title-gradient-image: url('nav_f.png');
---memdef-proto-background-color: #CAE0F5;
---memdef-proto-text-color: #0A233D;
---memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
---memdef-doc-background-color: white;
---memdef-param-name-color: #602020;
---memdef-template-color: #195794;
-
-/* tables */
---table-cell-border-color: #0D2F50;
---table-header-background-color: #123E6A;
---table-header-foreground-color: #FFFFFF;
-
-/* labels */
---label-background-color: #257FD9;
---label-left-top-border-color: #1E67AF;
---label-right-bottom-border-color: #A0C7EE;
---label-foreground-color: white;
-
-/** navigation bar/tree/menu */
---nav-background-color: #F5F9FD;
---nav-foreground-color: #113C67;
---nav-gradient-image: url('tab_b.png');
---nav-gradient-hover-image: url('tab_h.png');
---nav-gradient-active-image: url('tab_a.png');
---nav-gradient-active-image-parent: url("../tab_a.png");
---nav-separator-image: url('tab_s.png');
---nav-breadcrumb-image: url('bc_s.png');
---nav-breadcrumb-border-color: #9CC5EE;
---nav-splitbar-image: url('splitbar.png');
---nav-font-size-level1: 13px;
---nav-font-size-level2: 10px;
---nav-font-size-level3: 9px;
---nav-text-normal-color: #0B2845;
---nav-text-hover-color: white;
---nav-text-active-color: white;
---nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
---nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
---nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
---nav-menu-button-color: #113C67;
---nav-menu-background-color: white;
---nav-menu-foreground-color: #555555;
---nav-menu-toggle-color: rgba(255, 255, 255, 0.5);
---nav-arrow-color: #62A3E4;
---nav-arrow-selected-color: #62A3E4;
-
-/* table of contents */
---toc-background-color: #EEF5FC;
---toc-border-color: #BFD9F4;
---toc-header-color: #195794;
---toc-down-arrow-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' height='10px' width='5px' fill='grey'><text x='0' y='5' font-size='10'>&%238595;</text></svg>");
-
-/** search field */
---search-background-color: white;
---search-foreground-color: #909090;
---search-magnification-image: url('mag.svg');
---search-magnification-select-image: url('mag_sel.svg');
---search-active-color: black;
---search-filter-background-color: #F5F9FD;
---search-filter-foreground-color: black;
---search-filter-border-color: #5098E0;
---search-filter-highlight-text-color: white;
---search-filter-highlight-bg-color: #144779;
---search-results-foreground-color: #174F86;
---search-results-background-color: #E2EEFA;
---search-results-border-color: black;
---search-box-shadow: inset 0.5px 0.5px 3px 0px #555;
-
-/** code fragments */
---code-keyword-color: #008000;
---code-type-keyword-color: #604020;
---code-flow-keyword-color: #E08000;
---code-comment-color: #800000;
---code-preprocessor-color: #806020;
---code-string-literal-color: #002080;
---code-char-literal-color: #008080;
---code-xml-cdata-color: black;
---code-vhdl-digit-color: #FF00FF;
---code-vhdl-char-color: #000000;
---code-vhdl-keyword-color: #700070;
---code-vhdl-logic-color: #FF0000;
---code-link-color: #195794;
---code-external-link-color: #195794;
---fragment-foreground-color: black;
---fragment-background-color: #F9FBFE;
---fragment-border-color: #A0C7EE;
---fragment-lineno-border-color: #00FF00;
---fragment-lineno-background-color: #E8E8E8;
---fragment-lineno-foreground-color: black;
---fragment-lineno-link-fg-color: #195794;
---fragment-lineno-link-bg-color: #D8D8D8;
---fragment-lineno-link-hover-fg-color: #195794;
---fragment-lineno-link-hover-bg-color: #C8C8C8;
---tooltip-foreground-color: black;
---tooltip-background-color: white;
---tooltip-border-color: gray;
---tooltip-doc-color: grey;
---tooltip-declaration-color: #006318;
---tooltip-link-color: #195794;
---tooltip-shadow: 1px 1px 7px gray;
-
-/** font-family */
---font-family-normal: Roboto,sans-serif;
---font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed;
---font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
---font-family-title: Tahoma,Arial,sans-serif;
---font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif;
---font-family-search: Arial,Verdana,sans-serif;
---font-family-icon: Arial,Helvetica;
---font-family-tooltip: Roboto,sans-serif;
-
-}
-
-@media (prefers-color-scheme: dark) {
- html:not(.dark-mode) {
- color-scheme: dark;
-
-/* page base colors */
---page-background-color: black;
---page-foreground-color: #C9D1D9;
---page-link-color: #5098E0;
---page-visited-link-color: #6DA9E5;
-
-/* index */
---index-odd-item-bg-color: #02070C;
---index-even-item-bg-color: black;
---index-header-color: #A0C7EE;
---index-separator-color: #10375F;
-
-/* header */
---header-background-color: #010407;
---header-separator-color: #040F1A;
---header-gradient-image: url('nav_hd.png');
---group-header-separator-color: #0B2845;
---group-header-color: #5098E0;
---inherit-header-color: #A0A0A0;
-
---footer-foreground-color: #206DBA;
---footer-logo-width: 60px;
---citation-label-color: #5098E0;
---glow-color: cyan;
-
---title-background-color: #010509;
---title-separator-color: #113A63;
---directory-separator-color: #0B2845;
---separator-color: #0B2845;
-
---blockquote-background-color: #030C14;
---blockquote-border-color: #0B2845;
-
---scrollbar-thumb-color: #0B2845;
---scrollbar-background-color: #010407;
-
---icon-background-color: #10375F;
---icon-foreground-color: #A0C7EE;
---icon-doc-image: url('docd.svg');
---icon-folder-open-image: url('folderopend.svg');
---icon-folder-closed-image: url('folderclosedd.svg');
-
-/* brief member declaration list */
---memdecl-background-color: #02070C;
---memdecl-separator-color: #0D2D4D;
---memdecl-foreground-color: #BBB;
---memdecl-template-color: #3488DC;
-
-/* detailed member list */
---memdef-border-color: #092138;
---memdef-title-background-color: #071829;
---memdef-title-gradient-image: url('nav_fd.png');
---memdef-proto-background-color: #061524;
---memdef-proto-text-color: #64A4E4;
---memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9);
---memdef-doc-background-color: black;
---memdef-param-name-color: #D28757;
---memdef-template-color: #3488DC;
-
-/* tables */
---table-cell-border-color: #0B2845;
---table-header-background-color: #0B2845;
---table-header-foreground-color: #A0C7EE;
-
-/* labels */
---label-background-color: #113B65;
---label-left-top-border-color: #195794;
---label-right-bottom-border-color: #0B2845;
---label-foreground-color: #CCCCCC;
-
-/** navigation bar/tree/menu */
---nav-background-color: #030C14;
---nav-foreground-color: #113C67;
---nav-gradient-image: url('tab_bd.png');
---nav-gradient-hover-image: url('tab_hd.png');
---nav-gradient-active-image: url('tab_ad.png');
---nav-gradient-active-image-parent: url("../tab_ad.png");
---nav-separator-image: url('tab_sd.png');
---nav-breadcrumb-image: url('bc_sd.png');
---nav-breadcrumb-border-color: #0C2B4A;
---nav-splitbar-image: url('splitbard.png');
---nav-font-size-level1: 13px;
---nav-font-size-level2: 10px;
---nav-font-size-level3: 9px;
---nav-text-normal-color: #8ABAEA;
---nav-text-hover-color: #C5DDF5;
---nav-text-active-color: #C5DDF5;
---nav-text-normal-shadow: 0px 1px 1px black;
---nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
---nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
---nav-menu-button-color: #8ABAEA;
---nav-menu-background-color: #000204;
---nav-menu-foreground-color: #BBBBBB;
---nav-menu-toggle-color: rgba(255, 255, 255, 0.2);
---nav-arrow-color: #10375F;
---nav-arrow-selected-color: #5098E0;
-
-/* table of contents */
---toc-background-color: #04101B;
---toc-border-color: #081D32;
---toc-header-color: #6DA9E5;
---toc-down-arrow-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' height='10px' width='5px'><text x='0' y='5' font-size='10' fill='grey'>&%238595;</text></svg>");
-
-/** search field */
---search-background-color: black;
---search-foreground-color: #C5C5C5;
---search-magnification-image: url('mag_d.svg');
---search-magnification-select-image: url('mag_seld.svg');
---search-active-color: #C5C5C5;
---search-filter-background-color: #030C14;
---search-filter-foreground-color: #5098E0;
---search-filter-border-color: #3488DC;
---search-filter-highlight-text-color: #93BFEC;
---search-filter-highlight-bg-color: #0B2845;
---search-results-background-color: #030C14;
---search-results-foreground-color: #5098E0;
---search-results-border-color: #3488DC;
---search-box-shadow: inset 0.5px 0.5px 3px 0px #0E3255;
-
-/** code fragments */
---code-keyword-color: #CC99CD;
---code-type-keyword-color: #AB99CD;
---code-flow-keyword-color: #E08000;
---code-comment-color: #717790;
---code-preprocessor-color: #65CABE;
---code-string-literal-color: #7EC699;
---code-char-literal-color: #00E0F0;
---code-xml-cdata-color: #C9D1D9;
---code-vhdl-digit-color: #FF00FF;
---code-vhdl-char-color: #000000;
---code-vhdl-keyword-color: #700070;
---code-vhdl-logic-color: #FF0000;
---code-link-color: #79C0FF;
---code-external-link-color: #79C0FF;
---fragment-foreground-color: #C9D1D9;
---fragment-background-color: black;
---fragment-border-color: #30363D;
---fragment-lineno-border-color: #30363D;
---fragment-lineno-background-color: black;
---fragment-lineno-foreground-color: #6E7681;
---fragment-lineno-link-fg-color: #6E7681;
---fragment-lineno-link-bg-color: #303030;
---fragment-lineno-link-hover-fg-color: #8E96A1;
---fragment-lineno-link-hover-bg-color: #505050;
---tooltip-foreground-color: #C9D1D9;
---tooltip-background-color: #202020;
---tooltip-border-color: #C9D1D9;
---tooltip-doc-color: #D9E1E9;
---tooltip-declaration-color: #20C348;
---tooltip-link-color: #79C0FF;
---tooltip-shadow: none;
-
-/** font-family */
---font-family-normal: Roboto,sans-serif;
---font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed;
---font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
---font-family-title: Tahoma,Arial,sans-serif;
---font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif;
---font-family-search: Arial,Verdana,sans-serif;
---font-family-icon: Arial,Helvetica;
---font-family-tooltip: Roboto,sans-serif;
-
-}}
-body {
- background-color: var(--page-background-color);
- color: var(--page-foreground-color);
-}
-
-body, table, div, p, dl {
- font-weight: 400;
- font-size: 14px;
- font-family: var(--font-family-normal);
- line-height: 22px;
-}
-
-/* @group Heading Levels */
-
-.title {
- font-weight: 400;
- font-size: 14px;
- font-family: var(--font-family-normal);
- line-height: 28px;
- font-size: 150%;
- font-weight: bold;
- margin: 10px 2px;
-}
-
-h1.groupheader {
- font-size: 150%;
-}
-
-h2.groupheader {
- border-bottom: 1px solid var(--group-header-separator-color);
- color: var(--group-header-color);
- font-size: 150%;
- font-weight: normal;
- margin-top: 1.75em;
- padding-top: 8px;
- padding-bottom: 4px;
- width: 100%;
-}
-
-h3.groupheader {
- font-size: 100%;
-}
-
-h1, h2, h3, h4, h5, h6 {
- -webkit-transition: text-shadow 0.5s linear;
- -moz-transition: text-shadow 0.5s linear;
- -ms-transition: text-shadow 0.5s linear;
- -o-transition: text-shadow 0.5s linear;
- transition: text-shadow 0.5s linear;
- margin-right: 15px;
-}
-
-h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
- text-shadow: 0 0 15px var(--glow-color);
-}
-
-dt {
- font-weight: bold;
-}
-
-p.startli, p.startdd {
- margin-top: 2px;
-}
-
-th p.starttd, th p.intertd, th p.endtd {
- font-size: 100%;
- font-weight: 700;
-}
-
-p.starttd {
- margin-top: 0px;
-}
-
-p.endli {
- margin-bottom: 0px;
-}
-
-p.enddd {
- margin-bottom: 4px;
-}
-
-p.endtd {
- margin-bottom: 2px;
-}
-
-p.interli {
-}
-
-p.interdd {
-}
-
-p.intertd {
-}
-
-/* @end */
-
-caption {
- font-weight: bold;
-}
-
-span.legend {
- font-size: 70%;
- text-align: center;
-}
-
-h3.version {
- font-size: 90%;
- text-align: center;
-}
-
-div.navtab {
- padding-right: 15px;
- text-align: right;
- line-height: 110%;
-}
-
-div.navtab table {
- border-spacing: 0;
-}
-
-td.navtab {
- padding-right: 6px;
- padding-left: 6px;
-}
-
-td.navtabHL {
- background-image: var(--nav-gradient-active-image);
- background-repeat:repeat-x;
- padding-right: 6px;
- padding-left: 6px;
-}
-
-td.navtabHL a, td.navtabHL a:visited {
- color: var(--nav-text-hover-color);
- text-shadow: var(--nav-text-hover-shadow);
-}
-
-a.navtab {
- font-weight: bold;
-}
-
-div.qindex{
- text-align: center;
- width: 100%;
- line-height: 140%;
- font-size: 130%;
- color: var(--index-separator-color);
-}
-
-dt.alphachar{
- font-size: 180%;
- font-weight: bold;
-}
-
-.alphachar a{
- color: var(--index-header-color);
-}
-
-.alphachar a:hover, .alphachar a:visited{
- text-decoration: none;
-}
-
-.classindex dl {
- padding: 25px;
- column-count:1
-}
-
-.classindex dd {
- display:inline-block;
- margin-left: 50px;
- width: 90%;
- line-height: 1.15em;
-}
-
-.classindex dl.even {
- background-color: var(--index-even-item-bg-color);
-}
-
-.classindex dl.odd {
- background-color: var(--index-odd-item-bg-color);
-}
-
-@media(min-width: 1120px) {
- .classindex dl {
- column-count:2
- }
-}
-
-@media(min-width: 1320px) {
- .classindex dl {
- column-count:3
- }
-}
-
-
-/* @group Link Styling */
-
-a {
- color: var(--page-link-color);
- font-weight: normal;
- text-decoration: none;
-}
-
-.contents a:visited {
- color: var(--page-visited-link-color);
-}
-
-a:hover {
- text-decoration: underline;
-}
-
-a.el {
- font-weight: bold;
-}
-
-a.elRef {
-}
-
-a.code, a.code:visited, a.line, a.line:visited {
- color: var(--code-link-color);
-}
-
-a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
- color: var(--code-external-link-color);
-}
-
-a.code.hl_class { /* style for links to class names in code snippets */ }
-a.code.hl_struct { /* style for links to struct names in code snippets */ }
-a.code.hl_union { /* style for links to union names in code snippets */ }
-a.code.hl_interface { /* style for links to interface names in code snippets */ }
-a.code.hl_protocol { /* style for links to protocol names in code snippets */ }
-a.code.hl_category { /* style for links to category names in code snippets */ }
-a.code.hl_exception { /* style for links to exception names in code snippets */ }
-a.code.hl_service { /* style for links to service names in code snippets */ }
-a.code.hl_singleton { /* style for links to singleton names in code snippets */ }
-a.code.hl_concept { /* style for links to concept names in code snippets */ }
-a.code.hl_namespace { /* style for links to namespace names in code snippets */ }
-a.code.hl_package { /* style for links to package names in code snippets */ }
-a.code.hl_define { /* style for links to macro names in code snippets */ }
-a.code.hl_function { /* style for links to function names in code snippets */ }
-a.code.hl_variable { /* style for links to variable names in code snippets */ }
-a.code.hl_typedef { /* style for links to typedef names in code snippets */ }
-a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ }
-a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ }
-a.code.hl_signal { /* style for links to Qt signal names in code snippets */ }
-a.code.hl_slot { /* style for links to Qt slot names in code snippets */ }
-a.code.hl_friend { /* style for links to friend names in code snippets */ }
-a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ }
-a.code.hl_property { /* style for links to property names in code snippets */ }
-a.code.hl_event { /* style for links to event names in code snippets */ }
-a.code.hl_sequence { /* style for links to sequence names in code snippets */ }
-a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ }
-
-/* @end */
-
-dl.el {
- margin-left: -1cm;
-}
-
-ul {
- overflow: visible;
-}
-
-ul.multicol {
- -moz-column-gap: 1em;
- -webkit-column-gap: 1em;
- column-gap: 1em;
- -moz-column-count: 3;
- -webkit-column-count: 3;
- column-count: 3;
- list-style-type: none;
-}
-
-#side-nav ul {
- overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */
-}
-
-#main-nav ul {
- overflow: visible; /* reset ul rule for the navigation bar drop down lists */
-}
-
-.fragment {
- text-align: left;
- direction: ltr;
- overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/
- overflow-y: hidden;
-}
-
-pre.fragment {
- border: 1px solid var(--fragment-border-color);
- background-color: var(--fragment-background-color);
- color: var(--fragment-foreground-color);
- padding: 4px 6px;
- margin: 4px 8px 4px 2px;
- overflow: auto;
- word-wrap: break-word;
- font-size: 9pt;
- line-height: 125%;
- font-family: var(--font-family-monospace);
- font-size: 105%;
-}
-
-div.fragment {
- padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/
- margin: 4px 8px 4px 2px;
- color: var(--fragment-foreground-color);
- background-color: var(--fragment-background-color);
- border: 1px solid var(--fragment-border-color);
-}
-
-div.line {
- font-family: var(--font-family-monospace);
- font-size: 13px;
- min-height: 13px;
- line-height: 1.2;
- text-wrap: unrestricted;
- white-space: -moz-pre-wrap; /* Moz */
- white-space: -pre-wrap; /* Opera 4-6 */
- white-space: -o-pre-wrap; /* Opera 7 */
- white-space: pre-wrap; /* CSS3 */
- word-wrap: break-word; /* IE 5.5+ */
- text-indent: -53px;
- padding-left: 53px;
- padding-bottom: 0px;
- margin: 0px;
- -webkit-transition-property: background-color, box-shadow;
- -webkit-transition-duration: 0.5s;
- -moz-transition-property: background-color, box-shadow;
- -moz-transition-duration: 0.5s;
- -ms-transition-property: background-color, box-shadow;
- -ms-transition-duration: 0.5s;
- -o-transition-property: background-color, box-shadow;
- -o-transition-duration: 0.5s;
- transition-property: background-color, box-shadow;
- transition-duration: 0.5s;
-}
-
-div.line:after {
- content:"\000A";
- white-space: pre;
-}
-
-div.line.glow {
- background-color: var(--glow-color);
- box-shadow: 0 0 10px var(--glow-color);
-}
-
-
-span.lineno {
- padding-right: 4px;
- margin-right: 9px;
- text-align: right;
- border-right: 2px solid var(--fragment-lineno-border-color);
- color: var(--fragment-lineno-foreground-color);
- background-color: var(--fragment-lineno-background-color);
- white-space: pre;
-}
-span.lineno a, span.lineno a:visited {
- color: var(--fragment-lineno-link-fg-color);
- background-color: var(--fragment-lineno-link-bg-color);
-}
-
-span.lineno a:hover {
- color: var(--fragment-lineno-link-hover-fg-color);
- background-color: var(--fragment-lineno-link-hover-bg-color);
-}
-
-.lineno {
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
-
-div.classindex ul {
- list-style: none;
- padding-left: 0;
-}
-
-div.classindex span.ai {
- display: inline-block;
-}
-
-div.groupHeader {
- margin-left: 16px;
- margin-top: 12px;
- font-weight: bold;
-}
-
-div.groupText {
- margin-left: 16px;
- font-style: italic;
-}
-
-body {
- color: var(--page-foreground-color);
- margin: 0;
-}
-
-div.contents {
- margin-top: 10px;
- margin-left: 12px;
- margin-right: 8px;
-}
-
-p.formulaDsp {
- text-align: center;
-}
-
-img.dark-mode-visible {
- display: none;
-}
-img.light-mode-visible {
- display: none;
-}
-
-img.formulaDsp {
-
-}
-
-img.formulaInl, img.inline {
- vertical-align: middle;
-}
-
-div.center {
- text-align: center;
- margin-top: 0px;
- margin-bottom: 0px;
- padding: 0px;
-}
-
-div.center img {
- border: 0px;
-}
-
-address.footer {
- text-align: right;
- padding-right: 12px;
-}
-
-img.footer {
- border: 0px;
- vertical-align: middle;
- width: var(--footer-logo-width);
-}
-
-.compoundTemplParams {
- color: var(--memdecl-template-color);
- font-size: 80%;
- line-height: 120%;
-}
-
-/* @group Code Colorization */
-
-span.keyword {
- color: var(--code-keyword-color);
-}
-
-span.keywordtype {
- color: var(--code-type-keyword-color);
-}
-
-span.keywordflow {
- color: var(--code-flow-keyword-color);
-}
-
-span.comment {
- color: var(--code-comment-color);
-}
-
-span.preprocessor {
- color: var(--code-preprocessor-color);
-}
-
-span.stringliteral {
- color: var(--code-string-literal-color);
-}
-
-span.charliteral {
- color: var(--code-char-literal-color);
-}
-
-span.xmlcdata {
- color: var(--code-xml-cdata-color);
-}
-
-span.vhdldigit {
- color: var(--code-vhdl-digit-color);
-}
-
-span.vhdlchar {
- color: var(--code-vhdl-char-color);
-}
-
-span.vhdlkeyword {
- color: var(--code-vhdl-keyword-color);
-}
-
-span.vhdllogic {
- color: var(--code-vhdl-logic-color);
-}
-
-blockquote {
- background-color: var(--blockquote-background-color);
- border-left: 2px solid var(--blockquote-border-color);
- margin: 0 24px 0 4px;
- padding: 0 12px 0 16px;
-}
-
-/* @end */
-
-td.tiny {
- font-size: 75%;
-}
-
-.dirtab {
- padding: 4px;
- border-collapse: collapse;
- border: 1px solid var(--table-cell-border-color);
-}
-
-th.dirtab {
- background-color: var(--table-header-background-color);
- color: var(--table-header-foreground-color);
- font-weight: bold;
-}
-
-hr {
- height: 0px;
- border: none;
- border-top: 1px solid var(--separator-color);
-}
-
-hr.footer {
- height: 1px;
-}
-
-/* @group Member Descriptions */
-
-table.memberdecls {
- border-spacing: 0px;
- padding: 0px;
-}
-
-.memberdecls td, .fieldtable tr {
- -webkit-transition-property: background-color, box-shadow;
- -webkit-transition-duration: 0.5s;
- -moz-transition-property: background-color, box-shadow;
- -moz-transition-duration: 0.5s;
- -ms-transition-property: background-color, box-shadow;
- -ms-transition-duration: 0.5s;
- -o-transition-property: background-color, box-shadow;
- -o-transition-duration: 0.5s;
- transition-property: background-color, box-shadow;
- transition-duration: 0.5s;
-}
-
-.memberdecls td.glow, .fieldtable tr.glow {
- background-color: var(--glow-color);
- box-shadow: 0 0 15px var(--glow-color);
-}
-
-.mdescLeft, .mdescRight,
-.memItemLeft, .memItemRight,
-.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
- background-color: var(--memdecl-background-color);
- border: none;
- margin: 4px;
- padding: 1px 0 0 8px;
-}
-
-.mdescLeft, .mdescRight {
- padding: 0px 8px 4px 8px;
- color: var(--memdecl-foreground-color);
-}
-
-.memSeparator {
- border-bottom: 1px solid var(--memdecl-separator-color);
- line-height: 1px;
- margin: 0px;
- padding: 0px;
-}
-
-.memItemLeft, .memTemplItemLeft {
- white-space: nowrap;
-}
-
-.memItemRight, .memTemplItemRight {
- width: 100%;
-}
-
-.memTemplParams {
- color: var(--memdecl-template-color);
- white-space: nowrap;
- font-size: 80%;
-}
-
-/* @end */
-
-/* @group Member Details */
-
-/* Styles for detailed member documentation */
-
-.memtitle {
- padding: 8px;
- border-top: 1px solid var(--memdef-border-color);
- border-left: 1px solid var(--memdef-border-color);
- border-right: 1px solid var(--memdef-border-color);
- border-top-right-radius: 4px;
- border-top-left-radius: 4px;
- margin-bottom: -1px;
- background-image: var(--memdef-title-gradient-image);
- background-repeat: repeat-x;
- background-color: var(--memdef-title-background-color);
- line-height: 1.25;
- font-weight: 300;
- float:left;
-}
-
-.permalink
-{
- font-size: 65%;
- display: inline-block;
- vertical-align: middle;
-}
-
-.memtemplate {
- font-size: 80%;
- color: var(--memdef-template-color);
- font-weight: normal;
- margin-left: 9px;
-}
-
-.mempage {
- width: 100%;
-}
-
-.memitem {
- padding: 0;
- margin-bottom: 10px;
- margin-right: 5px;
- -webkit-transition: box-shadow 0.5s linear;
- -moz-transition: box-shadow 0.5s linear;
- -ms-transition: box-shadow 0.5s linear;
- -o-transition: box-shadow 0.5s linear;
- transition: box-shadow 0.5s linear;
- display: table !important;
- width: 100%;
-}
-
-.memitem.glow {
- box-shadow: 0 0 15px var(--glow-color);
-}
-
-.memname {
- font-weight: 400;
- margin-left: 6px;
-}
-
-.memname td {
- vertical-align: bottom;
-}
-
-.memproto, dl.reflist dt {
- border-top: 1px solid var(--memdef-border-color);
- border-left: 1px solid var(--memdef-border-color);
- border-right: 1px solid var(--memdef-border-color);
- padding: 6px 0px 6px 0px;
- color: var(--memdef-proto-text-color);
- font-weight: bold;
- text-shadow: var(--memdef-proto-text-shadow);
- background-color: var(--memdef-proto-background-color);
- box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
- border-top-right-radius: 4px;
-}
-
-.overload {
- font-family: var(--font-family-monospace);
- font-size: 65%;
-}
-
-.memdoc, dl.reflist dd {
- border-bottom: 1px solid var(--memdef-border-color);
- border-left: 1px solid var(--memdef-border-color);
- border-right: 1px solid var(--memdef-border-color);
- padding: 6px 10px 2px 10px;
- border-top-width: 0;
- background-image:url('nav_g.png');
- background-repeat:repeat-x;
- background-color: var(--memdef-doc-background-color);
- /* opera specific markup */
- border-bottom-left-radius: 4px;
- border-bottom-right-radius: 4px;
- box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
- /* firefox specific markup */
- -moz-border-radius-bottomleft: 4px;
- -moz-border-radius-bottomright: 4px;
- -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
- /* webkit specific markup */
- -webkit-border-bottom-left-radius: 4px;
- -webkit-border-bottom-right-radius: 4px;
- -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-}
-
-dl.reflist dt {
- padding: 5px;
-}
-
-dl.reflist dd {
- margin: 0px 0px 10px 0px;
- padding: 5px;
-}
-
-.paramkey {
- text-align: right;
-}
-
-.paramtype {
- white-space: nowrap;
-}
-
-.paramname {
- color: var(--memdef-param-name-color);
- white-space: nowrap;
-}
-.paramname em {
- font-style: normal;
-}
-.paramname code {
- line-height: 14px;
-}
-
-.params, .retval, .exception, .tparams {
- margin-left: 0px;
- padding-left: 0px;
-}
-
-.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname {
- font-weight: bold;
- vertical-align: top;
-}
-
-.params .paramtype, .tparams .paramtype {
- font-style: italic;
- vertical-align: top;
-}
-
-.params .paramdir, .tparams .paramdir {
- font-family: var(--font-family-monospace);
- vertical-align: top;
-}
-
-table.mlabels {
- border-spacing: 0px;
-}
-
-td.mlabels-left {
- width: 100%;
- padding: 0px;
-}
-
-td.mlabels-right {
- vertical-align: bottom;
- padding: 0px;
- white-space: nowrap;
-}
-
-span.mlabels {
- margin-left: 8px;
-}
-
-span.mlabel {
- background-color: var(--label-background-color);
- border-top:1px solid var(--label-left-top-border-color);
- border-left:1px solid var(--label-left-top-border-color);
- border-right:1px solid var(--label-right-bottom-border-color);
- border-bottom:1px solid var(--label-right-bottom-border-color);
- text-shadow: none;
- color: var(--label-foreground-color);
- margin-right: 4px;
- padding: 2px 3px;
- border-radius: 3px;
- font-size: 7pt;
- white-space: nowrap;
- vertical-align: middle;
-}
-
-
-
-/* @end */
-
-/* these are for tree view inside a (index) page */
-
-div.directory {
- margin: 10px 0px;
- border-top: 1px solid var(--directory-separator-color);
- border-bottom: 1px solid var(--directory-separator-color);
- width: 100%;
-}
-
-.directory table {
- border-collapse:collapse;
-}
-
-.directory td {
- margin: 0px;
- padding: 0px;
- vertical-align: top;
-}
-
-.directory td.entry {
- white-space: nowrap;
- padding-right: 6px;
- padding-top: 3px;
-}
-
-.directory td.entry a {
- outline:none;
-}
-
-.directory td.entry a img {
- border: none;
-}
-
-.directory td.desc {
- width: 100%;
- padding-left: 6px;
- padding-right: 6px;
- padding-top: 3px;
- border-left: 1px solid rgba(0,0,0,0.05);
-}
-
-.directory tr.odd {
- padding-left: 6px;
- background-color: var(--index-odd-item-bg-color);
-}
-
-.directory tr.even {
- padding-left: 6px;
- background-color: var(--index-even-item-bg-color);
-}
-
-.directory img {
- vertical-align: -30%;
-}
-
-.directory .levels {
- white-space: nowrap;
- width: 100%;
- text-align: right;
- font-size: 9pt;
-}
-
-.directory .levels span {
- cursor: pointer;
- padding-left: 2px;
- padding-right: 2px;
- color: var(--page-link-color);
-}
-
-.arrow {
- color: var(--nav-arrow-color);
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- cursor: pointer;
- font-size: 80%;
- display: inline-block;
- width: 16px;
- height: 22px;
-}
-
-.icon {
- font-family: var(--font-family-icon);
- line-height: normal;
- font-weight: bold;
- font-size: 12px;
- height: 14px;
- width: 16px;
- display: inline-block;
- background-color: var(--icon-background-color);
- color: var(--icon-foreground-color);
- text-align: center;
- border-radius: 4px;
- margin-left: 2px;
- margin-right: 2px;
-}
-
-.icona {
- width: 24px;
- height: 22px;
- display: inline-block;
-}
-
-.iconfopen {
- width: 24px;
- height: 18px;
- margin-bottom: 4px;
- background-image:var(--icon-folder-open-image);
- background-repeat: repeat-y;
- vertical-align:top;
- display: inline-block;
-}
-
-.iconfclosed {
- width: 24px;
- height: 18px;
- margin-bottom: 4px;
- background-image:var(--icon-folder-closed-image);
- background-repeat: repeat-y;
- vertical-align:top;
- display: inline-block;
-}
-
-.icondoc {
- width: 24px;
- height: 18px;
- margin-bottom: 4px;
- background-image:var(--icon-doc-image);
- background-position: 0px -4px;
- background-repeat: repeat-y;
- vertical-align:top;
- display: inline-block;
-}
-
-/* @end */
-
-div.dynheader {
- margin-top: 8px;
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
-
-address {
- font-style: normal;
- color: var(--footer-foreground-color);
-}
-
-table.doxtable caption {
- caption-side: top;
-}
-
-table.doxtable {
- border-collapse:collapse;
- margin-top: 4px;
- margin-bottom: 4px;
-}
-
-table.doxtable td, table.doxtable th {
- border: 1px solid var(--table-cell-border-color);
- padding: 3px 7px 2px;
-}
-
-table.doxtable th {
- background-color: var(--table-header-background-color);
- color: var(--table-header-foreground-color);
- font-size: 110%;
- padding-bottom: 4px;
- padding-top: 5px;
-}
-
-table.fieldtable {
- margin-bottom: 10px;
- border: 1px solid var(--memdef-border-color);
- border-spacing: 0px;
- border-radius: 4px;
- box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
-}
-
-.fieldtable td, .fieldtable th {
- padding: 3px 7px 2px;
-}
-
-.fieldtable td.fieldtype, .fieldtable td.fieldname {
- white-space: nowrap;
- border-right: 1px solid var(--memdef-border-color);
- border-bottom: 1px solid var(--memdef-border-color);
- vertical-align: top;
-}
-
-.fieldtable td.fieldname {
- padding-top: 3px;
-}
-
-.fieldtable td.fielddoc {
- border-bottom: 1px solid var(--memdef-border-color);
-}
-
-.fieldtable td.fielddoc p:first-child {
- margin-top: 0px;
-}
-
-.fieldtable td.fielddoc p:last-child {
- margin-bottom: 2px;
-}
-
-.fieldtable tr:last-child td {
- border-bottom: none;
-}
-
-.fieldtable th {
- background-image: var(--memdef-title-gradient-image);
- background-repeat:repeat-x;
- background-color: var(--memdef-title-background-color);
- font-size: 90%;
- color: var(--memdef-proto-text-color);
- padding-bottom: 4px;
- padding-top: 5px;
- text-align:left;
- font-weight: 400;
- border-top-left-radius: 4px;
- border-top-right-radius: 4px;
- border-bottom: 1px solid var(--memdef-border-color);
-}
-
-
-.tabsearch {
- top: 0px;
- left: 10px;
- height: 36px;
- background-image: var(--nav-gradient-image);
- z-index: 101;
- overflow: hidden;
- font-size: 13px;
-}
-
-.navpath ul
-{
- font-size: 11px;
- background-image: var(--nav-gradient-image);
- background-repeat:repeat-x;
- background-position: 0 -5px;
- height:30px;
- line-height:30px;
- color:var(--nav-text-normal-color);
- border:solid 1px var(--nav-breadcrumb-border-color);
- overflow:hidden;
- margin:0px;
- padding:0px;
-}
-
-.navpath li
-{
- list-style-type:none;
- float:left;
- padding-left:10px;
- padding-right:15px;
- background-image:var(--nav-breadcrumb-image);
- background-repeat:no-repeat;
- background-position:right;
- color: var(--nav-foreground-color);
-}
-
-.navpath li.navelem a
-{
- height:32px;
- display:block;
- text-decoration: none;
- outline: none;
- color: var(--nav-text-normal-color);
- font-family: var(--font-family-nav);
- text-shadow: var(--nav-text-normal-shadow);
- text-decoration: none;
-}
-
-.navpath li.navelem a:hover
-{
- color: var(--nav-text-hover-color);
- text-shadow: var(--nav-text-hover-shadow);
-}
-
-.navpath li.footer
-{
- list-style-type:none;
- float:right;
- padding-left:10px;
- padding-right:15px;
- background-image:none;
- background-repeat:no-repeat;
- background-position:right;
- color: var(--footer-foreground-color);
- font-size: 8pt;
-}
-
-
-div.summary
-{
- float: right;
- font-size: 8pt;
- padding-right: 5px;
- width: 50%;
- text-align: right;
-}
-
-div.summary a
-{
- white-space: nowrap;
-}
-
-table.classindex
-{
- margin: 10px;
- white-space: nowrap;
- margin-left: 3%;
- margin-right: 3%;
- width: 94%;
- border: 0;
- border-spacing: 0;
- padding: 0;
-}
-
-div.ingroups
-{
- font-size: 8pt;
- width: 50%;
- text-align: left;
-}
-
-div.ingroups a
-{
- white-space: nowrap;
-}
-
-div.header
-{
- background-image: var(--header-gradient-image);
- background-repeat:repeat-x;
- background-color: var(--header-background-color);
- margin: 0px;
- border-bottom: 1px solid var(--header-separator-color);
-}
-
-div.headertitle
-{
- padding: 5px 5px 5px 10px;
-}
-
-.PageDocRTL-title div.headertitle {
- text-align: right;
- direction: rtl;
-}
-
-dl {
- padding: 0 0 0 0;
-}
-
-/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */
-dl.section {
- margin-left: 0px;
- padding-left: 0px;
-}
-
-dl.note {
- margin-left: -7px;
- padding-left: 3px;
- border-left: 4px solid;
- border-color: #D0C000;
-}
-
-dl.warning, dl.attention {
- margin-left: -7px;
- padding-left: 3px;
- border-left: 4px solid;
- border-color: #FF0000;
-}
-
-dl.pre, dl.post, dl.invariant {
- margin-left: -7px;
- padding-left: 3px;
- border-left: 4px solid;
- border-color: #00D000;
-}
-
-dl.deprecated {
- margin-left: -7px;
- padding-left: 3px;
- border-left: 4px solid;
- border-color: #505050;
-}
-
-dl.todo {
- margin-left: -7px;
- padding-left: 3px;
- border-left: 4px solid;
- border-color: #00C0E0;
-}
-
-dl.test {
- margin-left: -7px;
- padding-left: 3px;
- border-left: 4px solid;
- border-color: #3030E0;
-}
-
-dl.bug {
- margin-left: -7px;
- padding-left: 3px;
- border-left: 4px solid;
- border-color: #C08050;
-}
-
-dl.section dd {
- margin-bottom: 6px;
-}
-
-
-#projectrow
-{
- height: 56px;
-}
-
-#projectlogo
-{
- text-align: center;
- vertical-align: bottom;
- border-collapse: separate;
-}
-
-#projectlogo img
-{
- border: 0px none;
-}
-
-#projectalign
-{
- vertical-align: middle;
- padding-left: 0.5em;
-}
-
-#projectname
-{
- font-size: 200%;
- font-family: var(--font-family-title);
- margin: 0px;
- padding: 2px 0px;
-}
-
-#projectbrief
-{
- font-size: 90%;
- font-family: var(--font-family-title);
- margin: 0px;
- padding: 0px;
-}
-
-#projectnumber
-{
- font-size: 50%;
- font-family: 50% var(--font-family-title);
- margin: 0px;
- padding: 0px;
-}
-
-#titlearea
-{
- padding: 0px;
- margin: 0px;
- width: 100%;
- border-bottom: 1px solid var(--title-separator-color);
- background-color: var(--title-background-color);
-}
-
-.image
-{
- text-align: center;
-}
-
-.dotgraph
-{
- text-align: center;
-}
-
-.mscgraph
-{
- text-align: center;
-}
-
-.plantumlgraph
-{
- text-align: center;
-}
-
-.diagraph
-{
- text-align: center;
-}
-
-.caption
-{
- font-weight: bold;
-}
-
-dl.citelist {
- margin-bottom:50px;
-}
-
-dl.citelist dt {
- color:var(--citation-label-color);
- float:left;
- font-weight:bold;
- margin-right:10px;
- padding:5px;
- text-align:right;
- width:52px;
-}
-
-dl.citelist dd {
- margin:2px 0 2px 72px;
- padding:5px 0;
-}
-
-div.toc {
- padding: 14px 25px;
- background-color: var(--toc-background-color);
- border: 1px solid var(--toc-border-color);
- border-radius: 7px 7px 7px 7px;
- float: right;
- height: auto;
- margin: 0 8px 10px 10px;
- width: 200px;
-}
-
-div.toc li {
- background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent;
- font: 10px/1.2 var(--font-family-toc);
- margin-top: 5px;
- padding-left: 10px;
- padding-top: 2px;
-}
-
-div.toc h3 {
- font: bold 12px/1.2 var(--font-family-toc);
- color: var(--toc-header-color);
- border-bottom: 0 none;
- margin: 0;
-}
-
-div.toc ul {
- list-style: none outside none;
- border: medium none;
- padding: 0px;
-}
-
-div.toc li.level1 {
- margin-left: 0px;
-}
-
-div.toc li.level2 {
- margin-left: 15px;
-}
-
-div.toc li.level3 {
- margin-left: 15px;
-}
-
-div.toc li.level4 {
- margin-left: 15px;
-}
-
-span.emoji {
- /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html
- * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort;
- */
-}
-
-span.obfuscator {
- display: none;
-}
-
-.inherit_header {
- font-weight: bold;
- color: var(--inherit-header-color);
- cursor: pointer;
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
-
-.inherit_header td {
- padding: 6px 0px 2px 5px;
-}
-
-.inherit {
- display: none;
-}
-
-tr.heading h2 {
- margin-top: 12px;
- margin-bottom: 4px;
-}
-
-/* tooltip related style info */
-
-.ttc {
- position: absolute;
- display: none;
-}
-
-#powerTip {
- cursor: default;
- /*white-space: nowrap;*/
- color: var(--tooltip-foreground-color);
- background-color: var(--tooltip-background-color);
- border: 1px solid var(--tooltip-border-color);
- border-radius: 4px 4px 4px 4px;
- box-shadow: var(--tooltip-shadow);
- display: none;
- font-size: smaller;
- max-width: 80%;
- opacity: 0.9;
- padding: 1ex 1em 1em;
- position: absolute;
- z-index: 2147483647;
-}
-
-#powerTip div.ttdoc {
- color: var(--tooltip-doc-color);
- font-style: italic;
-}
-
-#powerTip div.ttname a {
- font-weight: bold;
-}
-
-#powerTip a {
- color: var(--tooltip-link-color);
-}
-
-#powerTip div.ttname {
- font-weight: bold;
-}
-
-#powerTip div.ttdeci {
- color: var(--tooltip-declaration-color);
-}
-
-#powerTip div {
- margin: 0px;
- padding: 0px;
- font-size: 12px;
- font-family: var(--font-family-tooltip);
- line-height: 16px;
-}
-
-#powerTip:before, #powerTip:after {
- content: "";
- position: absolute;
- margin: 0px;
-}
-
-#powerTip.n:after, #powerTip.n:before,
-#powerTip.s:after, #powerTip.s:before,
-#powerTip.w:after, #powerTip.w:before,
-#powerTip.e:after, #powerTip.e:before,
-#powerTip.ne:after, #powerTip.ne:before,
-#powerTip.se:after, #powerTip.se:before,
-#powerTip.nw:after, #powerTip.nw:before,
-#powerTip.sw:after, #powerTip.sw:before {
- border: solid transparent;
- content: " ";
- height: 0;
- width: 0;
- position: absolute;
-}
-
-#powerTip.n:after, #powerTip.s:after,
-#powerTip.w:after, #powerTip.e:after,
-#powerTip.nw:after, #powerTip.ne:after,
-#powerTip.sw:after, #powerTip.se:after {
- border-color: rgba(255, 255, 255, 0);
-}
-
-#powerTip.n:before, #powerTip.s:before,
-#powerTip.w:before, #powerTip.e:before,
-#powerTip.nw:before, #powerTip.ne:before,
-#powerTip.sw:before, #powerTip.se:before {
- border-color: rgba(128, 128, 128, 0);
-}
-
-#powerTip.n:after, #powerTip.n:before,
-#powerTip.ne:after, #powerTip.ne:before,
-#powerTip.nw:after, #powerTip.nw:before {
- top: 100%;
-}
-
-#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
- border-top-color: var(--tooltip-background-color);
- border-width: 10px;
- margin: 0px -10px;
-}
-#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before {
- border-top-color: var(--tooltip-border-color);
- border-width: 11px;
- margin: 0px -11px;
-}
-#powerTip.n:after, #powerTip.n:before {
- left: 50%;
-}
-
-#powerTip.nw:after, #powerTip.nw:before {
- right: 14px;
-}
-
-#powerTip.ne:after, #powerTip.ne:before {
- left: 14px;
-}
-
-#powerTip.s:after, #powerTip.s:before,
-#powerTip.se:after, #powerTip.se:before,
-#powerTip.sw:after, #powerTip.sw:before {
- bottom: 100%;
-}
-
-#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
- border-bottom-color: var(--tooltip-background-color);
- border-width: 10px;
- margin: 0px -10px;
-}
-
-#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
- border-bottom-color: var(--tooltip-border-color);
- border-width: 11px;
- margin: 0px -11px;
-}
-
-#powerTip.s:after, #powerTip.s:before {
- left: 50%;
-}
-
-#powerTip.sw:after, #powerTip.sw:before {
- right: 14px;
-}
-
-#powerTip.se:after, #powerTip.se:before {
- left: 14px;
-}
-
-#powerTip.e:after, #powerTip.e:before {
- left: 100%;
-}
-#powerTip.e:after {
- border-left-color: var(--tooltip-border-color);
- border-width: 10px;
- top: 50%;
- margin-top: -10px;
-}
-#powerTip.e:before {
- border-left-color: var(--tooltip-border-color);
- border-width: 11px;
- top: 50%;
- margin-top: -11px;
-}
-
-#powerTip.w:after, #powerTip.w:before {
- right: 100%;
-}
-#powerTip.w:after {
- border-right-color: var(--tooltip-border-color);
- border-width: 10px;
- top: 50%;
- margin-top: -10px;
-}
-#powerTip.w:before {
- border-right-color: var(--tooltip-border-color);
- border-width: 11px;
- top: 50%;
- margin-top: -11px;
-}
-
-@media print
-{
- #top { display: none; }
- #side-nav { display: none; }
- #nav-path { display: none; }
- body { overflow:visible; }
- h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
- .summary { display: none; }
- .memitem { page-break-inside: avoid; }
- #doc-content
- {
- margin-left:0 !important;
- height:auto !important;
- width:auto !important;
- overflow:inherit;
- display:inline;
- }
-}
-
-/* @group Markdown */
-
-table.markdownTable {
- border-collapse:collapse;
- margin-top: 4px;
- margin-bottom: 4px;
-}
-
-table.markdownTable td, table.markdownTable th {
- border: 1px solid var(--table-cell-border-color);
- padding: 3px 7px 2px;
-}
-
-table.markdownTable tr {
-}
-
-th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {
- background-color: var(--table-header-background-color);
- color: var(--table-header-foreground-color);
- font-size: 110%;
- padding-bottom: 4px;
- padding-top: 5px;
-}
-
-th.markdownTableHeadLeft, td.markdownTableBodyLeft {
- text-align: left
-}
-
-th.markdownTableHeadRight, td.markdownTableBodyRight {
- text-align: right
-}
-
-th.markdownTableHeadCenter, td.markdownTableBodyCenter {
- text-align: center
-}
-
-tt, code, kbd, samp
-{
- display: inline-block;
-}
-/* @end */
-
-u {
- text-decoration: underline;
-}
-
-details>summary {
- list-style-type: none;
-}
-
-details > summary::-webkit-details-marker {
- display: none;
-}
-
-details>summary::before {
- content: "\25ba";
- padding-right:4px;
- font-size: 80%;
-}
-
-details[open]>summary::before {
- content: "\25bc";
- padding-right:4px;
- font-size: 80%;
-}
-
-body {
- scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color);
-}
-
-::-webkit-scrollbar {
- background-color: var(--scrollbar-background-color);
- height: 12px;
- width: 12px;
-}
-::-webkit-scrollbar-thumb {
- border-radius: 6px;
- box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color);
- border: solid 2px transparent;
-}
-::-webkit-scrollbar-corner {
- background-color: var(--scrollbar-background-color);
-}
-
diff --git a/doc/api/doxygen.svg b/doc/api/doxygen.svg
deleted file mode 100644
index 363aa45..0000000
--- a/doc/api/doxygen.svg
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
- "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" viewBox="0 0 104 31" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
- <defs>
- <linearGradient id="a">
- <stop stop-color="#1E67AF" offset="0"/>
- <stop stop-color="#3488DC" offset="1"/>
- </linearGradient>
- <linearGradient id="d" x1="31.474" x2="31.474" y1="24.821" y2="26.773" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
- <linearGradient id="c" x1="31.474" x2="31.474" y1="24.821" y2="26.773" gradientTransform="matrix(.6816 0 0 1.0248 72.391 -.91809)" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
- <linearGradient id="b" x1="56.295" x2="56.295" y1="24.622" y2="26.574" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
- <linearGradient id="e" x1="49.067" x2="48.956" y1="19.719" y2="9.5227" gradientTransform="matrix(.97968 0 0 1.0207 -.25579 -.25579)" gradientUnits="userSpaceOnUse">
- <stop stop-color="#98C3ED" offset="0"/>
- <stop stop-color="#E2EEFA" offset="1"/>
- </linearGradient>
- <filter id="f" x="-.010676" y="-.045304" width="1.0214" height="1.0906" color-interpolation-filters="sRGB">
- <feGaussianBlur stdDeviation="0.45293203"/>
- </filter>
- </defs>
- <g>
- <path transform="translate(-2.5759 -27.848)" d="m13.609 32.203v6.8633h-0.05078c-0.40533-0.66867-0.96254-1.1715-1.6719-1.5059-0.69244-0.35193-1.4282-0.52734-2.2051-0.52734-0.96267 0-1.807 0.2027-2.5332 0.60742-0.72622 0.38713-1.3344 0.90556-1.8242 1.5566-0.47289 0.65108-0.83456 1.4092-1.0879 2.2715-0.23644 0.84464-0.35547 1.7236-0.35547 2.6387 0 0.95022 0.11902 1.8643 0.35547 2.7441 0.25333 0.87983 0.615 1.6633 1.0879 2.3496 0.48978 0.66867 1.1065 1.2066 1.8496 1.6113 0.74311 0.38713 1.6044 0.58008 2.584 0.58008 0.86133 0 1.6311-0.15787 2.3066-0.47461 0.69244-0.33434 1.2497-0.87227 1.6719-1.6113h0.05078v1.7422h3.4199v-18.846zm12.875 4.8301c-1.0302 0-1.9596 0.17541-2.7871 0.52734-0.82756 0.33434-1.5358 0.81965-2.127 1.4531-0.59111 0.61588-1.0483 1.3721-1.3691 2.2695-0.32089 0.87983-0.48047 1.866-0.48047 2.957s0.15958 2.0752 0.48047 2.9551c0.32089 0.87983 0.77803 1.6361 1.3691 2.2695 0.59111 0.61588 1.2994 1.0914 2.127 1.4258 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.0302 0 1.9596-0.16762 2.7871-0.50195 0.84444-0.33434 1.5612-0.8099 2.1523-1.4258 0.59111-0.63348 1.0483-1.3897 1.3691-2.2695 0.32089-0.87983 0.48047-1.8641 0.48047-2.9551s-0.15958-2.0772-0.48047-2.957c-0.32089-0.89743-0.77803-1.6536-1.3691-2.2695-0.59111-0.63348-1.3079-1.1188-2.1523-1.4531-0.82756-0.35193-1.7569-0.52734-2.7871-0.52734zm41.715 0c-0.912 0-1.7223 0.18516-2.4316 0.55469-0.69244 0.36953-1.2752 0.87043-1.748 1.5039-0.47289 0.61588-0.83651 1.337-1.0898 2.1641-0.23645 0.80944-0.35352 1.6553-0.35352 2.5352 0 0.93262 0.10007 1.8214 0.30273 2.666 0.21956 0.82704 0.55767 1.556 1.0137 2.1895 0.456 0.61588 1.0387 1.109 1.748 1.4785 0.70933 0.35193 1.5536 0.5293 2.5332 0.5293 0.79378 0 1.5446-0.16762 2.2539-0.50195 0.72622-0.35193 1.2834-0.88986 1.6719-1.6113h0.05078v1.7949c0.01689 0.96782-0.21071 1.7689-0.68359 2.4023-0.456 0.63348-1.1898 0.95117-2.2031 0.95117-0.64178 0-1.2075-0.14228-1.6973-0.42383-0.48978-0.26395-0.81939-0.74731-0.98828-1.4512h-3.5723c0.05067 0.77425 0.25276 1.435 0.60742 1.9805 0.37156 0.56309 0.8287 1.0192 1.3691 1.3711 0.55733 0.35193 1.1656 0.60726 1.8242 0.76562 0.67556 0.17597 1.3328 0.26562 1.9746 0.26562 1.5031 0 2.7025-0.21245 3.5977-0.63477 0.89511-0.42232 1.5798-0.94076 2.0527-1.5566 0.47289-0.59829 0.777-1.2493 0.91211-1.9531 0.152-0.70386 0.22656-1.3295 0.22656-1.875v-12.775h-3.4199v1.8223h-0.05078c-0.43911-0.79185-0.98782-1.3551-1.6465-1.6895-0.64178-0.33434-1.3926-0.50195-2.2539-0.50195zm16.523 0c-0.99644 0-1.9088 0.18516-2.7363 0.55469-0.81067 0.36953-1.5124 0.88018-2.1035 1.5312-0.59111 0.63348-1.0463 1.3897-1.3672 2.2695s-0.48047 1.831-0.48047 2.8516c0 1.0558 0.15108 2.0225 0.45508 2.9023 0.32089 0.87983 0.76758 1.6361 1.3418 2.2695 0.57422 0.63348 1.276 1.1266 2.1035 1.4785 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.4862 0 2.7517-0.35277 3.7988-1.0566 1.0471-0.70387 1.8254-1.8733 2.332-3.5098h-3.168c-0.11822 0.42232-0.43934 0.82772-0.96289 1.2148-0.52355 0.36953-1.1468 0.55274-1.873 0.55273-1.0133 0-1.7916-0.27286-2.332-0.81836-0.54044-0.5455-0.83605-1.4245-0.88672-2.6387h9.4492c0.06756-1.0558-0.01551-2.0673-0.25195-3.0352-0.23644-0.96782-0.62557-1.8293-1.166-2.5859-0.52356-0.75666-1.1998-1.355-2.0273-1.7949-0.82756-0.45751-1.7974-0.6875-2.9121-0.6875zm16.189 0c-0.76 0-1.5023 0.18516-2.2285 0.55469-0.72622 0.35193-1.3174 0.92299-1.7734 1.7148h-0.07617v-1.9004h-3.4199v13.646h3.5977v-7.1523c0-1.3901 0.21909-2.3841 0.6582-2.9824 0.43911-0.61588 1.1494-0.92383 2.1289-0.92383 0.86133 0 1.4611 0.28066 1.7988 0.84375 0.33777 0.5455 0.50586 1.3816 0.50586 2.5078v7.707h3.5976v-8.3926c0-0.84464-0.0765-1.6106-0.22851-2.2969-0.13511-0.70387-0.37971-1.2925-0.73438-1.7676-0.35466-0.49271-0.84386-0.87277-1.4688-1.1367-0.608-0.28155-1.3948-0.42188-2.3574-0.42188zm-66.063 0.36914 4.3066 6.4668-4.7129 7.1797h4.0293l2.7363-4.3027 2.7344 4.3027h4.1055l-4.8398-7.2578 4.3066-6.3887h-3.9766l-2.2793 3.5645-2.3066-3.5645zm13.275 0 4.584 12.803c0.10133 0.26395 0.15234 0.54461 0.15234 0.84375 0 0.40472-0.11707 0.77504-0.35352 1.1094-0.21956 0.33434-0.56617 0.52729-1.0391 0.58008-0.35467 0.0176-0.70979 0.0098-1.0645-0.02539-0.35467-0.03519-0.70128-0.07028-1.0391-0.10547v3.0879c0.37156 0.03519 0.73518 0.06051 1.0898 0.07813 0.37156 0.03519 0.74368 0.05273 1.1152 0.05273 1.2329 0 2.1943-0.23778 2.8867-0.71289 0.69244-0.47511 1.2326-1.2664 1.6211-2.375l5.4727-15.336h-3.7246l-2.8613 9.3438h-0.05078l-2.9648-9.3438zm-37.48 2.4551c0.59111 0 1.0823 0.12279 1.4707 0.36914 0.38844 0.24635 0.6991 0.57184 0.93555 0.97656 0.25333 0.38713 0.43187 0.84515 0.5332 1.373 0.10133 0.5103 0.15234 1.0482 0.15234 1.6113 0 0.56309-0.05101 1.1069-0.15234 1.6348-0.10133 0.5279-0.27137 1.0035-0.50781 1.4258-0.23644 0.40472-0.5556 0.73021-0.96094 0.97656-0.38844 0.24635-0.87959 0.36914-1.4707 0.36914-0.55733 0-1.038-0.12279-1.4434-0.36914-0.38844-0.26395-0.71806-0.59723-0.98828-1.002-0.25333-0.42232-0.43842-0.89788-0.55664-1.4258s-0.17773-1.0561-0.17773-1.584c-1e-7 -0.56309 0.05101-1.0991 0.15234-1.6094 0.11822-0.5279 0.29481-0.99567 0.53125-1.4004 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.24635 0.90303-0.36914 1.4941-0.36914zm15.84 0c0.608 0 1.1142 0.13253 1.5195 0.39648 0.42222 0.24635 0.75184 0.57184 0.98828 0.97656 0.25333 0.40472 0.42992 0.87054 0.53125 1.3984 0.10133 0.5279 0.15234 1.0658 0.15234 1.6113 0 0.5455-0.05101 1.0815-0.15234 1.6094-0.10134 0.5103-0.27792 0.97612-0.53125 1.3984-0.23644 0.40472-0.56606 0.73021-0.98828 0.97656-0.40533 0.24635-0.91153 0.36914-1.5195 0.36914-0.608 0-1.1142-0.12279-1.5195-0.36914s-0.73495-0.57184-0.98828-0.97656c-0.23644-0.42232-0.40648-0.88814-0.50781-1.3984-0.10133-0.5279-0.15234-1.0639-0.15234-1.6094 0-0.5455 0.05101-1.0834 0.15234-1.6113 0.10133-0.5279 0.27137-0.99371 0.50781-1.3984 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.26395 0.91153-0.39648 1.5195-0.39648zm42.602 0c0.59111 0 1.0803 0.11499 1.4688 0.34375 0.38844 0.22876 0.70105 0.5367 0.9375 0.92383 0.23644 0.38713 0.40648 0.8354 0.50781 1.3457 0.10133 0.49271 0.15039 1.0209 0.15039 1.584 0 0.4927-0.06606 0.96827-0.20117 1.4258-0.11822 0.43992-0.30526 0.83557-0.55859 1.1875-0.25333 0.35193-0.57445 0.63259-0.96289 0.84375-0.38844 0.21116-0.83513 0.31836-1.3418 0.31836-0.55733 0-1.021-0.12474-1.3926-0.37109-0.37156-0.24635-0.67566-0.56209-0.91211-0.94922-0.21956-0.38713-0.38109-0.81786-0.48242-1.293-0.08444-0.49271-0.12695-0.98581-0.12695-1.4785 0-0.5103 0.05101-0.99366 0.15234-1.4512 0.11822-0.47511 0.29676-0.89025 0.5332-1.2422 0.25333-0.36953 0.55744-0.65993 0.91211-0.87109 0.37156-0.21116 0.80974-0.31641 1.3164-0.31641zm15.535 0c0.87822 0 1.529 0.24753 1.9512 0.74023 0.43911 0.49271 0.74322 1.2138 0.91211 2.1641h-5.8535c0.01689-0.26395 0.0679-0.5641 0.15234-0.89844 0.10133-0.33434 0.26287-0.65008 0.48242-0.94922 0.23644-0.29914 0.54055-0.54667 0.91211-0.74023 0.38845-0.21116 0.86914-0.31641 1.4434-0.31641z" filter="url(#f)" opacity=".3" stroke="#969696"/>
- <path d="m0.97202 24.161 43.605-0.0019 0.0508 3.3061-43.6 0.04174z" fill="url(#d)" stroke="#000" stroke-width=".5"/>
- <path d="m10.283 3.5547v6.8633h-0.05078c-0.40533-0.66867-0.96254-1.1715-1.6719-1.5059-0.69244-0.35193-1.4282-0.52734-2.2051-0.52734-0.96267 0-1.807 0.2027-2.5332 0.60742-0.72622 0.38713-1.3344 0.90556-1.8242 1.5566-0.47289 0.65108-0.83456 1.4092-1.0879 2.2715-0.23644 0.84464-0.35547 1.7236-0.35547 2.6387 0 0.95022 0.11902 1.8643 0.35547 2.7441 0.25333 0.87983 0.615 1.6633 1.0879 2.3496 0.48978 0.66867 1.1065 1.2066 1.8496 1.6113 0.74311 0.38713 1.6044 0.58008 2.584 0.58008 0.86133 0 1.6311-0.15787 2.3066-0.47461 0.69244-0.33434 1.2497-0.87227 1.6719-1.6113h0.05078v1.7422h3.4199v-18.846zm12.875 4.8301c-1.0302 0-1.9596 0.17541-2.7871 0.52734-0.82756 0.33434-1.5358 0.81965-2.127 1.4531-0.59111 0.61588-1.0483 1.3721-1.3691 2.2695-0.32089 0.87983-0.48047 1.866-0.48047 2.957s0.15958 2.0752 0.48047 2.9551c0.32089 0.87983 0.77803 1.6361 1.3691 2.2695 0.59111 0.61588 1.2994 1.0914 2.127 1.4258 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.0302 0 1.9596-0.16762 2.7871-0.50195 0.84444-0.33434 1.5612-0.8099 2.1523-1.4258 0.59111-0.63348 1.0483-1.3897 1.3691-2.2695 0.32089-0.87983 0.48047-1.8641 0.48047-2.9551s-0.15958-2.0772-0.48047-2.957c-0.32089-0.89743-0.77803-1.6536-1.3691-2.2695-0.59111-0.63348-1.3079-1.1188-2.1523-1.4531-0.82756-0.35193-1.7569-0.52734-2.7871-0.52734zm41.715 0c-0.912 0-1.7223 0.18516-2.4316 0.55469-0.69244 0.36953-1.2752 0.87043-1.748 1.5039-0.47289 0.61588-0.83651 1.337-1.0898 2.1641-0.23644 0.80944-0.35352 1.6553-0.35352 2.5352 0 0.93262 0.10007 1.8214 0.30273 2.666 0.21956 0.82704 0.55767 1.556 1.0137 2.1895 0.456 0.61588 1.0387 1.109 1.748 1.4785 0.70933 0.35193 1.5536 0.5293 2.5332 0.5293 0.79378 0 1.5446-0.16762 2.2539-0.50195 0.72622-0.35193 1.2834-0.88986 1.6719-1.6113h0.05078v1.7949c0.01689 0.96782-0.21071 1.7689-0.68359 2.4023-0.456 0.63348-1.1898 0.95117-2.2031 0.95117-0.64178 0-1.2075-0.14228-1.6973-0.42383-0.48978-0.26395-0.81939-0.74731-0.98828-1.4512h-3.5723c0.05067 0.77425 0.25276 1.435 0.60742 1.9805 0.37156 0.56309 0.8287 1.0192 1.3691 1.3711 0.55733 0.35193 1.1656 0.60726 1.8242 0.76562 0.67556 0.17597 1.3328 0.26562 1.9746 0.26562 1.5031 0 2.7025-0.21245 3.5977-0.63477 0.89511-0.42232 1.5798-0.94076 2.0527-1.5566 0.47289-0.59829 0.777-1.2493 0.91211-1.9531 0.152-0.70386 0.22656-1.3295 0.22656-1.875v-12.775h-3.4199v1.8223h-0.05078c-0.43911-0.79185-0.98782-1.3551-1.6465-1.6895-0.64178-0.33434-1.3926-0.50195-2.2539-0.50195zm16.523 0c-0.99644 0-1.9088 0.18516-2.7363 0.55469-0.81067 0.36953-1.5124 0.88017-2.1035 1.5312-0.59111 0.63348-1.0463 1.3897-1.3672 2.2695s-0.48047 1.831-0.48047 2.8516c0 1.0558 0.15108 2.0225 0.45508 2.9023 0.32089 0.87983 0.76758 1.6361 1.3418 2.2695 0.57422 0.63348 1.276 1.1266 2.1035 1.4785 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.4862 0 2.7517-0.35278 3.7988-1.0566 1.0471-0.70386 1.8254-1.8733 2.332-3.5098h-3.168c-0.11822 0.42232-0.43934 0.82772-0.96289 1.2148-0.52355 0.36953-1.1468 0.55274-1.873 0.55273-1.0133 0-1.7916-0.27286-2.332-0.81836-0.54044-0.5455-0.83605-1.4245-0.88672-2.6387h9.4492c0.06756-1.0558-0.01551-2.0673-0.25195-3.0352-0.23644-0.96782-0.62557-1.8293-1.166-2.5859-0.52356-0.75666-1.1998-1.355-2.0273-1.7949-0.82756-0.45751-1.7974-0.6875-2.9121-0.6875zm16.189 0c-0.76 0-1.5023 0.18516-2.2285 0.55469-0.72622 0.35193-1.3174 0.923-1.7734 1.7148h-0.07617v-1.9004h-3.4199v13.646h3.5977v-7.1523c0-1.3901 0.21909-2.3841 0.6582-2.9824 0.43911-0.61588 1.1494-0.92383 2.1289-0.92383 0.86133 0 1.461 0.28066 1.7988 0.84375 0.33778 0.5455 0.50586 1.3816 0.50586 2.5078v7.707h3.5977v-8.3926c0-0.84464-0.0765-1.6106-0.22852-2.2969-0.13511-0.70387-0.3797-1.2925-0.73437-1.7676-0.35466-0.49271-0.84386-0.87277-1.4688-1.1367-0.608-0.28155-1.3948-0.42188-2.3574-0.42188zm-66.062 0.36914 4.3066 6.4668-4.7129 7.1797h4.0293l2.7363-4.3027 2.7344 4.3027h4.1055l-4.8398-7.2578 4.3066-6.3887h-3.9766l-2.2793 3.5645-2.3066-3.5645zm13.275 0 4.584 12.803c0.10133 0.26395 0.15234 0.54461 0.15234 0.84375 0 0.40472-0.11707 0.77504-0.35352 1.1094-0.21956 0.33434-0.56617 0.52729-1.0391 0.58008-0.35467 0.0176-0.70979 0.0098-1.0645-0.02539-0.35467-0.03519-0.70128-0.07027-1.0391-0.10547v3.0879c0.37156 0.03519 0.73518 0.06052 1.0898 0.07813 0.37156 0.03519 0.74368 0.05273 1.1152 0.05273 1.2329 0 2.1943-0.23778 2.8867-0.71289 0.69244-0.47511 1.2326-1.2664 1.6211-2.375l5.4727-15.336h-3.7246l-2.8613 9.3437h-0.05078l-2.9648-9.3437zm-37.48 2.4551c0.59111 0 1.0823 0.12279 1.4707 0.36914s0.6991 0.57184 0.93555 0.97656c0.25333 0.38713 0.43187 0.84515 0.5332 1.373 0.10133 0.5103 0.15234 1.0482 0.15234 1.6113 0 0.56309-0.05101 1.1069-0.15234 1.6348-0.10133 0.5279-0.27137 1.0035-0.50781 1.4258-0.23644 0.40472-0.5556 0.73021-0.96094 0.97656-0.38844 0.24635-0.87959 0.36914-1.4707 0.36914-0.55733 0-1.038-0.12279-1.4434-0.36914-0.38844-0.26395-0.71806-0.59723-0.98828-1.002-0.25333-0.42232-0.43842-0.89788-0.55664-1.4258s-0.17773-1.0561-0.17773-1.584c-1e-7 -0.56309 0.05101-1.0991 0.15234-1.6094 0.11822-0.5279 0.29481-0.99567 0.53125-1.4004 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.24635 0.90303-0.36914 1.4941-0.36914zm15.84 0c0.608 0 1.1142 0.13254 1.5195 0.39648 0.42222 0.24635 0.75184 0.57184 0.98828 0.97656 0.25333 0.40472 0.42992 0.87054 0.53125 1.3984 0.10133 0.5279 0.15234 1.0658 0.15234 1.6113 0 0.5455-0.05101 1.0815-0.15234 1.6094-0.10133 0.5103-0.27792 0.97612-0.53125 1.3984-0.23644 0.40472-0.56606 0.73021-0.98828 0.97656-0.40533 0.24635-0.91153 0.36914-1.5195 0.36914-0.608 0-1.1142-0.12279-1.5195-0.36914s-0.73495-0.57184-0.98828-0.97656c-0.23644-0.42232-0.40648-0.88813-0.50781-1.3984-0.10133-0.5279-0.15234-1.0639-0.15234-1.6094 0-0.5455 0.05101-1.0834 0.15234-1.6113 0.10133-0.5279 0.27137-0.99371 0.50781-1.3984 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.26395 0.91153-0.39648 1.5195-0.39648zm42.602 0c0.59111 0 1.0803 0.11499 1.4688 0.34375 0.38844 0.22876 0.70106 0.5367 0.9375 0.92383 0.23644 0.38713 0.40648 0.8354 0.50781 1.3457 0.10133 0.49271 0.15039 1.0209 0.15039 1.584 0 0.49271-0.06606 0.96827-0.20117 1.4258-0.11822 0.43992-0.30526 0.83557-0.55859 1.1875-0.25333 0.35193-0.57445 0.63259-0.96289 0.84375-0.38844 0.21116-0.83513 0.31836-1.3418 0.31836-0.55733 0-1.021-0.12474-1.3926-0.37109-0.37156-0.24635-0.67566-0.56209-0.91211-0.94922-0.21956-0.38713-0.38109-0.81786-0.48242-1.293-0.08444-0.49271-0.12695-0.98581-0.12695-1.4785 0-0.5103 0.05101-0.99366 0.15234-1.4512 0.11822-0.47511 0.29676-0.89026 0.5332-1.2422 0.25333-0.36953 0.55744-0.65993 0.91211-0.87109 0.37156-0.21116 0.80974-0.31641 1.3164-0.31641zm15.535 0c0.87822 0 1.529 0.24753 1.9512 0.74024 0.43911 0.49271 0.74322 1.2138 0.91211 2.1641h-5.8535c0.01689-0.26395 0.0679-0.5641 0.15234-0.89844 0.10133-0.33434 0.26287-0.65008 0.48242-0.94922 0.23644-0.29914 0.54055-0.54667 0.91211-0.74023 0.38845-0.21116 0.86914-0.31641 1.4434-0.31641z" fill="url(#e)" stroke="#195794" stroke-width=".7"/>
- <path d="m52.988 27.291c0.99602-1.0359 1.3944-1.8725 1.7928-3.1076l3.8247-0.03984c0.3113 1.6096 0.82413 2.5137 1.6335 3.1474z" fill="url(#b)" stroke="#000" stroke-width=".5"/>
- <path d="m73.89 24.04 28.885-0.2011-0.12476 3.3879-31.033 0.16229c1.2621-1.0234 1.9665-2.2859 2.2724-3.3491z" fill="url(#c)" stroke="#000" stroke-width=".41788"/>
- </g>
-</svg>
diff --git a/doc/api/files.html b/doc/api/files.html
deleted file mode 100644
index 459665c..0000000
--- a/doc/api/files.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): File List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div class="header">
- <div class="headertitle"><div class="title">File List</div></div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock">Here is a list of all documented files with brief descriptions:</div><div class="directory">
-<div class="levels">[detail level <span >1</span><span >2</span>]</div><table class="directory">
-<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" >&#9660;</span><span id="img_0_" class="iconfopen" >&#160;</span><a class="el" href="dir_b17a1d403082bd69a703ed987cf158fb.html" target="_self">lzma</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="base_8h.html" target="_self">base.h</a></td><td class="desc">Data types and functions used in many places in liblzma API </td></tr>
-<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="bcj_8h.html" target="_self">bcj.h</a></td><td class="desc">Branch/Call/Jump conversion filters </td></tr>
-<tr id="row_0_2_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="block_8h.html" target="_self">block.h</a></td><td class="desc">.xz Block handling </td></tr>
-<tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="check_8h.html" target="_self">check.h</a></td><td class="desc">Integrity checks </td></tr>
-<tr id="row_0_4_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="container_8h.html" target="_self">container.h</a></td><td class="desc">File formats </td></tr>
-<tr id="row_0_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="delta_8h.html" target="_self">delta.h</a></td><td class="desc">Delta filter </td></tr>
-<tr id="row_0_6_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="filter_8h.html" target="_self">filter.h</a></td><td class="desc">Common filter related types and functions </td></tr>
-<tr id="row_0_7_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="hardware_8h.html" target="_self">hardware.h</a></td><td class="desc">Hardware information </td></tr>
-<tr id="row_0_8_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="index_8h.html" target="_self">index.h</a></td><td class="desc">Handling of .xz Index and related information </td></tr>
-<tr id="row_0_9_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="index__hash_8h.html" target="_self">index_hash.h</a></td><td class="desc">Validate Index by using a hash function </td></tr>
-<tr id="row_0_10_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="lzma12_8h.html" target="_self">lzma12.h</a></td><td class="desc">LZMA1 and LZMA2 filters </td></tr>
-<tr id="row_0_11_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="stream__flags_8h.html" target="_self">stream_flags.h</a></td><td class="desc">.xz Stream Header and Stream Footer encoder and decoder </td></tr>
-<tr id="row_0_12_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="version_8h.html" target="_self">version.h</a></td><td class="desc">Version number </td></tr>
-<tr id="row_0_13_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="vli_8h.html" target="_self">vli.h</a></td><td class="desc">Variable-length integer handling </td></tr>
-<tr id="row_1_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="lzma_8h.html" target="_self">lzma.h</a></td><td class="desc">The public API of liblzma data compression library </td></tr>
-</table>
-</div><!-- directory -->
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/filter_8h.html b/doc/api/filter_8h.html
deleted file mode 100644
index 7f2ffaa..0000000
--- a/doc/api/filter_8h.html
+++ /dev/null
@@ -1,1342 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma/filter.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File&#160;List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div id="nav-path" class="navpath">
- <ul>
-<li class="navelem"><a class="el" href="dir_b17a1d403082bd69a703ed987cf158fb.html">lzma</a></li> </ul>
-</div>
-</div><!-- top -->
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> &#124;
-<a href="#define-members">Macros</a> &#124;
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle"><div class="title">filter.h File Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>Common filter related types and functions.
-<a href="#details">More...</a></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__filter.html">lzma_filter</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Filter options. <a href="structlzma__filter.html#details">More...</a><br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
-Macros</h2></td></tr>
-<tr class="memitem:ab33c0cc1728bf390e5b84f8bce1928ba"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#ab33c0cc1728bf390e5b84f8bce1928ba">LZMA_FILTERS_MAX</a>&#160;&#160;&#160;4</td></tr>
-<tr class="memdesc:ab33c0cc1728bf390e5b84f8bce1928ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum number of filters in a chain. <br /></td></tr>
-<tr class="separator:ab33c0cc1728bf390e5b84f8bce1928ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a41aa51eeb53190404439c31d8e9c97cd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#a41aa51eeb53190404439c31d8e9c97cd">LZMA_STR_ALL_FILTERS</a>&#160;&#160;&#160;UINT32_C(0x01)</td></tr>
-<tr class="memdesc:a41aa51eeb53190404439c31d8e9c97cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allow or show all filters. <br /></td></tr>
-<tr class="separator:a41aa51eeb53190404439c31d8e9c97cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adc33f4c0c7b5d3ae36acc0437a904339"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#adc33f4c0c7b5d3ae36acc0437a904339">LZMA_STR_NO_VALIDATION</a>&#160;&#160;&#160;UINT32_C(0x02)</td></tr>
-<tr class="memdesc:adc33f4c0c7b5d3ae36acc0437a904339"><td class="mdescLeft">&#160;</td><td class="mdescRight">Do not validate the filter chain in <a class="el" href="filter_8h.html#aa042cf11749bc2183b27de1c3142da30" title="Convert a string to a filter chain.">lzma_str_to_filters()</a> <br /></td></tr>
-<tr class="separator:adc33f4c0c7b5d3ae36acc0437a904339"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a09a775f6a78d28ca136acfb51ad5fa02"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#a09a775f6a78d28ca136acfb51ad5fa02">LZMA_STR_ENCODER</a>&#160;&#160;&#160;UINT32_C(0x10)</td></tr>
-<tr class="memdesc:a09a775f6a78d28ca136acfb51ad5fa02"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stringify encoder options. <br /></td></tr>
-<tr class="separator:a09a775f6a78d28ca136acfb51ad5fa02"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8a0f3fc03bdb84a294cdd53a98783104"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#a8a0f3fc03bdb84a294cdd53a98783104">LZMA_STR_DECODER</a>&#160;&#160;&#160;UINT32_C(0x20)</td></tr>
-<tr class="memdesc:a8a0f3fc03bdb84a294cdd53a98783104"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stringify decoder options. <br /></td></tr>
-<tr class="separator:a8a0f3fc03bdb84a294cdd53a98783104"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a87e9ac4ae5829b092262223256141a29"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#a87e9ac4ae5829b092262223256141a29">LZMA_STR_GETOPT_LONG</a>&#160;&#160;&#160;UINT32_C(0x40)</td></tr>
-<tr class="memdesc:a87e9ac4ae5829b092262223256141a29"><td class="mdescLeft">&#160;</td><td class="mdescRight">Produce xz-compatible getopt_long() syntax. <br /></td></tr>
-<tr class="separator:a87e9ac4ae5829b092262223256141a29"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac0113c47caf98a735db2297936c5e857"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#ac0113c47caf98a735db2297936c5e857">LZMA_STR_NO_SPACES</a>&#160;&#160;&#160;UINT32_C(0x80)</td></tr>
-<tr class="memdesc:ac0113c47caf98a735db2297936c5e857"><td class="mdescLeft">&#160;</td><td class="mdescRight">Use two dashes "--" instead of a space to separate filters. <br /></td></tr>
-<tr class="separator:ac0113c47caf98a735db2297936c5e857"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:a3db3c36cd6e57658a74c53e4daa2bef6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#abbc819c74b484c846825ae1388a50a59">lzma_bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#a3db3c36cd6e57658a74c53e4daa2bef6">lzma_filter_encoder_is_supported</a> (<a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> id) lzma_nothrow lzma_attr_const</td></tr>
-<tr class="memdesc:a3db3c36cd6e57658a74c53e4daa2bef6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test if the given Filter ID is supported for encoding. <br /></td></tr>
-<tr class="separator:a3db3c36cd6e57658a74c53e4daa2bef6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acab0c67bf5b3a76f2b474c8e1da98938"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#abbc819c74b484c846825ae1388a50a59">lzma_bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#acab0c67bf5b3a76f2b474c8e1da98938">lzma_filter_decoder_is_supported</a> (<a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> id) lzma_nothrow lzma_attr_const</td></tr>
-<tr class="memdesc:acab0c67bf5b3a76f2b474c8e1da98938"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test if the given Filter ID is supported for decoding. <br /></td></tr>
-<tr class="separator:acab0c67bf5b3a76f2b474c8e1da98938"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a611fe1176eeeda187b1bd8aef45040aa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#a611fe1176eeeda187b1bd8aef45040aa">lzma_filters_copy</a> (const <a class="el" href="structlzma__filter.html">lzma_filter</a> *src, <a class="el" href="structlzma__filter.html">lzma_filter</a> *dest, const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *allocator) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a611fe1176eeeda187b1bd8aef45040aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy the filters array. <br /></td></tr>
-<tr class="separator:a611fe1176eeeda187b1bd8aef45040aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae06979d219897f5f4c29cbc7a96a8892"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#ae06979d219897f5f4c29cbc7a96a8892">lzma_filters_free</a> (<a class="el" href="structlzma__filter.html">lzma_filter</a> *filters, const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *allocator) lzma_nothrow</td></tr>
-<tr class="memdesc:ae06979d219897f5f4c29cbc7a96a8892"><td class="mdescLeft">&#160;</td><td class="mdescRight">Free the options in the array of <a class="el" href="structlzma__filter.html" title="Filter options.">lzma_filter</a> structures. <br /></td></tr>
-<tr class="separator:ae06979d219897f5f4c29cbc7a96a8892"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a730f9391e85a5979bcd1b32643ae7176"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#a730f9391e85a5979bcd1b32643ae7176">lzma_raw_encoder_memusage</a> (const <a class="el" href="structlzma__filter.html">lzma_filter</a> *filters) lzma_nothrow lzma_attr_pure</td></tr>
-<tr class="memdesc:a730f9391e85a5979bcd1b32643ae7176"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate approximate memory requirements for raw encoder. <br /></td></tr>
-<tr class="separator:a730f9391e85a5979bcd1b32643ae7176"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a58511249ae9206d7de7c5d1f05842297"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#a58511249ae9206d7de7c5d1f05842297">lzma_raw_decoder_memusage</a> (const <a class="el" href="structlzma__filter.html">lzma_filter</a> *filters) lzma_nothrow lzma_attr_pure</td></tr>
-<tr class="memdesc:a58511249ae9206d7de7c5d1f05842297"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate approximate memory requirements for raw decoder. <br /></td></tr>
-<tr class="separator:a58511249ae9206d7de7c5d1f05842297"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2368e4129032345eb0738b0c6e085703"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#a2368e4129032345eb0738b0c6e085703">lzma_raw_encoder</a> (<a class="el" href="structlzma__stream.html">lzma_stream</a> *strm, const <a class="el" href="structlzma__filter.html">lzma_filter</a> *filters) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a2368e4129032345eb0738b0c6e085703"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize raw encoder. <br /></td></tr>
-<tr class="separator:a2368e4129032345eb0738b0c6e085703"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae77b3b6c5eccd9d77bbafef0a8a203c1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#ae77b3b6c5eccd9d77bbafef0a8a203c1">lzma_raw_decoder</a> (<a class="el" href="structlzma__stream.html">lzma_stream</a> *strm, const <a class="el" href="structlzma__filter.html">lzma_filter</a> *filters) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:ae77b3b6c5eccd9d77bbafef0a8a203c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize raw decoder. <br /></td></tr>
-<tr class="separator:ae77b3b6c5eccd9d77bbafef0a8a203c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4a8fd969df001e449ebe4421ab33bba5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#a4a8fd969df001e449ebe4421ab33bba5">lzma_filters_update</a> (<a class="el" href="structlzma__stream.html">lzma_stream</a> *strm, const <a class="el" href="structlzma__filter.html">lzma_filter</a> *filters) lzma_nothrow</td></tr>
-<tr class="memdesc:a4a8fd969df001e449ebe4421ab33bba5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update the filter chain in the encoder. <br /></td></tr>
-<tr class="separator:a4a8fd969df001e449ebe4421ab33bba5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a226724ab3391b410281fdf656cc7c432"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#a226724ab3391b410281fdf656cc7c432">lzma_raw_buffer_encode</a> (const <a class="el" href="structlzma__filter.html">lzma_filter</a> *filters, const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *allocator, const uint8_t *in, size_t in_size, uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow</td></tr>
-<tr class="memdesc:a226724ab3391b410281fdf656cc7c432"><td class="mdescLeft">&#160;</td><td class="mdescRight">Single-call raw encoder. <br /></td></tr>
-<tr class="separator:a226724ab3391b410281fdf656cc7c432"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3b942df507e4f9a6d7525e5a4c6864e5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#a3b942df507e4f9a6d7525e5a4c6864e5">lzma_raw_buffer_decode</a> (const <a class="el" href="structlzma__filter.html">lzma_filter</a> *filters, const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *allocator, const uint8_t *in, size_t *in_pos, size_t in_size, uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow</td></tr>
-<tr class="memdesc:a3b942df507e4f9a6d7525e5a4c6864e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Single-call raw decoder. <br /></td></tr>
-<tr class="separator:a3b942df507e4f9a6d7525e5a4c6864e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aee038818cf7bbe044c3f7a7c86998c1b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#aee038818cf7bbe044c3f7a7c86998c1b">lzma_properties_size</a> (uint32_t *size, const <a class="el" href="structlzma__filter.html">lzma_filter</a> *filter) lzma_nothrow</td></tr>
-<tr class="memdesc:aee038818cf7bbe044c3f7a7c86998c1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the size of the Filter Properties field. <br /></td></tr>
-<tr class="separator:aee038818cf7bbe044c3f7a7c86998c1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8e00887086df5a44084ac22e48415de3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#a8e00887086df5a44084ac22e48415de3">lzma_properties_encode</a> (const <a class="el" href="structlzma__filter.html">lzma_filter</a> *filter, uint8_t *props) lzma_nothrow</td></tr>
-<tr class="memdesc:a8e00887086df5a44084ac22e48415de3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encode the Filter Properties field. <br /></td></tr>
-<tr class="separator:a8e00887086df5a44084ac22e48415de3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a88d2e864b2039ac82802cc202278d478"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#a88d2e864b2039ac82802cc202278d478">lzma_properties_decode</a> (<a class="el" href="structlzma__filter.html">lzma_filter</a> *filter, const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *allocator, const uint8_t *props, size_t props_size) lzma_nothrow</td></tr>
-<tr class="memdesc:a88d2e864b2039ac82802cc202278d478"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decode the Filter Properties field. <br /></td></tr>
-<tr class="separator:a88d2e864b2039ac82802cc202278d478"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a996c9c21840ed54e37bd1f664a79d940"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#a996c9c21840ed54e37bd1f664a79d940">lzma_filter_flags_size</a> (uint32_t *size, const <a class="el" href="structlzma__filter.html">lzma_filter</a> *filter) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a996c9c21840ed54e37bd1f664a79d940"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate encoded size of a Filter Flags field. <br /></td></tr>
-<tr class="separator:a996c9c21840ed54e37bd1f664a79d940"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a96f23309bc21398fece18c00ebe7db98"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#a96f23309bc21398fece18c00ebe7db98">lzma_filter_flags_encode</a> (const <a class="el" href="structlzma__filter.html">lzma_filter</a> *filter, uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a96f23309bc21398fece18c00ebe7db98"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encode Filter Flags into given buffer. <br /></td></tr>
-<tr class="separator:a96f23309bc21398fece18c00ebe7db98"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4cba9a4c658cce0ff01fd102b31ea1a7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#a4cba9a4c658cce0ff01fd102b31ea1a7">lzma_filter_flags_decode</a> (<a class="el" href="structlzma__filter.html">lzma_filter</a> *filter, const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *allocator, const uint8_t *in, size_t *in_pos, size_t in_size) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a4cba9a4c658cce0ff01fd102b31ea1a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decode Filter Flags from given buffer. <br /></td></tr>
-<tr class="separator:a4cba9a4c658cce0ff01fd102b31ea1a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa042cf11749bc2183b27de1c3142da30"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#aa042cf11749bc2183b27de1c3142da30">lzma_str_to_filters</a> (const char *str, int *error_pos, <a class="el" href="structlzma__filter.html">lzma_filter</a> *filters, uint32_t flags, const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *allocator) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:aa042cf11749bc2183b27de1c3142da30"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a string to a filter chain. <br /></td></tr>
-<tr class="separator:aa042cf11749bc2183b27de1c3142da30"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7deeb86ef59a9111b8033681290e0fb0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#a7deeb86ef59a9111b8033681290e0fb0">lzma_str_from_filters</a> (char **str, const <a class="el" href="structlzma__filter.html">lzma_filter</a> *filters, uint32_t flags, const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *allocator) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a7deeb86ef59a9111b8033681290e0fb0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a filter chain to a string. <br /></td></tr>
-<tr class="separator:a7deeb86ef59a9111b8033681290e0fb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab51585b68796ce0270f87e615b923809"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="filter_8h.html#ab51585b68796ce0270f87e615b923809">lzma_str_list_filters</a> (char **str, <a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> filter_id, uint32_t flags, const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *allocator) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:ab51585b68796ce0270f87e615b923809"><td class="mdescLeft">&#160;</td><td class="mdescRight">List available filters and/or their options (for help message) <br /></td></tr>
-<tr class="separator:ab51585b68796ce0270f87e615b923809"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Common filter related types and functions. </p>
-<dl class="section note"><dt>Note</dt><dd>Never include this file directly. Use &lt;<a class="el" href="lzma_8h.html" title="The public API of liblzma data compression library.">lzma.h</a>&gt; instead. </dd></dl>
-</div><h2 class="groupheader">Macro Definition Documentation</h2>
-<a id="ab33c0cc1728bf390e5b84f8bce1928ba" name="ab33c0cc1728bf390e5b84f8bce1928ba"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ab33c0cc1728bf390e5b84f8bce1928ba">&#9670;&#160;</a></span>LZMA_FILTERS_MAX</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_FILTERS_MAX&#160;&#160;&#160;4</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Maximum number of filters in a chain. </p>
-<p>A filter chain can have 1-4 filters, of which three are allowed to change the size of the data. Usually only one or two filters are needed. </p>
-
-</div>
-</div>
-<a id="a41aa51eeb53190404439c31d8e9c97cd" name="a41aa51eeb53190404439c31d8e9c97cd"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a41aa51eeb53190404439c31d8e9c97cd">&#9670;&#160;</a></span>LZMA_STR_ALL_FILTERS</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_STR_ALL_FILTERS&#160;&#160;&#160;UINT32_C(0x01)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Allow or show all filters. </p>
-<p>By default only the filters supported in the .xz format are accept by <a class="el" href="filter_8h.html#aa042cf11749bc2183b27de1c3142da30" title="Convert a string to a filter chain.">lzma_str_to_filters()</a> or shown by <a class="el" href="filter_8h.html#ab51585b68796ce0270f87e615b923809" title="List available filters and/or their options (for help message)">lzma_str_list_filters()</a>. </p>
-
-</div>
-</div>
-<a id="adc33f4c0c7b5d3ae36acc0437a904339" name="adc33f4c0c7b5d3ae36acc0437a904339"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#adc33f4c0c7b5d3ae36acc0437a904339">&#9670;&#160;</a></span>LZMA_STR_NO_VALIDATION</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_STR_NO_VALIDATION&#160;&#160;&#160;UINT32_C(0x02)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Do not validate the filter chain in <a class="el" href="filter_8h.html#aa042cf11749bc2183b27de1c3142da30" title="Convert a string to a filter chain.">lzma_str_to_filters()</a> </p>
-<p>By default <a class="el" href="filter_8h.html#aa042cf11749bc2183b27de1c3142da30" title="Convert a string to a filter chain.">lzma_str_to_filters()</a> can return an error if the filter chain as a whole isn't usable in the .xz format or in the raw encoder or decoder. With this flag, this validation is skipped. This flag doesn't affect the handling of the individual filter options. To allow non-.xz filters also LZMA_STR_ALL_FILTERS is needed. </p>
-
-</div>
-</div>
-<a id="a09a775f6a78d28ca136acfb51ad5fa02" name="a09a775f6a78d28ca136acfb51ad5fa02"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a09a775f6a78d28ca136acfb51ad5fa02">&#9670;&#160;</a></span>LZMA_STR_ENCODER</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_STR_ENCODER&#160;&#160;&#160;UINT32_C(0x10)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Stringify encoder options. </p>
-<p>Show the filter-specific options that the encoder will use. This may be useful for verbose diagnostic messages.</p>
-<p>Note that if options were decoded from .xz headers then the encoder options may be undefined. This flag shouldn't be used in such a situation. </p>
-
-</div>
-</div>
-<a id="a8a0f3fc03bdb84a294cdd53a98783104" name="a8a0f3fc03bdb84a294cdd53a98783104"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a8a0f3fc03bdb84a294cdd53a98783104">&#9670;&#160;</a></span>LZMA_STR_DECODER</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_STR_DECODER&#160;&#160;&#160;UINT32_C(0x20)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Stringify decoder options. </p>
-<p>Show the filter-specific options that the decoder will use. This may be useful for showing what filter options were decoded from file headers. </p>
-
-</div>
-</div>
-<a id="a87e9ac4ae5829b092262223256141a29" name="a87e9ac4ae5829b092262223256141a29"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a87e9ac4ae5829b092262223256141a29">&#9670;&#160;</a></span>LZMA_STR_GETOPT_LONG</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_STR_GETOPT_LONG&#160;&#160;&#160;UINT32_C(0x40)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Produce xz-compatible getopt_long() syntax. </p>
-<p>That is, "delta:dist=2 lzma2:dict=4MiB,pb=1,lp=1" becomes "--delta=dist=2 --lzma2=dict=4MiB,pb=1,lp=1".</p>
-<p>This syntax is compatible with xz 5.0.0 as long as the filters and their options are supported too. </p>
-
-</div>
-</div>
-<a id="ac0113c47caf98a735db2297936c5e857" name="ac0113c47caf98a735db2297936c5e857"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ac0113c47caf98a735db2297936c5e857">&#9670;&#160;</a></span>LZMA_STR_NO_SPACES</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_STR_NO_SPACES&#160;&#160;&#160;UINT32_C(0x80)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Use two dashes "--" instead of a space to separate filters. </p>
-<p>That is, "delta:dist=2 lzma2:pb=1,lp=1" becomes "delta:dist=2--lzma2:pb=1,lp=1". This looks slightly odd but this kind of strings should be usable on the command line without quoting. However, it is possible that future versions with new filter options might produce strings that require shell quoting anyway as the exact set of possible characters isn't frozen for now.</p>
-<p>It is guaranteed that the single quote (') will never be used in filter chain strings (even if LZMA_STR_NO_SPACES isn't used). </p>
-
-</div>
-</div>
-<h2 class="groupheader">Function Documentation</h2>
-<a id="a3db3c36cd6e57658a74c53e4daa2bef6" name="a3db3c36cd6e57658a74c53e4daa2bef6"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a3db3c36cd6e57658a74c53e4daa2bef6">&#9670;&#160;</a></span>lzma_filter_encoder_is_supported()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#abbc819c74b484c846825ae1388a50a59">lzma_bool</a> lzma_filter_encoder_is_supported </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td>
- <td class="paramname"><em>id</em></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Test if the given Filter ID is supported for encoding. </p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">id</td><td>Filter ID</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>lzma_bool:<ul>
-<li>true if the Filter ID is supported for encoding by this liblzma build.</li>
-<li>false otherwise. </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="acab0c67bf5b3a76f2b474c8e1da98938" name="acab0c67bf5b3a76f2b474c8e1da98938"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#acab0c67bf5b3a76f2b474c8e1da98938">&#9670;&#160;</a></span>lzma_filter_decoder_is_supported()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#abbc819c74b484c846825ae1388a50a59">lzma_bool</a> lzma_filter_decoder_is_supported </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td>
- <td class="paramname"><em>id</em></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Test if the given Filter ID is supported for decoding. </p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">id</td><td>Filter ID</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>lzma_bool:<ul>
-<li>true if the Filter ID is supported for decoding by this liblzma build.</li>
-<li>false otherwise. </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a611fe1176eeeda187b1bd8aef45040aa" name="a611fe1176eeeda187b1bd8aef45040aa"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a611fe1176eeeda187b1bd8aef45040aa">&#9670;&#160;</a></span>lzma_filters_copy()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_filters_copy </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="structlzma__filter.html">lzma_filter</a> *&#160;</td>
- <td class="paramname"><em>src</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="structlzma__filter.html">lzma_filter</a> *&#160;</td>
- <td class="paramname"><em>dest</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *&#160;</td>
- <td class="paramname"><em>allocator</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Copy the filters array. </p>
-<p>Copy the Filter IDs and filter-specific options from src to dest. Up to LZMA_FILTERS_MAX filters are copied, plus the terminating .id == LZMA_VLI_UNKNOWN. Thus, dest should have at least LZMA_FILTERS_MAX + 1 elements space unless the caller knows that src is smaller than that.</p>
-<p>Unless the filter-specific options is NULL, the Filter ID has to be supported by liblzma, because liblzma needs to know the size of every filter-specific options structure. The filter-specific options are not validated. If options is NULL, any unsupported Filter IDs are copied without returning an error.</p>
-<p>Old filter-specific options in dest are not freed, so dest doesn't need to be initialized by the caller in any way.</p>
-<p>If an error occurs, memory possibly already allocated by this function is always freed. liblzma versions older than 5.2.7 may modify the dest array and leave its contents in an undefined state if an error occurs. liblzma 5.2.7 and newer only modify the dest array when returning LZMA_OK.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir"></td><td class="paramname">src</td><td>Array of filters terminated with .id == LZMA_VLI_UNKNOWN. </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">dest</td><td>Destination filter array </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">allocator</td><td><a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> for custom allocator functions. Set to NULL to use malloc() and free().</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_OPTIONS_ERROR: Unsupported Filter ID and its options is not NULL.</li>
-<li>LZMA_PROG_ERROR: src or dest is NULL. </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="ae06979d219897f5f4c29cbc7a96a8892" name="ae06979d219897f5f4c29cbc7a96a8892"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ae06979d219897f5f4c29cbc7a96a8892">&#9670;&#160;</a></span>lzma_filters_free()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void lzma_filters_free </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__filter.html">lzma_filter</a> *&#160;</td>
- <td class="paramname"><em>filters</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *&#160;</td>
- <td class="paramname"><em>allocator</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Free the options in the array of <a class="el" href="structlzma__filter.html" title="Filter options.">lzma_filter</a> structures. </p>
-<p>This frees the filter chain options. The filters array itself is not freed.</p>
-<p>The filters array must have at most LZMA_FILTERS_MAX + 1 elements including the terminating element which must have .id = LZMA_VLI_UNKNOWN. For all elements before the terminating element:</p><ul>
-<li>options will be freed using the given <a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> or, if allocator is NULL, using free().</li>
-<li>options will be set to NULL.</li>
-<li>id will be set to LZMA_VLI_UNKNOWN.</li>
-</ul>
-<p>If filters is NULL, this does nothing. Again, this never frees the filters array itself.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">filters</td><td>Array of filters terminated with .id == LZMA_VLI_UNKNOWN. </td></tr>
- <tr><td class="paramname">allocator</td><td><a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> for custom allocator functions. Set to NULL to use malloc() and free(). </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a id="a730f9391e85a5979bcd1b32643ae7176" name="a730f9391e85a5979bcd1b32643ae7176"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a730f9391e85a5979bcd1b32643ae7176">&#9670;&#160;</a></span>lzma_raw_encoder_memusage()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint64_t lzma_raw_encoder_memusage </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="structlzma__filter.html">lzma_filter</a> *&#160;</td>
- <td class="paramname"><em>filters</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Calculate approximate memory requirements for raw encoder. </p>
-<p>This function can be used to calculate the memory requirements for Block and Stream encoders too because Block and Stream encoders don't need significantly more memory than raw encoder.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">filters</td><td>Array of filters terminated with .id == LZMA_VLI_UNKNOWN.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Number of bytes of memory required for the given filter chain when encoding or UINT64_MAX on error. </dd></dl>
-
-</div>
-</div>
-<a id="a58511249ae9206d7de7c5d1f05842297" name="a58511249ae9206d7de7c5d1f05842297"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a58511249ae9206d7de7c5d1f05842297">&#9670;&#160;</a></span>lzma_raw_decoder_memusage()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint64_t lzma_raw_decoder_memusage </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="structlzma__filter.html">lzma_filter</a> *&#160;</td>
- <td class="paramname"><em>filters</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Calculate approximate memory requirements for raw decoder. </p>
-<p>This function can be used to calculate the memory requirements for Block and Stream decoders too because Block and Stream decoders don't need significantly more memory than raw decoder.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">filters</td><td>Array of filters terminated with .id == LZMA_VLI_UNKNOWN.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Number of bytes of memory required for the given filter chain when decoding or UINT64_MAX on error. </dd></dl>
-
-</div>
-</div>
-<a id="a2368e4129032345eb0738b0c6e085703" name="a2368e4129032345eb0738b0c6e085703"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a2368e4129032345eb0738b0c6e085703">&#9670;&#160;</a></span>lzma_raw_encoder()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_raw_encoder </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__filter.html">lzma_filter</a> *&#160;</td>
- <td class="paramname"><em>filters</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Initialize raw encoder. </p>
-<p>This function may be useful when implementing custom file formats.</p>
-<p>The `action' with <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> can be LZMA_RUN, LZMA_SYNC_FLUSH (if the filter chain supports it), or LZMA_FINISH.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">strm</td><td>Pointer to <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> that is at least initialized with LZMA_STREAM_INIT. </td></tr>
- <tr><td class="paramname">filters</td><td>Array of filters terminated with .id == LZMA_VLI_UNKNOWN.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_OPTIONS_ERROR</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="ae77b3b6c5eccd9d77bbafef0a8a203c1" name="ae77b3b6c5eccd9d77bbafef0a8a203c1"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ae77b3b6c5eccd9d77bbafef0a8a203c1">&#9670;&#160;</a></span>lzma_raw_decoder()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_raw_decoder </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__filter.html">lzma_filter</a> *&#160;</td>
- <td class="paramname"><em>filters</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Initialize raw decoder. </p>
-<p>The initialization of raw decoder goes similarly to raw encoder.</p>
-<p>The `action' with <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> can be LZMA_RUN or LZMA_FINISH. Using LZMA_FINISH is not required, it is supported just for convenience.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">strm</td><td>Pointer to <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> that is at least initialized with LZMA_STREAM_INIT. </td></tr>
- <tr><td class="paramname">filters</td><td>Array of filters terminated with .id == LZMA_VLI_UNKNOWN.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_OPTIONS_ERROR</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a4a8fd969df001e449ebe4421ab33bba5" name="a4a8fd969df001e449ebe4421ab33bba5"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a4a8fd969df001e449ebe4421ab33bba5">&#9670;&#160;</a></span>lzma_filters_update()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_filters_update </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__filter.html">lzma_filter</a> *&#160;</td>
- <td class="paramname"><em>filters</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Update the filter chain in the encoder. </p>
-<p>This function may be called after <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> has returned LZMA_STREAM_END when LZMA_FULL_BARRIER, LZMA_FULL_FLUSH, or LZMA_SYNC_FLUSH was used:</p>
-<ul>
-<li>After LZMA_FULL_BARRIER or LZMA_FULL_FLUSH: Single-threaded .xz Stream encoder (<a class="el" href="container_8h.html#a1a97aec94c9fedd7646cfa51c4f4cd52" title="Initialize .xz Stream encoder using a custom filter chain.">lzma_stream_encoder()</a>) and (since liblzma 5.4.0) multi-threaded Stream encoder (<a class="el" href="container_8h.html#a3f8793518711ee84d1abf12ea3aaba42" title="Initialize multithreaded .xz Stream encoder.">lzma_stream_encoder_mt()</a>) allow setting a new filter chain to be used for the next Block(s).</li>
-<li>After LZMA_SYNC_FLUSH: Raw encoder (<a class="el" href="filter_8h.html#a2368e4129032345eb0738b0c6e085703" title="Initialize raw encoder.">lzma_raw_encoder()</a>), Block encoder (<a class="el" href="block_8h.html#a2218a49025a0b44f9a6f9d6d24359359" title="Initialize .xz Block encoder.">lzma_block_encoder()</a>), and single-threaded .xz Stream encoder (<a class="el" href="container_8h.html#a1a97aec94c9fedd7646cfa51c4f4cd52" title="Initialize .xz Stream encoder using a custom filter chain.">lzma_stream_encoder()</a>) allow changing certain filter-specific options in the middle of encoding. The actual filters in the chain (Filter IDs) must not be changed! Currently only the lc, lp, and pb options of LZMA2 (not LZMA1) can be changed this way.</li>
-<li>In the future some filters might allow changing some of their options without any barrier or flushing but currently such filters don't exist.</li>
-</ul>
-<p>This function may also be called when no data has been compressed yet although this is rarely useful. In that case, this function will behave as if LZMA_FULL_FLUSH (Stream encoders) or LZMA_SYNC_FLUSH (Raw or Block encoder) had been used right before calling this function.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">strm</td><td>Pointer to <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> that is at least initialized with LZMA_STREAM_INIT. </td></tr>
- <tr><td class="paramname">filters</td><td>Array of filters terminated with .id == LZMA_VLI_UNKNOWN.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_MEMLIMIT_ERROR</li>
-<li>LZMA_OPTIONS_ERROR</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a226724ab3391b410281fdf656cc7c432" name="a226724ab3391b410281fdf656cc7c432"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a226724ab3391b410281fdf656cc7c432">&#9670;&#160;</a></span>lzma_raw_buffer_encode()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_raw_buffer_encode </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="structlzma__filter.html">lzma_filter</a> *&#160;</td>
- <td class="paramname"><em>filters</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *&#160;</td>
- <td class="paramname"><em>allocator</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint8_t *&#160;</td>
- <td class="paramname"><em>in</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>in_size</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint8_t *&#160;</td>
- <td class="paramname"><em>out</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t *&#160;</td>
- <td class="paramname"><em>out_pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>out_size</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Single-call raw encoder. </p>
-<dl class="section note"><dt>Note</dt><dd>There is no function to calculate how big output buffer would surely be big enough. (<a class="el" href="container_8h.html#a66d4366a47b8332bff2a512f44f5c45e" title="Calculate output buffer size for single-call Stream encoder.">lzma_stream_buffer_bound()</a> works only for <a class="el" href="container_8h.html#a6e645ccaeace3b13a6981e03c6e190ad" title="Single-call .xz Stream encoder.">lzma_stream_buffer_encode()</a>; raw encoder won't necessarily meet that bound.)</dd></dl>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir"></td><td class="paramname">filters</td><td>Array of filters terminated with .id == LZMA_VLI_UNKNOWN. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">allocator</td><td><a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> for custom allocator functions. Set to NULL to use malloc() and free(). </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in</td><td>Beginning of the input buffer </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in_size</td><td>Size of the input buffer </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">out</td><td>Beginning of the output buffer </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">out_pos</td><td>The next byte will be written to out[*out_pos]. *out_pos is updated only if encoding succeeds. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">out_size</td><td>Size of the out buffer; the first byte into which no data is written to is out[out_size].</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Encoding was successful.</li>
-<li>LZMA_BUF_ERROR: Not enough output buffer space.</li>
-<li>LZMA_OPTIONS_ERROR</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_DATA_ERROR</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a3b942df507e4f9a6d7525e5a4c6864e5" name="a3b942df507e4f9a6d7525e5a4c6864e5"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a3b942df507e4f9a6d7525e5a4c6864e5">&#9670;&#160;</a></span>lzma_raw_buffer_decode()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_raw_buffer_decode </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="structlzma__filter.html">lzma_filter</a> *&#160;</td>
- <td class="paramname"><em>filters</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *&#160;</td>
- <td class="paramname"><em>allocator</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint8_t *&#160;</td>
- <td class="paramname"><em>in</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t *&#160;</td>
- <td class="paramname"><em>in_pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>in_size</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint8_t *&#160;</td>
- <td class="paramname"><em>out</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t *&#160;</td>
- <td class="paramname"><em>out_pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>out_size</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Single-call raw decoder. </p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir"></td><td class="paramname">filters</td><td>Array of filters terminated with .id == LZMA_VLI_UNKNOWN. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">allocator</td><td><a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> for custom allocator functions. Set to NULL to use malloc() and free(). </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in</td><td>Beginning of the input buffer </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in_pos</td><td>The next byte will be read from in[*in_pos]. *in_pos is updated only if decoding succeeds. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in_size</td><td>Size of the input buffer; the first byte that won't be read is in[in_size]. </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">out</td><td>Beginning of the output buffer </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">out_pos</td><td>The next byte will be written to out[*out_pos]. *out_pos is updated only if encoding succeeds. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">out_size</td><td>Size of the out buffer; the first byte into which no data is written to is out[out_size].</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Decoding was successful.</li>
-<li>LZMA_BUF_ERROR: Not enough output buffer space.</li>
-<li>LZMA_OPTIONS_ERROR</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_DATA_ERROR</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="aee038818cf7bbe044c3f7a7c86998c1b" name="aee038818cf7bbe044c3f7a7c86998c1b"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aee038818cf7bbe044c3f7a7c86998c1b">&#9670;&#160;</a></span>lzma_properties_size()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_properties_size </td>
- <td>(</td>
- <td class="paramtype">uint32_t *&#160;</td>
- <td class="paramname"><em>size</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__filter.html">lzma_filter</a> *&#160;</td>
- <td class="paramname"><em>filter</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Get the size of the Filter Properties field. </p>
-<p>This function may be useful when implementing custom file formats using the raw encoder and decoder.</p>
-<dl class="section note"><dt>Note</dt><dd>This function validates the Filter ID, but does not necessarily validate the options. Thus, it is possible that this returns LZMA_OK while the following call to <a class="el" href="filter_8h.html#a8e00887086df5a44084ac22e48415de3" title="Encode the Filter Properties field.">lzma_properties_encode()</a> returns LZMA_OPTIONS_ERROR.</dd></dl>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[out]</td><td class="paramname">size</td><td>Pointer to uint32_t to hold the size of the properties </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">filter</td><td>Filter ID and options (the size of the properties may vary depending on the options)</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK</li>
-<li>LZMA_OPTIONS_ERROR</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a8e00887086df5a44084ac22e48415de3" name="a8e00887086df5a44084ac22e48415de3"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a8e00887086df5a44084ac22e48415de3">&#9670;&#160;</a></span>lzma_properties_encode()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_properties_encode </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="structlzma__filter.html">lzma_filter</a> *&#160;</td>
- <td class="paramname"><em>filter</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint8_t *&#160;</td>
- <td class="paramname"><em>props</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Encode the Filter Properties field. </p>
-<dl class="section note"><dt>Note</dt><dd>Even this function won't validate more options than actually necessary. Thus, it is possible that encoding the properties succeeds but using the same options to initialize the encoder will fail.</dd>
-<dd>
-If <a class="el" href="filter_8h.html#aee038818cf7bbe044c3f7a7c86998c1b" title="Get the size of the Filter Properties field.">lzma_properties_size()</a> indicated that the size of the Filter Properties field is zero, calling <a class="el" href="filter_8h.html#a8e00887086df5a44084ac22e48415de3" title="Encode the Filter Properties field.">lzma_properties_encode()</a> is not required, but it won't do any harm either.</dd></dl>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir"></td><td class="paramname">filter</td><td>Filter ID and options </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">props</td><td>Buffer to hold the encoded options. The size of the buffer must have been already determined with <a class="el" href="filter_8h.html#aee038818cf7bbe044c3f7a7c86998c1b" title="Get the size of the Filter Properties field.">lzma_properties_size()</a>.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a88d2e864b2039ac82802cc202278d478" name="a88d2e864b2039ac82802cc202278d478"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a88d2e864b2039ac82802cc202278d478">&#9670;&#160;</a></span>lzma_properties_decode()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_properties_decode </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__filter.html">lzma_filter</a> *&#160;</td>
- <td class="paramname"><em>filter</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *&#160;</td>
- <td class="paramname"><em>allocator</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint8_t *&#160;</td>
- <td class="paramname"><em>props</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>props_size</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Decode the Filter Properties field. </p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">filter</td><td>filter-&gt;id must have been set to the correct Filter ID. filter-&gt;options doesn't need to be initialized (it's not freed by this function). The decoded options will be stored in filter-&gt;options; it's application's responsibility to free it when appropriate. filter-&gt;options is set to NULL if there are no properties or if an error occurs. </td></tr>
- <tr><td class="paramname">allocator</td><td><a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> for custom allocator functions. Set to NULL to use malloc() and free(). and in case of an error, also free(). </td></tr>
- <tr><td class="paramname">props</td><td>Input buffer containing the properties. </td></tr>
- <tr><td class="paramname">props_size</td><td>Size of the properties. This must be the exact size; giving too much or too little input will return LZMA_OPTIONS_ERROR.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK</li>
-<li>LZMA_OPTIONS_ERROR</li>
-<li>LZMA_MEM_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a996c9c21840ed54e37bd1f664a79d940" name="a996c9c21840ed54e37bd1f664a79d940"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a996c9c21840ed54e37bd1f664a79d940">&#9670;&#160;</a></span>lzma_filter_flags_size()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_filter_flags_size </td>
- <td>(</td>
- <td class="paramtype">uint32_t *&#160;</td>
- <td class="paramname"><em>size</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__filter.html">lzma_filter</a> *&#160;</td>
- <td class="paramname"><em>filter</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Calculate encoded size of a Filter Flags field. </p>
-<p>Knowing the size of Filter Flags is useful to know when allocating memory to hold the encoded Filter Flags.</p>
-<dl class="section note"><dt>Note</dt><dd>If you need to calculate size of List of Filter Flags, you need to loop over every <a class="el" href="structlzma__filter.html" title="Filter options.">lzma_filter</a> entry.</dd></dl>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[out]</td><td class="paramname">size</td><td>Pointer to integer to hold the calculated size </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">filter</td><td>Filter ID and associated options whose encoded size is to be calculated</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: *size set successfully. Note that this doesn't guarantee that filter-&gt;options is valid, thus <a class="el" href="filter_8h.html#a96f23309bc21398fece18c00ebe7db98" title="Encode Filter Flags into given buffer.">lzma_filter_flags_encode()</a> may still fail.</li>
-<li>LZMA_OPTIONS_ERROR: Unknown Filter ID or unsupported options.</li>
-<li>LZMA_PROG_ERROR: Invalid options </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a96f23309bc21398fece18c00ebe7db98" name="a96f23309bc21398fece18c00ebe7db98"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a96f23309bc21398fece18c00ebe7db98">&#9670;&#160;</a></span>lzma_filter_flags_encode()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_filter_flags_encode </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="structlzma__filter.html">lzma_filter</a> *&#160;</td>
- <td class="paramname"><em>filter</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint8_t *&#160;</td>
- <td class="paramname"><em>out</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t *&#160;</td>
- <td class="paramname"><em>out_pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>out_size</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Encode Filter Flags into given buffer. </p>
-<p>In contrast to some functions, this doesn't allocate the needed buffer. This is due to how this function is used internally by liblzma.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir"></td><td class="paramname">filter</td><td>Filter ID and options to be encoded </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">out</td><td>Beginning of the output buffer </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">out_pos</td><td>out[*out_pos] is the next write position. This is updated by the encoder. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">out_size</td><td>out[out_size] is the first byte to not write.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Encoding was successful.</li>
-<li>LZMA_OPTIONS_ERROR: Invalid or unsupported options.</li>
-<li>LZMA_PROG_ERROR: Invalid options or not enough output buffer space (you should have checked it with <a class="el" href="filter_8h.html#a996c9c21840ed54e37bd1f664a79d940" title="Calculate encoded size of a Filter Flags field.">lzma_filter_flags_size()</a>). </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a4cba9a4c658cce0ff01fd102b31ea1a7" name="a4cba9a4c658cce0ff01fd102b31ea1a7"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a4cba9a4c658cce0ff01fd102b31ea1a7">&#9670;&#160;</a></span>lzma_filter_flags_decode()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_filter_flags_decode </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__filter.html">lzma_filter</a> *&#160;</td>
- <td class="paramname"><em>filter</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *&#160;</td>
- <td class="paramname"><em>allocator</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint8_t *&#160;</td>
- <td class="paramname"><em>in</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t *&#160;</td>
- <td class="paramname"><em>in_pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>in_size</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Decode Filter Flags from given buffer. </p>
-<p>The decoded result is stored into *filter. The old value of filter-&gt;options is not free()d. If anything other than LZMA_OK is returned, filter-&gt;options is set to NULL.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[out]</td><td class="paramname">filter</td><td>Destination filter. The decoded Filter ID will be stored in filter-&gt;id. If options are needed they will be allocated and the pointer will be stored in filter-&gt;options. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">allocator</td><td><a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> for custom allocator functions. Set to NULL to use malloc() and free(). </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in</td><td>Beginning of the input buffer </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">in_pos</td><td>The next byte will be read from in[*in_pos]. *in_pos is updated only if decoding succeeds. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in_size</td><td>Size of the input buffer; the first byte that won't be read is in[in_size].</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK</li>
-<li>LZMA_OPTIONS_ERROR</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_DATA_ERROR</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="aa042cf11749bc2183b27de1c3142da30" name="aa042cf11749bc2183b27de1c3142da30"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aa042cf11749bc2183b27de1c3142da30">&#9670;&#160;</a></span>lzma_str_to_filters()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char * lzma_str_to_filters </td>
- <td>(</td>
- <td class="paramtype">const char *&#160;</td>
- <td class="paramname"><em>str</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int *&#160;</td>
- <td class="paramname"><em>error_pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="structlzma__filter.html">lzma_filter</a> *&#160;</td>
- <td class="paramname"><em>filters</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint32_t&#160;</td>
- <td class="paramname"><em>flags</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *&#160;</td>
- <td class="paramname"><em>allocator</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Convert a string to a filter chain. </p>
-<p>This tries to make it easier to write applications that allow users to set custom compression options. This only handles the filter configuration (including presets) but not the number of threads, block size, check type, or memory limits.</p>
-<p>The input string can be either a preset or a filter chain. Presets begin with a digit 0-9 and may be followed by zero or more flags which are lower-case letters. Currently only "e" is supported, matching LZMA_PRESET_EXTREME. For partial xz command line syntax compatibility, a preset string may start with a single dash "-".</p>
-<p>A filter chain consists of one or more "filtername:opt1=value1,opt2=value2" strings separated by one or more spaces. Leading and trailing spaces are ignored. All names and values must be lower-case. Extra commas in the option list are ignored. The order of filters is significant: when encoding, the uncompressed input data goes to the leftmost filter first. Normally "lzma2" is the last filter in the chain.</p>
-<p>If one wishes to avoid spaces, for example, to avoid shell quoting, it is possible to use two dashes "--" instead of spaces to separate the filters.</p>
-<p>For xz command line compatibility, each filter may be prefixed with two dashes "--" and the colon ":" separating the filter name from the options may be replaced with an equals sign "=".</p>
-<p>By default, only filters that can be used in the .xz format are accepted. To allow all filters (LZMA1) use the flag LZMA_STR_ALL_FILTERS.</p>
-<p>By default, very basic validation is done for the filter chain as a whole, for example, that LZMA2 is only used as the last filter in the chain. The validation isn't perfect though and it's possible that this function succeeds but using the filter chain for encoding or decoding will still result in LZMA_OPTIONS_ERROR. To disable this validation, use the flag LZMA_STR_NO_VALIDATION.</p>
-<p>The available filter names and their options are available via <a class="el" href="filter_8h.html#ab51585b68796ce0270f87e615b923809" title="List available filters and/or their options (for help message)">lzma_str_list_filters()</a>. See the xz man page for the description of filter names and options.</p>
-<p>For command line applications, below is an example how an error message can be displayed. Note the use of an empty string for the field width. If "^" was used there it would create an off-by-one error except at the very beginning of the line.</p>
-<div class="fragment"><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span> *str = ...; <span class="comment">// From user</span></div>
-<div class="line"><a class="code hl_struct" href="structlzma__filter.html" title="Filter options.">lzma_filter</a> filters[<a class="code hl_define" href="filter_8h.html#ab33c0cc1728bf390e5b84f8bce1928ba" title="Maximum number of filters in a chain.">LZMA_FILTERS_MAX</a> + 1];</div>
-<div class="line"><span class="keywordtype">int</span> pos;</div>
-<div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span> *msg = <a class="code hl_function" href="filter_8h.html#aa042cf11749bc2183b27de1c3142da30" title="Convert a string to a filter chain.">lzma_str_to_filters</a>(str, &amp;pos, filters, 0, NULL);</div>
-<div class="line"><span class="keywordflow">if</span> (msg != NULL) {</div>
-<div class="line"> printf(<span class="stringliteral">&quot;%s: Error in XZ compression options:\n&quot;</span>, argv[0]);</div>
-<div class="line"> printf(<span class="stringliteral">&quot;%s: %s\n&quot;</span>, argv[0], str);</div>
-<div class="line"> printf(<span class="stringliteral">&quot;%s: %*s^\n&quot;</span>, argv[0], errpos, <span class="stringliteral">&quot;&quot;</span>);</div>
-<div class="line"> printf(<span class="stringliteral">&quot;%s: %s\n&quot;</span>, argv[0], msg);</div>
-<div class="line">}</div>
-</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir"></td><td class="paramname">str</td><td>User-supplied string describing a preset or a filter chain. If a default value is needed and you don't know what would be good, use "6" since that is the default preset in xz too. </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">error_pos</td><td>If this isn't NULL, this value will be set on both success and on all errors. This tells the location of the error in the string. This is an int to make it straightforward to use this as printf() field width. The value is guaranteed to be in the range [0, INT_MAX] even if strlen(str) somehow was greater than INT_MAX. </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">filters</td><td>An array of <a class="el" href="structlzma__filter.html" title="Filter options.">lzma_filter</a> structures. There must be LZMA_FILTERS_MAX + 1 (that is, five) elements in the array. The old contents are ignored so it doesn't need to be initialized. This array is modified only if this function returns NULL. Once the allocated filter options are no longer needed, <a class="el" href="filter_8h.html#ae06979d219897f5f4c29cbc7a96a8892" title="Free the options in the array of lzma_filter structures.">lzma_filters_free()</a> can be used to free the options (it doesn't free the filters array itself). </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">flags</td><td>Bitwise-or of zero or more of the flags LZMA_STR_ALL_FILTERS and LZMA_STR_NO_VALIDATION. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">allocator</td><td><a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> for custom allocator functions. Set to NULL to use malloc() and free().</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>On success, NULL is returned. On error, a statically-allocated error message is returned which together with the error_pos should give some idea what is wrong. </dd></dl>
-
-</div>
-</div>
-<a id="a7deeb86ef59a9111b8033681290e0fb0" name="a7deeb86ef59a9111b8033681290e0fb0"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a7deeb86ef59a9111b8033681290e0fb0">&#9670;&#160;</a></span>lzma_str_from_filters()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_str_from_filters </td>
- <td>(</td>
- <td class="paramtype">char **&#160;</td>
- <td class="paramname"><em>str</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__filter.html">lzma_filter</a> *&#160;</td>
- <td class="paramname"><em>filters</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint32_t&#160;</td>
- <td class="paramname"><em>flags</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *&#160;</td>
- <td class="paramname"><em>allocator</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Convert a filter chain to a string. </p>
-<p>Use cases:</p>
-<ul>
-<li>Verbose output showing the full encoder options to the user (use LZMA_STR_ENCODER in flags)</li>
-<li>Showing the filters and options that are required to decode a file (use LZMA_STR_DECODER in flags)</li>
-<li>Showing the filter names without any options in informational messages where the technical details aren't important (no flags). In this case the .options in the filters array are ignored and may be NULL even if a filter has a mandatory options structure.</li>
-</ul>
-<p>Note that even if the filter chain was specified using a preset, the resulting filter chain isn't reversed to a preset. So if you specify "6" to <a class="el" href="filter_8h.html#aa042cf11749bc2183b27de1c3142da30" title="Convert a string to a filter chain.">lzma_str_to_filters()</a> then <a class="el" href="filter_8h.html#a7deeb86ef59a9111b8033681290e0fb0" title="Convert a filter chain to a string.">lzma_str_from_filters()</a> will produce a string containing "lzma2".</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[out]</td><td class="paramname">str</td><td>On success *str will be set to point to an allocated string describing the given filter chain. Old value is ignored. On error *str is always set to NULL. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">filters</td><td>Array of filters terminated with .id == LZMA_VLI_UNKNOWN. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">flags</td><td>Bitwise-or of zero or more of the flags LZMA_STR_ENCODER, LZMA_STR_DECODER, LZMA_STR_GETOPT_LONG, and LZMA_STR_NO_SPACES. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">allocator</td><td><a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> for custom allocator functions. Set to NULL to use malloc() and free().</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK</li>
-<li>LZMA_OPTIONS_ERROR: Empty filter chain (filters[0].id == LZMA_VLI_UNKNOWN) or the filter chain includes a Filter ID that is not supported by this function.</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="ab51585b68796ce0270f87e615b923809" name="ab51585b68796ce0270f87e615b923809"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ab51585b68796ce0270f87e615b923809">&#9670;&#160;</a></span>lzma_str_list_filters()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_str_list_filters </td>
- <td>(</td>
- <td class="paramtype">char **&#160;</td>
- <td class="paramname"><em>str</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td>
- <td class="paramname"><em>filter_id</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint32_t&#160;</td>
- <td class="paramname"><em>flags</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *&#160;</td>
- <td class="paramname"><em>allocator</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>List available filters and/or their options (for help message) </p>
-<p>If a filter_id is given then only one line is created which contains the filter name. If LZMA_STR_ENCODER or LZMA_STR_DECODER is used then the options read by the encoder or decoder are printed on the same line.</p>
-<p>If filter_id is LZMA_VLI_UNKNOWN then all supported .xz-compatible filters are listed:</p>
-<ul>
-<li>If neither LZMA_STR_ENCODER nor LZMA_STR_DECODER is used then the supported filter names are listed on a single line separated by spaces.</li>
-<li>If LZMA_STR_ENCODER or LZMA_STR_DECODER is used then filters and the supported options are listed one filter per line. There won't be a newline after the last filter.</li>
-<li>If LZMA_STR_ALL_FILTERS is used then the list will include also those filters that cannot be used in the .xz format (LZMA1).</li>
-</ul>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">str</td><td>On success *str will be set to point to an allocated string listing the filters and options. Old value is ignored. On error *str is always set to NULL. </td></tr>
- <tr><td class="paramname">filter_id</td><td>Filter ID or LZMA_VLI_UNKNOWN. </td></tr>
- <tr><td class="paramname">flags</td><td>Bitwise-or of zero or more of the flags LZMA_STR_ALL_FILTERS, LZMA_STR_ENCODER, LZMA_STR_DECODER, and LZMA_STR_GETOPT_LONG. </td></tr>
- <tr><td class="paramname">allocator</td><td><a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> for custom allocator functions. Set to NULL to use malloc() and free().</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK</li>
-<li>LZMA_OPTIONS_ERROR: Unsupported filter_id or flags</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/folderclosed.svg b/doc/api/folderclosed.svg
deleted file mode 100644
index 47d22df..0000000
--- a/doc/api/folderclosed.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
- "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" width="16" height="24" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
-<g style="fill:#195794;">
-<path d="M1,5.998l-0,16.002c-0,1.326 0.527,2.598 1.464,3.536c0.938,0.937 2.21,1.464 3.536,1.464c5.322,0 14.678,-0 20,0c1.326,0 2.598,-0.527 3.536,-1.464c0.937,-0.938 1.464,-2.21 1.464,-3.536c0,-3.486 0,-8.514 0,-12c0,-1.326 -0.527,-2.598 -1.464,-3.536c-0.938,-0.937 -2.21,-1.464 -3.536,-1.464c-0,0 -10.586,0 -10.586,0c0,-0 -3.707,-3.707 -3.707,-3.707c-0.187,-0.188 -0.442,-0.293 -0.707,-0.293l-5.002,0c-2.76,0 -4.998,2.238 -4.998,4.998Zm2,-0l-0,16.002c-0,0.796 0.316,1.559 0.879,2.121c0.562,0.563 1.325,0.879 2.121,0.879l20,0c0.796,0 1.559,-0.316 2.121,-0.879c0.563,-0.562 0.879,-1.325 0.879,-2.121c0,-3.486 0,-8.514 0,-12c0,-0.796 -0.316,-1.559 -0.879,-2.121c-0.562,-0.563 -1.325,-0.879 -2.121,-0.879c-7.738,0 -11,0 -11,0c-0.265,0 -0.52,-0.105 -0.707,-0.293c-0,0 -3.707,-3.707 -3.707,-3.707c-0,0 -4.588,0 -4.588,0c-1.656,0 -2.998,1.342 -2.998,2.998Z"/>
-</g>
-<g style="fill:#BFD9F4;stroke-width:0;">
-<path d="M 5.6063709,24.951908 C 4.3924646,24.775461 3.4197129,23.899792 3.1031586,22.698521 L 3.0216155,22.389078 V 13.997725 5.6063709 L 3.1037477,5.2982247 C 3.3956682,4.2029881 4.1802788,3.412126 5.2787258,3.105917 5.5646428,3.0262132 5.6154982,3.0244963 8.0611641,3.0119829 l 2.4911989,-0.012746 1.932009,1.9300342 c 1.344142,1.3427669 1.976319,1.9498819 2.07763,1.9952626 0.137456,0.061571 0.474218,0.066269 6.006826,0.083795 l 5.861206,0.018568 0.29124,0.081916 c 1.094895,0.3079569 1.890116,1.109428 2.175567,2.192667 l 0.08154,0.3094425 V 16 22.389078 l -0.08154,0.309443 c -0.28446,1.079482 -1.086411,1.888085 -2.175567,2.193614 l -0.29124,0.0817 -10.302616,0.0049 c -5.700217,0.0027 -10.4001945,-0.0093 -10.5210471,-0.02684 z"/>
-</g>
-</svg>
diff --git a/doc/api/folderclosedd.svg b/doc/api/folderclosedd.svg
deleted file mode 100644
index 8fe0031..0000000
--- a/doc/api/folderclosedd.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
- "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" width="16" height="24" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
-<g style="fill:#A0C7EE;">
-<path d="M1,5.998l-0,16.002c-0,1.326 0.527,2.598 1.464,3.536c0.938,0.937 2.21,1.464 3.536,1.464c5.322,0 14.678,-0 20,0c1.326,0 2.598,-0.527 3.536,-1.464c0.937,-0.938 1.464,-2.21 1.464,-3.536c0,-3.486 0,-8.514 0,-12c0,-1.326 -0.527,-2.598 -1.464,-3.536c-0.938,-0.937 -2.21,-1.464 -3.536,-1.464c-0,0 -10.586,0 -10.586,0c0,-0 -3.707,-3.707 -3.707,-3.707c-0.187,-0.188 -0.442,-0.293 -0.707,-0.293l-5.002,0c-2.76,0 -4.998,2.238 -4.998,4.998Zm2,-0l-0,16.002c-0,0.796 0.316,1.559 0.879,2.121c0.562,0.563 1.325,0.879 2.121,0.879l20,0c0.796,0 1.559,-0.316 2.121,-0.879c0.563,-0.562 0.879,-1.325 0.879,-2.121c0,-3.486 0,-8.514 0,-12c0,-0.796 -0.316,-1.559 -0.879,-2.121c-0.562,-0.563 -1.325,-0.879 -2.121,-0.879c-7.738,0 -11,0 -11,0c-0.265,0 -0.52,-0.105 -0.707,-0.293c-0,0 -3.707,-3.707 -3.707,-3.707c-0,0 -4.588,0 -4.588,0c-1.656,0 -2.998,1.342 -2.998,2.998Z"/>
-</g>
-<g style="fill:#195794;stroke-width:0;">
-<path d="M 5.6063709,24.951908 C 4.3924646,24.775461 3.4197129,23.899792 3.1031586,22.698521 L 3.0216155,22.389078 V 13.997725 5.6063709 L 3.1037477,5.2982247 C 3.3956682,4.2029881 4.1802788,3.412126 5.2787258,3.105917 5.5646428,3.0262132 5.6154982,3.0244963 8.0611641,3.0119829 l 2.4911989,-0.012746 1.932009,1.9300342 c 1.344142,1.3427669 1.976319,1.9498819 2.07763,1.9952626 0.137456,0.061571 0.474218,0.066269 6.006826,0.083795 l 5.861206,0.018568 0.29124,0.081916 c 1.094895,0.3079569 1.890116,1.109428 2.175567,2.192667 l 0.08154,0.3094425 V 16 22.389078 l -0.08154,0.309443 c -0.28446,1.079482 -1.086411,1.888085 -2.175567,2.193614 l -0.29124,0.0817 -10.302616,0.0049 c -5.700217,0.0027 -10.4001945,-0.0093 -10.5210471,-0.02684 z"/>
-</g>
-</svg>
diff --git a/doc/api/folderopen.svg b/doc/api/folderopen.svg
deleted file mode 100644
index 9565570..0000000
--- a/doc/api/folderopen.svg
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
- "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" width="16" height="24" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
-<g style="fill:#195794;">
-<path
- d="M1,5.998l0,16.002c-0,1.326 0.527,2.598 1.464,3.536c0.938,0.937 2.21,1.464 3.536,1.464c5.322,0 14.678,-0 20,0c1.326,0 2.598,-0.527 3.536,-1.464c0.937,-0.938 1.464,-2.21 1.464,-3.536c0,-3.486 0,-8.514 0,-12c0,-1.326 -0.527,-2.598 -1.464,-3.536c-0.938,-0.937 -2.21,-1.464 -3.536,-1.464c-0,0 -10.586,0 -10.586,0c0,-0 -3.707,-3.707 -3.707,-3.707c-0.187,-0.188 -0.442,-0.293 -0.707,-0.293l-5.002,0c-2.76,0 -4.998,2.238 -4.998,4.998Zm28,14.415l-3.456,-5.925c-0.538,-0.921 -1.524,-1.488 -2.591,-1.488c-0,0 -12.905,0 -12.906,0c-1.067,0 -2.053,0.567 -2.591,1.488l-4.453,7.635c0.03,0.751 0.342,1.465 0.876,1.998c0.562,0.563 1.325,0.879 2.121,0.879l20,0c0.796,0 1.559,-0.316 2.121,-0.879c0.563,-0.562 0.879,-1.325 0.879,-2.121l0,-1.587Zm0,-3.969l0,-6.444c0,-0.796 -0.316,-1.559 -0.879,-2.121c-0.562,-0.563 -1.325,-0.879 -2.121,-0.879c-7.738,0 -11,0 -11,0c-0.265,0 -0.52,-0.105 -0.707,-0.293c-0,0 -3.707,-3.707 -3.707,-3.707c-0,0 -4.588,0 -4.588,0c-1.656,0 -2.998,1.342 -2.998,2.998l0,12.16l2.729,-4.677c0.896,-1.536 2.54,-2.481 4.318,-2.481c3.354,0 9.552,0 12.906,0c1.778,0 3.422,0.945 4.318,2.481l1.729,2.963Z"
- id="path2" />
-</g>
-<g style="fill:#BFD9F4;stroke-width:0;">
-<path
- d="M 5.3879408,24.913408 C 4.1598821,24.650818 3.1571088,23.558656 3.053503,22.370876 L 3.0312746,22.116041 5.2606813,18.293515 C 6.486855,16.191126 7.5598351,14.372696 7.6450818,14.25256 8.0043056,13.746312 8.5423079,13.363007 9.2104664,13.137285 l 0.2548351,-0.08609 6.9294785,-0.0097 c 6.805096,-0.0095 6.934944,-0.0084 7.234011,0.06267 0.695577,0.165199 1.290483,0.557253 1.714887,1.130141 0.08158,0.110125 0.938747,1.556711 1.90481,3.214634 l 1.756479,3.014406 -0.0186,0.971942 c -0.01387,0.724723 -0.03365,1.032131 -0.07778,1.208575 -0.242792,0.970733 -0.88732,1.735415 -1.772382,2.102793 -0.58835,0.244217 0.247209,0.227436 -11.161974,0.224159 -9.0281537,-0.0026 -10.3636023,-0.0098 -10.5862902,-0.05746 z"
- id="path199" /><path
- d="M 3.0126385,11.849829 3.0235061,5.5881684 3.1020974,5.2969283 C 3.3478146,4.3863605 3.93576,3.6757372 4.756668,3.2971229 5.3293315,3.0330025 5.1813272,3.0450949 8.0130385,3.0310668 l 2.5522875,-0.012644 1.918693,1.9107086 c 1.404146,1.3983023 1.964459,1.9332518 2.089351,1.9947704 l 0.170657,0.084062 5.897611,0.019367 c 5.553257,0.018236 5.910365,0.023213 6.116041,0.085231 1.102257,0.3323708 1.857042,1.1184422 2.154229,2.2435244 0.05645,0.2137228 0.06373,0.5643981 0.07519,3.6220748 0.0076,2.032169 -5.42e-4,3.370979 -0.02041,3.349261 -0.0182,-0.0199 -0.414296,-0.691472 -0.880217,-1.492382 -0.46592,-0.80091 -0.93093,-1.577954 -1.033354,-1.726764 -0.735716,-1.0689 -1.983568,-1.844244 -3.315972,-2.060353 -0.280375,-0.04548 -1.345158,-0.05334 -7.238708,-0.05347 -4.713933,-1.09e-4 -6.9931825,0.01221 -7.1717862,0.03874 -1.3002273,0.193134 -2.4770512,0.889916 -3.283628,1.944192 -0.1076466,0.140705 -0.8359664,1.353438 -1.6184885,2.694963 L 3.0017709,18.11149 Z"
- id="path201" />
-</g>
-</svg>
diff --git a/doc/api/folderopend.svg b/doc/api/folderopend.svg
deleted file mode 100644
index e72e225..0000000
--- a/doc/api/folderopend.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
- "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" width="16" height="24" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
-<g style="fill:#A0C7EE;">
-<path d="M1,5.998l0,16.002c-0,1.326 0.527,2.598 1.464,3.536c0.938,0.937 2.21,1.464 3.536,1.464c5.322,0 14.678,-0 20,0c1.326,0 2.598,-0.527 3.536,-1.464c0.937,-0.938 1.464,-2.21 1.464,-3.536c0,-3.486 0,-8.514 0,-12c0,-1.326 -0.527,-2.598 -1.464,-3.536c-0.938,-0.937 -2.21,-1.464 -3.536,-1.464c-0,0 -10.586,0 -10.586,0c0,-0 -3.707,-3.707 -3.707,-3.707c-0.187,-0.188 -0.442,-0.293 -0.707,-0.293l-5.002,0c-2.76,0 -4.998,2.238 -4.998,4.998Zm28,14.415l-3.456,-5.925c-0.538,-0.921 -1.524,-1.488 -2.591,-1.488c-0,0 -12.905,0 -12.906,0c-1.067,0 -2.053,0.567 -2.591,1.488l-4.453,7.635c0.03,0.751 0.342,1.465 0.876,1.998c0.562,0.563 1.325,0.879 2.121,0.879l20,0c0.796,0 1.559,-0.316 2.121,-0.879c0.563,-0.562 0.879,-1.325 0.879,-2.121l0,-1.587Zm0,-3.969l0,-6.444c0,-0.796 -0.316,-1.559 -0.879,-2.121c-0.562,-0.563 -1.325,-0.879 -2.121,-0.879c-7.738,0 -11,0 -11,0c-0.265,0 -0.52,-0.105 -0.707,-0.293c-0,0 -3.707,-3.707 -3.707,-3.707c-0,0 -4.588,0 -4.588,0c-1.656,0 -2.998,1.342 -2.998,2.998l0,12.16l2.729,-4.677c0.896,-1.536 2.54,-2.481 4.318,-2.481c3.354,0 9.552,0 12.906,0c1.778,0 3.422,0.945 4.318,2.481l1.729,2.963Z"/>
-</g>
-<g style="fill:#195794;stroke-width:0;">
-<path d="M 5.3879408,24.913408 C 4.1598821,24.650818 3.1571088,23.558656 3.053503,22.370876 L 3.0312746,22.116041 5.2606813,18.293515 C 6.486855,16.191126 7.5598351,14.372696 7.6450818,14.25256 8.0043056,13.746312 8.5423079,13.363007 9.2104664,13.137285 l 0.2548351,-0.08609 6.9294785,-0.0097 c 6.805096,-0.0095 6.934944,-0.0084 7.234011,0.06267 0.695577,0.165199 1.290483,0.557253 1.714887,1.130141 0.08158,0.110125 0.938747,1.556711 1.90481,3.214634 l 1.756479,3.014406 -0.0186,0.971942 c -0.01387,0.724723 -0.03365,1.032131 -0.07778,1.208575 -0.242792,0.970733 -0.88732,1.735415 -1.772382,2.102793 -0.58835,0.244217 0.247209,0.227436 -11.161974,0.224159 -9.0281537,-0.0026 -10.3636023,-0.0098 -10.5862902,-0.05746 z" />
-<path d="M 3.0126385,11.849829 3.0235061,5.5881684 3.1020974,5.2969283 C 3.3478146,4.3863605 3.93576,3.6757372 4.756668,3.2971229 5.3293315,3.0330025 5.1813272,3.0450949 8.0130385,3.0310668 l 2.5522875,-0.012644 1.918693,1.9107086 c 1.404146,1.3983023 1.964459,1.9332518 2.089351,1.9947704 l 0.170657,0.084062 5.897611,0.019367 c 5.553257,0.018236 5.910365,0.023213 6.116041,0.085231 1.102257,0.3323708 1.857042,1.1184422 2.154229,2.2435244 0.05645,0.2137228 0.06373,0.5643981 0.07519,3.6220748 0.0076,2.032169 -5.42e-4,3.370979 -0.02041,3.349261 -0.0182,-0.0199 -0.414296,-0.691472 -0.880217,-1.492382 -0.46592,-0.80091 -0.93093,-1.577954 -1.033354,-1.726764 -0.735716,-1.0689 -1.983568,-1.844244 -3.315972,-2.060353 -0.280375,-0.04548 -1.345158,-0.05334 -7.238708,-0.05347 -4.713933,-1.09e-4 -6.9931825,0.01221 -7.1717862,0.03874 -1.3002273,0.193134 -2.4770512,0.889916 -3.283628,1.944192 -0.1076466,0.140705 -0.8359664,1.353438 -1.6184885,2.694963 L 3.0017709,18.11149 Z" />
-</g>
-</svg>
diff --git a/doc/api/functions.html b/doc/api/functions.html
deleted file mode 100644
index b50cf73..0000000
--- a/doc/api/functions.html
+++ /dev/null
@@ -1,210 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
- </ul>
- </div>
- <div id="navrow3" class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- </ul>
- </div>
- <div id="navrow4" class="tabs3">
- <ul class="tablist">
- <li><a href="#index_a"><span>a</span></a></li>
- <li><a href="#index_b"><span>b</span></a></li>
- <li><a href="#index_c"><span>c</span></a></li>
- <li><a href="#index_d"><span>d</span></a></li>
- <li><a href="#index_e"><span>e</span></a></li>
- <li><a href="#index_f"><span>f</span></a></li>
- <li><a href="#index_h"><span>h</span></a></li>
- <li><a href="#index_i"><span>i</span></a></li>
- <li><a href="#index_l"><span>l</span></a></li>
- <li><a href="#index_m"><span>m</span></a></li>
- <li><a href="#index_n"><span>n</span></a></li>
- <li><a href="#index_o"><span>o</span></a></li>
- <li><a href="#index_p"><span>p</span></a></li>
- <li><a href="#index_r"><span>r</span></a></li>
- <li><a href="#index_s"><span>s</span></a></li>
- <li><a href="#index_t"><span>t</span></a></li>
- <li><a href="#index_u"><span>u</span></a></li>
- <li class="current"><a href="#index_v"><span>v</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div class="contents">
-<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
-
-<h3><a id="index_a" name="index_a"></a>- a -</h3><ul>
-<li>alloc&#160;:&#160;<a class="el" href="structlzma__allocator.html#aba5c4369af94cc9943423b49171462ec">lzma_allocator</a></li>
-<li>allocator&#160;:&#160;<a class="el" href="structlzma__stream.html#a4eb2f3e87e32cc4bea613898b0bd353f">lzma_stream</a></li>
-<li>avail_in&#160;:&#160;<a class="el" href="structlzma__stream.html#abb680ecea31910cbda1d7a6ad4f191c0">lzma_stream</a></li>
-<li>avail_out&#160;:&#160;<a class="el" href="structlzma__stream.html#a5ff28ea4e39148723c19f59811627904">lzma_stream</a></li>
-</ul>
-
-
-<h3><a id="index_b" name="index_b"></a>- b -</h3><ul>
-<li>backward_size&#160;:&#160;<a class="el" href="structlzma__stream__flags.html#aaa65ed7a55a098f829f04dba25d0f212">lzma_stream_flags</a></li>
-<li>block_count&#160;:&#160;<a class="el" href="structlzma__index__iter.html#abc6ee9be23e54f31aed07382c8caaf7c">lzma_index_iter</a></li>
-<li>block_size&#160;:&#160;<a class="el" href="structlzma__mt.html#a20cdc7865266ccb88da36a6e68f84d15">lzma_mt</a></li>
-</ul>
-
-
-<h3><a id="index_c" name="index_c"></a>- c -</h3><ul>
-<li>check&#160;:&#160;<a class="el" href="structlzma__block.html#a80cd9d3025991db4a476ce7588f853e6">lzma_block</a>, <a class="el" href="structlzma__mt.html#ae38846e8aca5b20d2a86a2364283b730">lzma_mt</a>, <a class="el" href="structlzma__stream__flags.html#ab1052ea7047c8d67f127f33278166647">lzma_stream_flags</a></li>
-<li>compressed_file_offset&#160;:&#160;<a class="el" href="structlzma__index__iter.html#a26436e75d4c2b5dd8d1de24140d8003e">lzma_index_iter</a></li>
-<li>compressed_offset&#160;:&#160;<a class="el" href="structlzma__index__iter.html#a426705df8dde4b094a42f91ea20a46ac">lzma_index_iter</a></li>
-<li>compressed_size&#160;:&#160;<a class="el" href="structlzma__block.html#a8383d489c9ffea8af390669a105c74e5">lzma_block</a>, <a class="el" href="structlzma__index__iter.html#a6e73b1f37e3fcf1e9491e4a53b2c52c7">lzma_index_iter</a></li>
-<li>compressed_stream_offset&#160;:&#160;<a class="el" href="structlzma__index__iter.html#a578bba553c43dc59a5e4032d4f6c89a3">lzma_index_iter</a></li>
-</ul>
-
-
-<h3><a id="index_d" name="index_d"></a>- d -</h3><ul>
-<li>depth&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#a4226f686e8c9f6288595fe23d0e15713">lzma_options_lzma</a></li>
-<li>dict_size&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#aeb3f86002405a1191af86def46fca5ad">lzma_options_lzma</a></li>
-<li>dist&#160;:&#160;<a class="el" href="structlzma__options__delta.html#a31b4b0b5a2462cb9433c2663b8a62790">lzma_options_delta</a></li>
-</ul>
-
-
-<h3><a id="index_e" name="index_e"></a>- e -</h3><ul>
-<li>ext_flags&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#ade251d13ef46bcacb4e052b83693878c">lzma_options_lzma</a></li>
-<li>ext_size_high&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#ae5b3c2375c43ddfacf093980385fb9e3">lzma_options_lzma</a></li>
-<li>ext_size_low&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#a971da8385dcebd01e60235afb3b717f9">lzma_options_lzma</a></li>
-</ul>
-
-
-<h3><a id="index_f" name="index_f"></a>- f -</h3><ul>
-<li>filters&#160;:&#160;<a class="el" href="structlzma__block.html#a5900e517e6e0a473a3184074ae7defd1">lzma_block</a>, <a class="el" href="structlzma__mt.html#ad43a62ef2178c76405e5be0ece7a98b4">lzma_mt</a></li>
-<li>flags&#160;:&#160;<a class="el" href="structlzma__index__iter.html#a223a046bcf09077a6e720967682deeae">lzma_index_iter</a>, <a class="el" href="structlzma__mt.html#a1c2fe028f547bf58b48b5199557d9a9f">lzma_mt</a></li>
-<li>free&#160;:&#160;<a class="el" href="structlzma__allocator.html#a3726deffd08393934263c04660208009">lzma_allocator</a></li>
-</ul>
-
-
-<h3><a id="index_h" name="index_h"></a>- h -</h3><ul>
-<li>header_size&#160;:&#160;<a class="el" href="structlzma__block.html#a6689c4f7524b2c05772a2d6151138610">lzma_block</a></li>
-</ul>
-
-
-<h3><a id="index_i" name="index_i"></a>- i -</h3><ul>
-<li>id&#160;:&#160;<a class="el" href="structlzma__filter.html#aef1d9709759f39e61db77547b2326929">lzma_filter</a></li>
-<li>ignore_check&#160;:&#160;<a class="el" href="structlzma__block.html#a516ac9cc63bc1a4fadd9fbfc189a206b">lzma_block</a></li>
-<li>internal&#160;:&#160;<a class="el" href="structlzma__stream.html#a209da54c2fb5dea40ad011c8408300d0">lzma_stream</a></li>
-</ul>
-
-
-<h3><a id="index_l" name="index_l"></a>- l -</h3><ul>
-<li>lc&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#a95f6188e5b5f05c50ec463a315df3585">lzma_options_lzma</a></li>
-<li>lp&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#a0fe9c54e808fce3090b6994d95fe41fe">lzma_options_lzma</a></li>
-</ul>
-
-
-<h3><a id="index_m" name="index_m"></a>- m -</h3><ul>
-<li>memlimit_stop&#160;:&#160;<a class="el" href="structlzma__mt.html#ab5e0b530d4c572c7a2361aabbad656aa">lzma_mt</a></li>
-<li>memlimit_threading&#160;:&#160;<a class="el" href="structlzma__mt.html#a5a7fb0c7c2db350e09e77477bc3c9509">lzma_mt</a></li>
-<li>mf&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#aa99612cd52259093007f33513882dcd0">lzma_options_lzma</a></li>
-<li>mode&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#a1d711df9bda046fd3899abf21fa250d5">lzma_options_lzma</a></li>
-</ul>
-
-
-<h3><a id="index_n" name="index_n"></a>- n -</h3><ul>
-<li>next_in&#160;:&#160;<a class="el" href="structlzma__stream.html#a72fdc738c793f07a5c29715aa57802cf">lzma_stream</a></li>
-<li>next_out&#160;:&#160;<a class="el" href="structlzma__stream.html#a14ee64ed636ddcb775edf87e2b9f42ec">lzma_stream</a></li>
-<li>nice_len&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#a0352ea7f8b6a43b745a44f6cb4e2d263">lzma_options_lzma</a></li>
-<li>number&#160;:&#160;<a class="el" href="structlzma__index__iter.html#a115a307dbc778a9de296376dc39c7b23">lzma_index_iter</a></li>
-<li>number_in_file&#160;:&#160;<a class="el" href="structlzma__index__iter.html#abe5333de53562189012d5ed084c0ef98">lzma_index_iter</a></li>
-<li>number_in_stream&#160;:&#160;<a class="el" href="structlzma__index__iter.html#a35a752d344ff5d35d2a858a20bd6e5e8">lzma_index_iter</a></li>
-</ul>
-
-
-<h3><a id="index_o" name="index_o"></a>- o -</h3><ul>
-<li>opaque&#160;:&#160;<a class="el" href="structlzma__allocator.html#aab293a5007a93299cc97ee8b5fb81268">lzma_allocator</a></li>
-<li>options&#160;:&#160;<a class="el" href="structlzma__filter.html#a10dfbaa1601793657d12320bef933ee6">lzma_filter</a></li>
-</ul>
-
-
-<h3><a id="index_p" name="index_p"></a>- p -</h3><ul>
-<li>padding&#160;:&#160;<a class="el" href="structlzma__index__iter.html#a48cfc856f283fe00b0df37402e012818">lzma_index_iter</a></li>
-<li>pb&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#acae107b3d3e9d0d4fe16103be22f4408">lzma_options_lzma</a></li>
-<li>preset&#160;:&#160;<a class="el" href="structlzma__mt.html#ab3883b5644752cdd15f01387d58dd050">lzma_mt</a></li>
-<li>preset_dict&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#a16a58c1ee3ec18c820d5cb03dde3739a">lzma_options_lzma</a></li>
-<li>preset_dict_size&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#a655ad4cce9e4dac9cf2a5c8daaa629e0">lzma_options_lzma</a></li>
-</ul>
-
-
-<h3><a id="index_r" name="index_r"></a>- r -</h3><ul>
-<li>raw_check&#160;:&#160;<a class="el" href="structlzma__block.html#a25e9bf1bb1699017694b18ca24f965d2">lzma_block</a></li>
-</ul>
-
-
-<h3><a id="index_s" name="index_s"></a>- s -</h3><ul>
-<li>seek_pos&#160;:&#160;<a class="el" href="structlzma__stream.html#af7c43a61f3dfeb0b9c8487b7f275054e">lzma_stream</a></li>
-<li>start_offset&#160;:&#160;<a class="el" href="structlzma__options__bcj.html#a3f5a3c62cd82ce89433684f12ed096ac">lzma_options_bcj</a></li>
-</ul>
-
-
-<h3><a id="index_t" name="index_t"></a>- t -</h3><ul>
-<li>threads&#160;:&#160;<a class="el" href="structlzma__mt.html#a881761f858dbda33c697e74acde0be70">lzma_mt</a></li>
-<li>timeout&#160;:&#160;<a class="el" href="structlzma__mt.html#a298992bf7d2154d8dd814560219d10c2">lzma_mt</a></li>
-<li>total_in&#160;:&#160;<a class="el" href="structlzma__stream.html#a1a411e1755d6185756caefabc3932c7b">lzma_stream</a></li>
-<li>total_out&#160;:&#160;<a class="el" href="structlzma__stream.html#a80d703ffdfd7661e344fe7b61ff737fa">lzma_stream</a></li>
-<li>total_size&#160;:&#160;<a class="el" href="structlzma__index__iter.html#ae164ca3d7492dcf5883769c38baac30e">lzma_index_iter</a></li>
-<li>type&#160;:&#160;<a class="el" href="structlzma__options__delta.html#af3f1ece7f8c472f4a794953b414c7cd7">lzma_options_delta</a></li>
-</ul>
-
-
-<h3><a id="index_u" name="index_u"></a>- u -</h3><ul>
-<li>uncompressed_file_offset&#160;:&#160;<a class="el" href="structlzma__index__iter.html#a2f3ecf341b5dc043e9673759b8ff47b9">lzma_index_iter</a></li>
-<li>uncompressed_offset&#160;:&#160;<a class="el" href="structlzma__index__iter.html#abd374b748b4a42e122b90841709609bc">lzma_index_iter</a></li>
-<li>uncompressed_size&#160;:&#160;<a class="el" href="structlzma__block.html#a17362d38d1946dd16a9686557ec19a94">lzma_block</a>, <a class="el" href="structlzma__index__iter.html#aafc48408ed40060a84ecd66bae5e1b23">lzma_index_iter</a></li>
-<li>uncompressed_stream_offset&#160;:&#160;<a class="el" href="structlzma__index__iter.html#a0fc4959fab08e1a6a4902c728c735a99">lzma_index_iter</a></li>
-<li>unpadded_size&#160;:&#160;<a class="el" href="structlzma__index__iter.html#a9f4e405b9884be08e3a35bc06e3e15df">lzma_index_iter</a></li>
-</ul>
-
-
-<h3><a id="index_v" name="index_v"></a>- v -</h3><ul>
-<li>version&#160;:&#160;<a class="el" href="structlzma__block.html#ac3936a5b0ec3f9b8f9c7ad68e7d149a5">lzma_block</a>, <a class="el" href="structlzma__stream__flags.html#a61e9151869d5b77c868aaa4958e74d10">lzma_stream_flags</a></li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/functions_vars.html b/doc/api/functions_vars.html
deleted file mode 100644
index f6d689c..0000000
--- a/doc/api/functions_vars.html
+++ /dev/null
@@ -1,210 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): Data Fields - Variables</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
- </ul>
- </div>
- <div id="navrow3" class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
- </ul>
- </div>
- <div id="navrow4" class="tabs3">
- <ul class="tablist">
- <li><a href="#index_a"><span>a</span></a></li>
- <li><a href="#index_b"><span>b</span></a></li>
- <li><a href="#index_c"><span>c</span></a></li>
- <li><a href="#index_d"><span>d</span></a></li>
- <li><a href="#index_e"><span>e</span></a></li>
- <li><a href="#index_f"><span>f</span></a></li>
- <li><a href="#index_h"><span>h</span></a></li>
- <li><a href="#index_i"><span>i</span></a></li>
- <li><a href="#index_l"><span>l</span></a></li>
- <li><a href="#index_m"><span>m</span></a></li>
- <li><a href="#index_n"><span>n</span></a></li>
- <li><a href="#index_o"><span>o</span></a></li>
- <li><a href="#index_p"><span>p</span></a></li>
- <li><a href="#index_r"><span>r</span></a></li>
- <li><a href="#index_s"><span>s</span></a></li>
- <li><a href="#index_t"><span>t</span></a></li>
- <li><a href="#index_u"><span>u</span></a></li>
- <li class="current"><a href="#index_v"><span>v</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div class="contents">
-<div class="textblock">Here is a list of all documented variables with links to the struct/union documentation for each field:</div>
-
-<h3><a id="index_a" name="index_a"></a>- a -</h3><ul>
-<li>alloc&#160;:&#160;<a class="el" href="structlzma__allocator.html#aba5c4369af94cc9943423b49171462ec">lzma_allocator</a></li>
-<li>allocator&#160;:&#160;<a class="el" href="structlzma__stream.html#a4eb2f3e87e32cc4bea613898b0bd353f">lzma_stream</a></li>
-<li>avail_in&#160;:&#160;<a class="el" href="structlzma__stream.html#abb680ecea31910cbda1d7a6ad4f191c0">lzma_stream</a></li>
-<li>avail_out&#160;:&#160;<a class="el" href="structlzma__stream.html#a5ff28ea4e39148723c19f59811627904">lzma_stream</a></li>
-</ul>
-
-
-<h3><a id="index_b" name="index_b"></a>- b -</h3><ul>
-<li>backward_size&#160;:&#160;<a class="el" href="structlzma__stream__flags.html#aaa65ed7a55a098f829f04dba25d0f212">lzma_stream_flags</a></li>
-<li>block_count&#160;:&#160;<a class="el" href="structlzma__index__iter.html#abc6ee9be23e54f31aed07382c8caaf7c">lzma_index_iter</a></li>
-<li>block_size&#160;:&#160;<a class="el" href="structlzma__mt.html#a20cdc7865266ccb88da36a6e68f84d15">lzma_mt</a></li>
-</ul>
-
-
-<h3><a id="index_c" name="index_c"></a>- c -</h3><ul>
-<li>check&#160;:&#160;<a class="el" href="structlzma__block.html#a80cd9d3025991db4a476ce7588f853e6">lzma_block</a>, <a class="el" href="structlzma__mt.html#ae38846e8aca5b20d2a86a2364283b730">lzma_mt</a>, <a class="el" href="structlzma__stream__flags.html#ab1052ea7047c8d67f127f33278166647">lzma_stream_flags</a></li>
-<li>compressed_file_offset&#160;:&#160;<a class="el" href="structlzma__index__iter.html#a26436e75d4c2b5dd8d1de24140d8003e">lzma_index_iter</a></li>
-<li>compressed_offset&#160;:&#160;<a class="el" href="structlzma__index__iter.html#a426705df8dde4b094a42f91ea20a46ac">lzma_index_iter</a></li>
-<li>compressed_size&#160;:&#160;<a class="el" href="structlzma__block.html#a8383d489c9ffea8af390669a105c74e5">lzma_block</a>, <a class="el" href="structlzma__index__iter.html#a6e73b1f37e3fcf1e9491e4a53b2c52c7">lzma_index_iter</a></li>
-<li>compressed_stream_offset&#160;:&#160;<a class="el" href="structlzma__index__iter.html#a578bba553c43dc59a5e4032d4f6c89a3">lzma_index_iter</a></li>
-</ul>
-
-
-<h3><a id="index_d" name="index_d"></a>- d -</h3><ul>
-<li>depth&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#a4226f686e8c9f6288595fe23d0e15713">lzma_options_lzma</a></li>
-<li>dict_size&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#aeb3f86002405a1191af86def46fca5ad">lzma_options_lzma</a></li>
-<li>dist&#160;:&#160;<a class="el" href="structlzma__options__delta.html#a31b4b0b5a2462cb9433c2663b8a62790">lzma_options_delta</a></li>
-</ul>
-
-
-<h3><a id="index_e" name="index_e"></a>- e -</h3><ul>
-<li>ext_flags&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#ade251d13ef46bcacb4e052b83693878c">lzma_options_lzma</a></li>
-<li>ext_size_high&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#ae5b3c2375c43ddfacf093980385fb9e3">lzma_options_lzma</a></li>
-<li>ext_size_low&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#a971da8385dcebd01e60235afb3b717f9">lzma_options_lzma</a></li>
-</ul>
-
-
-<h3><a id="index_f" name="index_f"></a>- f -</h3><ul>
-<li>filters&#160;:&#160;<a class="el" href="structlzma__block.html#a5900e517e6e0a473a3184074ae7defd1">lzma_block</a>, <a class="el" href="structlzma__mt.html#ad43a62ef2178c76405e5be0ece7a98b4">lzma_mt</a></li>
-<li>flags&#160;:&#160;<a class="el" href="structlzma__index__iter.html#a223a046bcf09077a6e720967682deeae">lzma_index_iter</a>, <a class="el" href="structlzma__mt.html#a1c2fe028f547bf58b48b5199557d9a9f">lzma_mt</a></li>
-<li>free&#160;:&#160;<a class="el" href="structlzma__allocator.html#a3726deffd08393934263c04660208009">lzma_allocator</a></li>
-</ul>
-
-
-<h3><a id="index_h" name="index_h"></a>- h -</h3><ul>
-<li>header_size&#160;:&#160;<a class="el" href="structlzma__block.html#a6689c4f7524b2c05772a2d6151138610">lzma_block</a></li>
-</ul>
-
-
-<h3><a id="index_i" name="index_i"></a>- i -</h3><ul>
-<li>id&#160;:&#160;<a class="el" href="structlzma__filter.html#aef1d9709759f39e61db77547b2326929">lzma_filter</a></li>
-<li>ignore_check&#160;:&#160;<a class="el" href="structlzma__block.html#a516ac9cc63bc1a4fadd9fbfc189a206b">lzma_block</a></li>
-<li>internal&#160;:&#160;<a class="el" href="structlzma__stream.html#a209da54c2fb5dea40ad011c8408300d0">lzma_stream</a></li>
-</ul>
-
-
-<h3><a id="index_l" name="index_l"></a>- l -</h3><ul>
-<li>lc&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#a95f6188e5b5f05c50ec463a315df3585">lzma_options_lzma</a></li>
-<li>lp&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#a0fe9c54e808fce3090b6994d95fe41fe">lzma_options_lzma</a></li>
-</ul>
-
-
-<h3><a id="index_m" name="index_m"></a>- m -</h3><ul>
-<li>memlimit_stop&#160;:&#160;<a class="el" href="structlzma__mt.html#ab5e0b530d4c572c7a2361aabbad656aa">lzma_mt</a></li>
-<li>memlimit_threading&#160;:&#160;<a class="el" href="structlzma__mt.html#a5a7fb0c7c2db350e09e77477bc3c9509">lzma_mt</a></li>
-<li>mf&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#aa99612cd52259093007f33513882dcd0">lzma_options_lzma</a></li>
-<li>mode&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#a1d711df9bda046fd3899abf21fa250d5">lzma_options_lzma</a></li>
-</ul>
-
-
-<h3><a id="index_n" name="index_n"></a>- n -</h3><ul>
-<li>next_in&#160;:&#160;<a class="el" href="structlzma__stream.html#a72fdc738c793f07a5c29715aa57802cf">lzma_stream</a></li>
-<li>next_out&#160;:&#160;<a class="el" href="structlzma__stream.html#a14ee64ed636ddcb775edf87e2b9f42ec">lzma_stream</a></li>
-<li>nice_len&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#a0352ea7f8b6a43b745a44f6cb4e2d263">lzma_options_lzma</a></li>
-<li>number&#160;:&#160;<a class="el" href="structlzma__index__iter.html#a115a307dbc778a9de296376dc39c7b23">lzma_index_iter</a></li>
-<li>number_in_file&#160;:&#160;<a class="el" href="structlzma__index__iter.html#abe5333de53562189012d5ed084c0ef98">lzma_index_iter</a></li>
-<li>number_in_stream&#160;:&#160;<a class="el" href="structlzma__index__iter.html#a35a752d344ff5d35d2a858a20bd6e5e8">lzma_index_iter</a></li>
-</ul>
-
-
-<h3><a id="index_o" name="index_o"></a>- o -</h3><ul>
-<li>opaque&#160;:&#160;<a class="el" href="structlzma__allocator.html#aab293a5007a93299cc97ee8b5fb81268">lzma_allocator</a></li>
-<li>options&#160;:&#160;<a class="el" href="structlzma__filter.html#a10dfbaa1601793657d12320bef933ee6">lzma_filter</a></li>
-</ul>
-
-
-<h3><a id="index_p" name="index_p"></a>- p -</h3><ul>
-<li>padding&#160;:&#160;<a class="el" href="structlzma__index__iter.html#a48cfc856f283fe00b0df37402e012818">lzma_index_iter</a></li>
-<li>pb&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#acae107b3d3e9d0d4fe16103be22f4408">lzma_options_lzma</a></li>
-<li>preset&#160;:&#160;<a class="el" href="structlzma__mt.html#ab3883b5644752cdd15f01387d58dd050">lzma_mt</a></li>
-<li>preset_dict&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#a16a58c1ee3ec18c820d5cb03dde3739a">lzma_options_lzma</a></li>
-<li>preset_dict_size&#160;:&#160;<a class="el" href="structlzma__options__lzma.html#a655ad4cce9e4dac9cf2a5c8daaa629e0">lzma_options_lzma</a></li>
-</ul>
-
-
-<h3><a id="index_r" name="index_r"></a>- r -</h3><ul>
-<li>raw_check&#160;:&#160;<a class="el" href="structlzma__block.html#a25e9bf1bb1699017694b18ca24f965d2">lzma_block</a></li>
-</ul>
-
-
-<h3><a id="index_s" name="index_s"></a>- s -</h3><ul>
-<li>seek_pos&#160;:&#160;<a class="el" href="structlzma__stream.html#af7c43a61f3dfeb0b9c8487b7f275054e">lzma_stream</a></li>
-<li>start_offset&#160;:&#160;<a class="el" href="structlzma__options__bcj.html#a3f5a3c62cd82ce89433684f12ed096ac">lzma_options_bcj</a></li>
-</ul>
-
-
-<h3><a id="index_t" name="index_t"></a>- t -</h3><ul>
-<li>threads&#160;:&#160;<a class="el" href="structlzma__mt.html#a881761f858dbda33c697e74acde0be70">lzma_mt</a></li>
-<li>timeout&#160;:&#160;<a class="el" href="structlzma__mt.html#a298992bf7d2154d8dd814560219d10c2">lzma_mt</a></li>
-<li>total_in&#160;:&#160;<a class="el" href="structlzma__stream.html#a1a411e1755d6185756caefabc3932c7b">lzma_stream</a></li>
-<li>total_out&#160;:&#160;<a class="el" href="structlzma__stream.html#a80d703ffdfd7661e344fe7b61ff737fa">lzma_stream</a></li>
-<li>total_size&#160;:&#160;<a class="el" href="structlzma__index__iter.html#ae164ca3d7492dcf5883769c38baac30e">lzma_index_iter</a></li>
-<li>type&#160;:&#160;<a class="el" href="structlzma__options__delta.html#af3f1ece7f8c472f4a794953b414c7cd7">lzma_options_delta</a></li>
-</ul>
-
-
-<h3><a id="index_u" name="index_u"></a>- u -</h3><ul>
-<li>uncompressed_file_offset&#160;:&#160;<a class="el" href="structlzma__index__iter.html#a2f3ecf341b5dc043e9673759b8ff47b9">lzma_index_iter</a></li>
-<li>uncompressed_offset&#160;:&#160;<a class="el" href="structlzma__index__iter.html#abd374b748b4a42e122b90841709609bc">lzma_index_iter</a></li>
-<li>uncompressed_size&#160;:&#160;<a class="el" href="structlzma__block.html#a17362d38d1946dd16a9686557ec19a94">lzma_block</a>, <a class="el" href="structlzma__index__iter.html#aafc48408ed40060a84ecd66bae5e1b23">lzma_index_iter</a></li>
-<li>uncompressed_stream_offset&#160;:&#160;<a class="el" href="structlzma__index__iter.html#a0fc4959fab08e1a6a4902c728c735a99">lzma_index_iter</a></li>
-<li>unpadded_size&#160;:&#160;<a class="el" href="structlzma__index__iter.html#a9f4e405b9884be08e3a35bc06e3e15df">lzma_index_iter</a></li>
-</ul>
-
-
-<h3><a id="index_v" name="index_v"></a>- v -</h3><ul>
-<li>version&#160;:&#160;<a class="el" href="structlzma__block.html#ac3936a5b0ec3f9b8f9c7ad68e7d149a5">lzma_block</a>, <a class="el" href="structlzma__stream__flags.html#a61e9151869d5b77c868aaa4958e74d10">lzma_stream_flags</a></li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/globals.html b/doc/api/globals.html
deleted file mode 100644
index f80423c..0000000
--- a/doc/api/globals.html
+++ /dev/null
@@ -1,272 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): Globals</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File&#160;List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
- <div id="navrow3" class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="globals.html"><span>All</span></a></li>
- <li><a href="globals_func.html"><span>Functions</span></a></li>
- <li><a href="globals_type.html"><span>Typedefs</span></a></li>
- <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
- <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
- <li><a href="globals_defs.html"><span>Macros</span></a></li>
- </ul>
- </div>
- <div id="navrow4" class="tabs3">
- <ul class="tablist">
- <li class="current"><a href="globals.html#index_l"><span>l</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div class="contents">
-<div class="textblock">Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:</div>
-
-<h3><a id="index_l" name="index_l"></a>- l -</h3><ul>
-<li>lzma_action&#160;:&#160;<a class="el" href="base_8h.html#aa92efcbf3cecfcac79c81fc645fce77e">base.h</a></li>
-<li>lzma_alone_decoder()&#160;:&#160;<a class="el" href="container_8h.html#a5f43c3a1035e5a226dcd298f4162b861">container.h</a></li>
-<li>lzma_alone_encoder()&#160;:&#160;<a class="el" href="container_8h.html#a26fcc5bccdf3f862caa4c992d01e1a72">container.h</a></li>
-<li>lzma_auto_decoder()&#160;:&#160;<a class="el" href="container_8h.html#a21cbebf2771617bb1e956385cfb353e3">container.h</a></li>
-<li>LZMA_BACKWARD_SIZE_MAX&#160;:&#160;<a class="el" href="stream__flags_8h.html#a2e5e09010880f8caa6cd6539c7341239">stream_flags.h</a></li>
-<li>LZMA_BACKWARD_SIZE_MIN&#160;:&#160;<a class="el" href="stream__flags_8h.html#ae8da8190f1396f66332073946bc45634">stream_flags.h</a></li>
-<li>lzma_block_buffer_bound()&#160;:&#160;<a class="el" href="block_8h.html#a58ff73e2572b529f48cc590bfffe5b4f">block.h</a></li>
-<li>lzma_block_buffer_decode()&#160;:&#160;<a class="el" href="block_8h.html#a0c6eb869d91b08f68648b1aa7a32ee9f">block.h</a></li>
-<li>lzma_block_buffer_encode()&#160;:&#160;<a class="el" href="block_8h.html#af415fa5130ab64e8760e9c39e856fa54">block.h</a></li>
-<li>lzma_block_compressed_size()&#160;:&#160;<a class="el" href="block_8h.html#a6c3e102d76db06a07126a569abc6e2bc">block.h</a></li>
-<li>lzma_block_decoder()&#160;:&#160;<a class="el" href="block_8h.html#aa92c73b2a228efe921fa2376aa7adc92">block.h</a></li>
-<li>lzma_block_encoder()&#160;:&#160;<a class="el" href="block_8h.html#a2218a49025a0b44f9a6f9d6d24359359">block.h</a></li>
-<li>lzma_block_header_decode()&#160;:&#160;<a class="el" href="block_8h.html#a7f5487c21a7b36a8bd17be36074d43c9">block.h</a></li>
-<li>lzma_block_header_encode()&#160;:&#160;<a class="el" href="block_8h.html#a0eedbd6331d5708ea963260e6f2a92d0">block.h</a></li>
-<li>lzma_block_header_size()&#160;:&#160;<a class="el" href="block_8h.html#ae9b47abc872d0b02c2da9d3fa5a7dacd">block.h</a></li>
-<li>lzma_block_header_size_decode&#160;:&#160;<a class="el" href="block_8h.html#ac025c940683a70f4c7f956bad814fd5f">block.h</a></li>
-<li>lzma_block_total_size()&#160;:&#160;<a class="el" href="block_8h.html#a694424f9dfdd5151e01debac1c501fa9">block.h</a></li>
-<li>lzma_block_uncomp_encode()&#160;:&#160;<a class="el" href="block_8h.html#a5a260f634ccd5f54fb98f570d8d92d8c">block.h</a></li>
-<li>lzma_block_unpadded_size()&#160;:&#160;<a class="el" href="block_8h.html#a412d5605280fa29befae1b89e344bf30">block.h</a></li>
-<li>lzma_bool&#160;:&#160;<a class="el" href="base_8h.html#abbc819c74b484c846825ae1388a50a59">base.h</a></li>
-<li>LZMA_BUF_ERROR&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea9ca0ecb62459bdc84d6af47d16b23ae5">base.h</a></li>
-<li>lzma_check&#160;:&#160;<a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3f">check.h</a></li>
-<li>LZMA_CHECK_CRC32&#160;:&#160;<a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3fa0be65014a40b5cb4ab32252b3709bef7">check.h</a></li>
-<li>LZMA_CHECK_CRC64&#160;:&#160;<a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3fa87b4b0697a1e1ccb6766dd5c2fa24afc">check.h</a></li>
-<li>LZMA_CHECK_ID_MAX&#160;:&#160;<a class="el" href="check_8h.html#acd221ababe30230d9647aab469ad80cb">check.h</a></li>
-<li>lzma_check_is_supported()&#160;:&#160;<a class="el" href="check_8h.html#ae9391ed2acfad0ce9357b68c608f07d8">check.h</a></li>
-<li>LZMA_CHECK_NONE&#160;:&#160;<a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3fa7b9851d75abfabc08d7fc5b4aaeb6f20">check.h</a></li>
-<li>LZMA_CHECK_SHA256&#160;:&#160;<a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3faf26a55ddd204a50ae87ec3432e7bc309">check.h</a></li>
-<li>lzma_check_size()&#160;:&#160;<a class="el" href="check_8h.html#afd3fda19575d9d4f864c626c02b7cb48">check.h</a></li>
-<li>LZMA_CHECK_SIZE_MAX&#160;:&#160;<a class="el" href="check_8h.html#a379e931cf86351ab1d97896cda9abbe0">check.h</a></li>
-<li>lzma_code()&#160;:&#160;<a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957">base.h</a></li>
-<li>LZMA_CONCATENATED&#160;:&#160;<a class="el" href="container_8h.html#a563c84b5f368b3dd00d92ea903c5c33d">container.h</a></li>
-<li>lzma_cputhreads()&#160;:&#160;<a class="el" href="hardware_8h.html#a22f7a882b7a4b741a226abf62bdf46ca">hardware.h</a></li>
-<li>lzma_crc32()&#160;:&#160;<a class="el" href="check_8h.html#a760b569cce91bdd01e4ce9d78823c96d">check.h</a></li>
-<li>lzma_crc64()&#160;:&#160;<a class="el" href="check_8h.html#aff2e74ce671b9f82a96adb549c68cea2">check.h</a></li>
-<li>LZMA_DATA_ERROR&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea3aa72729a844790e39b4e1101a731dfb">base.h</a></li>
-<li>LZMA_DELTA_DIST_MAX&#160;:&#160;<a class="el" href="delta_8h.html#afdf8a5ce184ddf9f8070de637775da94">delta.h</a></li>
-<li>LZMA_DELTA_DIST_MIN&#160;:&#160;<a class="el" href="delta_8h.html#a466886d9d01392f61bdf267687a4f96e">delta.h</a></li>
-<li>lzma_delta_type&#160;:&#160;<a class="el" href="delta_8h.html#a04d84d7fa6cefdc219b6e2e96ff36fe1">delta.h</a></li>
-<li>lzma_easy_buffer_encode()&#160;:&#160;<a class="el" href="container_8h.html#ac5e71f2711b57391186671967435faf2">container.h</a></li>
-<li>lzma_easy_decoder_memusage()&#160;:&#160;<a class="el" href="container_8h.html#a3562055d26c18fad067a7c7516eaddf5">container.h</a></li>
-<li>lzma_easy_encoder()&#160;:&#160;<a class="el" href="container_8h.html#acbdad999c544872f0f5d242f0d1a4ed4">container.h</a></li>
-<li>lzma_easy_encoder_memusage()&#160;:&#160;<a class="el" href="container_8h.html#a62c853cf7dbf008bdbd97b2685c3eabf">container.h</a></li>
-<li>lzma_end()&#160;:&#160;<a class="el" href="base_8h.html#a854ff37464ae1225febf14db1af43308">base.h</a></li>
-<li>LZMA_FAIL_FAST&#160;:&#160;<a class="el" href="container_8h.html#aa1f469ed3d4b2eaf12f8081657efc9d5">container.h</a></li>
-<li>lzma_file_info_decoder()&#160;:&#160;<a class="el" href="index_8h.html#a7c5d77cf8532d95977d4571a1eb0a222">index.h</a></li>
-<li>LZMA_FILTER_ARM&#160;:&#160;<a class="el" href="bcj_8h.html#a495a58f63ebc7a8b756099efba492f8b">bcj.h</a></li>
-<li>LZMA_FILTER_ARM64&#160;:&#160;<a class="el" href="bcj_8h.html#a01765158cd31cac21b272b180628fc4b">bcj.h</a></li>
-<li>LZMA_FILTER_ARMTHUMB&#160;:&#160;<a class="el" href="bcj_8h.html#a5ec62e7e5e7df3d9af5b2ea3f857689a">bcj.h</a></li>
-<li>lzma_filter_decoder_is_supported()&#160;:&#160;<a class="el" href="filter_8h.html#acab0c67bf5b3a76f2b474c8e1da98938">filter.h</a></li>
-<li>LZMA_FILTER_DELTA&#160;:&#160;<a class="el" href="delta_8h.html#a7ced67235ad7a01ae31d32ecf1e634cb">delta.h</a></li>
-<li>lzma_filter_encoder_is_supported()&#160;:&#160;<a class="el" href="filter_8h.html#a3db3c36cd6e57658a74c53e4daa2bef6">filter.h</a></li>
-<li>lzma_filter_flags_decode()&#160;:&#160;<a class="el" href="filter_8h.html#a4cba9a4c658cce0ff01fd102b31ea1a7">filter.h</a></li>
-<li>lzma_filter_flags_encode()&#160;:&#160;<a class="el" href="filter_8h.html#a96f23309bc21398fece18c00ebe7db98">filter.h</a></li>
-<li>lzma_filter_flags_size()&#160;:&#160;<a class="el" href="filter_8h.html#a996c9c21840ed54e37bd1f664a79d940">filter.h</a></li>
-<li>LZMA_FILTER_IA64&#160;:&#160;<a class="el" href="bcj_8h.html#a2fe36218a38f400e1ce40820758f7427">bcj.h</a></li>
-<li>LZMA_FILTER_LZMA1&#160;:&#160;<a class="el" href="lzma12_8h.html#accedd16abcb758e7f748bac1102abda9">lzma12.h</a></li>
-<li>LZMA_FILTER_LZMA1EXT&#160;:&#160;<a class="el" href="lzma12_8h.html#a98a7fd42aa78a273a6b138629e46772d">lzma12.h</a></li>
-<li>LZMA_FILTER_LZMA2&#160;:&#160;<a class="el" href="lzma12_8h.html#a04f9d9a018a47cc99491e6e94e92f96b">lzma12.h</a></li>
-<li>LZMA_FILTER_POWERPC&#160;:&#160;<a class="el" href="bcj_8h.html#ab7f667d4a5d319f227f23163cbea086f">bcj.h</a></li>
-<li>LZMA_FILTER_SPARC&#160;:&#160;<a class="el" href="bcj_8h.html#a50941088e93ef659c6b000bbcaf58143">bcj.h</a></li>
-<li>LZMA_FILTER_X86&#160;:&#160;<a class="el" href="bcj_8h.html#aa9eac1f580ddde3309518cd153d596b1">bcj.h</a></li>
-<li>lzma_filters_copy()&#160;:&#160;<a class="el" href="filter_8h.html#a611fe1176eeeda187b1bd8aef45040aa">filter.h</a></li>
-<li>lzma_filters_free()&#160;:&#160;<a class="el" href="filter_8h.html#ae06979d219897f5f4c29cbc7a96a8892">filter.h</a></li>
-<li>LZMA_FILTERS_MAX&#160;:&#160;<a class="el" href="filter_8h.html#ab33c0cc1728bf390e5b84f8bce1928ba">filter.h</a></li>
-<li>lzma_filters_update()&#160;:&#160;<a class="el" href="filter_8h.html#a4a8fd969df001e449ebe4421ab33bba5">filter.h</a></li>
-<li>LZMA_FINISH&#160;:&#160;<a class="el" href="base_8h.html#aa92efcbf3cecfcac79c81fc645fce77ea7d24fb3c6c144d13bcb091195b8ebec1">base.h</a></li>
-<li>LZMA_FORMAT_ERROR&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea63b7a58949854eb9307f8e351358d56c">base.h</a></li>
-<li>LZMA_FULL_BARRIER&#160;:&#160;<a class="el" href="base_8h.html#aa92efcbf3cecfcac79c81fc645fce77eaf7bf60e3555a4d10ffad3ecc3d2e01f1">base.h</a></li>
-<li>LZMA_FULL_FLUSH&#160;:&#160;<a class="el" href="base_8h.html#aa92efcbf3cecfcac79c81fc645fce77eaab46f0d7c721f1ec377e9575eab2586f">base.h</a></li>
-<li>lzma_get_check()&#160;:&#160;<a class="el" href="check_8h.html#a8d7c3ffabfd024485f03fa209536c746">check.h</a></li>
-<li>LZMA_GET_CHECK&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6eaa5b648c18da0f584f621cfdf7fef1bdb">base.h</a></li>
-<li>lzma_get_progress()&#160;:&#160;<a class="el" href="base_8h.html#ab6447cd68eeecbd6b88f21daeb8ce751">base.h</a></li>
-<li>LZMA_IGNORE_CHECK&#160;:&#160;<a class="el" href="container_8h.html#a1289925ae1c63a8e86f69f3657118a4d">container.h</a></li>
-<li>lzma_index&#160;:&#160;<a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">index.h</a></li>
-<li>lzma_index_append()&#160;:&#160;<a class="el" href="index_8h.html#ac347747eb933c7c408e6c801b33becc3">index.h</a></li>
-<li>lzma_index_block_count()&#160;:&#160;<a class="el" href="index_8h.html#add1a8c506f67dbc19cae6747107e3bec">index.h</a></li>
-<li>lzma_index_buffer_decode()&#160;:&#160;<a class="el" href="index_8h.html#a028b8b8d59a413f9682eea1269a6ae8b">index.h</a></li>
-<li>lzma_index_buffer_encode()&#160;:&#160;<a class="el" href="index_8h.html#add1ef06dec8a26d08ae8651cff0fd8d6">index.h</a></li>
-<li>lzma_index_cat()&#160;:&#160;<a class="el" href="index_8h.html#abc4db36b4bd67af01819be9dd045c34a">index.h</a></li>
-<li>lzma_index_checks()&#160;:&#160;<a class="el" href="index_8h.html#af8d6528a04241841bd0a4322b0c57eaa">index.h</a></li>
-<li>lzma_index_decoder()&#160;:&#160;<a class="el" href="index_8h.html#abb56fd1d5914f8900ece7b88b78e5e23">index.h</a></li>
-<li>lzma_index_dup()&#160;:&#160;<a class="el" href="index_8h.html#a5161e3f67156577882e1d95dcb57e33e">index.h</a></li>
-<li>lzma_index_encoder()&#160;:&#160;<a class="el" href="index_8h.html#a6800d70f3b2afca085496460cd03211d">index.h</a></li>
-<li>lzma_index_end()&#160;:&#160;<a class="el" href="index_8h.html#a0c2d0009f07fc315d5ac89e4bcd25abd">index.h</a></li>
-<li>lzma_index_file_size()&#160;:&#160;<a class="el" href="index_8h.html#ac875ed47d35385e5dac461b25c5ea1c9">index.h</a></li>
-<li>lzma_index_hash&#160;:&#160;<a class="el" href="index__hash_8h.html#a2db9f438838c8ff72a8a6fd3fc856f8c">index_hash.h</a></li>
-<li>lzma_index_hash_append()&#160;:&#160;<a class="el" href="index__hash_8h.html#a2bdbe4f0b5fa2fadb7528447feaaa97f">index_hash.h</a></li>
-<li>lzma_index_hash_decode()&#160;:&#160;<a class="el" href="index__hash_8h.html#a891eb955284c9117155f92eb0ddba44c">index_hash.h</a></li>
-<li>lzma_index_hash_end()&#160;:&#160;<a class="el" href="index__hash_8h.html#a7dacb41b9ec1c8df5d33dfdae97743b3">index_hash.h</a></li>
-<li>lzma_index_hash_init()&#160;:&#160;<a class="el" href="index__hash_8h.html#aaafae4967a4a266d97dc34a98bfcabfb">index_hash.h</a></li>
-<li>lzma_index_hash_size()&#160;:&#160;<a class="el" href="index__hash_8h.html#a0f8ab3b57b117f9547866156755c917f">index_hash.h</a></li>
-<li>lzma_index_init()&#160;:&#160;<a class="el" href="index_8h.html#a0850627d011111326d4278a3e2edec25">index.h</a></li>
-<li>LZMA_INDEX_ITER_ANY&#160;:&#160;<a class="el" href="index_8h.html#a712b43192d944bf2f767711343cd9ca8af46f6e5c414471c7c96586f380e48315">index.h</a></li>
-<li>LZMA_INDEX_ITER_BLOCK&#160;:&#160;<a class="el" href="index_8h.html#a712b43192d944bf2f767711343cd9ca8a2702617d60d6fc15138a749e06ef3414">index.h</a></li>
-<li>lzma_index_iter_init()&#160;:&#160;<a class="el" href="index_8h.html#aa78f02f18ed29d289a6ef37b8ea98a21">index.h</a></li>
-<li>lzma_index_iter_locate()&#160;:&#160;<a class="el" href="index_8h.html#ac4f56df9d210712e5d7add5502c9eb93">index.h</a></li>
-<li>lzma_index_iter_mode&#160;:&#160;<a class="el" href="index_8h.html#a712b43192d944bf2f767711343cd9ca8">index.h</a></li>
-<li>lzma_index_iter_next()&#160;:&#160;<a class="el" href="index_8h.html#af428522e1b3eef137c65c5a01f766e0e">index.h</a></li>
-<li>LZMA_INDEX_ITER_NONEMPTY_BLOCK&#160;:&#160;<a class="el" href="index_8h.html#a712b43192d944bf2f767711343cd9ca8aa49bf4d561d8f2c61d300edbb6c282c7">index.h</a></li>
-<li>lzma_index_iter_rewind()&#160;:&#160;<a class="el" href="index_8h.html#ae81438be8deff4894b104e65d8acdd24">index.h</a></li>
-<li>LZMA_INDEX_ITER_STREAM&#160;:&#160;<a class="el" href="index_8h.html#a712b43192d944bf2f767711343cd9ca8a5b31d985de1c823151acdd7e4a966fc9">index.h</a></li>
-<li>lzma_index_memusage()&#160;:&#160;<a class="el" href="index_8h.html#a880def3727ecdd7f242807083d228fc5">index.h</a></li>
-<li>lzma_index_memused()&#160;:&#160;<a class="el" href="index_8h.html#a4118805ac7be6618aca6d6d7e5e4dde7">index.h</a></li>
-<li>lzma_index_size()&#160;:&#160;<a class="el" href="index_8h.html#a669ed1a82b1941217cfbb07e7826afc2">index.h</a></li>
-<li>lzma_index_stream_count()&#160;:&#160;<a class="el" href="index_8h.html#afd159a765b09b0cf79186069a848d07e">index.h</a></li>
-<li>lzma_index_stream_flags()&#160;:&#160;<a class="el" href="index_8h.html#a79a19669237f19f0b11c9f3be80a62b4">index.h</a></li>
-<li>lzma_index_stream_padding()&#160;:&#160;<a class="el" href="index_8h.html#a3ed82f96c688f3c953f6509b6f4e2ef3">index.h</a></li>
-<li>lzma_index_stream_size()&#160;:&#160;<a class="el" href="index_8h.html#af3630369b43c9ccc906065d759b49663">index.h</a></li>
-<li>lzma_index_total_size()&#160;:&#160;<a class="el" href="index_8h.html#a7829942b83ee1fa5b6443cc248b81041">index.h</a></li>
-<li>lzma_index_uncompressed_size()&#160;:&#160;<a class="el" href="index_8h.html#a620fe6317f1f9d7af9cc27c748bf07d6">index.h</a></li>
-<li>lzma_internal&#160;:&#160;<a class="el" href="base_8h.html#ab1a60127c640135687a5bcc232cec906">base.h</a></li>
-<li>lzma_lzip_decoder()&#160;:&#160;<a class="el" href="container_8h.html#a97689f5709e0db1e2dac450f5ce4e5eb">container.h</a></li>
-<li>lzma_lzma_preset()&#160;:&#160;<a class="el" href="lzma12_8h.html#aa62c28944fe3575653a4c25780400d77">lzma12.h</a></li>
-<li>lzma_match_finder&#160;:&#160;<a class="el" href="lzma12_8h.html#acf740075f86fa61dc408d6d0dbf8fa80">lzma12.h</a></li>
-<li>LZMA_MEM_ERROR&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea567e1464feca03900a5425fb45b2f5b6">base.h</a></li>
-<li>LZMA_MEMLIMIT_ERROR&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6eaa1d705effe6026f32c0fe9756b6326bc">base.h</a></li>
-<li>lzma_memlimit_get()&#160;:&#160;<a class="el" href="base_8h.html#ac871bc2ead5d482c6d6b3d51bfec365c">base.h</a></li>
-<li>lzma_memlimit_set()&#160;:&#160;<a class="el" href="base_8h.html#afc49d4cf75b73128a167df3407505f7b">base.h</a></li>
-<li>lzma_memusage()&#160;:&#160;<a class="el" href="base_8h.html#a418b210cf206782a73cd9de7dc27f670">base.h</a></li>
-<li>LZMA_MF_BT2&#160;:&#160;<a class="el" href="lzma12_8h.html#acf740075f86fa61dc408d6d0dbf8fa80a7ab212446c3f6520f5c33ccfa4b3386a">lzma12.h</a></li>
-<li>LZMA_MF_BT3&#160;:&#160;<a class="el" href="lzma12_8h.html#acf740075f86fa61dc408d6d0dbf8fa80a983ecc59bf3e07a7c43fea551ea11865">lzma12.h</a></li>
-<li>LZMA_MF_BT4&#160;:&#160;<a class="el" href="lzma12_8h.html#acf740075f86fa61dc408d6d0dbf8fa80a468c32cdea9861d1ff98478364e6c547">lzma12.h</a></li>
-<li>LZMA_MF_HC3&#160;:&#160;<a class="el" href="lzma12_8h.html#acf740075f86fa61dc408d6d0dbf8fa80a6eb38f634021a192cada8a978b5de93b">lzma12.h</a></li>
-<li>LZMA_MF_HC4&#160;:&#160;<a class="el" href="lzma12_8h.html#acf740075f86fa61dc408d6d0dbf8fa80a0944620f4949289c2ebde613cae12b04">lzma12.h</a></li>
-<li>lzma_mf_is_supported()&#160;:&#160;<a class="el" href="lzma12_8h.html#aefba1f7214ddcf8cd408a0702e8642b5">lzma12.h</a></li>
-<li>lzma_microlzma_decoder()&#160;:&#160;<a class="el" href="container_8h.html#aa8372dae3e7c907c36f7bb5426aeacdf">container.h</a></li>
-<li>lzma_microlzma_encoder()&#160;:&#160;<a class="el" href="container_8h.html#abfc8f11acf837b167aa94b7071b54c30">container.h</a></li>
-<li>lzma_mode&#160;:&#160;<a class="el" href="lzma12_8h.html#a1032316e3075c2c8086fb17104b91866">lzma12.h</a></li>
-<li>LZMA_MODE_FAST&#160;:&#160;<a class="el" href="lzma12_8h.html#a1032316e3075c2c8086fb17104b91866ac8c0926a91b4f756e11121efd30648cc">lzma12.h</a></li>
-<li>lzma_mode_is_supported()&#160;:&#160;<a class="el" href="lzma12_8h.html#ad1add1c2600fdbb3d737e4fb3465dfcb">lzma12.h</a></li>
-<li>LZMA_MODE_NORMAL&#160;:&#160;<a class="el" href="lzma12_8h.html#a1032316e3075c2c8086fb17104b91866ad37225f30d5cd21fc8bb3eaba283bbf9">lzma12.h</a></li>
-<li>LZMA_NO_CHECK&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6eaa720d30092d504d7d138a320db1905ef">base.h</a></li>
-<li>LZMA_OK&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6eac003781ccb81bbd5578e29abed8a8cfe">base.h</a></li>
-<li>LZMA_OPTIONS_ERROR&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6eaa9ff6dfee36b7aba4fae60706d37425f">base.h</a></li>
-<li>lzma_physmem()&#160;:&#160;<a class="el" href="hardware_8h.html#a85363e453b34272a9f26c9fdffb041ee">hardware.h</a></li>
-<li>LZMA_PRESET_DEFAULT&#160;:&#160;<a class="el" href="container_8h.html#af3ca20ff228b363a82515c1aee9e27bc">container.h</a></li>
-<li>LZMA_PRESET_EXTREME&#160;:&#160;<a class="el" href="container_8h.html#af524fe9af5737820fdadcd40a2c26deb">container.h</a></li>
-<li>LZMA_PRESET_LEVEL_MASK&#160;:&#160;<a class="el" href="container_8h.html#a97e40265e355a21bd2465aaa5b85f03d">container.h</a></li>
-<li>LZMA_PROG_ERROR&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea2dac8d451cb38da8550653d0d7be4ec2">base.h</a></li>
-<li>lzma_properties_decode()&#160;:&#160;<a class="el" href="filter_8h.html#a88d2e864b2039ac82802cc202278d478">filter.h</a></li>
-<li>lzma_properties_encode()&#160;:&#160;<a class="el" href="filter_8h.html#a8e00887086df5a44084ac22e48415de3">filter.h</a></li>
-<li>lzma_properties_size()&#160;:&#160;<a class="el" href="filter_8h.html#aee038818cf7bbe044c3f7a7c86998c1b">filter.h</a></li>
-<li>lzma_raw_buffer_decode()&#160;:&#160;<a class="el" href="filter_8h.html#a3b942df507e4f9a6d7525e5a4c6864e5">filter.h</a></li>
-<li>lzma_raw_buffer_encode()&#160;:&#160;<a class="el" href="filter_8h.html#a226724ab3391b410281fdf656cc7c432">filter.h</a></li>
-<li>lzma_raw_decoder()&#160;:&#160;<a class="el" href="filter_8h.html#ae77b3b6c5eccd9d77bbafef0a8a203c1">filter.h</a></li>
-<li>lzma_raw_decoder_memusage()&#160;:&#160;<a class="el" href="filter_8h.html#a58511249ae9206d7de7c5d1f05842297">filter.h</a></li>
-<li>lzma_raw_encoder()&#160;:&#160;<a class="el" href="filter_8h.html#a2368e4129032345eb0738b0c6e085703">filter.h</a></li>
-<li>lzma_raw_encoder_memusage()&#160;:&#160;<a class="el" href="filter_8h.html#a730f9391e85a5979bcd1b32643ae7176">filter.h</a></li>
-<li>lzma_reserved_enum&#160;:&#160;<a class="el" href="base_8h.html#a05805a07754b2aa22f7d443eb7ece41a">base.h</a></li>
-<li>lzma_ret&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">base.h</a></li>
-<li>LZMA_RUN&#160;:&#160;<a class="el" href="base_8h.html#aa92efcbf3cecfcac79c81fc645fce77ea868472b76492afcaef54020a481890b1">base.h</a></li>
-<li>LZMA_SEEK_NEEDED&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea6cf28e5345851f13bd798a4eab8cc939">base.h</a></li>
-<li>lzma_set_ext_size&#160;:&#160;<a class="el" href="lzma12_8h.html#a73ed0293db4e59d73a702d66fef537c3">lzma12.h</a></li>
-<li>LZMA_STR_ALL_FILTERS&#160;:&#160;<a class="el" href="filter_8h.html#a41aa51eeb53190404439c31d8e9c97cd">filter.h</a></li>
-<li>LZMA_STR_DECODER&#160;:&#160;<a class="el" href="filter_8h.html#a8a0f3fc03bdb84a294cdd53a98783104">filter.h</a></li>
-<li>LZMA_STR_ENCODER&#160;:&#160;<a class="el" href="filter_8h.html#a09a775f6a78d28ca136acfb51ad5fa02">filter.h</a></li>
-<li>lzma_str_from_filters()&#160;:&#160;<a class="el" href="filter_8h.html#a7deeb86ef59a9111b8033681290e0fb0">filter.h</a></li>
-<li>LZMA_STR_GETOPT_LONG&#160;:&#160;<a class="el" href="filter_8h.html#a87e9ac4ae5829b092262223256141a29">filter.h</a></li>
-<li>lzma_str_list_filters()&#160;:&#160;<a class="el" href="filter_8h.html#ab51585b68796ce0270f87e615b923809">filter.h</a></li>
-<li>LZMA_STR_NO_SPACES&#160;:&#160;<a class="el" href="filter_8h.html#ac0113c47caf98a735db2297936c5e857">filter.h</a></li>
-<li>LZMA_STR_NO_VALIDATION&#160;:&#160;<a class="el" href="filter_8h.html#adc33f4c0c7b5d3ae36acc0437a904339">filter.h</a></li>
-<li>lzma_str_to_filters()&#160;:&#160;<a class="el" href="filter_8h.html#aa042cf11749bc2183b27de1c3142da30">filter.h</a></li>
-<li>lzma_stream_buffer_bound()&#160;:&#160;<a class="el" href="container_8h.html#a66d4366a47b8332bff2a512f44f5c45e">container.h</a></li>
-<li>lzma_stream_buffer_decode()&#160;:&#160;<a class="el" href="container_8h.html#aa58f237f6cea97ef0eb9bf5c37a3008d">container.h</a></li>
-<li>lzma_stream_buffer_encode()&#160;:&#160;<a class="el" href="container_8h.html#a6e645ccaeace3b13a6981e03c6e190ad">container.h</a></li>
-<li>lzma_stream_decoder()&#160;:&#160;<a class="el" href="container_8h.html#a02b7683ef98d8049788961370a8b28c0">container.h</a></li>
-<li>lzma_stream_decoder_mt()&#160;:&#160;<a class="el" href="container_8h.html#a7179d178e6430c10e2006a467921e98e">container.h</a></li>
-<li>lzma_stream_encoder()&#160;:&#160;<a class="el" href="container_8h.html#a1a97aec94c9fedd7646cfa51c4f4cd52">container.h</a></li>
-<li>lzma_stream_encoder_mt()&#160;:&#160;<a class="el" href="container_8h.html#a3f8793518711ee84d1abf12ea3aaba42">container.h</a></li>
-<li>lzma_stream_encoder_mt_memusage()&#160;:&#160;<a class="el" href="container_8h.html#ad7cf41496d77f4d346e006b26ed8e101">container.h</a></li>
-<li>LZMA_STREAM_END&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea91ecc6fab14c13ad36224afbcb4e55c4">base.h</a></li>
-<li>lzma_stream_flags_compare()&#160;:&#160;<a class="el" href="stream__flags_8h.html#a3e25ca4205021302882a696283d45263">stream_flags.h</a></li>
-<li>lzma_stream_footer_decode()&#160;:&#160;<a class="el" href="stream__flags_8h.html#aa92a383f85753bb79ee23227fa68186c">stream_flags.h</a></li>
-<li>lzma_stream_footer_encode()&#160;:&#160;<a class="el" href="stream__flags_8h.html#a438249a75ea8da952a7474b92bfe7b7a">stream_flags.h</a></li>
-<li>lzma_stream_header_decode()&#160;:&#160;<a class="el" href="stream__flags_8h.html#ae03198e464f0d296e601ff841e100805">stream_flags.h</a></li>
-<li>lzma_stream_header_encode()&#160;:&#160;<a class="el" href="stream__flags_8h.html#a2ebb8d6dff23daeb3de398913b845eff">stream_flags.h</a></li>
-<li>LZMA_STREAM_HEADER_SIZE&#160;:&#160;<a class="el" href="stream__flags_8h.html#ada7e0a4f5e7146f547962cb9e9ef08ee">stream_flags.h</a></li>
-<li>LZMA_STREAM_INIT&#160;:&#160;<a class="el" href="base_8h.html#af31f0c8b6f14359cd082b9559f7f3e01">base.h</a></li>
-<li>LZMA_SYNC_FLUSH&#160;:&#160;<a class="el" href="base_8h.html#aa92efcbf3cecfcac79c81fc645fce77ea14d75152afcda85d215e877fdd9c4170">base.h</a></li>
-<li>LZMA_TELL_ANY_CHECK&#160;:&#160;<a class="el" href="container_8h.html#a0bdde702a77ff42b90a99c0bf4147b6b">container.h</a></li>
-<li>LZMA_TELL_NO_CHECK&#160;:&#160;<a class="el" href="container_8h.html#ada9cd20febb28b5ed6656de9184a86e9">container.h</a></li>
-<li>LZMA_TELL_UNSUPPORTED_CHECK&#160;:&#160;<a class="el" href="container_8h.html#ae21fb746037c82735d40d428c462e078">container.h</a></li>
-<li>LZMA_UNSUPPORTED_CHECK&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea989f393a1772d85bf545a9da48fc7ac2">base.h</a></li>
-<li>LZMA_VERSION&#160;:&#160;<a class="el" href="version_8h.html#a156c47ff34aa0c2b726d0daf799f10a0">version.h</a></li>
-<li>LZMA_VERSION_COMMIT&#160;:&#160;<a class="el" href="version_8h.html#a7fd6169ff15ac7f01f94970359a331ea">version.h</a></li>
-<li>LZMA_VERSION_MAJOR&#160;:&#160;<a class="el" href="version_8h.html#aa0f450c9d3b0ff5f88b55888ed55701f">version.h</a></li>
-<li>LZMA_VERSION_MINOR&#160;:&#160;<a class="el" href="version_8h.html#af8fd295cf8aa349b0731423ad7a56134">version.h</a></li>
-<li>lzma_version_number()&#160;:&#160;<a class="el" href="version_8h.html#a72f929c9b9e8e730b790b3f8c80c3c80">version.h</a></li>
-<li>LZMA_VERSION_PATCH&#160;:&#160;<a class="el" href="version_8h.html#a8b550373cbff381f15d4308b852a3c2a">version.h</a></li>
-<li>LZMA_VERSION_STABILITY&#160;:&#160;<a class="el" href="version_8h.html#ae289abe5dcc203c7cda9f6a9a2f36b3a">version.h</a></li>
-<li>LZMA_VERSION_STRING&#160;:&#160;<a class="el" href="version_8h.html#a57bb143c993c305a53e9aade831a546c">version.h</a></li>
-<li>lzma_version_string()&#160;:&#160;<a class="el" href="version_8h.html#a8998c1d8b4b5c2c1218bdfd58fdb1baa">version.h</a></li>
-<li>lzma_vli&#160;:&#160;<a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">vli.h</a></li>
-<li>LZMA_VLI_BYTES_MAX&#160;:&#160;<a class="el" href="vli_8h.html#a063ecff4133aa2f8899b9fa3fdefd310">vli.h</a></li>
-<li>LZMA_VLI_C&#160;:&#160;<a class="el" href="vli_8h.html#a2d8bf5322898bfa11945848420585881">vli.h</a></li>
-<li>lzma_vli_decode()&#160;:&#160;<a class="el" href="vli_8h.html#a7b7d50e1074e0e2bcd81c29a5f7461c7">vli.h</a></li>
-<li>lzma_vli_encode()&#160;:&#160;<a class="el" href="vli_8h.html#a50bbb77e9ec3b72c25586aa700c20970">vli.h</a></li>
-<li>lzma_vli_is_valid&#160;:&#160;<a class="el" href="vli_8h.html#a4f67ed698215d865a2b87a95ab1320dd">vli.h</a></li>
-<li>LZMA_VLI_MAX&#160;:&#160;<a class="el" href="vli_8h.html#a7b782528bd1934db7c020adbedb20ec9">vli.h</a></li>
-<li>lzma_vli_size()&#160;:&#160;<a class="el" href="vli_8h.html#a8d53e0b69934b43da8721fa6f1e8cc4f">vli.h</a></li>
-<li>LZMA_VLI_UNKNOWN&#160;:&#160;<a class="el" href="vli_8h.html#a5a4b28254a30c859018b896ed371d69a">vli.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/globals_defs.html b/doc/api/globals_defs.html
deleted file mode 100644
index a7b945c..0000000
--- a/doc/api/globals_defs.html
+++ /dev/null
@@ -1,119 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): Globals</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File&#160;List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
- <div id="navrow3" class="tabs2">
- <ul class="tablist">
- <li><a href="globals.html"><span>All</span></a></li>
- <li><a href="globals_func.html"><span>Functions</span></a></li>
- <li><a href="globals_type.html"><span>Typedefs</span></a></li>
- <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
- <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
- <li class="current"><a href="globals_defs.html"><span>Macros</span></a></li>
- </ul>
- </div>
- <div id="navrow4" class="tabs3">
- <ul class="tablist">
- <li class="current"><a href="#index_l"><span>l</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div class="contents">
-<div class="textblock">Here is a list of all documented macros with links to the documentation:</div>
-
-<h3><a id="index_l" name="index_l"></a>- l -</h3><ul>
-<li>LZMA_BACKWARD_SIZE_MAX&#160;:&#160;<a class="el" href="stream__flags_8h.html#a2e5e09010880f8caa6cd6539c7341239">stream_flags.h</a></li>
-<li>LZMA_BACKWARD_SIZE_MIN&#160;:&#160;<a class="el" href="stream__flags_8h.html#ae8da8190f1396f66332073946bc45634">stream_flags.h</a></li>
-<li>lzma_block_header_size_decode&#160;:&#160;<a class="el" href="block_8h.html#ac025c940683a70f4c7f956bad814fd5f">block.h</a></li>
-<li>LZMA_CHECK_ID_MAX&#160;:&#160;<a class="el" href="check_8h.html#acd221ababe30230d9647aab469ad80cb">check.h</a></li>
-<li>LZMA_CHECK_SIZE_MAX&#160;:&#160;<a class="el" href="check_8h.html#a379e931cf86351ab1d97896cda9abbe0">check.h</a></li>
-<li>LZMA_CONCATENATED&#160;:&#160;<a class="el" href="container_8h.html#a563c84b5f368b3dd00d92ea903c5c33d">container.h</a></li>
-<li>LZMA_DELTA_DIST_MAX&#160;:&#160;<a class="el" href="delta_8h.html#afdf8a5ce184ddf9f8070de637775da94">delta.h</a></li>
-<li>LZMA_DELTA_DIST_MIN&#160;:&#160;<a class="el" href="delta_8h.html#a466886d9d01392f61bdf267687a4f96e">delta.h</a></li>
-<li>LZMA_FAIL_FAST&#160;:&#160;<a class="el" href="container_8h.html#aa1f469ed3d4b2eaf12f8081657efc9d5">container.h</a></li>
-<li>LZMA_FILTER_ARM&#160;:&#160;<a class="el" href="bcj_8h.html#a495a58f63ebc7a8b756099efba492f8b">bcj.h</a></li>
-<li>LZMA_FILTER_ARM64&#160;:&#160;<a class="el" href="bcj_8h.html#a01765158cd31cac21b272b180628fc4b">bcj.h</a></li>
-<li>LZMA_FILTER_ARMTHUMB&#160;:&#160;<a class="el" href="bcj_8h.html#a5ec62e7e5e7df3d9af5b2ea3f857689a">bcj.h</a></li>
-<li>LZMA_FILTER_DELTA&#160;:&#160;<a class="el" href="delta_8h.html#a7ced67235ad7a01ae31d32ecf1e634cb">delta.h</a></li>
-<li>LZMA_FILTER_IA64&#160;:&#160;<a class="el" href="bcj_8h.html#a2fe36218a38f400e1ce40820758f7427">bcj.h</a></li>
-<li>LZMA_FILTER_LZMA1&#160;:&#160;<a class="el" href="lzma12_8h.html#accedd16abcb758e7f748bac1102abda9">lzma12.h</a></li>
-<li>LZMA_FILTER_LZMA1EXT&#160;:&#160;<a class="el" href="lzma12_8h.html#a98a7fd42aa78a273a6b138629e46772d">lzma12.h</a></li>
-<li>LZMA_FILTER_LZMA2&#160;:&#160;<a class="el" href="lzma12_8h.html#a04f9d9a018a47cc99491e6e94e92f96b">lzma12.h</a></li>
-<li>LZMA_FILTER_POWERPC&#160;:&#160;<a class="el" href="bcj_8h.html#ab7f667d4a5d319f227f23163cbea086f">bcj.h</a></li>
-<li>LZMA_FILTER_SPARC&#160;:&#160;<a class="el" href="bcj_8h.html#a50941088e93ef659c6b000bbcaf58143">bcj.h</a></li>
-<li>LZMA_FILTER_X86&#160;:&#160;<a class="el" href="bcj_8h.html#aa9eac1f580ddde3309518cd153d596b1">bcj.h</a></li>
-<li>LZMA_FILTERS_MAX&#160;:&#160;<a class="el" href="filter_8h.html#ab33c0cc1728bf390e5b84f8bce1928ba">filter.h</a></li>
-<li>LZMA_IGNORE_CHECK&#160;:&#160;<a class="el" href="container_8h.html#a1289925ae1c63a8e86f69f3657118a4d">container.h</a></li>
-<li>LZMA_PRESET_DEFAULT&#160;:&#160;<a class="el" href="container_8h.html#af3ca20ff228b363a82515c1aee9e27bc">container.h</a></li>
-<li>LZMA_PRESET_EXTREME&#160;:&#160;<a class="el" href="container_8h.html#af524fe9af5737820fdadcd40a2c26deb">container.h</a></li>
-<li>LZMA_PRESET_LEVEL_MASK&#160;:&#160;<a class="el" href="container_8h.html#a97e40265e355a21bd2465aaa5b85f03d">container.h</a></li>
-<li>lzma_set_ext_size&#160;:&#160;<a class="el" href="lzma12_8h.html#a73ed0293db4e59d73a702d66fef537c3">lzma12.h</a></li>
-<li>LZMA_STR_ALL_FILTERS&#160;:&#160;<a class="el" href="filter_8h.html#a41aa51eeb53190404439c31d8e9c97cd">filter.h</a></li>
-<li>LZMA_STR_DECODER&#160;:&#160;<a class="el" href="filter_8h.html#a8a0f3fc03bdb84a294cdd53a98783104">filter.h</a></li>
-<li>LZMA_STR_ENCODER&#160;:&#160;<a class="el" href="filter_8h.html#a09a775f6a78d28ca136acfb51ad5fa02">filter.h</a></li>
-<li>LZMA_STR_GETOPT_LONG&#160;:&#160;<a class="el" href="filter_8h.html#a87e9ac4ae5829b092262223256141a29">filter.h</a></li>
-<li>LZMA_STR_NO_SPACES&#160;:&#160;<a class="el" href="filter_8h.html#ac0113c47caf98a735db2297936c5e857">filter.h</a></li>
-<li>LZMA_STR_NO_VALIDATION&#160;:&#160;<a class="el" href="filter_8h.html#adc33f4c0c7b5d3ae36acc0437a904339">filter.h</a></li>
-<li>LZMA_STREAM_HEADER_SIZE&#160;:&#160;<a class="el" href="stream__flags_8h.html#ada7e0a4f5e7146f547962cb9e9ef08ee">stream_flags.h</a></li>
-<li>LZMA_STREAM_INIT&#160;:&#160;<a class="el" href="base_8h.html#af31f0c8b6f14359cd082b9559f7f3e01">base.h</a></li>
-<li>LZMA_TELL_ANY_CHECK&#160;:&#160;<a class="el" href="container_8h.html#a0bdde702a77ff42b90a99c0bf4147b6b">container.h</a></li>
-<li>LZMA_TELL_NO_CHECK&#160;:&#160;<a class="el" href="container_8h.html#ada9cd20febb28b5ed6656de9184a86e9">container.h</a></li>
-<li>LZMA_TELL_UNSUPPORTED_CHECK&#160;:&#160;<a class="el" href="container_8h.html#ae21fb746037c82735d40d428c462e078">container.h</a></li>
-<li>LZMA_VERSION&#160;:&#160;<a class="el" href="version_8h.html#a156c47ff34aa0c2b726d0daf799f10a0">version.h</a></li>
-<li>LZMA_VERSION_COMMIT&#160;:&#160;<a class="el" href="version_8h.html#a7fd6169ff15ac7f01f94970359a331ea">version.h</a></li>
-<li>LZMA_VERSION_MAJOR&#160;:&#160;<a class="el" href="version_8h.html#aa0f450c9d3b0ff5f88b55888ed55701f">version.h</a></li>
-<li>LZMA_VERSION_MINOR&#160;:&#160;<a class="el" href="version_8h.html#af8fd295cf8aa349b0731423ad7a56134">version.h</a></li>
-<li>LZMA_VERSION_PATCH&#160;:&#160;<a class="el" href="version_8h.html#a8b550373cbff381f15d4308b852a3c2a">version.h</a></li>
-<li>LZMA_VERSION_STABILITY&#160;:&#160;<a class="el" href="version_8h.html#ae289abe5dcc203c7cda9f6a9a2f36b3a">version.h</a></li>
-<li>LZMA_VERSION_STRING&#160;:&#160;<a class="el" href="version_8h.html#a57bb143c993c305a53e9aade831a546c">version.h</a></li>
-<li>LZMA_VLI_BYTES_MAX&#160;:&#160;<a class="el" href="vli_8h.html#a063ecff4133aa2f8899b9fa3fdefd310">vli.h</a></li>
-<li>LZMA_VLI_C&#160;:&#160;<a class="el" href="vli_8h.html#a2d8bf5322898bfa11945848420585881">vli.h</a></li>
-<li>lzma_vli_is_valid&#160;:&#160;<a class="el" href="vli_8h.html#a4f67ed698215d865a2b87a95ab1320dd">vli.h</a></li>
-<li>LZMA_VLI_MAX&#160;:&#160;<a class="el" href="vli_8h.html#a7b782528bd1934db7c020adbedb20ec9">vli.h</a></li>
-<li>LZMA_VLI_UNKNOWN&#160;:&#160;<a class="el" href="vli_8h.html#a5a4b28254a30c859018b896ed371d69a">vli.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/globals_enum.html b/doc/api/globals_enum.html
deleted file mode 100644
index 1820871..0000000
--- a/doc/api/globals_enum.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): Globals</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File&#160;List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
- <div id="navrow3" class="tabs2">
- <ul class="tablist">
- <li><a href="globals.html"><span>All</span></a></li>
- <li><a href="globals_func.html"><span>Functions</span></a></li>
- <li><a href="globals_type.html"><span>Typedefs</span></a></li>
- <li class="current"><a href="globals_enum.html"><span>Enumerations</span></a></li>
- <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
- <li><a href="globals_defs.html"><span>Macros</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div class="contents">
-<div class="textblock">Here is a list of all documented enums with links to the documentation:</div><ul>
-<li>lzma_action&#160;:&#160;<a class="el" href="base_8h.html#aa92efcbf3cecfcac79c81fc645fce77e">base.h</a></li>
-<li>lzma_check&#160;:&#160;<a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3f">check.h</a></li>
-<li>lzma_delta_type&#160;:&#160;<a class="el" href="delta_8h.html#a04d84d7fa6cefdc219b6e2e96ff36fe1">delta.h</a></li>
-<li>lzma_index_iter_mode&#160;:&#160;<a class="el" href="index_8h.html#a712b43192d944bf2f767711343cd9ca8">index.h</a></li>
-<li>lzma_match_finder&#160;:&#160;<a class="el" href="lzma12_8h.html#acf740075f86fa61dc408d6d0dbf8fa80">lzma12.h</a></li>
-<li>lzma_mode&#160;:&#160;<a class="el" href="lzma12_8h.html#a1032316e3075c2c8086fb17104b91866">lzma12.h</a></li>
-<li>lzma_reserved_enum&#160;:&#160;<a class="el" href="base_8h.html#a05805a07754b2aa22f7d443eb7ece41a">base.h</a></li>
-<li>lzma_ret&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">base.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/globals_eval.html b/doc/api/globals_eval.html
deleted file mode 100644
index 51424c7..0000000
--- a/doc/api/globals_eval.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): Globals</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File&#160;List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
- <div id="navrow3" class="tabs2">
- <ul class="tablist">
- <li><a href="globals.html"><span>All</span></a></li>
- <li><a href="globals_func.html"><span>Functions</span></a></li>
- <li><a href="globals_type.html"><span>Typedefs</span></a></li>
- <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
- <li class="current"><a href="globals_eval.html"><span>Enumerator</span></a></li>
- <li><a href="globals_defs.html"><span>Macros</span></a></li>
- </ul>
- </div>
- <div id="navrow4" class="tabs3">
- <ul class="tablist">
- <li class="current"><a href="#index_l"><span>l</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div class="contents">
-<div class="textblock">Here is a list of all documented enum values with links to the documentation:</div>
-
-<h3><a id="index_l" name="index_l"></a>- l -</h3><ul>
-<li>LZMA_BUF_ERROR&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea9ca0ecb62459bdc84d6af47d16b23ae5">base.h</a></li>
-<li>LZMA_CHECK_CRC32&#160;:&#160;<a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3fa0be65014a40b5cb4ab32252b3709bef7">check.h</a></li>
-<li>LZMA_CHECK_CRC64&#160;:&#160;<a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3fa87b4b0697a1e1ccb6766dd5c2fa24afc">check.h</a></li>
-<li>LZMA_CHECK_NONE&#160;:&#160;<a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3fa7b9851d75abfabc08d7fc5b4aaeb6f20">check.h</a></li>
-<li>LZMA_CHECK_SHA256&#160;:&#160;<a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3faf26a55ddd204a50ae87ec3432e7bc309">check.h</a></li>
-<li>LZMA_DATA_ERROR&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea3aa72729a844790e39b4e1101a731dfb">base.h</a></li>
-<li>LZMA_FINISH&#160;:&#160;<a class="el" href="base_8h.html#aa92efcbf3cecfcac79c81fc645fce77ea7d24fb3c6c144d13bcb091195b8ebec1">base.h</a></li>
-<li>LZMA_FORMAT_ERROR&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea63b7a58949854eb9307f8e351358d56c">base.h</a></li>
-<li>LZMA_FULL_BARRIER&#160;:&#160;<a class="el" href="base_8h.html#aa92efcbf3cecfcac79c81fc645fce77eaf7bf60e3555a4d10ffad3ecc3d2e01f1">base.h</a></li>
-<li>LZMA_FULL_FLUSH&#160;:&#160;<a class="el" href="base_8h.html#aa92efcbf3cecfcac79c81fc645fce77eaab46f0d7c721f1ec377e9575eab2586f">base.h</a></li>
-<li>LZMA_GET_CHECK&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6eaa5b648c18da0f584f621cfdf7fef1bdb">base.h</a></li>
-<li>LZMA_INDEX_ITER_ANY&#160;:&#160;<a class="el" href="index_8h.html#a712b43192d944bf2f767711343cd9ca8af46f6e5c414471c7c96586f380e48315">index.h</a></li>
-<li>LZMA_INDEX_ITER_BLOCK&#160;:&#160;<a class="el" href="index_8h.html#a712b43192d944bf2f767711343cd9ca8a2702617d60d6fc15138a749e06ef3414">index.h</a></li>
-<li>LZMA_INDEX_ITER_NONEMPTY_BLOCK&#160;:&#160;<a class="el" href="index_8h.html#a712b43192d944bf2f767711343cd9ca8aa49bf4d561d8f2c61d300edbb6c282c7">index.h</a></li>
-<li>LZMA_INDEX_ITER_STREAM&#160;:&#160;<a class="el" href="index_8h.html#a712b43192d944bf2f767711343cd9ca8a5b31d985de1c823151acdd7e4a966fc9">index.h</a></li>
-<li>LZMA_MEM_ERROR&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea567e1464feca03900a5425fb45b2f5b6">base.h</a></li>
-<li>LZMA_MEMLIMIT_ERROR&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6eaa1d705effe6026f32c0fe9756b6326bc">base.h</a></li>
-<li>LZMA_MF_BT2&#160;:&#160;<a class="el" href="lzma12_8h.html#acf740075f86fa61dc408d6d0dbf8fa80a7ab212446c3f6520f5c33ccfa4b3386a">lzma12.h</a></li>
-<li>LZMA_MF_BT3&#160;:&#160;<a class="el" href="lzma12_8h.html#acf740075f86fa61dc408d6d0dbf8fa80a983ecc59bf3e07a7c43fea551ea11865">lzma12.h</a></li>
-<li>LZMA_MF_BT4&#160;:&#160;<a class="el" href="lzma12_8h.html#acf740075f86fa61dc408d6d0dbf8fa80a468c32cdea9861d1ff98478364e6c547">lzma12.h</a></li>
-<li>LZMA_MF_HC3&#160;:&#160;<a class="el" href="lzma12_8h.html#acf740075f86fa61dc408d6d0dbf8fa80a6eb38f634021a192cada8a978b5de93b">lzma12.h</a></li>
-<li>LZMA_MF_HC4&#160;:&#160;<a class="el" href="lzma12_8h.html#acf740075f86fa61dc408d6d0dbf8fa80a0944620f4949289c2ebde613cae12b04">lzma12.h</a></li>
-<li>LZMA_MODE_FAST&#160;:&#160;<a class="el" href="lzma12_8h.html#a1032316e3075c2c8086fb17104b91866ac8c0926a91b4f756e11121efd30648cc">lzma12.h</a></li>
-<li>LZMA_MODE_NORMAL&#160;:&#160;<a class="el" href="lzma12_8h.html#a1032316e3075c2c8086fb17104b91866ad37225f30d5cd21fc8bb3eaba283bbf9">lzma12.h</a></li>
-<li>LZMA_NO_CHECK&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6eaa720d30092d504d7d138a320db1905ef">base.h</a></li>
-<li>LZMA_OK&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6eac003781ccb81bbd5578e29abed8a8cfe">base.h</a></li>
-<li>LZMA_OPTIONS_ERROR&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6eaa9ff6dfee36b7aba4fae60706d37425f">base.h</a></li>
-<li>LZMA_PROG_ERROR&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea2dac8d451cb38da8550653d0d7be4ec2">base.h</a></li>
-<li>LZMA_RUN&#160;:&#160;<a class="el" href="base_8h.html#aa92efcbf3cecfcac79c81fc645fce77ea868472b76492afcaef54020a481890b1">base.h</a></li>
-<li>LZMA_SEEK_NEEDED&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea6cf28e5345851f13bd798a4eab8cc939">base.h</a></li>
-<li>LZMA_STREAM_END&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea91ecc6fab14c13ad36224afbcb4e55c4">base.h</a></li>
-<li>LZMA_SYNC_FLUSH&#160;:&#160;<a class="el" href="base_8h.html#aa92efcbf3cecfcac79c81fc645fce77ea14d75152afcda85d215e877fdd9c4170">base.h</a></li>
-<li>LZMA_UNSUPPORTED_CHECK&#160;:&#160;<a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6ea989f393a1772d85bf545a9da48fc7ac2">base.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/globals_func.html b/doc/api/globals_func.html
deleted file mode 100644
index 091e519..0000000
--- a/doc/api/globals_func.html
+++ /dev/null
@@ -1,177 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): Globals</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File&#160;List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
- <div id="navrow3" class="tabs2">
- <ul class="tablist">
- <li><a href="globals.html"><span>All</span></a></li>
- <li class="current"><a href="globals_func.html"><span>Functions</span></a></li>
- <li><a href="globals_type.html"><span>Typedefs</span></a></li>
- <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
- <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
- <li><a href="globals_defs.html"><span>Macros</span></a></li>
- </ul>
- </div>
- <div id="navrow4" class="tabs3">
- <ul class="tablist">
- <li class="current"><a href="#index_l"><span>l</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div class="contents">
-<div class="textblock">Here is a list of all documented functions with links to the documentation:</div>
-
-<h3><a id="index_l" name="index_l"></a>- l -</h3><ul>
-<li>lzma_alone_decoder()&#160;:&#160;<a class="el" href="container_8h.html#a5f43c3a1035e5a226dcd298f4162b861">container.h</a></li>
-<li>lzma_alone_encoder()&#160;:&#160;<a class="el" href="container_8h.html#a26fcc5bccdf3f862caa4c992d01e1a72">container.h</a></li>
-<li>lzma_auto_decoder()&#160;:&#160;<a class="el" href="container_8h.html#a21cbebf2771617bb1e956385cfb353e3">container.h</a></li>
-<li>lzma_block_buffer_bound()&#160;:&#160;<a class="el" href="block_8h.html#a58ff73e2572b529f48cc590bfffe5b4f">block.h</a></li>
-<li>lzma_block_buffer_decode()&#160;:&#160;<a class="el" href="block_8h.html#a0c6eb869d91b08f68648b1aa7a32ee9f">block.h</a></li>
-<li>lzma_block_buffer_encode()&#160;:&#160;<a class="el" href="block_8h.html#af415fa5130ab64e8760e9c39e856fa54">block.h</a></li>
-<li>lzma_block_compressed_size()&#160;:&#160;<a class="el" href="block_8h.html#a6c3e102d76db06a07126a569abc6e2bc">block.h</a></li>
-<li>lzma_block_decoder()&#160;:&#160;<a class="el" href="block_8h.html#aa92c73b2a228efe921fa2376aa7adc92">block.h</a></li>
-<li>lzma_block_encoder()&#160;:&#160;<a class="el" href="block_8h.html#a2218a49025a0b44f9a6f9d6d24359359">block.h</a></li>
-<li>lzma_block_header_decode()&#160;:&#160;<a class="el" href="block_8h.html#a7f5487c21a7b36a8bd17be36074d43c9">block.h</a></li>
-<li>lzma_block_header_encode()&#160;:&#160;<a class="el" href="block_8h.html#a0eedbd6331d5708ea963260e6f2a92d0">block.h</a></li>
-<li>lzma_block_header_size()&#160;:&#160;<a class="el" href="block_8h.html#ae9b47abc872d0b02c2da9d3fa5a7dacd">block.h</a></li>
-<li>lzma_block_total_size()&#160;:&#160;<a class="el" href="block_8h.html#a694424f9dfdd5151e01debac1c501fa9">block.h</a></li>
-<li>lzma_block_uncomp_encode()&#160;:&#160;<a class="el" href="block_8h.html#a5a260f634ccd5f54fb98f570d8d92d8c">block.h</a></li>
-<li>lzma_block_unpadded_size()&#160;:&#160;<a class="el" href="block_8h.html#a412d5605280fa29befae1b89e344bf30">block.h</a></li>
-<li>lzma_check_is_supported()&#160;:&#160;<a class="el" href="check_8h.html#ae9391ed2acfad0ce9357b68c608f07d8">check.h</a></li>
-<li>lzma_check_size()&#160;:&#160;<a class="el" href="check_8h.html#afd3fda19575d9d4f864c626c02b7cb48">check.h</a></li>
-<li>lzma_code()&#160;:&#160;<a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957">base.h</a></li>
-<li>lzma_cputhreads()&#160;:&#160;<a class="el" href="hardware_8h.html#a22f7a882b7a4b741a226abf62bdf46ca">hardware.h</a></li>
-<li>lzma_crc32()&#160;:&#160;<a class="el" href="check_8h.html#a760b569cce91bdd01e4ce9d78823c96d">check.h</a></li>
-<li>lzma_crc64()&#160;:&#160;<a class="el" href="check_8h.html#aff2e74ce671b9f82a96adb549c68cea2">check.h</a></li>
-<li>lzma_easy_buffer_encode()&#160;:&#160;<a class="el" href="container_8h.html#ac5e71f2711b57391186671967435faf2">container.h</a></li>
-<li>lzma_easy_decoder_memusage()&#160;:&#160;<a class="el" href="container_8h.html#a3562055d26c18fad067a7c7516eaddf5">container.h</a></li>
-<li>lzma_easy_encoder()&#160;:&#160;<a class="el" href="container_8h.html#acbdad999c544872f0f5d242f0d1a4ed4">container.h</a></li>
-<li>lzma_easy_encoder_memusage()&#160;:&#160;<a class="el" href="container_8h.html#a62c853cf7dbf008bdbd97b2685c3eabf">container.h</a></li>
-<li>lzma_end()&#160;:&#160;<a class="el" href="base_8h.html#a854ff37464ae1225febf14db1af43308">base.h</a></li>
-<li>lzma_file_info_decoder()&#160;:&#160;<a class="el" href="index_8h.html#a7c5d77cf8532d95977d4571a1eb0a222">index.h</a></li>
-<li>lzma_filter_decoder_is_supported()&#160;:&#160;<a class="el" href="filter_8h.html#acab0c67bf5b3a76f2b474c8e1da98938">filter.h</a></li>
-<li>lzma_filter_encoder_is_supported()&#160;:&#160;<a class="el" href="filter_8h.html#a3db3c36cd6e57658a74c53e4daa2bef6">filter.h</a></li>
-<li>lzma_filter_flags_decode()&#160;:&#160;<a class="el" href="filter_8h.html#a4cba9a4c658cce0ff01fd102b31ea1a7">filter.h</a></li>
-<li>lzma_filter_flags_encode()&#160;:&#160;<a class="el" href="filter_8h.html#a96f23309bc21398fece18c00ebe7db98">filter.h</a></li>
-<li>lzma_filter_flags_size()&#160;:&#160;<a class="el" href="filter_8h.html#a996c9c21840ed54e37bd1f664a79d940">filter.h</a></li>
-<li>lzma_filters_copy()&#160;:&#160;<a class="el" href="filter_8h.html#a611fe1176eeeda187b1bd8aef45040aa">filter.h</a></li>
-<li>lzma_filters_free()&#160;:&#160;<a class="el" href="filter_8h.html#ae06979d219897f5f4c29cbc7a96a8892">filter.h</a></li>
-<li>lzma_filters_update()&#160;:&#160;<a class="el" href="filter_8h.html#a4a8fd969df001e449ebe4421ab33bba5">filter.h</a></li>
-<li>lzma_get_check()&#160;:&#160;<a class="el" href="check_8h.html#a8d7c3ffabfd024485f03fa209536c746">check.h</a></li>
-<li>lzma_get_progress()&#160;:&#160;<a class="el" href="base_8h.html#ab6447cd68eeecbd6b88f21daeb8ce751">base.h</a></li>
-<li>lzma_index_append()&#160;:&#160;<a class="el" href="index_8h.html#ac347747eb933c7c408e6c801b33becc3">index.h</a></li>
-<li>lzma_index_block_count()&#160;:&#160;<a class="el" href="index_8h.html#add1a8c506f67dbc19cae6747107e3bec">index.h</a></li>
-<li>lzma_index_buffer_decode()&#160;:&#160;<a class="el" href="index_8h.html#a028b8b8d59a413f9682eea1269a6ae8b">index.h</a></li>
-<li>lzma_index_buffer_encode()&#160;:&#160;<a class="el" href="index_8h.html#add1ef06dec8a26d08ae8651cff0fd8d6">index.h</a></li>
-<li>lzma_index_cat()&#160;:&#160;<a class="el" href="index_8h.html#abc4db36b4bd67af01819be9dd045c34a">index.h</a></li>
-<li>lzma_index_checks()&#160;:&#160;<a class="el" href="index_8h.html#af8d6528a04241841bd0a4322b0c57eaa">index.h</a></li>
-<li>lzma_index_decoder()&#160;:&#160;<a class="el" href="index_8h.html#abb56fd1d5914f8900ece7b88b78e5e23">index.h</a></li>
-<li>lzma_index_dup()&#160;:&#160;<a class="el" href="index_8h.html#a5161e3f67156577882e1d95dcb57e33e">index.h</a></li>
-<li>lzma_index_encoder()&#160;:&#160;<a class="el" href="index_8h.html#a6800d70f3b2afca085496460cd03211d">index.h</a></li>
-<li>lzma_index_end()&#160;:&#160;<a class="el" href="index_8h.html#a0c2d0009f07fc315d5ac89e4bcd25abd">index.h</a></li>
-<li>lzma_index_file_size()&#160;:&#160;<a class="el" href="index_8h.html#ac875ed47d35385e5dac461b25c5ea1c9">index.h</a></li>
-<li>lzma_index_hash_append()&#160;:&#160;<a class="el" href="index__hash_8h.html#a2bdbe4f0b5fa2fadb7528447feaaa97f">index_hash.h</a></li>
-<li>lzma_index_hash_decode()&#160;:&#160;<a class="el" href="index__hash_8h.html#a891eb955284c9117155f92eb0ddba44c">index_hash.h</a></li>
-<li>lzma_index_hash_end()&#160;:&#160;<a class="el" href="index__hash_8h.html#a7dacb41b9ec1c8df5d33dfdae97743b3">index_hash.h</a></li>
-<li>lzma_index_hash_init()&#160;:&#160;<a class="el" href="index__hash_8h.html#aaafae4967a4a266d97dc34a98bfcabfb">index_hash.h</a></li>
-<li>lzma_index_hash_size()&#160;:&#160;<a class="el" href="index__hash_8h.html#a0f8ab3b57b117f9547866156755c917f">index_hash.h</a></li>
-<li>lzma_index_init()&#160;:&#160;<a class="el" href="index_8h.html#a0850627d011111326d4278a3e2edec25">index.h</a></li>
-<li>lzma_index_iter_init()&#160;:&#160;<a class="el" href="index_8h.html#aa78f02f18ed29d289a6ef37b8ea98a21">index.h</a></li>
-<li>lzma_index_iter_locate()&#160;:&#160;<a class="el" href="index_8h.html#ac4f56df9d210712e5d7add5502c9eb93">index.h</a></li>
-<li>lzma_index_iter_next()&#160;:&#160;<a class="el" href="index_8h.html#af428522e1b3eef137c65c5a01f766e0e">index.h</a></li>
-<li>lzma_index_iter_rewind()&#160;:&#160;<a class="el" href="index_8h.html#ae81438be8deff4894b104e65d8acdd24">index.h</a></li>
-<li>lzma_index_memusage()&#160;:&#160;<a class="el" href="index_8h.html#a880def3727ecdd7f242807083d228fc5">index.h</a></li>
-<li>lzma_index_memused()&#160;:&#160;<a class="el" href="index_8h.html#a4118805ac7be6618aca6d6d7e5e4dde7">index.h</a></li>
-<li>lzma_index_size()&#160;:&#160;<a class="el" href="index_8h.html#a669ed1a82b1941217cfbb07e7826afc2">index.h</a></li>
-<li>lzma_index_stream_count()&#160;:&#160;<a class="el" href="index_8h.html#afd159a765b09b0cf79186069a848d07e">index.h</a></li>
-<li>lzma_index_stream_flags()&#160;:&#160;<a class="el" href="index_8h.html#a79a19669237f19f0b11c9f3be80a62b4">index.h</a></li>
-<li>lzma_index_stream_padding()&#160;:&#160;<a class="el" href="index_8h.html#a3ed82f96c688f3c953f6509b6f4e2ef3">index.h</a></li>
-<li>lzma_index_stream_size()&#160;:&#160;<a class="el" href="index_8h.html#af3630369b43c9ccc906065d759b49663">index.h</a></li>
-<li>lzma_index_total_size()&#160;:&#160;<a class="el" href="index_8h.html#a7829942b83ee1fa5b6443cc248b81041">index.h</a></li>
-<li>lzma_index_uncompressed_size()&#160;:&#160;<a class="el" href="index_8h.html#a620fe6317f1f9d7af9cc27c748bf07d6">index.h</a></li>
-<li>lzma_lzip_decoder()&#160;:&#160;<a class="el" href="container_8h.html#a97689f5709e0db1e2dac450f5ce4e5eb">container.h</a></li>
-<li>lzma_lzma_preset()&#160;:&#160;<a class="el" href="lzma12_8h.html#aa62c28944fe3575653a4c25780400d77">lzma12.h</a></li>
-<li>lzma_memlimit_get()&#160;:&#160;<a class="el" href="base_8h.html#ac871bc2ead5d482c6d6b3d51bfec365c">base.h</a></li>
-<li>lzma_memlimit_set()&#160;:&#160;<a class="el" href="base_8h.html#afc49d4cf75b73128a167df3407505f7b">base.h</a></li>
-<li>lzma_memusage()&#160;:&#160;<a class="el" href="base_8h.html#a418b210cf206782a73cd9de7dc27f670">base.h</a></li>
-<li>lzma_mf_is_supported()&#160;:&#160;<a class="el" href="lzma12_8h.html#aefba1f7214ddcf8cd408a0702e8642b5">lzma12.h</a></li>
-<li>lzma_microlzma_decoder()&#160;:&#160;<a class="el" href="container_8h.html#aa8372dae3e7c907c36f7bb5426aeacdf">container.h</a></li>
-<li>lzma_microlzma_encoder()&#160;:&#160;<a class="el" href="container_8h.html#abfc8f11acf837b167aa94b7071b54c30">container.h</a></li>
-<li>lzma_mode_is_supported()&#160;:&#160;<a class="el" href="lzma12_8h.html#ad1add1c2600fdbb3d737e4fb3465dfcb">lzma12.h</a></li>
-<li>lzma_physmem()&#160;:&#160;<a class="el" href="hardware_8h.html#a85363e453b34272a9f26c9fdffb041ee">hardware.h</a></li>
-<li>lzma_properties_decode()&#160;:&#160;<a class="el" href="filter_8h.html#a88d2e864b2039ac82802cc202278d478">filter.h</a></li>
-<li>lzma_properties_encode()&#160;:&#160;<a class="el" href="filter_8h.html#a8e00887086df5a44084ac22e48415de3">filter.h</a></li>
-<li>lzma_properties_size()&#160;:&#160;<a class="el" href="filter_8h.html#aee038818cf7bbe044c3f7a7c86998c1b">filter.h</a></li>
-<li>lzma_raw_buffer_decode()&#160;:&#160;<a class="el" href="filter_8h.html#a3b942df507e4f9a6d7525e5a4c6864e5">filter.h</a></li>
-<li>lzma_raw_buffer_encode()&#160;:&#160;<a class="el" href="filter_8h.html#a226724ab3391b410281fdf656cc7c432">filter.h</a></li>
-<li>lzma_raw_decoder()&#160;:&#160;<a class="el" href="filter_8h.html#ae77b3b6c5eccd9d77bbafef0a8a203c1">filter.h</a></li>
-<li>lzma_raw_decoder_memusage()&#160;:&#160;<a class="el" href="filter_8h.html#a58511249ae9206d7de7c5d1f05842297">filter.h</a></li>
-<li>lzma_raw_encoder()&#160;:&#160;<a class="el" href="filter_8h.html#a2368e4129032345eb0738b0c6e085703">filter.h</a></li>
-<li>lzma_raw_encoder_memusage()&#160;:&#160;<a class="el" href="filter_8h.html#a730f9391e85a5979bcd1b32643ae7176">filter.h</a></li>
-<li>lzma_str_from_filters()&#160;:&#160;<a class="el" href="filter_8h.html#a7deeb86ef59a9111b8033681290e0fb0">filter.h</a></li>
-<li>lzma_str_list_filters()&#160;:&#160;<a class="el" href="filter_8h.html#ab51585b68796ce0270f87e615b923809">filter.h</a></li>
-<li>lzma_str_to_filters()&#160;:&#160;<a class="el" href="filter_8h.html#aa042cf11749bc2183b27de1c3142da30">filter.h</a></li>
-<li>lzma_stream_buffer_bound()&#160;:&#160;<a class="el" href="container_8h.html#a66d4366a47b8332bff2a512f44f5c45e">container.h</a></li>
-<li>lzma_stream_buffer_decode()&#160;:&#160;<a class="el" href="container_8h.html#aa58f237f6cea97ef0eb9bf5c37a3008d">container.h</a></li>
-<li>lzma_stream_buffer_encode()&#160;:&#160;<a class="el" href="container_8h.html#a6e645ccaeace3b13a6981e03c6e190ad">container.h</a></li>
-<li>lzma_stream_decoder()&#160;:&#160;<a class="el" href="container_8h.html#a02b7683ef98d8049788961370a8b28c0">container.h</a></li>
-<li>lzma_stream_decoder_mt()&#160;:&#160;<a class="el" href="container_8h.html#a7179d178e6430c10e2006a467921e98e">container.h</a></li>
-<li>lzma_stream_encoder()&#160;:&#160;<a class="el" href="container_8h.html#a1a97aec94c9fedd7646cfa51c4f4cd52">container.h</a></li>
-<li>lzma_stream_encoder_mt()&#160;:&#160;<a class="el" href="container_8h.html#a3f8793518711ee84d1abf12ea3aaba42">container.h</a></li>
-<li>lzma_stream_encoder_mt_memusage()&#160;:&#160;<a class="el" href="container_8h.html#ad7cf41496d77f4d346e006b26ed8e101">container.h</a></li>
-<li>lzma_stream_flags_compare()&#160;:&#160;<a class="el" href="stream__flags_8h.html#a3e25ca4205021302882a696283d45263">stream_flags.h</a></li>
-<li>lzma_stream_footer_decode()&#160;:&#160;<a class="el" href="stream__flags_8h.html#aa92a383f85753bb79ee23227fa68186c">stream_flags.h</a></li>
-<li>lzma_stream_footer_encode()&#160;:&#160;<a class="el" href="stream__flags_8h.html#a438249a75ea8da952a7474b92bfe7b7a">stream_flags.h</a></li>
-<li>lzma_stream_header_decode()&#160;:&#160;<a class="el" href="stream__flags_8h.html#ae03198e464f0d296e601ff841e100805">stream_flags.h</a></li>
-<li>lzma_stream_header_encode()&#160;:&#160;<a class="el" href="stream__flags_8h.html#a2ebb8d6dff23daeb3de398913b845eff">stream_flags.h</a></li>
-<li>lzma_version_number()&#160;:&#160;<a class="el" href="version_8h.html#a72f929c9b9e8e730b790b3f8c80c3c80">version.h</a></li>
-<li>lzma_version_string()&#160;:&#160;<a class="el" href="version_8h.html#a8998c1d8b4b5c2c1218bdfd58fdb1baa">version.h</a></li>
-<li>lzma_vli_decode()&#160;:&#160;<a class="el" href="vli_8h.html#a7b7d50e1074e0e2bcd81c29a5f7461c7">vli.h</a></li>
-<li>lzma_vli_encode()&#160;:&#160;<a class="el" href="vli_8h.html#a50bbb77e9ec3b72c25586aa700c20970">vli.h</a></li>
-<li>lzma_vli_size()&#160;:&#160;<a class="el" href="vli_8h.html#a8d53e0b69934b43da8721fa6f1e8cc4f">vli.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/globals_type.html b/doc/api/globals_type.html
deleted file mode 100644
index cd7aa3f..0000000
--- a/doc/api/globals_type.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): Globals</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File&#160;List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
- <div id="navrow3" class="tabs2">
- <ul class="tablist">
- <li><a href="globals.html"><span>All</span></a></li>
- <li><a href="globals_func.html"><span>Functions</span></a></li>
- <li class="current"><a href="globals_type.html"><span>Typedefs</span></a></li>
- <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
- <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
- <li><a href="globals_defs.html"><span>Macros</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div class="contents">
-<div class="textblock">Here is a list of all documented typedefs with links to the documentation:</div><ul>
-<li>lzma_bool&#160;:&#160;<a class="el" href="base_8h.html#abbc819c74b484c846825ae1388a50a59">base.h</a></li>
-<li>lzma_index&#160;:&#160;<a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">index.h</a></li>
-<li>lzma_index_hash&#160;:&#160;<a class="el" href="index__hash_8h.html#a2db9f438838c8ff72a8a6fd3fc856f8c">index_hash.h</a></li>
-<li>lzma_internal&#160;:&#160;<a class="el" href="base_8h.html#ab1a60127c640135687a5bcc232cec906">base.h</a></li>
-<li>lzma_vli&#160;:&#160;<a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">vli.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/hardware_8h.html b/doc/api/hardware_8h.html
deleted file mode 100644
index fd302e2..0000000
--- a/doc/api/hardware_8h.html
+++ /dev/null
@@ -1,123 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma/hardware.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File&#160;List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div id="nav-path" class="navpath">
- <ul>
-<li class="navelem"><a class="el" href="dir_b17a1d403082bd69a703ed987cf158fb.html">lzma</a></li> </ul>
-</div>
-</div><!-- top -->
-<div class="header">
- <div class="summary">
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle"><div class="title">hardware.h File Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>Hardware information.
-<a href="#details">More...</a></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:a85363e453b34272a9f26c9fdffb041ee"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="hardware_8h.html#a85363e453b34272a9f26c9fdffb041ee">lzma_physmem</a> (void) lzma_nothrow</td></tr>
-<tr class="memdesc:a85363e453b34272a9f26c9fdffb041ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the total amount of physical memory (RAM) in bytes. <br /></td></tr>
-<tr class="separator:a85363e453b34272a9f26c9fdffb041ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a22f7a882b7a4b741a226abf62bdf46ca"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="hardware_8h.html#a22f7a882b7a4b741a226abf62bdf46ca">lzma_cputhreads</a> (void) lzma_nothrow</td></tr>
-<tr class="memdesc:a22f7a882b7a4b741a226abf62bdf46ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of processor cores or threads. <br /></td></tr>
-<tr class="separator:a22f7a882b7a4b741a226abf62bdf46ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Hardware information. </p>
-<dl class="section note"><dt>Note</dt><dd>Never include this file directly. Use &lt;<a class="el" href="lzma_8h.html" title="The public API of liblzma data compression library.">lzma.h</a>&gt; instead.</dd></dl>
-<p>Since liblzma can consume a lot of system resources, it also provides ways to limit the resource usage. Applications linking against liblzma need to do the actual decisions how much resources to let liblzma to use. To ease making these decisions, liblzma provides functions to find out the relevant capabilities of the underlying hardware. Currently there is only a function to find out the amount of RAM, but in the future there will be also a function to detect how many concurrent threads the system can run.</p>
-<dl class="section note"><dt>Note</dt><dd>On some operating systems, these function may temporarily load a shared library or open file descriptor(s) to find out the requested hardware information. Unless the application assumes that specific file descriptors are not touched by other threads, this should have no effect on thread safety. Possible operations involving file descriptors will restart the syscalls if they return EINTR. </dd></dl>
-</div><h2 class="groupheader">Function Documentation</h2>
-<a id="a85363e453b34272a9f26c9fdffb041ee" name="a85363e453b34272a9f26c9fdffb041ee"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a85363e453b34272a9f26c9fdffb041ee">&#9670;&#160;</a></span>lzma_physmem()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint64_t lzma_physmem </td>
- <td>(</td>
- <td class="paramtype">void&#160;</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Get the total amount of physical memory (RAM) in bytes. </p>
-<p>This function may be useful when determining a reasonable memory usage limit for decompressing or how much memory it is OK to use for compressing.</p>
-<dl class="section return"><dt>Returns</dt><dd>On success, the total amount of physical memory in bytes is returned. If the amount of RAM cannot be determined, zero is returned. This can happen if an error occurs or if there is no code in liblzma to detect the amount of RAM on the specific operating system. </dd></dl>
-
-</div>
-</div>
-<a id="a22f7a882b7a4b741a226abf62bdf46ca" name="a22f7a882b7a4b741a226abf62bdf46ca"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a22f7a882b7a4b741a226abf62bdf46ca">&#9670;&#160;</a></span>lzma_cputhreads()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint32_t lzma_cputhreads </td>
- <td>(</td>
- <td class="paramtype">void&#160;</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Get the number of processor cores or threads. </p>
-<p>This function may be useful when determining how many threads to use. If the hardware supports more than one thread per CPU core, the number of hardware threads is returned if that information is available.</p>
-<dl class="section return"><dt>Returns</dt><dd>On success, the number of available CPU threads or cores is returned. If this information isn't available or an error occurs, zero is returned. </dd></dl>
-
-</div>
-</div>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/index.html b/doc/api/index.html
deleted file mode 100644
index b3f8cce..0000000
--- a/doc/api/index.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): liblzma (XZ Utils)</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li class="current"><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div><div class="header">
- <div class="headertitle"><div class="title">liblzma (XZ Utils) </div></div>
-</div><!--header-->
-<div class="contents">
-<div class="textblock"><p>liblzma is a public domain general-purpose data compression library with a zlib-like API. The native file format is .xz, but also the old .lzma format and raw (no headers) streams are supported. Multiple compression algorithms (filters) are supported. Currently LZMA2 is the primary filter.</p>
-<p>liblzma is part of XZ Utils <a href="https://tukaani.org/xz/">https://tukaani.org/xz/</a>. XZ Utils includes a gzip-like command line tool named xz and some other tools. XZ Utils is developed and maintained by Lasse Collin and Jia Tan.</p>
-<p>Major parts of liblzma are based on Igor Pavlov's public domain LZMA SDK <a href="https://7-zip.org/sdk.html">https://7-zip.org/sdk.html</a>.</p>
-<p>The SHA-256 implementation is based on the public domain code found from 7-Zip <a href="https://7-zip.org/">https://7-zip.org/</a>, which has a modified version of the public domain SHA-256 code found from Crypto++ <a href="https://www.cryptopp.com/">https://www.cryptopp.com/</a>. The SHA-256 code in Crypto++ was written by Kevin Springle and Wei Dai. </p>
-</div></div><!-- PageDoc -->
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/index_8h.html b/doc/api/index_8h.html
deleted file mode 100644
index f0de050..0000000
--- a/doc/api/index_8h.html
+++ /dev/null
@@ -1,1268 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma/index.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File&#160;List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div id="nav-path" class="navpath">
- <ul>
-<li class="navelem"><a class="el" href="dir_b17a1d403082bd69a703ed987cf158fb.html">lzma</a></li> </ul>
-</div>
-</div><!-- top -->
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> &#124;
-<a href="#typedef-members">Typedefs</a> &#124;
-<a href="#enum-members">Enumerations</a> &#124;
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle"><div class="title">index.h File Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>Handling of .xz Index and related information.
-<a href="#details">More...</a></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__index__iter.html">lzma_index_iter</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Iterator to get information about Blocks and Streams. <a href="structlzma__index__iter.html#details">More...</a><br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
-Typedefs</h2></td></tr>
-<tr class="memitem:afc18c1443b3b9aa0d146b44e8755b62e"><td class="memItemLeft" align="right" valign="top">typedef struct lzma_index_s&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a></td></tr>
-<tr class="memdesc:afc18c1443b3b9aa0d146b44e8755b62e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque data type to hold the Index(es) and other information. <br /></td></tr>
-<tr class="separator:afc18c1443b3b9aa0d146b44e8755b62e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
-Enumerations</h2></td></tr>
-<tr class="memitem:a712b43192d944bf2f767711343cd9ca8"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#a712b43192d944bf2f767711343cd9ca8">lzma_index_iter_mode</a> { <a class="el" href="index_8h.html#a712b43192d944bf2f767711343cd9ca8af46f6e5c414471c7c96586f380e48315">LZMA_INDEX_ITER_ANY</a> = 0
-, <a class="el" href="index_8h.html#a712b43192d944bf2f767711343cd9ca8a5b31d985de1c823151acdd7e4a966fc9">LZMA_INDEX_ITER_STREAM</a> = 1
-, <a class="el" href="index_8h.html#a712b43192d944bf2f767711343cd9ca8a2702617d60d6fc15138a749e06ef3414">LZMA_INDEX_ITER_BLOCK</a> = 2
-, <a class="el" href="index_8h.html#a712b43192d944bf2f767711343cd9ca8aa49bf4d561d8f2c61d300edbb6c282c7">LZMA_INDEX_ITER_NONEMPTY_BLOCK</a> = 3
- }</td></tr>
-<tr class="memdesc:a712b43192d944bf2f767711343cd9ca8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Operation mode for <a class="el" href="index_8h.html#af428522e1b3eef137c65c5a01f766e0e" title="Get the next Block or Stream.">lzma_index_iter_next()</a> <a href="index_8h.html#a712b43192d944bf2f767711343cd9ca8">More...</a><br /></td></tr>
-<tr class="separator:a712b43192d944bf2f767711343cd9ca8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:a880def3727ecdd7f242807083d228fc5"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#a880def3727ecdd7f242807083d228fc5">lzma_index_memusage</a> (<a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> streams, <a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> blocks) lzma_nothrow</td></tr>
-<tr class="memdesc:a880def3727ecdd7f242807083d228fc5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate memory usage of lzma_index. <br /></td></tr>
-<tr class="separator:a880def3727ecdd7f242807083d228fc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4118805ac7be6618aca6d6d7e5e4dde7"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#a4118805ac7be6618aca6d6d7e5e4dde7">lzma_index_memused</a> (const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *i) lzma_nothrow</td></tr>
-<tr class="memdesc:a4118805ac7be6618aca6d6d7e5e4dde7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate the memory usage of an existing lzma_index. <br /></td></tr>
-<tr class="separator:a4118805ac7be6618aca6d6d7e5e4dde7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0850627d011111326d4278a3e2edec25"><td class="memItemLeft" align="right" valign="top"><a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#a0850627d011111326d4278a3e2edec25">lzma_index_init</a> (const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *allocator) lzma_nothrow</td></tr>
-<tr class="memdesc:a0850627d011111326d4278a3e2edec25"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate and initialize a new lzma_index structure. <br /></td></tr>
-<tr class="separator:a0850627d011111326d4278a3e2edec25"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0c2d0009f07fc315d5ac89e4bcd25abd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#a0c2d0009f07fc315d5ac89e4bcd25abd">lzma_index_end</a> (<a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *i, const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *allocator) lzma_nothrow</td></tr>
-<tr class="memdesc:a0c2d0009f07fc315d5ac89e4bcd25abd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deallocate lzma_index. <br /></td></tr>
-<tr class="separator:a0c2d0009f07fc315d5ac89e4bcd25abd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac347747eb933c7c408e6c801b33becc3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#ac347747eb933c7c408e6c801b33becc3">lzma_index_append</a> (<a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *i, const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *allocator, <a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> unpadded_size, <a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> uncompressed_size) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:ac347747eb933c7c408e6c801b33becc3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a new Block to lzma_index. <br /></td></tr>
-<tr class="separator:ac347747eb933c7c408e6c801b33becc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a79a19669237f19f0b11c9f3be80a62b4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#a79a19669237f19f0b11c9f3be80a62b4">lzma_index_stream_flags</a> (<a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *i, const <a class="el" href="structlzma__stream__flags.html">lzma_stream_flags</a> *stream_flags) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a79a19669237f19f0b11c9f3be80a62b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the Stream Flags. <br /></td></tr>
-<tr class="separator:a79a19669237f19f0b11c9f3be80a62b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af8d6528a04241841bd0a4322b0c57eaa"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#af8d6528a04241841bd0a4322b0c57eaa">lzma_index_checks</a> (const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *i) lzma_nothrow lzma_attr_pure</td></tr>
-<tr class="memdesc:af8d6528a04241841bd0a4322b0c57eaa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the types of integrity Checks. <br /></td></tr>
-<tr class="separator:af8d6528a04241841bd0a4322b0c57eaa"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3ed82f96c688f3c953f6509b6f4e2ef3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#a3ed82f96c688f3c953f6509b6f4e2ef3">lzma_index_stream_padding</a> (<a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *i, <a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> stream_padding) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a3ed82f96c688f3c953f6509b6f4e2ef3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the amount of Stream Padding. <br /></td></tr>
-<tr class="separator:a3ed82f96c688f3c953f6509b6f4e2ef3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afd159a765b09b0cf79186069a848d07e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#afd159a765b09b0cf79186069a848d07e">lzma_index_stream_count</a> (const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *i) lzma_nothrow lzma_attr_pure</td></tr>
-<tr class="memdesc:afd159a765b09b0cf79186069a848d07e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of Streams. <br /></td></tr>
-<tr class="separator:afd159a765b09b0cf79186069a848d07e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:add1a8c506f67dbc19cae6747107e3bec"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#add1a8c506f67dbc19cae6747107e3bec">lzma_index_block_count</a> (const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *i) lzma_nothrow lzma_attr_pure</td></tr>
-<tr class="memdesc:add1a8c506f67dbc19cae6747107e3bec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of Blocks. <br /></td></tr>
-<tr class="separator:add1a8c506f67dbc19cae6747107e3bec"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a669ed1a82b1941217cfbb07e7826afc2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#a669ed1a82b1941217cfbb07e7826afc2">lzma_index_size</a> (const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *i) lzma_nothrow lzma_attr_pure</td></tr>
-<tr class="memdesc:a669ed1a82b1941217cfbb07e7826afc2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the size of the Index field as bytes. <br /></td></tr>
-<tr class="separator:a669ed1a82b1941217cfbb07e7826afc2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af3630369b43c9ccc906065d759b49663"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#af3630369b43c9ccc906065d759b49663">lzma_index_stream_size</a> (const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *i) lzma_nothrow lzma_attr_pure</td></tr>
-<tr class="memdesc:af3630369b43c9ccc906065d759b49663"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the total size of the Stream. <br /></td></tr>
-<tr class="separator:af3630369b43c9ccc906065d759b49663"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7829942b83ee1fa5b6443cc248b81041"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#a7829942b83ee1fa5b6443cc248b81041">lzma_index_total_size</a> (const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *i) lzma_nothrow lzma_attr_pure</td></tr>
-<tr class="memdesc:a7829942b83ee1fa5b6443cc248b81041"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the total size of the Blocks. <br /></td></tr>
-<tr class="separator:a7829942b83ee1fa5b6443cc248b81041"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac875ed47d35385e5dac461b25c5ea1c9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#ac875ed47d35385e5dac461b25c5ea1c9">lzma_index_file_size</a> (const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *i) lzma_nothrow lzma_attr_pure</td></tr>
-<tr class="memdesc:ac875ed47d35385e5dac461b25c5ea1c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the total size of the file. <br /></td></tr>
-<tr class="separator:ac875ed47d35385e5dac461b25c5ea1c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a620fe6317f1f9d7af9cc27c748bf07d6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#a620fe6317f1f9d7af9cc27c748bf07d6">lzma_index_uncompressed_size</a> (const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *i) lzma_nothrow lzma_attr_pure</td></tr>
-<tr class="memdesc:a620fe6317f1f9d7af9cc27c748bf07d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the uncompressed size of the file. <br /></td></tr>
-<tr class="separator:a620fe6317f1f9d7af9cc27c748bf07d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa78f02f18ed29d289a6ef37b8ea98a21"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#aa78f02f18ed29d289a6ef37b8ea98a21">lzma_index_iter_init</a> (<a class="el" href="structlzma__index__iter.html">lzma_index_iter</a> *iter, const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *i) lzma_nothrow</td></tr>
-<tr class="memdesc:aa78f02f18ed29d289a6ef37b8ea98a21"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize an iterator. <br /></td></tr>
-<tr class="separator:aa78f02f18ed29d289a6ef37b8ea98a21"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae81438be8deff4894b104e65d8acdd24"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#ae81438be8deff4894b104e65d8acdd24">lzma_index_iter_rewind</a> (<a class="el" href="structlzma__index__iter.html">lzma_index_iter</a> *iter) lzma_nothrow</td></tr>
-<tr class="memdesc:ae81438be8deff4894b104e65d8acdd24"><td class="mdescLeft">&#160;</td><td class="mdescRight">Rewind the iterator. <br /></td></tr>
-<tr class="separator:ae81438be8deff4894b104e65d8acdd24"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af428522e1b3eef137c65c5a01f766e0e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#abbc819c74b484c846825ae1388a50a59">lzma_bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#af428522e1b3eef137c65c5a01f766e0e">lzma_index_iter_next</a> (<a class="el" href="structlzma__index__iter.html">lzma_index_iter</a> *iter, <a class="el" href="index_8h.html#a712b43192d944bf2f767711343cd9ca8">lzma_index_iter_mode</a> mode) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:af428522e1b3eef137c65c5a01f766e0e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the next Block or Stream. <br /></td></tr>
-<tr class="separator:af428522e1b3eef137c65c5a01f766e0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac4f56df9d210712e5d7add5502c9eb93"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#abbc819c74b484c846825ae1388a50a59">lzma_bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#ac4f56df9d210712e5d7add5502c9eb93">lzma_index_iter_locate</a> (<a class="el" href="structlzma__index__iter.html">lzma_index_iter</a> *iter, <a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> target) lzma_nothrow</td></tr>
-<tr class="memdesc:ac4f56df9d210712e5d7add5502c9eb93"><td class="mdescLeft">&#160;</td><td class="mdescRight">Locate a Block. <br /></td></tr>
-<tr class="separator:ac4f56df9d210712e5d7add5502c9eb93"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abc4db36b4bd67af01819be9dd045c34a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#abc4db36b4bd67af01819be9dd045c34a">lzma_index_cat</a> (<a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *dest, <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *src, const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *allocator) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:abc4db36b4bd67af01819be9dd045c34a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Concatenate lzma_indexes. <br /></td></tr>
-<tr class="separator:abc4db36b4bd67af01819be9dd045c34a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5161e3f67156577882e1d95dcb57e33e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#a5161e3f67156577882e1d95dcb57e33e">lzma_index_dup</a> (const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *i, const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *allocator) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a5161e3f67156577882e1d95dcb57e33e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Duplicate lzma_index. <br /></td></tr>
-<tr class="separator:a5161e3f67156577882e1d95dcb57e33e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6800d70f3b2afca085496460cd03211d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#a6800d70f3b2afca085496460cd03211d">lzma_index_encoder</a> (<a class="el" href="structlzma__stream.html">lzma_stream</a> *strm, const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *i) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a6800d70f3b2afca085496460cd03211d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize .xz Index encoder. <br /></td></tr>
-<tr class="separator:a6800d70f3b2afca085496460cd03211d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abb56fd1d5914f8900ece7b88b78e5e23"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#abb56fd1d5914f8900ece7b88b78e5e23">lzma_index_decoder</a> (<a class="el" href="structlzma__stream.html">lzma_stream</a> *strm, <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> **i, uint64_t memlimit) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:abb56fd1d5914f8900ece7b88b78e5e23"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize .xz Index decoder. <br /></td></tr>
-<tr class="separator:abb56fd1d5914f8900ece7b88b78e5e23"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:add1ef06dec8a26d08ae8651cff0fd8d6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#add1ef06dec8a26d08ae8651cff0fd8d6">lzma_index_buffer_encode</a> (const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *i, uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow</td></tr>
-<tr class="memdesc:add1ef06dec8a26d08ae8651cff0fd8d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Single-call .xz Index encoder. <br /></td></tr>
-<tr class="separator:add1ef06dec8a26d08ae8651cff0fd8d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a028b8b8d59a413f9682eea1269a6ae8b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#a028b8b8d59a413f9682eea1269a6ae8b">lzma_index_buffer_decode</a> (<a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> **i, uint64_t *memlimit, const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *allocator, const uint8_t *in, size_t *in_pos, size_t in_size) lzma_nothrow</td></tr>
-<tr class="memdesc:a028b8b8d59a413f9682eea1269a6ae8b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Single-call .xz Index decoder. <br /></td></tr>
-<tr class="separator:a028b8b8d59a413f9682eea1269a6ae8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7c5d77cf8532d95977d4571a1eb0a222"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index_8h.html#a7c5d77cf8532d95977d4571a1eb0a222">lzma_file_info_decoder</a> (<a class="el" href="structlzma__stream.html">lzma_stream</a> *strm, <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> **dest_index, uint64_t memlimit, uint64_t file_size) lzma_nothrow</td></tr>
-<tr class="memdesc:a7c5d77cf8532d95977d4571a1eb0a222"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize a .xz file information decoder. <br /></td></tr>
-<tr class="separator:a7c5d77cf8532d95977d4571a1eb0a222"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Handling of .xz Index and related information. </p>
-<dl class="section note"><dt>Note</dt><dd>Never include this file directly. Use &lt;<a class="el" href="lzma_8h.html" title="The public API of liblzma data compression library.">lzma.h</a>&gt; instead. </dd></dl>
-</div><h2 class="groupheader">Typedef Documentation</h2>
-<a id="afc18c1443b3b9aa0d146b44e8755b62e" name="afc18c1443b3b9aa0d146b44e8755b62e"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#afc18c1443b3b9aa0d146b44e8755b62e">&#9670;&#160;</a></span>lzma_index</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef struct lzma_index_s <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Opaque data type to hold the Index(es) and other information. </p>
-<p>lzma_index often holds just one .xz Index and possibly the Stream Flags of the same Stream and size of the Stream Padding field. However, multiple lzma_indexes can be concatenated with <a class="el" href="index_8h.html#abc4db36b4bd67af01819be9dd045c34a" title="Concatenate lzma_indexes.">lzma_index_cat()</a> and then there may be information about multiple Streams in the same lzma_index.</p>
-<p>Notes about thread safety: Only one thread may modify lzma_index at a time. All functions that take non-const pointer to lzma_index modify it. As long as no thread is modifying the lzma_index, getting information from the same lzma_index can be done from multiple threads at the same time with functions that take a const pointer to lzma_index or use <a class="el" href="structlzma__index__iter.html" title="Iterator to get information about Blocks and Streams.">lzma_index_iter</a>. The same iterator must be used only by one thread at a time, of course, but there can be as many iterators for the same lzma_index as needed. </p>
-
-</div>
-</div>
-<h2 class="groupheader">Enumeration Type Documentation</h2>
-<a id="a712b43192d944bf2f767711343cd9ca8" name="a712b43192d944bf2f767711343cd9ca8"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a712b43192d944bf2f767711343cd9ca8">&#9670;&#160;</a></span>lzma_index_iter_mode</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">enum <a class="el" href="index_8h.html#a712b43192d944bf2f767711343cd9ca8">lzma_index_iter_mode</a></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Operation mode for <a class="el" href="index_8h.html#af428522e1b3eef137c65c5a01f766e0e" title="Get the next Block or Stream.">lzma_index_iter_next()</a> </p>
-<table class="fieldtable">
-<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a712b43192d944bf2f767711343cd9ca8af46f6e5c414471c7c96586f380e48315" name="a712b43192d944bf2f767711343cd9ca8af46f6e5c414471c7c96586f380e48315"></a>LZMA_INDEX_ITER_ANY&#160;</td><td class="fielddoc"><p>Get the next Block or Stream. </p>
-<p>Go to the next Block if the current Stream has at least one Block left. Otherwise go to the next Stream even if it has no Blocks. If the Stream has no Blocks (lzma_index_iter.stream.block_count == 0), lzma_index_iter.block will have undefined values. </p>
-</td></tr>
-<tr><td class="fieldname"><a id="a712b43192d944bf2f767711343cd9ca8a5b31d985de1c823151acdd7e4a966fc9" name="a712b43192d944bf2f767711343cd9ca8a5b31d985de1c823151acdd7e4a966fc9"></a>LZMA_INDEX_ITER_STREAM&#160;</td><td class="fielddoc"><p>Get the next Stream. </p>
-<p>Go to the next Stream even if the current Stream has unread Blocks left. If the next Stream has at least one Block, the iterator will point to the first Block. If there are no Blocks, lzma_index_iter.block will have undefined values. </p>
-</td></tr>
-<tr><td class="fieldname"><a id="a712b43192d944bf2f767711343cd9ca8a2702617d60d6fc15138a749e06ef3414" name="a712b43192d944bf2f767711343cd9ca8a2702617d60d6fc15138a749e06ef3414"></a>LZMA_INDEX_ITER_BLOCK&#160;</td><td class="fielddoc"><p>Get the next Block. </p>
-<p>Go to the next Block if the current Stream has at least one Block left. If the current Stream has no Blocks left, the next Stream with at least one Block is located and the iterator will be made to point to the first Block of that Stream. </p>
-</td></tr>
-<tr><td class="fieldname"><a id="a712b43192d944bf2f767711343cd9ca8aa49bf4d561d8f2c61d300edbb6c282c7" name="a712b43192d944bf2f767711343cd9ca8aa49bf4d561d8f2c61d300edbb6c282c7"></a>LZMA_INDEX_ITER_NONEMPTY_BLOCK&#160;</td><td class="fielddoc"><p>Get the next non-empty Block. </p>
-<p>This is like LZMA_INDEX_ITER_BLOCK except that it will skip Blocks whose Uncompressed Size is zero. </p>
-</td></tr>
-</table>
-
-</div>
-</div>
-<h2 class="groupheader">Function Documentation</h2>
-<a id="a880def3727ecdd7f242807083d228fc5" name="a880def3727ecdd7f242807083d228fc5"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a880def3727ecdd7f242807083d228fc5">&#9670;&#160;</a></span>lzma_index_memusage()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint64_t lzma_index_memusage </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td>
- <td class="paramname"><em>streams</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td>
- <td class="paramname"><em>blocks</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Calculate memory usage of lzma_index. </p>
-<p>On disk, the size of the Index field depends on both the number of Records stored and the size of the Records (due to variable-length integer encoding). When the Index is kept in lzma_index structure, the memory usage depends only on the number of Records/Blocks stored in the Index(es), and in case of concatenated lzma_indexes, the number of Streams. The size in RAM is almost always significantly bigger than in the encoded form on disk.</p>
-<p>This function calculates an approximate amount of memory needed to hold the given number of Streams and Blocks in lzma_index structure. This value may vary between CPU architectures and also between liblzma versions if the internal implementation is modified.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">streams</td><td>Number of Streams </td></tr>
- <tr><td class="paramname">blocks</td><td>Number of Blocks</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Approximate memory in bytes needed in a lzma_index structure. </dd></dl>
-
-</div>
-</div>
-<a id="a4118805ac7be6618aca6d6d7e5e4dde7" name="a4118805ac7be6618aca6d6d7e5e4dde7"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a4118805ac7be6618aca6d6d7e5e4dde7">&#9670;&#160;</a></span>lzma_index_memused()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint64_t lzma_index_memused </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *&#160;</td>
- <td class="paramname"><em>i</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Calculate the memory usage of an existing lzma_index. </p>
-<p>This is a shorthand for lzma_index_memusage(lzma_index_stream_count(i), lzma_index_block_count(i)).</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">i</td><td>Pointer to lzma_index structure</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Approximate memory in bytes used by the lzma_index structure. </dd></dl>
-
-</div>
-</div>
-<a id="a0850627d011111326d4278a3e2edec25" name="a0850627d011111326d4278a3e2edec25"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a0850627d011111326d4278a3e2edec25">&#9670;&#160;</a></span>lzma_index_init()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> * lzma_index_init </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *&#160;</td>
- <td class="paramname"><em>allocator</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Allocate and initialize a new lzma_index structure. </p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">allocator</td><td><a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> for custom allocator functions. Set to NULL to use malloc() and free().</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>On success, a pointer to an empty initialized lzma_index is returned. If allocation fails, NULL is returned. </dd></dl>
-
-</div>
-</div>
-<a id="a0c2d0009f07fc315d5ac89e4bcd25abd" name="a0c2d0009f07fc315d5ac89e4bcd25abd"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a0c2d0009f07fc315d5ac89e4bcd25abd">&#9670;&#160;</a></span>lzma_index_end()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void lzma_index_end </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *&#160;</td>
- <td class="paramname"><em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *&#160;</td>
- <td class="paramname"><em>allocator</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Deallocate lzma_index. </p>
-<p>If i is NULL, this does nothing.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">i</td><td>Pointer to lzma_index structure to deallocate </td></tr>
- <tr><td class="paramname">allocator</td><td><a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> for custom allocator functions. Set to NULL to use malloc() and free(). </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a id="ac347747eb933c7c408e6c801b33becc3" name="ac347747eb933c7c408e6c801b33becc3"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ac347747eb933c7c408e6c801b33becc3">&#9670;&#160;</a></span>lzma_index_append()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_index_append </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *&#160;</td>
- <td class="paramname"><em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *&#160;</td>
- <td class="paramname"><em>allocator</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td>
- <td class="paramname"><em>unpadded_size</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td>
- <td class="paramname"><em>uncompressed_size</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Add a new Block to lzma_index. </p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">i</td><td>Pointer to a lzma_index structure </td></tr>
- <tr><td class="paramname">allocator</td><td><a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> for custom allocator functions. Set to NULL to use malloc() and free(). </td></tr>
- <tr><td class="paramname">unpadded_size</td><td>Unpadded Size of a Block. This can be calculated with <a class="el" href="block_8h.html#a412d5605280fa29befae1b89e344bf30" title="Calculate Unpadded Size.">lzma_block_unpadded_size()</a> after encoding or decoding the Block. </td></tr>
- <tr><td class="paramname">uncompressed_size</td><td>Uncompressed Size of a Block. This can be taken directly from <a class="el" href="structlzma__block.html" title="Options for the Block and Block Header encoders and decoders.">lzma_block</a> structure after encoding or decoding the Block.</td></tr>
- </table>
- </dd>
-</dl>
-<p>Appending a new Block does not invalidate iterators. For example, if an iterator was pointing to the end of the lzma_index, after <a class="el" href="index_8h.html#ac347747eb933c7c408e6c801b33becc3" title="Add a new Block to lzma_index.">lzma_index_append()</a> it is possible to read the next Block with an existing iterator.</p>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_DATA_ERROR: Compressed or uncompressed size of the Stream or size of the Index field would grow too big.</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a79a19669237f19f0b11c9f3be80a62b4" name="a79a19669237f19f0b11c9f3be80a62b4"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a79a19669237f19f0b11c9f3be80a62b4">&#9670;&#160;</a></span>lzma_index_stream_flags()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_index_stream_flags </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *&#160;</td>
- <td class="paramname"><em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__stream__flags.html">lzma_stream_flags</a> *&#160;</td>
- <td class="paramname"><em>stream_flags</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Set the Stream Flags. </p>
-<p>Set the Stream Flags of the last (and typically the only) Stream in lzma_index. This can be useful when reading information from the lzma_index, because to decode Blocks, knowing the integrity check type is needed.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">i</td><td>Pointer to lzma_index structure </td></tr>
- <tr><td class="paramname">stream_flags</td><td>Pointer to <a class="el" href="structlzma__stream__flags.html" title="Options for encoding/decoding Stream Header and Stream Footer.">lzma_stream_flags</a> structure. This is copied into the internal preallocated structure, so the caller doesn't need to keep the flags' data available after calling this function.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK</li>
-<li>LZMA_OPTIONS_ERROR: Unsupported stream_flags-&gt;version.</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="af8d6528a04241841bd0a4322b0c57eaa" name="af8d6528a04241841bd0a4322b0c57eaa"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#af8d6528a04241841bd0a4322b0c57eaa">&#9670;&#160;</a></span>lzma_index_checks()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint32_t lzma_index_checks </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *&#160;</td>
- <td class="paramname"><em>i</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Get the types of integrity Checks. </p>
-<p>If <a class="el" href="index_8h.html#a79a19669237f19f0b11c9f3be80a62b4" title="Set the Stream Flags.">lzma_index_stream_flags()</a> is used to set the Stream Flags for every Stream, <a class="el" href="index_8h.html#af8d6528a04241841bd0a4322b0c57eaa" title="Get the types of integrity Checks.">lzma_index_checks()</a> can be used to get a bitmask to indicate which Check types have been used. It can be useful e.g. if showing the Check types to the user.</p>
-<p>The bitmask is 1 &lt;&lt; check_id, e.g. CRC32 is 1 &lt;&lt; 1 and SHA-256 is 1 &lt;&lt; 10.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">i</td><td>Pointer to lzma_index structure</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Bitmask indicating which Check types are used in the lzma_index </dd></dl>
-
-</div>
-</div>
-<a id="a3ed82f96c688f3c953f6509b6f4e2ef3" name="a3ed82f96c688f3c953f6509b6f4e2ef3"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a3ed82f96c688f3c953f6509b6f4e2ef3">&#9670;&#160;</a></span>lzma_index_stream_padding()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_index_stream_padding </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *&#160;</td>
- <td class="paramname"><em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td>
- <td class="paramname"><em>stream_padding</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Set the amount of Stream Padding. </p>
-<p>Set the amount of Stream Padding of the last (and typically the only) Stream in the lzma_index. This is needed when planning to do random-access reading within multiple concatenated Streams.</p>
-<p>By default, the amount of Stream Padding is assumed to be zero bytes.</p>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK</li>
-<li>LZMA_DATA_ERROR: The file size would grow too big.</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="afd159a765b09b0cf79186069a848d07e" name="afd159a765b09b0cf79186069a848d07e"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#afd159a765b09b0cf79186069a848d07e">&#9670;&#160;</a></span>lzma_index_stream_count()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_index_stream_count </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *&#160;</td>
- <td class="paramname"><em>i</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Get the number of Streams. </p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">i</td><td>Pointer to lzma_index structure</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Number of Streams in the lzma_index </dd></dl>
-
-</div>
-</div>
-<a id="add1a8c506f67dbc19cae6747107e3bec" name="add1a8c506f67dbc19cae6747107e3bec"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#add1a8c506f67dbc19cae6747107e3bec">&#9670;&#160;</a></span>lzma_index_block_count()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_index_block_count </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *&#160;</td>
- <td class="paramname"><em>i</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Get the number of Blocks. </p>
-<p>This returns the total number of Blocks in lzma_index. To get number of Blocks in individual Streams, use <a class="el" href="structlzma__index__iter.html" title="Iterator to get information about Blocks and Streams.">lzma_index_iter</a>.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">i</td><td>Pointer to lzma_index structure</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Number of blocks in the lzma_index </dd></dl>
-
-</div>
-</div>
-<a id="a669ed1a82b1941217cfbb07e7826afc2" name="a669ed1a82b1941217cfbb07e7826afc2"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a669ed1a82b1941217cfbb07e7826afc2">&#9670;&#160;</a></span>lzma_index_size()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_index_size </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *&#160;</td>
- <td class="paramname"><em>i</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Get the size of the Index field as bytes. </p>
-<p>This is needed to verify the Backward Size field in the Stream Footer.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">i</td><td>Pointer to lzma_index structure</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Size in bytes of the Index </dd></dl>
-
-</div>
-</div>
-<a id="af3630369b43c9ccc906065d759b49663" name="af3630369b43c9ccc906065d759b49663"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#af3630369b43c9ccc906065d759b49663">&#9670;&#160;</a></span>lzma_index_stream_size()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_index_stream_size </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *&#160;</td>
- <td class="paramname"><em>i</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Get the total size of the Stream. </p>
-<p>If multiple lzma_indexes have been combined, this works as if the Blocks were in a single Stream. This is useful if you are going to combine Blocks from multiple Streams into a single new Stream.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">i</td><td>Pointer to lzma_index structure</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Size in bytes of the Stream (if all Blocks are combined into one Stream). </dd></dl>
-
-</div>
-</div>
-<a id="a7829942b83ee1fa5b6443cc248b81041" name="a7829942b83ee1fa5b6443cc248b81041"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a7829942b83ee1fa5b6443cc248b81041">&#9670;&#160;</a></span>lzma_index_total_size()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_index_total_size </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *&#160;</td>
- <td class="paramname"><em>i</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Get the total size of the Blocks. </p>
-<p>This doesn't include the Stream Header, Stream Footer, Stream Padding, or Index fields.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">i</td><td>Pointer to lzma_index structure</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Size in bytes of all Blocks in the Stream(s) </dd></dl>
-
-</div>
-</div>
-<a id="ac875ed47d35385e5dac461b25c5ea1c9" name="ac875ed47d35385e5dac461b25c5ea1c9"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ac875ed47d35385e5dac461b25c5ea1c9">&#9670;&#160;</a></span>lzma_index_file_size()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_index_file_size </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *&#160;</td>
- <td class="paramname"><em>i</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Get the total size of the file. </p>
-<p>When no lzma_indexes have been combined with <a class="el" href="index_8h.html#abc4db36b4bd67af01819be9dd045c34a" title="Concatenate lzma_indexes.">lzma_index_cat()</a> and there is no Stream Padding, this function is identical to <a class="el" href="index_8h.html#af3630369b43c9ccc906065d759b49663" title="Get the total size of the Stream.">lzma_index_stream_size()</a>. If multiple lzma_indexes have been combined, this includes also the headers of each separate Stream and the possible Stream Padding fields.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">i</td><td>Pointer to lzma_index structure</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Total size of the .xz file in bytes </dd></dl>
-
-</div>
-</div>
-<a id="a620fe6317f1f9d7af9cc27c748bf07d6" name="a620fe6317f1f9d7af9cc27c748bf07d6"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a620fe6317f1f9d7af9cc27c748bf07d6">&#9670;&#160;</a></span>lzma_index_uncompressed_size()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_index_uncompressed_size </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *&#160;</td>
- <td class="paramname"><em>i</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Get the uncompressed size of the file. </p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">i</td><td>Pointer to lzma_index structure</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Size in bytes of the uncompressed data in the file </dd></dl>
-
-</div>
-</div>
-<a id="aa78f02f18ed29d289a6ef37b8ea98a21" name="aa78f02f18ed29d289a6ef37b8ea98a21"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aa78f02f18ed29d289a6ef37b8ea98a21">&#9670;&#160;</a></span>lzma_index_iter_init()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void lzma_index_iter_init </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__index__iter.html">lzma_index_iter</a> *&#160;</td>
- <td class="paramname"><em>iter</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *&#160;</td>
- <td class="paramname"><em>i</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Initialize an iterator. </p>
-<p>This function associates the iterator with the given lzma_index, and calls <a class="el" href="index_8h.html#ae81438be8deff4894b104e65d8acdd24" title="Rewind the iterator.">lzma_index_iter_rewind()</a> on the iterator.</p>
-<p>This function doesn't allocate any memory, thus there is no lzma_index_iter_end(). The iterator is valid as long as the associated lzma_index is valid, that is, until <a class="el" href="index_8h.html#a0c2d0009f07fc315d5ac89e4bcd25abd" title="Deallocate lzma_index.">lzma_index_end()</a> or using it as source in <a class="el" href="index_8h.html#abc4db36b4bd67af01819be9dd045c34a" title="Concatenate lzma_indexes.">lzma_index_cat()</a>. Specifically, lzma_index doesn't become invalid if new Blocks are added to it with <a class="el" href="index_8h.html#ac347747eb933c7c408e6c801b33becc3" title="Add a new Block to lzma_index.">lzma_index_append()</a> or if it is used as the destination in <a class="el" href="index_8h.html#abc4db36b4bd67af01819be9dd045c34a" title="Concatenate lzma_indexes.">lzma_index_cat()</a>.</p>
-<p>It is safe to make copies of an initialized <a class="el" href="structlzma__index__iter.html" title="Iterator to get information about Blocks and Streams.">lzma_index_iter</a>, for example, to easily restart reading at some particular position.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">iter</td><td>Pointer to a <a class="el" href="structlzma__index__iter.html" title="Iterator to get information about Blocks and Streams.">lzma_index_iter</a> structure </td></tr>
- <tr><td class="paramname">i</td><td>lzma_index to which the iterator will be associated </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a id="ae81438be8deff4894b104e65d8acdd24" name="ae81438be8deff4894b104e65d8acdd24"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ae81438be8deff4894b104e65d8acdd24">&#9670;&#160;</a></span>lzma_index_iter_rewind()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void lzma_index_iter_rewind </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__index__iter.html">lzma_index_iter</a> *&#160;</td>
- <td class="paramname"><em>iter</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Rewind the iterator. </p>
-<p>Rewind the iterator so that next call to <a class="el" href="index_8h.html#af428522e1b3eef137c65c5a01f766e0e" title="Get the next Block or Stream.">lzma_index_iter_next()</a> will return the first Block or Stream.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">iter</td><td>Pointer to a <a class="el" href="structlzma__index__iter.html" title="Iterator to get information about Blocks and Streams.">lzma_index_iter</a> structure </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a id="af428522e1b3eef137c65c5a01f766e0e" name="af428522e1b3eef137c65c5a01f766e0e"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#af428522e1b3eef137c65c5a01f766e0e">&#9670;&#160;</a></span>lzma_index_iter_next()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#abbc819c74b484c846825ae1388a50a59">lzma_bool</a> lzma_index_iter_next </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__index__iter.html">lzma_index_iter</a> *&#160;</td>
- <td class="paramname"><em>iter</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="index_8h.html#a712b43192d944bf2f767711343cd9ca8">lzma_index_iter_mode</a>&#160;</td>
- <td class="paramname"><em>mode</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Get the next Block or Stream. </p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">iter</td><td>Iterator initialized with <a class="el" href="index_8h.html#aa78f02f18ed29d289a6ef37b8ea98a21" title="Initialize an iterator.">lzma_index_iter_init()</a> </td></tr>
- <tr><td class="paramname">mode</td><td>Specify what kind of information the caller wants to get. See lzma_index_iter_mode for details.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>lzma_bool:<ul>
-<li>true if no Block or Stream matching the mode is found. *iter is not updated (failure).</li>
-<li>false if the next Block or Stream matching the mode was found. *iter is updated (success). </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="ac4f56df9d210712e5d7add5502c9eb93" name="ac4f56df9d210712e5d7add5502c9eb93"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ac4f56df9d210712e5d7add5502c9eb93">&#9670;&#160;</a></span>lzma_index_iter_locate()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#abbc819c74b484c846825ae1388a50a59">lzma_bool</a> lzma_index_iter_locate </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__index__iter.html">lzma_index_iter</a> *&#160;</td>
- <td class="paramname"><em>iter</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td>
- <td class="paramname"><em>target</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Locate a Block. </p>
-<p>If it is possible to seek in the .xz file, it is possible to parse the Index field(s) and use <a class="el" href="index_8h.html#ac4f56df9d210712e5d7add5502c9eb93" title="Locate a Block.">lzma_index_iter_locate()</a> to do random-access reading with granularity of Block size.</p>
-<p>If the target is smaller than the uncompressed size of the Stream (can be checked with <a class="el" href="index_8h.html#a620fe6317f1f9d7af9cc27c748bf07d6" title="Get the uncompressed size of the file.">lzma_index_uncompressed_size()</a>):</p><ul>
-<li>Information about the Stream and Block containing the requested uncompressed offset is stored into *iter.</li>
-<li>Internal state of the iterator is adjusted so that <a class="el" href="index_8h.html#af428522e1b3eef137c65c5a01f766e0e" title="Get the next Block or Stream.">lzma_index_iter_next()</a> can be used to read subsequent Blocks or Streams.</li>
-</ul>
-<p>If the target is greater than the uncompressed size of the Stream, *iter is not modified.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">iter</td><td>Iterator that was earlier initialized with <a class="el" href="index_8h.html#aa78f02f18ed29d289a6ef37b8ea98a21" title="Initialize an iterator.">lzma_index_iter_init()</a>. </td></tr>
- <tr><td class="paramname">target</td><td>Uncompressed target offset which the caller would like to locate from the Stream</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>lzma_bool:<ul>
-<li>true if the target is greater than or equal to the uncompressed size of the Stream (failure)</li>
-<li>false if the target is smaller than the uncompressed size of the Stream (success) </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="abc4db36b4bd67af01819be9dd045c34a" name="abc4db36b4bd67af01819be9dd045c34a"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#abc4db36b4bd67af01819be9dd045c34a">&#9670;&#160;</a></span>lzma_index_cat()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_index_cat </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *&#160;</td>
- <td class="paramname"><em>dest</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *&#160;</td>
- <td class="paramname"><em>src</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *&#160;</td>
- <td class="paramname"><em>allocator</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Concatenate lzma_indexes. </p>
-<p>Concatenating lzma_indexes is useful when doing random-access reading in multi-Stream .xz file, or when combining multiple Streams into single Stream.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[out]</td><td class="paramname">dest</td><td>lzma_index after which src is appended </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">src</td><td>lzma_index to be appended after dest. If this function succeeds, the memory allocated for src is freed or moved to be part of dest, and all iterators pointing to src will become invalid. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">allocator</td><td><a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> for custom allocator functions. Set to NULL to use malloc() and free().</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: lzma_indexes were concatenated successfully. src is now a dangling pointer.</li>
-<li>LZMA_DATA_ERROR: *dest would grow too big.</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a5161e3f67156577882e1d95dcb57e33e" name="a5161e3f67156577882e1d95dcb57e33e"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a5161e3f67156577882e1d95dcb57e33e">&#9670;&#160;</a></span>lzma_index_dup()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> * lzma_index_dup </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *&#160;</td>
- <td class="paramname"><em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *&#160;</td>
- <td class="paramname"><em>allocator</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Duplicate lzma_index. </p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">i</td><td>Pointer to lzma_index structure to be duplicated </td></tr>
- <tr><td class="paramname">allocator</td><td><a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> for custom allocator functions. Set to NULL to use malloc() and free().</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>A copy of the lzma_index, or NULL if memory allocation failed. </dd></dl>
-
-</div>
-</div>
-<a id="a6800d70f3b2afca085496460cd03211d" name="a6800d70f3b2afca085496460cd03211d"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a6800d70f3b2afca085496460cd03211d">&#9670;&#160;</a></span>lzma_index_encoder()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_index_encoder </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *&#160;</td>
- <td class="paramname"><em>i</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Initialize .xz Index encoder. </p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">strm</td><td>Pointer to properly prepared <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> </td></tr>
- <tr><td class="paramname">i</td><td>Pointer to lzma_index which should be encoded.</td></tr>
- </table>
- </dd>
-</dl>
-<p>The valid `action' values for <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> are LZMA_RUN and LZMA_FINISH. It is enough to use only one of them (you can choose freely).</p>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Initialization succeeded, continue with <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a>.</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="abb56fd1d5914f8900ece7b88b78e5e23" name="abb56fd1d5914f8900ece7b88b78e5e23"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#abb56fd1d5914f8900ece7b88b78e5e23">&#9670;&#160;</a></span>lzma_index_decoder()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_index_decoder </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> **&#160;</td>
- <td class="paramname"><em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint64_t&#160;</td>
- <td class="paramname"><em>memlimit</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Initialize .xz Index decoder. </p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir"></td><td class="paramname">strm</td><td>Pointer to properly prepared <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">i</td><td>The decoded Index will be made available via this pointer. Initially this function will set *i to NULL (the old value is ignored). If decoding succeeds (<a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> returns LZMA_STREAM_END), *i will be set to point to a new lzma_index, which the application has to later free with <a class="el" href="index_8h.html#a0c2d0009f07fc315d5ac89e4bcd25abd" title="Deallocate lzma_index.">lzma_index_end()</a>. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">memlimit</td><td>How much memory the resulting lzma_index is allowed to require. liblzma 5.2.3 and earlier don't allow 0 here and return LZMA_PROG_ERROR; later versions treat 0 as if 1 had been specified.</td></tr>
- </table>
- </dd>
-</dl>
-<p>Valid `action' arguments to <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> are LZMA_RUN and LZMA_FINISH. There is no need to use LZMA_FINISH, but it's allowed because it may simplify certain types of applications.</p>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Initialization succeeded, continue with <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a>.</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_PROG_ERROR</li>
-</ul>
-</dd></dl>
-<dl class="section note"><dt>Note</dt><dd>liblzma 5.2.3 and older list also LZMA_MEMLIMIT_ERROR here but that error code has never been possible from this initialization function. </dd></dl>
-
-</div>
-</div>
-<a id="add1ef06dec8a26d08ae8651cff0fd8d6" name="add1ef06dec8a26d08ae8651cff0fd8d6"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#add1ef06dec8a26d08ae8651cff0fd8d6">&#9670;&#160;</a></span>lzma_index_buffer_encode()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_index_buffer_encode </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> *&#160;</td>
- <td class="paramname"><em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint8_t *&#160;</td>
- <td class="paramname"><em>out</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t *&#160;</td>
- <td class="paramname"><em>out_pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>out_size</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Single-call .xz Index encoder. </p>
-<dl class="section note"><dt>Note</dt><dd>This function doesn't take allocator argument since all the internal data is allocated on stack.</dd></dl>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir"></td><td class="paramname">i</td><td>lzma_index to be encoded </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">out</td><td>Beginning of the output buffer </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">out_pos</td><td>The next byte will be written to out[*out_pos]. *out_pos is updated only if encoding succeeds. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">out_size</td><td>Size of the out buffer; the first byte into which no data is written to is out[out_size].</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Encoding was successful.</li>
-<li>LZMA_BUF_ERROR: Output buffer is too small. Use <a class="el" href="index_8h.html#a669ed1a82b1941217cfbb07e7826afc2" title="Get the size of the Index field as bytes.">lzma_index_size()</a> to find out how much output space is needed.</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a028b8b8d59a413f9682eea1269a6ae8b" name="a028b8b8d59a413f9682eea1269a6ae8b"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a028b8b8d59a413f9682eea1269a6ae8b">&#9670;&#160;</a></span>lzma_index_buffer_decode()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_index_buffer_decode </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> **&#160;</td>
- <td class="paramname"><em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint64_t *&#160;</td>
- <td class="paramname"><em>memlimit</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *&#160;</td>
- <td class="paramname"><em>allocator</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint8_t *&#160;</td>
- <td class="paramname"><em>in</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t *&#160;</td>
- <td class="paramname"><em>in_pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>in_size</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Single-call .xz Index decoder. </p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[out]</td><td class="paramname">i</td><td>If decoding succeeds, *i will point to a new lzma_index, which the application has to later free with <a class="el" href="index_8h.html#a0c2d0009f07fc315d5ac89e4bcd25abd" title="Deallocate lzma_index.">lzma_index_end()</a>. If an error occurs, *i will be NULL. The old value of *i is always ignored and thus doesn't need to be initialized by the caller. </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">memlimit</td><td>Pointer to how much memory the resulting lzma_index is allowed to require. The value pointed by this pointer is modified if and only if LZMA_MEMLIMIT_ERROR is returned. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">allocator</td><td><a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> for custom allocator functions. Set to NULL to use malloc() and free(). </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in</td><td>Beginning of the input buffer </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in_pos</td><td>The next byte will be read from in[*in_pos]. *in_pos is updated only if decoding succeeds. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in_size</td><td>Size of the input buffer; the first byte that won't be read is in[in_size].</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Decoding was successful.</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_MEMLIMIT_ERROR: Memory usage limit was reached. The minimum required memlimit value was stored to *memlimit.</li>
-<li>LZMA_DATA_ERROR</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a7c5d77cf8532d95977d4571a1eb0a222" name="a7c5d77cf8532d95977d4571a1eb0a222"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a7c5d77cf8532d95977d4571a1eb0a222">&#9670;&#160;</a></span>lzma_file_info_decoder()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_file_info_decoder </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__stream.html">lzma_stream</a> *&#160;</td>
- <td class="paramname"><em>strm</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="index_8h.html#afc18c1443b3b9aa0d146b44e8755b62e">lzma_index</a> **&#160;</td>
- <td class="paramname"><em>dest_index</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint64_t&#160;</td>
- <td class="paramname"><em>memlimit</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint64_t&#160;</td>
- <td class="paramname"><em>file_size</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Initialize a .xz file information decoder. </p>
-<p>This decoder decodes the Stream Header, Stream Footer, Index, and Stream Padding field(s) from the input .xz file and stores the resulting combined index in *dest_index. This information can be used to get the uncompressed file size with lzma_index_uncompressed_size(*dest_index) or, for example, to implement random access reading by locating the Blocks in the Streams.</p>
-<p>To get the required information from the .xz file, <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> may ask the application to seek in the input file by returning LZMA_SEEK_NEEDED and having the target file position specified in <a class="el" href="structlzma__stream.html#af7c43a61f3dfeb0b9c8487b7f275054e" title="New seek input position for LZMA_SEEK_NEEDED.">lzma_stream.seek_pos</a>. The number of seeks required depends on the input file and how big buffers the application provides. When possible, the decoder will seek backward and forward in the given buffer to avoid useless seek requests. Thus, if the application provides the whole file at once, no external seeking will be required (that is, <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> won't return LZMA_SEEK_NEEDED).</p>
-<p>The value in <a class="el" href="structlzma__stream.html#a1a411e1755d6185756caefabc3932c7b">lzma_stream.total_in</a> can be used to estimate how much data liblzma had to read to get the file information. However, due to seeking and the way total_in is updated, the value of total_in will be somewhat inaccurate (a little too big). Thus, total_in is a good estimate but don't expect to see the same exact value for the same file if you change the input buffer size or switch to a different liblzma version.</p>
-<p>Valid `action' arguments to <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> are LZMA_RUN and LZMA_FINISH. You only need to use LZMA_RUN; LZMA_FINISH is only supported because it might be convenient for some applications. If you use LZMA_FINISH and if <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> asks the application to seek, remember to reset `action' back to LZMA_RUN unless you hit the end of the file again.</p>
-<p>Possible return values from <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a>:</p><ul>
-<li>LZMA_OK: All OK so far, more input needed</li>
-<li>LZMA_SEEK_NEEDED: Provide more input starting from the absolute file position strm-&gt;seek_pos</li>
-<li>LZMA_STREAM_END: Decoding was successful, *dest_index has been set</li>
-<li>LZMA_FORMAT_ERROR: The input file is not in the .xz format (the expected magic bytes were not found from the beginning of the file)</li>
-<li>LZMA_OPTIONS_ERROR: File looks valid but contains headers that aren't supported by this version of liblzma</li>
-<li>LZMA_DATA_ERROR: File is corrupt</li>
-<li>LZMA_BUF_ERROR</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_MEMLIMIT_ERROR</li>
-<li>LZMA_PROG_ERROR</li>
-</ul>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir"></td><td class="paramname">strm</td><td>Pointer to a properly prepared <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">dest_index</td><td>Pointer to a pointer where the decoder will put the decoded lzma_index. The old value of *dest_index is ignored (not freed). </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">memlimit</td><td>How much memory the resulting lzma_index is allowed to require. Use UINT64_MAX to effectively disable the limiter. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">file_size</td><td>Size of the input .xz file</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK</li>
-<li>LZMA_MEM_ERROR</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/index__hash_8h.html b/doc/api/index__hash_8h.html
deleted file mode 100644
index 1f568ed..0000000
--- a/doc/api/index__hash_8h.html
+++ /dev/null
@@ -1,311 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma/index_hash.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File&#160;List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div id="nav-path" class="navpath">
- <ul>
-<li class="navelem"><a class="el" href="dir_b17a1d403082bd69a703ed987cf158fb.html">lzma</a></li> </ul>
-</div>
-</div><!-- top -->
-<div class="header">
- <div class="summary">
-<a href="#typedef-members">Typedefs</a> &#124;
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle"><div class="title">index_hash.h File Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>Validate Index by using a hash function.
-<a href="#details">More...</a></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
-Typedefs</h2></td></tr>
-<tr class="memitem:a2db9f438838c8ff72a8a6fd3fc856f8c"><td class="memItemLeft" align="right" valign="top"><a id="a2db9f438838c8ff72a8a6fd3fc856f8c" name="a2db9f438838c8ff72a8a6fd3fc856f8c"></a>
-typedef struct lzma_index_hash_s&#160;</td><td class="memItemRight" valign="bottom"><b>lzma_index_hash</b></td></tr>
-<tr class="memdesc:a2db9f438838c8ff72a8a6fd3fc856f8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque data type to hold the Index hash. <br /></td></tr>
-<tr class="separator:a2db9f438838c8ff72a8a6fd3fc856f8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:aaafae4967a4a266d97dc34a98bfcabfb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="index__hash_8h.html#a2db9f438838c8ff72a8a6fd3fc856f8c">lzma_index_hash</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index__hash_8h.html#aaafae4967a4a266d97dc34a98bfcabfb">lzma_index_hash_init</a> (<a class="el" href="index__hash_8h.html#a2db9f438838c8ff72a8a6fd3fc856f8c">lzma_index_hash</a> *index_hash, const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *allocator) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:aaafae4967a4a266d97dc34a98bfcabfb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate and initialize a new lzma_index_hash structure. <br /></td></tr>
-<tr class="separator:aaafae4967a4a266d97dc34a98bfcabfb"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7dacb41b9ec1c8df5d33dfdae97743b3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index__hash_8h.html#a7dacb41b9ec1c8df5d33dfdae97743b3">lzma_index_hash_end</a> (<a class="el" href="index__hash_8h.html#a2db9f438838c8ff72a8a6fd3fc856f8c">lzma_index_hash</a> *index_hash, const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *allocator) lzma_nothrow</td></tr>
-<tr class="memdesc:a7dacb41b9ec1c8df5d33dfdae97743b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deallocate lzma_index_hash structure. <br /></td></tr>
-<tr class="separator:a7dacb41b9ec1c8df5d33dfdae97743b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2bdbe4f0b5fa2fadb7528447feaaa97f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index__hash_8h.html#a2bdbe4f0b5fa2fadb7528447feaaa97f">lzma_index_hash_append</a> (<a class="el" href="index__hash_8h.html#a2db9f438838c8ff72a8a6fd3fc856f8c">lzma_index_hash</a> *index_hash, <a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> unpadded_size, <a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> uncompressed_size) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a2bdbe4f0b5fa2fadb7528447feaaa97f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a new Record to an Index hash. <br /></td></tr>
-<tr class="separator:a2bdbe4f0b5fa2fadb7528447feaaa97f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a891eb955284c9117155f92eb0ddba44c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index__hash_8h.html#a891eb955284c9117155f92eb0ddba44c">lzma_index_hash_decode</a> (<a class="el" href="index__hash_8h.html#a2db9f438838c8ff72a8a6fd3fc856f8c">lzma_index_hash</a> *index_hash, const uint8_t *in, size_t *in_pos, size_t in_size) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a891eb955284c9117155f92eb0ddba44c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decode and validate the Index field. <br /></td></tr>
-<tr class="separator:a891eb955284c9117155f92eb0ddba44c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0f8ab3b57b117f9547866156755c917f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="index__hash_8h.html#a0f8ab3b57b117f9547866156755c917f">lzma_index_hash_size</a> (const <a class="el" href="index__hash_8h.html#a2db9f438838c8ff72a8a6fd3fc856f8c">lzma_index_hash</a> *index_hash) lzma_nothrow lzma_attr_pure</td></tr>
-<tr class="memdesc:a0f8ab3b57b117f9547866156755c917f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the size of the Index field as bytes. <br /></td></tr>
-<tr class="separator:a0f8ab3b57b117f9547866156755c917f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Validate Index by using a hash function. </p>
-<dl class="section note"><dt>Note</dt><dd>Never include this file directly. Use &lt;<a class="el" href="lzma_8h.html" title="The public API of liblzma data compression library.">lzma.h</a>&gt; instead.</dd></dl>
-<p>Hashing makes it possible to use constant amount of memory to validate Index of arbitrary size. </p>
-</div><h2 class="groupheader">Function Documentation</h2>
-<a id="aaafae4967a4a266d97dc34a98bfcabfb" name="aaafae4967a4a266d97dc34a98bfcabfb"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aaafae4967a4a266d97dc34a98bfcabfb">&#9670;&#160;</a></span>lzma_index_hash_init()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="index__hash_8h.html#a2db9f438838c8ff72a8a6fd3fc856f8c">lzma_index_hash</a> * lzma_index_hash_init </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="index__hash_8h.html#a2db9f438838c8ff72a8a6fd3fc856f8c">lzma_index_hash</a> *&#160;</td>
- <td class="paramname"><em>index_hash</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *&#160;</td>
- <td class="paramname"><em>allocator</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Allocate and initialize a new lzma_index_hash structure. </p>
-<p>If index_hash is NULL, this function allocates and initializes a new lzma_index_hash structure and returns a pointer to it. If allocation fails, NULL is returned.</p>
-<p>If index_hash is non-NULL, this function reinitializes the lzma_index_hash structure and returns the same pointer. In this case, return value cannot be NULL or a different pointer than the index_hash that was given as an argument.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">index_hash</td><td>Pointer to a lzma_index_hash structure or NULL. </td></tr>
- <tr><td class="paramname">allocator</td><td><a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> for custom allocator functions. Set to NULL to use malloc() and free().</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Initialized lzma_index_hash structure on success or NULL on failure. </dd></dl>
-
-</div>
-</div>
-<a id="a7dacb41b9ec1c8df5d33dfdae97743b3" name="a7dacb41b9ec1c8df5d33dfdae97743b3"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a7dacb41b9ec1c8df5d33dfdae97743b3">&#9670;&#160;</a></span>lzma_index_hash_end()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void lzma_index_hash_end </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="index__hash_8h.html#a2db9f438838c8ff72a8a6fd3fc856f8c">lzma_index_hash</a> *&#160;</td>
- <td class="paramname"><em>index_hash</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *&#160;</td>
- <td class="paramname"><em>allocator</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Deallocate lzma_index_hash structure. </p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">index_hash</td><td>Pointer to a lzma_index_hash structure to free. </td></tr>
- <tr><td class="paramname">allocator</td><td><a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> for custom allocator functions. Set to NULL to use malloc() and free(). </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a id="a2bdbe4f0b5fa2fadb7528447feaaa97f" name="a2bdbe4f0b5fa2fadb7528447feaaa97f"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a2bdbe4f0b5fa2fadb7528447feaaa97f">&#9670;&#160;</a></span>lzma_index_hash_append()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_index_hash_append </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="index__hash_8h.html#a2db9f438838c8ff72a8a6fd3fc856f8c">lzma_index_hash</a> *&#160;</td>
- <td class="paramname"><em>index_hash</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td>
- <td class="paramname"><em>unpadded_size</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td>
- <td class="paramname"><em>uncompressed_size</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Add a new Record to an Index hash. </p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">index_hash</td><td>Pointer to a lzma_index_hash structure </td></tr>
- <tr><td class="paramname">unpadded_size</td><td>Unpadded Size of a Block </td></tr>
- <tr><td class="paramname">uncompressed_size</td><td>Uncompressed Size of a Block</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK</li>
-<li>LZMA_DATA_ERROR: Compressed or uncompressed size of the Stream or size of the Index field would grow too big.</li>
-<li>LZMA_PROG_ERROR: Invalid arguments or this function is being used when <a class="el" href="index__hash_8h.html#a891eb955284c9117155f92eb0ddba44c" title="Decode and validate the Index field.">lzma_index_hash_decode()</a> has already been used. </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a891eb955284c9117155f92eb0ddba44c" name="a891eb955284c9117155f92eb0ddba44c"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a891eb955284c9117155f92eb0ddba44c">&#9670;&#160;</a></span>lzma_index_hash_decode()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_index_hash_decode </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="index__hash_8h.html#a2db9f438838c8ff72a8a6fd3fc856f8c">lzma_index_hash</a> *&#160;</td>
- <td class="paramname"><em>index_hash</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint8_t *&#160;</td>
- <td class="paramname"><em>in</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t *&#160;</td>
- <td class="paramname"><em>in_pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>in_size</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Decode and validate the Index field. </p>
-<p>After telling the sizes of all Blocks with <a class="el" href="index__hash_8h.html#a2bdbe4f0b5fa2fadb7528447feaaa97f" title="Add a new Record to an Index hash.">lzma_index_hash_append()</a>, the actual Index field is decoded with this function. Specifically, once decoding of the Index field has been started, no more Records can be added using <a class="el" href="index__hash_8h.html#a2bdbe4f0b5fa2fadb7528447feaaa97f" title="Add a new Record to an Index hash.">lzma_index_hash_append()</a>.</p>
-<p>This function doesn't use <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> structure to pass the input data. Instead, the input buffer is specified using three arguments. This is because it matches better the internal APIs of liblzma.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir"></td><td class="paramname">index_hash</td><td>Pointer to a lzma_index_hash structure </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in</td><td>Pointer to the beginning of the input buffer </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">in_pos</td><td>in[*in_pos] is the next byte to process </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in_size</td><td>in[in_size] is the first byte not to process</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: So far good, but more input is needed.</li>
-<li>LZMA_STREAM_END: Index decoded successfully and it matches the Records given with <a class="el" href="index__hash_8h.html#a2bdbe4f0b5fa2fadb7528447feaaa97f" title="Add a new Record to an Index hash.">lzma_index_hash_append()</a>.</li>
-<li>LZMA_DATA_ERROR: Index is corrupt or doesn't match the information given with <a class="el" href="index__hash_8h.html#a2bdbe4f0b5fa2fadb7528447feaaa97f" title="Add a new Record to an Index hash.">lzma_index_hash_append()</a>.</li>
-<li>LZMA_BUF_ERROR: Cannot progress because *in_pos &gt;= in_size.</li>
-<li>LZMA_PROG_ERROR </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a0f8ab3b57b117f9547866156755c917f" name="a0f8ab3b57b117f9547866156755c917f"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a0f8ab3b57b117f9547866156755c917f">&#9670;&#160;</a></span>lzma_index_hash_size()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_index_hash_size </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="index__hash_8h.html#a2db9f438838c8ff72a8a6fd3fc856f8c">lzma_index_hash</a> *&#160;</td>
- <td class="paramname"><em>index_hash</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Get the size of the Index field as bytes. </p>
-<p>This is needed to verify the Backward Size field in the Stream Footer.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">index_hash</td><td>Pointer to a lzma_index_hash structure</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Size of the Index field in bytes. </dd></dl>
-
-</div>
-</div>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/lzma12_8h.html b/doc/api/lzma12_8h.html
deleted file mode 100644
index 1d8330c..0000000
--- a/doc/api/lzma12_8h.html
+++ /dev/null
@@ -1,436 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma/lzma12.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File&#160;List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div id="nav-path" class="navpath">
- <ul>
-<li class="navelem"><a class="el" href="dir_b17a1d403082bd69a703ed987cf158fb.html">lzma</a></li> </ul>
-</div>
-</div><!-- top -->
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> &#124;
-<a href="#define-members">Macros</a> &#124;
-<a href="#enum-members">Enumerations</a> &#124;
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle"><div class="title">lzma12.h File Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>LZMA1 and LZMA2 filters.
-<a href="#details">More...</a></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__options__lzma.html">lzma_options_lzma</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Options specific to the LZMA1 and LZMA2 filters. <a href="structlzma__options__lzma.html#details">More...</a><br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
-Macros</h2></td></tr>
-<tr class="memitem:accedd16abcb758e7f748bac1102abda9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lzma12_8h.html#accedd16abcb758e7f748bac1102abda9">LZMA_FILTER_LZMA1</a>&#160;&#160;&#160;<a class="el" href="vli_8h.html#a2d8bf5322898bfa11945848420585881">LZMA_VLI_C</a>(0x4000000000000001)</td></tr>
-<tr class="memdesc:accedd16abcb758e7f748bac1102abda9"><td class="mdescLeft">&#160;</td><td class="mdescRight">LZMA1 Filter ID (for raw encoder/decoder only, not in .xz) <br /></td></tr>
-<tr class="separator:accedd16abcb758e7f748bac1102abda9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a98a7fd42aa78a273a6b138629e46772d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lzma12_8h.html#a98a7fd42aa78a273a6b138629e46772d">LZMA_FILTER_LZMA1EXT</a>&#160;&#160;&#160;<a class="el" href="vli_8h.html#a2d8bf5322898bfa11945848420585881">LZMA_VLI_C</a>(0x4000000000000002)</td></tr>
-<tr class="memdesc:a98a7fd42aa78a273a6b138629e46772d"><td class="mdescLeft">&#160;</td><td class="mdescRight">LZMA1 Filter ID with extended options (for raw encoder/decoder) <br /></td></tr>
-<tr class="separator:a98a7fd42aa78a273a6b138629e46772d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a04f9d9a018a47cc99491e6e94e92f96b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lzma12_8h.html#a04f9d9a018a47cc99491e6e94e92f96b">LZMA_FILTER_LZMA2</a>&#160;&#160;&#160;<a class="el" href="vli_8h.html#a2d8bf5322898bfa11945848420585881">LZMA_VLI_C</a>(0x21)</td></tr>
-<tr class="memdesc:a04f9d9a018a47cc99491e6e94e92f96b"><td class="mdescLeft">&#160;</td><td class="mdescRight">LZMA2 Filter ID. <br /></td></tr>
-<tr class="separator:a04f9d9a018a47cc99491e6e94e92f96b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a221f69f8a1f604c1aa5d79ae8afec1e0"><td class="memItemLeft" align="right" valign="top"><a id="a221f69f8a1f604c1aa5d79ae8afec1e0" name="a221f69f8a1f604c1aa5d79ae8afec1e0"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_DICT_SIZE_MIN</b>&#160;&#160;&#160;UINT32_C(4096)</td></tr>
-<tr class="separator:a221f69f8a1f604c1aa5d79ae8afec1e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abadf9a9599c106a1381756219c16f8ee"><td class="memItemLeft" align="right" valign="top"><a id="abadf9a9599c106a1381756219c16f8ee" name="abadf9a9599c106a1381756219c16f8ee"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_DICT_SIZE_DEFAULT</b>&#160;&#160;&#160;(UINT32_C(1) &lt;&lt; 23)</td></tr>
-<tr class="separator:abadf9a9599c106a1381756219c16f8ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a36552f4d49390d060692424817222d9c"><td class="memItemLeft" align="right" valign="top"><a id="a36552f4d49390d060692424817222d9c" name="a36552f4d49390d060692424817222d9c"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_LCLP_MIN</b>&#160;&#160;&#160;0</td></tr>
-<tr class="separator:a36552f4d49390d060692424817222d9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6890226055b5069e83835af1fb804654"><td class="memItemLeft" align="right" valign="top"><a id="a6890226055b5069e83835af1fb804654" name="a6890226055b5069e83835af1fb804654"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_LCLP_MAX</b>&#160;&#160;&#160;4</td></tr>
-<tr class="separator:a6890226055b5069e83835af1fb804654"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af3769f40103ec40516e1235c4b912d05"><td class="memItemLeft" align="right" valign="top"><a id="af3769f40103ec40516e1235c4b912d05" name="af3769f40103ec40516e1235c4b912d05"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_LC_DEFAULT</b>&#160;&#160;&#160;3</td></tr>
-<tr class="separator:af3769f40103ec40516e1235c4b912d05"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afa8ed908b2c1a88f3a76c47610036e68"><td class="memItemLeft" align="right" valign="top"><a id="afa8ed908b2c1a88f3a76c47610036e68" name="afa8ed908b2c1a88f3a76c47610036e68"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_LP_DEFAULT</b>&#160;&#160;&#160;0</td></tr>
-<tr class="separator:afa8ed908b2c1a88f3a76c47610036e68"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a11ed595416a499021cd571f08bbd38bc"><td class="memItemLeft" align="right" valign="top"><a id="a11ed595416a499021cd571f08bbd38bc" name="a11ed595416a499021cd571f08bbd38bc"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_PB_MIN</b>&#160;&#160;&#160;0</td></tr>
-<tr class="separator:a11ed595416a499021cd571f08bbd38bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5e2661cef9dbcbb309239ec243a7c034"><td class="memItemLeft" align="right" valign="top"><a id="a5e2661cef9dbcbb309239ec243a7c034" name="a5e2661cef9dbcbb309239ec243a7c034"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_PB_MAX</b>&#160;&#160;&#160;4</td></tr>
-<tr class="separator:a5e2661cef9dbcbb309239ec243a7c034"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5072e13ce7b6abcdffdf6456da5959a1"><td class="memItemLeft" align="right" valign="top"><a id="a5072e13ce7b6abcdffdf6456da5959a1" name="a5072e13ce7b6abcdffdf6456da5959a1"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_PB_DEFAULT</b>&#160;&#160;&#160;2</td></tr>
-<tr class="separator:a5072e13ce7b6abcdffdf6456da5959a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad088307349f27b38fda0d1f21588adc9"><td class="memItemLeft" align="right" valign="top"><a id="ad088307349f27b38fda0d1f21588adc9" name="ad088307349f27b38fda0d1f21588adc9"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_LZMA1EXT_ALLOW_EOPM</b>&#160;&#160;&#160;UINT32_C(0x01)</td></tr>
-<tr class="separator:ad088307349f27b38fda0d1f21588adc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a73ed0293db4e59d73a702d66fef537c3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lzma12_8h.html#a73ed0293db4e59d73a702d66fef537c3">lzma_set_ext_size</a>(opt_lzma2, u64size)</td></tr>
-<tr class="memdesc:a73ed0293db4e59d73a702d66fef537c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Macro to set the 64-bit uncompressed size in ext_size_*. <br /></td></tr>
-<tr class="separator:a73ed0293db4e59d73a702d66fef537c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
-Enumerations</h2></td></tr>
-<tr class="memitem:acf740075f86fa61dc408d6d0dbf8fa80"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lzma12_8h.html#acf740075f86fa61dc408d6d0dbf8fa80">lzma_match_finder</a> { <br />
-&#160;&#160;<a class="el" href="lzma12_8h.html#acf740075f86fa61dc408d6d0dbf8fa80a6eb38f634021a192cada8a978b5de93b">LZMA_MF_HC3</a> = 0x03
-, <a class="el" href="lzma12_8h.html#acf740075f86fa61dc408d6d0dbf8fa80a0944620f4949289c2ebde613cae12b04">LZMA_MF_HC4</a> = 0x04
-, <a class="el" href="lzma12_8h.html#acf740075f86fa61dc408d6d0dbf8fa80a7ab212446c3f6520f5c33ccfa4b3386a">LZMA_MF_BT2</a> = 0x12
-, <a class="el" href="lzma12_8h.html#acf740075f86fa61dc408d6d0dbf8fa80a983ecc59bf3e07a7c43fea551ea11865">LZMA_MF_BT3</a> = 0x13
-, <br />
-&#160;&#160;<a class="el" href="lzma12_8h.html#acf740075f86fa61dc408d6d0dbf8fa80a468c32cdea9861d1ff98478364e6c547">LZMA_MF_BT4</a> = 0x14
-<br />
- }</td></tr>
-<tr class="memdesc:acf740075f86fa61dc408d6d0dbf8fa80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Match finders. <a href="lzma12_8h.html#acf740075f86fa61dc408d6d0dbf8fa80">More...</a><br /></td></tr>
-<tr class="separator:acf740075f86fa61dc408d6d0dbf8fa80"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1032316e3075c2c8086fb17104b91866"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lzma12_8h.html#a1032316e3075c2c8086fb17104b91866">lzma_mode</a> { <a class="el" href="lzma12_8h.html#a1032316e3075c2c8086fb17104b91866ac8c0926a91b4f756e11121efd30648cc">LZMA_MODE_FAST</a> = 1
-, <a class="el" href="lzma12_8h.html#a1032316e3075c2c8086fb17104b91866ad37225f30d5cd21fc8bb3eaba283bbf9">LZMA_MODE_NORMAL</a> = 2
- }</td></tr>
-<tr class="memdesc:a1032316e3075c2c8086fb17104b91866"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compression modes. <a href="lzma12_8h.html#a1032316e3075c2c8086fb17104b91866">More...</a><br /></td></tr>
-<tr class="separator:a1032316e3075c2c8086fb17104b91866"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:aefba1f7214ddcf8cd408a0702e8642b5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#abbc819c74b484c846825ae1388a50a59">lzma_bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lzma12_8h.html#aefba1f7214ddcf8cd408a0702e8642b5">lzma_mf_is_supported</a> (<a class="el" href="lzma12_8h.html#acf740075f86fa61dc408d6d0dbf8fa80">lzma_match_finder</a> match_finder) lzma_nothrow lzma_attr_const</td></tr>
-<tr class="memdesc:aefba1f7214ddcf8cd408a0702e8642b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test if given match finder is supported. <br /></td></tr>
-<tr class="separator:aefba1f7214ddcf8cd408a0702e8642b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad1add1c2600fdbb3d737e4fb3465dfcb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#abbc819c74b484c846825ae1388a50a59">lzma_bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lzma12_8h.html#ad1add1c2600fdbb3d737e4fb3465dfcb">lzma_mode_is_supported</a> (<a class="el" href="lzma12_8h.html#a1032316e3075c2c8086fb17104b91866">lzma_mode</a> mode) lzma_nothrow lzma_attr_const</td></tr>
-<tr class="memdesc:ad1add1c2600fdbb3d737e4fb3465dfcb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test if given compression mode is supported. <br /></td></tr>
-<tr class="separator:ad1add1c2600fdbb3d737e4fb3465dfcb"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa62c28944fe3575653a4c25780400d77"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#abbc819c74b484c846825ae1388a50a59">lzma_bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lzma12_8h.html#aa62c28944fe3575653a4c25780400d77">lzma_lzma_preset</a> (<a class="el" href="structlzma__options__lzma.html">lzma_options_lzma</a> *options, uint32_t preset) lzma_nothrow</td></tr>
-<tr class="memdesc:aa62c28944fe3575653a4c25780400d77"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a compression preset to <a class="el" href="structlzma__options__lzma.html" title="Options specific to the LZMA1 and LZMA2 filters.">lzma_options_lzma</a> structure. <br /></td></tr>
-<tr class="separator:aa62c28944fe3575653a4c25780400d77"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>LZMA1 and LZMA2 filters. </p>
-<dl class="section note"><dt>Note</dt><dd>Never include this file directly. Use &lt;<a class="el" href="lzma_8h.html" title="The public API of liblzma data compression library.">lzma.h</a>&gt; instead. </dd></dl>
-</div><h2 class="groupheader">Macro Definition Documentation</h2>
-<a id="accedd16abcb758e7f748bac1102abda9" name="accedd16abcb758e7f748bac1102abda9"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#accedd16abcb758e7f748bac1102abda9">&#9670;&#160;</a></span>LZMA_FILTER_LZMA1</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_FILTER_LZMA1&#160;&#160;&#160;<a class="el" href="vli_8h.html#a2d8bf5322898bfa11945848420585881">LZMA_VLI_C</a>(0x4000000000000001)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>LZMA1 Filter ID (for raw encoder/decoder only, not in .xz) </p>
-<p>LZMA1 is the very same thing as what was called just LZMA in LZMA Utils, 7-Zip, and LZMA SDK. It's called LZMA1 here to prevent developers from accidentally using LZMA when they actually want LZMA2. </p>
-
-</div>
-</div>
-<a id="a98a7fd42aa78a273a6b138629e46772d" name="a98a7fd42aa78a273a6b138629e46772d"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a98a7fd42aa78a273a6b138629e46772d">&#9670;&#160;</a></span>LZMA_FILTER_LZMA1EXT</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_FILTER_LZMA1EXT&#160;&#160;&#160;<a class="el" href="vli_8h.html#a2d8bf5322898bfa11945848420585881">LZMA_VLI_C</a>(0x4000000000000002)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>LZMA1 Filter ID with extended options (for raw encoder/decoder) </p>
-<p>This is like LZMA_FILTER_LZMA1 but with this ID a few extra options are supported in the <a class="el" href="structlzma__options__lzma.html" title="Options specific to the LZMA1 and LZMA2 filters.">lzma_options_lzma</a> structure:</p>
-<ul>
-<li>A flag to tell the encoder if the end of payload marker (EOPM) alias end of stream (EOS) marker must be written at the end of the stream. In contrast, LZMA_FILTER_LZMA1 always writes the end marker.</li>
-<li>Decoder needs to be told the uncompressed size of the stream or that it is unknown (using the special value UINT64_MAX). If the size is known, a flag can be set to allow the presence of the end marker anyway. In contrast, LZMA_FILTER_LZMA1 always behaves as if the uncompressed size was unknown.</li>
-</ul>
-<p>This allows handling file formats where LZMA1 streams are used but where the end marker isn't allowed or where it might not (always) be present. This extended LZMA1 functionality is provided as a Filter ID for raw encoder and decoder instead of adding new encoder and decoder initialization functions because this way it is possible to also use extra filters, for example, LZMA_FILTER_X86 in a filter chain with LZMA_FILTER_LZMA1EXT, which might be needed to handle some file formats. </p>
-
-</div>
-</div>
-<a id="a04f9d9a018a47cc99491e6e94e92f96b" name="a04f9d9a018a47cc99491e6e94e92f96b"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a04f9d9a018a47cc99491e6e94e92f96b">&#9670;&#160;</a></span>LZMA_FILTER_LZMA2</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_FILTER_LZMA2&#160;&#160;&#160;<a class="el" href="vli_8h.html#a2d8bf5322898bfa11945848420585881">LZMA_VLI_C</a>(0x21)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>LZMA2 Filter ID. </p>
-<p>Usually you want this instead of LZMA1. Compared to LZMA1, LZMA2 adds support for LZMA_SYNC_FLUSH, uncompressed chunks (smaller expansion when trying to compress incompressible data), possibility to change lc/lp/pb in the middle of encoding, and some other internal improvements. </p>
-
-</div>
-</div>
-<a id="a73ed0293db4e59d73a702d66fef537c3" name="a73ed0293db4e59d73a702d66fef537c3"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a73ed0293db4e59d73a702d66fef537c3">&#9670;&#160;</a></span>lzma_set_ext_size</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define lzma_set_ext_size</td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname">opt_lzma2, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">&#160;</td>
- <td class="paramname">u64size&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span> { \</div>
-<div class="line"> (opt_lzma2).ext_size_low = (uint32_t)(u64size); \</div>
-<div class="line"> (opt_lzma2).ext_size_high = (uint32_t)((uint64_t)(u64size) &gt;&gt; 32); \</div>
-<div class="line">} <span class="keywordflow">while</span> (0)</div>
-</div><!-- fragment -->
-<p>Macro to set the 64-bit uncompressed size in ext_size_*. </p>
-<p>This might be convenient when decoding using LZMA_FILTER_LZMA1EXT. This isn't used with LZMA_FILTER_LZMA1 or LZMA_FILTER_LZMA2. </p>
-
-</div>
-</div>
-<h2 class="groupheader">Enumeration Type Documentation</h2>
-<a id="acf740075f86fa61dc408d6d0dbf8fa80" name="acf740075f86fa61dc408d6d0dbf8fa80"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#acf740075f86fa61dc408d6d0dbf8fa80">&#9670;&#160;</a></span>lzma_match_finder</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">enum <a class="el" href="lzma12_8h.html#acf740075f86fa61dc408d6d0dbf8fa80">lzma_match_finder</a></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Match finders. </p>
-<p>Match finder has major effect on both speed and compression ratio. Usually hash chains are faster than binary trees.</p>
-<p>If you will use LZMA_SYNC_FLUSH often, the hash chains may be a better choice, because binary trees get much higher compression ratio penalty with LZMA_SYNC_FLUSH.</p>
-<p>The memory usage formulas are only rough estimates, which are closest to reality when dict_size is a power of two. The formulas are more complex in reality, and can also change a little between liblzma versions. Use <a class="el" href="filter_8h.html#a730f9391e85a5979bcd1b32643ae7176" title="Calculate approximate memory requirements for raw encoder.">lzma_raw_encoder_memusage()</a> to get more accurate estimate of memory usage. </p>
-<table class="fieldtable">
-<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="acf740075f86fa61dc408d6d0dbf8fa80a6eb38f634021a192cada8a978b5de93b" name="acf740075f86fa61dc408d6d0dbf8fa80a6eb38f634021a192cada8a978b5de93b"></a>LZMA_MF_HC3&#160;</td><td class="fielddoc"><p>Hash Chain with 2- and 3-byte hashing. </p>
-<p>Minimum nice_len: 3</p>
-<p>Memory usage:</p><ul>
-<li>dict_size &lt;= 16 MiB: dict_size * 7.5</li>
-<li>dict_size &gt; 16 MiB: dict_size * 5.5 + 64 MiB </li>
-</ul>
-</td></tr>
-<tr><td class="fieldname"><a id="acf740075f86fa61dc408d6d0dbf8fa80a0944620f4949289c2ebde613cae12b04" name="acf740075f86fa61dc408d6d0dbf8fa80a0944620f4949289c2ebde613cae12b04"></a>LZMA_MF_HC4&#160;</td><td class="fielddoc"><p>Hash Chain with 2-, 3-, and 4-byte hashing. </p>
-<p>Minimum nice_len: 4</p>
-<p>Memory usage:</p><ul>
-<li>dict_size &lt;= 32 MiB: dict_size * 7.5</li>
-<li>dict_size &gt; 32 MiB: dict_size * 6.5 </li>
-</ul>
-</td></tr>
-<tr><td class="fieldname"><a id="acf740075f86fa61dc408d6d0dbf8fa80a7ab212446c3f6520f5c33ccfa4b3386a" name="acf740075f86fa61dc408d6d0dbf8fa80a7ab212446c3f6520f5c33ccfa4b3386a"></a>LZMA_MF_BT2&#160;</td><td class="fielddoc"><p>Binary Tree with 2-byte hashing. </p>
-<p>Minimum nice_len: 2</p>
-<p>Memory usage: dict_size * 9.5 </p>
-</td></tr>
-<tr><td class="fieldname"><a id="acf740075f86fa61dc408d6d0dbf8fa80a983ecc59bf3e07a7c43fea551ea11865" name="acf740075f86fa61dc408d6d0dbf8fa80a983ecc59bf3e07a7c43fea551ea11865"></a>LZMA_MF_BT3&#160;</td><td class="fielddoc"><p>Binary Tree with 2- and 3-byte hashing. </p>
-<p>Minimum nice_len: 3</p>
-<p>Memory usage:</p><ul>
-<li>dict_size &lt;= 16 MiB: dict_size * 11.5</li>
-<li>dict_size &gt; 16 MiB: dict_size * 9.5 + 64 MiB </li>
-</ul>
-</td></tr>
-<tr><td class="fieldname"><a id="acf740075f86fa61dc408d6d0dbf8fa80a468c32cdea9861d1ff98478364e6c547" name="acf740075f86fa61dc408d6d0dbf8fa80a468c32cdea9861d1ff98478364e6c547"></a>LZMA_MF_BT4&#160;</td><td class="fielddoc"><p>Binary Tree with 2-, 3-, and 4-byte hashing. </p>
-<p>Minimum nice_len: 4</p>
-<p>Memory usage:</p><ul>
-<li>dict_size &lt;= 32 MiB: dict_size * 11.5</li>
-<li>dict_size &gt; 32 MiB: dict_size * 10.5 </li>
-</ul>
-</td></tr>
-</table>
-
-</div>
-</div>
-<a id="a1032316e3075c2c8086fb17104b91866" name="a1032316e3075c2c8086fb17104b91866"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a1032316e3075c2c8086fb17104b91866">&#9670;&#160;</a></span>lzma_mode</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">enum <a class="el" href="lzma12_8h.html#a1032316e3075c2c8086fb17104b91866">lzma_mode</a></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Compression modes. </p>
-<p>This selects the function used to analyze the data produced by the match finder. </p>
-<table class="fieldtable">
-<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a1032316e3075c2c8086fb17104b91866ac8c0926a91b4f756e11121efd30648cc" name="a1032316e3075c2c8086fb17104b91866ac8c0926a91b4f756e11121efd30648cc"></a>LZMA_MODE_FAST&#160;</td><td class="fielddoc"><p>Fast compression. </p>
-<p>Fast mode is usually at its best when combined with a hash chain match finder. </p>
-</td></tr>
-<tr><td class="fieldname"><a id="a1032316e3075c2c8086fb17104b91866ad37225f30d5cd21fc8bb3eaba283bbf9" name="a1032316e3075c2c8086fb17104b91866ad37225f30d5cd21fc8bb3eaba283bbf9"></a>LZMA_MODE_NORMAL&#160;</td><td class="fielddoc"><p>Normal compression. </p>
-<p>This is usually notably slower than fast mode. Use this together with binary tree match finders to expose the full potential of the LZMA1 or LZMA2 encoder. </p>
-</td></tr>
-</table>
-
-</div>
-</div>
-<h2 class="groupheader">Function Documentation</h2>
-<a id="aefba1f7214ddcf8cd408a0702e8642b5" name="aefba1f7214ddcf8cd408a0702e8642b5"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aefba1f7214ddcf8cd408a0702e8642b5">&#9670;&#160;</a></span>lzma_mf_is_supported()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#abbc819c74b484c846825ae1388a50a59">lzma_bool</a> lzma_mf_is_supported </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="lzma12_8h.html#acf740075f86fa61dc408d6d0dbf8fa80">lzma_match_finder</a>&#160;</td>
- <td class="paramname"><em>match_finder</em></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Test if given match finder is supported. </p>
-<p>It is safe to call this with a value that isn't listed in lzma_match_finder enumeration; the return value will be false.</p>
-<p>There is no way to list which match finders are available in this particular liblzma version and build. It would be useless, because a new match finder, which the application developer wasn't aware, could require giving additional options to the encoder that the older match finders don't need.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">match_finder</td><td>Match finder ID</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>lzma_bool:<ul>
-<li>true if the match finder is supported by this liblzma build.</li>
-<li>false otherwise. </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="ad1add1c2600fdbb3d737e4fb3465dfcb" name="ad1add1c2600fdbb3d737e4fb3465dfcb"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ad1add1c2600fdbb3d737e4fb3465dfcb">&#9670;&#160;</a></span>lzma_mode_is_supported()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#abbc819c74b484c846825ae1388a50a59">lzma_bool</a> lzma_mode_is_supported </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="lzma12_8h.html#a1032316e3075c2c8086fb17104b91866">lzma_mode</a>&#160;</td>
- <td class="paramname"><em>mode</em></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Test if given compression mode is supported. </p>
-<p>It is safe to call this with a value that isn't listed in lzma_mode enumeration; the return value will be false.</p>
-<p>There is no way to list which modes are available in this particular liblzma version and build. It would be useless, because a new compression mode, which the application developer wasn't aware, could require giving additional options to the encoder that the older modes don't need.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">mode</td><td>Mode ID.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>lzma_bool:<ul>
-<li>true if the compression mode is supported by this liblzma build.</li>
-<li>false otherwise. </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="aa62c28944fe3575653a4c25780400d77" name="aa62c28944fe3575653a4c25780400d77"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aa62c28944fe3575653a4c25780400d77">&#9670;&#160;</a></span>lzma_lzma_preset()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#abbc819c74b484c846825ae1388a50a59">lzma_bool</a> lzma_lzma_preset </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__options__lzma.html">lzma_options_lzma</a> *&#160;</td>
- <td class="paramname"><em>options</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint32_t&#160;</td>
- <td class="paramname"><em>preset</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Set a compression preset to <a class="el" href="structlzma__options__lzma.html" title="Options specific to the LZMA1 and LZMA2 filters.">lzma_options_lzma</a> structure. </p>
-<p>0 is the fastest and 9 is the slowest. These match the switches -0 .. -9 of the xz command line tool. In addition, it is possible to bitwise-or flags to the preset. Currently only LZMA_PRESET_EXTREME is supported. The flags are defined in <a class="el" href="container_8h.html" title="File formats.">container.h</a>, because the flags are used also with <a class="el" href="container_8h.html#acbdad999c544872f0f5d242f0d1a4ed4" title="Initialize .xz Stream encoder using a preset number.">lzma_easy_encoder()</a>.</p>
-<p>The preset levels are subject to changes between liblzma versions.</p>
-<p>This function is available only if LZMA1 or LZMA2 encoder has been enabled when building liblzma.</p>
-<p>If features (like certain match finders) have been disabled at build time, then the function may return success (false) even though the resulting LZMA1/LZMA2 options may not be usable for encoder initialization (LZMA_OPTIONS_ERROR).</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[out]</td><td class="paramname">options</td><td>Pointer to LZMA1 or LZMA2 options to be filled </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">preset</td><td>Preset level bitwse-ORed with preset flags</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>lzma_bool:<ul>
-<li>true if the preset is not supported (failure).</li>
-<li>false otherwise (success). </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/lzma_8h.html b/doc/api/lzma_8h.html
deleted file mode 100644
index ec417c6..0000000
--- a/doc/api/lzma_8h.html
+++ /dev/null
@@ -1,109 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File&#160;List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div class="header">
- <div class="summary">
-<a href="#define-members">Macros</a> </div>
- <div class="headertitle"><div class="title">lzma.h File Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>The public API of liblzma data compression library.
-<a href="#details">More...</a></p>
-<div class="textblock"><code>#include &lt;stddef.h&gt;</code><br />
-<code>#include &lt;inttypes.h&gt;</code><br />
-<code>#include &lt;limits.h&gt;</code><br />
-<code>#include &quot;<a class="el" href="version_8h.html">lzma/version.h</a>&quot;</code><br />
-<code>#include &quot;<a class="el" href="base_8h.html">lzma/base.h</a>&quot;</code><br />
-<code>#include &quot;<a class="el" href="vli_8h.html">lzma/vli.h</a>&quot;</code><br />
-<code>#include &quot;<a class="el" href="check_8h.html">lzma/check.h</a>&quot;</code><br />
-<code>#include &quot;<a class="el" href="filter_8h.html">lzma/filter.h</a>&quot;</code><br />
-<code>#include &quot;<a class="el" href="bcj_8h.html">lzma/bcj.h</a>&quot;</code><br />
-<code>#include &quot;<a class="el" href="delta_8h.html">lzma/delta.h</a>&quot;</code><br />
-<code>#include &quot;<a class="el" href="lzma12_8h.html">lzma/lzma12.h</a>&quot;</code><br />
-<code>#include &quot;<a class="el" href="container_8h.html">lzma/container.h</a>&quot;</code><br />
-<code>#include &quot;<a class="el" href="stream__flags_8h.html">lzma/stream_flags.h</a>&quot;</code><br />
-<code>#include &quot;<a class="el" href="block_8h.html">lzma/block.h</a>&quot;</code><br />
-<code>#include &quot;<a class="el" href="index_8h.html">lzma/index.h</a>&quot;</code><br />
-<code>#include &quot;<a class="el" href="index__hash_8h.html">lzma/index_hash.h</a>&quot;</code><br />
-<code>#include &quot;<a class="el" href="hardware_8h.html">lzma/hardware.h</a>&quot;</code><br />
-</div><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
-Macros</h2></td></tr>
-<tr class="memitem:acecee981dc3f28418f54035e20d7e578"><td class="memItemLeft" align="right" valign="top"><a id="acecee981dc3f28418f54035e20d7e578" name="acecee981dc3f28418f54035e20d7e578"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>UINT32_C</b>(n)&#160;&#160;&#160;n ## U</td></tr>
-<tr class="separator:acecee981dc3f28418f54035e20d7e578"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac6548785b283106d4d7bfc7a4ef87fc4"><td class="memItemLeft" align="right" valign="top"><a id="ac6548785b283106d4d7bfc7a4ef87fc4" name="ac6548785b283106d4d7bfc7a4ef87fc4"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>UINT64_C</b>(n)&#160;&#160;&#160;n ## UL</td></tr>
-<tr class="separator:ac6548785b283106d4d7bfc7a4ef87fc4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab5eb23180f7cc12b7d6c04a8ec067fdd"><td class="memItemLeft" align="right" valign="top"><a id="ab5eb23180f7cc12b7d6c04a8ec067fdd" name="ab5eb23180f7cc12b7d6c04a8ec067fdd"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>UINT32_MAX</b>&#160;&#160;&#160;(UINT32_C(4294967295))</td></tr>
-<tr class="separator:ab5eb23180f7cc12b7d6c04a8ec067fdd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a30654b4b67d97c42ca3f9b6052dda916"><td class="memItemLeft" align="right" valign="top"><a id="a30654b4b67d97c42ca3f9b6052dda916" name="a30654b4b67d97c42ca3f9b6052dda916"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>UINT64_MAX</b>&#160;&#160;&#160;(UINT64_C(18446744073709551615))</td></tr>
-<tr class="separator:a30654b4b67d97c42ca3f9b6052dda916"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a55854429aba444dbb0bd8325fed4eece"><td class="memItemLeft" align="right" valign="top"><a id="a55854429aba444dbb0bd8325fed4eece" name="a55854429aba444dbb0bd8325fed4eece"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>lzma_nothrow</b></td></tr>
-<tr class="separator:a55854429aba444dbb0bd8325fed4eece"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adbc570ea8654f0c96699e38249ac8032"><td class="memItemLeft" align="right" valign="top"><a id="adbc570ea8654f0c96699e38249ac8032" name="adbc570ea8654f0c96699e38249ac8032"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>lzma_attr_pure</b>&#160;&#160;&#160;lzma_attribute((__pure__))</td></tr>
-<tr class="separator:adbc570ea8654f0c96699e38249ac8032"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0aaafb664f89a525ff22530d61704556"><td class="memItemLeft" align="right" valign="top"><a id="a0aaafb664f89a525ff22530d61704556" name="a0aaafb664f89a525ff22530d61704556"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>lzma_attr_const</b>&#160;&#160;&#160;lzma_attribute((__const__))</td></tr>
-<tr class="separator:a0aaafb664f89a525ff22530d61704556"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af15e147fcd7986ec4dd82660aec2b695"><td class="memItemLeft" align="right" valign="top"><a id="af15e147fcd7986ec4dd82660aec2b695" name="af15e147fcd7986ec4dd82660aec2b695"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>lzma_attr_warn_unused_result</b>&#160;&#160;&#160; lzma_attribute((__warn_unused_result__))</td></tr>
-<tr class="separator:af15e147fcd7986ec4dd82660aec2b695"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af828f75941ade54f8379bb847da37349"><td class="memItemLeft" align="right" valign="top"><a id="af828f75941ade54f8379bb847da37349" name="af828f75941ade54f8379bb847da37349"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_H_INTERNAL</b>&#160;&#160;&#160;1</td></tr>
-<tr class="separator:af828f75941ade54f8379bb847da37349"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>The public API of liblzma data compression library. </p>
-</div></div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/nav_f.png b/doc/api/nav_f.png
deleted file mode 100644
index 113913e..0000000
--- a/doc/api/nav_f.png
+++ /dev/null
Binary files differ
diff --git a/doc/api/nav_fd.png b/doc/api/nav_fd.png
deleted file mode 100644
index 978df01..0000000
--- a/doc/api/nav_fd.png
+++ /dev/null
Binary files differ
diff --git a/doc/api/nav_g.png b/doc/api/nav_g.png
deleted file mode 100644
index 2093a23..0000000
--- a/doc/api/nav_g.png
+++ /dev/null
Binary files differ
diff --git a/doc/api/nav_h.png b/doc/api/nav_h.png
deleted file mode 100644
index 4e34efd..0000000
--- a/doc/api/nav_h.png
+++ /dev/null
Binary files differ
diff --git a/doc/api/nav_hd.png b/doc/api/nav_hd.png
deleted file mode 100644
index b717d93..0000000
--- a/doc/api/nav_hd.png
+++ /dev/null
Binary files differ
diff --git a/doc/api/open.png b/doc/api/open.png
deleted file mode 100644
index b4e49d8..0000000
--- a/doc/api/open.png
+++ /dev/null
Binary files differ
diff --git a/doc/api/splitbar.png b/doc/api/splitbar.png
deleted file mode 100644
index ee781cf..0000000
--- a/doc/api/splitbar.png
+++ /dev/null
Binary files differ
diff --git a/doc/api/splitbard.png b/doc/api/splitbard.png
deleted file mode 100644
index aa4d029..0000000
--- a/doc/api/splitbard.png
+++ /dev/null
Binary files differ
diff --git a/doc/api/stream__flags_8h.html b/doc/api/stream__flags_8h.html
deleted file mode 100644
index 5cc0df9..0000000
--- a/doc/api/stream__flags_8h.html
+++ /dev/null
@@ -1,348 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma/stream_flags.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File&#160;List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div id="nav-path" class="navpath">
- <ul>
-<li class="navelem"><a class="el" href="dir_b17a1d403082bd69a703ed987cf158fb.html">lzma</a></li> </ul>
-</div>
-</div><!-- top -->
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> &#124;
-<a href="#define-members">Macros</a> &#124;
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle"><div class="title">stream_flags.h File Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>.xz Stream Header and Stream Footer encoder and decoder
-<a href="#details">More...</a></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__stream__flags.html">lzma_stream_flags</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Options for encoding/decoding Stream Header and Stream Footer. <a href="structlzma__stream__flags.html#details">More...</a><br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
-Macros</h2></td></tr>
-<tr class="memitem:ada7e0a4f5e7146f547962cb9e9ef08ee"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stream__flags_8h.html#ada7e0a4f5e7146f547962cb9e9ef08ee">LZMA_STREAM_HEADER_SIZE</a>&#160;&#160;&#160;12</td></tr>
-<tr class="memdesc:ada7e0a4f5e7146f547962cb9e9ef08ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Size of Stream Header and Stream Footer. <br /></td></tr>
-<tr class="separator:ada7e0a4f5e7146f547962cb9e9ef08ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae8da8190f1396f66332073946bc45634"><td class="memItemLeft" align="right" valign="top"><a id="ae8da8190f1396f66332073946bc45634" name="ae8da8190f1396f66332073946bc45634"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_BACKWARD_SIZE_MIN</b>&#160;&#160;&#160;4</td></tr>
-<tr class="memdesc:ae8da8190f1396f66332073946bc45634"><td class="mdescLeft">&#160;</td><td class="mdescRight">Minimum value for <a class="el" href="structlzma__stream__flags.html#aaa65ed7a55a098f829f04dba25d0f212" title="Backward Size.">lzma_stream_flags.backward_size</a>. <br /></td></tr>
-<tr class="separator:ae8da8190f1396f66332073946bc45634"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2e5e09010880f8caa6cd6539c7341239"><td class="memItemLeft" align="right" valign="top"><a id="a2e5e09010880f8caa6cd6539c7341239" name="a2e5e09010880f8caa6cd6539c7341239"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_BACKWARD_SIZE_MAX</b>&#160;&#160;&#160;(<a class="el" href="vli_8h.html#a2d8bf5322898bfa11945848420585881">LZMA_VLI_C</a>(1) &lt;&lt; 34)</td></tr>
-<tr class="memdesc:a2e5e09010880f8caa6cd6539c7341239"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum value for <a class="el" href="structlzma__stream__flags.html#aaa65ed7a55a098f829f04dba25d0f212" title="Backward Size.">lzma_stream_flags.backward_size</a>. <br /></td></tr>
-<tr class="separator:a2e5e09010880f8caa6cd6539c7341239"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:a2ebb8d6dff23daeb3de398913b845eff"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stream__flags_8h.html#a2ebb8d6dff23daeb3de398913b845eff">lzma_stream_header_encode</a> (const <a class="el" href="structlzma__stream__flags.html">lzma_stream_flags</a> *options, uint8_t *out) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a2ebb8d6dff23daeb3de398913b845eff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encode Stream Header. <br /></td></tr>
-<tr class="separator:a2ebb8d6dff23daeb3de398913b845eff"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a438249a75ea8da952a7474b92bfe7b7a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stream__flags_8h.html#a438249a75ea8da952a7474b92bfe7b7a">lzma_stream_footer_encode</a> (const <a class="el" href="structlzma__stream__flags.html">lzma_stream_flags</a> *options, uint8_t *out) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:a438249a75ea8da952a7474b92bfe7b7a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encode Stream Footer. <br /></td></tr>
-<tr class="separator:a438249a75ea8da952a7474b92bfe7b7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae03198e464f0d296e601ff841e100805"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stream__flags_8h.html#ae03198e464f0d296e601ff841e100805">lzma_stream_header_decode</a> (<a class="el" href="structlzma__stream__flags.html">lzma_stream_flags</a> *options, const uint8_t *in) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:ae03198e464f0d296e601ff841e100805"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decode Stream Header. <br /></td></tr>
-<tr class="separator:ae03198e464f0d296e601ff841e100805"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa92a383f85753bb79ee23227fa68186c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stream__flags_8h.html#aa92a383f85753bb79ee23227fa68186c">lzma_stream_footer_decode</a> (<a class="el" href="structlzma__stream__flags.html">lzma_stream_flags</a> *options, const uint8_t *in) lzma_nothrow lzma_attr_warn_unused_result</td></tr>
-<tr class="memdesc:aa92a383f85753bb79ee23227fa68186c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decode Stream Footer. <br /></td></tr>
-<tr class="separator:aa92a383f85753bb79ee23227fa68186c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3e25ca4205021302882a696283d45263"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stream__flags_8h.html#a3e25ca4205021302882a696283d45263">lzma_stream_flags_compare</a> (const <a class="el" href="structlzma__stream__flags.html">lzma_stream_flags</a> *a, const <a class="el" href="structlzma__stream__flags.html">lzma_stream_flags</a> *b) lzma_nothrow lzma_attr_pure</td></tr>
-<tr class="memdesc:a3e25ca4205021302882a696283d45263"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compare two <a class="el" href="structlzma__stream__flags.html" title="Options for encoding/decoding Stream Header and Stream Footer.">lzma_stream_flags</a> structures. <br /></td></tr>
-<tr class="separator:a3e25ca4205021302882a696283d45263"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>.xz Stream Header and Stream Footer encoder and decoder </p>
-<dl class="section note"><dt>Note</dt><dd>Never include this file directly. Use &lt;<a class="el" href="lzma_8h.html" title="The public API of liblzma data compression library.">lzma.h</a>&gt; instead. </dd></dl>
-</div><h2 class="groupheader">Macro Definition Documentation</h2>
-<a id="ada7e0a4f5e7146f547962cb9e9ef08ee" name="ada7e0a4f5e7146f547962cb9e9ef08ee"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ada7e0a4f5e7146f547962cb9e9ef08ee">&#9670;&#160;</a></span>LZMA_STREAM_HEADER_SIZE</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_STREAM_HEADER_SIZE&#160;&#160;&#160;12</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Size of Stream Header and Stream Footer. </p>
-<p>Stream Header and Stream Footer have the same size and they are not going to change even if a newer version of the .xz file format is developed in future. </p>
-
-</div>
-</div>
-<h2 class="groupheader">Function Documentation</h2>
-<a id="a2ebb8d6dff23daeb3de398913b845eff" name="a2ebb8d6dff23daeb3de398913b845eff"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a2ebb8d6dff23daeb3de398913b845eff">&#9670;&#160;</a></span>lzma_stream_header_encode()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_stream_header_encode </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="structlzma__stream__flags.html">lzma_stream_flags</a> *&#160;</td>
- <td class="paramname"><em>options</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint8_t *&#160;</td>
- <td class="paramname"><em>out</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Encode Stream Header. </p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir"></td><td class="paramname">options</td><td>Stream Header options to be encoded. options-&gt;backward_size is ignored and doesn't need to be initialized. </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">out</td><td>Beginning of the output buffer of LZMA_STREAM_HEADER_SIZE bytes.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Encoding was successful.</li>
-<li>LZMA_OPTIONS_ERROR: options-&gt;version is not supported by this liblzma version.</li>
-<li>LZMA_PROG_ERROR: Invalid options. </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a438249a75ea8da952a7474b92bfe7b7a" name="a438249a75ea8da952a7474b92bfe7b7a"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a438249a75ea8da952a7474b92bfe7b7a">&#9670;&#160;</a></span>lzma_stream_footer_encode()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_stream_footer_encode </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="structlzma__stream__flags.html">lzma_stream_flags</a> *&#160;</td>
- <td class="paramname"><em>options</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint8_t *&#160;</td>
- <td class="paramname"><em>out</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Encode Stream Footer. </p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir"></td><td class="paramname">options</td><td>Stream Footer options to be encoded. </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">out</td><td>Beginning of the output buffer of LZMA_STREAM_HEADER_SIZE bytes.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Encoding was successful.</li>
-<li>LZMA_OPTIONS_ERROR: options-&gt;version is not supported by this liblzma version.</li>
-<li>LZMA_PROG_ERROR: Invalid options. </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="ae03198e464f0d296e601ff841e100805" name="ae03198e464f0d296e601ff841e100805"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ae03198e464f0d296e601ff841e100805">&#9670;&#160;</a></span>lzma_stream_header_decode()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_stream_header_decode </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__stream__flags.html">lzma_stream_flags</a> *&#160;</td>
- <td class="paramname"><em>options</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint8_t *&#160;</td>
- <td class="paramname"><em>in</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Decode Stream Header. </p>
-<p>options-&gt;backward_size is always set to LZMA_VLI_UNKNOWN. This is to help comparing Stream Flags from Stream Header and Stream Footer with <a class="el" href="stream__flags_8h.html#a3e25ca4205021302882a696283d45263" title="Compare two lzma_stream_flags structures.">lzma_stream_flags_compare()</a>.</p>
-<dl class="section note"><dt>Note</dt><dd>When decoding .xz files that contain multiple Streams, it may make sense to print "file format not recognized" only if decoding of the Stream Header of the <em>first</em> Stream gives LZMA_FORMAT_ERROR. If non-first Stream Header gives LZMA_FORMAT_ERROR, the message used for LZMA_DATA_ERROR is probably more appropriate. For example, the Stream decoder in liblzma uses LZMA_DATA_ERROR if LZMA_FORMAT_ERROR is returned by <a class="el" href="stream__flags_8h.html#ae03198e464f0d296e601ff841e100805" title="Decode Stream Header.">lzma_stream_header_decode()</a> when decoding non-first Stream.</dd></dl>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[out]</td><td class="paramname">options</td><td>Target for the decoded Stream Header options. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in</td><td>Beginning of the input buffer of LZMA_STREAM_HEADER_SIZE bytes.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Decoding was successful.</li>
-<li>LZMA_FORMAT_ERROR: Magic bytes don't match, thus the given buffer cannot be Stream Header.</li>
-<li>LZMA_DATA_ERROR: CRC32 doesn't match, thus the header is corrupt.</li>
-<li>LZMA_OPTIONS_ERROR: Unsupported options are present in the header. </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="aa92a383f85753bb79ee23227fa68186c" name="aa92a383f85753bb79ee23227fa68186c"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aa92a383f85753bb79ee23227fa68186c">&#9670;&#160;</a></span>lzma_stream_footer_decode()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_stream_footer_decode </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="structlzma__stream__flags.html">lzma_stream_flags</a> *&#160;</td>
- <td class="paramname"><em>options</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint8_t *&#160;</td>
- <td class="paramname"><em>in</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Decode Stream Footer. </p>
-<dl class="section note"><dt>Note</dt><dd>If Stream Header was already decoded successfully, but decoding Stream Footer returns LZMA_FORMAT_ERROR, the application should probably report some other error message than "file format not recognized". The file likely is corrupt (possibly truncated). The Stream decoder in liblzma uses LZMA_DATA_ERROR in this situation.</dd></dl>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[out]</td><td class="paramname">options</td><td>Target for the decoded Stream Footer options. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in</td><td>Beginning of the input buffer of LZMA_STREAM_HEADER_SIZE bytes.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Decoding was successful.</li>
-<li>LZMA_FORMAT_ERROR: Magic bytes don't match, thus the given buffer cannot be Stream Footer.</li>
-<li>LZMA_DATA_ERROR: CRC32 doesn't match, thus the Stream Footer is corrupt.</li>
-<li>LZMA_OPTIONS_ERROR: Unsupported options are present in Stream Footer. </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-<a id="a3e25ca4205021302882a696283d45263" name="a3e25ca4205021302882a696283d45263"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a3e25ca4205021302882a696283d45263">&#9670;&#160;</a></span>lzma_stream_flags_compare()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_stream_flags_compare </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="structlzma__stream__flags.html">lzma_stream_flags</a> *&#160;</td>
- <td class="paramname"><em>a</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structlzma__stream__flags.html">lzma_stream_flags</a> *&#160;</td>
- <td class="paramname"><em>b</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Compare two <a class="el" href="structlzma__stream__flags.html" title="Options for encoding/decoding Stream Header and Stream Footer.">lzma_stream_flags</a> structures. </p>
-<p>backward_size values are compared only if both are not LZMA_VLI_UNKNOWN.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">a</td><td>Pointer to <a class="el" href="structlzma__stream__flags.html" title="Options for encoding/decoding Stream Header and Stream Footer.">lzma_stream_flags</a> structure </td></tr>
- <tr><td class="paramname">b</td><td>Pointer to <a class="el" href="structlzma__stream__flags.html" title="Options for encoding/decoding Stream Header and Stream Footer.">lzma_stream_flags</a> structure</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Possible lzma_ret values:<ul>
-<li>LZMA_OK: Both are equal. If either had backward_size set to LZMA_VLI_UNKNOWN, backward_size values were not compared or validated.</li>
-<li>LZMA_DATA_ERROR: The structures differ.</li>
-<li>LZMA_OPTIONS_ERROR: version in either structure is greater than the maximum supported version (currently zero).</li>
-<li>LZMA_PROG_ERROR: Invalid value, e.g. invalid check or backward_size. </li>
-</ul>
-</dd></dl>
-
-</div>
-</div>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/structlzma__allocator.html b/doc/api/structlzma__allocator.html
deleted file mode 100644
index 593647b..0000000
--- a/doc/api/structlzma__allocator.html
+++ /dev/null
@@ -1,153 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma_allocator Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div class="header">
- <div class="summary">
-<a href="#pub-attribs">Data Fields</a> </div>
- <div class="headertitle"><div class="title">lzma_allocator Struct Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>Custom functions for memory handling.
- <a href="structlzma__allocator.html#details">More...</a></p>
-
-<p><code>#include &lt;base.h&gt;</code></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
-Data Fields</h2></td></tr>
-<tr class="memitem:aba5c4369af94cc9943423b49171462ec"><td class="memItemLeft" align="right" valign="top">void *(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__allocator.html#aba5c4369af94cc9943423b49171462ec">alloc</a> )(void *<a class="el" href="structlzma__allocator.html#aab293a5007a93299cc97ee8b5fb81268">opaque</a>, size_t nmemb, size_t size)</td></tr>
-<tr class="memdesc:aba5c4369af94cc9943423b49171462ec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to a custom memory allocation function. <br /></td></tr>
-<tr class="separator:aba5c4369af94cc9943423b49171462ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3726deffd08393934263c04660208009"><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__allocator.html#a3726deffd08393934263c04660208009">free</a> )(void *<a class="el" href="structlzma__allocator.html#aab293a5007a93299cc97ee8b5fb81268">opaque</a>, void *ptr)</td></tr>
-<tr class="memdesc:a3726deffd08393934263c04660208009"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to a custom memory freeing function. <br /></td></tr>
-<tr class="separator:a3726deffd08393934263c04660208009"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aab293a5007a93299cc97ee8b5fb81268"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__allocator.html#aab293a5007a93299cc97ee8b5fb81268">opaque</a></td></tr>
-<tr class="memdesc:aab293a5007a93299cc97ee8b5fb81268"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer passed to .<a class="el" href="structlzma__allocator.html#aba5c4369af94cc9943423b49171462ec" title="Pointer to a custom memory allocation function.">alloc()</a> and .<a class="el" href="structlzma__allocator.html#a3726deffd08393934263c04660208009" title="Pointer to a custom memory freeing function.">free()</a> <br /></td></tr>
-<tr class="separator:aab293a5007a93299cc97ee8b5fb81268"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Custom functions for memory handling. </p>
-<p>A pointer to <a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> may be passed via <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> structure to liblzma, and some advanced functions take a pointer to <a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> as a separate function argument. The library will use the functions specified in <a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> for memory handling instead of the default malloc() and <a class="el" href="structlzma__allocator.html#a3726deffd08393934263c04660208009" title="Pointer to a custom memory freeing function.">free()</a>. C++ users should note that the custom memory handling functions must not throw exceptions.</p>
-<p>Single-threaded mode only: liblzma doesn't make an internal copy of <a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a>. Thus, it is OK to change these function pointers in the middle of the coding process, but obviously it must be done carefully to make sure that the replacement `free' can deallocate memory allocated by the earlier `alloc' function(s).</p>
-<p>Multithreaded mode: liblzma might internally store pointers to the <a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> given via the <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> structure. The application must not change the allocator pointer in <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> or the contents of the pointed <a class="el" href="structlzma__allocator.html" title="Custom functions for memory handling.">lzma_allocator</a> structure until <a class="el" href="base_8h.html#a854ff37464ae1225febf14db1af43308" title="Free memory allocated for the coder data structures.">lzma_end()</a> has been used to free the memory associated with that <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a>. The allocation functions might be called simultaneously from multiple threads, and thus they must be thread safe. </p>
-</div><h2 class="groupheader">Field Documentation</h2>
-<a id="aba5c4369af94cc9943423b49171462ec" name="aba5c4369af94cc9943423b49171462ec"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aba5c4369af94cc9943423b49171462ec">&#9670;&#160;</a></span>alloc</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void *(* lzma_allocator::alloc) (void *<a class="el" href="structlzma__allocator.html#aab293a5007a93299cc97ee8b5fb81268">opaque</a>, size_t nmemb, size_t size)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Pointer to a custom memory allocation function. </p>
-<p>If you don't want a custom allocator, but still want custom <a class="el" href="structlzma__allocator.html#a3726deffd08393934263c04660208009" title="Pointer to a custom memory freeing function.">free()</a>, set this to NULL and liblzma will use the standard malloc().</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">opaque</td><td><a class="el" href="structlzma__allocator.html#aab293a5007a93299cc97ee8b5fb81268" title="Pointer passed to .alloc() and .free()">lzma_allocator.opaque</a> (see below) </td></tr>
- <tr><td class="paramname">nmemb</td><td>Number of elements like in calloc(). liblzma will always set nmemb to 1, so it is safe to ignore nmemb in a custom allocator if you like. The nmemb argument exists only for compatibility with zlib and libbzip2. </td></tr>
- <tr><td class="paramname">size</td><td>Size of an element in bytes. liblzma never sets this to zero.</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Pointer to the beginning of a memory block of `size' bytes, or NULL if allocation fails for some reason. When allocation fails, functions of liblzma return LZMA_MEM_ERROR.</dd></dl>
-<p>The allocator should not waste time zeroing the allocated buffers. This is not only about speed, but also memory usage, since the operating system kernel doesn't necessarily allocate the requested memory in physical memory until it is actually used. With small input files, liblzma may actually need only a fraction of the memory that it requested for allocation.</p>
-<dl class="section note"><dt>Note</dt><dd>LZMA_MEM_ERROR is also used when the size of the allocation would be greater than SIZE_MAX. Thus, don't assume that the custom allocator must have returned NULL if some function from liblzma returns LZMA_MEM_ERROR. </dd></dl>
-
-</div>
-</div>
-<a id="a3726deffd08393934263c04660208009" name="a3726deffd08393934263c04660208009"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a3726deffd08393934263c04660208009">&#9670;&#160;</a></span>free</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void(* lzma_allocator::free) (void *<a class="el" href="structlzma__allocator.html#aab293a5007a93299cc97ee8b5fb81268">opaque</a>, void *ptr)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Pointer to a custom memory freeing function. </p>
-<p>If you don't want a custom freeing function, but still want a custom allocator, set this to NULL and liblzma will use the standard <a class="el" href="structlzma__allocator.html#a3726deffd08393934263c04660208009" title="Pointer to a custom memory freeing function.">free()</a>.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">opaque</td><td><a class="el" href="structlzma__allocator.html#aab293a5007a93299cc97ee8b5fb81268" title="Pointer passed to .alloc() and .free()">lzma_allocator.opaque</a> (see below) </td></tr>
- <tr><td class="paramname">ptr</td><td>Pointer returned by <a class="el" href="structlzma__allocator.html#aba5c4369af94cc9943423b49171462ec" title="Pointer to a custom memory allocation function.">lzma_allocator.alloc()</a>, or when it is set to NULL, a pointer returned by the standard malloc(). </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a id="aab293a5007a93299cc97ee8b5fb81268" name="aab293a5007a93299cc97ee8b5fb81268"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aab293a5007a93299cc97ee8b5fb81268">&#9670;&#160;</a></span>opaque</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void* lzma_allocator::opaque</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Pointer passed to .<a class="el" href="structlzma__allocator.html#aba5c4369af94cc9943423b49171462ec" title="Pointer to a custom memory allocation function.">alloc()</a> and .<a class="el" href="structlzma__allocator.html#a3726deffd08393934263c04660208009" title="Pointer to a custom memory freeing function.">free()</a> </p>
-<p>opaque is passed as the first argument to <a class="el" href="structlzma__allocator.html#aba5c4369af94cc9943423b49171462ec" title="Pointer to a custom memory allocation function.">lzma_allocator.alloc()</a> and <a class="el" href="structlzma__allocator.html#a3726deffd08393934263c04660208009" title="Pointer to a custom memory freeing function.">lzma_allocator.free()</a>. This intended to ease implementing custom memory allocation functions for use with liblzma.</p>
-<p>If you don't need this, you should set this to NULL. </p>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>lzma/<a class="el" href="base_8h.html">base.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/structlzma__block.html b/doc/api/structlzma__block.html
deleted file mode 100644
index 69aa245..0000000
--- a/doc/api/structlzma__block.html
+++ /dev/null
@@ -1,347 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma_block Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div class="header">
- <div class="summary">
-<a href="#pub-attribs">Data Fields</a> </div>
- <div class="headertitle"><div class="title">lzma_block Struct Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>Options for the Block and Block Header encoders and decoders.
- <a href="structlzma__block.html#details">More...</a></p>
-
-<p><code>#include &lt;block.h&gt;</code></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
-Data Fields</h2></td></tr>
-<tr class="memitem:ac3936a5b0ec3f9b8f9c7ad68e7d149a5"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__block.html#ac3936a5b0ec3f9b8f9c7ad68e7d149a5">version</a></td></tr>
-<tr class="memdesc:ac3936a5b0ec3f9b8f9c7ad68e7d149a5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Block format version. <br /></td></tr>
-<tr class="separator:ac3936a5b0ec3f9b8f9c7ad68e7d149a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6689c4f7524b2c05772a2d6151138610"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__block.html#a6689c4f7524b2c05772a2d6151138610">header_size</a></td></tr>
-<tr class="memdesc:a6689c4f7524b2c05772a2d6151138610"><td class="mdescLeft">&#160;</td><td class="mdescRight">Size of the Block Header field in bytes. <br /></td></tr>
-<tr class="separator:a6689c4f7524b2c05772a2d6151138610"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a80cd9d3025991db4a476ce7588f853e6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3f">lzma_check</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__block.html#a80cd9d3025991db4a476ce7588f853e6">check</a></td></tr>
-<tr class="memdesc:a80cd9d3025991db4a476ce7588f853e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type of integrity Check. <br /></td></tr>
-<tr class="separator:a80cd9d3025991db4a476ce7588f853e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8383d489c9ffea8af390669a105c74e5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__block.html#a8383d489c9ffea8af390669a105c74e5">compressed_size</a></td></tr>
-<tr class="memdesc:a8383d489c9ffea8af390669a105c74e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Size of the Compressed Data in bytes. <br /></td></tr>
-<tr class="separator:a8383d489c9ffea8af390669a105c74e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a17362d38d1946dd16a9686557ec19a94"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__block.html#a17362d38d1946dd16a9686557ec19a94">uncompressed_size</a></td></tr>
-<tr class="memdesc:a17362d38d1946dd16a9686557ec19a94"><td class="mdescLeft">&#160;</td><td class="mdescRight">Uncompressed Size in bytes. <br /></td></tr>
-<tr class="separator:a17362d38d1946dd16a9686557ec19a94"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5900e517e6e0a473a3184074ae7defd1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structlzma__filter.html">lzma_filter</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__block.html#a5900e517e6e0a473a3184074ae7defd1">filters</a></td></tr>
-<tr class="memdesc:a5900e517e6e0a473a3184074ae7defd1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Array of filters. <br /></td></tr>
-<tr class="separator:a5900e517e6e0a473a3184074ae7defd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a25e9bf1bb1699017694b18ca24f965d2"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__block.html#a25e9bf1bb1699017694b18ca24f965d2">raw_check</a> [<a class="el" href="check_8h.html#a379e931cf86351ab1d97896cda9abbe0">LZMA_CHECK_SIZE_MAX</a>]</td></tr>
-<tr class="memdesc:a25e9bf1bb1699017694b18ca24f965d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Raw value stored in the Check field. <br /></td></tr>
-<tr class="separator:a25e9bf1bb1699017694b18ca24f965d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a516ac9cc63bc1a4fadd9fbfc189a206b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#abbc819c74b484c846825ae1388a50a59">lzma_bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__block.html#a516ac9cc63bc1a4fadd9fbfc189a206b">ignore_check</a></td></tr>
-<tr class="memdesc:a516ac9cc63bc1a4fadd9fbfc189a206b"><td class="mdescLeft">&#160;</td><td class="mdescRight">A flag to Block decoder to not verify the Check field. <br /></td></tr>
-<tr class="separator:a516ac9cc63bc1a4fadd9fbfc189a206b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Options for the Block and Block Header encoders and decoders. </p>
-<p>Different Block handling functions use different parts of this structure. Some read some members, other functions write, and some do both. Only the members listed for reading need to be initialized when the specified functions are called. The members marked for writing will be assigned new values at some point either by calling the given function or by later calls to <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a>. </p>
-</div><h2 class="groupheader">Field Documentation</h2>
-<a id="ac3936a5b0ec3f9b8f9c7ad68e7d149a5" name="ac3936a5b0ec3f9b8f9c7ad68e7d149a5"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ac3936a5b0ec3f9b8f9c7ad68e7d149a5">&#9670;&#160;</a></span>version</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint32_t lzma_block::version</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Block format version. </p>
-<p>To prevent API and ABI breakages when new features are needed, a version number is used to indicate which members in this structure are in use:</p><ul>
-<li>liblzma &gt;= 5.0.0: version = 0 is supported.</li>
-<li>liblzma &gt;= 5.1.4beta: Support for version = 1 was added, which adds the ignore_check member.</li>
-</ul>
-<p>If version is greater than one, most Block related functions will return LZMA_OPTIONS_ERROR (<a class="el" href="block_8h.html#a7f5487c21a7b36a8bd17be36074d43c9" title="Decode Block Header.">lzma_block_header_decode()</a> works with any version value).</p>
-<p>Read by:</p><ul>
-<li><a class="el" href="block_8h.html#ae9b47abc872d0b02c2da9d3fa5a7dacd" title="Calculate Block Header Size.">lzma_block_header_size()</a></li>
-<li><a class="el" href="block_8h.html#a0eedbd6331d5708ea963260e6f2a92d0" title="Encode Block Header.">lzma_block_header_encode()</a></li>
-<li><a class="el" href="block_8h.html#a7f5487c21a7b36a8bd17be36074d43c9" title="Decode Block Header.">lzma_block_header_decode()</a></li>
-<li><a class="el" href="block_8h.html#a6c3e102d76db06a07126a569abc6e2bc" title="Validate and set Compressed Size according to Unpadded Size.">lzma_block_compressed_size()</a></li>
-<li><a class="el" href="block_8h.html#a412d5605280fa29befae1b89e344bf30" title="Calculate Unpadded Size.">lzma_block_unpadded_size()</a></li>
-<li><a class="el" href="block_8h.html#a694424f9dfdd5151e01debac1c501fa9" title="Calculate the total encoded size of a Block.">lzma_block_total_size()</a></li>
-<li><a class="el" href="block_8h.html#a2218a49025a0b44f9a6f9d6d24359359" title="Initialize .xz Block encoder.">lzma_block_encoder()</a></li>
-<li><a class="el" href="block_8h.html#aa92c73b2a228efe921fa2376aa7adc92" title="Initialize .xz Block decoder.">lzma_block_decoder()</a></li>
-<li><a class="el" href="block_8h.html#af415fa5130ab64e8760e9c39e856fa54" title="Single-call .xz Block encoder.">lzma_block_buffer_encode()</a></li>
-<li><a class="el" href="block_8h.html#a5a260f634ccd5f54fb98f570d8d92d8c" title="Single-call uncompressed .xz Block encoder.">lzma_block_uncomp_encode()</a></li>
-<li><a class="el" href="block_8h.html#a0c6eb869d91b08f68648b1aa7a32ee9f" title="Single-call .xz Block decoder.">lzma_block_buffer_decode()</a></li>
-</ul>
-<p>Written by:</p><ul>
-<li><a class="el" href="block_8h.html#a7f5487c21a7b36a8bd17be36074d43c9" title="Decode Block Header.">lzma_block_header_decode()</a> </li>
-</ul>
-
-</div>
-</div>
-<a id="a6689c4f7524b2c05772a2d6151138610" name="a6689c4f7524b2c05772a2d6151138610"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a6689c4f7524b2c05772a2d6151138610">&#9670;&#160;</a></span>header_size</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint32_t lzma_block::header_size</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Size of the Block Header field in bytes. </p>
-<p>This is always a multiple of four.</p>
-<p>Read by:</p><ul>
-<li><a class="el" href="block_8h.html#a0eedbd6331d5708ea963260e6f2a92d0" title="Encode Block Header.">lzma_block_header_encode()</a></li>
-<li><a class="el" href="block_8h.html#a7f5487c21a7b36a8bd17be36074d43c9" title="Decode Block Header.">lzma_block_header_decode()</a></li>
-<li><a class="el" href="block_8h.html#a6c3e102d76db06a07126a569abc6e2bc" title="Validate and set Compressed Size according to Unpadded Size.">lzma_block_compressed_size()</a></li>
-<li><a class="el" href="block_8h.html#a412d5605280fa29befae1b89e344bf30" title="Calculate Unpadded Size.">lzma_block_unpadded_size()</a></li>
-<li><a class="el" href="block_8h.html#a694424f9dfdd5151e01debac1c501fa9" title="Calculate the total encoded size of a Block.">lzma_block_total_size()</a></li>
-<li><a class="el" href="block_8h.html#aa92c73b2a228efe921fa2376aa7adc92" title="Initialize .xz Block decoder.">lzma_block_decoder()</a></li>
-<li><a class="el" href="block_8h.html#a0c6eb869d91b08f68648b1aa7a32ee9f" title="Single-call .xz Block decoder.">lzma_block_buffer_decode()</a></li>
-</ul>
-<p>Written by:</p><ul>
-<li><a class="el" href="block_8h.html#ae9b47abc872d0b02c2da9d3fa5a7dacd" title="Calculate Block Header Size.">lzma_block_header_size()</a></li>
-<li><a class="el" href="block_8h.html#af415fa5130ab64e8760e9c39e856fa54" title="Single-call .xz Block encoder.">lzma_block_buffer_encode()</a></li>
-<li><a class="el" href="block_8h.html#a5a260f634ccd5f54fb98f570d8d92d8c" title="Single-call uncompressed .xz Block encoder.">lzma_block_uncomp_encode()</a> </li>
-</ul>
-
-</div>
-</div>
-<a id="a80cd9d3025991db4a476ce7588f853e6" name="a80cd9d3025991db4a476ce7588f853e6"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a80cd9d3025991db4a476ce7588f853e6">&#9670;&#160;</a></span>check</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3f">lzma_check</a> lzma_block::check</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Type of integrity Check. </p>
-<p>The Check ID is not stored into the Block Header, thus its value must be provided also when decoding.</p>
-<p>Read by:</p><ul>
-<li><a class="el" href="block_8h.html#a0eedbd6331d5708ea963260e6f2a92d0" title="Encode Block Header.">lzma_block_header_encode()</a></li>
-<li><a class="el" href="block_8h.html#a7f5487c21a7b36a8bd17be36074d43c9" title="Decode Block Header.">lzma_block_header_decode()</a></li>
-<li><a class="el" href="block_8h.html#a6c3e102d76db06a07126a569abc6e2bc" title="Validate and set Compressed Size according to Unpadded Size.">lzma_block_compressed_size()</a></li>
-<li><a class="el" href="block_8h.html#a412d5605280fa29befae1b89e344bf30" title="Calculate Unpadded Size.">lzma_block_unpadded_size()</a></li>
-<li><a class="el" href="block_8h.html#a694424f9dfdd5151e01debac1c501fa9" title="Calculate the total encoded size of a Block.">lzma_block_total_size()</a></li>
-<li><a class="el" href="block_8h.html#a2218a49025a0b44f9a6f9d6d24359359" title="Initialize .xz Block encoder.">lzma_block_encoder()</a></li>
-<li><a class="el" href="block_8h.html#aa92c73b2a228efe921fa2376aa7adc92" title="Initialize .xz Block decoder.">lzma_block_decoder()</a></li>
-<li><a class="el" href="block_8h.html#af415fa5130ab64e8760e9c39e856fa54" title="Single-call .xz Block encoder.">lzma_block_buffer_encode()</a></li>
-<li><a class="el" href="block_8h.html#a0c6eb869d91b08f68648b1aa7a32ee9f" title="Single-call .xz Block decoder.">lzma_block_buffer_decode()</a> </li>
-</ul>
-
-</div>
-</div>
-<a id="a8383d489c9ffea8af390669a105c74e5" name="a8383d489c9ffea8af390669a105c74e5"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a8383d489c9ffea8af390669a105c74e5">&#9670;&#160;</a></span>compressed_size</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_block::compressed_size</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Size of the Compressed Data in bytes. </p>
-<p>Encoding: If this is not LZMA_VLI_UNKNOWN, Block Header encoder will store this value to the Block Header. Block encoder doesn't care about this value, but will set it once the encoding has been finished.</p>
-<p>Decoding: If this is not LZMA_VLI_UNKNOWN, Block decoder will verify that the size of the Compressed Data field matches compressed_size.</p>
-<p>Usually you don't know this value when encoding in streamed mode, and thus cannot write this field into the Block Header.</p>
-<p>In non-streamed mode you can reserve space for this field before encoding the actual Block. After encoding the data, finish the Block by encoding the Block Header. Steps in detail:</p>
-<ul>
-<li>Set compressed_size to some big enough value. If you don't know better, use LZMA_VLI_MAX, but remember that bigger values take more space in Block Header.</li>
-<li>Call <a class="el" href="block_8h.html#ae9b47abc872d0b02c2da9d3fa5a7dacd" title="Calculate Block Header Size.">lzma_block_header_size()</a> to see how much space you need to reserve for the Block Header.</li>
-<li>Encode the Block using <a class="el" href="block_8h.html#a2218a49025a0b44f9a6f9d6d24359359" title="Initialize .xz Block encoder.">lzma_block_encoder()</a> and <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a>. It sets compressed_size to the correct value.</li>
-<li>Use <a class="el" href="block_8h.html#a0eedbd6331d5708ea963260e6f2a92d0" title="Encode Block Header.">lzma_block_header_encode()</a> to encode the Block Header. Because space was reserved in the first step, you don't need to call <a class="el" href="block_8h.html#ae9b47abc872d0b02c2da9d3fa5a7dacd" title="Calculate Block Header Size.">lzma_block_header_size()</a> anymore, because due to reserving, header_size has to be big enough. If it is "too big", <a class="el" href="block_8h.html#a0eedbd6331d5708ea963260e6f2a92d0" title="Encode Block Header.">lzma_block_header_encode()</a> will add enough Header Padding to make Block Header to match the size specified by header_size.</li>
-</ul>
-<p>Read by:</p><ul>
-<li><a class="el" href="block_8h.html#ae9b47abc872d0b02c2da9d3fa5a7dacd" title="Calculate Block Header Size.">lzma_block_header_size()</a></li>
-<li><a class="el" href="block_8h.html#a0eedbd6331d5708ea963260e6f2a92d0" title="Encode Block Header.">lzma_block_header_encode()</a></li>
-<li><a class="el" href="block_8h.html#a6c3e102d76db06a07126a569abc6e2bc" title="Validate and set Compressed Size according to Unpadded Size.">lzma_block_compressed_size()</a></li>
-<li><a class="el" href="block_8h.html#a412d5605280fa29befae1b89e344bf30" title="Calculate Unpadded Size.">lzma_block_unpadded_size()</a></li>
-<li><a class="el" href="block_8h.html#a694424f9dfdd5151e01debac1c501fa9" title="Calculate the total encoded size of a Block.">lzma_block_total_size()</a></li>
-<li><a class="el" href="block_8h.html#aa92c73b2a228efe921fa2376aa7adc92" title="Initialize .xz Block decoder.">lzma_block_decoder()</a></li>
-<li><a class="el" href="block_8h.html#a0c6eb869d91b08f68648b1aa7a32ee9f" title="Single-call .xz Block decoder.">lzma_block_buffer_decode()</a></li>
-</ul>
-<p>Written by:</p><ul>
-<li><a class="el" href="block_8h.html#a7f5487c21a7b36a8bd17be36074d43c9" title="Decode Block Header.">lzma_block_header_decode()</a></li>
-<li><a class="el" href="block_8h.html#a6c3e102d76db06a07126a569abc6e2bc" title="Validate and set Compressed Size according to Unpadded Size.">lzma_block_compressed_size()</a></li>
-<li><a class="el" href="block_8h.html#a2218a49025a0b44f9a6f9d6d24359359" title="Initialize .xz Block encoder.">lzma_block_encoder()</a></li>
-<li><a class="el" href="block_8h.html#aa92c73b2a228efe921fa2376aa7adc92" title="Initialize .xz Block decoder.">lzma_block_decoder()</a></li>
-<li><a class="el" href="block_8h.html#af415fa5130ab64e8760e9c39e856fa54" title="Single-call .xz Block encoder.">lzma_block_buffer_encode()</a></li>
-<li><a class="el" href="block_8h.html#a5a260f634ccd5f54fb98f570d8d92d8c" title="Single-call uncompressed .xz Block encoder.">lzma_block_uncomp_encode()</a></li>
-<li><a class="el" href="block_8h.html#a0c6eb869d91b08f68648b1aa7a32ee9f" title="Single-call .xz Block decoder.">lzma_block_buffer_decode()</a> </li>
-</ul>
-
-</div>
-</div>
-<a id="a17362d38d1946dd16a9686557ec19a94" name="a17362d38d1946dd16a9686557ec19a94"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a17362d38d1946dd16a9686557ec19a94">&#9670;&#160;</a></span>uncompressed_size</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_block::uncompressed_size</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Uncompressed Size in bytes. </p>
-<p>This is handled very similarly to compressed_size above.</p>
-<p>uncompressed_size is needed by fewer functions than compressed_size. This is because uncompressed_size isn't needed to validate that Block stays within proper limits.</p>
-<p>Read by:</p><ul>
-<li><a class="el" href="block_8h.html#ae9b47abc872d0b02c2da9d3fa5a7dacd" title="Calculate Block Header Size.">lzma_block_header_size()</a></li>
-<li><a class="el" href="block_8h.html#a0eedbd6331d5708ea963260e6f2a92d0" title="Encode Block Header.">lzma_block_header_encode()</a></li>
-<li><a class="el" href="block_8h.html#aa92c73b2a228efe921fa2376aa7adc92" title="Initialize .xz Block decoder.">lzma_block_decoder()</a></li>
-<li><a class="el" href="block_8h.html#a0c6eb869d91b08f68648b1aa7a32ee9f" title="Single-call .xz Block decoder.">lzma_block_buffer_decode()</a></li>
-</ul>
-<p>Written by:</p><ul>
-<li><a class="el" href="block_8h.html#a7f5487c21a7b36a8bd17be36074d43c9" title="Decode Block Header.">lzma_block_header_decode()</a></li>
-<li><a class="el" href="block_8h.html#a2218a49025a0b44f9a6f9d6d24359359" title="Initialize .xz Block encoder.">lzma_block_encoder()</a></li>
-<li><a class="el" href="block_8h.html#aa92c73b2a228efe921fa2376aa7adc92" title="Initialize .xz Block decoder.">lzma_block_decoder()</a></li>
-<li><a class="el" href="block_8h.html#af415fa5130ab64e8760e9c39e856fa54" title="Single-call .xz Block encoder.">lzma_block_buffer_encode()</a></li>
-<li><a class="el" href="block_8h.html#a5a260f634ccd5f54fb98f570d8d92d8c" title="Single-call uncompressed .xz Block encoder.">lzma_block_uncomp_encode()</a></li>
-<li><a class="el" href="block_8h.html#a0c6eb869d91b08f68648b1aa7a32ee9f" title="Single-call .xz Block decoder.">lzma_block_buffer_decode()</a> </li>
-</ul>
-
-</div>
-</div>
-<a id="a5900e517e6e0a473a3184074ae7defd1" name="a5900e517e6e0a473a3184074ae7defd1"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a5900e517e6e0a473a3184074ae7defd1">&#9670;&#160;</a></span>filters</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="structlzma__filter.html">lzma_filter</a>* lzma_block::filters</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Array of filters. </p>
-<p>There can be 1-4 filters. The end of the array is marked with .id = LZMA_VLI_UNKNOWN.</p>
-<p>Read by:</p><ul>
-<li><a class="el" href="block_8h.html#ae9b47abc872d0b02c2da9d3fa5a7dacd" title="Calculate Block Header Size.">lzma_block_header_size()</a></li>
-<li><a class="el" href="block_8h.html#a0eedbd6331d5708ea963260e6f2a92d0" title="Encode Block Header.">lzma_block_header_encode()</a></li>
-<li><a class="el" href="block_8h.html#a2218a49025a0b44f9a6f9d6d24359359" title="Initialize .xz Block encoder.">lzma_block_encoder()</a></li>
-<li><a class="el" href="block_8h.html#aa92c73b2a228efe921fa2376aa7adc92" title="Initialize .xz Block decoder.">lzma_block_decoder()</a></li>
-<li><a class="el" href="block_8h.html#af415fa5130ab64e8760e9c39e856fa54" title="Single-call .xz Block encoder.">lzma_block_buffer_encode()</a></li>
-<li><a class="el" href="block_8h.html#a0c6eb869d91b08f68648b1aa7a32ee9f" title="Single-call .xz Block decoder.">lzma_block_buffer_decode()</a></li>
-</ul>
-<p>Written by:</p><ul>
-<li><a class="el" href="block_8h.html#a7f5487c21a7b36a8bd17be36074d43c9" title="Decode Block Header.">lzma_block_header_decode()</a>: Note that this does NOT free() the old filter options structures. All unused filters[] will have .id == LZMA_VLI_UNKNOWN and .options == NULL. If decoding fails, all filters[] are guaranteed to be LZMA_VLI_UNKNOWN and NULL.</li>
-</ul>
-<dl class="section note"><dt>Note</dt><dd>Because of the array is terminated with .id = LZMA_VLI_UNKNOWN, the actual array must have LZMA_FILTERS_MAX + 1 members or the Block Header decoder will overflow the buffer. </dd></dl>
-
-</div>
-</div>
-<a id="a25e9bf1bb1699017694b18ca24f965d2" name="a25e9bf1bb1699017694b18ca24f965d2"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a25e9bf1bb1699017694b18ca24f965d2">&#9670;&#160;</a></span>raw_check</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint8_t lzma_block::raw_check[<a class="el" href="check_8h.html#a379e931cf86351ab1d97896cda9abbe0">LZMA_CHECK_SIZE_MAX</a>]</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Raw value stored in the Check field. </p>
-<p>After successful coding, the first lzma_check_size(check) bytes of this array contain the raw value stored in the Check field.</p>
-<p>Note that CRC32 and CRC64 are stored in little endian byte order. Take it into account if you display the Check values to the user.</p>
-<p>Written by:</p><ul>
-<li><a class="el" href="block_8h.html#a2218a49025a0b44f9a6f9d6d24359359" title="Initialize .xz Block encoder.">lzma_block_encoder()</a></li>
-<li><a class="el" href="block_8h.html#aa92c73b2a228efe921fa2376aa7adc92" title="Initialize .xz Block decoder.">lzma_block_decoder()</a></li>
-<li><a class="el" href="block_8h.html#af415fa5130ab64e8760e9c39e856fa54" title="Single-call .xz Block encoder.">lzma_block_buffer_encode()</a></li>
-<li><a class="el" href="block_8h.html#a5a260f634ccd5f54fb98f570d8d92d8c" title="Single-call uncompressed .xz Block encoder.">lzma_block_uncomp_encode()</a></li>
-<li><a class="el" href="block_8h.html#a0c6eb869d91b08f68648b1aa7a32ee9f" title="Single-call .xz Block decoder.">lzma_block_buffer_decode()</a> </li>
-</ul>
-
-</div>
-</div>
-<a id="a516ac9cc63bc1a4fadd9fbfc189a206b" name="a516ac9cc63bc1a4fadd9fbfc189a206b"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a516ac9cc63bc1a4fadd9fbfc189a206b">&#9670;&#160;</a></span>ignore_check</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#abbc819c74b484c846825ae1388a50a59">lzma_bool</a> lzma_block::ignore_check</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>A flag to Block decoder to not verify the Check field. </p>
-<p>This member is supported by liblzma &gt;= 5.1.4beta if .version &gt;= 1.</p>
-<p>If this is set to true, the integrity check won't be calculated and verified. Unless you know what you are doing, you should leave this to false. (A reason to set this to true is when the file integrity is verified externally anyway and you want to speed up the decompression, which matters mostly when using SHA-256 as the integrity check.)</p>
-<p>If .version &gt;= 1, read by:</p><ul>
-<li><a class="el" href="block_8h.html#aa92c73b2a228efe921fa2376aa7adc92" title="Initialize .xz Block decoder.">lzma_block_decoder()</a></li>
-<li><a class="el" href="block_8h.html#a0c6eb869d91b08f68648b1aa7a32ee9f" title="Single-call .xz Block decoder.">lzma_block_buffer_decode()</a></li>
-</ul>
-<p>Written by (.version is ignored):</p><ul>
-<li><a class="el" href="block_8h.html#a7f5487c21a7b36a8bd17be36074d43c9" title="Decode Block Header.">lzma_block_header_decode()</a> always sets this to false </li>
-</ul>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>lzma/<a class="el" href="block_8h.html">block.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/structlzma__filter.html b/doc/api/structlzma__filter.html
deleted file mode 100644
index b78081c..0000000
--- a/doc/api/structlzma__filter.html
+++ /dev/null
@@ -1,114 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma_filter Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div class="header">
- <div class="summary">
-<a href="#pub-attribs">Data Fields</a> </div>
- <div class="headertitle"><div class="title">lzma_filter Struct Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>Filter options.
- <a href="structlzma__filter.html#details">More...</a></p>
-
-<p><code>#include &lt;filter.h&gt;</code></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
-Data Fields</h2></td></tr>
-<tr class="memitem:aef1d9709759f39e61db77547b2326929"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__filter.html#aef1d9709759f39e61db77547b2326929">id</a></td></tr>
-<tr class="memdesc:aef1d9709759f39e61db77547b2326929"><td class="mdescLeft">&#160;</td><td class="mdescRight">Filter ID. <br /></td></tr>
-<tr class="separator:aef1d9709759f39e61db77547b2326929"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a10dfbaa1601793657d12320bef933ee6"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__filter.html#a10dfbaa1601793657d12320bef933ee6">options</a></td></tr>
-<tr class="memdesc:a10dfbaa1601793657d12320bef933ee6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to filter-specific options structure. <br /></td></tr>
-<tr class="separator:a10dfbaa1601793657d12320bef933ee6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Filter options. </p>
-<p>This structure is used to pass a Filter ID and a pointer to the filter's options to liblzma. A few functions work with a single <a class="el" href="structlzma__filter.html" title="Filter options.">lzma_filter</a> structure, while most functions expect a filter chain.</p>
-<p>A filter chain is indicated with an array of <a class="el" href="structlzma__filter.html" title="Filter options.">lzma_filter</a> structures. The array is terminated with .id = LZMA_VLI_UNKNOWN. Thus, the filter array must have LZMA_FILTERS_MAX + 1 elements (that is, five) to be able to hold any arbitrary filter chain. This is important when using <a class="el" href="block_8h.html#a7f5487c21a7b36a8bd17be36074d43c9" title="Decode Block Header.">lzma_block_header_decode()</a> from <a class="el" href="block_8h.html" title=".xz Block handling">block.h</a>, because a filter array that is too small would make liblzma write past the end of the array. </p>
-</div><h2 class="groupheader">Field Documentation</h2>
-<a id="aef1d9709759f39e61db77547b2326929" name="aef1d9709759f39e61db77547b2326929"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aef1d9709759f39e61db77547b2326929">&#9670;&#160;</a></span>id</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_filter::id</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Filter ID. </p>
-<p>Use constants whose name begin with `LZMA_FILTER_' to specify different filters. In an array of <a class="el" href="structlzma__filter.html" title="Filter options.">lzma_filter</a> structures, use LZMA_VLI_UNKNOWN to indicate end of filters.</p>
-<dl class="section note"><dt>Note</dt><dd>This is not an enum, because on some systems enums cannot be 64-bit. </dd></dl>
-
-</div>
-</div>
-<a id="a10dfbaa1601793657d12320bef933ee6" name="a10dfbaa1601793657d12320bef933ee6"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a10dfbaa1601793657d12320bef933ee6">&#9670;&#160;</a></span>options</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void* lzma_filter::options</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Pointer to filter-specific options structure. </p>
-<p>If the filter doesn't need options, set this to NULL. If id is set to LZMA_VLI_UNKNOWN, options is ignored, and thus doesn't need be initialized. </p>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>lzma/<a class="el" href="filter_8h.html">filter.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/structlzma__index__iter.html b/doc/api/structlzma__index__iter.html
deleted file mode 100644
index d75595a..0000000
--- a/doc/api/structlzma__index__iter.html
+++ /dev/null
@@ -1,407 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma_index_iter Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div class="header">
- <div class="summary">
-<a href="#pub-attribs">Data Fields</a> </div>
- <div class="headertitle"><div class="title">lzma_index_iter Struct Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>Iterator to get information about Blocks and Streams.
- <a href="structlzma__index__iter.html#details">More...</a></p>
-
-<p><code>#include &lt;index.h&gt;</code></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
-Data Fields</h2></td></tr>
-<tr class="memitem:ad92e1ccf25428b1a207dc1bdb4a45b2c"><td class="memItemLeft" ><a id="ad92e1ccf25428b1a207dc1bdb4a45b2c" name="ad92e1ccf25428b1a207dc1bdb4a45b2c"></a>
-struct {&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a49a96c22ae9b653df6263a7fe271807a"><td class="memItemLeft" >&#160;&#160;&#160;const <a class="el" href="structlzma__stream__flags.html">lzma_stream_flags</a> *&#160;&#160;&#160;<a class="el" href="structlzma__index__iter.html#a223a046bcf09077a6e720967682deeae">flags</a>&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
-<tr class="memdesc:a49a96c22ae9b653df6263a7fe271807a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to Stream Flags. <a href="structlzma__index__iter.html#a223a046bcf09077a6e720967682deeae">More...</a><br /></td></tr>
-<tr class="separator:a49a96c22ae9b653df6263a7fe271807a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae8d181cfac5188dd4a678d4115fbbcb2"><td class="memItemLeft" >&#160;&#160;&#160;<a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;&#160;&#160;<a class="el" href="structlzma__index__iter.html#a115a307dbc778a9de296376dc39c7b23">number</a>&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
-<tr class="memdesc:ae8d181cfac5188dd4a678d4115fbbcb2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stream number in the lzma_index. <a href="structlzma__index__iter.html#a115a307dbc778a9de296376dc39c7b23">More...</a><br /></td></tr>
-<tr class="separator:ae8d181cfac5188dd4a678d4115fbbcb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aeff742c77bbdb23c7f31f6d179b47f31"><td class="memItemLeft" >&#160;&#160;&#160;<a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;&#160;&#160;<a class="el" href="structlzma__index__iter.html#abc6ee9be23e54f31aed07382c8caaf7c">block_count</a>&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
-<tr class="memdesc:aeff742c77bbdb23c7f31f6d179b47f31"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of Blocks in the Stream. <a href="structlzma__index__iter.html#abc6ee9be23e54f31aed07382c8caaf7c">More...</a><br /></td></tr>
-<tr class="separator:aeff742c77bbdb23c7f31f6d179b47f31"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a286009ecb802eb150adb6c6ad1a50918"><td class="memItemLeft" >&#160;&#160;&#160;<a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;&#160;&#160;<a class="el" href="structlzma__index__iter.html#a426705df8dde4b094a42f91ea20a46ac">compressed_offset</a>&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
-<tr class="memdesc:a286009ecb802eb150adb6c6ad1a50918"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compressed start offset of this Stream. <a href="structlzma__index__iter.html#a426705df8dde4b094a42f91ea20a46ac">More...</a><br /></td></tr>
-<tr class="separator:a286009ecb802eb150adb6c6ad1a50918"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af1203268640946888544f0af52c19a66"><td class="memItemLeft" >&#160;&#160;&#160;<a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;&#160;&#160;<a class="el" href="structlzma__index__iter.html#abd374b748b4a42e122b90841709609bc">uncompressed_offset</a>&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
-<tr class="memdesc:af1203268640946888544f0af52c19a66"><td class="mdescLeft">&#160;</td><td class="mdescRight">Uncompressed start offset of this Stream. <a href="structlzma__index__iter.html#abd374b748b4a42e122b90841709609bc">More...</a><br /></td></tr>
-<tr class="separator:af1203268640946888544f0af52c19a66"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6e8737468f3bc6b779c78f45fe6c561c"><td class="memItemLeft" >&#160;&#160;&#160;<a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;&#160;&#160;<a class="el" href="structlzma__index__iter.html#a6e73b1f37e3fcf1e9491e4a53b2c52c7">compressed_size</a>&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
-<tr class="memdesc:a6e8737468f3bc6b779c78f45fe6c561c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compressed size of this Stream. <a href="structlzma__index__iter.html#a6e73b1f37e3fcf1e9491e4a53b2c52c7">More...</a><br /></td></tr>
-<tr class="separator:a6e8737468f3bc6b779c78f45fe6c561c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a591f6115029d2655276d7709a604cddc"><td class="memItemLeft" >
-&#160;&#160;&#160;<a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;&#160;&#160;<b>uncompressed_size</b>&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
-<tr class="memdesc:a591f6115029d2655276d7709a604cddc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Uncompressed size of this Stream. <br /></td></tr>
-<tr class="separator:a591f6115029d2655276d7709a604cddc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a081a8169e2014da2f8c8539120809cb5"><td class="memItemLeft" >&#160;&#160;&#160;<a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;&#160;&#160;<a class="el" href="structlzma__index__iter.html#a48cfc856f283fe00b0df37402e012818">padding</a>&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
-<tr class="memdesc:a081a8169e2014da2f8c8539120809cb5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Size of Stream Padding after this Stream. <a href="structlzma__index__iter.html#a48cfc856f283fe00b0df37402e012818">More...</a><br /></td></tr>
-<tr class="separator:a081a8169e2014da2f8c8539120809cb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad92e1ccf25428b1a207dc1bdb4a45b2c"><td class="memItemLeft" valign="top">}&#160;</td><td class="memItemRight" valign="bottom"><b>stream</b>&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
-<tr class="separator:ad92e1ccf25428b1a207dc1bdb4a45b2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5092ff3be1ff1066585a9066dc5fd2b4"><td class="memItemLeft" ><a id="a5092ff3be1ff1066585a9066dc5fd2b4" name="a5092ff3be1ff1066585a9066dc5fd2b4"></a>
-struct {&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7f332b95b77bd86ea2b3f86fb30375bd"><td class="memItemLeft" >&#160;&#160;&#160;<a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;&#160;&#160;<a class="el" href="structlzma__index__iter.html#abe5333de53562189012d5ed084c0ef98">number_in_file</a>&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
-<tr class="memdesc:a7f332b95b77bd86ea2b3f86fb30375bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Block number in the file. <a href="structlzma__index__iter.html#abe5333de53562189012d5ed084c0ef98">More...</a><br /></td></tr>
-<tr class="separator:a7f332b95b77bd86ea2b3f86fb30375bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abc9701ec21240e8d2701afe55d742167"><td class="memItemLeft" >&#160;&#160;&#160;<a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;&#160;&#160;<a class="el" href="structlzma__index__iter.html#a26436e75d4c2b5dd8d1de24140d8003e">compressed_file_offset</a>&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
-<tr class="memdesc:abc9701ec21240e8d2701afe55d742167"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compressed start offset of this Block. <a href="structlzma__index__iter.html#a26436e75d4c2b5dd8d1de24140d8003e">More...</a><br /></td></tr>
-<tr class="separator:abc9701ec21240e8d2701afe55d742167"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae5593002adfeef61b9325b33a4eb687d"><td class="memItemLeft" >&#160;&#160;&#160;<a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;&#160;&#160;<a class="el" href="structlzma__index__iter.html#a2f3ecf341b5dc043e9673759b8ff47b9">uncompressed_file_offset</a>&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
-<tr class="memdesc:ae5593002adfeef61b9325b33a4eb687d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Uncompressed start offset of this Block. <a href="structlzma__index__iter.html#a2f3ecf341b5dc043e9673759b8ff47b9">More...</a><br /></td></tr>
-<tr class="separator:ae5593002adfeef61b9325b33a4eb687d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a19a8e58670a1b22612428d5da300f2d2"><td class="memItemLeft" >&#160;&#160;&#160;<a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;&#160;&#160;<a class="el" href="structlzma__index__iter.html#a35a752d344ff5d35d2a858a20bd6e5e8">number_in_stream</a>&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
-<tr class="memdesc:a19a8e58670a1b22612428d5da300f2d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Block number in this Stream. <a href="structlzma__index__iter.html#a35a752d344ff5d35d2a858a20bd6e5e8">More...</a><br /></td></tr>
-<tr class="separator:a19a8e58670a1b22612428d5da300f2d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4111d3bc81eb08bf42421814cd76ef33"><td class="memItemLeft" >&#160;&#160;&#160;<a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;&#160;&#160;<a class="el" href="structlzma__index__iter.html#a578bba553c43dc59a5e4032d4f6c89a3">compressed_stream_offset</a>&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
-<tr class="memdesc:a4111d3bc81eb08bf42421814cd76ef33"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compressed start offset of this Block. <a href="structlzma__index__iter.html#a578bba553c43dc59a5e4032d4f6c89a3">More...</a><br /></td></tr>
-<tr class="separator:a4111d3bc81eb08bf42421814cd76ef33"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aba1991fc46f4ebd0a3ac0bec43d36d56"><td class="memItemLeft" >&#160;&#160;&#160;<a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;&#160;&#160;<a class="el" href="structlzma__index__iter.html#a0fc4959fab08e1a6a4902c728c735a99">uncompressed_stream_offset</a>&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
-<tr class="memdesc:aba1991fc46f4ebd0a3ac0bec43d36d56"><td class="mdescLeft">&#160;</td><td class="mdescRight">Uncompressed start offset of this Block. <a href="structlzma__index__iter.html#a0fc4959fab08e1a6a4902c728c735a99">More...</a><br /></td></tr>
-<tr class="separator:aba1991fc46f4ebd0a3ac0bec43d36d56"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8de4ea7cdf905303a31d851e222595db"><td class="memItemLeft" >&#160;&#160;&#160;<a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;&#160;&#160;<a class="el" href="structlzma__index__iter.html#aafc48408ed40060a84ecd66bae5e1b23">uncompressed_size</a>&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
-<tr class="memdesc:a8de4ea7cdf905303a31d851e222595db"><td class="mdescLeft">&#160;</td><td class="mdescRight">Uncompressed size of this Block. <a href="structlzma__index__iter.html#aafc48408ed40060a84ecd66bae5e1b23">More...</a><br /></td></tr>
-<tr class="separator:a8de4ea7cdf905303a31d851e222595db"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1eeb164c66c723607b3ee7ed68b4c22a"><td class="memItemLeft" >&#160;&#160;&#160;<a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;&#160;&#160;<a class="el" href="structlzma__index__iter.html#a9f4e405b9884be08e3a35bc06e3e15df">unpadded_size</a>&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
-<tr class="memdesc:a1eeb164c66c723607b3ee7ed68b4c22a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unpadded size of this Block. <a href="structlzma__index__iter.html#a9f4e405b9884be08e3a35bc06e3e15df">More...</a><br /></td></tr>
-<tr class="separator:a1eeb164c66c723607b3ee7ed68b4c22a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a340f9c08cd05d0931468ab976050ffa2"><td class="memItemLeft" >&#160;&#160;&#160;<a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;&#160;&#160;<a class="el" href="structlzma__index__iter.html#ae164ca3d7492dcf5883769c38baac30e">total_size</a>&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
-<tr class="memdesc:a340f9c08cd05d0931468ab976050ffa2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Total compressed size. <a href="structlzma__index__iter.html#ae164ca3d7492dcf5883769c38baac30e">More...</a><br /></td></tr>
-<tr class="separator:a340f9c08cd05d0931468ab976050ffa2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5092ff3be1ff1066585a9066dc5fd2b4"><td class="memItemLeft" valign="top">}&#160;</td><td class="memItemRight" valign="bottom"><b>block</b>&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
-<tr class="separator:a5092ff3be1ff1066585a9066dc5fd2b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Iterator to get information about Blocks and Streams. </p>
-</div><h2 class="groupheader">Field Documentation</h2>
-<a id="a223a046bcf09077a6e720967682deeae" name="a223a046bcf09077a6e720967682deeae"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a223a046bcf09077a6e720967682deeae">&#9670;&#160;</a></span>flags</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="structlzma__stream__flags.html">lzma_stream_flags</a>* lzma_index_iter::flags</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Pointer to Stream Flags. </p>
-<p>This is NULL if Stream Flags have not been set for this Stream with <a class="el" href="index_8h.html#a79a19669237f19f0b11c9f3be80a62b4" title="Set the Stream Flags.">lzma_index_stream_flags()</a>. </p>
-
-</div>
-</div>
-<a id="a115a307dbc778a9de296376dc39c7b23" name="a115a307dbc778a9de296376dc39c7b23"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a115a307dbc778a9de296376dc39c7b23">&#9670;&#160;</a></span>number</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_index_iter::number</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Stream number in the lzma_index. </p>
-<p>The first Stream is 1. </p>
-
-</div>
-</div>
-<a id="abc6ee9be23e54f31aed07382c8caaf7c" name="abc6ee9be23e54f31aed07382c8caaf7c"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#abc6ee9be23e54f31aed07382c8caaf7c">&#9670;&#160;</a></span>block_count</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_index_iter::block_count</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Number of Blocks in the Stream. </p>
-<p>If this is zero, the block structure below has undefined values. </p>
-
-</div>
-</div>
-<a id="a426705df8dde4b094a42f91ea20a46ac" name="a426705df8dde4b094a42f91ea20a46ac"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a426705df8dde4b094a42f91ea20a46ac">&#9670;&#160;</a></span>compressed_offset</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_index_iter::compressed_offset</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Compressed start offset of this Stream. </p>
-<p>The offset is relative to the beginning of the lzma_index (i.e. usually the beginning of the .xz file). </p>
-
-</div>
-</div>
-<a id="abd374b748b4a42e122b90841709609bc" name="abd374b748b4a42e122b90841709609bc"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#abd374b748b4a42e122b90841709609bc">&#9670;&#160;</a></span>uncompressed_offset</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_index_iter::uncompressed_offset</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Uncompressed start offset of this Stream. </p>
-<p>The offset is relative to the beginning of the lzma_index (i.e. usually the beginning of the .xz file). </p>
-
-</div>
-</div>
-<a id="a6e73b1f37e3fcf1e9491e4a53b2c52c7" name="a6e73b1f37e3fcf1e9491e4a53b2c52c7"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a6e73b1f37e3fcf1e9491e4a53b2c52c7">&#9670;&#160;</a></span>compressed_size</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_index_iter::compressed_size</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Compressed size of this Stream. </p>
-<p>This includes all headers except the possible Stream Padding after this Stream. </p>
-
-</div>
-</div>
-<a id="aafc48408ed40060a84ecd66bae5e1b23" name="aafc48408ed40060a84ecd66bae5e1b23"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aafc48408ed40060a84ecd66bae5e1b23">&#9670;&#160;</a></span>uncompressed_size</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_index_iter::uncompressed_size</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Uncompressed size of this Stream. </p>
-<p>Uncompressed size of this Block.</p>
-<p>You should pass this to the Block decoder if you will decode this Block. It will allow the Block decoder to validate the uncompressed size. </p>
-
-</div>
-</div>
-<a id="a48cfc856f283fe00b0df37402e012818" name="a48cfc856f283fe00b0df37402e012818"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a48cfc856f283fe00b0df37402e012818">&#9670;&#160;</a></span>padding</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_index_iter::padding</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Size of Stream Padding after this Stream. </p>
-<p>If it hasn't been set with <a class="el" href="index_8h.html#a3ed82f96c688f3c953f6509b6f4e2ef3" title="Set the amount of Stream Padding.">lzma_index_stream_padding()</a>, this defaults to zero. Stream Padding is always a multiple of four bytes. </p>
-
-</div>
-</div>
-<a id="abe5333de53562189012d5ed084c0ef98" name="abe5333de53562189012d5ed084c0ef98"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#abe5333de53562189012d5ed084c0ef98">&#9670;&#160;</a></span>number_in_file</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_index_iter::number_in_file</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Block number in the file. </p>
-<p>The first Block is 1. </p>
-
-</div>
-</div>
-<a id="a26436e75d4c2b5dd8d1de24140d8003e" name="a26436e75d4c2b5dd8d1de24140d8003e"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a26436e75d4c2b5dd8d1de24140d8003e">&#9670;&#160;</a></span>compressed_file_offset</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_index_iter::compressed_file_offset</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Compressed start offset of this Block. </p>
-<p>This offset is relative to the beginning of the lzma_index (i.e. usually the beginning of the .xz file). Normally this is where you should seek in the .xz file to start decompressing this Block. </p>
-
-</div>
-</div>
-<a id="a2f3ecf341b5dc043e9673759b8ff47b9" name="a2f3ecf341b5dc043e9673759b8ff47b9"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a2f3ecf341b5dc043e9673759b8ff47b9">&#9670;&#160;</a></span>uncompressed_file_offset</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_index_iter::uncompressed_file_offset</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Uncompressed start offset of this Block. </p>
-<p>This offset is relative to the beginning of the lzma_index (i.e. usually the beginning of the .xz file).</p>
-<p>When doing random-access reading, it is possible that the target offset is not exactly at Block boundary. One will need to compare the target offset against uncompressed_file_offset or uncompressed_stream_offset, and possibly decode and throw away some amount of data before reaching the target offset. </p>
-
-</div>
-</div>
-<a id="a35a752d344ff5d35d2a858a20bd6e5e8" name="a35a752d344ff5d35d2a858a20bd6e5e8"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a35a752d344ff5d35d2a858a20bd6e5e8">&#9670;&#160;</a></span>number_in_stream</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_index_iter::number_in_stream</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Block number in this Stream. </p>
-<p>The first Block is 1. </p>
-
-</div>
-</div>
-<a id="a578bba553c43dc59a5e4032d4f6c89a3" name="a578bba553c43dc59a5e4032d4f6c89a3"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a578bba553c43dc59a5e4032d4f6c89a3">&#9670;&#160;</a></span>compressed_stream_offset</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_index_iter::compressed_stream_offset</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Compressed start offset of this Block. </p>
-<p>This offset is relative to the beginning of the Stream containing this Block. </p>
-
-</div>
-</div>
-<a id="a0fc4959fab08e1a6a4902c728c735a99" name="a0fc4959fab08e1a6a4902c728c735a99"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a0fc4959fab08e1a6a4902c728c735a99">&#9670;&#160;</a></span>uncompressed_stream_offset</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_index_iter::uncompressed_stream_offset</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Uncompressed start offset of this Block. </p>
-<p>This offset is relative to the beginning of the Stream containing this Block. </p>
-
-</div>
-</div>
-<a id="a9f4e405b9884be08e3a35bc06e3e15df" name="a9f4e405b9884be08e3a35bc06e3e15df"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a9f4e405b9884be08e3a35bc06e3e15df">&#9670;&#160;</a></span>unpadded_size</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_index_iter::unpadded_size</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Unpadded size of this Block. </p>
-<p>You should pass this to the Block decoder if you will decode this Block. It will allow the Block decoder to validate the unpadded size. </p>
-
-</div>
-</div>
-<a id="ae164ca3d7492dcf5883769c38baac30e" name="ae164ca3d7492dcf5883769c38baac30e"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ae164ca3d7492dcf5883769c38baac30e">&#9670;&#160;</a></span>total_size</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_index_iter::total_size</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Total compressed size. </p>
-<p>This includes all headers and padding in this Block. This is useful if you need to know how many bytes the Block decoder will actually read. </p>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>lzma/<a class="el" href="index_8h.html">index.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/structlzma__mt.html b/doc/api/structlzma__mt.html
deleted file mode 100644
index 17a16cc..0000000
--- a/doc/api/structlzma__mt.html
+++ /dev/null
@@ -1,256 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma_mt Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div class="header">
- <div class="summary">
-<a href="#pub-attribs">Data Fields</a> </div>
- <div class="headertitle"><div class="title">lzma_mt Struct Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>Multithreading options.
- <a href="structlzma__mt.html#details">More...</a></p>
-
-<p><code>#include &lt;container.h&gt;</code></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
-Data Fields</h2></td></tr>
-<tr class="memitem:a1c2fe028f547bf58b48b5199557d9a9f"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__mt.html#a1c2fe028f547bf58b48b5199557d9a9f">flags</a></td></tr>
-<tr class="memdesc:a1c2fe028f547bf58b48b5199557d9a9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags. <br /></td></tr>
-<tr class="separator:a1c2fe028f547bf58b48b5199557d9a9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a881761f858dbda33c697e74acde0be70"><td class="memItemLeft" align="right" valign="top"><a id="a881761f858dbda33c697e74acde0be70" name="a881761f858dbda33c697e74acde0be70"></a>
-uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>threads</b></td></tr>
-<tr class="memdesc:a881761f858dbda33c697e74acde0be70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of worker threads to use. <br /></td></tr>
-<tr class="separator:a881761f858dbda33c697e74acde0be70"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a20cdc7865266ccb88da36a6e68f84d15"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__mt.html#a20cdc7865266ccb88da36a6e68f84d15">block_size</a></td></tr>
-<tr class="memdesc:a20cdc7865266ccb88da36a6e68f84d15"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encoder only: Maximum uncompressed size of a Block. <br /></td></tr>
-<tr class="separator:a20cdc7865266ccb88da36a6e68f84d15"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a298992bf7d2154d8dd814560219d10c2"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__mt.html#a298992bf7d2154d8dd814560219d10c2">timeout</a></td></tr>
-<tr class="memdesc:a298992bf7d2154d8dd814560219d10c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Timeout to allow <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> to return early. <br /></td></tr>
-<tr class="separator:a298992bf7d2154d8dd814560219d10c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab3883b5644752cdd15f01387d58dd050"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__mt.html#ab3883b5644752cdd15f01387d58dd050">preset</a></td></tr>
-<tr class="memdesc:ab3883b5644752cdd15f01387d58dd050"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encoder only: Compression preset. <br /></td></tr>
-<tr class="separator:ab3883b5644752cdd15f01387d58dd050"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad43a62ef2178c76405e5be0ece7a98b4"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structlzma__filter.html">lzma_filter</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__mt.html#ad43a62ef2178c76405e5be0ece7a98b4">filters</a></td></tr>
-<tr class="memdesc:ad43a62ef2178c76405e5be0ece7a98b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encoder only: Filter chain (alternative to a preset) <br /></td></tr>
-<tr class="separator:ad43a62ef2178c76405e5be0ece7a98b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae38846e8aca5b20d2a86a2364283b730"><td class="memItemLeft" align="right" valign="top"><a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3f">lzma_check</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__mt.html#ae38846e8aca5b20d2a86a2364283b730">check</a></td></tr>
-<tr class="memdesc:ae38846e8aca5b20d2a86a2364283b730"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encoder only: Integrity check type. <br /></td></tr>
-<tr class="separator:ae38846e8aca5b20d2a86a2364283b730"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5a7fb0c7c2db350e09e77477bc3c9509"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__mt.html#a5a7fb0c7c2db350e09e77477bc3c9509">memlimit_threading</a></td></tr>
-<tr class="memdesc:a5a7fb0c7c2db350e09e77477bc3c9509"><td class="mdescLeft">&#160;</td><td class="mdescRight">Memory usage limit to reduce the number of threads. <br /></td></tr>
-<tr class="separator:a5a7fb0c7c2db350e09e77477bc3c9509"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab5e0b530d4c572c7a2361aabbad656aa"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__mt.html#ab5e0b530d4c572c7a2361aabbad656aa">memlimit_stop</a></td></tr>
-<tr class="memdesc:ab5e0b530d4c572c7a2361aabbad656aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Memory usage limit that should never be exceeded. <br /></td></tr>
-<tr class="separator:ab5e0b530d4c572c7a2361aabbad656aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Multithreading options. </p>
-</div><h2 class="groupheader">Field Documentation</h2>
-<a id="a1c2fe028f547bf58b48b5199557d9a9f" name="a1c2fe028f547bf58b48b5199557d9a9f"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a1c2fe028f547bf58b48b5199557d9a9f">&#9670;&#160;</a></span>flags</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint32_t lzma_mt::flags</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Flags. </p>
-<p>Set this to zero if no flags are wanted.</p>
-<p>Encoder: No flags are currently supported.</p>
-<p>Decoder: Bitwise-or of zero or more of the decoder flags:</p><ul>
-<li>LZMA_TELL_NO_CHECK</li>
-<li>LZMA_TELL_UNSUPPORTED_CHECK</li>
-<li>LZMA_TELL_ANY_CHECK</li>
-<li>LZMA_IGNORE_CHECK</li>
-<li>LZMA_CONCATENATED</li>
-<li>LZMA_FAIL_FAST </li>
-</ul>
-
-</div>
-</div>
-<a id="a20cdc7865266ccb88da36a6e68f84d15" name="a20cdc7865266ccb88da36a6e68f84d15"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a20cdc7865266ccb88da36a6e68f84d15">&#9670;&#160;</a></span>block_size</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint64_t lzma_mt::block_size</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Encoder only: Maximum uncompressed size of a Block. </p>
-<p>The encoder will start a new .xz Block every block_size bytes. Using LZMA_FULL_FLUSH or LZMA_FULL_BARRIER with <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> the caller may tell liblzma to start a new Block earlier.</p>
-<p>With LZMA2, a recommended block size is 2-4 times the LZMA2 dictionary size. With very small dictionaries, it is recommended to use at least 1 MiB block size for good compression ratio, even if this is more than four times the dictionary size. Note that these are only recommendations for typical use cases; feel free to use other values. Just keep in mind that using a block size less than the LZMA2 dictionary size is waste of RAM.</p>
-<p>Set this to 0 to let liblzma choose the block size depending on the compression options. For LZMA2 it will be 3*dict_size or 1 MiB, whichever is more.</p>
-<p>For each thread, about 3 * block_size bytes of memory will be allocated. This may change in later liblzma versions. If so, the memory usage will probably be reduced, not increased. </p>
-
-</div>
-</div>
-<a id="a298992bf7d2154d8dd814560219d10c2" name="a298992bf7d2154d8dd814560219d10c2"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a298992bf7d2154d8dd814560219d10c2">&#9670;&#160;</a></span>timeout</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint32_t lzma_mt::timeout</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Timeout to allow <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> to return early. </p>
-<p>Multithreading can make liblzma consume input and produce output in a very bursty way: it may first read a lot of input to fill internal buffers, then no input or output occurs for a while.</p>
-<p>In single-threaded mode, <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> won't return until it has either consumed all the input or filled the output buffer. If this is done in multithreaded mode, it may cause a call <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> to take even tens of seconds, which isn't acceptable in all applications.</p>
-<p>To avoid very long blocking times in <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a>, a timeout (in milliseconds) may be set here. If <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> would block longer than this number of milliseconds, it will return with LZMA_OK. Reasonable values are 100 ms or more. The xz command line tool uses 300 ms.</p>
-<p>If long blocking times are acceptable, set timeout to a special value of 0. This will disable the timeout mechanism and will make <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> block until all the input is consumed or the output buffer has been filled.</p>
-<dl class="section note"><dt>Note</dt><dd>Even with a timeout, <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> might sometimes take a long time to return. No timing guarantees are made. </dd></dl>
-
-</div>
-</div>
-<a id="ab3883b5644752cdd15f01387d58dd050" name="ab3883b5644752cdd15f01387d58dd050"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ab3883b5644752cdd15f01387d58dd050">&#9670;&#160;</a></span>preset</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint32_t lzma_mt::preset</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Encoder only: Compression preset. </p>
-<p>The preset is set just like with <a class="el" href="container_8h.html#acbdad999c544872f0f5d242f0d1a4ed4" title="Initialize .xz Stream encoder using a preset number.">lzma_easy_encoder()</a>. The preset is ignored if filters below is non-NULL. </p>
-
-</div>
-</div>
-<a id="ad43a62ef2178c76405e5be0ece7a98b4" name="ad43a62ef2178c76405e5be0ece7a98b4"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ad43a62ef2178c76405e5be0ece7a98b4">&#9670;&#160;</a></span>filters</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="structlzma__filter.html">lzma_filter</a>* lzma_mt::filters</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Encoder only: Filter chain (alternative to a preset) </p>
-<p>If this is NULL, the preset above is used. Otherwise the preset is ignored and the filter chain specified here is used. </p>
-
-</div>
-</div>
-<a id="ae38846e8aca5b20d2a86a2364283b730" name="ae38846e8aca5b20d2a86a2364283b730"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ae38846e8aca5b20d2a86a2364283b730">&#9670;&#160;</a></span>check</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3f">lzma_check</a> lzma_mt::check</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Encoder only: Integrity check type. </p>
-<p>See <a class="el" href="check_8h.html" title="Integrity checks.">check.h</a> for available checks. The xz command line tool defaults to LZMA_CHECK_CRC64, which is a good choice if you are unsure. </p>
-
-</div>
-</div>
-<a id="a5a7fb0c7c2db350e09e77477bc3c9509" name="a5a7fb0c7c2db350e09e77477bc3c9509"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a5a7fb0c7c2db350e09e77477bc3c9509">&#9670;&#160;</a></span>memlimit_threading</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint64_t lzma_mt::memlimit_threading</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Memory usage limit to reduce the number of threads. </p>
-<p>Encoder: Ignored.</p>
-<p>Decoder:</p>
-<p>If the number of threads has been set so high that more than memlimit_threading bytes of memory would be needed, the number of threads will be reduced so that the memory usage will not exceed memlimit_threading bytes. However, if memlimit_threading cannot be met even in single-threaded mode, then decoding will continue in single-threaded mode and memlimit_threading may be exceeded even by a large amount. That is, memlimit_threading will never make <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> return LZMA_MEMLIMIT_ERROR. To truly cap the memory usage, see memlimit_stop below.</p>
-<p>Setting memlimit_threading to UINT64_MAX or a similar huge value means that liblzma is allowed to keep the whole compressed file and the whole uncompressed file in memory in addition to the memory needed by the decompressor data structures used by each thread! In other words, a reasonable value limit must be set here or it will cause problems sooner or later. If you have no idea what a reasonable value could be, try <a class="el" href="hardware_8h.html#a85363e453b34272a9f26c9fdffb041ee" title="Get the total amount of physical memory (RAM) in bytes.">lzma_physmem()</a> / 4 as a starting point. Setting this limit will never prevent decompression of a file; this will only reduce the number of threads.</p>
-<p>If memlimit_threading is greater than memlimit_stop, then the value of memlimit_stop will be used for both. </p>
-
-</div>
-</div>
-<a id="ab5e0b530d4c572c7a2361aabbad656aa" name="ab5e0b530d4c572c7a2361aabbad656aa"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ab5e0b530d4c572c7a2361aabbad656aa">&#9670;&#160;</a></span>memlimit_stop</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint64_t lzma_mt::memlimit_stop</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Memory usage limit that should never be exceeded. </p>
-<p>Encoder: Ignored.</p>
-<p>Decoder: If decompressing will need more than this amount of memory even in the single-threaded mode, then <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> will return LZMA_MEMLIMIT_ERROR. </p>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>lzma/<a class="el" href="container_8h.html">container.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/structlzma__options__bcj.html b/doc/api/structlzma__options__bcj.html
deleted file mode 100644
index b962092..0000000
--- a/doc/api/structlzma__options__bcj.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma_options_bcj Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div class="header">
- <div class="summary">
-<a href="#pub-attribs">Data Fields</a> </div>
- <div class="headertitle"><div class="title">lzma_options_bcj Struct Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>Options for BCJ filters.
- <a href="structlzma__options__bcj.html#details">More...</a></p>
-
-<p><code>#include &lt;bcj.h&gt;</code></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
-Data Fields</h2></td></tr>
-<tr class="memitem:a3f5a3c62cd82ce89433684f12ed096ac"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__options__bcj.html#a3f5a3c62cd82ce89433684f12ed096ac">start_offset</a></td></tr>
-<tr class="memdesc:a3f5a3c62cd82ce89433684f12ed096ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start offset for conversions. <br /></td></tr>
-<tr class="separator:a3f5a3c62cd82ce89433684f12ed096ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Options for BCJ filters. </p>
-<p>The BCJ filters never change the size of the data. Specifying options for them is optional: if pointer to options is NULL, default value is used. You probably never need to specify options to BCJ filters, so just set the options pointer to NULL and be happy.</p>
-<p>If options with non-default values have been specified when encoding, the same options must also be specified when decoding.</p>
-<dl class="section note"><dt>Note</dt><dd>At the moment, none of the BCJ filters support LZMA_SYNC_FLUSH. If LZMA_SYNC_FLUSH is specified, LZMA_OPTIONS_ERROR will be returned. If there is need, partial support for LZMA_SYNC_FLUSH can be added in future. Partial means that flushing would be possible only at offsets that are multiple of 2, 4, or 16 depending on the filter, except x86 which cannot be made to support LZMA_SYNC_FLUSH predictably. </dd></dl>
-</div><h2 class="groupheader">Field Documentation</h2>
-<a id="a3f5a3c62cd82ce89433684f12ed096ac" name="a3f5a3c62cd82ce89433684f12ed096ac"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a3f5a3c62cd82ce89433684f12ed096ac">&#9670;&#160;</a></span>start_offset</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint32_t lzma_options_bcj::start_offset</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Start offset for conversions. </p>
-<p>This setting is useful only when the same filter is used _separately_ for multiple sections of the same executable file, and the sections contain cross-section branch/call/jump instructions. In that case it is beneficial to set the start offset of the non-first sections so that the relative addresses of the cross-section branch/call/jump instructions will use the same absolute addresses as in the first section.</p>
-<p>When the pointer to options is NULL, the default value (zero) is used. </p>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>lzma/<a class="el" href="bcj_8h.html">bcj.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/structlzma__options__delta.html b/doc/api/structlzma__options__delta.html
deleted file mode 100644
index 294586d..0000000
--- a/doc/api/structlzma__options__delta.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma_options_delta Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div class="header">
- <div class="summary">
-<a href="#pub-attribs">Data Fields</a> </div>
- <div class="headertitle"><div class="title">lzma_options_delta Struct Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>Options for the Delta filter.
- <a href="structlzma__options__delta.html#details">More...</a></p>
-
-<p><code>#include &lt;delta.h&gt;</code></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
-Data Fields</h2></td></tr>
-<tr class="memitem:af3f1ece7f8c472f4a794953b414c7cd7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="delta_8h.html#a04d84d7fa6cefdc219b6e2e96ff36fe1">lzma_delta_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__options__delta.html#af3f1ece7f8c472f4a794953b414c7cd7">type</a></td></tr>
-<tr class="separator:af3f1ece7f8c472f4a794953b414c7cd7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a31b4b0b5a2462cb9433c2663b8a62790"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__options__delta.html#a31b4b0b5a2462cb9433c2663b8a62790">dist</a></td></tr>
-<tr class="memdesc:a31b4b0b5a2462cb9433c2663b8a62790"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delta distance. <br /></td></tr>
-<tr class="separator:a31b4b0b5a2462cb9433c2663b8a62790"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Options for the Delta filter. </p>
-<p>These options are needed by both encoder and decoder. </p>
-</div><h2 class="groupheader">Field Documentation</h2>
-<a id="af3f1ece7f8c472f4a794953b414c7cd7" name="af3f1ece7f8c472f4a794953b414c7cd7"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#af3f1ece7f8c472f4a794953b414c7cd7">&#9670;&#160;</a></span>type</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="delta_8h.html#a04d84d7fa6cefdc219b6e2e96ff36fe1">lzma_delta_type</a> lzma_options_delta::type</td>
- </tr>
- </table>
-</div><div class="memdoc">
-<p>For now, this must always be LZMA_DELTA_TYPE_BYTE. </p>
-
-</div>
-</div>
-<a id="a31b4b0b5a2462cb9433c2663b8a62790" name="a31b4b0b5a2462cb9433c2663b8a62790"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a31b4b0b5a2462cb9433c2663b8a62790">&#9670;&#160;</a></span>dist</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint32_t lzma_options_delta::dist</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Delta distance. </p>
-<p>With the only currently supported type, LZMA_DELTA_TYPE_BYTE, the distance is as bytes.</p>
-<p>Examples:</p><ul>
-<li>16-bit stereo audio: distance = 4 bytes</li>
-<li>24-bit RGB image data: distance = 3 bytes </li>
-</ul>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>lzma/<a class="el" href="delta_8h.html">delta.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/structlzma__options__lzma.html b/doc/api/structlzma__options__lzma.html
deleted file mode 100644
index f8e3adf..0000000
--- a/doc/api/structlzma__options__lzma.html
+++ /dev/null
@@ -1,363 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma_options_lzma Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div class="header">
- <div class="summary">
-<a href="#pub-attribs">Data Fields</a> </div>
- <div class="headertitle"><div class="title">lzma_options_lzma Struct Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>Options specific to the LZMA1 and LZMA2 filters.
- <a href="structlzma__options__lzma.html#details">More...</a></p>
-
-<p><code>#include &lt;lzma12.h&gt;</code></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
-Data Fields</h2></td></tr>
-<tr class="memitem:aeb3f86002405a1191af86def46fca5ad"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__options__lzma.html#aeb3f86002405a1191af86def46fca5ad">dict_size</a></td></tr>
-<tr class="memdesc:aeb3f86002405a1191af86def46fca5ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dictionary size in bytes. <br /></td></tr>
-<tr class="separator:aeb3f86002405a1191af86def46fca5ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a16a58c1ee3ec18c820d5cb03dde3739a"><td class="memItemLeft" align="right" valign="top">const uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__options__lzma.html#a16a58c1ee3ec18c820d5cb03dde3739a">preset_dict</a></td></tr>
-<tr class="memdesc:a16a58c1ee3ec18c820d5cb03dde3739a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to an initial dictionary. <br /></td></tr>
-<tr class="separator:a16a58c1ee3ec18c820d5cb03dde3739a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a655ad4cce9e4dac9cf2a5c8daaa629e0"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__options__lzma.html#a655ad4cce9e4dac9cf2a5c8daaa629e0">preset_dict_size</a></td></tr>
-<tr class="memdesc:a655ad4cce9e4dac9cf2a5c8daaa629e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Size of the preset dictionary. <br /></td></tr>
-<tr class="separator:a655ad4cce9e4dac9cf2a5c8daaa629e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a95f6188e5b5f05c50ec463a315df3585"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__options__lzma.html#a95f6188e5b5f05c50ec463a315df3585">lc</a></td></tr>
-<tr class="memdesc:a95f6188e5b5f05c50ec463a315df3585"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of literal context bits. <br /></td></tr>
-<tr class="separator:a95f6188e5b5f05c50ec463a315df3585"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0fe9c54e808fce3090b6994d95fe41fe"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__options__lzma.html#a0fe9c54e808fce3090b6994d95fe41fe">lp</a></td></tr>
-<tr class="memdesc:a0fe9c54e808fce3090b6994d95fe41fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of literal position bits. <br /></td></tr>
-<tr class="separator:a0fe9c54e808fce3090b6994d95fe41fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acae107b3d3e9d0d4fe16103be22f4408"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__options__lzma.html#acae107b3d3e9d0d4fe16103be22f4408">pb</a></td></tr>
-<tr class="memdesc:acae107b3d3e9d0d4fe16103be22f4408"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of position bits. <br /></td></tr>
-<tr class="separator:acae107b3d3e9d0d4fe16103be22f4408"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1d711df9bda046fd3899abf21fa250d5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="lzma12_8h.html#a1032316e3075c2c8086fb17104b91866">lzma_mode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__options__lzma.html#a1d711df9bda046fd3899abf21fa250d5">mode</a></td></tr>
-<tr class="separator:a1d711df9bda046fd3899abf21fa250d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0352ea7f8b6a43b745a44f6cb4e2d263"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__options__lzma.html#a0352ea7f8b6a43b745a44f6cb4e2d263">nice_len</a></td></tr>
-<tr class="memdesc:a0352ea7f8b6a43b745a44f6cb4e2d263"><td class="mdescLeft">&#160;</td><td class="mdescRight">Nice length of a match. <br /></td></tr>
-<tr class="separator:a0352ea7f8b6a43b745a44f6cb4e2d263"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa99612cd52259093007f33513882dcd0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="lzma12_8h.html#acf740075f86fa61dc408d6d0dbf8fa80">lzma_match_finder</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__options__lzma.html#aa99612cd52259093007f33513882dcd0">mf</a></td></tr>
-<tr class="separator:aa99612cd52259093007f33513882dcd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4226f686e8c9f6288595fe23d0e15713"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__options__lzma.html#a4226f686e8c9f6288595fe23d0e15713">depth</a></td></tr>
-<tr class="memdesc:a4226f686e8c9f6288595fe23d0e15713"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum search depth in the match finder. <br /></td></tr>
-<tr class="separator:a4226f686e8c9f6288595fe23d0e15713"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ade251d13ef46bcacb4e052b83693878c"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__options__lzma.html#ade251d13ef46bcacb4e052b83693878c">ext_flags</a></td></tr>
-<tr class="memdesc:ade251d13ef46bcacb4e052b83693878c"><td class="mdescLeft">&#160;</td><td class="mdescRight">For LZMA_FILTER_LZMA1EXT: Extended flags. <br /></td></tr>
-<tr class="separator:ade251d13ef46bcacb4e052b83693878c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a971da8385dcebd01e60235afb3b717f9"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__options__lzma.html#a971da8385dcebd01e60235afb3b717f9">ext_size_low</a></td></tr>
-<tr class="memdesc:a971da8385dcebd01e60235afb3b717f9"><td class="mdescLeft">&#160;</td><td class="mdescRight">For LZMA_FILTER_LZMA1EXT: Uncompressed size (low bits) <br /></td></tr>
-<tr class="separator:a971da8385dcebd01e60235afb3b717f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae5b3c2375c43ddfacf093980385fb9e3"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__options__lzma.html#ae5b3c2375c43ddfacf093980385fb9e3">ext_size_high</a></td></tr>
-<tr class="memdesc:ae5b3c2375c43ddfacf093980385fb9e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">For LZMA_FILTER_LZMA1EXT: Uncompressed size (high bits) <br /></td></tr>
-<tr class="separator:ae5b3c2375c43ddfacf093980385fb9e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Options specific to the LZMA1 and LZMA2 filters. </p>
-<p>Since LZMA1 and LZMA2 share most of the code, it's simplest to share the options structure too. For encoding, all but the reserved variables need to be initialized unless specifically mentioned otherwise. <a class="el" href="lzma12_8h.html#aa62c28944fe3575653a4c25780400d77" title="Set a compression preset to lzma_options_lzma structure.">lzma_lzma_preset()</a> can be used to get a good starting point.</p>
-<p>For raw decoding, both LZMA1 and LZMA2 need dict_size, preset_dict, and preset_dict_size (if preset_dict != NULL). LZMA1 needs also lc, lp, and pb. </p>
-</div><h2 class="groupheader">Field Documentation</h2>
-<a id="aeb3f86002405a1191af86def46fca5ad" name="aeb3f86002405a1191af86def46fca5ad"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aeb3f86002405a1191af86def46fca5ad">&#9670;&#160;</a></span>dict_size</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint32_t lzma_options_lzma::dict_size</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Dictionary size in bytes. </p>
-<p>Dictionary size indicates how many bytes of the recently processed uncompressed data is kept in memory. One method to reduce size of the uncompressed data is to store distance-length pairs, which indicate what data to repeat from the dictionary buffer. Thus, the bigger the dictionary, the better the compression ratio usually is.</p>
-<p>Maximum size of the dictionary depends on multiple things:</p><ul>
-<li>Memory usage limit</li>
-<li>Available address space (not a problem on 64-bit systems)</li>
-<li>Selected match finder (encoder only)</li>
-</ul>
-<p>Currently the maximum dictionary size for encoding is 1.5 GiB (i.e. (UINT32_C(1) &lt;&lt; 30) + (UINT32_C(1) &lt;&lt; 29)) even on 64-bit systems for certain match finder implementation reasons. In the future, there may be match finders that support bigger dictionaries.</p>
-<p>Decoder already supports dictionaries up to 4 GiB - 1 B (i.e. UINT32_MAX), so increasing the maximum dictionary size of the encoder won't cause problems for old decoders.</p>
-<p>Because extremely small dictionaries sizes would have unneeded overhead in the decoder, the minimum dictionary size is 4096 bytes.</p>
-<dl class="section note"><dt>Note</dt><dd>When decoding, too big dictionary does no other harm than wasting memory. </dd></dl>
-
-</div>
-</div>
-<a id="a16a58c1ee3ec18c820d5cb03dde3739a" name="a16a58c1ee3ec18c820d5cb03dde3739a"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a16a58c1ee3ec18c820d5cb03dde3739a">&#9670;&#160;</a></span>preset_dict</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const uint8_t* lzma_options_lzma::preset_dict</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Pointer to an initial dictionary. </p>
-<p>It is possible to initialize the LZ77 history window using a preset dictionary. It is useful when compressing many similar, relatively small chunks of data independently from each other. The preset dictionary should contain typical strings that occur in the files being compressed. The most probable strings should be near the end of the preset dictionary.</p>
-<p>This feature should be used only in special situations. For now, it works correctly only with raw encoding and decoding. Currently none of the container formats supported by liblzma allow preset dictionary when decoding, thus if you create a .xz or .lzma file with preset dictionary, it cannot be decoded with the regular decoder functions. In the future, the .xz format will likely get support for preset dictionary though. </p>
-
-</div>
-</div>
-<a id="a655ad4cce9e4dac9cf2a5c8daaa629e0" name="a655ad4cce9e4dac9cf2a5c8daaa629e0"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a655ad4cce9e4dac9cf2a5c8daaa629e0">&#9670;&#160;</a></span>preset_dict_size</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint32_t lzma_options_lzma::preset_dict_size</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Size of the preset dictionary. </p>
-<p>Specifies the size of the preset dictionary. If the size is bigger than dict_size, only the last dict_size bytes are processed.</p>
-<p>This variable is read only when preset_dict is not NULL. If preset_dict is not NULL but preset_dict_size is zero, no preset dictionary is used (identical to only setting preset_dict to NULL). </p>
-
-</div>
-</div>
-<a id="a95f6188e5b5f05c50ec463a315df3585" name="a95f6188e5b5f05c50ec463a315df3585"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a95f6188e5b5f05c50ec463a315df3585">&#9670;&#160;</a></span>lc</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint32_t lzma_options_lzma::lc</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Number of literal context bits. </p>
-<p>How many of the highest bits of the previous uncompressed eight-bit byte (also known as `literal') are taken into account when predicting the bits of the next literal.</p>
-<p>E.g. in typical English text, an upper-case letter is often followed by a lower-case letter, and a lower-case letter is usually followed by another lower-case letter. In the US-ASCII character set, the highest three bits are 010 for upper-case letters and 011 for lower-case letters. When lc is at least 3, the literal coding can take advantage of this property in the uncompressed data.</p>
-<p>There is a limit that applies to literal context bits and literal position bits together: lc + lp &lt;= 4. Without this limit the decoding could become very slow, which could have security related results in some cases like email servers doing virus scanning. This limit also simplifies the internal implementation in liblzma.</p>
-<p>There may be LZMA1 streams that have lc + lp &gt; 4 (maximum possible lc would be 8). It is not possible to decode such streams with liblzma. </p>
-
-</div>
-</div>
-<a id="a0fe9c54e808fce3090b6994d95fe41fe" name="a0fe9c54e808fce3090b6994d95fe41fe"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a0fe9c54e808fce3090b6994d95fe41fe">&#9670;&#160;</a></span>lp</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint32_t lzma_options_lzma::lp</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Number of literal position bits. </p>
-<p>lp affects what kind of alignment in the uncompressed data is assumed when encoding literals. A literal is a single 8-bit byte. See pb below for more information about alignment. </p>
-
-</div>
-</div>
-<a id="acae107b3d3e9d0d4fe16103be22f4408" name="acae107b3d3e9d0d4fe16103be22f4408"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#acae107b3d3e9d0d4fe16103be22f4408">&#9670;&#160;</a></span>pb</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint32_t lzma_options_lzma::pb</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Number of position bits. </p>
-<p>pb affects what kind of alignment in the uncompressed data is assumed in general. The default means four-byte alignment (2^ pb =2^2=4), which is often a good choice when there's no better guess.</p>
-<p>When the alignment is known, setting pb accordingly may reduce the file size a little. E.g. with text files having one-byte alignment (US-ASCII, ISO-8859-*, UTF-8), setting pb=0 can improve compression slightly. For UTF-16 text, pb=1 is a good choice. If the alignment is an odd number like 3 bytes, pb=0 might be the best choice.</p>
-<p>Even though the assumed alignment can be adjusted with pb and 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. </p>
-
-</div>
-</div>
-<a id="a1d711df9bda046fd3899abf21fa250d5" name="a1d711df9bda046fd3899abf21fa250d5"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a1d711df9bda046fd3899abf21fa250d5">&#9670;&#160;</a></span>mode</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="lzma12_8h.html#a1032316e3075c2c8086fb17104b91866">lzma_mode</a> lzma_options_lzma::mode</td>
- </tr>
- </table>
-</div><div class="memdoc">
-<p>Compression mode </p>
-
-</div>
-</div>
-<a id="a0352ea7f8b6a43b745a44f6cb4e2d263" name="a0352ea7f8b6a43b745a44f6cb4e2d263"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a0352ea7f8b6a43b745a44f6cb4e2d263">&#9670;&#160;</a></span>nice_len</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint32_t lzma_options_lzma::nice_len</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Nice length of a match. </p>
-<p>This determines how many bytes the encoder compares from the match candidates when looking for the best match. Once a match of at least nice_len bytes long is found, the encoder stops looking for better candidates and encodes the match. (Naturally, if the found match is actually longer than nice_len, the actual length is encoded; it's not truncated to nice_len.)</p>
-<p>Bigger values usually increase the compression ratio and compression time. For most files, 32 to 128 is a good value, which gives very good compression ratio at good speed.</p>
-<p>The exact minimum value depends on the match finder. The maximum is 273, which is the maximum length of a match that LZMA1 and LZMA2 can encode. </p>
-
-</div>
-</div>
-<a id="aa99612cd52259093007f33513882dcd0" name="aa99612cd52259093007f33513882dcd0"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aa99612cd52259093007f33513882dcd0">&#9670;&#160;</a></span>mf</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="lzma12_8h.html#acf740075f86fa61dc408d6d0dbf8fa80">lzma_match_finder</a> lzma_options_lzma::mf</td>
- </tr>
- </table>
-</div><div class="memdoc">
-<p>Match finder ID </p>
-
-</div>
-</div>
-<a id="a4226f686e8c9f6288595fe23d0e15713" name="a4226f686e8c9f6288595fe23d0e15713"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a4226f686e8c9f6288595fe23d0e15713">&#9670;&#160;</a></span>depth</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint32_t lzma_options_lzma::depth</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Maximum search depth in the match finder. </p>
-<p>For every input byte, match finder searches through the hash chain or binary tree in a loop, each iteration going one step deeper in the chain or tree. The searching stops if</p><ul>
-<li>a match of at least nice_len bytes long is found;</li>
-<li>all match candidates from the hash chain or binary tree have been checked; or</li>
-<li>maximum search depth is reached.</li>
-</ul>
-<p>Maximum search depth is needed to prevent the match finder from wasting too much time in case there are lots of short match candidates. On the other hand, stopping the search before all candidates have been checked can reduce compression ratio.</p>
-<p>Setting depth to zero tells liblzma to use an automatic default value, that depends on the selected match finder and nice_len. The default is in the range [4, 200] or so (it may vary between liblzma versions).</p>
-<p>Using a bigger depth value than the default can increase compression ratio in some cases. There is no strict maximum value, but high values (thousands or millions) should be used with care: the encoder could remain fast enough with typical input, but malicious input could cause the match finder to slow down dramatically, possibly creating a denial of service attack. </p>
-
-</div>
-</div>
-<a id="ade251d13ef46bcacb4e052b83693878c" name="ade251d13ef46bcacb4e052b83693878c"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ade251d13ef46bcacb4e052b83693878c">&#9670;&#160;</a></span>ext_flags</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint32_t lzma_options_lzma::ext_flags</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>For LZMA_FILTER_LZMA1EXT: Extended flags. </p>
-<p>This is used only with LZMA_FILTER_LZMA1EXT.</p>
-<p>Currently only one flag is supported, LZMA_LZMA1EXT_ALLOW_EOPM:</p>
-<ul>
-<li>Encoder: If the flag is set, then end marker is written just like it is with LZMA_FILTER_LZMA1. Without this flag the end marker isn't written and the application has to store the uncompressed size somewhere outside the compressed stream. To decompress streams without the end marker, the application has to set the correct uncompressed size in ext_size_low and ext_size_high.</li>
-<li><p class="startli">Decoder: If the uncompressed size in ext_size_low and ext_size_high is set to the special value UINT64_MAX (indicating unknown uncompressed size) then this flag is ignored and the end marker must always be present, that is, the behavior is identical to LZMA_FILTER_LZMA1.</p>
-<p class="startli">Otherwise, if this flag isn't set, then the input stream must not have the end marker; if the end marker is detected then it will result in LZMA_DATA_ERROR. This is useful when it is known that the stream must not have the end marker and strict validation is wanted.</p>
-<p class="startli">If this flag is set, then it is autodetected if the end marker is present after the specified number of uncompressed bytes has been decompressed (ext_size_low and ext_size_high). The end marker isn't allowed in any other position. This behavior is useful when uncompressed size is known but the end marker may or may not be present. This is the case, for example, in .7z files (valid .7z files that have the end marker in LZMA1 streams are rare but they do exist). </p>
-</li>
-</ul>
-
-</div>
-</div>
-<a id="a971da8385dcebd01e60235afb3b717f9" name="a971da8385dcebd01e60235afb3b717f9"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a971da8385dcebd01e60235afb3b717f9">&#9670;&#160;</a></span>ext_size_low</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint32_t lzma_options_lzma::ext_size_low</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>For LZMA_FILTER_LZMA1EXT: Uncompressed size (low bits) </p>
-<p>The 64-bit uncompressed size is needed for decompression with LZMA_FILTER_LZMA1EXT. The size is ignored by the encoder.</p>
-<p>The special value UINT64_MAX indicates that the uncompressed size is unknown and that the end of payload marker (also known as end of stream marker) must be present to indicate the end of the LZMA1 stream. Any other value indicates the expected uncompressed size of the LZMA1 stream. (If LZMA1 was used together with filters that change the size of the data then the uncompressed size of the LZMA1 stream could be different than the final uncompressed size of the filtered stream.)</p>
-<p>ext_size_low holds the least significant 32 bits of the uncompressed size. The most significant 32 bits must be set in ext_size_high. The macro lzma_ext_size_set(opt_lzma, u64size) can be used to set these members.</p>
-<p>The 64-bit uncompressed size is split into two uint32_t variables because there were no reserved uint64_t members and using the same options structure for LZMA_FILTER_LZMA1, LZMA_FILTER_LZMA1EXT, and LZMA_FILTER_LZMA2 was otherwise more convenient than having a new options structure for LZMA_FILTER_LZMA1EXT. (Replacing two uint32_t members with one uint64_t changes the ABI on some systems as the alignment of this struct can increase from 4 bytes to 8.) </p>
-
-</div>
-</div>
-<a id="ae5b3c2375c43ddfacf093980385fb9e3" name="ae5b3c2375c43ddfacf093980385fb9e3"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ae5b3c2375c43ddfacf093980385fb9e3">&#9670;&#160;</a></span>ext_size_high</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint32_t lzma_options_lzma::ext_size_high</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>For LZMA_FILTER_LZMA1EXT: Uncompressed size (high bits) </p>
-<p>This holds the most significant 32 bits of the uncompressed size. </p>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>lzma/<a class="el" href="lzma12_8h.html">lzma12.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/structlzma__stream.html b/doc/api/structlzma__stream.html
deleted file mode 100644
index 5a0c784..0000000
--- a/doc/api/structlzma__stream.html
+++ /dev/null
@@ -1,251 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma_stream Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div class="header">
- <div class="summary">
-<a href="#pub-attribs">Data Fields</a> </div>
- <div class="headertitle"><div class="title">lzma_stream Struct Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>Passing data to and from liblzma.
- <a href="structlzma__stream.html#details">More...</a></p>
-
-<p><code>#include &lt;base.h&gt;</code></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
-Data Fields</h2></td></tr>
-<tr class="memitem:a72fdc738c793f07a5c29715aa57802cf"><td class="memItemLeft" align="right" valign="top">const uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__stream.html#a72fdc738c793f07a5c29715aa57802cf">next_in</a></td></tr>
-<tr class="separator:a72fdc738c793f07a5c29715aa57802cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abb680ecea31910cbda1d7a6ad4f191c0"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__stream.html#abb680ecea31910cbda1d7a6ad4f191c0">avail_in</a></td></tr>
-<tr class="separator:abb680ecea31910cbda1d7a6ad4f191c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1a411e1755d6185756caefabc3932c7b"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__stream.html#a1a411e1755d6185756caefabc3932c7b">total_in</a></td></tr>
-<tr class="separator:a1a411e1755d6185756caefabc3932c7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a14ee64ed636ddcb775edf87e2b9f42ec"><td class="memItemLeft" align="right" valign="top">uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__stream.html#a14ee64ed636ddcb775edf87e2b9f42ec">next_out</a></td></tr>
-<tr class="separator:a14ee64ed636ddcb775edf87e2b9f42ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5ff28ea4e39148723c19f59811627904"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__stream.html#a5ff28ea4e39148723c19f59811627904">avail_out</a></td></tr>
-<tr class="separator:a5ff28ea4e39148723c19f59811627904"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a80d703ffdfd7661e344fe7b61ff737fa"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__stream.html#a80d703ffdfd7661e344fe7b61ff737fa">total_out</a></td></tr>
-<tr class="separator:a80d703ffdfd7661e344fe7b61ff737fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4eb2f3e87e32cc4bea613898b0bd353f"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structlzma__allocator.html">lzma_allocator</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__stream.html#a4eb2f3e87e32cc4bea613898b0bd353f">allocator</a></td></tr>
-<tr class="memdesc:a4eb2f3e87e32cc4bea613898b0bd353f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Custom memory allocation functions. <br /></td></tr>
-<tr class="separator:a4eb2f3e87e32cc4bea613898b0bd353f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a209da54c2fb5dea40ad011c8408300d0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#ab1a60127c640135687a5bcc232cec906">lzma_internal</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__stream.html#a209da54c2fb5dea40ad011c8408300d0">internal</a></td></tr>
-<tr class="separator:a209da54c2fb5dea40ad011c8408300d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af7c43a61f3dfeb0b9c8487b7f275054e"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__stream.html#af7c43a61f3dfeb0b9c8487b7f275054e">seek_pos</a></td></tr>
-<tr class="memdesc:af7c43a61f3dfeb0b9c8487b7f275054e"><td class="mdescLeft">&#160;</td><td class="mdescRight">New seek input position for LZMA_SEEK_NEEDED. <br /></td></tr>
-<tr class="separator:af7c43a61f3dfeb0b9c8487b7f275054e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Passing data to and from liblzma. </p>
-<p>The <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> structure is used for</p><ul>
-<li>passing pointers to input and output buffers to liblzma;</li>
-<li>defining custom memory handler functions; and</li>
-<li>holding a pointer to coder-specific internal data structures.</li>
-</ul>
-<p>Typical usage:</p>
-<ul>
-<li>After allocating <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> (on stack or with malloc()), it must be initialized to LZMA_STREAM_INIT (see LZMA_STREAM_INIT for details).</li>
-<li>Initialize a coder to the <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a>, for example by using <a class="el" href="container_8h.html#acbdad999c544872f0f5d242f0d1a4ed4" title="Initialize .xz Stream encoder using a preset number.">lzma_easy_encoder()</a> or <a class="el" href="container_8h.html#a21cbebf2771617bb1e956385cfb353e3" title="Decode .xz, .lzma, and .lz (lzip) files with autodetection.">lzma_auto_decoder()</a>. Some notes:<ul>
-<li>In contrast to zlib, strm-&gt;next_in and strm-&gt;next_out are ignored by all initialization functions, thus it is safe to not initialize them yet.</li>
-<li>The initialization functions always set strm-&gt;total_in and strm-&gt;total_out to zero.</li>
-<li>If the initialization function fails, no memory is left allocated that would require freeing with <a class="el" href="base_8h.html#a854ff37464ae1225febf14db1af43308" title="Free memory allocated for the coder data structures.">lzma_end()</a> even if some memory was associated with the <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> structure when the initialization function was called.</li>
-</ul>
-</li>
-<li>Use <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> to do the actual work.</li>
-<li>Once the coding has been finished, the existing <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> can be reused. It is OK to reuse <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> with different initialization function without calling <a class="el" href="base_8h.html#a854ff37464ae1225febf14db1af43308" title="Free memory allocated for the coder data structures.">lzma_end()</a> first. Old allocations are automatically freed.</li>
-<li>Finally, use <a class="el" href="base_8h.html#a854ff37464ae1225febf14db1af43308" title="Free memory allocated for the coder data structures.">lzma_end()</a> to free the allocated memory. <a class="el" href="base_8h.html#a854ff37464ae1225febf14db1af43308" title="Free memory allocated for the coder data structures.">lzma_end()</a> never frees the <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> structure itself.</li>
-</ul>
-<p>Application may modify the values of total_in and total_out as it wants. They are updated by liblzma to match the amount of data read and written but aren't used for anything else except as a possible return values from <a class="el" href="base_8h.html#ab6447cd68eeecbd6b88f21daeb8ce751" title="Get progress information.">lzma_get_progress()</a>. </p>
-</div><h2 class="groupheader">Field Documentation</h2>
-<a id="a72fdc738c793f07a5c29715aa57802cf" name="a72fdc738c793f07a5c29715aa57802cf"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a72fdc738c793f07a5c29715aa57802cf">&#9670;&#160;</a></span>next_in</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const uint8_t* lzma_stream::next_in</td>
- </tr>
- </table>
-</div><div class="memdoc">
-<p>Pointer to the next input byte. </p>
-
-</div>
-</div>
-<a id="abb680ecea31910cbda1d7a6ad4f191c0" name="abb680ecea31910cbda1d7a6ad4f191c0"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#abb680ecea31910cbda1d7a6ad4f191c0">&#9670;&#160;</a></span>avail_in</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">size_t lzma_stream::avail_in</td>
- </tr>
- </table>
-</div><div class="memdoc">
-<p>Number of available input bytes in next_in. </p>
-
-</div>
-</div>
-<a id="a1a411e1755d6185756caefabc3932c7b" name="a1a411e1755d6185756caefabc3932c7b"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a1a411e1755d6185756caefabc3932c7b">&#9670;&#160;</a></span>total_in</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint64_t lzma_stream::total_in</td>
- </tr>
- </table>
-</div><div class="memdoc">
-<p>Total number of bytes read by liblzma. </p>
-
-</div>
-</div>
-<a id="a14ee64ed636ddcb775edf87e2b9f42ec" name="a14ee64ed636ddcb775edf87e2b9f42ec"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a14ee64ed636ddcb775edf87e2b9f42ec">&#9670;&#160;</a></span>next_out</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint8_t* lzma_stream::next_out</td>
- </tr>
- </table>
-</div><div class="memdoc">
-<p>Pointer to the next output position. </p>
-
-</div>
-</div>
-<a id="a5ff28ea4e39148723c19f59811627904" name="a5ff28ea4e39148723c19f59811627904"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a5ff28ea4e39148723c19f59811627904">&#9670;&#160;</a></span>avail_out</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">size_t lzma_stream::avail_out</td>
- </tr>
- </table>
-</div><div class="memdoc">
-<p>Amount of free space in next_out. </p>
-
-</div>
-</div>
-<a id="a80d703ffdfd7661e344fe7b61ff737fa" name="a80d703ffdfd7661e344fe7b61ff737fa"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a80d703ffdfd7661e344fe7b61ff737fa">&#9670;&#160;</a></span>total_out</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint64_t lzma_stream::total_out</td>
- </tr>
- </table>
-</div><div class="memdoc">
-<p>Total number of bytes written by liblzma. </p>
-
-</div>
-</div>
-<a id="a4eb2f3e87e32cc4bea613898b0bd353f" name="a4eb2f3e87e32cc4bea613898b0bd353f"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a4eb2f3e87e32cc4bea613898b0bd353f">&#9670;&#160;</a></span>allocator</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="structlzma__allocator.html">lzma_allocator</a>* lzma_stream::allocator</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Custom memory allocation functions. </p>
-<p>In most cases this is NULL which makes liblzma use the standard malloc() and free().</p>
-<dl class="section note"><dt>Note</dt><dd>In 5.0.x this is not a const pointer. </dd></dl>
-
-</div>
-</div>
-<a id="a209da54c2fb5dea40ad011c8408300d0" name="a209da54c2fb5dea40ad011c8408300d0"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a209da54c2fb5dea40ad011c8408300d0">&#9670;&#160;</a></span>internal</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#ab1a60127c640135687a5bcc232cec906">lzma_internal</a>* lzma_stream::internal</td>
- </tr>
- </table>
-</div><div class="memdoc">
-<p>Internal state is not visible to applications. </p>
-
-</div>
-</div>
-<a id="af7c43a61f3dfeb0b9c8487b7f275054e" name="af7c43a61f3dfeb0b9c8487b7f275054e"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#af7c43a61f3dfeb0b9c8487b7f275054e">&#9670;&#160;</a></span>seek_pos</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint64_t lzma_stream::seek_pos</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>New seek input position for LZMA_SEEK_NEEDED. </p>
-<p>When <a class="el" href="base_8h.html#a28cc09bc422d5ba1e0187c9f2af5d957" title="Encode or decode data.">lzma_code()</a> returns LZMA_SEEK_NEEDED, the new input position needed by liblzma will be available seek_pos. The value is guaranteed to not exceed the file size that was specified when this <a class="el" href="structlzma__stream.html" title="Passing data to and from liblzma.">lzma_stream</a> was initialized.</p>
-<p>In all other situations the value of this variable is undefined. </p>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>lzma/<a class="el" href="base_8h.html">base.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/structlzma__stream__flags.html b/doc/api/structlzma__stream__flags.html
deleted file mode 100644
index 9098ff3..0000000
--- a/doc/api/structlzma__stream__flags.html
+++ /dev/null
@@ -1,134 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma_stream_flags Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div class="header">
- <div class="summary">
-<a href="#pub-attribs">Data Fields</a> </div>
- <div class="headertitle"><div class="title">lzma_stream_flags Struct Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>Options for encoding/decoding Stream Header and Stream Footer.
- <a href="structlzma__stream__flags.html#details">More...</a></p>
-
-<p><code>#include &lt;stream_flags.h&gt;</code></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
-Data Fields</h2></td></tr>
-<tr class="memitem:a61e9151869d5b77c868aaa4958e74d10"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__stream__flags.html#a61e9151869d5b77c868aaa4958e74d10">version</a></td></tr>
-<tr class="memdesc:a61e9151869d5b77c868aaa4958e74d10"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stream Flags format version. <br /></td></tr>
-<tr class="separator:a61e9151869d5b77c868aaa4958e74d10"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aaa65ed7a55a098f829f04dba25d0f212"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__stream__flags.html#aaa65ed7a55a098f829f04dba25d0f212">backward_size</a></td></tr>
-<tr class="memdesc:aaa65ed7a55a098f829f04dba25d0f212"><td class="mdescLeft">&#160;</td><td class="mdescRight">Backward Size. <br /></td></tr>
-<tr class="separator:aaa65ed7a55a098f829f04dba25d0f212"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab1052ea7047c8d67f127f33278166647"><td class="memItemLeft" align="right" valign="top"><a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3f">lzma_check</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlzma__stream__flags.html#ab1052ea7047c8d67f127f33278166647">check</a></td></tr>
-<tr class="memdesc:ab1052ea7047c8d67f127f33278166647"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check ID. <br /></td></tr>
-<tr class="separator:ab1052ea7047c8d67f127f33278166647"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Options for encoding/decoding Stream Header and Stream Footer. </p>
-</div><h2 class="groupheader">Field Documentation</h2>
-<a id="a61e9151869d5b77c868aaa4958e74d10" name="a61e9151869d5b77c868aaa4958e74d10"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a61e9151869d5b77c868aaa4958e74d10">&#9670;&#160;</a></span>version</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint32_t lzma_stream_flags::version</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Stream Flags format version. </p>
-<p>To prevent API and ABI breakages if new features are needed in Stream Header or Stream Footer, a version number is used to indicate which members in this structure are in use. For now, version must always be zero. With non-zero version, the <a class="el" href="stream__flags_8h.html#a2ebb8d6dff23daeb3de398913b845eff" title="Encode Stream Header.">lzma_stream_header_encode()</a> and <a class="el" href="stream__flags_8h.html#a438249a75ea8da952a7474b92bfe7b7a" title="Encode Stream Footer.">lzma_stream_footer_encode()</a> will return LZMA_OPTIONS_ERROR.</p>
-<p><a class="el" href="stream__flags_8h.html#ae03198e464f0d296e601ff841e100805" title="Decode Stream Header.">lzma_stream_header_decode()</a> and <a class="el" href="stream__flags_8h.html#aa92a383f85753bb79ee23227fa68186c" title="Decode Stream Footer.">lzma_stream_footer_decode()</a> will always set this to the lowest value that supports all the features indicated by the Stream Flags field. The application must check that the version number set by the decoding functions is supported by the application. Otherwise it is possible that the application will decode the Stream incorrectly. </p>
-
-</div>
-</div>
-<a id="aaa65ed7a55a098f829f04dba25d0f212" name="aaa65ed7a55a098f829f04dba25d0f212"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aaa65ed7a55a098f829f04dba25d0f212">&#9670;&#160;</a></span>backward_size</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> lzma_stream_flags::backward_size</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Backward Size. </p>
-<p>Backward Size must be a multiple of four bytes. In this Stream format version, Backward Size is the size of the Index field.</p>
-<p>Backward Size isn't actually part of the Stream Flags field, but it is convenient to include in this structure anyway. Backward Size is present only in the Stream Footer. There is no need to initialize backward_size when encoding Stream Header.</p>
-<p><a class="el" href="stream__flags_8h.html#ae03198e464f0d296e601ff841e100805" title="Decode Stream Header.">lzma_stream_header_decode()</a> always sets backward_size to LZMA_VLI_UNKNOWN so that it is convenient to use <a class="el" href="stream__flags_8h.html#a3e25ca4205021302882a696283d45263" title="Compare two lzma_stream_flags structures.">lzma_stream_flags_compare()</a> when both Stream Header and Stream Footer have been decoded. </p>
-
-</div>
-</div>
-<a id="ab1052ea7047c8d67f127f33278166647" name="ab1052ea7047c8d67f127f33278166647"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ab1052ea7047c8d67f127f33278166647">&#9670;&#160;</a></span>check</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="check_8h.html#a0a6100c719ac9aa49be3fdf7519e8c3f">lzma_check</a> lzma_stream_flags::check</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Check ID. </p>
-<p>This indicates the type of the integrity check calculated from uncompressed data. </p>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>lzma/<a class="el" href="stream__flags_8h.html">stream_flags.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/sync_off.png b/doc/api/sync_off.png
deleted file mode 100644
index 9b04abe..0000000
--- a/doc/api/sync_off.png
+++ /dev/null
Binary files differ
diff --git a/doc/api/sync_on.png b/doc/api/sync_on.png
deleted file mode 100644
index 34a5b8b..0000000
--- a/doc/api/sync_on.png
+++ /dev/null
Binary files differ
diff --git a/doc/api/tab_a.png b/doc/api/tab_a.png
deleted file mode 100644
index 3181cdf..0000000
--- a/doc/api/tab_a.png
+++ /dev/null
Binary files differ
diff --git a/doc/api/tab_ad.png b/doc/api/tab_ad.png
deleted file mode 100644
index 3615386..0000000
--- a/doc/api/tab_ad.png
+++ /dev/null
Binary files differ
diff --git a/doc/api/tab_b.png b/doc/api/tab_b.png
deleted file mode 100644
index 3feec4f..0000000
--- a/doc/api/tab_b.png
+++ /dev/null
Binary files differ
diff --git a/doc/api/tab_bd.png b/doc/api/tab_bd.png
deleted file mode 100644
index 9fd6635..0000000
--- a/doc/api/tab_bd.png
+++ /dev/null
Binary files differ
diff --git a/doc/api/tab_h.png b/doc/api/tab_h.png
deleted file mode 100644
index abb3d3d..0000000
--- a/doc/api/tab_h.png
+++ /dev/null
Binary files differ
diff --git a/doc/api/tab_hd.png b/doc/api/tab_hd.png
deleted file mode 100644
index c59e413..0000000
--- a/doc/api/tab_hd.png
+++ /dev/null
Binary files differ
diff --git a/doc/api/tab_s.png b/doc/api/tab_s.png
deleted file mode 100644
index a3f26f5..0000000
--- a/doc/api/tab_s.png
+++ /dev/null
Binary files differ
diff --git a/doc/api/tab_sd.png b/doc/api/tab_sd.png
deleted file mode 100644
index 5d4917a..0000000
--- a/doc/api/tab_sd.png
+++ /dev/null
Binary files differ
diff --git a/doc/api/tabs.css b/doc/api/tabs.css
deleted file mode 100644
index b56f46e..0000000
--- a/doc/api/tabs.css
+++ /dev/null
@@ -1,62 +0,0 @@
-.tabs, .tabs2, .tabs3 {
- background-image: var(--nav-gradient-image);
- width: 100%;
- z-index: 101;
- font-size: var(--nav-font-size-level1);
- font-family: var(--font-family-nav);
- display: table;
-}
-
-.tabs2 {
- font-size: var(--nav-font-size-level2);
-}
-.tabs3 {
- font-size: var(--nav-font-size-level3);
-}
-
-.tablist {
- margin: 0;
- padding: 0;
- display: block;
-}
-
-.tablist li {
- float: left;
- display: table-cell;
- background-image: var(--nav-gradient-image);
- line-height: 36px;
- list-style: none;
-}
-
-.tablist a {
- display: block;
- padding: 0 20px;
- font-weight: bold;
- background-image:var(--nav-separator-image);
- background-repeat:no-repeat;
- background-position:right;
- color: var(--nav-text-normal-color);
- text-shadow: var(--nav-text-normal-shadow);
- text-decoration: none;
- outline: none;
-}
-
-.tabs3 .tablist a {
- padding: 0 10px;
-}
-
-.tablist a:hover {
- background-image: var(--nav-gradient-hover-image);
- background-repeat:repeat-x;
- color: var(--nav-text-hover-color);
- text-shadow: var(--nav-text-hover-shadow);
- text-decoration: none;
-}
-
-.tablist li.current a {
- background-image: var(--nav-gradient-active-image);
- background-repeat:repeat-x;
- color: var(--nav-text-active-color);
- text-shadow: var(--nav-text-active-shadow);
-}
-
diff --git a/doc/api/version_8h.html b/doc/api/version_8h.html
deleted file mode 100644
index fd27466..0000000
--- a/doc/api/version_8h.html
+++ /dev/null
@@ -1,239 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma/version.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File&#160;List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div id="nav-path" class="navpath">
- <ul>
-<li class="navelem"><a class="el" href="dir_b17a1d403082bd69a703ed987cf158fb.html">lzma</a></li> </ul>
-</div>
-</div><!-- top -->
-<div class="header">
- <div class="summary">
-<a href="#define-members">Macros</a> &#124;
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle"><div class="title">version.h File Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>Version number.
-<a href="#details">More...</a></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
-Macros</h2></td></tr>
-<tr class="memitem:aa0f450c9d3b0ff5f88b55888ed55701f"><td class="memItemLeft" align="right" valign="top"><a id="aa0f450c9d3b0ff5f88b55888ed55701f" name="aa0f450c9d3b0ff5f88b55888ed55701f"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_VERSION_MAJOR</b>&#160;&#160;&#160;5</td></tr>
-<tr class="memdesc:aa0f450c9d3b0ff5f88b55888ed55701f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Major version number of the liblzma release. <br /></td></tr>
-<tr class="separator:aa0f450c9d3b0ff5f88b55888ed55701f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af8fd295cf8aa349b0731423ad7a56134"><td class="memItemLeft" align="right" valign="top"><a id="af8fd295cf8aa349b0731423ad7a56134" name="af8fd295cf8aa349b0731423ad7a56134"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_VERSION_MINOR</b>&#160;&#160;&#160;4</td></tr>
-<tr class="memdesc:af8fd295cf8aa349b0731423ad7a56134"><td class="mdescLeft">&#160;</td><td class="mdescRight">Minor version number of the liblzma release. <br /></td></tr>
-<tr class="separator:af8fd295cf8aa349b0731423ad7a56134"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8b550373cbff381f15d4308b852a3c2a"><td class="memItemLeft" align="right" valign="top"><a id="a8b550373cbff381f15d4308b852a3c2a" name="a8b550373cbff381f15d4308b852a3c2a"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_VERSION_PATCH</b>&#160;&#160;&#160;5</td></tr>
-<tr class="memdesc:a8b550373cbff381f15d4308b852a3c2a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Patch version number of the liblzma release. <br /></td></tr>
-<tr class="separator:a8b550373cbff381f15d4308b852a3c2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae289abe5dcc203c7cda9f6a9a2f36b3a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="version_8h.html#ae289abe5dcc203c7cda9f6a9a2f36b3a">LZMA_VERSION_STABILITY</a>&#160;&#160;&#160;LZMA_VERSION_STABILITY_STABLE</td></tr>
-<tr class="memdesc:ae289abe5dcc203c7cda9f6a9a2f36b3a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Version stability marker. <br /></td></tr>
-<tr class="separator:ae289abe5dcc203c7cda9f6a9a2f36b3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7fd6169ff15ac7f01f94970359a331ea"><td class="memItemLeft" align="right" valign="top"><a id="a7fd6169ff15ac7f01f94970359a331ea" name="a7fd6169ff15ac7f01f94970359a331ea"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_VERSION_COMMIT</b>&#160;&#160;&#160;&quot;&quot;</td></tr>
-<tr class="memdesc:a7fd6169ff15ac7f01f94970359a331ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Commit version number of the liblzma release. <br /></td></tr>
-<tr class="separator:a7fd6169ff15ac7f01f94970359a331ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5bc145ed7d9149eadb77e547ae8f1c5f"><td class="memItemLeft" align="right" valign="top"><a id="a5bc145ed7d9149eadb77e547ae8f1c5f" name="a5bc145ed7d9149eadb77e547ae8f1c5f"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_VERSION_STABILITY_ALPHA</b>&#160;&#160;&#160;0</td></tr>
-<tr class="separator:a5bc145ed7d9149eadb77e547ae8f1c5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad53a96c53713062b4380f01fb115cd48"><td class="memItemLeft" align="right" valign="top"><a id="ad53a96c53713062b4380f01fb115cd48" name="ad53a96c53713062b4380f01fb115cd48"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_VERSION_STABILITY_BETA</b>&#160;&#160;&#160;1</td></tr>
-<tr class="separator:ad53a96c53713062b4380f01fb115cd48"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a97f7ed9e90264388614837baf97a4d3b"><td class="memItemLeft" align="right" valign="top"><a id="a97f7ed9e90264388614837baf97a4d3b" name="a97f7ed9e90264388614837baf97a4d3b"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_VERSION_STABILITY_STABLE</b>&#160;&#160;&#160;2</td></tr>
-<tr class="separator:a97f7ed9e90264388614837baf97a4d3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a156c47ff34aa0c2b726d0daf799f10a0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="version_8h.html#a156c47ff34aa0c2b726d0daf799f10a0">LZMA_VERSION</a></td></tr>
-<tr class="memdesc:a156c47ff34aa0c2b726d0daf799f10a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compile-time version number. <br /></td></tr>
-<tr class="separator:a156c47ff34aa0c2b726d0daf799f10a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a55a97e55fedce2c148796047ddc88c96"><td class="memItemLeft" align="right" valign="top"><a id="a55a97e55fedce2c148796047ddc88c96" name="a55a97e55fedce2c148796047ddc88c96"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_VERSION_STABILITY_STRING</b>&#160;&#160;&#160;&quot;alpha&quot;</td></tr>
-<tr class="separator:a55a97e55fedce2c148796047ddc88c96"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0b89024f7a04da9b754abee2afe6df23"><td class="memItemLeft" align="right" valign="top"><a id="a0b89024f7a04da9b754abee2afe6df23" name="a0b89024f7a04da9b754abee2afe6df23"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_VERSION_STRING_C_</b>(major, minor, patch, stability, commit)&#160;&#160;&#160; #major &quot;.&quot; #minor &quot;.&quot; #patch stability commit</td></tr>
-<tr class="separator:a0b89024f7a04da9b754abee2afe6df23"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad5614eaf4c2e9408a99bc2137c65ed17"><td class="memItemLeft" align="right" valign="top"><a id="ad5614eaf4c2e9408a99bc2137c65ed17" name="ad5614eaf4c2e9408a99bc2137c65ed17"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_VERSION_STRING_C</b>(major, minor, patch, stability, commit)&#160;&#160;&#160; LZMA_VERSION_STRING_C_(major, minor, patch, stability, commit)</td></tr>
-<tr class="separator:ad5614eaf4c2e9408a99bc2137c65ed17"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a57bb143c993c305a53e9aade831a546c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="version_8h.html#a57bb143c993c305a53e9aade831a546c">LZMA_VERSION_STRING</a></td></tr>
-<tr class="memdesc:a57bb143c993c305a53e9aade831a546c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compile-time version as a string. <br /></td></tr>
-<tr class="separator:a57bb143c993c305a53e9aade831a546c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:a72f929c9b9e8e730b790b3f8c80c3c80"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="version_8h.html#a72f929c9b9e8e730b790b3f8c80c3c80">lzma_version_number</a> (void) lzma_nothrow lzma_attr_const</td></tr>
-<tr class="memdesc:a72f929c9b9e8e730b790b3f8c80c3c80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Run-time version number as an integer. <br /></td></tr>
-<tr class="separator:a72f929c9b9e8e730b790b3f8c80c3c80"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8998c1d8b4b5c2c1218bdfd58fdb1baa"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="version_8h.html#a8998c1d8b4b5c2c1218bdfd58fdb1baa">lzma_version_string</a> (void) lzma_nothrow lzma_attr_const</td></tr>
-<tr class="memdesc:a8998c1d8b4b5c2c1218bdfd58fdb1baa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Run-time version as a string. <br /></td></tr>
-<tr class="separator:a8998c1d8b4b5c2c1218bdfd58fdb1baa"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Version number. </p>
-<dl class="section note"><dt>Note</dt><dd>Never include this file directly. Use &lt;<a class="el" href="lzma_8h.html" title="The public API of liblzma data compression library.">lzma.h</a>&gt; instead. </dd></dl>
-</div><h2 class="groupheader">Macro Definition Documentation</h2>
-<a id="ae289abe5dcc203c7cda9f6a9a2f36b3a" name="ae289abe5dcc203c7cda9f6a9a2f36b3a"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ae289abe5dcc203c7cda9f6a9a2f36b3a">&#9670;&#160;</a></span>LZMA_VERSION_STABILITY</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_VERSION_STABILITY&#160;&#160;&#160;LZMA_VERSION_STABILITY_STABLE</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Version stability marker. </p>
-<p>This will always be one of three values:</p><ul>
-<li>LZMA_VERSION_STABILITY_ALPHA</li>
-<li>LZMA_VERSION_STABILITY_BETA</li>
-<li>LZMA_VERSION_STABILITY_STABLE </li>
-</ul>
-
-</div>
-</div>
-<a id="a156c47ff34aa0c2b726d0daf799f10a0" name="a156c47ff34aa0c2b726d0daf799f10a0"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a156c47ff34aa0c2b726d0daf799f10a0">&#9670;&#160;</a></span>LZMA_VERSION</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_VERSION</td>
- </tr>
- </table>
-</div><div class="memdoc">
-<b>Value:</b><div class="fragment"><div class="line"> (<a class="code hl_define" href="version_8h.html#aa0f450c9d3b0ff5f88b55888ed55701f" title="Major version number of the liblzma release.">LZMA_VERSION_MAJOR</a> * UINT32_C(10000000) \</div>
-<div class="line"> + <a class="code hl_define" href="version_8h.html#af8fd295cf8aa349b0731423ad7a56134" title="Minor version number of the liblzma release.">LZMA_VERSION_MINOR</a> * UINT32_C(10000) \</div>
-<div class="line"> + <a class="code hl_define" href="version_8h.html#a8b550373cbff381f15d4308b852a3c2a" title="Patch version number of the liblzma release.">LZMA_VERSION_PATCH</a> * UINT32_C(10) \</div>
-<div class="line"> + <a class="code hl_define" href="version_8h.html#ae289abe5dcc203c7cda9f6a9a2f36b3a" title="Version stability marker.">LZMA_VERSION_STABILITY</a>)</div>
-</div><!-- fragment -->
-<p>Compile-time version number. </p>
-<p>The version number is of format xyyyzzzs where</p><ul>
-<li>x = major</li>
-<li>yyy = minor</li>
-<li>zzz = revision</li>
-<li>s indicates stability: 0 = alpha, 1 = beta, 2 = stable</li>
-</ul>
-<p>The same xyyyzzz triplet is never reused with different stability levels. For example, if 5.1.0alpha has been released, there will never be 5.1.0beta or 5.1.0 stable.</p>
-<dl class="section note"><dt>Note</dt><dd>The version number of liblzma has nothing to with the version number of Igor Pavlov's LZMA SDK. </dd></dl>
-
-</div>
-</div>
-<a id="a57bb143c993c305a53e9aade831a546c" name="a57bb143c993c305a53e9aade831a546c"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a57bb143c993c305a53e9aade831a546c">&#9670;&#160;</a></span>LZMA_VERSION_STRING</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define LZMA_VERSION_STRING</td>
- </tr>
- </table>
-</div><div class="memdoc">
-<b>Value:</b><div class="fragment"><div class="line"> LZMA_VERSION_STRING_C( \</div>
-<div class="line"> <a class="code hl_define" href="version_8h.html#aa0f450c9d3b0ff5f88b55888ed55701f" title="Major version number of the liblzma release.">LZMA_VERSION_MAJOR</a>, <a class="code hl_define" href="version_8h.html#af8fd295cf8aa349b0731423ad7a56134" title="Minor version number of the liblzma release.">LZMA_VERSION_MINOR</a>, \</div>
-<div class="line"> <a class="code hl_define" href="version_8h.html#a8b550373cbff381f15d4308b852a3c2a" title="Patch version number of the liblzma release.">LZMA_VERSION_PATCH</a>, LZMA_VERSION_STABILITY_STRING, \</div>
-<div class="line"> <a class="code hl_define" href="version_8h.html#a7fd6169ff15ac7f01f94970359a331ea" title="Commit version number of the liblzma release.">LZMA_VERSION_COMMIT</a>)</div>
-</div><!-- fragment -->
-<p>Compile-time version as a string. </p>
-<p>This can be for example "4.999.5alpha", "4.999.8beta", or "5.0.0" (stable versions don't have any "stable" suffix). In future, a snapshot built from source code repository may include an additional suffix, for example "4.999.8beta-21-g1d92". The commit ID won't be available in numeric form in LZMA_VERSION macro. </p>
-
-</div>
-</div>
-<h2 class="groupheader">Function Documentation</h2>
-<a id="a72f929c9b9e8e730b790b3f8c80c3c80" name="a72f929c9b9e8e730b790b3f8c80c3c80"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a72f929c9b9e8e730b790b3f8c80c3c80">&#9670;&#160;</a></span>lzma_version_number()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint32_t lzma_version_number </td>
- <td>(</td>
- <td class="paramtype">void&#160;</td>
- <td class="paramname"></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Run-time version number as an integer. </p>
-<p>This allows an application to compare if it was built against the same, older, or newer version of liblzma that is currently running.</p>
-<dl class="section return"><dt>Returns</dt><dd>The value of LZMA_VERSION macro at the compile time of liblzma </dd></dl>
-
-</div>
-</div>
-<a id="a8998c1d8b4b5c2c1218bdfd58fdb1baa" name="a8998c1d8b4b5c2c1218bdfd58fdb1baa"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a8998c1d8b4b5c2c1218bdfd58fdb1baa">&#9670;&#160;</a></span>lzma_version_string()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char * lzma_version_string </td>
- <td>(</td>
- <td class="paramtype">void&#160;</td>
- <td class="paramname"></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Run-time version as a string. </p>
-<p>This function may be useful to display which version of liblzma an application is currently using.</p>
-<dl class="section return"><dt>Returns</dt><dd>Run-time version of liblzma </dd></dl>
-
-</div>
-</div>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/api/vli_8h.html b/doc/api/vli_8h.html
deleted file mode 100644
index 4e3da1f..0000000
--- a/doc/api/vli_8h.html
+++ /dev/null
@@ -1,323 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.7"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>liblzma (XZ Utils): lzma/vli.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-
-
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectalign">
- <div id="projectname">liblzma (XZ Utils)<span id="projectnumber">&#160;5.4.5</span>
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.7 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File&#160;List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div id="nav-path" class="navpath">
- <ul>
-<li class="navelem"><a class="el" href="dir_b17a1d403082bd69a703ed987cf158fb.html">lzma</a></li> </ul>
-</div>
-</div><!-- top -->
-<div class="header">
- <div class="summary">
-<a href="#define-members">Macros</a> &#124;
-<a href="#typedef-members">Typedefs</a> &#124;
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle"><div class="title">vli.h File Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>Variable-length integer handling.
-<a href="#details">More...</a></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
-Macros</h2></td></tr>
-<tr class="memitem:a7b782528bd1934db7c020adbedb20ec9"><td class="memItemLeft" align="right" valign="top"><a id="a7b782528bd1934db7c020adbedb20ec9" name="a7b782528bd1934db7c020adbedb20ec9"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_VLI_MAX</b>&#160;&#160;&#160;(UINT64_MAX / 2)</td></tr>
-<tr class="memdesc:a7b782528bd1934db7c020adbedb20ec9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum supported value of a variable-length integer. <br /></td></tr>
-<tr class="separator:a7b782528bd1934db7c020adbedb20ec9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5a4b28254a30c859018b896ed371d69a"><td class="memItemLeft" align="right" valign="top"><a id="a5a4b28254a30c859018b896ed371d69a" name="a5a4b28254a30c859018b896ed371d69a"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_VLI_UNKNOWN</b>&#160;&#160;&#160;UINT64_MAX</td></tr>
-<tr class="memdesc:a5a4b28254a30c859018b896ed371d69a"><td class="mdescLeft">&#160;</td><td class="mdescRight">VLI value to denote that the value is unknown. <br /></td></tr>
-<tr class="separator:a5a4b28254a30c859018b896ed371d69a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a063ecff4133aa2f8899b9fa3fdefd310"><td class="memItemLeft" align="right" valign="top"><a id="a063ecff4133aa2f8899b9fa3fdefd310" name="a063ecff4133aa2f8899b9fa3fdefd310"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_VLI_BYTES_MAX</b>&#160;&#160;&#160;9</td></tr>
-<tr class="memdesc:a063ecff4133aa2f8899b9fa3fdefd310"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum supported encoded length of variable length integers. <br /></td></tr>
-<tr class="separator:a063ecff4133aa2f8899b9fa3fdefd310"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2d8bf5322898bfa11945848420585881"><td class="memItemLeft" align="right" valign="top"><a id="a2d8bf5322898bfa11945848420585881" name="a2d8bf5322898bfa11945848420585881"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>LZMA_VLI_C</b>(n)&#160;&#160;&#160;UINT64_C(n)</td></tr>
-<tr class="memdesc:a2d8bf5322898bfa11945848420585881"><td class="mdescLeft">&#160;</td><td class="mdescRight">VLI constant suffix. <br /></td></tr>
-<tr class="separator:a2d8bf5322898bfa11945848420585881"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4f67ed698215d865a2b87a95ab1320dd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="vli_8h.html#a4f67ed698215d865a2b87a95ab1320dd">lzma_vli_is_valid</a>(vli)&#160;&#160;&#160; ((vli) &lt;= <a class="el" href="vli_8h.html#a7b782528bd1934db7c020adbedb20ec9">LZMA_VLI_MAX</a> || (vli) == <a class="el" href="vli_8h.html#a5a4b28254a30c859018b896ed371d69a">LZMA_VLI_UNKNOWN</a>)</td></tr>
-<tr class="memdesc:a4f67ed698215d865a2b87a95ab1320dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Validate a variable-length integer. <br /></td></tr>
-<tr class="separator:a4f67ed698215d865a2b87a95ab1320dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
-Typedefs</h2></td></tr>
-<tr class="memitem:a1dbc0ffc3e72748f64df8f7f71898272"><td class="memItemLeft" align="right" valign="top">typedef uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a></td></tr>
-<tr class="memdesc:a1dbc0ffc3e72748f64df8f7f71898272"><td class="mdescLeft">&#160;</td><td class="mdescRight">Variable-length integer type. <br /></td></tr>
-<tr class="separator:a1dbc0ffc3e72748f64df8f7f71898272"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:a50bbb77e9ec3b72c25586aa700c20970"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="vli_8h.html#a50bbb77e9ec3b72c25586aa700c20970">lzma_vli_encode</a> (<a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> vli, size_t *vli_pos, uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow</td></tr>
-<tr class="memdesc:a50bbb77e9ec3b72c25586aa700c20970"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encode a variable-length integer. <br /></td></tr>
-<tr class="separator:a50bbb77e9ec3b72c25586aa700c20970"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7b7d50e1074e0e2bcd81c29a5f7461c7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="vli_8h.html#a7b7d50e1074e0e2bcd81c29a5f7461c7">lzma_vli_decode</a> (<a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> *vli, size_t *vli_pos, const uint8_t *in, size_t *in_pos, size_t in_size) lzma_nothrow</td></tr>
-<tr class="memdesc:a7b7d50e1074e0e2bcd81c29a5f7461c7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decode a variable-length integer. <br /></td></tr>
-<tr class="separator:a7b7d50e1074e0e2bcd81c29a5f7461c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8d53e0b69934b43da8721fa6f1e8cc4f"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="vli_8h.html#a8d53e0b69934b43da8721fa6f1e8cc4f">lzma_vli_size</a> (<a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> vli) lzma_nothrow lzma_attr_pure</td></tr>
-<tr class="memdesc:a8d53e0b69934b43da8721fa6f1e8cc4f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of bytes required to encode a VLI. <br /></td></tr>
-<tr class="separator:a8d53e0b69934b43da8721fa6f1e8cc4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Variable-length integer handling. </p>
-<dl class="section note"><dt>Note</dt><dd>Never include this file directly. Use &lt;<a class="el" href="lzma_8h.html" title="The public API of liblzma data compression library.">lzma.h</a>&gt; instead.</dd></dl>
-<p>In the .xz format, most integers are encoded in a variable-length representation, which is sometimes called little endian base-128 encoding. This saves space when smaller values are more likely than bigger values.</p>
-<p>The encoding scheme encodes seven bits to every byte, using minimum number of bytes required to represent the given value. Encodings that use non-minimum number of bytes are invalid, thus every integer has exactly one encoded representation. The maximum number of bits in a VLI is 63, thus the vli argument must be less than or equal to UINT64_MAX / 2. You should use LZMA_VLI_MAX for clarity. </p>
-</div><h2 class="groupheader">Macro Definition Documentation</h2>
-<a id="a4f67ed698215d865a2b87a95ab1320dd" name="a4f67ed698215d865a2b87a95ab1320dd"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a4f67ed698215d865a2b87a95ab1320dd">&#9670;&#160;</a></span>lzma_vli_is_valid</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define lzma_vli_is_valid</td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname">vli</td><td>)</td>
- <td>&#160;&#160;&#160; ((vli) &lt;= <a class="el" href="vli_8h.html#a7b782528bd1934db7c020adbedb20ec9">LZMA_VLI_MAX</a> || (vli) == <a class="el" href="vli_8h.html#a5a4b28254a30c859018b896ed371d69a">LZMA_VLI_UNKNOWN</a>)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Validate a variable-length integer. </p>
-<p>This is useful to test that application has given acceptable values for example in the uncompressed_size and compressed_size variables.</p>
-<dl class="section return"><dt>Returns</dt><dd>True if the integer is representable as VLI or if it indicates unknown value. False if the integer cannot be represented as VLI. </dd></dl>
-
-</div>
-</div>
-<h2 class="groupheader">Typedef Documentation</h2>
-<a id="a1dbc0ffc3e72748f64df8f7f71898272" name="a1dbc0ffc3e72748f64df8f7f71898272"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a1dbc0ffc3e72748f64df8f7f71898272">&#9670;&#160;</a></span>lzma_vli</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef uint64_t <a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Variable-length integer type. </p>
-<p>Valid VLI values are in the range [0, LZMA_VLI_MAX]. Unknown value is indicated with LZMA_VLI_UNKNOWN, which is the maximum value of the underlying integer type.</p>
-<p>lzma_vli will be uint64_t for the foreseeable future. If a bigger size is needed in the future, it is guaranteed that 2 * LZMA_VLI_MAX will not overflow lzma_vli. This simplifies integer overflow detection. </p>
-
-</div>
-</div>
-<h2 class="groupheader">Function Documentation</h2>
-<a id="a50bbb77e9ec3b72c25586aa700c20970" name="a50bbb77e9ec3b72c25586aa700c20970"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a50bbb77e9ec3b72c25586aa700c20970">&#9670;&#160;</a></span>lzma_vli_encode()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_vli_encode </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td>
- <td class="paramname"><em>vli</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t *&#160;</td>
- <td class="paramname"><em>vli_pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint8_t *&#160;</td>
- <td class="paramname"><em>out</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t *&#160;</td>
- <td class="paramname"><em>out_pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>out_size</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Encode a variable-length integer. </p>
-<p>This function has two modes: single-call and multi-call. Single-call mode encodes the whole integer at once; it is an error if the output buffer is too small. Multi-call mode saves the position in *vli_pos, and thus it is possible to continue encoding if the buffer becomes full before the whole integer has been encoded.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir"></td><td class="paramname">vli</td><td>Integer to be encoded </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">vli_pos</td><td>How many VLI-encoded bytes have already been written out. When starting to encode a new integer in multi-call mode, *vli_pos must be set to zero. To use single-call encoding, set vli_pos to NULL. </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">out</td><td>Beginning of the output buffer </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">out_pos</td><td>The next byte will be written to out[*out_pos]. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">out_size</td><td>Size of the out buffer; the first byte into which no data is written to is out[out_size].</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Slightly different return values are used in multi-call and single-call modes.</dd></dl>
-<p>Single-call (vli_pos == NULL):</p><ul>
-<li>LZMA_OK: Integer successfully encoded.</li>
-<li>LZMA_PROG_ERROR: Arguments are not sane. This can be due to too little output space; single-call mode doesn't use LZMA_BUF_ERROR, since the application should have checked the encoded size with <a class="el" href="vli_8h.html#a8d53e0b69934b43da8721fa6f1e8cc4f" title="Get the number of bytes required to encode a VLI.">lzma_vli_size()</a>.</li>
-</ul>
-<p>Multi-call (vli_pos != NULL):</p><ul>
-<li>LZMA_OK: So far all OK, but the integer is not completely written out yet.</li>
-<li>LZMA_STREAM_END: Integer successfully encoded.</li>
-<li>LZMA_BUF_ERROR: No output space was provided.</li>
-<li>LZMA_PROG_ERROR: Arguments are not sane. </li>
-</ul>
-
-</div>
-</div>
-<a id="a7b7d50e1074e0e2bcd81c29a5f7461c7" name="a7b7d50e1074e0e2bcd81c29a5f7461c7"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a7b7d50e1074e0e2bcd81c29a5f7461c7">&#9670;&#160;</a></span>lzma_vli_decode()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="base_8h.html#a8494e0457e1463d6d2b6836018d87b6e">lzma_ret</a> lzma_vli_decode </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a> *&#160;</td>
- <td class="paramname"><em>vli</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t *&#160;</td>
- <td class="paramname"><em>vli_pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint8_t *&#160;</td>
- <td class="paramname"><em>in</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t *&#160;</td>
- <td class="paramname"><em>in_pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t&#160;</td>
- <td class="paramname"><em>in_size</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Decode a variable-length integer. </p>
-<p>Like <a class="el" href="vli_8h.html#a50bbb77e9ec3b72c25586aa700c20970" title="Encode a variable-length integer.">lzma_vli_encode()</a>, this function has single-call and multi-call modes.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[out]</td><td class="paramname">vli</td><td>Pointer to decoded integer. The decoder will initialize it to zero when *vli_pos == 0, so application isn't required to initialize *vli. </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">vli_pos</td><td>How many bytes have already been decoded. When starting to decode a new integer in multi-call mode, *vli_pos must be initialized to zero. To use single-call decoding, set vli_pos to NULL. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in</td><td>Beginning of the input buffer </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">in_pos</td><td>The next byte will be read from in[*in_pos]. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">in_size</td><td>Size of the input buffer; the first byte that won't be read is in[in_size].</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Slightly different return values are used in multi-call and single-call modes.</dd></dl>
-<p>Single-call (vli_pos == NULL):</p><ul>
-<li>LZMA_OK: Integer successfully decoded.</li>
-<li>LZMA_DATA_ERROR: Integer is corrupt. This includes hitting the end of the input buffer before the whole integer was decoded; providing no input at all will use LZMA_DATA_ERROR.</li>
-<li>LZMA_PROG_ERROR: Arguments are not sane.</li>
-</ul>
-<p>Multi-call (vli_pos != NULL):</p><ul>
-<li>LZMA_OK: So far all OK, but the integer is not completely decoded yet.</li>
-<li>LZMA_STREAM_END: Integer successfully decoded.</li>
-<li>LZMA_DATA_ERROR: Integer is corrupt.</li>
-<li>LZMA_BUF_ERROR: No input was provided.</li>
-<li>LZMA_PROG_ERROR: Arguments are not sane. </li>
-</ul>
-
-</div>
-</div>
-<a id="a8d53e0b69934b43da8721fa6f1e8cc4f" name="a8d53e0b69934b43da8721fa6f1e8cc4f"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a8d53e0b69934b43da8721fa6f1e8cc4f">&#9670;&#160;</a></span>lzma_vli_size()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">uint32_t lzma_vli_size </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="vli_8h.html#a1dbc0ffc3e72748f64df8f7f71898272">lzma_vli</a>&#160;</td>
- <td class="paramname"><em>vli</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Get the number of bytes required to encode a VLI. </p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">vli</td><td>Integer whose encoded size is to be determined</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Number of bytes on success (1-9). If vli isn't valid, zero is returned. </dd></dl>
-
-</div>
-</div>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
-</small></address>
-</body>
-</html>
diff --git a/doc/examples/01_compress_easy.c b/doc/examples/01_compress_easy.c
index ec32a37..31bcf92 100644
--- a/doc/examples/01_compress_easy.c
+++ b/doc/examples/01_compress_easy.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file 01_compress_easy.c
@@ -9,9 +11,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include <stdbool.h>
@@ -27,7 +26,7 @@ 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",
+ "followed by 'e' to indicate extreme preset\n",
argv0);
exit(EXIT_FAILURE);
}
diff --git a/doc/examples/02_decompress.c b/doc/examples/02_decompress.c
index 98339be..a87a5d3 100644
--- a/doc/examples/02_decompress.c
+++ b/doc/examples/02_decompress.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file 02_decompress.c
@@ -9,9 +11,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include <stdbool.h>
diff --git a/doc/examples/03_compress_custom.c b/doc/examples/03_compress_custom.c
index 40c85e3..57797b8 100644
--- a/doc/examples/03_compress_custom.c
+++ b/doc/examples/03_compress_custom.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file 03_compress_custom.c
@@ -9,9 +11,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include <stdbool.h>
diff --git a/doc/examples/04_compress_easy_mt.c b/doc/examples/04_compress_easy_mt.c
index efe5697..c721a66 100644
--- a/doc/examples/04_compress_easy_mt.c
+++ b/doc/examples/04_compress_easy_mt.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file 04_compress_easy_mt.c
@@ -9,9 +11,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include <stdbool.h>
diff --git a/doc/examples/11_file_info.c b/doc/examples/11_file_info.c
new file mode 100644
index 0000000..caadd98
--- /dev/null
+++ b/doc/examples/11_file_info.c
@@ -0,0 +1,205 @@
+// SPDX-License-Identifier: 0BSD
+
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \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
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#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;
+}
diff --git a/doc/examples/Makefile b/doc/examples/Makefile
index e8839d8..f5b9878 100644
--- a/doc/examples/Makefile
+++ b/doc/examples/Makefile
@@ -1,9 +1,5 @@
-#
+# SPDX-License-Identifier: 0BSD
# 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
diff --git a/doc/examples_old/xz_pipe_comp.c b/doc/examples_old/xz_pipe_comp.c
deleted file mode 100644
index 9f9224b..0000000
--- a/doc/examples_old/xz_pipe_comp.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * 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;
-}
-
diff --git a/doc/examples_old/xz_pipe_decomp.c b/doc/examples_old/xz_pipe_decomp.c
deleted file mode 100644
index fb5ad89..0000000
--- a/doc/examples_old/xz_pipe_decomp.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * 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;
-}
-
diff --git a/doc/lzma-file-format.txt b/doc/lzma-file-format.txt
index 4865def..8cce5dc 100644
--- a/doc/lzma-file-format.txt
+++ b/doc/lzma-file-format.txt
@@ -40,10 +40,10 @@ The .lzma File Format
0.2. Changes
- Last modified: 2022-07-13 21:00+0300
+ Last modified: 2024-04-08 17:35+0300
- Compared to the previous version (2011-04-12 11:55+0300)
- the section 1.1.3 was modified to allow End of Payload Marker
+ From version 2011-04-12 11:55+0300 to 2022-07-13 21:00+0300:
+ The section 1.1.3 was modified to allow End of Payload Marker
with a known Uncompressed Size.
@@ -157,17 +157,17 @@ The .lzma File Format
2. References
LZMA SDK - The original LZMA implementation
- http://7-zip.org/sdk.html
+ https://7-zip.org/sdk.html
7-Zip
- http://7-zip.org/
+ https://7-zip.org/
LZMA Utils - LZMA adapted to POSIX-like systems
- http://tukaani.org/lzma/
+ https://tukaani.org/lzma/
XZ Utils - The next generation of LZMA Utils
- http://tukaani.org/xz/
+ https://tukaani.org/xz/
The .xz file format - The successor of the .lzma format
- http://tukaani.org/xz/xz-file-format.txt
+ https://tukaani.org/xz/xz-file-format.txt
diff --git a/doc/man/pdf-a4/lzmainfo-a4.pdf b/doc/man/pdf-a4/lzmainfo-a4.pdf
deleted file mode 100644
index 0ee526f..0000000
--- a/doc/man/pdf-a4/lzmainfo-a4.pdf
+++ /dev/null
Binary files differ
diff --git a/doc/man/pdf-a4/xz-a4.pdf b/doc/man/pdf-a4/xz-a4.pdf
deleted file mode 100644
index 5f1a30c..0000000
--- a/doc/man/pdf-a4/xz-a4.pdf
+++ /dev/null
Binary files differ
diff --git a/doc/man/pdf-a4/xzdec-a4.pdf b/doc/man/pdf-a4/xzdec-a4.pdf
deleted file mode 100644
index 35f2059..0000000
--- a/doc/man/pdf-a4/xzdec-a4.pdf
+++ /dev/null
Binary files differ
diff --git a/doc/man/pdf-a4/xzdiff-a4.pdf b/doc/man/pdf-a4/xzdiff-a4.pdf
deleted file mode 100644
index 1189d84..0000000
--- a/doc/man/pdf-a4/xzdiff-a4.pdf
+++ /dev/null
Binary files differ
diff --git a/doc/man/pdf-a4/xzgrep-a4.pdf b/doc/man/pdf-a4/xzgrep-a4.pdf
deleted file mode 100644
index 2cb3528..0000000
--- a/doc/man/pdf-a4/xzgrep-a4.pdf
+++ /dev/null
Binary files differ
diff --git a/doc/man/pdf-a4/xzless-a4.pdf b/doc/man/pdf-a4/xzless-a4.pdf
deleted file mode 100644
index 4a8e8e6..0000000
--- a/doc/man/pdf-a4/xzless-a4.pdf
+++ /dev/null
Binary files differ
diff --git a/doc/man/pdf-a4/xzmore-a4.pdf b/doc/man/pdf-a4/xzmore-a4.pdf
deleted file mode 100644
index 687074b..0000000
--- a/doc/man/pdf-a4/xzmore-a4.pdf
+++ /dev/null
Binary files differ
diff --git a/doc/man/pdf-letter/lzmainfo-letter.pdf b/doc/man/pdf-letter/lzmainfo-letter.pdf
deleted file mode 100644
index d953045..0000000
--- a/doc/man/pdf-letter/lzmainfo-letter.pdf
+++ /dev/null
Binary files differ
diff --git a/doc/man/pdf-letter/xz-letter.pdf b/doc/man/pdf-letter/xz-letter.pdf
deleted file mode 100644
index 440f294..0000000
--- a/doc/man/pdf-letter/xz-letter.pdf
+++ /dev/null
Binary files differ
diff --git a/doc/man/pdf-letter/xzdec-letter.pdf b/doc/man/pdf-letter/xzdec-letter.pdf
deleted file mode 100644
index 83c6bb2..0000000
--- a/doc/man/pdf-letter/xzdec-letter.pdf
+++ /dev/null
Binary files differ
diff --git a/doc/man/pdf-letter/xzdiff-letter.pdf b/doc/man/pdf-letter/xzdiff-letter.pdf
deleted file mode 100644
index 9c7ab61..0000000
--- a/doc/man/pdf-letter/xzdiff-letter.pdf
+++ /dev/null
Binary files differ
diff --git a/doc/man/pdf-letter/xzgrep-letter.pdf b/doc/man/pdf-letter/xzgrep-letter.pdf
deleted file mode 100644
index 8303764..0000000
--- a/doc/man/pdf-letter/xzgrep-letter.pdf
+++ /dev/null
Binary files differ
diff --git a/doc/man/pdf-letter/xzless-letter.pdf b/doc/man/pdf-letter/xzless-letter.pdf
deleted file mode 100644
index 9a8e231..0000000
--- a/doc/man/pdf-letter/xzless-letter.pdf
+++ /dev/null
Binary files differ
diff --git a/doc/man/pdf-letter/xzmore-letter.pdf b/doc/man/pdf-letter/xzmore-letter.pdf
deleted file mode 100644
index ef60bbc..0000000
--- a/doc/man/pdf-letter/xzmore-letter.pdf
+++ /dev/null
Binary files differ
diff --git a/doc/man/txt/lzmainfo.txt b/doc/man/txt/lzmainfo.txt
index fa4e51c..74208c6 100644
--- a/doc/man/txt/lzmainfo.txt
+++ b/doc/man/txt/lzmainfo.txt
@@ -1,7 +1,5 @@
LZMAINFO(1) XZ Utils LZMAINFO(1)
-
-
NAME
lzmainfo - show information stored in the .lzma file header
@@ -14,9 +12,9 @@ DESCRIPTION
prints it to standard output in human readable format. If no files are
given or file is -, standard input is read.
- 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 .lzma format variant. The amount of memory re-
+ 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 .lzma format variant. The amount of memory re-
quired to decompress the file is a few dozen kilobytes plus the dictio-
nary size.
@@ -35,6 +33,4 @@ BUGS
SEE ALSO
xz(1)
-
-
Tukaani 2013-06-30 LZMAINFO(1)
diff --git a/doc/man/txt/xz.txt b/doc/man/txt/xz.txt
index 4fec85b..b543312 100644
--- a/doc/man/txt/xz.txt
+++ b/doc/man/txt/xz.txt
@@ -1,7 +1,5 @@
XZ(1) XZ Utils XZ(1)
-
-
NAME
xz, unxz, xzcat, lzma, unlzma, lzcat - Compress or decompress .xz and
.lzma files
@@ -30,36 +28,36 @@ DESCRIPTION
xz compresses or decompresses each file according to the selected oper-
ation mode. If no files are given or file is -, xz reads from standard
input and writes the processed data to standard output. xz will refuse
- (display an error and skip the file) to write compressed data to stan-
- dard output if it is a terminal. Similarly, xz will refuse to read
+ (display an error and skip the file) to write compressed data to stan-
+ dard output if it is a terminal. Similarly, xz will refuse to read
compressed data from standard input if it is a terminal.
- Unless --stdout is specified, files other than - are written to a new
+ Unless --stdout is specified, files other than - are written to a new
file whose name is derived from the source file name:
- o When compressing, the suffix of the target file format (.xz or
- .lzma) is appended to the source filename to get the target file-
+ o When compressing, the suffix of the target file format (.xz or
+ .lzma) is appended to the source filename to get the target file-
name.
- o When decompressing, the .xz, .lzma, or .lz suffix is removed from
- the filename to get the target filename. xz also recognizes the
+ o When decompressing, the .xz, .lzma, or .lz suffix is removed from
+ the filename to get the target filename. xz also recognizes the
suffixes .txz and .tlz, and replaces them with the .tar suffix.
- If the target file already exists, an error is displayed and the file
+ If the target file already exists, an error is displayed and the file
is skipped.
- Unless writing to standard output, xz will display a warning and skip
+ Unless writing to standard output, xz will display a warning and skip
the file if any of the following applies:
- o File is not a regular file. Symbolic links are not followed, and
+ o File is not a regular file. Symbolic links are not followed, and
thus they are not considered to be regular files.
o File has more than one hard link.
o File has setuid, setgid, or sticky bit set.
- o The operation mode is set to compress and the file already has a
- suffix of the target file format (.xz or .txz when compressing to
+ o The operation mode is set to compress and the file already has a
+ suffix of the target file format (.xz or .txz when compressing to
the .xz format, and .lzma or .tlz when compressing to the .lzma for-
mat).
@@ -71,7 +69,7 @@ DESCRIPTION
owner, group, permissions, access time, and modification time from the
source file to the target file. If copying the group fails, the per-
missions are modified so that the target file doesn't become accessible
- to users who didn't have permission to access the source file. xz
+ to users who didn't have permission to access the source file. xz
doesn't support copying other metadata like access control lists or ex-
tended attributes yet.
@@ -85,8 +83,8 @@ DESCRIPTION
cally updating progress indicator.
Memory usage
- The memory usage of xz varies from a few hundred kilobytes to several
- gigabytes depending on the compression settings. The settings used
+ The memory usage of xz varies from a few hundred kilobytes to several
+ gigabytes depending on the compression settings. The settings used
when compressing a file determine the memory requirements of the decom-
pressor. Typically the decompressor needs 5 % to 20 % of the amount of
memory that the compressor needed when creating the file. For example,
@@ -101,7 +99,7 @@ DESCRIPTION
processes, relying on it wasn't deemed to be flexible enough (for exam-
ple, using ulimit(1) to limit virtual memory tends to cripple mmap(2)).
- The memory usage limiter can be enabled with the command line option
+ The memory usage limiter can be enabled with the command line option
--memlimit=limit. Often it is more convenient to enable the limiter by
default by setting the environment variable XZ_DEFAULTS, for example,
XZ_DEFAULTS=--memlimit=150MiB. It is possible to set the limits sepa-
@@ -125,7 +123,7 @@ DESCRIPTION
It is possible to concatenate .xz files as is. xz will decompress such
files as if they were a single .xz file.
- It is possible to insert padding between the concatenated parts or af-
+ It is possible to insert padding between the concatenated parts or af-
ter the last part. The padding must consist of null bytes and the size
of the padding must be a multiple of four bytes. This can be useful,
for example, if the .xz file is stored on a medium that measures file
@@ -153,34 +151,34 @@ OPTIONS
supported by the option.
Operation mode
- If multiple operation mode options are given, the last one takes ef-
+ If multiple operation mode options are given, the last one takes ef-
fect.
-z, --compress
- Compress. This is the default operation mode when no operation
- mode option is specified and no other operation mode is implied
+ Compress. This is the default operation mode when no operation
+ mode option is specified and no other operation mode is implied
from the command name (for example, unxz implies --decompress).
-d, --decompress, --uncompress
Decompress.
-t, --test
- Test the integrity of compressed files. This option is equiva-
- lent to --decompress --stdout except that the decompressed data
- is discarded instead of being written to standard output. No
+ Test the integrity of compressed files. This option is equiva-
+ lent to --decompress --stdout except that the decompressed data
+ is discarded instead of being written to standard output. No
files are created or removed.
-l, --list
- Print information about compressed files. No uncompressed out-
- put is produced, and no files are created or removed. In list
- mode, the program cannot read the compressed data from standard
+ Print information about compressed files. No uncompressed out-
+ put is produced, and no files are created or removed. In list
+ mode, the program cannot read the compressed data from standard
input or from other unseekable sources.
- The default listing shows basic information about files, one
- file per line. To get more detailed information, use also the
- --verbose option. For even more information, use --verbose
- twice, but note that this may be slow, because getting all the
- extra information requires many seeks. The width of verbose
+ The default listing shows basic information about files, one
+ file per line. To get more detailed information, use also the
+ --verbose option. For even more information, use --verbose
+ twice, but note that this may be slow, because getting all the
+ extra information requires many seeks. The width of verbose
output exceeds 80 characters, so piping the output to, for exam-
ple, less -S may be convenient if the terminal isn't wide
enough.
@@ -206,19 +204,19 @@ OPTIONS
o If the target file already exists, delete it before compress-
ing or decompressing.
- o Compress or decompress even if the input is a symbolic link
- to a regular file, has more than one hard link, or has the
- setuid, setgid, or sticky bit set. The setuid, setgid, and
+ o Compress or decompress even if the input is a symbolic link
+ to a regular file, has more than one hard link, or has the
+ setuid, setgid, or sticky bit set. The setuid, setgid, and
sticky bits are not copied to the target file.
- o When used with --decompress --stdout and xz cannot recognize
- the type of the source file, copy the source file as is to
- standard output. This allows xzcat --force to be used like
+ o When used with --decompress --stdout and xz cannot recognize
+ the type of the source file, copy the source file as is to
+ standard output. This allows xzcat --force to be used like
cat(1) for files that have not been compressed with xz. Note
that in future, xz might support new compressed file formats,
- which may make xz decompress more types of files instead of
- copying them as is to standard output. --format=format can
- be used to restrict xz to decompress only a single file for-
+ which may make xz decompress more types of files instead of
+ copying them as is to standard output. --format=format can
+ be used to restrict xz to decompress only a single file for-
mat.
-c, --stdout, --to-stdout
@@ -227,18 +225,18 @@ OPTIONS
--single-stream
Decompress only the first .xz stream, and silently ignore possi-
- ble remaining input data following the stream. Normally such
+ ble remaining input data following the stream. Normally such
trailing garbage makes xz display an error.
- xz never decompresses more than one stream from .lzma files or
- raw streams, but this option still makes xz ignore the possible
+ xz never decompresses more than one stream from .lzma files or
+ raw streams, but this option still makes xz ignore the possible
trailing data after the .lzma file or raw stream.
- This option has no effect if the operation mode is not --decom-
+ This option has no effect if the operation mode is not --decom-
press or --test.
--no-sparse
- Disable creation of sparse files. By default, if decompressing
+ Disable creation of sparse files. By default, if decompressing
into a regular file, xz tries to make the file sparse if the de-
compressed data contains long sequences of binary zeros. It
also works when writing to standard output as long as standard
@@ -249,12 +247,12 @@ OPTIONS
-S .suf, --suffix=.suf
When compressing, use .suf as the suffix for the target file in-
- stead of .xz or .lzma. If not writing to standard output and
- the source file already has the suffix .suf, a warning is dis-
+ stead of .xz or .lzma. If not writing to standard output and
+ the source file already has the suffix .suf, a warning is dis-
played and the file is skipped.
- When decompressing, recognize files with the suffix .suf in ad-
- dition to files with the .xz, .txz, .lzma, .tlz, or .lz suffix.
+ When decompressing, recognize files with the suffix .suf in ad-
+ dition to files with the .xz, .txz, .lzma, .tlz, or .lz suffix.
If the source file has the suffix .suf, the suffix is removed to
get the target filename.
@@ -271,16 +269,16 @@ OPTIONS
fore the filenames read from file.
--files0[=file]
- This is identical to --files[=file] except that each filename
+ This is identical to --files[=file] except that each filename
must be terminated with the null character.
Basic file format and compression options
-F format, --format=format
Specify the file format to compress or decompress:
- auto This is the default. When compressing, auto is equiva-
- lent to xz. When decompressing, the format of the input
- file is automatically detected. Note that raw streams
+ auto This is the default. When compressing, auto is equiva-
+ lent to xz. When decompressing, the format of the input
+ file is automatically detected. Note that raw streams
(created with --format=raw) cannot be auto-detected.
xz Compress to the .xz file format, or accept only .xz files
@@ -297,14 +295,14 @@ OPTIONS
The .lz format version 0 and the unextended version 1 are
supported. Version 0 files were produced by lzip 1.3 and
- older. Such files aren't common but may be found from
- file archives as a few source packages were released in
- this format. People might have old personal files in
- this format too. Decompression support for the format
+ older. Such files aren't common but may be found from
+ file archives as a few source packages were released in
+ this format. People might have old personal files in
+ this format too. Decompression support for the format
version 0 was removed in lzip 1.18.
- lzip 1.4 and later create files in the format version 1.
- The sync flush marker extension to the format version 1
+ lzip 1.4 and later create files in the format version 1.
+ The sync flush marker extension to the format version 1
was added in lzip 1.6. This extension is rarely used and
isn't supported by xz (diagnosed as corrupt input).
@@ -324,22 +322,22 @@ OPTIONS
Supported check types:
- none Don't calculate an integrity check at all. This is usu-
- ally a bad idea. This can be useful when integrity of
+ none Don't calculate an integrity check at all. This is usu-
+ ally a bad idea. This can be useful when integrity of
the data is verified by other means anyway.
- crc32 Calculate CRC32 using the polynomial from IEEE-802.3
+ crc32 Calculate CRC32 using the polynomial from IEEE-802.3
(Ethernet).
crc64 Calculate CRC64 using the polynomial from ECMA-182. This
is the default, since it is slightly better than CRC32 at
- detecting damaged files and the speed difference is neg-
+ detecting damaged files and the speed difference is neg-
ligible.
- sha256 Calculate SHA-256. This is somewhat slower than CRC32
+ sha256 Calculate SHA-256. This is somewhat slower than CRC32
and CRC64.
- Integrity of the .xz headers is always verified with CRC32. It
+ Integrity of the .xz headers is always verified with CRC32. It
is not possible to change or disable it.
--ignore-check
@@ -352,7 +350,7 @@ OPTIONS
o Trying to recover data from a corrupt .xz file.
- o Speeding up decompression. This matters mostly with SHA-256
+ o Speeding up decompression. This matters mostly with SHA-256
or with files that have compressed extremely well. It's rec-
ommended to not use this option for this purpose unless the
file integrity is verified externally in some other way.
@@ -383,13 +381,13 @@ OPTIONS
memory usage reasonable even for old systems. -6 is the
default, which is usually a good choice for distributing
files that need to be decompressible even on systems with
- only 16 MiB RAM. (-5e or -6e may be worth considering
+ only 16 MiB RAM. (-5e or -6e may be worth considering
too. See --extreme.)
-7 ... -9
- These are like -6 but with higher compressor and decom-
- pressor memory requirements. These are useful only when
- compressing files bigger than 8 MiB, 16 MiB, and 32 MiB,
+ These are like -6 but with higher compressor and decom-
+ pressor memory requirements. These are useful only when
+ compressing files bigger than 8 MiB, 16 MiB, and 32 MiB,
respectively.
On the same hardware, the decompression speed is approximately a
@@ -415,40 +413,44 @@ OPTIONS
Column descriptions:
o DictSize is the LZMA2 dictionary size. It is waste of memory
- to use a dictionary bigger than the size of the uncompressed
- file. This is why it is good to avoid using the presets -7
- ... -9 when there's no real need for them. At -6 and lower,
+ to use a dictionary bigger than the size of the uncompressed
+ file. This is why it is good to avoid using the presets -7
+ ... -9 when there's no real need for them. At -6 and lower,
the amount of memory wasted is usually low enough to not mat-
ter.
o CompCPU is a simplified representation of the LZMA2 settings
that affect compression speed. The dictionary size affects
speed too, so while CompCPU is the same for levels -6 ... -9,
- higher levels still tend to be a little slower. To get even
+ higher levels still tend to be a little slower. To get even
slower and thus possibly better compression, see --extreme.
- o CompMem contains the compressor memory requirements in the
- single-threaded mode. It may vary slightly between xz ver-
- sions. Memory requirements of some of the future multi-
- threaded modes may be dramatically higher than that of the
- single-threaded mode.
+ o CompMem contains the compressor memory requirements in the
+ single-threaded mode. It may vary slightly between xz ver-
+ sions.
- o DecMem contains the decompressor memory requirements. That
- is, the compression settings determine the memory require-
+ o DecMem contains the decompressor memory requirements. That
+ is, the compression settings determine the memory require-
ments of the decompressor. The exact decompressor memory us-
age is slightly more than the LZMA2 dictionary size, but the
values in the table have been rounded up to the next full
MiB.
+ Memory requirements of the multi-threaded mode are significantly
+ higher than that of the single-threaded mode. With the default
+ value of --block-size, each thread needs 3*3*DictSize plus Comp-
+ Mem or DecMem. For example, four threads with preset -6 needs
+ 660-670 MiB of memory.
+
-e, --extreme
Use a slower variant of the selected compression preset level
(-0 ... -9) to hopefully get a little bit better compression ra-
- tio, but with bad luck this can also make it worse. Decompres-
- sor memory usage is not affected, but compressor memory usage
+ tio, but with bad luck this can also make it worse. Decompres-
+ sor memory usage is not affected, but compressor memory usage
increases a little at preset levels -0 ... -3.
- Since there are two presets with dictionary sizes 4 MiB and
- 8 MiB, the presets -3e and -5e use slightly faster settings
+ Since there are two presets with dictionary sizes 4 MiB and
+ 8 MiB, the presets -3e and -5e use slightly faster settings
(lower CompCPU) than -4e and -6e, respectively. That way no two
presets are identical.
@@ -487,50 +489,76 @@ OPTIONS
whichever is more. Typically a good value is 2-4 times the size
of the LZMA2 dictionary or at least 1 MiB. Using size less than
the LZMA2 dictionary size is waste of RAM because then the LZMA2
- dictionary buffer will never get fully used. The sizes of the
- blocks are stored in the block headers, which a future version
- of xz will use for multi-threaded decompression.
+ dictionary buffer will never get fully used. In multi-threaded
+ mode, the sizes of the blocks are stored in the block headers.
+ This size information is required for multi-threaded decompres-
+ sion.
In single-threaded mode no block splitting is done by default.
Setting this option doesn't affect memory usage. No size infor-
mation is stored in block headers, thus files created in single-
threaded mode won't be identical to files created in multi-
- threaded mode. The lack of size information also means that a
- future version of xz won't be able decompress the files in
- multi-threaded mode.
+ threaded mode. The lack of size information also means that xz
+ won't be able decompress the files in multi-threaded mode.
+
+ --block-list=items
+ When compressing to the .xz format, start a new block with an
+ optional custom filter chain after the given intervals of uncom-
+ pressed data.
+
+ The items are a comma-separated list. Each item consists of an
+ optional filter chain number between 0 and 9 followed by a colon
+ (:) and a required size of uncompressed data. Omitting an item
+ (two or more consecutive commas) is a shorthand to use the size
+ and filters of the previous item.
+
+ If the input file is bigger than the sum of the sizes in items,
+ the last item is repeated until the end of the file. A special
+ value of 0 may be used as the last size to indicate that the
+ rest of the file should be encoded as a single block.
- --block-list=sizes
- When compressing to the .xz format, start a new block after the
- given intervals of uncompressed data.
+ An alternative filter chain for each block can be specified in
+ combination with the --filters1=filters ... --filters9=filters
+ options. These options define filter chains with an identifier
+ between 1-9. Filter chain 0 can be used to refer to the default
+ filter chain, which is the same as not specifying a filter
+ chain. The filter chain identifier can be used before the un-
+ compressed size, followed by a colon (:). For example, if one
+ specifies --block-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB then
+ blocks will be created using:
- The uncompressed sizes of the blocks are specified as a comma-
- separated list. Omitting a size (two or more consecutive com-
- mas) is a shorthand to use the size of the previous block.
+ o The filter chain specified by --filters1 and 2 MiB input
- If the input file is bigger than the sum of sizes, the last
- value in sizes is repeated until the end of the file. A special
- value of 0 may be used as the last value to indicate that the
- rest of the file should be encoded as a single block.
+ o The filter chain specified by --filters3 and 2 MiB input
+
+ o The filter chain specified by --filters2 and 4 MiB input
+
+ o The filter chain specified by --filters2 and 4 MiB input
- If one specifies sizes that exceed the encoder's block size (ei-
- ther the default value in threaded mode or the value specified
- with --block-size=size), the encoder will create additional
- blocks while keeping the boundaries specified in sizes. For ex-
+ o The default filter chain and 2 MiB input
+
+ o The default filter chain and 4 MiB input for every block un-
+ til end of input.
+
+ If one specifies a size that exceeds the encoder's block size
+ (either the default value in threaded mode or the value speci-
+ fied with --block-size=size), the encoder will create additional
+ blocks while keeping the boundaries specified in items. For ex-
ample, if one specifies --block-size=10MiB
--block-list=5MiB,10MiB,8MiB,12MiB,24MiB and the input file is
80 MiB, one will get 11 blocks: 5, 10, 8, 10, 2, 10, 10, 4, 10,
10, and 1 MiB.
In multi-threaded mode the sizes of the blocks are stored in the
- block headers. This isn't done in single-threaded mode, so the
- encoded output won't be identical to that of the multi-threaded
+ block headers. This isn't done in single-threaded mode, so the
+ encoded output won't be identical to that of the multi-threaded
mode.
--flush-timeout=timeout
- When compressing, if more than timeout milliseconds (a positive
- integer) has passed since the previous flush and reading more
- input would block, all the pending input data is flushed from
- the encoder and made available in the output stream. This can
+ When compressing, if more than timeout milliseconds (a positive
+ integer) has passed since the previous flush and reading more
+ input would block, all the pending input data is flushed from
+ the encoder and made available in the output stream. This can
be useful if xz is used to compress data that is streamed over a
network. Small timeout values make the data available at the
receiving end with a small delay, but large timeout values give
@@ -556,24 +584,24 @@ OPTIONS
ceeded and display a notice that automatic adjustment was done.
The adjustments are done in this order: reducing the number of
threads, switching to single-threaded mode if even one thread in
- multi-threaded mode exceeds the limit, and finally reducing the
+ multi-threaded mode exceeds the limit, and finally reducing the
LZMA2 dictionary size.
- When compressing with --format=raw or if --no-adjust has been
- specified, only the number of threads may be reduced since it
+ When compressing with --format=raw or if --no-adjust has been
+ specified, only the number of threads may be reduced since it
can be done without affecting the compressed output.
- If the limit cannot be met even with the adjustments described
- above, an error is displayed and xz will exit with exit status
+ If the limit cannot be met even with the adjustments described
+ above, an error is displayed and xz will exit with exit status
1.
The limit can be specified in multiple ways:
- o The limit can be an absolute value in bytes. Using an inte-
- ger suffix like MiB can be useful. Example: --memlimit-com-
+ o The limit can be an absolute value in bytes. Using an inte-
+ ger suffix like MiB can be useful. Example: --memlimit-com-
press=80MiB
- o The limit can be specified as a percentage of total physical
+ o The limit can be specified as a percentage of total physical
memory (RAM). This can be useful especially when setting the
XZ_DEFAULTS environment variable in a shell initialization
script that is shared between different computers. That way
@@ -588,17 +616,17 @@ OPTIONS
over 4020 MiB, the limit is set to 4020 MiB. On MIPS32 2000 MiB
is used instead. (The values 0 and max aren't affected by this.
A similar feature doesn't exist for decompression.) This can be
- helpful when a 32-bit executable has access to 4 GiB address
- space (2 GiB on MIPS32) while hopefully doing no harm in other
+ helpful when a 32-bit executable has access to 4 GiB address
+ space (2 GiB on MIPS32) while hopefully doing no harm in other
situations.
See also the section Memory usage.
--memlimit-decompress=limit
- Set a memory usage limit for decompression. This also affects
- the --list mode. If the operation is not possible without ex-
- ceeding the limit, xz will display an error and decompressing
- the file will fail. See --memlimit-compress=limit for possible
+ Set a memory usage limit for decompression. This also affects
+ the --list mode. If the operation is not possible without ex-
+ ceeding the limit, xz will display an error and decompressing
+ the file will fail. See --memlimit-compress=limit for possible
ways to specify the limit.
--memlimit-mt-decompress=limit
@@ -608,20 +636,20 @@ OPTIONS
multi-threading, the limit is ignored and xz will continue in
single-threaded mode. Note that if also --memlimit-decompress
is used, it will always apply to both single-threaded and multi-
- threaded modes, and so the effective limit for multi-threading
- will never be higher than the limit set with --memlimit-decom-
+ threaded modes, and so the effective limit for multi-threading
+ will never be higher than the limit set with --memlimit-decom-
press.
- In contrast to the other memory usage limit options, --mem-
- limit-mt-decompress=limit has a system-specific default limit.
+ In contrast to the other memory usage limit options, --mem-
+ limit-mt-decompress=limit has a system-specific default limit.
xz --info-memory can be used to see the current value.
- This option and its default value exist because without any
- limit the threaded decompressor could end up allocating an in-
- sane amount of memory with some input files. If the default
+ This option and its default value exist because without any
+ limit the threaded decompressor could end up allocating an in-
+ sane amount of memory with some input files. If the default
limit is too low on your system, feel free to increase the limit
but never set it to a value larger than the amount of usable RAM
- as with appropriate input files xz will attempt to use that
+ as with appropriate input files xz will attempt to use that
amount of memory even with a low number of threads. Running out
of memory or swapping will not improve decompression perfor-
mance.
@@ -648,18 +676,18 @@ OPTIONS
-T threads, --threads=threads
Specify the number of worker threads to use. Setting threads to
- a special value 0 makes xz use up to as many threads as the pro-
- cessor(s) on the system support. The actual number of threads
- can be fewer than threads if the input file is not big enough
- for threading with the given settings or if using more threads
- would exceed the memory usage limit.
+ a special value 0 makes xz use up to as many threads as the
+ processor(s) on the system support. The actual number of
+ threads can be fewer than threads if the input file is not big
+ enough for threading with the given settings or if using more
+ threads would exceed the memory usage limit.
The single-threaded and multi-threaded compressors produce dif-
ferent output. Single-threaded compressor will give the small-
est file size but only the output from the multi-threaded com-
pressor can be decompressed using multiple threads. Setting
threads to 1 will use the single-threaded mode. Setting threads
- to any other value, including 0, will use the multi-threaded
+ to any other value, including 0, will use the multi-threaded
compressor even if the system supports only one hardware thread.
(xz 5.2.x used single-threaded mode in this situation.)
@@ -670,9 +698,9 @@ OPTIONS
added in xz 5.4.0.
If an automatic number of threads has been requested and no mem-
- ory usage limit has been specified, then a system-specific de-
- fault soft limit will be used to possibly limit the number of
- threads. It is a soft limit in sense that it is ignored if the
+ ory usage limit has been specified, then a system-specific de-
+ fault soft limit will be used to possibly limit the number of
+ threads. It is a soft limit in sense that it is ignored if the
number of threads becomes one, thus a soft limit will never stop
xz from compressing or decompressing. This default soft limit
will not make xz switch from multi-threaded mode to single-
@@ -681,7 +709,7 @@ OPTIONS
Currently the only threading method is to split the input into
blocks and compress them independently from each other. The de-
- fault block size depends on the compression level and can be
+ fault block size depends on the compression level and can be
overridden with the --block-size=size option.
Threaded decompression only works on files that contain multiple
@@ -690,6 +718,9 @@ OPTIONS
files compressed in single-threaded mode don't even if
--block-size=size has been used.
+ The default value for threads is 0. In xz 5.4.x and older the
+ default is 1.
+
Custom compressor filter chains
A custom filter chain allows specifying the compression settings in de-
tail instead of relying on the settings associated to the presets.
@@ -701,9 +732,9 @@ OPTIONS
A filter chain is comparable to piping on the command line. When com-
pressing, 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 fil-
+ 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 fil-
ters.
Many filters have limitations on where they can be in the filter chain:
@@ -712,20 +743,49 @@ OPTIONS
pending on the filter, this limitation is either inherent to the filter
design or exists to prevent security issues.
- 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 (--for-
- mat=raw), the filter chain is specified in the same order as it was
- specified when compressing.
-
- Filters take filter-specific options as a comma-separated list. Extra
- commas in options are ignored. Every option has a default value, so
- you need to specify only those you want to change.
+ A custom filter chain can be specified in two different ways. The op-
+ tions --filters=filters and --filters1=filters ... --filters9=filters
+ allow specifying an entire filter chain in one option using the liblzma
+ filter string syntax. Alternatively, a filter chain can be specified
+ by using one or more individual filter options in the order they are
+ wanted in the filter chain. That is, the order of the individual fil-
+ ter options is significant! When decoding raw streams (--format=raw),
+ the filter chain must be specified in the same order as it was speci-
+ fied when compressing. Any individual filter or preset options speci-
+ fied before the full chain option (--filters=filters) will be forgot-
+ ten. Individual filters specified after the full chain option will re-
+ set the filter chain.
+
+ Both the full and individual filter options take filter-specific op-
+ tions as a comma-separated list. Extra commas in options are ignored.
+ Every option has a default value, so specify those you want to change.
To see the whole filter chain and options, use xz -vv (that is, use
--verbose twice). This works also for viewing the filter chain options
used by presets.
+ --filters=filters
+ Specify the full filter chain or a preset in a single option.
+ Each filter can be separated by spaces or two dashes (--). fil-
+ ters may need to be quoted on the shell command line so it is
+ parsed as a single option. To denote options, use : or =. A
+ preset can be prefixed with a - and followed with zero or more
+ flags. The only supported flag is e to apply the same options
+ as --extreme.
+
+ --filters1=filters ... --filters9=filters
+ Specify up to nine additional filter chains that can be used
+ with --block-list.
+
+ For example, when compressing an archive with executable files
+ followed by text files, the executable part could use a filter
+ chain with a BCJ filter and the text part only the LZMA2 filter.
+
+ --filters-help
+ Display a help message describing how to specify presets and
+ custom filter chains in the --filters and --filters1=filters ...
+ --filters9=filters options, and exit successfully.
+
--lzma1[=options]
--lzma2[=options]
Add LZMA1 or LZMA2 filter to the filter chain. These filters
@@ -751,9 +811,9 @@ OPTIONS
dict=size
Dictionary (history buffer) size indicates how many bytes
- of the recently processed uncompressed data is kept in
- memory. The algorithm tries to find repeating byte se-
- quences (matches) in the uncompressed data, and replace
+ of the recently processed uncompressed data is kept in
+ memory. The algorithm tries to find repeating byte se-
+ quences (matches) in the uncompressed data, and replace
them with references to the data currently in the dictio-
nary. The bigger the dictionary, the higher is the
chance to find a match. Thus, increasing dictionary size
@@ -763,16 +823,16 @@ OPTIONS
Typical dictionary size is from 64 KiB to 64 MiB. The
minimum is 4 KiB. The maximum for compression is cur-
rently 1.5 GiB (1536 MiB). The decompressor already sup-
- ports dictionaries up to one byte less than 4 GiB, which
+ ports dictionaries up to one byte less than 4 GiB, which
is the maximum for the LZMA1 and LZMA2 stream formats.
- Dictionary size and match finder (mf) together determine
+ Dictionary size and match finder (mf) together determine
the memory usage of the LZMA1 or LZMA2 encoder. The same
(or bigger) dictionary 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 .xz headers store the dictionary
- size either as 2^n or 2^n + 2^(n-1), so these sizes are
+ that was used when compressing, thus the memory usage of
+ the decoder is determined by the dictionary size used
+ when compressing. The .xz headers store the dictionary
+ size either as 2^n or 2^n + 2^(n-1), so these sizes are
somewhat preferred for compression. Other sizes will get
rounded up when stored in the .xz headers.
@@ -791,7 +851,7 @@ OPTIONS
ter, and a lower-case letter is usually followed by an-
other lower-case letter. In the US-ASCII character set,
the highest three bits are 010 for upper-case letters and
- 011 for lower-case letters. When lc is at least 3, the
+ 011 for lower-case letters. When lc is at least 3, the
literal coding can take advantage of this property in the
uncompressed data.
@@ -807,11 +867,11 @@ OPTIONS
data is assumed when encoding literals. See pb below for
more information about alignment.
- pb=pb Specify the number of position bits. The minimum is 0
+ pb=pb Specify the number of position bits. The minimum is 0
and the maximum is 4; the default is 2.
- Pb affects what kind of alignment in the uncompressed
- data is assumed in general. The default means four-byte
+ Pb affects what kind of alignment in the uncompressed
+ data is assumed in general. The default means four-byte
alignment (2^pb=2^2=4), which is often a good choice when
there's no better guess.
@@ -820,7 +880,7 @@ OPTIONS
files having one-byte alignment (US-ASCII, ISO-8859-*,
UTF-8), setting pb=0 can improve compression slightly.
For UTF-16 text, pb=1 is a good choice. If the alignment
- is an odd number like 3 bytes, pb=0 might be the best
+ is an odd number like 3 bytes, pb=0 might be the best
choice.
Even though the assumed alignment can be adjusted with pb
@@ -869,7 +929,7 @@ OPTIONS
mode=mode
Compression mode specifies the method to analyze the data
- produced by the match finder. Supported modes are fast
+ produced by the match finder. Supported modes are fast
and normal. The default is fast for presets 0-3 and nor-
mal for presets 4-9.
@@ -878,17 +938,17 @@ OPTIONS
the presets do.
nice=nice
- Specify what is considered to be a nice length for a
+ Specify what is considered to be a nice length for a
match. Once a match of at least nice bytes is found, the
algorithm stops looking for possibly better matches.
Nice can be 2-273 bytes. Higher values tend to give bet-
- ter compression ratio at the expense of speed. The de-
+ ter compression ratio at the expense of speed. The de-
fault depends on the preset.
depth=depth
- Specify the maximum search depth in the match finder.
- The default is the special value of 0, which makes the
+ Specify the maximum search depth in the match finder.
+ The default is the special value of 0, which makes the
compressor determine a reasonable depth from mf and nice.
Reasonable depth for Hash Chains is 4-100 and 16-1000 for
@@ -908,6 +968,7 @@ OPTIONS
--powerpc[=options]
--ia64[=options]
--sparc[=options]
+ --riscv[=options]
Add a branch/call/jump (BCJ) filter to the filter chain. These
filters can be used only as a non-last filter in the filter
chain.
@@ -916,9 +977,9 @@ OPTIONS
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 .xz file. The BCJ filters are always re-
- versible, so using a BCJ filter for wrong type of data doesn't
- cause any data loss, although it may make the compression ratio
- slightly worse. The BCJ filters are very fast and use an in-
+ versible, so using a BCJ filter for wrong type of data doesn't
+ cause any data loss, although it may make the compression ratio
+ slightly worse. The BCJ filters are very fast and use an in-
significant amount of memory.
These BCJ filters have known problems related to the compression
@@ -931,16 +992,16 @@ OPTIONS
sion, which will make the compression worse with these files.
o If a BCJ filter is applied on an archive, it is possible that
- it makes the compression ratio worse than not using a BCJ
- filter. For example, if there are similar or even identical
- executables then filtering will likely make the files less
- similar and thus compression is worse. The contents of non-
- executable files in the same archive can matter too. In
- practice one has to try with and without a BCJ filter to see
+ it makes the compression ratio worse than not using a BCJ
+ filter. For example, if there are similar or even identical
+ executables then filtering will likely make the files less
+ similar and thus compression is worse. The contents of non-
+ executable files in the same archive can matter too. In
+ practice one has to try with and without a BCJ filter to see
which is better in each situation.
- Different instruction sets have different alignment: the exe-
- cutable file must be aligned to a multiple of this value in the
+ Different instruction sets have different alignment: the exe-
+ cutable file must be aligned to a multiple of this value in the
input data to make the filter work.
Filter Alignment Notes
@@ -951,14 +1012,29 @@ OPTIONS
PowerPC 4 Big endian only
IA-64 16 Itanium
SPARC 4
+ RISC-V 2
- Since the BCJ-filtered data is usually compressed with LZMA2,
- the compression ratio may be improved slightly if the LZMA2 op-
+ Since the BCJ-filtered data is usually compressed with LZMA2,
+ the compression ratio may be improved slightly if the LZMA2 op-
tions are set to match the alignment of the selected BCJ filter.
- For example, with the IA-64 filter, it's good to set pb=4 or
- even pb=4,lp=4,lc=0 with LZMA2 (2^4=16). The x86 filter is an
- exception; it's usually good to stick to LZMA2's default four-
- byte alignment when compressing x86 executables.
+ Examples:
+
+ o IA-64 filter has 16-byte alignment so pb=4,lp=4,lc=0 is good
+ with LZMA2 (2^4=16).
+
+ o RISC-V code has 2-byte or 4-byte alignment depending on
+ whether the file contains 16-bit compressed instructions (the
+ C extension). When 16-bit instructions are used,
+ pb=2,lp=1,lc=3 or pb=1,lp=1,lc=3 is good. When 16-bit in-
+ structions aren't present, pb=2,lp=2,lc=2 is the best. read-
+ elf -h can be used to check if "RVC" appears on the "Flags"
+ line.
+
+ o ARM64 is always 4-byte aligned so pb=2,lp=2,lc=2 is the best.
+
+ o The x86 filter is an exception. It's usually good to stick
+ to LZMA2's defaults (pb=2,lp=0,lc=3) when compressing x86 ex-
+ ecutables.
All BCJ filters support the same options:
@@ -966,7 +1042,7 @@ OPTIONS
Specify the start offset that is used when converting be-
tween relative and absolute addresses. The offset must
be a multiple of the alignment of the filter (see the ta-
- ble above). The default is zero. In practice, the de-
+ ble above). The default is zero. In practice, the de-
fault is good; specifying a custom offset is almost never
useful.
@@ -978,13 +1054,13 @@ OPTIONS
It can be useful when compressing, for example, uncompressed
bitmap images or uncompressed PCM audio. However, special pur-
pose algorithms may give significantly better results than Delta
- + LZMA2. This is true especially with audio, which compresses
+ + LZMA2. This is true especially with audio, which compresses
faster and better, for example, with flac(1).
Supported options:
dist=distance
- Specify the distance of the delta calculation in bytes.
+ Specify the distance of the delta calculation in bytes.
distance must be 1-256. The default is 1.
For example, with dist=2 and eight-byte input A1 B1 A2 B3
@@ -994,23 +1070,23 @@ OPTIONS
-q, --quiet
Suppress warnings and notices. Specify this twice to suppress
errors too. This option has no effect on the exit status. That
- is, even if a warning was suppressed, the exit status to indi-
+ is, even if a warning was suppressed, the exit status to indi-
cate a warning is still used.
-v, --verbose
- Be verbose. If standard error is connected to a terminal, xz
- will display a progress indicator. Specifying --verbose twice
+ Be verbose. If standard error is connected to a terminal, xz
+ will display a progress indicator. Specifying --verbose twice
will give even more verbose output.
The progress indicator shows the following information:
- o Completion percentage is shown if the size of the input file
+ o Completion percentage is shown if the size of the input file
is known. That is, the percentage cannot be shown in pipes.
- o Amount of compressed data produced (compressing) or consumed
+ o Amount of compressed data produced (compressing) or consumed
(decompressing).
- o Amount of uncompressed data consumed (compressing) or pro-
+ o Amount of uncompressed data consumed (compressing) or pro-
duced (decompressing).
o Compression ratio, which is calculated by dividing the amount
@@ -1032,12 +1108,12 @@ OPTIONS
When standard error is not a terminal, --verbose will make xz
print the filename, compressed size, uncompressed size, compres-
- sion ratio, and possibly also the speed and elapsed time on a
+ sion ratio, and possibly also the speed and elapsed time on a
single line to standard error after compressing or decompressing
the file. The speed and elapsed time are included only when the
- operation took at least a few seconds. If the operation didn't
- finish, for example, due to user interruption, also the comple-
- tion percentage is printed if the size of the input file is
+ operation took at least a few seconds. If the operation didn't
+ finish, for example, due to user interruption, also the comple-
+ tion percentage is printed if the size of the input file is
known.
-Q, --no-warn
@@ -1075,63 +1151,9 @@ OPTIONS
ROBOT MODE
The robot mode is activated with the --robot option. It makes the out-
put of xz easier to parse by other programs. Currently --robot is sup-
- ported only together with --version, --info-memory, and --list. It
- will be supported for compression and decompression in the future.
-
- Version
- xz --robot --version prints the version number of xz and liblzma in the
- following format:
-
- XZ_VERSION=XYYYZZZS
- LIBLZMA_VERSION=XYYYZZZS
-
- X Major version.
-
- YYY Minor version. Even numbers are stable. Odd numbers are alpha
- or beta versions.
-
- ZZZ Patch level for stable releases or just a counter for develop-
- ment releases.
-
- S Stability. 0 is alpha, 1 is beta, and 2 is stable. S should be
- always 2 when YYY is even.
-
- XYYYZZZS are the same on both lines if xz and liblzma are from the same
- XZ Utils release.
-
- Examples: 4.999.9beta is 49990091 and 5.0.0 is 50000002.
-
- Memory limit information
- xz --robot --info-memory prints a single line with multiple tab-sepa-
- rated columns:
-
- 1. Total amount of physical memory (RAM) in bytes.
-
- 2. Memory usage limit for compression in bytes (--memlimit-compress).
- A special value of 0 indicates the default setting which for sin-
- gle-threaded mode is the same as no limit.
-
- 3. Memory usage limit for decompression in bytes (--memlimit-decom-
- press). A special value of 0 indicates the default setting which
- for single-threaded mode is the same as no limit.
-
- 4. Since xz 5.3.4alpha: Memory usage for multi-threaded decompression
- in bytes (--memlimit-mt-decompress). This is never zero because a
- system-specific default value shown in the column 5 is used if no
- limit has been specified explicitly. This is also never greater
- than the value in the column 3 even if a larger value has been
- specified with --memlimit-mt-decompress.
-
- 5. Since xz 5.3.4alpha: A system-specific default memory usage limit
- that is used to limit the number of threads when compressing with
- an automatic number of threads (--threads=0) and no memory usage
- limit has been specified (--memlimit-compress). This is also used
- as the default value for --memlimit-mt-decompress.
-
- 6. Since xz 5.3.4alpha: Number of available processor threads.
-
- In the future, the output of xz --robot --info-memory may have more
- columns, but never more than a single line.
+ ported only together with --list, --filters-help, --info-memory, and
+ --version. It will be supported for compression and decompression in
+ the future.
List mode
xz --robot --list uses tab-separated output. The first column of every
@@ -1155,10 +1177,10 @@ ROBOT MODE
summary
This line type is used only when --verbose was specified twice.
This line is printed after all block lines. Like the file line,
- the summary line contains overall information about the .xz
+ the summary line contains overall information about the .xz
file.
- totals This line is always the very last line of the list output. It
+ totals This line is always the very last line of the list output. It
shows the total counts and sizes.
The columns of the file lines:
@@ -1166,10 +1188,10 @@ ROBOT MODE
3. Total number of blocks in the stream(s)
4. Compressed size of the file
5. Uncompressed size of the file
- 6. Compression ratio, for example, 0.123. If ratio is over
- 9.999, three dashes (---) are displayed instead of the ra-
+ 6. Compression ratio, for example, 0.123. If ratio is over
+ 9.999, three dashes (---) are displayed instead of the ra-
tio.
- 7. Comma-separated list of integrity check names. The follow-
+ 7. Comma-separated list of integrity check names. The follow-
ing strings are used for the known check types: None, CRC32,
CRC64, and SHA-256. For unknown check types, Unknown-N is
used, where N is the Check ID as a decimal number (one or
@@ -1240,24 +1262,94 @@ ROBOT MODE
9. Number of files. This is here to keep the order of the ear-
lier columns the same as on file lines.
- If --verbose was specified twice, additional columns are included on
+ If --verbose was specified twice, additional columns are included on
the totals line:
- 10. Maximum amount of memory (in bytes) required to decompress
+ 10. Maximum amount of memory (in bytes) required to decompress
the files with this xz version
- 11. yes or no indicating if all block headers have both com-
+ 11. yes or no indicating if all block headers have both com-
pressed size and uncompressed size stored in them
Since xz 5.1.2alpha:
12. Minimum xz version required to decompress the file
- Future versions may add new line types and new columns can be added to
+ 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.
+ Filters help
+ xz --robot --filters-help prints the supported filters in the following
+ format:
+
+ filter:option=<value>,option=<value>...
+
+ filter Name of the filter
+
+ option Name of a filter specific option
+
+ value Numeric value ranges appear as <min-max>. String value choices
+ are shown within < > and separated by a | character.
+
+ Each filter is printed on its own line.
+
+ Memory limit information
+ xz --robot --info-memory prints a single line with multiple tab-sepa-
+ rated columns:
+
+ 1. Total amount of physical memory (RAM) in bytes.
+
+ 2. Memory usage limit for compression in bytes (--memlimit-compress).
+ A special value of 0 indicates the default setting which for sin-
+ gle-threaded mode is the same as no limit.
+
+ 3. Memory usage limit for decompression in bytes (--memlimit-decom-
+ press). A special value of 0 indicates the default setting which
+ for single-threaded mode is the same as no limit.
+
+ 4. Since xz 5.3.4alpha: Memory usage for multi-threaded decompression
+ in bytes (--memlimit-mt-decompress). This is never zero because a
+ system-specific default value shown in the column 5 is used if no
+ limit has been specified explicitly. This is also never greater
+ than the value in the column 3 even if a larger value has been
+ specified with --memlimit-mt-decompress.
+
+ 5. Since xz 5.3.4alpha: A system-specific default memory usage limit
+ that is used to limit the number of threads when compressing with
+ an automatic number of threads (--threads=0) and no memory usage
+ limit has been specified (--memlimit-compress). This is also used
+ as the default value for --memlimit-mt-decompress.
+
+ 6. Since xz 5.3.4alpha: Number of available processor threads.
+
+ In the future, the output of xz --robot --info-memory may have more
+ columns, but never more than a single line.
+
+ Version
+ xz --robot --version prints the version number of xz and liblzma in the
+ following format:
+
+ XZ_VERSION=XYYYZZZS
+ LIBLZMA_VERSION=XYYYZZZS
+
+ X Major version.
+
+ YYY Minor version. Even numbers are stable. Odd numbers are alpha
+ or beta versions.
+
+ ZZZ Patch level for stable releases or just a counter for develop-
+ ment releases.
+
+ S Stability. 0 is alpha, 1 is beta, and 2 is stable. S should be
+ always 2 when YYY is even.
+
+ XYYYZZZS are the same on both lines if xz and liblzma are from the same
+ XZ Utils release.
+
+ Examples: 4.999.9beta is 49990091 and 5.0.0 is 50000002.
+
EXIT STATUS
0 All is good.
1 An error occurred.
- 2 Something worth a warning occurred, but no actual errors oc-
+ 2 Something worth a warning occurred, but no actual errors oc-
curred.
Notices (not warnings or errors) printed on standard error don't affect
@@ -1266,16 +1358,16 @@ EXIT STATUS
ENVIRONMENT
xz parses space-separated lists of options from the environment vari-
ables XZ_DEFAULTS and XZ_OPT, in this order, before parsing the options
- from the command line. Note that only options are parsed from the en-
- vironment variables; all non-options are silently ignored. Parsing is
- done with getopt_long(3) which is used also for the command line argu-
+ from the command line. Note that only options are parsed from the en-
+ vironment variables; all non-options are silently ignored. Parsing is
+ done with getopt_long(3) which is used also for the command line argu-
ments.
XZ_DEFAULTS
User-specific or system-wide default options. Typically this is
set in a shell initialization script to enable xz's memory usage
- limiter by default. Excluding shell initialization scripts and
- similar special cases, scripts must never set or unset XZ_DE-
+ limiter by default. Excluding shell initialization scripts and
+ similar special cases, scripts must never set or unset XZ_DE-
FAULTS.
XZ_OPT This is for passing options to xz when it is not possible to set
@@ -1293,16 +1385,16 @@ ENVIRONMENT
export XZ_OPT
LZMA UTILS COMPATIBILITY
- The command line syntax of xz is practically a superset of lzma, un-
- lzma, and 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
+ The command line syntax of xz is practically a superset of lzma, un-
+ lzma, and 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.
Compression preset levels
- The numbering of the compression level presets is not identical in xz
- and LZMA Utils. The most important difference is how dictionary sizes
- are mapped to different presets. Dictionary size is roughly equal to
+ The numbering of the compression level presets is not identical in 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.
Level xz LZMA Utils
@@ -1341,15 +1433,15 @@ LZMA UTILS COMPATIBILITY
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
+ this method when uncompressed size isn't known, which is the case, for
example, in pipes.
- xz supports decompressing .lzma files with or without end-of-payload
- marker, but all .lzma files created by xz will use end-of-payload
- marker and have uncompressed size marked as unknown in the .lzma
- header. This may be a problem in some uncommon situations. For exam-
- ple, a .lzma decompressor in an embedded device might work only with
- files that have known uncompressed size. If you hit this problem, you
+ xz supports decompressing .lzma files with or without end-of-payload
+ marker, but all .lzma files created by xz will use end-of-payload
+ marker and have uncompressed size marked as unknown in the .lzma
+ header. This may be a problem in some uncommon situations. For exam-
+ ple, a .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 .lzma files with known un-
compressed size.
@@ -1360,13 +1452,13 @@ LZMA UTILS COMPATIBILITY
with xz and with LZMA SDK.
The implementation of the LZMA1 filter in liblzma requires that the sum
- of lc and lp must not exceed 4. Thus, .lzma files, which exceed this
+ of lc and lp must not exceed 4. Thus, .lzma files, which exceed this
limitation, cannot be decompressed with xz.
LZMA Utils creates only .lzma files which have a dictionary size of 2^n
(a power of 2) but accepts files with any dictionary size. liblzma ac-
- cepts only .lzma files which have a dictionary size of 2^n or 2^n +
- 2^(n-1). This is to decrease false positives when detecting .lzma
+ cepts only .lzma files which have a dictionary size of 2^n or 2^n +
+ 2^(n-1). This is to decrease false positives when detecting .lzma
files.
These limitations shouldn't be a problem in practice, since practically
@@ -1385,11 +1477,11 @@ LZMA UTILS COMPATIBILITY
NOTES
Compressed output may vary
- The exact compressed output produced from the same uncompressed input
+ 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 bet-
- ter compression) without affecting the file format. The output can
- vary even between different builds of the same XZ Utils version, if
+ ter 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.
The above means that once --rsyncable has been implemented, the result-
@@ -1401,30 +1493,30 @@ NOTES
Embedded .xz decompressors
Embedded .xz decompressor implementations like XZ Embedded don't neces-
sarily support files created with integrity check types other than none
- and crc32. Since the default is --check=crc64, you must use
+ and crc32. Since the default is --check=crc64, you must use
--check=none or --check=crc32 when creating files for embedded systems.
- Outside embedded systems, all .xz format decompressors support all the
- check types, or at least are able to decompress the file without veri-
+ Outside embedded systems, all .xz format decompressors support all the
+ check types, or at least are able to decompress the file without veri-
fying the integrity check if the particular check is not supported.
- XZ Embedded supports BCJ filters, but only with the default start off-
+ XZ Embedded supports BCJ filters, but only with the default start off-
set.
EXAMPLES
Basics
- Compress the file foo into foo.xz using the default compression level
+ Compress the file foo into foo.xz using the default compression level
(-6), and remove foo if compression is successful:
xz foo
- Decompress bar.xz into bar and don't remove bar.xz even if decompres-
+ Decompress bar.xz into bar and don't remove bar.xz even if decompres-
sion is successful:
xz -dk bar.xz
- Create baz.tar.xz with the preset -4e (-4 --extreme), which is slower
- than the default -6, but needs less memory for compression and decom-
+ Create baz.tar.xz with the preset -4e (-4 --extreme), which is slower
+ than the default -6, but needs less memory for compression and decom-
pression (48 MiB and 5 MiB, respectively):
tar cf - baz | xz -4e > baz.tar.xz
@@ -1443,7 +1535,7 @@ EXAMPLES
The -P option to xargs(1) sets the number of parallel xz processes.
The best value for the -n option depends on how many files there are to
- be compressed. If there are only a couple of files, the value should
+ 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 xz processes that xargs(1) will
eventually create.
@@ -1452,14 +1544,14 @@ EXAMPLES
cause xargs(1) is used to control the amount of parallelization.
Robot mode
- Calculate how many bytes have been saved in total after compressing
+ Calculate how many bytes have been saved in total after compressing
multiple files:
xz --robot --list *.xz | awk '/^totals/{print $5-$4}'
- A script may want to know that it is using new enough xz. The follow-
- ing sh(1) script checks that the version number of the xz tool is at
- least 5.0.0. This method is compatible with old beta versions, which
+ A script may want to know that it is using new enough xz. The follow-
+ ing sh(1) script checks that the version number of the xz tool is at
+ least 5.0.0. This method is compatible with old beta versions, which
didn't support the --robot option:
if ! eval "$(xz --robot --version 2> /dev/null)" ||
@@ -1524,23 +1616,23 @@ EXAMPLES
Using -vv (--verbose --verbose) like in the above example can be useful
to see the memory requirements of the compressor and decompressor. Re-
member 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
+ file is waste of memory, so the above command isn't useful for small
files.
- Sometimes the compression time doesn't matter, but the decompressor
- memory usage has to be kept low, for example, to make it possible to
- decompress the file on an embedded system. The following command uses
- -6e (-6 --extreme) as a base and sets the dictionary to only 64 KiB.
- The resulting file can be decompressed with XZ Embedded (that's why
+ Sometimes the compression time doesn't matter, but the decompressor
+ memory usage has to be kept low, for example, to make it possible to
+ decompress the file on an embedded system. The following command uses
+ -6e (-6 --extreme) as a base and sets the dictionary to only 64 KiB.
+ The resulting file can be decompressed with XZ Embedded (that's why
there is --check=crc32) using about 100 KiB of memory.
xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo
- If you want to squeeze out as many bytes as possible, adjusting the
- number of literal context bits (lc) and number of position bits (pb)
+ If you want to squeeze out as many bytes as possible, adjusting the
+ number of literal context bits (lc) and number of position bits (pb)
can sometimes help. Adjusting the number of literal position bits (lp)
might help too, but usually lc and pb are more important. For example,
- a source code archive contains mostly US-ASCII text, so something like
+ a source code archive contains mostly US-ASCII text, so something like
the following might give slightly (like 0.1 %) smaller file than xz -6e
(try also without lc=4):
@@ -1552,7 +1644,7 @@ EXAMPLES
xz --x86 --lzma2 libfoo.so
- Note that the order of the filter options is significant. If --x86 is
+ Note that the order of the filter options is significant. If --x86 is
specified after --lzma2, 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.
@@ -1561,26 +1653,24 @@ EXAMPLES
images. It should usually beat PNG, which has a few more advanced fil-
ters than simple delta but uses Deflate for the actual compression.
- The image has to be saved in uncompressed format, for example, as un-
- compressed TIFF. The distance parameter of the Delta filter is set to
- match the number of bytes per pixel in the image. For example, 24-bit
- RGB bitmap needs dist=3, and it is also good to pass pb=0 to LZMA2 to
+ The image has to be saved in uncompressed format, for example, as un-
+ compressed TIFF. The distance parameter of the Delta filter is set to
+ match the number of bytes per pixel in the image. For example, 24-bit
+ RGB bitmap needs dist=3, and it is also good to pass pb=0 to LZMA2 to
accommodate the three-byte alignment:
xz --delta=dist=3 --lzma2=pb=0 foo.tiff
- If multiple images have been put into a single archive (for example,
- .tar), the Delta filter will work on that too as long as all images
+ If multiple images have been put into a single archive (for example,
+ .tar), the Delta filter will work on that too as long as all images
have the same number of bytes per pixel.
SEE ALSO
- xzdec(1), xzdiff(1), xzgrep(1), xzless(1), xzmore(1), gzip(1),
+ xzdec(1), xzdiff(1), xzgrep(1), xzless(1), xzmore(1), gzip(1),
bzip2(1), 7z(1)
XZ Utils: <https://tukaani.org/xz/>
XZ Embedded: <https://tukaani.org/xz/embedded.html>
LZMA SDK: <https://7-zip.org/sdk.html>
-
-
-Tukaani 2023-07-17 XZ(1)
+Tukaani 2024-04-08 XZ(1)
diff --git a/doc/man/txt/xzdec.txt b/doc/man/txt/xzdec.txt
index a914e20..b6218dd 100644
--- a/doc/man/txt/xzdec.txt
+++ b/doc/man/txt/xzdec.txt
@@ -1,7 +1,5 @@
XZDEC(1) XZ Utils XZDEC(1)
-
-
NAME
xzdec, lzmadec - Small .xz and .lzma decompressors
@@ -17,11 +15,11 @@ DESCRIPTION
to decompress .xz files. lzmadec is identical to xzdec except that lz-
madec supports .lzma files instead of .xz files.
- To reduce the size of the executable, xzdec doesn't support multi-
- threading or localization, and doesn't read options from XZ_DEFAULTS
+ To reduce the size of the executable, xzdec doesn't support multi-
+ threading or localization, and doesn't read options from XZ_DEFAULTS
and XZ_OPT environment variables. xzdec doesn't support displaying in-
termediate progress information: sending SIGINFO to xzdec does nothing,
- but sending SIGUSR1 terminates the process instead of displaying
+ but sending SIGUSR1 terminates the process instead of displaying
progress information.
OPTIONS
@@ -75,6 +73,4 @@ SEE ALSO
XZ Embedded: <https://tukaani.org/xz/embedded.html>
-
-
-Tukaani 2017-04-19 XZDEC(1)
+Tukaani 2024-04-08 XZDEC(1)
diff --git a/doc/man/txt/xzdiff.txt b/doc/man/txt/xzdiff.txt
index 681b00c..cb61372 100644
--- a/doc/man/txt/xzdiff.txt
+++ b/doc/man/txt/xzdiff.txt
@@ -1,37 +1,38 @@
XZDIFF(1) XZ Utils XZDIFF(1)
-
-
NAME
xzcmp, xzdiff, lzcmp, lzdiff - compare compressed files
SYNOPSIS
- xzcmp [cmp_options] file1 [file2]
- xzdiff [diff_options] file1 [file2]
- lzcmp [cmp_options] file1 [file2]
- lzdiff [diff_options] file1 [file2]
+ xzcmp [option...] file1 [file2]
+ xzdiff ...
+ lzcmp ...
+ lzdiff ...
DESCRIPTION
- xzcmp and xzdiff invoke cmp(1) or diff(1) on files compressed with
- xz(1), lzma(1), gzip(1), bzip2(1), lzop(1), or zstd(1). All options
- specified are passed directly to cmp(1) or diff(1). If only one file
- is specified, then the files compared are file1 (which must have a suf-
- fix of a supported compression format) and file1 from which the com-
- pression format suffix has been stripped. If two files are specified,
- then they are uncompressed if necessary and fed to cmp(1) or diff(1).
- The exit status from cmp(1) or diff(1) is preserved unless a decompres-
- sion error occurs; then exit status is 2.
-
- The names lzcmp and lzdiff are provided for backward compatibility with
- LZMA Utils.
+ xzcmp and xzdiff compare uncompressed contents of two files. Uncom-
+ pressed data and options are passed to cmp(1) or diff(1) unless --help
+ or --version is specified.
-SEE ALSO
- cmp(1), diff(1), xz(1), gzip(1), bzip2(1), lzop(1), zstd(1), zdiff(1)
+ If both file1 and file2 are specified, they can be uncompressed files
+ or files in formats that xz(1), gzip(1), bzip2(1), lzop(1), zstd(1), or
+ lz4(1) can decompress. The required decompression commands are deter-
+ mined from the filename suffixes of file1 and file2. A file with an
+ unknown suffix is assumed to be either uncompressed or in a format that
+ xz(1) can decompress.
-BUGS
- Messages from the cmp(1) or diff(1) programs refer to temporary file-
- names instead of those specified.
+ If only one filename is provided, file1 must have a suffix of a sup-
+ ported compression format and the name for file2 is assumed to be file1
+ with the compression format suffix removed.
+ The commands lzcmp and lzdiff are provided for backward compatibility
+ with LZMA Utils.
+EXIT STATUS
+ If a decompression error occurs, the exit status is 2. Otherwise the
+ exit status of cmp(1) or diff(1) is used.
+
+SEE ALSO
+ cmp(1), diff(1), xz(1), gzip(1), bzip2(1), lzop(1), zstd(1), lz4(1)
-Tukaani 2021-06-04 XZDIFF(1)
+Tukaani 2024-02-13 XZDIFF(1)
diff --git a/doc/man/txt/xzgrep.txt b/doc/man/txt/xzgrep.txt
index 596520c..85b8b90 100644
--- a/doc/man/txt/xzgrep.txt
+++ b/doc/man/txt/xzgrep.txt
@@ -1,12 +1,10 @@
XZGREP(1) XZ Utils XZGREP(1)
-
-
NAME
- xzgrep - search compressed files for a regular expression
+ xzgrep - search possibly-compressed files for patterns
SYNOPSIS
- xzgrep [grep_options] [-e] pattern [file...]
+ xzgrep [option...] [pattern_list] [file...]
xzegrep ...
xzfgrep ...
lzgrep ...
@@ -14,36 +12,58 @@ SYNOPSIS
lzfgrep ...
DESCRIPTION
- xzgrep invokes grep(1) on files which may be either uncompressed or
- compressed with xz(1), lzma(1), gzip(1), bzip2(1), lzop(1), or zstd(1).
- All options specified are passed directly to grep(1).
+ xzgrep invokes grep(1) on uncompressed contents of files. The formats
+ of the files are determined from the filename suffixes. Any file with
+ a suffix supported by xz(1), gzip(1), bzip2(1), lzop(1), zstd(1), or
+ lz4(1) will be decompressed; all other files are assumed to be uncom-
+ pressed.
+
+ If no files are specified or file is - then standard input is read.
+ When reading from standard input, only files supported by xz(1) are de-
+ compressed. Other files are assumed to be in uncompressed form al-
+ ready.
+
+ Most options of grep(1) are supported. However, the following options
+ are not supported:
+
+ -r, --recursive
+
+ -R, --dereference-recursive
+
+ -d, --directories=action
+
+ -Z, --null
- If no file is specified, then standard input is decompressed if neces-
- sary and fed to grep(1). When reading from standard input, gzip(1),
- bzip2(1), lzop(1), and zstd(1) compressed files are not supported.
+ -z, --null-data
- If xzgrep is invoked as xzegrep or xzfgrep then grep -E or grep -F is
- used instead of grep(1). The same applies to names lzgrep, lzegrep,
- and lzfgrep, which are provided for backward compatibility with LZMA
- Utils.
+ --include=glob
+
+ --exclude=glob
+
+ --exclude-from=file
+
+ --exclude-dir=glob
+
+ xzegrep is an alias for xzgrep -E. xzfgrep is an alias for xzgrep -F.
+
+ The commands lzgrep, lzegrep, and lzfgrep are provided for backward
+ compatibility with LZMA Utils.
EXIT STATUS
- 0 At least one match was found from at least one of the input
+ 0 At least one match was found from at least one of the input
files. No errors occurred.
- 1 No matches were found from any of the input files. No errors
+ 1 No matches were found from any of the input files. No errors
occurred.
- >1 One or more errors occurred. It is unknown if matches were
+ >1 One or more errors occurred. It is unknown if matches were
found.
ENVIRONMENT
- GREP If the GREP environment variable is set, xzgrep uses it instead
- of grep(1), grep -E, or grep -F.
+ GREP If GREP is set to a non-empty value, it is used instead of grep,
+ grep -E, or grep -F.
SEE ALSO
- grep(1), xz(1), gzip(1), bzip2(1), lzop(1), zstd(1), zgrep(1)
-
-
+ grep(1), xz(1), gzip(1), bzip2(1), lzop(1), zstd(1), lz4(1), zgrep(1)
-Tukaani 2022-07-19 XZGREP(1)
+Tukaani 2024-02-13 XZGREP(1)
diff --git a/doc/man/txt/xzless.txt b/doc/man/txt/xzless.txt
index 5c14c80..655a607 100644
--- a/doc/man/txt/xzless.txt
+++ b/doc/man/txt/xzless.txt
@@ -1,7 +1,5 @@
XZLESS(1) XZ Utils XZLESS(1)
-
-
NAME
xzless, lzless - view xz or lzma compressed (text) files
@@ -11,8 +9,9 @@ SYNOPSIS
DESCRIPTION
xzless is a filter that displays text from compressed files to a termi-
- nal. It works on files compressed with xz(1) or lzma(1). If no files
- are given, xzless reads from standard input.
+ nal. Files supported by xz(1) are decompressed; other files are as-
+ sumed to be in uncompressed form already. If no files are given, xz-
+ less reads from standard input.
xzless uses less(1) to present its output. Unlike xzmore, its choice
of pager cannot be altered by setting an environment variable. Com-
@@ -28,12 +27,10 @@ ENVIRONMENT
it is already set in the environment.
LESSOPEN
- Set to a command line to invoke the xz(1) decompressor for pre-
+ Set to a command line to invoke the xz(1) decompressor for pre-
processing the input files to less(1).
SEE ALSO
less(1), xz(1), xzmore(1), zless(1)
-
-
-Tukaani 2010-09-27 XZLESS(1)
+Tukaani 2024-02-12 XZLESS(1)
diff --git a/doc/man/txt/xzmore.txt b/doc/man/txt/xzmore.txt
index 5a9d86c..baa496e 100644
--- a/doc/man/txt/xzmore.txt
+++ b/doc/man/txt/xzmore.txt
@@ -1,7 +1,5 @@
XZMORE(1) XZ Utils XZMORE(1)
-
-
NAME
xzmore, lzmore - view xz or lzma compressed (text) files
@@ -10,25 +8,24 @@ SYNOPSIS
lzmore [file...]
DESCRIPTION
- xzmore is a filter which allows examination of xz(1) or lzma(1) com-
- pressed text files one screenful at a time on a soft-copy terminal.
-
- To use a pager other than the default more, set environment variable
- PAGER to the name of the desired program. The name lzmore is provided
- for backward compatibility with LZMA Utils.
+ xzmore displays text from compressed files to a terminal using more(1).
+ Files supported by xz(1) are decompressed; other files are assumed to
+ be in uncompressed form already. If no files are given, xzmore reads
+ from standard input. See the more(1) manual for the keyboard commands.
- e or q When the prompt --More--(Next file: file) is printed, this com-
- mand causes xzmore to exit.
+ Note that scrolling backwards might not be possible depending on the
+ implementation of more(1). This is because xzmore uses a pipe to pass
+ the decompressed data to more(1). xzless(1) uses less(1) which pro-
+ vides more advanced features.
- s When the prompt --More--(Next file: file) is printed, this com-
- mand causes xzmore to skip the next file and continue.
+ The command lzmore is provided for backward compatibility with LZMA
+ Utils.
- For list of keyboard commands supported while actually viewing the con-
- tent of a file, refer to manual of the pager you use, usually more(1).
+ENVIRONMENT
+ PAGER If PAGER is set, its value is used as the pager instead of
+ more(1).
SEE ALSO
more(1), xz(1), xzless(1), zmore(1)
-
-
-Tukaani 2013-06-30 XZMORE(1)
+Tukaani 2024-02-12 XZMORE(1)
diff --git a/doc/xz-file-format.txt b/doc/xz-file-format.txt
index 09c83e0..12d2530 100644
--- a/doc/xz-file-format.txt
+++ b/doc/xz-file-format.txt
@@ -2,7 +2,7 @@
The .xz File Format
===================
-Version 1.1.0 (2022-12-11)
+Version 1.2.1 (2024-04-08)
0. Preface
@@ -81,18 +81,26 @@ Version 1.1.0 (2022-12-11)
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>.
+ from <https://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>.
+ at <https://tukaani.org/xz/xz-file-format-1.0.0.txt>.
0.3. Version History
Version Date Description
+ 1.2.1 2024-04-08 The URLs of this specification and
+ XZ Utils were changed back to the
+ original ones in Sections 0.2 and 7.
+
+ 1.2.0 2024-01-19 Added RISC-V filter and updated URLs in
+ Sections 0.2 and 7. The URL of this
+ specification was changed.
+
1.1.0 2022-12-11 Added ARM64 filter and clarified 32-bit
ARM endianness in Section 5.3.2,
language improvements in Section 5.4
@@ -923,6 +931,7 @@ Version 1.1.0 (2022-12-11)
0x08 2 bytes ARM Thumb filter [1]
0x09 4 bytes SPARC filter
0x0A 4 bytes ARM64 filter [2]
+ 0x0B 2 bytes RISC-V filter
[1] These are for little endian instruction encoding.
This must not be confused with data endianness.
@@ -1136,30 +1145,30 @@ Version 1.1.0 (2022-12-11)
7. References
LZMA SDK - The original LZMA implementation
- http://7-zip.org/sdk.html
+ https://7-zip.org/sdk.html
LZMA Utils - LZMA adapted to POSIX-like systems
- http://tukaani.org/lzma/
+ https://tukaani.org/lzma/
XZ Utils - The next generation of LZMA Utils
- http://tukaani.org/xz/
+ https://tukaani.org/xz/
[RFC-1952]
GZIP file format specification version 4.3
- http://www.ietf.org/rfc/rfc1952.txt
+ https://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
+ https://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
+ GNU tar 1.35 manual
+ https://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
+ 1.35. For the exact version of the manual, download GNU
+ tar 1.35: ftp://ftp.gnu.org/pub/gnu/tar/tar-1.35.tar.gz
diff --git a/dos/Makefile b/dos/Makefile
index 793adc1..f8ba437 100644
--- a/dos/Makefile
+++ b/dos/Makefile
@@ -1,12 +1,11 @@
+# SPDX-License-Identifier: 0BSD
+
###############################################################################
#
# 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
diff --git a/dos/config.h b/dos/config.h
index 67b72f8..415cd5a 100644
--- a/dos/config.h
+++ b/dos/config.h
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: 0BSD */
+
/* How many MiB of RAM to assume if the real amount cannot be determined. */
#define ASSUME_RAM 32
@@ -79,9 +81,6 @@
/* 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 if .lz (lzip) decompression support is enabled. */
#define HAVE_LZIP_DECODER 1
@@ -106,23 +105,14 @@
/* 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 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 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.
@@ -145,7 +135,7 @@
/* Define to the home page for this package. */
#define PACKAGE_URL "https://tukaani.org/xz/"
-/* The size of `size_t', as computed by sizeof. */
+/* The size of 'size_t', as computed by sizeof. */
#define SIZEOF_SIZE_T 4
/* Define to 1 if the system supports fast unaligned access to 16-bit and
diff --git a/doxygen/Doxyfile b/doxygen/Doxyfile
index 14350cf..25428e9 100644
--- a/doxygen/Doxyfile
+++ b/doxygen/Doxyfile
@@ -1,2687 +1,39 @@
-# Doxyfile 1.9.6
+# SPDX-License-Identifier: 0BSD
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project.
+# Run "doxygen" in this directory to generate the liblzma API documentation
+# into ../doc/api.
#
-# All text after a double hash (##) is considered a comment and is placed in
-# front of the TAG it is preceding.
+# Use the "update-doxygen" script for more choices:
+# - Include the liblzma version number in the generated documentation.
+# - Instead of API docs, docs of XZ Utils internals may be built.
+# - Change the output directory for out-of-tree builds.
#
-# All text after a single 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 (\" \").
-#
-# Note:
-#
-# Use doxygen to compare the used configuration file with the template
-# configuration file:
-# doxygen -x [configFile]
-# Use doxygen to compare the used configuration file with the template
-# configuration file without replacing the environment variables or CMake type
-# replacement variables:
-# doxygen -x_noenv [configFile]
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the configuration
-# file that follow. The default is UTF-8 which is also the encoding used for all
-# text before the first occurrence of this tag. Doxygen uses libiconv (or the
-# iconv built into libc) for the transcoding. See
-# https://www.gnu.org/software/libiconv/ for the list of possible encodings.
-# The default value is: UTF-8.
-
-DOXYFILE_ENCODING = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
-# double-quotes, unless you are using Doxywizard) that should identify the
-# project for which the documentation is generated. This name is used in the
-# title of most generated pages and in a few other places.
-# The default value is: My Project.
+# These options were tested with Doxygen 1.10.0.
PROJECT_NAME = "liblzma (XZ Utils)"
-
-# 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 =
-
-# Using the PROJECT_BRIEF tag one can provide an optional one line description
-# for a project that appears at the top of each page and should give viewer a
-# quick idea about the purpose of the project. Keep the description short.
-
-PROJECT_BRIEF =
-
-# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
-# in the documentation. The maximum height of the logo should not exceed 55
-# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
-# the logo to the output directory.
-
-PROJECT_LOGO =
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
-# into which the generated documentation will be written. 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 up to 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 causes
-# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to
-# control the number of sub-directories.
-# The default value is: NO.
-
-CREATE_SUBDIRS = NO
-
-# Controls the number of sub-directories that will be created when
-# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every
-# level increment doubles the number of directories, resulting in 4096
-# directories at level 8 which is the default and also the maximum value. The
-# sub-directories are organized in 2 levels, the first level always has a fixed
-# number of 16 directories.
-# Minimum value: 0, maximum value: 8, default value: 8.
-# This tag requires that the tag CREATE_SUBDIRS is set to YES.
-
-CREATE_SUBDIRS_LEVEL = 8
-
-# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
-# characters to appear in the names of generated files. If set to NO, non-ASCII
-# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
-# U+3044.
-# The default value is: NO.
-
-ALLOW_UNICODE_NAMES = 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.
-# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian,
-# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English
-# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek,
-# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with
-# English messages), Korean, Korean-en (Korean with English messages), Latvian,
-# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese,
-# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish,
-# Swedish, Turkish, Ukrainian and Vietnamese.
-# The default value is: English.
-
-OUTPUT_LANGUAGE = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES, 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.
-# The default value is: YES.
-
-BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES, 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.
-# The default value is: YES.
-
-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 and 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.
-# The default value is: NO.
-
-ALWAYS_DETAILED_SEC = NO
-
-# 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.
-# The default value is: NO.
-
-INLINE_INHERITED_MEMB = NO
-
-# If the FULL_PATH_NAMES tag is set to YES, 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
-# The default value is: YES.
-
-FULL_PATH_NAMES = YES
-
-# 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.
-#
-# Note that you can specify absolute paths here, but also relative paths, which
-# will be relative from the directory where doxygen is started.
-# This tag requires that the tag FULL_PATH_NAMES is set to YES.
-
STRIP_FROM_PATH = ../src/liblzma/api
-
-# 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 list of 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.
-# The default value is: NO.
-
-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-style will behave just like regular Qt-
-# style comments (thus requiring an explicit @brief command for a brief
-# description.)
-# The default value is: NO.
-
-JAVADOC_AUTOBRIEF = NO
-
-# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line
-# such as
-# /***************
-# as being the beginning of a Javadoc-style comment "banner". If set to NO, the
-# Javadoc-style will behave just like regular comments and it will not be
-# interpreted by doxygen.
-# The default value is: NO.
-
-JAVADOC_BANNER = NO
-
-# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
-# line (until the first dot) of a Qt-style comment as the brief description. If
-# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
-# requiring an explicit \brief command for a brief description.)
-# The default value is: NO.
-
-QT_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 behavior. 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 behavior instead.
-#
-# Note that setting this tag to YES also means that rational rose comments are
-# not recognized any more.
-# The default value is: NO.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# By default Python docstrings are displayed as preformatted text and doxygen's
-# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the
-# doxygen's special commands can be used and the contents of the docstring
-# documentation blocks is shown as doxygen documentation.
-# The default value is: YES.
-
-PYTHON_DOCSTRING = YES
-
-# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
-# documentation from any documented member that it re-implements.
-# The default value is: YES.
-
-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.
-# The default value is: NO.
-
-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.
-# Minimum value: 1, maximum value: 16, default value: 4.
-
-TAB_SIZE = 8
-
-# This tag can be used to specify a number of aliases that act as commands in
-# the documentation. An alias has the form:
-# name=value
-# For example adding
-# "sideeffect=@par Side Effects:^^"
-# 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:". Note that you cannot put \n's in the value part of an alias
-# to insert newlines (in the resulting output). You can put ^^ in the value part
-# of an alias to insert a newline as if a physical newline was in the original
-# file. When you need a literal { or } or , in the value part of an alias you
-# have to escape them by means of a backslash (\), this can lead to conflicts
-# with the commands \{ and \} for these it is advised to use the version @{ and
-# @} or use a double escape (\\{ and \\})
-
-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.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_FOR_C = YES
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
-# Python sources only. Doxygen will then generate output that is more tailored
-# for that language. For instance, namespaces will be presented as packages,
-# qualified scopes will look different, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_JAVA = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources. Doxygen will then generate output that is tailored for Fortran.
-# The default value is: NO.
-
-OPTIMIZE_FOR_FORTRAN = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for VHDL.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_VHDL = NO
-
-# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice
-# sources only. Doxygen will then generate output that is more tailored for that
-# language. For instance, namespaces will be presented as modules, types will be
-# separated into more groups, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_SLICE = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it
-# parses. With this tag you can assign which parser to use for a given
-# extension. Doxygen has a built-in mapping, but you can override or extend it
-# using this tag. The format is ext=language, where ext is a file extension, and
-# language is one of the parsers supported by doxygen: IDL, Java, JavaScript,
-# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice,
-# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran:
-# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser
-# tries to guess whether the code is fixed or free formatted code, this is the
-# default for Fortran type files). For instance to make doxygen treat .inc files
-# as Fortran files (default is PHP), and .f files as C (default is Fortran),
-# use: inc=Fortran f=C.
-#
-# Note: For files without extension you can use no_extension as a placeholder.
-#
-# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
-# the files are not read by doxygen. When specifying no_extension you should add
-# * to the FILE_PATTERNS.
-#
-# Note see also the list of default file extension mappings.
-
-EXTENSION_MAPPING =
-
-# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
-# according to the Markdown format, which allows for more readable
-# documentation. See https://daringfireball.net/projects/markdown/ for details.
-# The output of markdown processing is further processed by doxygen, so you can
-# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
-# case of backward compatibilities issues.
-# The default value is: YES.
-
-MARKDOWN_SUPPORT = NO
-
-# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up
-# to that level are automatically included in the table of contents, even if
-# they do not have an id attribute.
-# Note: This feature currently applies only to Markdown headings.
-# Minimum value: 0, maximum value: 99, default value: 5.
-# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
-
-TOC_INCLUDE_HEADINGS = 5
-
-# When enabled doxygen tries to link words that correspond to documented
-# classes, or namespaces to their corresponding documentation. Such a link can
-# be prevented in individual cases by putting a % sign in front of the word or
-# globally by setting AUTOLINK_SUPPORT to NO.
-# The default value is: YES.
-
-AUTOLINK_SUPPORT = YES
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should set this
-# tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string);
-# versus func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-# The default value is: NO.
-
-BUILTIN_STL_SUPPORT = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-# The default value is: NO.
-
-CPP_CLI_SUPPORT = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
-# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen
-# will parse them like normal C++ but will assume all classes use public instead
-# of private inheritance when no explicit protection keyword is present.
-# The default value is: NO.
-
-SIP_SUPPORT = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate
-# getter and setter methods for a property. Setting this option to YES will make
-# doxygen to replace the get and set methods by a property in the documentation.
-# This will only work if the methods are indeed getting or setting a simple
-# type. If this is not the case, or you want to show the methods anyway, you
-# should set this option to NO.
-# The default value is: YES.
-
-IDL_PROPERTY_SUPPORT = NO
-
-# 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.
-# The default value is: NO.
-
-DISTRIBUTE_GROUP_DOC = NO
-
-# If one adds a struct or class to a group and this option is enabled, then also
-# any nested class or struct is added to the same group. By default this option
-# is disabled and one has to add nested compounds explicitly via \ingroup.
-# The default value is: NO.
-
-GROUP_NESTED_COMPOUNDS = NO
-
-# Set the SUBGROUPING tag to YES 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.
-# The default value is: YES.
-
-SUBGROUPING = YES
-
-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
-# are shown inside the group in which they are included (e.g. using \ingroup)
-# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
-# and RTF).
-#
-# Note that this feature does not work in combination with
-# SEPARATE_MEMBER_PAGES.
-# The default value is: NO.
-
-INLINE_GROUPED_CLASSES = NO
-
-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
-# with only public data fields or simple typedef fields will be shown inline in
-# the documentation of the scope in which they are defined (i.e. file,
-# namespace, or group documentation), provided this scope is documented. If set
-# to NO, structs, classes, and unions are shown on a separate page (for HTML and
-# Man pages) or section (for LaTeX and RTF).
-# The default value is: NO.
-
-INLINE_SIMPLE_STRUCTS = NO
-
-# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
-# enum is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically be
-# useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-# The default value is: NO.
-
-TYPEDEF_HIDES_STRUCT = NO
-
-# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
-# cache is used to resolve symbols given their name and scope. Since this can be
-# an expensive process and often the same symbol appears multiple times in the
-# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
-# doxygen will become slower. If the cache is too large, memory is wasted. The
-# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
-# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
-# symbols. At the end of a run doxygen will report the cache usage and suggest
-# the optimal cache size from a speed point of view.
-# Minimum value: 0, maximum value: 9, default value: 0.
-
-LOOKUP_CACHE_SIZE = 0
-
-# The NUM_PROC_THREADS specifies the number of threads doxygen is allowed to use
-# during processing. When set to 0 doxygen will based this on the number of
-# cores available in the system. You can set it explicitly to a value larger
-# than 0 to get more control over the balance between CPU load and processing
-# speed. At this moment only the input processing can be done using multiple
-# threads. Since this is still an experimental feature the default is set to 1,
-# which effectively disables parallel processing. Please report any issues you
-# encounter. Generating dot graphs in parallel is controlled by the
-# DOT_NUM_THREADS setting.
-# Minimum value: 0, maximum value: 32, default value: 1.
-
-NUM_PROC_THREADS = 1
-
-#---------------------------------------------------------------------------
-# 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 respectively EXTRACT_STATIC tags are set to YES.
-# Note: This will also disable the warnings about undocumented members that are
-# normally produced when WARNINGS is set to YES.
-# The default value is: NO.
-
-EXTRACT_ALL = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
-# be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PRIVATE = NO
-
-# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual
-# methods of a class will be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PRIV_VIRTUAL = NO
-
-# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
-# scope will be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PACKAGE = NO
-
-# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
-# included in the documentation.
-# The default value is: NO.
-
-EXTRACT_STATIC = NO
-
-# 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. Does not have any effect
-# for Java sources.
-# The default value is: YES.
-
-EXTRACT_LOCAL_CLASSES = NO
-
-# This flag is only useful for Objective-C code. If set to YES, local methods,
-# which are defined in the implementation section but not in the interface are
-# included in the documentation. If set to NO, only methods in the interface are
-# included.
-# The default value is: NO.
-
-EXTRACT_LOCAL_METHODS = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base name of
-# the file that contains the anonymous namespace. By default anonymous namespace
-# are hidden.
-# The default value is: NO.
-
-EXTRACT_ANON_NSPACES = NO
-
-# If this flag is set to YES, the name of an unnamed parameter in a declaration
-# will be determined by the corresponding definition. By default unnamed
-# parameters remain unnamed in the output.
-# The default value is: YES.
-
-RESOLVE_UNNAMED_PARAMS = YES
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
-# undocumented members inside documented classes or files. If set to NO 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.
-# The default value is: NO.
-
-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, these classes will be included in the various overviews. This option
-# will also hide undocumented C++ concepts if enabled. This option has no effect
-# if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_CLASSES = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
-# declarations. If set to NO, these declarations will be included in the
-# documentation.
-# The default value is: NO.
-
-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, these
-# blocks will be appended to the function's detailed documentation block.
-# The default value is: NO.
-
-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 then the documentation
-# will be excluded. Set it to YES to include the internal documentation.
-# The default value is: NO.
-
-INTERNAL_DOCS = NO
-
-# With the correct setting of option CASE_SENSE_NAMES doxygen will better be
-# able to match the capabilities of the underlying filesystem. In case the
-# filesystem is case sensitive (i.e. it supports files in the same directory
-# whose names only differ in casing), the option must be set to YES to properly
-# deal with such files in case they appear in the input. For filesystems that
-# are not case sensitive the option should be set to NO to properly deal with
-# output files written for symbols that only differ in casing, such as for two
-# classes, one named CLASS and the other named Class, and to also support
-# references to files without having to specify the exact matching casing. On
-# Windows (including Cygwin) and MacOS, users should typically set this option
-# to NO, whereas on Linux or other Unix flavors it should typically be set to
-# YES.
-# Possible values are: SYSTEM, NO and YES.
-# The default value is: SYSTEM.
-
-CASE_SENSE_NAMES = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
-# their full class and namespace scopes in the documentation. If set to YES, the
-# scope will be hidden.
-# The default value is: NO.
-
-HIDE_SCOPE_NAMES = NO
-
-# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will
-# append additional text to a page's title, such as Class Reference. If set to
-# YES the compound reference will be hidden.
-# The default value is: NO.
-
-HIDE_COMPOUND_REFERENCE= NO
-
-# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class
-# will show which file needs to be included to use the class.
-# The default value is: YES.
-
-SHOW_HEADERFILE = YES
-
-# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
-# the files that are included by a file in the documentation of that file.
-# The default value is: YES.
-
-SHOW_INCLUDE_FILES = YES
-
-# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
-# grouped member an include statement to the documentation, telling the reader
-# which file to include in order to use the member.
-# The default value is: NO.
-
-SHOW_GROUPED_MEMB_INC = NO
-
-# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
-# files with double quotes in the documentation rather than with sharp brackets.
-# The default value is: NO.
-
-FORCE_LOCAL_INCLUDES = NO
-
-# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
-# documentation for inline members.
-# The default value is: YES.
-
-INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES 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.
-# The default value is: YES.
-
-SORT_MEMBER_DOCS = NO
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
-# descriptions of file, namespace and class members alphabetically by member
-# name. If set to NO, the members will appear in declaration order. Note that
-# this will also influence the order of the classes in the class list.
-# The default value is: NO.
-
-SORT_BRIEF_DOCS = NO
-
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
-# (brief and detailed) documentation of class members so that constructors and
-# destructors are listed first. If set to NO the constructors will appear in the
-# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
-# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
-# member documentation.
-# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
-# detailed member documentation.
-# The default value is: NO.
-
-SORT_MEMBERS_CTORS_1ST = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
-# of group names into alphabetical order. If set to NO the group names will
-# appear in their defined order.
-# The default value is: NO.
-
-SORT_GROUP_NAMES = 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 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.
-# The default value is: NO.
-
-SORT_BY_SCOPE_NAME = NO
-
-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
-# type resolution of all parameters of a function it will reject a match between
-# the prototype and the implementation of a member function even if there is
-# only one candidate or it is obvious which candidate to choose by doing a
-# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
-# accept a match between prototype and implementation in such cases.
-# The default value is: NO.
-
-STRICT_PROTO_MATCHING = 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.
-# The default value is: YES.
-
-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.
-# The default value is: YES.
-
-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.
-# The default value is: YES.
-
-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.
-# The default value is: YES.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional documentation
-# sections, marked by \if <section_label> ... \endif and \cond <section_label>
-# ... \endcond blocks.
-
-ENABLED_SECTIONS =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
-# initial value of a variable or macro / define can have 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 value of individual variables and macros / defines can be
-# controlled using \showinitializer or \hideinitializer command in the
-# documentation regardless of this setting.
-# Minimum value: 0, maximum value: 10000, default value: 30.
-
-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.
-# The default value is: YES.
-
-SHOW_USED_FILES = YES
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
-# will remove the Files entry from the Quick Index and from the Folder Tree View
-# (if specified).
-# The default value is: YES.
-
-SHOW_FILES = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
-# page. This will remove the Namespaces entry from the Quick Index and from the
-# Folder Tree View (if specified).
-# The default value is: YES.
-
-SHOW_NAMESPACES = 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. For an example see the documentation.
-
-FILE_VERSION_FILTER =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
-# by doxygen. The layout file controls the global structure of the generated
-# output files in an output format independent way. To create the layout file
-# that represents doxygen's defaults, run doxygen with the -l option. You can
-# optionally specify a file name after the option, if omitted DoxygenLayout.xml
-# will be used as the name of the layout file. See also section "Changing the
-# layout of pages" for information.
-#
-# Note that if you run doxygen from a directory containing a file called
-# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
-# tag is left empty.
-
-LAYOUT_FILE =
-
-# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
-# the reference definitions. This must be a list of .bib files. The .bib
-# extension is automatically appended if omitted. This requires the bibtex tool
-# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info.
-# For LaTeX the style of the bibliography can be controlled using
-# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
-# search path. See also \cite for info how to create references.
-
-CITE_BIB_FILES =
-
-#---------------------------------------------------------------------------
-# Configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated to
-# standard output by doxygen. If QUIET is set to YES this implies that the
-# messages are off.
-# The default value is: NO.
-
-QUIET = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
-# this implies that the warnings are on.
-#
-# Tip: Turn warnings on while writing the documentation.
-# The default value is: YES.
-
-WARNINGS = YES
-
-# If the WARN_IF_UNDOCUMENTED tag 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.
-# The default value is: YES.
-
-WARN_IF_UNDOCUMENTED = YES
-
-# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as documenting some parameters in
-# a documented function twice, or documenting parameters that don't exist or
-# using markup commands wrongly.
-# The default value is: YES.
-
-WARN_IF_DOC_ERROR = YES
-
-# If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete
-# function parameter documentation. If set to NO, doxygen will accept that some
-# parameters have no documentation without warning.
-# The default value is: YES.
-
-WARN_IF_INCOMPLETE_DOC = YES
-
-# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
-# are documented, but have no documentation for their parameters or return
-# value. If set to NO, doxygen will only warn about wrong parameter
-# documentation, but not about the absence of documentation. If EXTRACT_ALL is
-# set to YES then this flag will automatically be disabled. See also
-# WARN_IF_INCOMPLETE_DOC
-# The default value is: NO.
-
-WARN_NO_PARAMDOC = NO
-
-# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, doxygen will warn about
-# undocumented enumeration values. If set to NO, doxygen will accept
-# undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag
-# will automatically be disabled.
-# The default value is: NO.
-
-WARN_IF_UNDOC_ENUM_VAL = NO
-
-# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when
-# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS
-# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but
-# at the end of the doxygen process doxygen will return with a non-zero status.
-# Possible values are: NO, YES and FAIL_ON_WARNINGS.
-# The default value is: NO.
-
-WARN_AS_ERROR = 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)
-# See also: WARN_LINE_FORMAT
-# The default value is: $file:$line: $text.
-
-WARN_FORMAT = "$file:$line: $text"
-
-# In the $text part of the WARN_FORMAT command it is possible that a reference
-# to a more specific place is given. To make it easier to jump to this place
-# (outside of doxygen) the user can define a custom "cut" / "paste" string.
-# Example:
-# WARN_LINE_FORMAT = "'vi $file +$line'"
-# See also: WARN_FORMAT
-# The default value is: at line $line of file $file.
-
-WARN_LINE_FORMAT = "at line $line of file $file"
-
-# 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 standard
-# error (stderr). In case the file specified cannot be opened for writing the
-# warning and error messages are written to standard error. When as file - is
-# specified the warning and error messages are written to standard output
-# (stdout).
-
-WARN_LOGFILE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag is 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. See also FILE_PATTERNS and EXTENSION_MAPPING
-# Note: If this tag is empty the current directory is searched.
-
INPUT = ../src/liblzma/api
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
-# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
-# documentation (see:
-# https://www.gnu.org/software/libiconv/) for the list of possible encodings.
-# See also: INPUT_FILE_ENCODING
-# The default value is: UTF-8.
-
-INPUT_ENCODING = UTF-8
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses The INPUT_FILE_ENCODING tag can be used to specify
-# character encoding on a per file pattern basis. Doxygen will compare the file
-# name with each pattern and apply the encoding instead of the default
-# INPUT_ENCODING) if there is a match. The character encodings are a list of the
-# form: pattern=encoding (like *.php=ISO-8859-1). See cfg_input_encoding
-# "INPUT_ENCODING" for further information on supported encodings.
-
-INPUT_FILE_ENCODING =
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
-# *.h) to filter out the source-files in the directories.
-#
-# Note that for custom extensions or not directly supported extensions you also
-# need to set EXTENSION_MAPPING for the extension otherwise the files are not
-# read by doxygen.
-#
-# Note the list of default checked file patterns might differ from the list of
-# default file extension mappings.
-#
-# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,
-# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,
-# *.hh, *.hxx, *.hpp, *.h++, *.l, *.cs, *.d, *.php, *.php4, *.php5, *.phtml,
-# *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C
-# comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd,
-# *.vhdl, *.ucf, *.qsf and *.ice.
-
-FILE_PATTERNS = *.c \
- *.h
-
-# The RECURSIVE tag can be used to specify whether or not subdirectories should
-# be searched for input files as well.
-# The default value is: NO.
-
+FILE_PATTERNS = *.c *.h
RECURSIVE = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should be
-# 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.
-#
-# Note that relative paths are relative to the directory from which doxygen is
-# run.
-
-EXCLUDE =
-
-# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
-# directories that are symbolic links (a Unix file system feature) are excluded
-# from the input.
-# The default value is: NO.
-
-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 EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# ANamespace::AClass, ANamespace::*Test
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories use the pattern */test/*
-
-EXCLUDE_SYMBOLS =
-
-# 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.
-# The default value is: NO.
-
-EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or directories
-# that contain images that are to be 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.
-#
-# Note that the filter must not add or remove lines; it is applied before the
-# code is scanned, but not when the output code is generated. If lines are added
-# or removed, the anchors will not be placed correctly.
-#
-# Note that doxygen will use the data processed and written to standard output
-# for further processing, therefore nothing else, like debug statements or used
-# commands (so in case of a Windows batch file always use @echo OFF), should be
-# written to standard output.
-#
-# Note that for custom extensions or not directly supported extensions you also
-# need to set EXTENSION_MAPPING for the extension otherwise the files are not
-# properly processed by doxygen.
-
-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 information on how
-# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
-# patterns match the file name, INPUT_FILTER is applied.
-#
-# Note that for custom extensions or not directly supported extensions you also
-# need to set EXTENSION_MAPPING for the extension otherwise the files are not
-# properly processed by doxygen.
-
-FILTER_PATTERNS =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will also be used to filter the input files that are used for
-# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
-# The default value is: NO.
-
-FILTER_SOURCE_FILES = NO
-
-# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
-# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
-# it is also possible to disable source filtering for a specific pattern using
-# *.ext= (so without naming a filter).
-# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
-
-FILTER_SOURCE_PATTERNS =
-
-# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
-# is part of the input, its contents will be placed on the main page
-# (index.html). This can be useful if you have a project on for instance GitHub
-# and want to reuse the introduction page also for the doxygen output.
-
-USE_MDFILE_AS_MAINPAGE =
-
-# The Fortran standard specifies that for fixed formatted Fortran code all
-# characters from position 72 are to be considered as comment. A common
-# extension is to allow longer lines before the automatic comment starts. The
-# setting FORTRAN_COMMENT_AFTER will also make it possible that longer lines can
-# be processed before the automatic comment starts.
-# Minimum value: 7, maximum value: 10000, default value: 72.
-
-FORTRAN_COMMENT_AFTER = 72
-
-#---------------------------------------------------------------------------
-# 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 that
-# also VERBATIM_HEADERS is set to NO.
-# The default value is: NO.
-
-SOURCE_BROWSER = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body of functions,
-# classes and enums directly into the documentation.
-# The default value is: NO.
-
-INLINE_SOURCES = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
-# special comment blocks from generated source code fragments. Normal C, C++ and
-# Fortran comments will always remain visible.
-# The default value is: YES.
-
-STRIP_CODE_COMMENTS = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
-# entity all documented functions referencing it will be listed.
-# The default value is: NO.
-
-REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES then for each documented function
-# all documented entities called/used by that function will be listed.
-# The default value is: NO.
-
-REFERENCES_RELATION = YES
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES 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.
-# The default value is: YES.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
-# source code will show a tooltip with additional information such as prototype,
-# brief description and links to the definition and documentation. Since this
-# will make the HTML file larger and loading of large files a bit slower, you
-# can opt to disable this feature.
-# The default value is: YES.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
+OPTIMIZE_OUTPUT_FOR_C = YES
+EXTRACT_STATIC = YES
+SORT_MEMBER_DOCS = NO
SOURCE_TOOLTIPS = NO
-
-# 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 https://www.gnu.org/software/global/global.html). You will need version
-# 4.8.6 or higher.
-#
-# To use it do the following:
-# - Install the latest version of global
-# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file
-# - Make sure the INPUT points to the root of the source tree
-# - Run doxygen as normal
-#
-# Doxygen will invoke htags (and that will in turn invoke gtags), so these
-# tools must be available from the command line (i.e. in the search path).
-#
-# The result: instead of the source browser generated by doxygen, the links to
-# source code will now point to the output of htags.
-# The default value is: NO.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-USE_HTAGS = NO
-
-# If the VERBATIM_HEADERS tag is set the YES 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.
-# See also: Section \class.
-# The default value is: YES.
-
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.
-# The default value is: YES.
-
ALPHABETICAL_INDEX = NO
-
-# The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes)
-# that should be ignored while generating the index headers. The IGNORE_PREFIX
-# tag works for classes, function and member names. The entity will be placed in
-# the alphabetical list under the first letter of the entity name that remains
-# after removing the prefix.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-IGNORE_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
-# The default value is: YES.
-
-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.
-# The default directory is: html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
HTML_OUTPUT = api
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
-# generated HTML page (for example: .htm, .php, .asp).
-# The default value is: .html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
-# each generated HTML page. If the tag is left blank doxygen will generate a
-# standard header.
-#
-# To get valid HTML the header file that includes any scripts and style sheets
-# that doxygen needs, which is dependent on the configuration options used (e.g.
-# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
-# default header using
-# doxygen -w html new_header.html new_footer.html new_stylesheet.css
-# YourConfigFile
-# and then modify the file new_header.html. See also section "Doxygen usage"
-# for information on how to generate the default header that doxygen normally
-# uses.
-# Note: The header is subject to change so you typically have to regenerate the
-# default header when upgrading to a newer version of doxygen. For a description
-# of the possible markers and block names see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_HEADER =
-
-# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
-# generated HTML page. If the tag is left blank doxygen will generate a standard
-# footer. See HTML_HEADER for more information on how to generate a default
-# footer and what special commands can be used inside the footer. See also
-# section "Doxygen usage" for information on how to generate the default footer
-# that doxygen normally uses.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-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 left blank doxygen will generate a default style sheet.
-# See also section "Doxygen usage" for information on how to generate the style
-# sheet that doxygen normally uses.
-# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
-# it is more robust and this tag (HTML_STYLESHEET) will in the future become
-# obsolete.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_STYLESHEET =
-
-# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
-# cascading style sheets that are included after the standard style sheets
-# created by doxygen. Using this option one can overrule certain style aspects.
-# This is preferred over using HTML_STYLESHEET since it does not replace the
-# standard style sheet and is therefore more robust against future updates.
-# Doxygen will copy the style sheet files to the output directory.
-# Note: The order of the extra style sheet files is of importance (e.g. the last
-# style sheet in the list overrules the setting of the previous ones in the
-# list).
-# Note: Since the styling of scrollbars can currently not be overruled in
-# Webkit/Chromium, the styling will be left out of the default doxygen.css if
-# one or more extra stylesheets have been specified. So if scrollbar
-# customization is desired it has to be added explicitly. For an example see the
-# documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_STYLESHEET =
-
-# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the HTML output directory. Note
-# that these files will be copied to the base HTML output directory. Use the
-# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
-# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
-# files will be copied as-is; there are no commands or markers available.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_FILES =
-
-# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output
-# should be rendered with a dark or light theme.
-# Possible values are: LIGHT always generate light mode output, DARK always
-# generate dark mode output, AUTO_LIGHT automatically set the mode according to
-# the user preference, use light mode if no preference is set (the default),
-# AUTO_DARK automatically set the mode according to the user preference, use
-# dark mode if no preference is set and TOGGLE allow to user to switch between
-# light and dark mode via a button.
-# The default value is: AUTO_LIGHT.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE = AUTO_LIGHT
-
-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
-# will adjust the colors in the style sheet and background images according to
-# this color. Hue is specified as an angle on a color-wheel, see
-# https://en.wikipedia.org/wiki/Hue for more information. For instance the value
-# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
-# purple, and 360 is red again.
-# Minimum value: 0, maximum value: 359, default value: 220.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
HTML_COLORSTYLE_HUE = 210
-
-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
-# in the HTML output. For a value of 0 the output will use gray-scales only. A
-# value of 255 will produce the most vivid colors.
-# Minimum value: 0, maximum value: 255, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
HTML_COLORSTYLE_SAT = 180
-
-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
-# luminance component of the colors in the HTML output. Values below 100
-# gradually make the output lighter, whereas values above 100 make the output
-# darker. The value divided by 100 is the actual gamma applied, so 80 represents
-# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
-# change the gamma.
-# Minimum value: 40, maximum value: 240, default value: 80.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
HTML_COLORSTYLE_GAMMA = 110
-
-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-# page will contain the date and time when the page was generated. Setting this
-# to YES can help to show when doxygen was last run and thus if the
-# documentation is up to date.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_TIMESTAMP = NO
-
-# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML
-# documentation will contain a main index with vertical navigation menus that
-# are dynamically created via JavaScript. If disabled, the navigation index will
-# consists of multiple levels of tabs that are statically embedded in every HTML
-# page. Disable this option to support browsers that do not have JavaScript,
-# like the Qt help browser.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
HTML_DYNAMIC_MENUS = NO
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_DYNAMIC_SECTIONS = NO
-
-# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
-# shown in the various tree structured indices initially; the user can expand
-# and collapse entries dynamically later on. Doxygen will expand the tree to
-# such a level that at most the specified number of entries are visible (unless
-# a fully collapsed tree already exceeds this amount). So setting the number of
-# entries 1 will produce a full collapsed tree by default. 0 is a special value
-# representing an infinite number of entries and will result in a full expanded
-# tree by default.
-# Minimum value: 0, maximum value: 9999, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_INDEX_NUM_ENTRIES = 100
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files will be
-# generated that can be used as input for Apple's Xcode 3 integrated development
-# environment (see:
-# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To
-# create a documentation set, doxygen will generate a Makefile in the HTML
-# output directory. Running make will produce the docset in that directory and
-# running make install will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
-# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy
-# genXcode/_index.html for more information.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_DOCSET = NO
-
-# This tag determines the name of the docset feed. A documentation feed provides
-# an umbrella under which multiple documentation sets from a single provider
-# (such as a company or product suite) can be grouped.
-# The default value is: Doxygen generated docs.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_FEEDNAME = "Doxygen generated docs"
-
-# This tag determines the URL of the docset feed. A documentation feed provides
-# an umbrella under which multiple documentation sets from a single provider
-# (such as a company or product suite) can be grouped.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_FEEDURL =
-
-# This tag specifies a string that should uniquely identify the documentation
-# set bundle. This should be a reverse domain-name style string, e.g.
-# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_BUNDLE_ID = org.doxygen.Project
-
-# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
-# the documentation publisher. This should be a reverse domain-name style
-# string, e.g. com.mycompany.MyDocSet.documentation.
-# The default value is: org.doxygen.Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_ID = org.doxygen.Publisher
-
-# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
-# The default value is: Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_NAME = Publisher
-
-# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
-# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
-# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
-# on Windows. In the beginning of 2021 Microsoft took the original page, with
-# a.o. the download links, offline the HTML help workshop was already many years
-# in maintenance mode). You can download the HTML help workshop from the web
-# archives at Installation executable (see:
-# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo
-# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe).
-#
-# The HTML Help Workshop contains a compiler that can convert all HTML output
-# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
-# files are now used as the Windows 98 help format, and will replace the old
-# Windows help format (.hlp) on all Windows platforms in the future. Compressed
-# HTML files also contain an index, a table of contents, and you can search for
-# words in the documentation. The HTML workshop also contains a viewer for
-# compressed HTML files.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_HTMLHELP = NO
-
-# 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.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_FILE =
-
-# 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.
-# The file has to be specified with full path.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-HHC_LOCATION =
-
-# The GENERATE_CHI flag controls if a separate .chi index file is generated
-# (YES) or that it should be included in the main .chm file (NO).
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-GENERATE_CHI = NO
-
-# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
-# and project file content.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_INDEX_ENCODING =
-
-# 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. Furthermore it
-# enables the Previous and Next buttons.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members to
-# the table of contents of the HTML help documentation and to the tree view.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-TOC_EXPAND = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
-# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
-# (.qch) of the generated HTML documentation.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_QHP = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
-# the file name of the resulting .qch file. The path specified is relative to
-# the HTML output folder.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QCH_FILE =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
-# Project output. For more information please see Qt Help Project / Namespace
-# (see:
-# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace).
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_NAMESPACE = org.doxygen.Project
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
-# Help Project output. For more information please see Qt Help Project / Virtual
-# Folders (see:
-# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders).
-# The default value is: doc.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_VIRTUAL_FOLDER = doc
-
-# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
-# filter to add. For more information please see Qt Help Project / Custom
-# Filters (see:
-# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_NAME =
-
-# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
-# custom filter to add. For more information please see Qt Help Project / Custom
-# Filters (see:
-# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_ATTRS =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
-# project's filter section matches. Qt Help Project / Filter Attributes (see:
-# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_SECT_FILTER_ATTRS =
-
-# The QHG_LOCATION tag can be used to specify the location (absolute path
-# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to
-# run qhelpgenerator on the generated .qhp file.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHG_LOCATION =
-
-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
-# generated, together with the HTML files, they form an Eclipse help plugin. To
-# install this plugin and make it available under the help contents menu in
-# Eclipse, the contents of the directory containing the HTML and XML files needs
-# to be copied into the plugins directory of eclipse. The name of the directory
-# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
-# After copying Eclipse needs to be restarted before the help appears.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_ECLIPSEHELP = NO
-
-# A unique identifier for the Eclipse help plugin. When installing the plugin
-# the directory name containing the HTML and XML files should also have this
-# name. Each documentation set should have its own identifier.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
-
-ECLIPSE_DOC_ID = org.doxygen.Project
-
-# If you want full control over the layout of the generated HTML pages it might
-# be necessary to disable the index and replace it with your own. The
-# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
-# of each HTML page. A value of NO enables the index and the value YES disables
-# it. Since the tabs in the index contain the same information as the navigation
-# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-DISABLE_INDEX = NO
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information. If the tag
-# value 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
-# (i.e. any modern browser). Windows users are probably better off using the
-# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can
-# further fine tune the look of the index (see "Fine-tuning the output"). As an
-# example, the default style sheet generated by doxygen has an example that
-# shows how to put an image at the root of the tree instead of the PROJECT_NAME.
-# Since the tree basically has the same information as the tab index, you could
-# consider setting DISABLE_INDEX to YES when enabling this option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_TREEVIEW = NO
-
-# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the
-# FULL_SIDEBAR option determines if the side bar is limited to only the treeview
-# area (value NO) or if it should extend to the full height of the window (value
-# YES). Setting this to YES gives a layout similar to
-# https://docs.readthedocs.io with more room for contents, but less room for the
-# project logo, title, and description. If either GENERATE_TREEVIEW or
-# DISABLE_INDEX is set to NO, this option has no effect.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FULL_SIDEBAR = NO
-
-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
-# doxygen will group on one line in the generated HTML documentation.
-#
-# Note that a value of 0 will completely suppress the enum values from appearing
-# in the overview section.
-# Minimum value: 0, maximum value: 20, default value: 4.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-ENUM_VALUES_PER_LINE = 4
-
-# 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.
-# Minimum value: 0, maximum value: 1500, default value: 250.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-TREEVIEW_WIDTH = 250
-
-# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
-# external symbols imported via tag files in a separate window.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-EXT_LINKS_IN_WINDOW = NO
-
-# If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email
-# addresses.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-OBFUSCATE_EMAILS = YES
-
-# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg
-# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see
-# https://inkscape.org) to generate formulas as SVG images instead of PNGs for
-# the HTML output. These images will generally look nicer at scaled resolutions.
-# Possible values are: png (the default) and svg (looks nicer but requires the
-# pdf2svg or inkscape tool).
-# The default value is: png.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FORMULA_FORMAT = png
-
-# Use this tag to change the font size of LaTeX formulas included as images in
-# the HTML documentation. When you change the font size after a successful
-# doxygen run you need to manually remove any form_*.png images from the HTML
-# output directory to force them to be regenerated.
-# Minimum value: 8, maximum value: 50, default value: 10.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_FONTSIZE = 10
-
-# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands
-# to create new LaTeX commands to be used in formulas as building blocks. See
-# the section "Including formulas" for details.
-
-FORMULA_MACROFILE =
-
-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
-# https://www.mathjax.org) which uses client side JavaScript for the rendering
-# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
-# installed or if you want to formulas look prettier in the HTML output. When
-# enabled you may also need to install MathJax separately and configure the path
-# to it using the MATHJAX_RELPATH option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-USE_MATHJAX = NO
-
-# With MATHJAX_VERSION it is possible to specify the MathJax version to be used.
-# Note that the different versions of MathJax have different requirements with
-# regards to the different settings, so it is possible that also other MathJax
-# settings have to be changed when switching between the different MathJax
-# versions.
-# Possible values are: MathJax_2 and MathJax_3.
-# The default value is: MathJax_2.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_VERSION = MathJax_2
-
-# When MathJax is enabled you can set the default output format to be used for
-# the MathJax output. For more details about the output format see MathJax
-# version 2 (see:
-# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3
-# (see:
-# http://docs.mathjax.org/en/latest/web/components/output.html).
-# Possible values are: HTML-CSS (which is slower, but has the best
-# compatibility. This is the name for Mathjax version 2, for MathJax version 3
-# this will be translated into chtml), NativeMML (i.e. MathML. Only supported
-# for NathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This
-# is the name for Mathjax version 3, for MathJax version 2 this will be
-# translated into HTML-CSS) and SVG.
-# The default value is: HTML-CSS.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_FORMAT = HTML-CSS
-
-# When MathJax is enabled you need to specify the location relative to the HTML
-# output directory using the MATHJAX_RELPATH option. The destination directory
-# should contain the MathJax.js script. For instance, if the mathjax directory
-# is located at the same level as the HTML output directory, then
-# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
-# Content Delivery Network so you can quickly see the result without installing
-# MathJax. However, it is strongly recommended to install a local copy of
-# MathJax from https://www.mathjax.org before deployment. The default value is:
-# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2
-# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_RELPATH = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/
-
-# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
-# extension names that should be enabled during MathJax rendering. For example
-# for MathJax version 2 (see
-# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions):
-# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
-# For example for MathJax version 3 (see
-# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html):
-# MATHJAX_EXTENSIONS = ams
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_EXTENSIONS =
-
-# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
-# of code that will be used on startup of the MathJax code. See the MathJax site
-# (see:
-# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an
-# example see the documentation.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_CODEFILE =
-
-# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
-# the HTML output. The underlying search engine uses javascript and DHTML and
-# should work on any modern browser. Note that when using HTML help
-# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
-# there is already a search function so this one should typically be disabled.
-# For large projects the javascript based search engine can be slow, then
-# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
-# search using the keyboard; to jump to the search box use <access key> + S
-# (what the <access key> is depends on the OS and browser, but it is typically
-# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
-# key> to jump into the search results window, the results can be navigated
-# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
-# the search. The filter options can be selected when the cursor is inside the
-# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
-# to select a filter and <Enter> or <escape> to activate or cancel the filter
-# option.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
SEARCHENGINE = NO
-
-# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
-# implemented using a web server instead of a web client using JavaScript. There
-# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
-# setting. When disabled, doxygen will generate a PHP script for searching and
-# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
-# and searching needs to be provided by external tools. See the section
-# "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SERVER_BASED_SEARCH = NO
-
-# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
-# script for searching. Instead the search results are written to an XML file
-# which needs to be processed by an external indexer. Doxygen will invoke an
-# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
-# search results.
-#
-# Doxygen ships with an example indexer (doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see:
-# https://xapian.org/).
-#
-# See the section "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH = NO
-
-# The SEARCHENGINE_URL should point to a search engine hosted by a web server
-# which will return the search results when EXTERNAL_SEARCH is enabled.
-#
-# Doxygen ships with an example indexer (doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see:
-# https://xapian.org/). See the section "External Indexing and Searching" for
-# details.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHENGINE_URL =
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
-# search data is written to a file for indexing by an external tool. With the
-# SEARCHDATA_FILE tag the name of this file can be specified.
-# The default file is: searchdata.xml.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHDATA_FILE = searchdata.xml
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
-# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
-# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
-# projects and redirect the results back to the right project.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH_ID =
-
-# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
-# projects other than the one defined by this configuration file, but that are
-# all added to the same external search index. Each project needs to have a
-# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
-# to a relative location where the documentation can be found. The format is:
-# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTRA_SEARCH_MAPPINGS =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
-# The default value is: YES.
-
GENERATE_LATEX = NO
-
-# 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.
-# The default directory is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_OUTPUT = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked.
-#
-# Note that when not enabling USE_PDFLATEX the default is latex when enabling
-# USE_PDFLATEX the default is pdflatex and when in the later case latex is
-# chosen this is overwritten by pdflatex. For specific output languages the
-# default can have been set differently, this depends on the implementation of
-# the output language.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_CMD_NAME = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
-# index for LaTeX.
-# Note: This tag is used in the Makefile / make.bat.
-# See also: LATEX_MAKEINDEX_CMD for the part in the generated output file
-# (.tex).
-# The default file is: makeindex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-MAKEINDEX_CMD_NAME = makeindex
-
-# The LATEX_MAKEINDEX_CMD tag can be used to specify the command name to
-# generate index for LaTeX. In case there is no backslash (\) as first character
-# it will be automatically added in the LaTeX code.
-# Note: This tag is used in the generated output file (.tex).
-# See also: MAKEINDEX_CMD_NAME for the part in the Makefile / make.bat.
-# The default value is: makeindex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_MAKEINDEX_CMD = 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.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-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 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
-# 14 inches) and executive (7.25 x 10.5 inches).
-# The default value is: a4.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PAPER_TYPE = a4
-
-# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
-# that should be included in the LaTeX output. The package can be specified just
-# by its name or with the correct syntax as to be used with the LaTeX
-# \usepackage command. To get the times font for instance you can specify :
-# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times}
-# To use the option intlimits with the amsmath package you can specify:
-# EXTRA_PACKAGES=[intlimits]{amsmath}
-# If left blank no extra packages will be included.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-EXTRA_PACKAGES =
-
-# The LATEX_HEADER tag can be used to specify a user-defined 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. It
-# is highly recommended to start with a default header using
-# doxygen -w latex new_header.tex new_footer.tex new_stylesheet.sty
-# and then modify the file new_header.tex. See also section "Doxygen usage" for
-# information on how to generate the default header that doxygen normally uses.
-#
-# Note: Only use a user-defined header if you know what you are doing!
-# Note: The header is subject to change so you typically have to regenerate the
-# default header when upgrading to a newer version of doxygen. The following
-# commands have a special meaning inside the header (and footer): For a
-# description of the possible markers and block names see the documentation.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HEADER =
-
-# The LATEX_FOOTER tag can be used to specify a user-defined LaTeX footer for
-# the generated LaTeX document. The footer should contain everything after the
-# last chapter. If it is left blank doxygen will generate a standard footer. See
-# LATEX_HEADER for more information on how to generate a default footer and what
-# special commands can be used inside the footer. See also section "Doxygen
-# usage" for information on how to generate the default footer that doxygen
-# normally uses. Note: Only use a user-defined footer if you know what you are
-# doing!
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_FOOTER =
-
-# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
-# LaTeX style sheets that are included after the standard style sheets created
-# by doxygen. Using this option one can overrule certain style aspects. Doxygen
-# will copy the style sheet files to the output directory.
-# Note: The order of the extra style sheet files is of importance (e.g. the last
-# style sheet in the list overrules the setting of the previous ones in the
-# list).
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_EXTRA_STYLESHEET =
-
-# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the LATEX_OUTPUT output
-# directory. Note that the files will be copied as-is; there are no commands or
-# markers available.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_EXTRA_FILES =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
-# prepared for conversion to PDF (using ps2pdf or pdflatex). 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.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PDF_HYPERLINKS = NO
-
-# If the USE_PDFLATEX tag is set to YES, doxygen will use the engine as
-# specified with LATEX_CMD_NAME to generate the PDF file directly from the LaTeX
-# files. Set this option to YES, to get a higher quality PDF documentation.
-#
-# See also section LATEX_CMD_NAME for selecting the engine.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-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.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BATCHMODE = NO
-
-# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
-# index chapters (such as File Index, Compound Index, etc.) in the output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HIDE_INDICES = NO
-
-# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
-# bibliography, e.g. plainnat, or ieeetr. See
-# https://en.wikipedia.org/wiki/BibTeX and \cite for more info.
-# The default value is: plain.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BIB_STYLE = plain
-
-# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated
-# page will contain the date and time when the page was generated. Setting this
-# to NO can help when comparing the output of multiple runs.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_TIMESTAMP = NO
-
-# The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute)
-# path from which the emoji images will be read. If a relative path is entered,
-# it will be relative to the LATEX_OUTPUT directory. If left blank the
-# LATEX_OUTPUT directory will be used.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_EMOJI_DIRECTORY =
-
-#---------------------------------------------------------------------------
-# 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 too pretty with other RTF
-# readers/editors.
-# The default value is: NO.
-
-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.
-# The default directory is: rtf.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-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.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-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 some other Word compatible readers that support those
-# fields.
-#
-# Note: WordPad (write) and others do not support links.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_HYPERLINKS = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's
-# configuration file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
-#
-# See also section "Doxygen usage" for information on how to generate the
-# default style sheet that doxygen normally uses.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_STYLESHEET_FILE =
-
-# Set optional variables used in the generation of an RTF document. Syntax is
-# similar to doxygen's configuration file. A template extensions file can be
-# generated using doxygen -e rtf extensionFile.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_EXTENSIONS_FILE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
-# classes and files.
-# The default value is: NO.
-
-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. A directory man3 will be created inside the directory specified by
-# MAN_OUTPUT.
-# The default directory is: man.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_OUTPUT = man
-
-# The MAN_EXTENSION tag determines the extension that is added to the generated
-# man pages. In case the manual section does not start with a number, the number
-# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
-# optional.
-# The default value is: .3.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_EXTENSION = .3
-
-# The MAN_SUBDIR tag determines the name of the directory created within
-# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
-# MAN_EXTENSION with the initial . removed.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_SUBDIR =
-
-# 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 value is: NO.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-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.
-# The default value is: NO.
-
-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.
-# The default directory is: xml.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_OUTPUT = xml
-
-# 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.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_PROGRAMLISTING = NO
-
-# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, doxygen will include
-# namespace members in file scope as well, matching the HTML output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_NS_MEMB_FILE_SCOPE = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the DOCBOOK output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
-# that can be used to generate PDF.
-# The default value is: NO.
-
-GENERATE_DOCBOOK = NO
-
-# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
-# front of it.
-# The default directory is: docbook.
-# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
-
-DOCBOOK_OUTPUT = docbook
-
-#---------------------------------------------------------------------------
-# Configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
-# AutoGen Definitions (see http://autogen.sourceforge.net/) file that captures
-# the structure of the code including all documentation. Note that this feature
-# is still experimental and incomplete at the moment.
-# The default value is: NO.
-
-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.
-# The default value is: NO.
-
-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.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-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.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-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.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
-# C-preprocessor directives found in the sources and include files.
-# The default value is: YES.
-
-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, only conditional compilation will be
-# performed. Macro expansion can be done in a controlled way by setting
-# EXPAND_ONLY_PREDEF to YES.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set 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.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
EXPAND_ONLY_PREDEF = YES
-
-# If the SEARCH_INCLUDES tag is set to YES, the include files in the
-# INCLUDE_PATH will be searched if a #include is found.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-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. Note that the INCLUDE_PATH is not recursive, so the setting of
-# RECURSIVE has no effect here.
-# This tag requires that the tag SEARCH_INCLUDES is set to YES.
-
-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.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-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 e.g.
-# 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.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
PREDEFINED = LZMA_API(type)=type \
LZMA_API_IMPORT= \
LZMA_API_CALL= \
tuklib_attr_noreturn= \
lzma_attribute(attr)= \
lzma_attr_alloc_size(size)=
-
-# 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 that overrules the
-# definition found in the source code.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_AS_DEFINED =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
-# remove all references to 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.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SKIP_FUNCTION_MACROS = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES tag can be used to specify one or more tag files. For each tag
-# file the location of the external documentation should be added. 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. See the
-# section "Linking to external documentation" for more information about the use
-# of tag files.
-# Note: 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. See section "Linking to
-# external documentation" for more information about the usage of tag files.
-
-GENERATE_TAGFILE =
-
-# If the ALLEXTERNALS tag is set to YES, all external class will be listed in
-# the class index. If set to NO, only the inherited external classes will be
-# listed.
-# The default value is: NO.
-
-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.
-# The default value is: YES.
-
-EXTERNAL_GROUPS = YES
-
-# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in
-# the related pages index. If set to NO, only the current project's pages will
-# be listed.
-# The default value is: YES.
-
-EXTERNAL_PAGES = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# You can include diagrams made with dia in doxygen documentation. Doxygen will
-# then run dia to produce the diagram and insert it in the documentation. The
-# DIA_PATH tag allows you to specify the directory where the dia binary resides.
-# If left empty dia is assumed to be found in the default search path.
-
-DIA_PATH =
-
-# 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.
-# The default value is: YES.
-
-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 (see:
-# http://www.graphviz.org/), 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 value is: NO.
-
-HAVE_DOT = NO
-
-# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
-# to run in parallel. When set to 0 doxygen will base this on the number of
-# processors available in the system. You can set it explicitly to a value
-# larger than 0 to get control over the balance between CPU load and processing
-# speed.
-# Minimum value: 0, maximum value: 32, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_NUM_THREADS = 0
-
-# DOT_COMMON_ATTR is common attributes for nodes, edges and labels of
-# subgraphs. When you want a differently looking font in the dot files that
-# doxygen generates you can specify fontname, fontcolor and fontsize attributes.
-# For details please see <a href=https://graphviz.org/doc/info/attrs.html>Node,
-# Edge and Graph Attributes specification</a> You need to make sure dot is able
-# to find the font, which can be done by putting it in a standard location or by
-# setting the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
-# directory containing the font. Default graphviz fontsize is 14.
-# The default value is: fontname=Helvetica,fontsize=10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_COMMON_ATTR = "fontname=Helvetica,fontsize=10"
-
-# DOT_EDGE_ATTR is concatenated with DOT_COMMON_ATTR. For elegant style you can
-# add 'arrowhead=open, arrowtail=open, arrowsize=0.5'. <a
-# href=https://graphviz.org/doc/info/arrows.html>Complete documentation about
-# arrows shapes.</a>
-# The default value is: labelfontname=Helvetica,labelfontsize=10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_EDGE_ATTR = "labelfontname=Helvetica,labelfontsize=10"
-
-# DOT_NODE_ATTR is concatenated with DOT_COMMON_ATTR. For view without boxes
-# around nodes set 'shape=plain' or 'shape=plaintext' <a
-# href=https://www.graphviz.org/doc/info/shapes.html>Shapes specification</a>
-# The default value is: shape=box,height=0.2,width=0.4.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_NODE_ATTR = "shape=box,height=0.2,width=0.4"
-
-# You can set the path where dot can find font specified with fontname in
-# DOT_COMMON_ATTR and others dot attributes.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTPATH =
-
-# If the CLASS_GRAPH tag is set to YES (or GRAPH) then doxygen will generate a
-# graph for each documented class showing the direct and indirect inheritance
-# relations. In case HAVE_DOT is set as well dot will be used to draw the graph,
-# otherwise the built-in generator will be used. If the CLASS_GRAPH tag is set
-# to TEXT the direct and indirect inheritance relations will be shown as texts /
-# links.
-# Possible values are: NO, YES, TEXT and GRAPH.
-# The default value is: YES.
-
-CLASS_GRAPH = YES
-
-# If the COLLABORATION_GRAPH tag is 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.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-COLLABORATION_GRAPH = YES
-
-# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
-# groups, showing the direct groups dependencies. See also the chapter Grouping
-# in the manual.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-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.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LOOK = NO
-
-# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
-# class node. If there are many fields or methods and many nodes the graph may
-# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
-# number of items for each type to make the size more manageable. Set this to 0
-# for no limit. Note that the threshold may be exceeded by 50% before the limit
-# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
-# but if the number exceeds 15, the total amount of fields shown is limited to
-# 10.
-# Minimum value: 0, maximum value: 100, default value: 10.
-# This tag requires that the tag UML_LOOK is set to YES.
-
-UML_LIMIT_NUM_FIELDS = 10
-
-# If the DOT_UML_DETAILS tag is set to NO, doxygen will show attributes and
-# methods without types and arguments in the UML graphs. If the DOT_UML_DETAILS
-# tag is set to YES, doxygen will add type and arguments for attributes and
-# methods in the UML graphs. If the DOT_UML_DETAILS tag is set to NONE, doxygen
-# will not generate fields with class member information in the UML graphs. The
-# class diagrams will look similar to the default class diagrams but using UML
-# notation for the relationships.
-# Possible values are: NO, YES and NONE.
-# The default value is: NO.
-# This tag requires that the tag UML_LOOK is set to YES.
-
-DOT_UML_DETAILS = NO
-
-# The DOT_WRAP_THRESHOLD tag can be used to set the maximum number of characters
-# to display on a single line. If the actual line length exceeds this threshold
-# significantly it will wrapped across multiple lines. Some heuristics are apply
-# to avoid ugly line breaks.
-# Minimum value: 0, maximum value: 1000, default value: 17.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_WRAP_THRESHOLD = 17
-
-# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
-# collaboration graphs will show the relations between templates and their
-# instances.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-TEMPLATE_RELATIONS = NO
-
-# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES 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.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDE_GRAPH = YES
-
-# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES 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.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDED_BY_GRAPH = YES
-
-# If the CALL_GRAPH tag is 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. Disabling a call graph can be
-# accomplished by means of the command \hidecallgraph.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALL_GRAPH = NO
-
-# If the CALLER_GRAPH tag is 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. Disabling a caller graph can be
-# accomplished by means of the command \hidecallergraph.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALLER_GRAPH = NO
-
-# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
-# hierarchy of all classes instead of a textual one.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GRAPHICAL_HIERARCHY = YES
-
-# If the DIRECTORY_GRAPH tag is 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.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DIRECTORY_GRAPH = YES
-
-# The DIR_GRAPH_MAX_DEPTH tag can be used to limit the maximum number of levels
-# of child directories generated in directory dependency graphs by dot.
-# Minimum value: 1, maximum value: 25, default value: 1.
-# This tag requires that the tag DIRECTORY_GRAPH is set to YES.
-
-DIR_GRAPH_MAX_DEPTH = 1
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. For an explanation of the image formats see the section
-# output formats in the documentation of the dot tool (Graphviz (see:
-# http://www.graphviz.org/)).
-# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
-# to make the SVG files visible in IE 9+ (other browsers do not have this
-# requirement).
-# Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo,
-# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and
-# png:gdiplus:gdiplus.
-# The default value is: png.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_IMAGE_FORMAT = png
-
-# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
-# enable generation of interactive SVG images that allow zooming and panning.
-#
-# Note that this requires a modern browser other than Internet Explorer. Tested
-# and working are Firefox, Chrome, Safari, and Opera.
-# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
-# the SVG files visible. Older versions of IE do not have SVG support.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INTERACTIVE_SVG = NO
-
-# The DOT_PATH tag 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.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-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).
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOTFILE_DIRS =
-
-# The MSCFILE_DIRS tag can be used to specify one or more directories that
-# contain msc files that are included in the documentation (see the \mscfile
-# command).
-
-MSCFILE_DIRS =
-
-# The DIAFILE_DIRS tag can be used to specify one or more directories that
-# contain dia files that are included in the documentation (see the \diafile
-# command).
-
-DIAFILE_DIRS =
-
-# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
-# path where java can find the plantuml.jar file or to the filename of jar file
-# to be used. If left blank, it is assumed PlantUML is not used or called during
-# a preprocessing step. Doxygen will generate a warning when it encounters a
-# \startuml command in this case and will not generate output for the diagram.
-
-PLANTUML_JAR_PATH =
-
-# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a
-# configuration file for plantuml.
-
-PLANTUML_CFG_FILE =
-
-# When using plantuml, the specified paths are searched for files specified by
-# the !include statement in a plantuml block.
-
-PLANTUML_INCLUDE_PATH =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
-# that will be shown in the graph. If the number of nodes in a graph becomes
-# larger than this value, doxygen will truncate the graph, which is visualized
-# by representing a node as a red box. Note that doxygen if the number of direct
-# children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
-# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-# Minimum value: 0, maximum value: 10000, default value: 50.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_GRAPH_MAX_NODES = 50
-
-# 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 the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-# Minimum value: 0, maximum value: 1000, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-MAX_DOT_GRAPH_DEPTH = 0
-
-# Set the DOT_MULTI_TARGETS tag to YES to 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.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_MULTI_TARGETS = NO
-
-# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
-# explaining the meaning of the various boxes and arrows in the dot generated
-# graphs.
-# Note: This tag requires that UML_LOOK isn't set, i.e. the doxygen internal
-# graphical representation for inheritance and collaboration diagrams is used.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GENERATE_LEGEND = YES
-
-# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate
-# files that are used to generate the various graphs.
-#
-# Note: This setting is not only used for dot files but also for msc temporary
-# files.
-# The default value is: YES.
-
-DOT_CLEANUP = YES
diff --git a/doxygen/update-doxygen b/doxygen/update-doxygen
index a510319..c5d6ad3 100755
--- a/doxygen/update-doxygen
+++ b/doxygen/update-doxygen
@@ -1,53 +1,86 @@
#!/bin/sh
-#
+# SPDX-License-Identifier: 0BSD
+
#############################################################################
#
-# Updates the Doxygen generated documentation files in the source tree.
-# If the doxygen command is not installed, it will exit with an error.
-# This script can generate Doxygen documentation for all source files or for
-# just liblzma API header files.
+# While it's possible to use the Doxyfile as is to generate liblzma API
+# documentation, it is recommended to use this script because this adds
+# the XZ Utils version number to the generated HTML.
#
-# It is recommended to use this script to update the Doxygen-generated HTML
-# files since this will include the package version in the output and,
-# in case of liblzma API docs, strip JavaScript files from the output.
+# Other features:
+# - Generate documentation of the XZ Utils internals.
+# - Set input and output paths for out-of-tree builds.
#
#############################################################################
#
# Authors: Jia Tan
# Lasse Collin
#
-# This file has been put into the public domain.
-# You can do whatever you want with this file.
-#
#############################################################################
set -e
+show_usage()
+{
+ echo "Usage: $0 <api|internal> [ABS_TOP_SRCDIR ABS_OUTDIR]"
+ echo
+ echo "Supported modes:"
+ echo " - 'api' (default): liblzma API docs into doc/api"
+ echo " - 'internal': internal docs into doc/internal"
+ echo
+ echo "Absolute source and output dirs may be set" \
+ "to do an out-of-tree build."
+ echo "The output directory must already exist."
+ exit 1
+}
+
+case $1 in
+ api|internal)
+ ;;
+ *)
+ show_usage
+ ;;
+esac
+
if type doxygen > /dev/null 2>&1; then
:
else
- echo "doxygen/update-doxygen: 'doxygen' command not found." >&2
- echo "doxygen/update-doxygen: Skipping Doxygen docs generation." >&2
+ echo "$0: 'doxygen' command not found" >&2
exit 1
fi
-if test ! -f Doxyfile; then
- cd `dirname "$0"` || exit 1
- if test ! -f Doxyfile; then
- echo "doxygen/update-doxygen: Cannot find Doxyfile" >&2
- exit 1
- fi
+case $# in
+ 1)
+ # One argument: Building inside the source tree
+ ABS_TOP_SRCDIR=`dirname "$0"`/..
+ ABS_OUTDIR=$ABS_TOP_SRCDIR/doc
+ ;;
+ 3)
+ # Three arguments: Possibly an out of tree build
+ ABS_TOP_SRCDIR=$2
+ ABS_OUTDIR=$3
+ ;;
+ *)
+ show_usage
+ ;;
+esac
+
+if test ! -f "$ABS_TOP_SRCDIR/doxygen/Doxyfile"; then
+ echo "$0: Source dir '$ABS_TOP_SRCDIR/doxygen/Doxyfile' not found" >&2
+ exit 1
+fi
+if test ! -d "$ABS_OUTDIR"; then
+ echo "$0: Output dir '$ABS_OUTDIR' not found" >&2
+ exit 1
fi
# Get the package version so that it can be included in the generated docs.
-PACKAGE_VERSION=`cd .. && sh build-aux/version.sh` || exit 1
+PACKAGE_VERSION=`cd "$ABS_TOP_SRCDIR" && sh build-aux/version.sh`
-# If no arguments are specified, default to generating liblzma API header
-# documentation only.
case $1 in
- '' | api)
+ api)
# Remove old documentation before re-generating the new.
- rm -rf ../doc/api
+ rm -rf "$ABS_OUTDIR/api"
# Generate the HTML documentation by preparing the Doxyfile
# in stdin and piping the result to the doxygen command.
@@ -55,57 +88,27 @@ case $1 in
# override any earlier assignment. So, we can use this
# feature to override the tags that need to change between
# "api" and "internal" modes.
+ ABS_SRCDIR=$ABS_TOP_SRCDIR/src/liblzma/api
(
- cat Doxyfile
+ cat "$ABS_TOP_SRCDIR/doxygen/Doxyfile"
echo "PROJECT_NUMBER = $PACKAGE_VERSION"
- ) | doxygen -
-
- # As of Doxygen 1.8.0 - 1.9.6 and the Doxyfile options we use,
- # the output is good without any JavaScript. Unfortunately
- # Doxygen doesn't have an option to disable JavaScript usage
- # completely so we strip it away with the hack below.
- #
- # Omitting the JavaScript code avoids some license hassle
- # as jquery.js is fairly big, it contains more than jQuery
- # itself, and doesn't include the actual license text (it
- # only refers to the MIT license by name).
- echo "Stripping JavaScript from Doxygen output..."
- for F in ../doc/api/*.html
- do
- sed 's/<script [^>]*><\/script>//g
- s/onclick="[^"]*"//g' \
- "$F" > ../doc/api/tmp
- mv -f ../doc/api/tmp "$F"
- done
- rm -f ../doc/api/*.js
+ echo "OUTPUT_DIRECTORY = $ABS_OUTDIR"
+ echo "STRIP_FROM_PATH = $ABS_SRCDIR"
+ echo "INPUT = $ABS_SRCDIR"
+ ) | doxygen -q -
;;
internal)
- # The docs from internal aren't for distribution so
- # the JavaScript files aren't an issue here.
- rm -rf ../doc/internal
+ rm -rf "$ABS_OUTDIR/internal"
(
- cat Doxyfile
- echo "PROJECT_NUMBER = $PACKAGE_VERSION"
+ cat "$ABS_TOP_SRCDIR/doxygen/Doxyfile"
echo 'PROJECT_NAME = "XZ Utils"'
- echo 'STRIP_FROM_PATH = ../src'
- echo 'INPUT = ../src'
+ echo "PROJECT_NUMBER = $PACKAGE_VERSION"
+ echo "OUTPUT_DIRECTORY = $ABS_OUTDIR"
+ echo "STRIP_FROM_PATH = $ABS_TOP_SRCDIR"
+ echo "INPUT = $ABS_TOP_SRCDIR/src"
echo 'HTML_OUTPUT = internal'
- echo 'EXTRACT_PRIVATE = YES'
- echo 'EXTRACT_STATIC = YES'
- echo 'EXTRACT_LOCAL_CLASSES = YES'
echo 'SEARCHENGINE = YES'
- ) | doxygen -
- ;;
-
- *)
- echo "doxygen/update-doxygen: Error: mode argument '$1'" \
- "is not supported." >&2
- echo "doxygen/update-doxygen: Supported modes:" >&2
- echo "doxygen/update-doxygen: - 'api' (default):" \
- "liblzma API docs into doc/api" >&2
- echo "doxygen/update-doxygen: - 'internal':"\
- "internal docs into doc/internal" >&2
- exit 1
+ ) | doxygen -q -
;;
esac
diff --git a/extra/7z2lzma/7z2lzma.bash b/extra/7z2lzma/7z2lzma.bash
index 1777c78..351108c 100755
--- a/extra/7z2lzma/7z2lzma.bash
+++ b/extra/7z2lzma/7z2lzma.bash
@@ -1,5 +1,6 @@
#!/bin/bash
-#
+# SPDX-License-Identifier: 0BSD
+
#############################################################################
#
# 7z2lzma.bash is very primitive .7z to .lzma converter. The input file must
@@ -17,9 +18,6 @@
#
# Author: Lasse Collin <lasse.collin@tukaani.org>
#
-# 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.
diff --git a/extra/scanlzma/scanlzma.c b/extra/scanlzma/scanlzma.c
index 110f822..1c8fcd8 100644
--- a/extra/scanlzma/scanlzma.c
+++ b/extra/scanlzma/scanlzma.c
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
/*
scanlzma, scan for lzma compressed data in stdin and echo it to stdout.
Copyright (C) 2006 Timo Lindfors
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 0dbd9c4..3309e22 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -1,3 +1,5 @@
+## SPDX-License-Identifier: GPL-2.0-or-later
+
##
## Copyright (C) 2004-2007 Free Software Foundation, Inc.
##
@@ -21,7 +23,17 @@ libgnu_a_SOURCES =
libgnu_a_DEPENDENCIES = $(LIBOBJS)
libgnu_a_LIBADD = $(LIBOBJS)
-EXTRA_DIST = getopt.in.h getopt.c getopt1.c getopt_int.h
+EXTRA_DIST = \
+ getopt.in.h \
+ getopt.c \
+ getopt1.c \
+ getopt_int.h \
+ getopt-cdefs.h \
+ getopt-core.h \
+ getopt-ext.h \
+ getopt-pfx-core.h \
+ getopt-pfx-ext.h
+
BUILT_SOURCES = $(GETOPT_H)
MOSTLYCLEANFILES = getopt.h getopt.h-t
diff --git a/lib/Makefile.in b/lib/Makefile.in
index 3ad8d14..0493684 100644
--- a/lib/Makefile.in
+++ b/lib/Makefile.in
@@ -90,8 +90,8 @@ build_triplet = @build@
host_triplet = @host@
subdir = lib
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_capsicum.m4 \
- $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/getopt.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
+ $(top_srcdir)/m4/build-to-host.m4 $(top_srcdir)/m4/getopt.m4 \
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/host-cpu-c-abi.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -183,7 +183,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CAPSICUM_LIB = @CAPSICUM_LIB@
CC = @CC@
CCAS = @CCAS@
CCASDEPMODE = @CCASDEPMODE@
@@ -312,6 +311,8 @@ install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
+localedir_c = @localedir_c@
+localedir_c_make = @localedir_c_make@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
@@ -334,7 +335,17 @@ 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
+EXTRA_DIST = \
+ getopt.in.h \
+ getopt.c \
+ getopt1.c \
+ getopt_int.h \
+ getopt-cdefs.h \
+ getopt-core.h \
+ getopt-ext.h \
+ getopt-pfx-core.h \
+ getopt-pfx-ext.h
+
BUILT_SOURCES = $(GETOPT_H)
MOSTLYCLEANFILES = getopt.h getopt.h-t
all: $(BUILT_SOURCES)
diff --git a/lib/getopt-cdefs.h b/lib/getopt-cdefs.h
new file mode 100644
index 0000000..576428c
--- /dev/null
+++ b/lib/getopt-cdefs.h
@@ -0,0 +1,72 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+/* getopt-on-non-glibc compatibility macros.
+ Copyright (C) 1989-2023 Free Software Foundation, Inc.
+ This file is part of gnulib.
+ Unlike most of the getopt implementation, it is NOT shared
+ with the GNU C Library.
+
+ This file 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 file 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, see <https://www.gnu.org/licenses/>. */
+
+#ifndef _GETOPT_CDEFS_H
+#define _GETOPT_CDEFS_H 1
+
+/* This header should not be used directly; include getopt.h or
+ unistd.h instead. It does not have a protective #error, because
+ the guard macro for getopt.h in gnulib is not fixed. */
+
+/* getopt-core.h and getopt-ext.h are shared with GNU libc, and expect
+ a number of the internal macros supplied to GNU libc's headers by
+ sys/cdefs.h. Provide fallback definitions for all of them. */
+#ifdef HAVE_SYS_CDEFS_H
+# include <sys/cdefs.h>
+#endif
+
+#ifndef __BEGIN_DECLS
+# ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# else
+# define __BEGIN_DECLS /* nothing */
+# endif
+#endif
+#ifndef __END_DECLS
+# ifdef __cplusplus
+# define __END_DECLS }
+# else
+# define __END_DECLS /* nothing */
+# endif
+#endif
+
+#ifndef __GNUC_PREREQ
+# if defined __GNUC__ && defined __GNUC_VERSION__
+# define __GNUC_PREREQ(maj, min) \
+ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+# else
+# define __GNUC_PREREQ(maj, min) 0
+# endif
+#endif
+
+#ifndef __THROW
+# if defined __cplusplus && (__GNUC_PREREQ (2,8) || __clang_major__ >= 4)
+# if __cplusplus >= 201103L
+# define __THROW noexcept (true)
+# else
+# define __THROW throw ()
+# endif
+# else
+# define __THROW
+# endif
+#endif
+
+#endif /* _GETOPT_CDEFS_H */
diff --git a/lib/getopt-core.h b/lib/getopt-core.h
new file mode 100644
index 0000000..126ce80
--- /dev/null
+++ b/lib/getopt-core.h
@@ -0,0 +1,98 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+/* Declarations for getopt (basic, portable features only).
+ Copyright (C) 1989-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library and is also part of gnulib.
+ Patches to this file should be submitted to both projects.
+
+ The GNU C 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.
+
+ The GNU C 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 the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#ifndef _GETOPT_CORE_H
+#define _GETOPT_CORE_H 1
+
+/* This header should not be used directly; include getopt.h or
+ unistd.h instead. Unlike most bits headers, it does not have
+ a protective #error, because the guard macro for getopt.h in
+ gnulib is not fixed. */
+
+__BEGIN_DECLS
+
+/* 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;
+
+/* 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.
+
+ For standards compliance, the 'argv' argument has the type
+ char *const *, but this is inaccurate; if argument permutation is
+ enabled, the argv array (not the strings it points to) must be
+ writable. */
+
+extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
+ __THROW _GL_ARG_NONNULL ((2, 3));
+
+__END_DECLS
+
+#endif /* _GETOPT_CORE_H */
diff --git a/lib/getopt-ext.h b/lib/getopt-ext.h
new file mode 100644
index 0000000..006037b
--- /dev/null
+++ b/lib/getopt-ext.h
@@ -0,0 +1,79 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+/* Declarations for getopt (GNU extensions).
+ Copyright (C) 1989-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library and is also part of gnulib.
+ Patches to this file should be submitted to both projects.
+
+ The GNU C 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.
+
+ The GNU C 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 the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#ifndef _GETOPT_EXT_H
+#define _GETOPT_EXT_H 1
+
+/* This header should not be used directly; include getopt.h instead.
+ Unlike most bits headers, it does not have a protective #error,
+ because the guard macro for getopt.h in gnulib is not fixed. */
+
+__BEGIN_DECLS
+
+/* 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
+
+extern int getopt_long (int ___argc, char *__getopt_argv_const *___argv,
+ const char *__shortopts,
+ const struct option *__longopts, int *__longind)
+ __THROW _GL_ARG_NONNULL ((2, 3));
+extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv,
+ const char *__shortopts,
+ const struct option *__longopts, int *__longind)
+ __THROW _GL_ARG_NONNULL ((2, 3));
+
+__END_DECLS
+
+#endif /* _GETOPT_EXT_H */
diff --git a/lib/getopt-pfx-core.h b/lib/getopt-pfx-core.h
new file mode 100644
index 0000000..ee22d3f
--- /dev/null
+++ b/lib/getopt-pfx-core.h
@@ -0,0 +1,68 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+/* getopt (basic, portable features) gnulib wrapper header.
+ Copyright (C) 1989-2023 Free Software Foundation, Inc.
+ This file is part of gnulib.
+ Unlike most of the getopt implementation, it is NOT shared
+ with the GNU C Library.
+
+ This file 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 file 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, see <https://www.gnu.org/licenses/>. */
+
+#ifndef _GETOPT_PFX_CORE_H
+#define _GETOPT_PFX_CORE_H 1
+
+/* This header should not be used directly; include getopt.h or
+ unistd.h instead. It does not have a protective #error, because
+ the guard macro for getopt.h in gnulib is not fixed. */
+
+/* Standalone applications should #define __GETOPT_PREFIX to an
+ identifier that prefixes the external functions and variables
+ defined in getopt-core.h and getopt-ext.h. Systematically
+ rename identifiers so that they do not collide with the system
+ functions and variables. Renaming avoids problems with some
+ compilers and linkers. */
+#ifdef __GETOPT_PREFIX
+# ifndef __GETOPT_ID
+# 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)
+# endif
+# undef getopt
+# undef optarg
+# undef opterr
+# undef optind
+# undef optopt
+# define getopt __GETOPT_ID (getopt)
+# define optarg __GETOPT_ID (optarg)
+# define opterr __GETOPT_ID (opterr)
+# define optind __GETOPT_ID (optind)
+# define optopt __GETOPT_ID (optopt)
+
+/* Work around a problem on macOS, which declares getopt with a
+ trailing __DARWIN_ALIAS(getopt) that would expand to something like
+ __asm("_" "rpl_getopt" "$UNIX2003") were it not for the following
+ hack to suppress the macOS declaration <https://bugs.gnu.org/40205>. */
+# ifdef __APPLE__
+# define _GETOPT
+# endif
+
+/* The system's getopt.h may have already included getopt-core.h to
+ declare the unprefixed identifiers. Undef _GETOPT_CORE_H so that
+ getopt-core.h declares them with prefixes. */
+# undef _GETOPT_CORE_H
+#endif
+
+#include <getopt-core.h>
+
+#endif /* _GETOPT_PFX_CORE_H */
diff --git a/lib/getopt-pfx-ext.h b/lib/getopt-pfx-ext.h
new file mode 100644
index 0000000..00d2a09
--- /dev/null
+++ b/lib/getopt-pfx-ext.h
@@ -0,0 +1,72 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+/* getopt (GNU extensions) gnulib wrapper header.
+ Copyright (C) 1989-2023 Free Software Foundation, Inc.
+ This file is part of gnulib.
+ Unlike most of the getopt implementation, it is NOT shared
+ with the GNU C Library.
+
+ This file 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 file 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, see <https://www.gnu.org/licenses/>. */
+
+#ifndef _GETOPT_PFX_EXT_H
+#define _GETOPT_PFX_EXT_H 1
+
+/* This header should not be used directly; include getopt.h instead.
+ It does not have a protective #error, because the guard macro for
+ getopt.h in gnulib is not fixed. */
+
+/* Standalone applications should #define __GETOPT_PREFIX to an
+ identifier that prefixes the external functions and variables
+ defined in getopt-core.h and getopt-ext.h. Systematically
+ rename identifiers so that they do not collide with the system
+ functions and variables. Renaming avoids problems with some
+ compilers and linkers. */
+#ifdef __GETOPT_PREFIX
+# ifndef __GETOPT_ID
+# 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)
+# endif
+# undef getopt_long
+# undef getopt_long_only
+# undef option
+# undef _getopt_internal
+# define getopt_long __GETOPT_ID (getopt_long)
+# define getopt_long_only __GETOPT_ID (getopt_long_only)
+# define option __GETOPT_ID (option)
+# define _getopt_internal __GETOPT_ID (getopt_internal)
+
+/* The system's getopt.h may have already included getopt-ext.h to
+ declare the unprefixed identifiers. Undef _GETOPT_EXT_H so that
+ getopt-ext.h declares them with prefixes. */
+# undef _GETOPT_EXT_H
+#endif
+
+/* Standalone applications get correct prototypes for getopt_long and
+ getopt_long_only; they declare "char **argv". For backward
+ compatibility with old applications, if __GETOPT_PREFIX is not
+ defined, we supply GNU-libc-compatible, but incorrect, prototypes
+ using "char *const *argv". (GNU libc is stuck with the incorrect
+ prototypes, as they are baked into older versions of LSB.) */
+#ifndef __getopt_argv_const
+# if defined __GETOPT_PREFIX
+# define __getopt_argv_const /* empty */
+# else
+# define __getopt_argv_const const
+# endif
+#endif
+
+#include <getopt-ext.h>
+
+#endif /* _GETOPT_PFX_EXT_H */
diff --git a/lib/getopt.c b/lib/getopt.c
index 1d14b24..ab3ff87 100644
--- a/lib/getopt.c
+++ b/lib/getopt.c
@@ -1,27 +1,28 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
/* 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 drepper@gnu.org
- 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,
+ Copyright (C) 1987-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library and is also part of gnulib.
+ Patches to this file should be submitted to both projects.
+
+ The GNU C 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.
+
+ The GNU C 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.
+ 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. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
#ifndef _LIBC
-# include <config.h>
+# ifdef HAVE_CONFIG_H
+# include <config.h>
+# endif
#endif
#include "getopt.h"
@@ -29,67 +30,84 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <unistd.h>
-
-#ifdef __VMS
-# include <unixlib.h>
+#ifndef _MSC_VER
+# include <unistd.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
+/* When used as part of glibc, error printing must be done differently
+ for standards compliance. getopt is not a cancellation point, so
+ it must not call functions that are, and it is specified by an
+ older standard than stdio locking, so it must not refer to
+ functions in the "user namespace" related to stdio locking.
+ Finally, it must use glibc's internal message translation so that
+ the messages are looked up in the proper text domain. */
# include <libintl.h>
+# define fprintf __fxprintf_nocancel
+# define flockfile(fp) _IO_flockfile (fp)
+# define funlockfile(fp) _IO_funlockfile (fp)
#else
-# include "gettext.h"
-# define _(msgid) gettext (msgid)
-#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. */
+//# include "gettext.h"
+//# define _(msgid) gettext (msgid)
#define _(msgid) (msgid)
-
-#if defined _LIBC && defined USE_IN_LIBIO
-# include <wchar.h>
-#endif
-
-#ifndef attribute_hidden
-# define attribute_hidden
+/* When used standalone, flockfile and funlockfile might not be
+ available. */
+# if (!defined _POSIX_THREAD_SAFE_FUNCTIONS \
+ || (defined _WIN32 && ! defined __CYGWIN__))
+# define flockfile(fp) /* nop */
+# define funlockfile(fp) /* nop */
+# endif
+/* When used standalone, do not attempt to use alloca. */
+# define __libc_use_alloca(size) 0
+# undef alloca
+# define alloca(size) (abort (), (void *)0)
#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
+/* This implementation of 'getopt' has three modes for handling
+ options interspersed with non-option arguments. It can stop
+ scanning for options at the first non-option argument encountered,
+ as POSIX specifies. It can continue scanning for options after the
+ first non-option argument, but permute 'argv' as it goes so that,
+ after 'getopt' is done, all the options precede all the non-option
+ arguments and 'optind' points to the first non-option argument.
+ Or, it can report non-option arguments as if they were arguments to
+ the option character '\x01'.
+
+ The default behavior of 'getopt_long' is to permute the argument list.
+ When this implementation is used standalone, the default behavior of
+ 'getopt' is to stop at the first non-option argument, but when it is
+ used as part of GNU libc it also permutes the argument list. In both
+ cases, setting the environment variable POSIXLY_CORRECT to any value
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. */
+ If the first character of the OPTSTRING argument to 'getopt' or
+ 'getopt_long' is '+', both functions will stop at the first
+ non-option argument. If it is '-', both functions will report
+ non-option arguments as arguments to the option character '\x01'. */
#include "getopt_int.h"
-/* For communication from `getopt' to the caller.
- When `getopt' finds an option that takes an argument,
+/* 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,
+ 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'.
+ and for communication between successive calls to 'getopt'.
- On entry to `getopt', zero means this is the first call; initialize.
+ 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
+ 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
+ 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. */
@@ -109,49 +127,14 @@ 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
+ '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
@@ -167,35 +150,13 @@ exchange (char **argv, struct _getopt_data *d)
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;
+ int i;
/* Swap it with the top part of the top segment. */
for (i = 0; i < len; i++)
@@ -203,7 +164,6 @@ exchange (char **argv, struct _getopt_data *d)
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;
@@ -212,7 +172,7 @@ exchange (char **argv, struct _getopt_data *d)
{
/* Top segment is the short one. */
int len = top - middle;
- register int i;
+ int i;
/* Swap it with the bottom part of the bottom segment. */
for (i = 0; i < len; i++)
@@ -220,7 +180,6 @@ exchange (char **argv, struct _getopt_data *d)
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;
@@ -233,24 +192,218 @@ exchange (char **argv, struct _getopt_data *d)
d->__last_nonopt = d->optind;
}
-/* Initialize the internal data when the first call is made. */
+/* Process the argument starting with d->__nextchar as a long option.
+ d->optind should *not* have been advanced over this argument.
+
+ If the value returned is -1, it was not actually a long option, the
+ state is unchanged, and the argument should be processed as a set
+ of short options (this can only happen when long_only is true).
+ Otherwise, the option (and its argument, if any) have been consumed
+ and the return value is the value to return from _getopt_internal_r. */
+static int
+process_long_option (int argc, char **argv, const char *optstring,
+ const struct option *longopts, int *longind,
+ int long_only, struct _getopt_data *d,
+ int print_errors, const char *prefix)
+{
+ char *nameend;
+ size_t namelen;
+ const struct option *p;
+ const struct option *pfound = NULL;
+ int n_options;
+ int option_index;
+
+ for (nameend = d->__nextchar; *nameend && *nameend != '='; nameend++)
+ /* Do nothing. */ ;
+ namelen = (size_t)(nameend - d->__nextchar);
+
+ /* First look for an exact match, counting the options as a side
+ effect. */
+ for (p = longopts, n_options = 0; p->name; p++, n_options++)
+ if (!strncmp (p->name, d->__nextchar, namelen)
+ && namelen == strlen (p->name))
+ {
+ /* Exact match found. */
+ pfound = p;
+ option_index = n_options;
+ break;
+ }
+
+ if (pfound == NULL)
+ {
+ /* Didn't find an exact match, so look for abbreviations. */
+ unsigned char *ambig_set = NULL;
+ int ambig_malloced = 0;
+ int ambig_fallback = 0;
+ int indfound = -1;
+
+ for (p = longopts, option_index = 0; p->name; p++, option_index++)
+ if (!strncmp (p->name, d->__nextchar, namelen))
+ {
+ 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. */
+ if (!ambig_fallback)
+ {
+ if (!print_errors)
+ /* Don't waste effort tracking the ambig set if
+ we're not going to print it anyway. */
+ ambig_fallback = 1;
+ else if (!ambig_set)
+ {
+ if (__libc_use_alloca (n_options))
+ ambig_set = alloca (n_options);
+ else if ((ambig_set = malloc ((size_t)n_options)) == NULL)
+ /* Fall back to simpler error message. */
+ ambig_fallback = 1;
+ else
+ ambig_malloced = 1;
+
+ if (ambig_set)
+ {
+ memset (ambig_set, 0, (size_t)n_options);
+ ambig_set[indfound] = 1;
+ }
+ }
+ if (ambig_set)
+ ambig_set[option_index] = 1;
+ }
+ }
+ }
+
+ if (ambig_set || ambig_fallback)
+ {
+ if (print_errors)
+ {
+ if (ambig_fallback)
+ fprintf (stderr, _("%s: option '%s%s' is ambiguous\n"),
+ argv[0], prefix, d->__nextchar);
+ else
+ {
+ flockfile (stderr);
+ fprintf (stderr,
+ _("%s: option '%s%s' is ambiguous; possibilities:"),
+ argv[0], prefix, d->__nextchar);
+
+ for (option_index = 0; option_index < n_options; option_index++)
+ if (ambig_set[option_index])
+ fprintf (stderr, " '%s%s'",
+ prefix, longopts[option_index].name);
+
+ /* This must use 'fprintf' even though it's only
+ printing a single character, so that it goes through
+ __fxprintf_nocancel when compiled as part of glibc. */
+ fprintf (stderr, "\n");
+ funlockfile (stderr);
+ }
+ }
+ if (ambig_malloced)
+ free (ambig_set);
+ d->__nextchar += strlen (d->__nextchar);
+ d->optind++;
+ d->optopt = 0;
+ return '?';
+ }
+
+ option_index = indfound;
+ }
+
+ if (pfound == NULL)
+ {
+ /* 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. */
+ if (!long_only || argv[d->optind][1] == '-'
+ || strchr (optstring, *d->__nextchar) == NULL)
+ {
+ if (print_errors)
+ fprintf (stderr, _("%s: unrecognized option '%s%s'\n"),
+ argv[0], prefix, d->__nextchar);
+
+ d->__nextchar = NULL;
+ d->optind++;
+ d->optopt = 0;
+ return '?';
+ }
+
+ /* Otherwise interpret it as a short option. */
+ return -1;
+ }
+
+ /* We have found a matching long option. Consume it. */
+ d->optind++;
+ d->__nextchar = NULL;
+ 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)
+ fprintf (stderr,
+ _("%s: option '%s%s' doesn't allow an argument\n"),
+ argv[0], prefix, pfound->name);
+
+ d->optopt = pfound->val;
+ return '?';
+ }
+ }
+ else if (pfound->has_arg == 1)
+ {
+ if (d->optind < argc)
+ d->optarg = argv[d->optind++];
+ else
+ {
+ if (print_errors)
+ fprintf (stderr,
+ _("%s: option '%s%s' requires an argument\n"),
+ argv[0], prefix, pfound->name);
+
+ d->optopt = pfound->val;
+ return optstring[0] == ':' ? ':' : '?';
+ }
+ }
+
+ if (longind != NULL)
+ *longind = option_index;
+ if (pfound->flag)
+ {
+ *(pfound->flag) = pfound->val;
+ return 0;
+ }
+ return pfound->val;
+}
+
+/* Initialize internal data upon the first call to getopt. */
static const char *
-_getopt_initialize (int argc, char **argv, const char *optstring,
- int posixly_correct, struct _getopt_data *d)
+_getopt_initialize (int argc,
+ char **argv, const char *optstring,
+ struct _getopt_data *d, int posixly_correct)
{
+ (void)argc;
+ (void)argv;
/* 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. */
+ if (d->optind == 0)
+ d->optind = 1;
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;
@@ -261,41 +414,12 @@ _getopt_initialize (int argc, char **argv, const char *optstring,
d->__ordering = REQUIRE_ORDER;
++optstring;
}
- else if (d->__posixly_correct)
+ else if (posixly_correct || !!getenv ("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
-
+ d->__initialized = 1;
return optstring;
}
@@ -304,44 +428,48 @@ _getopt_initialize (int argc, char **argv, const char *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'
+ (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
+ 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
+ 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
+ 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
+ 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.
+ it is returned in 'optarg', otherwise 'optarg' is set to zero.
- If OPTSTRING starts with `-' or `+', it requests different methods of
+ 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 `-'.
+ 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.
+ 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
+ The elements of ARGV aren't really const, because we permute them.
+ But we pretend they're const in the prototype to be compatible
+ with other systems.
+
+ 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.
@@ -349,19 +477,14 @@ _getopt_initialize (int argc, char **argv, const char *optstring,
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. */
+ long-named options. */
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 long_only, struct _getopt_data *d, int posixly_correct)
{
int print_errors = d->opterr;
- if (optstring[0] == ':')
- print_errors = 0;
if (argc < 1)
return -1;
@@ -369,25 +492,15 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
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;
- }
+ optstring = _getopt_initialize (argc, argv, optstring, d, posixly_correct);
+ else if (optstring[0] == '-' || optstring[0] == '+')
+ optstring++;
- /* 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 (optstring[0] == ':')
+ print_errors = 0;
+
+ /* Test whether ARGV[optind] points to a non-option argument. */
+#define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0')
if (d->__nextchar == NULL || *d->__nextchar == '\0')
{
@@ -407,7 +520,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
if (d->__first_nonopt != d->__last_nonopt
&& d->__last_nonopt != d->optind)
- exchange ((char **) argv, d);
+ exchange (argv, d);
else if (d->__last_nonopt != d->optind)
d->__first_nonopt = d->optind;
@@ -419,7 +532,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
d->__last_nonopt = d->optind;
}
- /* The special ARGV-element `--' means premature end of options.
+ /* 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. */
@@ -430,7 +543,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
if (d->__first_nonopt != d->__last_nonopt
&& d->__last_nonopt != d->optind)
- exchange ((char **) argv, d);
+ exchange (argv, d);
else if (d->__first_nonopt == d->__last_nonopt)
d->__first_nonopt = d->optind;
d->__last_nonopt = argc;
@@ -462,395 +575,79 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
}
/* 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)
+ Check whether it might be a long option. */
+ if (longopts)
{
- option_index = indfound;
- d->optind++;
- if (*nameend)
+ if (argv[d->optind][1] == '-')
{
- /* 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 '?';
- }
+ /* "--foo" is always a long option. The special option
+ "--" was handled above. */
+ d->__nextchar = argv[d->optind] + 2;
+ return process_long_option (argc, argv, optstring, longopts,
+ longind, long_only, d,
+ print_errors, "--");
}
- 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);
+ /* 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.
- ((_IO_FILE *) stderr)->_flags2 = old_flags2;
- _IO_funlockfile (stderr);
+ 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".
- 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)
+ This distinction seems to be the most useful approach. */
+ if (long_only && (argv[d->optind][2]
+ || !strchr (optstring, argv[d->optind][1])))
{
- *(pfound->flag) = pfound->val;
- return 0;
+ int code;
+ d->__nextchar = argv[d->optind] + 1;
+ code = process_long_option (argc, argv, optstring, longopts,
+ longind, long_only, d,
+ print_errors, "-");
+ if (code != -1)
+ return code;
}
- 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 '?';
- }
+ /* It is not a long option. Skip the initial punctuation. */
+ d->__nextchar = argv[d->optind] + 1;
}
/* Look at and handle the next short option-character. */
{
char c = *d->__nextchar++;
- char *temp = strchr (optstring, c);
+ const char *temp = strchr (optstring, c);
- /* Increment `optind' when we start to process its last character. */
+ /* Increment 'optind' when we start to process its last character. */
if (*d->__nextchar == '\0')
++d->optind;
- if (temp == NULL || c == ':')
+ if (temp == NULL || c == ':' || 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
- }
+ fprintf (stderr, _("%s: invalid option -- '%c'\n"), argv[0], c);
d->optopt = c;
return '?';
}
+
/* Convenience. Treat POSIX -W foo same as long option --foo */
- if (temp[0] == 'W' && temp[1] == ';')
+ if (temp[0] == 'W' && temp[1] == ';' && longopts != NULL)
{
- 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++;
- }
+ d->optarg = d->__nextchar;
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;
+ fprintf (stderr,
+ _("%s: option requires an argument -- '%c'\n"),
+ argv[0], c);
- 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 = ':';
@@ -859,165 +656,12 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
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);
+ d->optarg = argv[d->optind];
- ((_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. */
+ d->__nextchar = d->optarg;
+ d->optarg = NULL;
+ return process_long_option (argc, argv, optstring, longopts, longind,
+ 0 /* long_only */, d, print_errors, "-W ");
}
if (temp[1] == ':')
{
@@ -1046,33 +690,10 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
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);
+ fprintf (stderr,
+ _("%s: option requires an argument -- '%c'\n"),
+ argv[0], c);
- free (buf);
- }
-#else
- fprintf (stderr,
- _("%s: option requires an argument -- %c\n"),
- argv[0], c);
-#endif
- }
d->optopt = c;
if (optstring[0] == ':')
c = ':';
@@ -1080,7 +701,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
c = '?';
}
else
- /* We already incremented `optind' once;
+ /* We already incremented 'optind' once;
increment it again when taking next ARGV-elt as argument. */
d->optarg = argv[d->optind++];
d->__nextchar = NULL;
@@ -1092,16 +713,17 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
int
_getopt_internal (int argc, char **argv, const char *optstring,
- const struct option *longopts, int *longind,
- int long_only, int posixly_correct)
+ 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);
+ result = _getopt_internal_r (argc, argv, optstring, longopts,
+ longind, long_only, &getopt_data,
+ posixly_correct);
optind = getopt_data.optind;
optarg = getopt_data.optarg;
@@ -1110,26 +732,30 @@ _getopt_internal (int argc, char **argv, const char *optstring,
return result;
}
-/* glibc gets a LSB-compliant getopt.
- Standalone applications get a POSIX-compliant getopt. */
-#if _LIBC
-enum { POSIXLY_CORRECT = 0 };
+/* glibc gets a LSB-compliant getopt and a POSIX-complaint __posix_getopt.
+ Standalone applications just get a POSIX-compliant getopt.
+ POSIX and LSB both require these functions to take 'char *const *argv'
+ even though this is incorrect (because of the permutation). */
+#define GETOPT_ENTRY(NAME, POSIXLY_CORRECT) \
+ int \
+ NAME (int argc, char *const *argv, const char *optstring) \
+ { \
+ return _getopt_internal (argc, (char **)argv, optstring, \
+ 0, 0, 0, POSIXLY_CORRECT); \
+ }
+
+#ifdef _LIBC
+GETOPT_ENTRY(getopt, 0)
+GETOPT_ENTRY(__posix_getopt, 1)
#else
-enum { POSIXLY_CORRECT = 1 };
+GETOPT_ENTRY(getopt, 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'. */
+ the above definition of 'getopt'. */
int
main (int argc, char **argv)
@@ -1172,7 +798,7 @@ main (int argc, char **argv)
break;
case 'c':
- printf ("option c with value `%s'\n", optarg);
+ printf ("option c with value '%s'\n", optarg);
break;
case '?':
diff --git a/lib/getopt.in.h b/lib/getopt.in.h
index ea77e3d..6d602c5 100644
--- a/lib/getopt.in.h
+++ b/lib/getopt.in.h
@@ -1,27 +1,28 @@
-/* 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.
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
- This program is distributed in the hope that it will be useful,
+/* Declarations for getopt.
+ Copyright (C) 1989-2023 Free Software Foundation, Inc.
+ This file is part of gnulib.
+ Unlike most of the getopt implementation, it is NOT shared
+ with the GNU C Library, which supplies a different version of
+ this file.
+
+ This file 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 file 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. */
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
#ifndef _GETOPT_H
-#ifndef __need_getopt
-# define _GETOPT_H 1
-#endif
+#define _GETOPT_H 1
/* Standalone applications should #define __GETOPT_PREFIX to an
identifier that prefixes the external functions and variables
@@ -31,196 +32,29 @@
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
+#if defined __GETOPT_PREFIX
# 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
+# ifndef _MSC_VER
+# include <unistd.h>
# 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 ()
+/* From Gnulib's lib/arg-nonnull.h: */
+/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
+ that the values passed as arguments n, ..., m must be non-NULL pointers.
+ n = 1 stands for the first argument, n = 2 for the second argument etc. */
+#ifndef _GL_ARG_NONNULL
+# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || defined __clang__
+# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))
# else
-# define __THROW
+# define _GL_ARG_NONNULL(params)
# 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
+#include <getopt-cdefs.h>
+#include <getopt-pfx-core.h>
+#include <getopt-pfx-ext.h>
-#endif /* getopt.h */
+#endif /* _GETOPT_H */
diff --git a/lib/getopt1.c b/lib/getopt1.c
index da5d533..5cb3b91 100644
--- a/lib/getopt1.c
+++ b/lib/getopt1.c
@@ -1,41 +1,32 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
/* 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.
+ Copyright (C) 1987-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library and is also part of gnulib.
+ Patches to this file should be submitted to both projects.
- 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.
+ The GNU C 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 program is distributed in the hope that it will be useful,
+ The GNU C 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.
+ 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. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
-#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>
+#ifndef _LIBC
+# ifdef HAVE_CONFIG_H
+# include <config.h>
+# endif
#endif
-#ifndef NULL
-#define NULL 0
-#endif
+#include "getopt.h"
+#include "getopt_int.h"
int
getopt_long (int argc, char *__getopt_argv_const *argv, const char *options,
@@ -51,7 +42,7 @@ _getopt_long_r (int argc, char **argv, const char *options,
struct _getopt_data *d)
{
return _getopt_internal_r (argc, argv, options, long_options, opt_index,
- 0, 0, d);
+ 0, d, 0);
}
/* Like getopt_long, but '-' as well as '--' can indicate a long option.
@@ -74,13 +65,14 @@ _getopt_long_only_r (int argc, char **argv, const char *options,
struct _getopt_data *d)
{
return _getopt_internal_r (argc, argv, options, long_options, opt_index,
- 1, 0, d);
+ 1, d, 0);
}
#ifdef TEST
#include <stdio.h>
+#include <stdlib.h>
int
main (int argc, char **argv)
@@ -92,7 +84,7 @@ main (int argc, char **argv)
{
int this_option_optind = optind ? optind : 1;
int option_index = 0;
- static struct option long_options[] =
+ static const struct option long_options[] =
{
{"add", 1, 0, 0},
{"append", 0, 0, 0},
@@ -142,11 +134,11 @@ main (int argc, char **argv)
break;
case 'c':
- printf ("option c with value `%s'\n", optarg);
+ printf ("option c with value '%s'\n", optarg);
break;
case 'd':
- printf ("option d with value `%s'\n", optarg);
+ printf ("option d with value '%s'\n", optarg);
break;
case '?':
diff --git a/lib/getopt_int.h b/lib/getopt_int.h
index 401579f..2dcb553 100644
--- a/lib/getopt_int.h
+++ b/lib/getopt_int.h
@@ -1,34 +1,64 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
/* 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.
+ Copyright (C) 1989-2023 Free Software Foundation, Inc.
+ This file is part of the GNU C Library and is also part of gnulib.
+ Patches to this file should be submitted to both projects.
- 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.
+ The GNU C 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 program is distributed in the hope that it will be useful,
+ The GNU C 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 General Public License for more details.
+ 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 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. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
#ifndef _GETOPT_INT_H
#define _GETOPT_INT_H 1
+#include <getopt.h>
+
extern int _getopt_internal (int ___argc, char **___argv,
const char *__shortopts,
- const struct option *__longopts, int *__longind,
+ 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. */
+/* Describe how to deal with options that follow non-option ARGV-elements.
+
+ REQUIRE_ORDER means don't recognize them as options; stop option
+ processing when the first non-option is seen. This is what POSIX
+ specifies should happen.
+
+ PERMUTE means 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.
+
+ 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 __ord
+ {
+ REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
+ };
+
/* Data type for reentrant functions. */
struct _getopt_data
{
@@ -53,58 +83,17 @@ struct _getopt_data
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;
-
+ /* See __ord above. */
+ enum __ord __ordering;
/* 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. */
+ 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
@@ -114,8 +103,8 @@ struct _getopt_data
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);
+ int __long_only, struct _getopt_data *__data,
+ int __posixly_correct);
extern int _getopt_long_r (int ___argc, char **___argv,
const char *__shortopts,
diff --git a/m4/ax_check_capsicum.m4 b/m4/ax_check_capsicum.m4
deleted file mode 100644
index f79dc5c..0000000
--- a/m4/ax_check_capsicum.m4
+++ /dev/null
@@ -1,85 +0,0 @@
-# -*- Autoconf -*-
-
-# SYNOPSIS
-#
-# AX_CHECK_CAPSICUM([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
-#
-# DESCRIPTION
-#
-# This macro searches for an installed Capsicum header and library,
-# and if found:
-# - AC_DEFINE([HAVE_CAPSICUM]) is called.
-# - AC_DEFINE([HAVE_SYS_CAPSICUM_H]) is called if <sys/capsicum.h>
-# is present (otherwise <sys/capability.h> must be used).
-# - CAPSICUM_LIB is set to the -l option needed to link Capsicum support,
-# and AC_SUBST([CAPSICUM_LIB]) is called.
-# - The shell commands in ACTION-IF-FOUND are run. The default
-# ACTION-IF-FOUND prepends ${CAPSICUM_LIB} into LIBS. If you don't
-# want to modify LIBS and don't need to run any other commands either,
-# use a colon as ACTION-IF-FOUND.
-#
-# If Capsicum support isn't found:
-# - The shell commands in ACTION-IF-NOT-FOUND are run. The default
-# ACTION-IF-NOT-FOUND calls AC_MSG_WARN to print a warning that
-# Capsicum support wasn't found.
-#
-# You should use autoheader to include a definition for the symbols above
-# in a config.h file.
-#
-# Sample usage in a C/C++ source is as follows:
-#
-# #ifdef HAVE_CAPSICUM
-# # ifdef HAVE_SYS_CAPSICUM_H
-# # include <sys/capsicum.h>
-# # else
-# # include <sys/capability.h>
-# # endif
-# #endif /* HAVE_CAPSICUM */
-#
-# LICENSE
-#
-# Copyright (c) 2014 Google Inc.
-# Copyright (c) 2015 Lasse Collin <lasse.collin@tukaani.org>
-#
-# Copying and distribution of this file, with or without modification,
-# are permitted in any medium without royalty provided the copyright
-# notice and this notice are preserved. This file is offered as-is,
-# without any warranty.
-
-#serial 2
-
-AC_DEFUN([AX_CHECK_CAPSICUM], [
-# On FreeBSD >= 11.x and Linux, Capsicum is uses <sys/capsicum.h>.
-# If this header is found, it is assumed to be the right one.
-capsicum_header_found=no
-AC_CHECK_HEADERS([sys/capsicum.h], [capsicum_header_found=yes])
-if test "$capsicum_header_found" = no ; then
- # On FreeBSD 10.x Capsicum uses <sys/capability.h>. Such a header exists
- # on Linux too but it describes POSIX.1e capabilities. Look for the
- # declaration of cap_rights_limit to check if <sys/capability.h> is
- # a Capsicum header.
- AC_CHECK_DECL([cap_rights_limit], [capsicum_header_found=yes], [],
- [#include <sys/capability.h>])
-fi
-
-capsicum_lib_found=no
-CAPSICUM_LIB=
-if test "$capsicum_header_found" = yes ; then
- AC_LANG_PUSH([C])
- # FreeBSD >= 10.x has Capsicum functions in libc.
- AC_LINK_IFELSE([AC_LANG_CALL([], [cap_rights_limit])],
- [capsicum_lib_found=yes], [])
- # Linux has Capsicum functions in libcaprights.
- AC_CHECK_LIB([caprights], [cap_rights_limit],
- [CAPSICUM_LIB=-lcaprights
- capsicum_lib_found=yes], [])
- AC_LANG_POP([C])
-fi
-AC_SUBST([CAPSICUM_LIB])
-
-if test "$capsicum_lib_found" = yes ; then
- AC_DEFINE([HAVE_CAPSICUM], [1], [Define to 1 if Capsicum is available.])
- m4_default([$1], [LIBS="${CAPSICUM_LIB} $LIBS"])
-else
- m4_default([$2], [AC_MSG_WARN([Capsicum support not found])])
-fi])
diff --git a/m4/ax_pthread.m4 b/m4/ax_pthread.m4
index 9f35d13..3f26da6 100644
--- a/m4/ax_pthread.m4
+++ b/m4/ax_pthread.m4
@@ -1,3 +1,5 @@
+dnl SPDX-License-Identifier: GPL-3.0-or-later WITH Autoconf-exception-macro
+
# ===========================================================================
# https://www.gnu.org/software/autoconf-archive/ax_pthread.html
# ===========================================================================
diff --git a/m4/build-to-host.m4 b/m4/build-to-host.m4
new file mode 100644
index 0000000..f928e9a
--- /dev/null
+++ b/m4/build-to-host.m4
@@ -0,0 +1,79 @@
+# build-to-host.m4 serial 3
+dnl Copyright (C) 2023-2024 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 Written by Bruno Haible.
+
+dnl When the build environment ($build_os) is different from the target runtime
+dnl environment ($host_os), file names may need to be converted from the build
+dnl environment syntax to the target runtime environment syntax. This is
+dnl because the Makefiles are executed (mostly) by build environment tools and
+dnl therefore expect file names in build environment syntax, whereas the runtime
+dnl expects file names in target runtime environment syntax.
+dnl
+dnl For example, if $build_os = cygwin and $host_os = mingw32, filenames need
+dnl be converted from Cygwin syntax to native Windows syntax:
+dnl /cygdrive/c/foo/bar -> C:\foo\bar
+dnl /usr/local/share -> C:\cygwin64\usr\local\share
+dnl
+dnl gl_BUILD_TO_HOST([somedir])
+dnl This macro takes as input an AC_SUBSTed variable 'somedir', which must
+dnl already have its final value assigned, and produces two additional
+dnl AC_SUBSTed variables 'somedir_c' and 'somedir_c_make', that designate the
+dnl same file name value, just in different syntax:
+dnl - somedir_c is the file name in target runtime environment syntax,
+dnl as a C string (starting and ending with a double-quote,
+dnl and with escaped backslashes and double-quotes in
+dnl between).
+dnl - somedir_c_make is the same thing, escaped for use in a Makefile.
+
+AC_DEFUN([gl_BUILD_TO_HOST],
+[
+ AC_REQUIRE([AC_CANONICAL_BUILD])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([gl_BUILD_TO_HOST_INIT])
+
+ dnl Define somedir_c.
+ gl_final_[$1]="$[$1]"
+ dnl Translate it from build syntax to host syntax.
+ case "$build_os" in
+ cygwin*)
+ case "$host_os" in
+ mingw* | windows*)
+ gl_final_[$1]=`cygpath -w "$gl_final_[$1]"` ;;
+ esac
+ ;;
+ esac
+ dnl Convert it to C string syntax.
+ [$1]_c=`printf '%s\n' "$gl_final_[$1]" | sed -e "$gl_sed_double_backslashes" -e "$gl_sed_escape_doublequotes" | tr -d "$gl_tr_cr"`
+ [$1]_c='"'"$[$1]_c"'"'
+ AC_SUBST([$1_c])
+
+ dnl Define somedir_c_make.
+ [$1]_c_make=`printf '%s\n' "$[$1]_c" | sed -e "$gl_sed_escape_for_make_1" -e "$gl_sed_escape_for_make_2" | tr -d "$gl_tr_cr"`
+ dnl Use the substituted somedir variable, when possible, so that the user
+ dnl may adjust somedir a posteriori when there are no special characters.
+ if test "$[$1]_c_make" = '\"'"${gl_final_[$1]}"'\"'; then
+ [$1]_c_make='\"$([$1])\"'
+ fi
+ AC_SUBST([$1_c_make])
+])
+
+dnl Some initializations for gl_BUILD_TO_HOST.
+AC_DEFUN([gl_BUILD_TO_HOST_INIT],
+[
+ gl_sed_double_backslashes='s/\\/\\\\/g'
+ gl_sed_escape_doublequotes='s/"/\\"/g'
+changequote(,)dnl
+ gl_sed_escape_for_make_1="s,\\([ \"&'();<>\\\\\`|]\\),\\\\\\1,g"
+changequote([,])dnl
+ gl_sed_escape_for_make_2='s,\$,\\$$,g'
+ dnl Find out how to remove carriage returns from output. Solaris /usr/ucb/tr
+ dnl does not understand '\r'.
+ case `echo r | tr -d '\r'` in
+ '') gl_tr_cr='\015' ;;
+ *) gl_tr_cr='\r' ;;
+ esac
+])
diff --git a/m4/getopt.m4 b/m4/getopt.m4
index cfbe40f..af8bfd4 100644
--- a/m4/getopt.m4
+++ b/m4/getopt.m4
@@ -1,71 +1,72 @@
-# getopt.m4 serial 14 (modified version)
-dnl Copyright (C) 2002-2006, 2008 Free Software Foundation, Inc.
+dnl SPDX-License-Identifier: FSFULLR
+
+# getopt.m4 serial 49 (modified version)
+dnl Copyright (C) 2002-2006, 2008-2023 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.
+# This version has been modified to reduce complexity since we only need
+# GNU getopt_long and do not care about replacing getopt.
-AC_DEFUN([gl_GETOPT_SUBSTITUTE],
+# Check for a POSIX compliant getopt function with GNU extensions (such as
+# options with optional arguments) and the functions getopt_long,
+# getopt_long_only.
+AC_DEFUN([gl_FUNC_GETOPT_GNU],
[
- AC_LIBOBJ([getopt])
- AC_LIBOBJ([getopt1])
- gl_GETOPT_SUBSTITUTE_HEADER
-])
+ AC_REQUIRE([gl_GETOPT_CHECK_HEADERS])
-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])
+ if test -n "$gl_replace_getopt"; then
+ gl_GETOPT_SUBSTITUTE
+ fi
])
AC_DEFUN([gl_GETOPT_CHECK_HEADERS],
[
- if test -z "$GETOPT_H"; then
- AC_CHECK_HEADERS([getopt.h], [], [GETOPT_H=getopt.h])
+ gl_replace_getopt=
+
+ if test -z "$gl_replace_getopt"; then
+ AC_CHECK_HEADERS([getopt.h], [], [gl_replace_getopt=yes])
fi
- if test -z "$GETOPT_H"; then
- AC_CHECK_FUNCS([getopt_long], [], [GETOPT_H=getopt.h])
+ if test -z "$gl_replace_getopt"; then
+ AC_CHECK_FUNCS([getopt_long], [], [gl_replace_getopt=yes])
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
+ if test -z "$gl_replace_getopt"; 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 POSIX 2008 does not specify leading '+' behavior, but see
+ dnl http://austingroupbugs.net/view.php?id=191 for a recommendation on
+ dnl the next version of POSIX. We don't use that feature, so this
dnl is not a problem for us. Thus, the respective test was removed here.
+
+ dnl Checks for getopt handling '-' as a leading character in an option
+ dnl string were removed, since we also don't use that feature.
+
])
-AC_DEFUN([gl_GETOPT_IFELSE],
+AC_DEFUN([gl_GETOPT_SUBSTITUTE],
[
- AC_REQUIRE([gl_GETOPT_CHECK_HEADERS])
- AS_IF([test -n "$GETOPT_H"], [$1], [$2])
+ AC_LIBOBJ([getopt])
+ AC_LIBOBJ([getopt1])
+
+ AC_CHECK_HEADERS_ONCE([sys/cdefs.h])
+
+ AC_DEFINE([__GETOPT_PREFIX], [[rpl_]],
+ [Define to rpl_ if the getopt replacement functions and variables
+ should be used.])
+
+ GETOPT_H=getopt.h
+ AC_SUBST([GETOPT_H])
])
-AC_DEFUN([gl_GETOPT], [gl_GETOPT_IFELSE([gl_GETOPT_SUBSTITUTE])])
+AC_DEFUN([gl_GETOPT], [gl_FUNC_GETOPT_GNU])
diff --git a/m4/gettext.m4 b/m4/gettext.m4
index f449240..16f9db1 100644
--- a/m4/gettext.m4
+++ b/m4/gettext.m4
@@ -1,5 +1,5 @@
-# gettext.m4 serial 72 (gettext-0.21.1)
-dnl Copyright (C) 1995-2014, 2016, 2018-2020 Free Software Foundation, Inc.
+# gettext.m4 serial 78 (gettext-0.22.4)
+dnl Copyright (C) 1995-2014, 2016, 2018-2023 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.
@@ -20,11 +20,13 @@ dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006, 2008-2010.
dnl Macro to add for using GNU gettext.
dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
-dnl INTLSYMBOL must be one of 'external', 'use-libtool'.
-dnl INTLSYMBOL should be 'external' for packages other than GNU gettext, and
-dnl 'use-libtool' for the packages 'gettext-runtime' and 'gettext-tools'.
-dnl If INTLSYMBOL is 'use-libtool', then a libtool library
-dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static,
+dnl INTLSYMBOL must be one of 'external', 'use-libtool', 'here'.
+dnl INTLSYMBOL should be 'external' for packages other than GNU gettext.
+dnl It should be 'use-libtool' for the packages 'gettext-runtime' and
+dnl 'gettext-tools'.
+dnl It should be 'here' for the package 'gettext-runtime/intl'.
+dnl If INTLSYMBOL is 'here', then a libtool library
+dnl $(top_builddir)/libintl.la will be created (shared and/or static,
dnl depending on --{enable,disable}-{shared,static} and on the presence of
dnl AM-DISABLE-SHARED).
dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
@@ -55,24 +57,21 @@ dnl
AC_DEFUN([AM_GNU_GETTEXT],
[
dnl Argument checking.
- m4_if([$1], [], , [m4_if([$1], [external], , [m4_if([$1], [use-libtool], ,
+ m4_if([$1], [], , [m4_if([$1], [external], , [m4_if([$1], [use-libtool], , [m4_if([$1], [here], ,
[errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
-])])])])
+])])])])])
m4_if(m4_if([$1], [], [old])[]m4_if([$1], [no-libtool], [old]), [old],
[errprint([ERROR: Use of AM_GNU_GETTEXT without [external] argument is no longer supported.
])])
m4_if([$2], [], , [m4_if([$2], [need-ngettext], , [m4_if([$2], [need-formatstring-macros], ,
[errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
])])])])
- define([gt_included_intl],
- m4_if([$1], [external], [no], [yes]))
+ define([gt_building_libintl_in_same_build_tree],
+ m4_if([$1], [use-libtool], [yes], [m4_if([$1], [here], [yes], [no])]))
gt_NEEDS_INIT
AM_GNU_GETTEXT_NEED([$2])
AC_REQUIRE([AM_PO_SUBDIRS])dnl
- m4_if(gt_included_intl, yes, [
- AC_REQUIRE([AM_INTL_SUBDIR])dnl
- ])
dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
@@ -82,13 +81,13 @@ AC_DEFUN([AM_GNU_GETTEXT],
dnl Ideally we would do this search only after the
dnl if test "$USE_NLS" = "yes"; then
dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
- dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
+ dnl tests. But if configure.ac invokes AM_ICONV after AM_GNU_GETTEXT
dnl the configure script would need to contain the same shell code
dnl again, outside any 'if'. There are two solutions:
dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
dnl Since AC_PROVIDE_IFELSE is not documented, we avoid it.
- m4_if(gt_included_intl, yes, , [
+ m4_if(gt_building_libintl_in_same_build_tree, yes, , [
AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
])
@@ -98,8 +97,7 @@ AC_DEFUN([AM_GNU_GETTEXT],
dnl Set USE_NLS.
AC_REQUIRE([AM_NLS])
- m4_if(gt_included_intl, yes, [
- BUILD_INCLUDED_LIBINTL=no
+ m4_if(gt_building_libintl_in_same_build_tree, yes, [
USE_INCLUDED_LIBINTL=no
])
LIBINTL=
@@ -118,7 +116,7 @@ AC_DEFUN([AM_GNU_GETTEXT],
dnl If we use NLS figure out what method
if test "$USE_NLS" = "yes"; then
gt_use_preinstalled_gnugettext=no
- m4_if(gt_included_intl, yes, [
+ m4_if(gt_building_libintl_in_same_build_tree, yes, [
AC_MSG_CHECKING([whether included gettext is requested])
AC_ARG_WITH([included-gettext],
[ --with-included-gettext use the GNU gettext library included here],
@@ -174,7 +172,7 @@ return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
dnl Sometimes libintl requires libiconv, so first search for libiconv.
- m4_if(gt_included_intl, yes, , [
+ m4_if(gt_building_libintl_in_same_build_tree, yes, , [
AM_ICONV_LINK
])
dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
@@ -212,9 +210,16 @@ return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
]])],
[eval "$gt_func_gnugettext_libintl=yes"],
[eval "$gt_func_gnugettext_libintl=no"])
- dnl Now see whether libintl exists and depends on libiconv.
- if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
- LIBS="$LIBS $LIBICONV"
+ dnl Now see whether libintl exists and depends on libiconv or other
+ dnl OS dependent libraries, specifically on macOS and AIX.
+ gt_LIBINTL_EXTRA="$INTL_MACOSX_LIBS"
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ case "$host_os" in
+ aix*) gt_LIBINTL_EXTRA="-lpthread" ;;
+ esac
+ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } \
+ && { test -n "$LIBICONV" || test -n "$gt_LIBINTL_EXTRA"; }; then
+ LIBS="$LIBS $LIBICONV $gt_LIBINTL_EXTRA"
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
[[
@@ -236,8 +241,8 @@ $gt_revision_test_code
bindtextdomain ("", "");
return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
]])],
- [LIBINTL="$LIBINTL $LIBICONV"
- LTLIBINTL="$LTLIBINTL $LTLIBICONV"
+ [LIBINTL="$LIBINTL $LIBICONV $gt_LIBINTL_EXTRA"
+ LTLIBINTL="$LTLIBINTL $LTLIBICONV $gt_LIBINTL_EXTRA"
eval "$gt_func_gnugettext_libintl=yes"
])
fi
@@ -252,7 +257,8 @@ return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
|| { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
&& test "$PACKAGE" != gettext-runtime \
- && test "$PACKAGE" != gettext-tools; }; then
+ && test "$PACKAGE" != gettext-tools \
+ && test "$PACKAGE" != libintl; }; then
gt_use_preinstalled_gnugettext=yes
else
dnl Reset the values set by searching for libintl.
@@ -261,7 +267,7 @@ return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
INCINTL=
fi
- m4_if(gt_included_intl, yes, [
+ m4_if(gt_building_libintl_in_same_build_tree, yes, [
if test "$gt_use_preinstalled_gnugettext" != "yes"; then
dnl GNU gettext is not found in the C library.
dnl Fall back on included GNU gettext library.
@@ -271,7 +277,6 @@ return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
if test "$nls_cv_use_gnu_gettext" = "yes"; then
dnl Mark actions used to generate GNU NLS library.
- BUILD_INCLUDED_LIBINTL=yes
USE_INCLUDED_LIBINTL=yes
LIBINTL="m4_if([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LIBICONV $LIBTHREAD"
LTLIBINTL="m4_if([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LTLIBICONV $LTLIBTHREAD"
@@ -341,25 +346,39 @@ return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
POSUB=po
fi
- m4_if(gt_included_intl, yes, [
- dnl In GNU gettext we have to set BUILD_INCLUDED_LIBINTL to 'yes'
- dnl because some of the testsuite requires it.
- BUILD_INCLUDED_LIBINTL=yes
-
+ m4_if(gt_building_libintl_in_same_build_tree, yes, [
dnl Make all variables we use known to autoconf.
- AC_SUBST([BUILD_INCLUDED_LIBINTL])
AC_SUBST([USE_INCLUDED_LIBINTL])
AC_SUBST([CATOBJEXT])
])
- dnl For backward compatibility. Some Makefiles may be using this.
- INTLLIBS="$LIBINTL"
- AC_SUBST([INTLLIBS])
+ m4_if(gt_building_libintl_in_same_build_tree, yes, [], [
+ dnl For backward compatibility. Some Makefiles may be using this.
+ INTLLIBS="$LIBINTL"
+ AC_SUBST([INTLLIBS])
+ ])
dnl Make all documented variables known to autoconf.
AC_SUBST([LIBINTL])
AC_SUBST([LTLIBINTL])
AC_SUBST([POSUB])
+
+ dnl Define localedir_c and localedir_c_make.
+ dnl Find the final value of localedir.
+ gt_save_prefix="${prefix}"
+ gt_save_datarootdir="${datarootdir}"
+ gt_save_localedir="${localedir}"
+ dnl Unfortunately, prefix gets only finally determined at the end of
+ dnl configure.
+ if test "X$prefix" = "XNONE"; then
+ prefix="$ac_default_prefix"
+ fi
+ eval datarootdir="$datarootdir"
+ eval localedir="$localedir"
+ gl_BUILD_TO_HOST([localedir])
+ localedir="${gt_save_localedir}"
+ datarootdir="${gt_save_datarootdir}"
+ prefix="${gt_save_prefix}"
])
diff --git a/m4/host-cpu-c-abi.m4 b/m4/host-cpu-c-abi.m4
index b922324..e860a19 100644
--- a/m4/host-cpu-c-abi.m4
+++ b/m4/host-cpu-c-abi.m4
@@ -1,5 +1,5 @@
-# host-cpu-c-abi.m4 serial 15
-dnl Copyright (C) 2002-2022 Free Software Foundation, Inc.
+# host-cpu-c-abi.m4 serial 17
+dnl Copyright (C) 2002-2024 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.
@@ -461,217 +461,66 @@ EOF
dnl Sets the HOST_CPU_C_ABI_32BIT variable to 'yes' if the C language ABI
dnl (application binary interface) is a 32-bit one, to 'no' if it is a 64-bit
-dnl one, or to 'unknown' if unknown.
+dnl one.
dnl This is a simplified variant of gl_HOST_CPU_C_ABI.
AC_DEFUN([gl_HOST_CPU_C_ABI_32BIT],
[
AC_REQUIRE([AC_CANONICAL_HOST])
AC_CACHE_CHECK([32-bit host C ABI], [gl_cv_host_cpu_c_abi_32bit],
- [if test -n "$gl_cv_host_cpu_c_abi"; then
- case "$gl_cv_host_cpu_c_abi" in
- i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc)
- gl_cv_host_cpu_c_abi_32bit=yes ;;
- x86_64 | alpha | arm64 | hppa64 | ia64 | mips64 | powerpc64 | powerpc64-elfv2 | riscv*-lp64* | s390x | sparc64 )
- gl_cv_host_cpu_c_abi_32bit=no ;;
- *)
- gl_cv_host_cpu_c_abi_32bit=unknown ;;
- esac
- else
- case "$host_cpu" in
-
- # CPUs that only support a 32-bit ABI.
- arc \
- | bfin \
- | cris* \
- | csky \
- | epiphany \
- | ft32 \
- | h8300 \
- | m68k \
- | microblaze | microblazeel \
- | nds32 | nds32le | nds32be \
- | nios2 | nios2eb | nios2el \
- | or1k* \
- | or32 \
- | sh | sh[1234] | sh[1234]e[lb] \
- | tic6x \
- | xtensa* )
- gl_cv_host_cpu_c_abi_32bit=yes
- ;;
+ [case "$host_cpu" in
- # CPUs that only support a 64-bit ABI.
-changequote(,)dnl
- alpha | alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] \
- | mmix )
-changequote([,])dnl
- gl_cv_host_cpu_c_abi_32bit=no
- ;;
+ # CPUs that only support a 32-bit ABI.
+ arc \
+ | bfin \
+ | cris* \
+ | csky \
+ | epiphany \
+ | ft32 \
+ | h8300 \
+ | m68k \
+ | microblaze | microblazeel \
+ | nds32 | nds32le | nds32be \
+ | nios2 | nios2eb | nios2el \
+ | or1k* \
+ | or32 \
+ | sh | sh[1234] | sh[1234]e[lb] \
+ | tic6x \
+ | xtensa* )
+ gl_cv_host_cpu_c_abi_32bit=yes
+ ;;
+ # CPUs that only support a 64-bit ABI.
changequote(,)dnl
- i[34567]86 )
+ alpha | alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] \
+ | mmix )
changequote([,])dnl
- gl_cv_host_cpu_c_abi_32bit=yes
- ;;
-
- x86_64 )
- # On x86_64 systems, the C compiler may be generating code in one of
- # these ABIs:
- # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64.
- # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64
- # with native Windows (mingw, MSVC).
- # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32.
- # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if (defined __x86_64__ || defined __amd64__ \
- || defined _M_X64 || defined _M_AMD64) \
- && !(defined __ILP32__ || defined _ILP32)
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi_32bit=no],
- [gl_cv_host_cpu_c_abi_32bit=yes])
- ;;
-
- arm* | aarch64 )
- # Assume arm with EABI.
- # On arm64 systems, the C compiler may be generating code in one of
- # these ABIs:
- # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64.
- # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32.
- # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if defined __aarch64__ && !(defined __ILP32__ || defined _ILP32)
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi_32bit=no],
- [gl_cv_host_cpu_c_abi_32bit=yes])
- ;;
-
- hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
- # On hppa, the C compiler may be generating 32-bit code or 64-bit
- # code. In the latter case, it defines _LP64 and __LP64__.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#ifdef __LP64__
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi_32bit=no],
- [gl_cv_host_cpu_c_abi_32bit=yes])
- ;;
-
- ia64* )
- # On ia64 on HP-UX, the C compiler may be generating 64-bit code or
- # 32-bit code. In the latter case, it defines _ILP32.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#ifdef _ILP32
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi_32bit=yes],
- [gl_cv_host_cpu_c_abi_32bit=no])
- ;;
-
- mips* )
- # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this
- # at 32.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64)
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi_32bit=no],
- [gl_cv_host_cpu_c_abi_32bit=yes])
- ;;
-
- powerpc* )
- # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD.
- # No need to distinguish them here; the caller may distinguish
- # them based on the OS.
- # On powerpc64 systems, the C compiler may still be generating
- # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may
- # be generating 64-bit code.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if defined __powerpc64__ || defined __LP64__
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi_32bit=no],
- [gl_cv_host_cpu_c_abi_32bit=yes])
- ;;
-
- rs6000 )
- gl_cv_host_cpu_c_abi_32bit=yes
- ;;
-
- riscv32 | riscv64 )
- # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d.
- # Size of 'long' and 'void *':
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if defined __LP64__
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi_32bit=no],
- [gl_cv_host_cpu_c_abi_32bit=yes])
- ;;
-
- s390* )
- # On s390x, the C compiler may be generating 64-bit (= s390x) code
- # or 31-bit (= s390) code.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if defined __LP64__ || defined __s390x__
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi_32bit=no],
- [gl_cv_host_cpu_c_abi_32bit=yes])
- ;;
+ gl_cv_host_cpu_c_abi_32bit=no
+ ;;
- sparc | sparc64 )
- # UltraSPARCs running Linux have `uname -m` = "sparc64", but the
- # C compiler still generates 32-bit code.
+ *)
+ if test -n "$gl_cv_host_cpu_c_abi"; then
+ dnl gl_HOST_CPU_C_ABI has already been run. Use its result.
+ case "$gl_cv_host_cpu_c_abi" in
+ i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc)
+ gl_cv_host_cpu_c_abi_32bit=yes ;;
+ x86_64 | alpha | arm64 | aarch64c | hppa64 | ia64 | mips64 | powerpc64 | powerpc64-elfv2 | riscv*-lp64* | s390x | sparc64 )
+ gl_cv_host_cpu_c_abi_32bit=no ;;
+ *)
+ gl_cv_host_cpu_c_abi_32bit=unknown ;;
+ esac
+ else
+ gl_cv_host_cpu_c_abi_32bit=unknown
+ fi
+ if test $gl_cv_host_cpu_c_abi_32bit = unknown; then
AC_COMPILE_IFELSE(
[AC_LANG_SOURCE(
- [[#if defined __sparcv9 || defined __arch64__
- int ok;
- #else
- error fail
- #endif
+ [[int test_pointer_size[sizeof (void *) - 5];
]])],
[gl_cv_host_cpu_c_abi_32bit=no],
[gl_cv_host_cpu_c_abi_32bit=yes])
- ;;
-
- *)
- gl_cv_host_cpu_c_abi_32bit=unknown
- ;;
- esac
- fi
+ fi
+ ;;
+ esac
])
HOST_CPU_C_ABI_32BIT="$gl_cv_host_cpu_c_abi_32bit"
diff --git a/m4/iconv.m4 b/m4/iconv.m4
index 0005795..2a7edd3 100644
--- a/m4/iconv.m4
+++ b/m4/iconv.m4
@@ -1,5 +1,5 @@
-# iconv.m4 serial 24
-dnl Copyright (C) 2000-2002, 2007-2014, 2016-2022 Free Software Foundation,
+# iconv.m4 serial 27
+dnl Copyright (C) 2000-2002, 2007-2014, 2016-2024 Free Software Foundation,
dnl Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -38,7 +38,7 @@ AC_DEFUN([AM_ICONV_LINK],
dnl because if the user has installed libiconv and not disabled its use
dnl via --without-libiconv-prefix, he wants to use it. The first
dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed.
- am_save_CPPFLAGS="$CPPFLAGS"
+ gl_saved_CPPFLAGS="$CPPFLAGS"
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [
@@ -55,7 +55,7 @@ AC_DEFUN([AM_ICONV_LINK],
iconv_close(cd);]])],
[am_cv_func_iconv=yes])
if test "$am_cv_func_iconv" != yes; then
- am_save_LIBS="$LIBS"
+ gl_saved_LIBS="$LIBS"
LIBS="$LIBS $LIBICONV"
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
@@ -68,14 +68,14 @@ AC_DEFUN([AM_ICONV_LINK],
iconv_close(cd);]])],
[am_cv_lib_iconv=yes]
[am_cv_func_iconv=yes])
- LIBS="$am_save_LIBS"
+ LIBS="$gl_saved_LIBS"
fi
])
if test "$am_cv_func_iconv" = yes; then
AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11,
dnl Solaris 10.
- am_save_LIBS="$LIBS"
+ gl_saved_LIBS="$LIBS"
if test $am_cv_lib_iconv = yes; then
LIBS="$LIBS $LIBICONV"
fi
@@ -205,7 +205,7 @@ AC_DEFUN([AM_ICONV_LINK],
esac])
test "$am_cv_func_iconv_works" = no || break
done
- LIBS="$am_save_LIBS"
+ LIBS="$gl_saved_LIBS"
])
case "$am_cv_func_iconv_works" in
*no) am_func_iconv=no am_cv_lib_iconv=no ;;
@@ -224,7 +224,7 @@ AC_DEFUN([AM_ICONV_LINK],
else
dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
dnl either.
- CPPFLAGS="$am_save_CPPFLAGS"
+ CPPFLAGS="$gl_saved_CPPFLAGS"
LIBICONV=
LTLIBICONV=
fi
@@ -234,12 +234,6 @@ AC_DEFUN([AM_ICONV_LINK],
dnl Define AM_ICONV using AC_DEFUN_ONCE, in order to avoid warnings like
dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required".
-dnl This is tricky because of the way 'aclocal' is implemented:
-dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN.
-dnl Otherwise aclocal's initial scan pass would miss the macro definition.
-dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions.
-dnl Otherwise aclocal would emit many "Use of uninitialized value $1"
-dnl warnings.
AC_DEFUN_ONCE([AM_ICONV],
[
AM_ICONV_LINK
@@ -280,4 +274,20 @@ size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, si
ICONV_CONST="const"
fi
])
+
+ dnl A summary result, for those packages which want to print a summary at the
+ dnl end of the configuration.
+ if test "$am_func_iconv" = yes; then
+ if test -n "$LIBICONV"; then
+ am_cv_func_iconv_summary='yes, in libiconv'
+ else
+ am_cv_func_iconv_summary='yes, in libc'
+ fi
+ else
+ if test "$am_cv_func_iconv" = yes; then
+ am_cv_func_iconv_summary='not working, consider installing GNU libiconv'
+ else
+ am_cv_func_iconv_summary='no, consider installing GNU libiconv'
+ fi
+ fi
])
diff --git a/m4/intlmacosx.m4 b/m4/intlmacosx.m4
index ecc88d6..450eb88 100644
--- a/m4/intlmacosx.m4
+++ b/m4/intlmacosx.m4
@@ -1,5 +1,5 @@
-# intlmacosx.m4 serial 8 (gettext-0.20.2)
-dnl Copyright (C) 2004-2014, 2016, 2019-2022 Free Software Foundation, Inc.
+# intlmacosx.m4 serial 10 (gettext-0.23)
+dnl Copyright (C) 2004-2014, 2016, 2019-2024 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.
@@ -20,7 +20,7 @@ AC_DEFUN([gt_INTL_MACOSX],
dnl Check for API introduced in Mac OS X 10.4.
AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
[gt_cv_func_CFPreferencesCopyAppValue],
- [gt_save_LIBS="$LIBS"
+ [gt_saved_LIBS="$LIBS"
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
@@ -28,7 +28,7 @@ AC_DEFUN([gt_INTL_MACOSX],
[[CFPreferencesCopyAppValue(NULL, NULL)]])],
[gt_cv_func_CFPreferencesCopyAppValue=yes],
[gt_cv_func_CFPreferencesCopyAppValue=no])
- LIBS="$gt_save_LIBS"])
+ LIBS="$gt_saved_LIBS"])
if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1],
[Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
@@ -43,7 +43,7 @@ AC_DEFUN([gt_INTL_MACOSX],
dnl CFPreferencesCopyAppValue still returns, namely ll_CC where ll is the
dnl first among the preferred languages and CC is the territory.
AC_CACHE_CHECK([for CFLocaleCopyPreferredLanguages], [gt_cv_func_CFLocaleCopyPreferredLanguages],
- [gt_save_LIBS="$LIBS"
+ [gt_saved_LIBS="$LIBS"
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
@@ -51,7 +51,7 @@ AC_DEFUN([gt_INTL_MACOSX],
[[CFLocaleCopyPreferredLanguages();]])],
[gt_cv_func_CFLocaleCopyPreferredLanguages=yes],
[gt_cv_func_CFLocaleCopyPreferredLanguages=no])
- LIBS="$gt_save_LIBS"])
+ LIBS="$gt_saved_LIBS"])
if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
AC_DEFINE([HAVE_CFLOCALECOPYPREFERREDLANGUAGES], [1],
[Define to 1 if you have the Mac OS X function CFLocaleCopyPreferredLanguages in the CoreFoundation framework.])
@@ -59,7 +59,11 @@ AC_DEFUN([gt_INTL_MACOSX],
INTL_MACOSX_LIBS=
if test $gt_cv_func_CFPreferencesCopyAppValue = yes \
|| test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
- INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+ dnl Starting with macOS version 14, CoreFoundation relies on CoreServices,
+ dnl and we have to link it in explicitly, otherwise an exception
+ dnl NSInvalidArgumentException "unrecognized selector sent to instance"
+ dnl occurs.
+ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation -Wl,-framework -Wl,CoreServices"
fi
AC_SUBST([INTL_MACOSX_LIBS])
])
diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4
index 934207a..b17e0fd 100644
--- a/m4/lib-ld.m4
+++ b/m4/lib-ld.m4
@@ -1,5 +1,5 @@
-# lib-ld.m4 serial 10
-dnl Copyright (C) 1996-2003, 2009-2022 Free Software Foundation, Inc.
+# lib-ld.m4 serial 13
+dnl Copyright (C) 1996-2003, 2009-2024 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.
@@ -29,7 +29,7 @@ AC_DEFUN([AC_LIB_PROG_LD],
AC_REQUIRE([AC_CANONICAL_HOST])dnl
AC_ARG_WITH([gnu-ld],
- [AS_HELP_STRING([--with-gnu-ld],
+ [AS_HELP_STRING([[--with-gnu-ld]],
[assume the C compiler uses GNU ld [default=no]])],
[test "$withval" = no || with_gnu_ld=yes],
[with_gnu_ld=no])dnl
@@ -67,7 +67,7 @@ else
if test "$GCC" = yes; then
# Check if gcc -print-prog-name=ld gives a path.
case $host in
- *-*-mingw*)
+ *-*-mingw* | windows*)
# gcc leaves a trailing carriage return which upsets mingw
acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
*)
@@ -97,9 +97,9 @@ else
fi
if test -n "$ac_prog"; then
# Search for $ac_prog in $PATH.
- acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ acl_saved_IFS="$IFS"; IFS=$PATH_SEPARATOR
for ac_dir in $PATH; do
- IFS="$acl_save_ifs"
+ IFS="$acl_saved_IFS"
test -z "$ac_dir" && ac_dir=.
if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
acl_cv_path_LD="$ac_dir/$ac_prog"
@@ -116,7 +116,7 @@ else
esac
fi
done
- IFS="$acl_save_ifs"
+ IFS="$acl_saved_IFS"
fi
case $host in
*-*-aix*)
diff --git a/m4/lib-link.m4 b/m4/lib-link.m4
index 3b75bcd..1a7c127 100644
--- a/m4/lib-link.m4
+++ b/m4/lib-link.m4
@@ -1,5 +1,5 @@
-# lib-link.m4 serial 33
-dnl Copyright (C) 2001-2022 Free Software Foundation, Inc.
+# lib-link.m4 serial 34
+dnl Copyright (C) 2001-2024 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.
@@ -69,11 +69,11 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
dnl because if the user has installed lib[]Name and not disabled its use
dnl via --without-lib[]Name-prefix, he wants to use it.
- ac_save_CPPFLAGS="$CPPFLAGS"
+ acl_saved_CPPFLAGS="$CPPFLAGS"
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
- ac_save_LIBS="$LIBS"
+ acl_saved_LIBS="$LIBS"
dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS,
dnl because these -l options might require -L options that are present in
dnl LIBS. -l options benefit only from the -L options listed before it.
@@ -89,7 +89,7 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
[AC_LANG_PROGRAM([[$3]], [[$4]])],
[ac_cv_lib[]Name=yes],
[ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])'])
- LIBS="$ac_save_LIBS"
+ LIBS="$acl_saved_LIBS"
])
if test "$ac_cv_lib[]Name" = yes; then
HAVE_LIB[]NAME=yes
@@ -100,7 +100,7 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
HAVE_LIB[]NAME=no
dnl If $LIB[]NAME didn't lead to a usable library, we don't need
dnl $INC[]NAME either.
- CPPFLAGS="$ac_save_CPPFLAGS"
+ CPPFLAGS="$acl_saved_CPPFLAGS"
LIB[]NAME=
LTLIB[]NAME=
LIB[]NAME[]_PREFIX=
@@ -224,7 +224,7 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
additional_libdir3=
fi
dnl Search the library and its dependencies in $additional_libdir and
- dnl $LDFLAGS. Using breadth-first-seach.
+ dnl $LDFLAGS. Use breadth-first search.
LIB[]NAME=
LTLIB[]NAME=
INC[]NAME=
@@ -537,12 +537,12 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
dnl Read the .la file. It defines the variables
dnl dlname, library_names, old_library, dependency_libs, current,
dnl age, revision, installed, dlopen, dlpreopen, libdir.
- save_libdir="$libdir"
+ saved_libdir="$libdir"
case "$found_la" in
*/* | *\\*) . "$found_la" ;;
*) . "./$found_la" ;;
esac
- libdir="$save_libdir"
+ libdir="$saved_libdir"
dnl We use only dependency_libs.
for dep in $dependency_libs; do
case "$dep" in
@@ -682,18 +682,18 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
done
dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl.
- acl_save_libdir="$libdir"
+ acl_saved_libdir="$libdir"
libdir="$alldirs"
eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
+ libdir="$acl_saved_libdir"
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
else
dnl The -rpath options are cumulative.
for found_dir in $rpathdirs; do
- acl_save_libdir="$libdir"
+ acl_saved_libdir="$libdir"
libdir="$found_dir"
eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
+ libdir="$acl_saved_libdir"
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
done
fi
@@ -790,18 +790,18 @@ AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
for dir in $rpathdirs; do
alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir"
done
- acl_save_libdir="$libdir"
+ acl_saved_libdir="$libdir"
libdir="$alldirs"
eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
+ libdir="$acl_saved_libdir"
$1="$flag"
else
dnl The -rpath options are cumulative.
for dir in $rpathdirs; do
- acl_save_libdir="$libdir"
+ acl_saved_libdir="$libdir"
libdir="$dir"
eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
+ libdir="$acl_saved_libdir"
$1="${$1}${$1:+ }$flag"
done
fi
diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4
index 999f712..f327c6e 100644
--- a/m4/lib-prefix.m4
+++ b/m4/lib-prefix.m4
@@ -1,5 +1,5 @@
-# lib-prefix.m4 serial 20
-dnl Copyright (C) 2001-2005, 2008-2022 Free Software Foundation, Inc.
+# lib-prefix.m4 serial 22
+dnl Copyright (C) 2001-2005, 2008-2024 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.
@@ -126,10 +126,10 @@ AC_DEFUN([AC_LIB_PREPARE_PREFIX],
else
acl_final_exec_prefix="$exec_prefix"
fi
- acl_save_prefix="$prefix"
+ acl_saved_prefix="$prefix"
prefix="$acl_final_prefix"
eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
- prefix="$acl_save_prefix"
+ prefix="$acl_saved_prefix"
])
dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
@@ -137,13 +137,13 @@ dnl variables prefix and exec_prefix bound to the values they will have
dnl at the end of the configure script.
AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
[
- acl_save_prefix="$prefix"
+ acl_saved_prefix="$prefix"
prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
+ acl_saved_exec_prefix="$exec_prefix"
exec_prefix="$acl_final_exec_prefix"
$1
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+ exec_prefix="$acl_saved_exec_prefix"
+ prefix="$acl_saved_prefix"
])
dnl AC_LIB_PREPARE_MULTILIB creates
@@ -256,6 +256,15 @@ changequote([,])dnl
esac
fi
;;
+ netbsd*)
+ dnl On NetBSD/sparc64, there is a 'sparc' subdirectory that contains
+ dnl 32-bit libraries.
+ if test $HOST_CPU_C_ABI_32BIT != no; then
+ case "$host_cpu" in
+ sparc*) acl_libdirstem2=lib/sparc ;;
+ esac
+ fi
+ ;;
*)
dnl If $CC generates code for a 32-bit ABI, the libraries are
dnl surely under $prefix/lib or $prefix/lib32, not $prefix/lib64.
@@ -280,7 +289,7 @@ changequote([,])dnl
fi
fi
if test -n "$searchpath"; then
- acl_save_IFS="${IFS= }"; IFS=":"
+ acl_saved_IFS="${IFS= }"; IFS=":"
for searchdir in $searchpath; do
if test -d "$searchdir"; then
case "$searchdir" in
@@ -297,7 +306,7 @@ changequote([,])dnl
esac
fi
done
- IFS="$acl_save_IFS"
+ IFS="$acl_saved_IFS"
if test $HOST_CPU_C_ABI_32BIT = yes; then
# 32-bit ABI.
acl_libdirstem3=
diff --git a/m4/libtool.m4 b/m4/libtool.m4
index 717e769..c5be643 100644
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -1,6 +1,6 @@
# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
#
-# Copyright (C) 1996-2001, 2003-2019, 2021-2022 Free Software
+# Copyright (C) 1996-2001, 2003-2019, 2021-2024 Free Software
# Foundation, Inc.
# Written by Gordon Matzigkeit, 1996
#
@@ -9,13 +9,13 @@
# modifications, as long as this notice is preserved.
m4_define([_LT_COPYING], [dnl
-# Copyright (C) 2014 Free Software Foundation, Inc.
+# Copyright (C) 2024 Free Software Foundation, Inc.
# This is free software; see the source for copying conditions. There is NO
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# GNU Libtool 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 of the License, or
+# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# As a special exception to the GNU General Public License, if you
@@ -32,7 +32,7 @@ m4_define([_LT_COPYING], [dnl
# along with this program. If not, see <http://www.gnu.org/licenses/>.
])
-# serial 59 LT_INIT
+# serial 61 LT_INIT
# LT_PREREQ(VERSION)
@@ -616,7 +616,7 @@ m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
# LT_OUTPUT
# ---------
# This macro allows early generation of the libtool script (before
-# AC_OUTPUT is called), incase it is used in configure for compilation
+# AC_OUTPUT is called), in case it is used in configure for compilation
# tests.
AC_DEFUN([LT_OUTPUT],
[: ${CONFIG_LT=./config.lt}
@@ -651,9 +651,9 @@ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
configured by $[0], generated by m4_PACKAGE_STRING.
-Copyright (C) 2011 Free Software Foundation, Inc.
+Copyright (C) 2024 Free Software Foundation, Inc.
This config.lt script is free software; the Free Software Foundation
-gives unlimited permision to copy, distribute and modify it."
+gives unlimited permission to copy, distribute and modify it."
while test 0 != $[#]
do
@@ -1255,7 +1255,9 @@ lt_sysroot=
case $with_sysroot in #(
yes)
if test yes = "$GCC"; then
- lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ # Trim trailing / since we'll always append absolute paths and we want
+ # to avoid //, if only for less confusing output for the user.
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null | $SED 's:/\+$::'`
fi
;; #(
/*)
@@ -1367,7 +1369,7 @@ mips64*-*linux*)
;;
x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*|x86_64-gnu*)
# Find out what ABI is being produced by ac_compile, and set linker
# options accordingly. Note that the listed cases only cover the
# situations where additional linker options are needed (such as when
@@ -1382,7 +1384,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*kfreebsd*-gnu)
LD="${LD-ld} -m elf_i386_fbsd"
;;
- x86_64-*linux*)
+ x86_64-*linux*|x86_64-gnu*)
case `$FILECMD conftest.o` in
*x86-64*)
LD="${LD-ld} -m elf32_x86_64"
@@ -1411,7 +1413,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*kfreebsd*-gnu)
LD="${LD-ld} -m elf_x86_64_fbsd"
;;
- x86_64-*linux*)
+ x86_64-*linux*|x86_64-gnu*)
LD="${LD-ld} -m elf_x86_64"
;;
powerpcle-*linux*)
@@ -1494,7 +1496,7 @@ _LT_DECL([], [AR], [1], [The archiver])
# Use ARFLAGS variable as AR's operation code to sync the variable naming with
# Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have
-# higher priority because thats what people were doing historically (setting
+# higher priority because that's what people were doing historically (setting
# ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS
# variable obsoleted/removed.
@@ -1555,15 +1557,8 @@ old_postinstall_cmds='chmod 644 $oldlib'
old_postuninstall_cmds=
if test -n "$RANLIB"; then
- case $host_os in
- bitrig* | openbsd*)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
- ;;
- *)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
- ;;
- esac
old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
fi
case $host_os in
@@ -1702,7 +1697,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
lt_cv_sys_max_cmd_len=-1;
;;
- cygwin* | mingw* | cegcc*)
+ cygwin* | mingw* | windows* | cegcc*)
# On Win9x/ME, this test blows up -- it succeeds, but takes
# about 5 minutes as the teststring grows exponentially.
# Worse, since 9x/ME are not pre-emptively multitasking,
@@ -1724,7 +1719,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
lt_cv_sys_max_cmd_len=8192;
;;
- bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*)
+ darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*)
# This has been around since 386BSD, at least. Likely further.
if test -x /sbin/sysctl; then
lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
@@ -1945,7 +1940,7 @@ else
lt_cv_dlopen_self=yes
;;
- mingw* | pw32* | cegcc*)
+ mingw* | windows* | pw32* | cegcc*)
lt_cv_dlopen=LoadLibrary
lt_cv_dlopen_libs=
;;
@@ -2313,7 +2308,7 @@ if test yes = "$GCC"; then
*) lt_awk_arg='/^libraries:/' ;;
esac
case $host_os in
- mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;;
+ mingw* | windows* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;;
*) lt_sed_strip_eq='s|=/|/|g' ;;
esac
lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
@@ -2371,7 +2366,7 @@ BEGIN {RS = " "; FS = "/|\n";} {
# AWK program above erroneously prepends '/' to C:/dos/paths
# for these hosts.
case $host_os in
- mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+ mingw* | windows* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
$SED 's|/\([[A-Za-z]]:\)|\1|g'` ;;
esac
sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
@@ -2540,7 +2535,7 @@ bsdi[[45]]*)
# libtool to hard-code these into programs
;;
-cygwin* | mingw* | pw32* | cegcc*)
+cygwin* | mingw* | windows* | pw32* | cegcc*)
version_type=windows
shrext_cmds=.dll
need_version=no
@@ -2572,7 +2567,7 @@ cygwin* | mingw* | pw32* | cegcc*)
m4_if([$1], [],[
sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
;;
- mingw* | cegcc*)
+ mingw* | windows* | cegcc*)
# MinGW DLLs use traditional 'lib' prefix
soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
;;
@@ -2591,7 +2586,7 @@ m4_if([$1], [],[
library_names_spec='$libname.dll.lib'
case $build_os in
- mingw*)
+ mingw* | windows*)
sys_lib_search_path_spec=
lt_save_ifs=$IFS
IFS=';'
@@ -2839,7 +2834,7 @@ linux*android*)
version_type=none # Android doesn't support versioned libraries.
need_lib_prefix=no
need_version=no
- library_names_spec='$libname$release$shared_ext'
+ library_names_spec='$libname$release$shared_ext $libname$shared_ext'
soname_spec='$libname$release$shared_ext'
finish_cmds=
shlibpath_var=LD_LIBRARY_PATH
@@ -2851,8 +2846,9 @@ linux*android*)
hardcode_into_libs=yes
dynamic_linker='Android linker'
- # Don't embed -rpath directories since the linker doesn't support them.
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ # -rpath works at least for libraries that are not overridden by
+ # libraries installed in system locations.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
;;
# This must be glibc/ELF.
@@ -2886,7 +2882,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
# before this can be enabled.
hardcode_into_libs=yes
- # Ideally, we could use ldconfig to report *all* directores which are
+ # Ideally, we could use ldconfig to report *all* directories which are
# searched for libraries, however this is still not possible. Aside from not
# being certain /sbin/ldconfig is available, command
# 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
@@ -2943,7 +2939,7 @@ newsos6)
dynamic_linker='ldqnx.so'
;;
-openbsd* | bitrig*)
+openbsd*)
version_type=sunos
sys_lib_dlsearch_path_spec=/usr/lib
need_lib_prefix=no
@@ -3275,7 +3271,7 @@ if test yes = "$GCC"; then
# Check if gcc -print-prog-name=ld gives a path.
AC_MSG_CHECKING([for ld used by $CC])
case $host in
- *-*-mingw*)
+ *-*-mingw* | *-*-windows*)
# gcc leaves a trailing carriage return, which upsets mingw
ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
*)
@@ -3384,7 +3380,7 @@ case $reload_flag in
esac
reload_cmds='$LD$reload_flag -o $output$reload_objs'
case $host_os in
- cygwin* | mingw* | pw32* | cegcc*)
+ cygwin* | mingw* | windows* | pw32* | cegcc*)
if test yes != "$GCC"; then
reload_cmds=false
fi
@@ -3456,7 +3452,6 @@ lt_cv_deplibs_check_method='unknown'
# 'none' -- dependencies not supported.
# 'unknown' -- same as none, but documents that we really don't know.
# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
# 'file_magic [[regex]]' -- check by looking for files in library path
# that responds to the $file_magic_cmd with a given extended regex.
# If you have 'file' or equivalent on your system and you're not sure
@@ -3483,7 +3478,7 @@ cygwin*)
lt_cv_file_magic_cmd='func_win32_libid'
;;
-mingw* | pw32*)
+mingw* | windows* | pw32*)
# Base MSYS/MinGW do not provide the 'file' command needed by
# func_win32_libid shell function, so use a weaker test based on 'objdump',
# unless we find 'file', for example because we are cross-compiling.
@@ -3583,7 +3578,7 @@ newos6*)
lt_cv_deplibs_check_method=pass_all
;;
-openbsd* | bitrig*)
+openbsd*)
if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
else
@@ -3647,7 +3642,7 @@ file_magic_glob=
want_nocaseglob=no
if test "$build" = "$host"; then
case $host_os in
- mingw* | pw32*)
+ mingw* | windows* | pw32*)
if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
want_nocaseglob=yes
else
@@ -3699,7 +3694,7 @@ else
# Tru64's nm complains that /dev/null is an invalid object file
# MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
case $build_os in
- mingw*) lt_bad_file=conftest.nm/nofile ;;
+ mingw* | windows*) lt_bad_file=conftest.nm/nofile ;;
*) lt_bad_file=/dev/null ;;
esac
case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in
@@ -3790,7 +3785,7 @@ lt_cv_sharedlib_from_linklib_cmd,
[lt_cv_sharedlib_from_linklib_cmd='unknown'
case $host_os in
-cygwin* | mingw* | pw32* | cegcc*)
+cygwin* | mingw* | windows* | pw32* | cegcc*)
# two different shell functions defined in ltmain.sh;
# decide which one to use based on capabilities of $DLLTOOL
case `$DLLTOOL --help 2>&1` in
@@ -3822,16 +3817,16 @@ _LT_DECL([], [sharedlib_from_linklib_cmd], [1],
m4_defun([_LT_PATH_MANIFEST_TOOL],
[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
- [lt_cv_path_mainfest_tool=no
+AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_manifest_tool],
+ [lt_cv_path_manifest_tool=no
echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
$MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
cat conftest.err >&AS_MESSAGE_LOG_FD
if $GREP 'Manifest Tool' conftest.out > /dev/null; then
- lt_cv_path_mainfest_tool=yes
+ lt_cv_path_manifest_tool=yes
fi
rm -f conftest*])
-if test yes != "$lt_cv_path_mainfest_tool"; then
+if test yes != "$lt_cv_path_manifest_tool"; then
MANIFEST_TOOL=:
fi
_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
@@ -3860,7 +3855,7 @@ AC_DEFUN([LT_LIB_M],
[AC_REQUIRE([AC_CANONICAL_HOST])dnl
LIBM=
case $host in
-*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
+*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-mingw* | *-*-pw32* | *-*-darwin*)
# These system don't have libm, or don't need it
;;
*-ncr-sysv4.3*)
@@ -3935,7 +3930,7 @@ case $host_os in
aix*)
symcode='[[BCDT]]'
;;
-cygwin* | mingw* | pw32* | cegcc*)
+cygwin* | mingw* | windows* | pw32* | cegcc*)
symcode='[[ABCDGISTW]]'
;;
hpux*)
@@ -3950,7 +3945,7 @@ osf*)
symcode='[[BCDEGQRST]]'
;;
solaris*)
- symcode='[[BDRT]]'
+ symcode='[[BCDRT]]'
;;
sco3.2v5*)
symcode='[[DT]]'
@@ -4014,7 +4009,7 @@ $lt_c_name_lib_hook\
# Handle CRLF in mingw tool chain
opt_cr=
case $build_os in
-mingw*)
+mingw* | windows*)
opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
;;
esac
@@ -4241,7 +4236,7 @@ m4_if([$1], [CXX], [
beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
# PIC is the default for these OSes.
;;
- mingw* | cygwin* | os2* | pw32* | cegcc*)
+ mingw* | windows* | cygwin* | os2* | pw32* | cegcc*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
# Although the cygwin gcc ignores -fPIC, still need this for old-style
@@ -4317,7 +4312,7 @@ m4_if([$1], [CXX], [
;;
esac
;;
- mingw* | cygwin* | os2* | pw32* | cegcc*)
+ mingw* | windows* | cygwin* | os2* | pw32* | cegcc*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
m4_if([$1], [GCJ], [],
@@ -4565,7 +4560,7 @@ m4_if([$1], [CXX], [
# PIC is the default for these OSes.
;;
- mingw* | cygwin* | pw32* | os2* | cegcc*)
+ mingw* | windows* | cygwin* | pw32* | os2* | cegcc*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
# Although the cygwin gcc ignores -fPIC, still need this for old-style
@@ -4669,7 +4664,7 @@ m4_if([$1], [CXX], [
esac
;;
- mingw* | cygwin* | pw32* | os2* | cegcc*)
+ mingw* | windows* | cygwin* | pw32* | os2* | cegcc*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
m4_if([$1], [GCJ], [],
@@ -4711,6 +4706,12 @@ m4_if([$1], [CXX], [
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
;;
+ *flang)
+ # Flang compiler.
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
# icc used to be incompatible with GCC.
# ICC 10 doesn't accept -KPIC any more.
icc* | ifort*)
@@ -4944,7 +4945,7 @@ m4_if([$1], [CXX], [
pw32*)
_LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds
;;
- cygwin* | mingw* | cegcc*)
+ cygwin* | mingw* | windows* | cegcc*)
case $cc_basename in
cl* | icl*)
_LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
@@ -5002,7 +5003,7 @@ dnl Note also adjust exclude_expsyms for C++ above.
extract_expsyms_cmds=
case $host_os in
- cygwin* | mingw* | pw32* | cegcc*)
+ cygwin* | mingw* | windows* | pw32* | cegcc*)
# FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++ or Intel C++ Compiler.
@@ -5014,7 +5015,7 @@ dnl Note also adjust exclude_expsyms for C++ above.
# we just hope/assume this is gcc and not c89 (= MSVC++ or ICC)
with_gnu_ld=yes
;;
- openbsd* | bitrig*)
+ openbsd*)
with_gnu_ld=no
;;
esac
@@ -5117,7 +5118,7 @@ _LT_EOF
fi
;;
- cygwin* | mingw* | pw32* | cegcc*)
+ cygwin* | mingw* | windows* | pw32* | cegcc*)
# _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
# as there is no search path for DLLs.
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
@@ -5173,7 +5174,7 @@ _LT_EOF
cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
emximp -o $lib $output_objdir/$libname.def'
- _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+ _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
_LT_TAGVAR(file_list_spec, $1)='@'
;;
@@ -5574,7 +5575,7 @@ _LT_EOF
_LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
;;
- cygwin* | mingw* | pw32* | cegcc*)
+ cygwin* | mingw* | windows* | pw32* | cegcc*)
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++ or Intel C++ Compiler.
# hardcode_libdir_flag_spec is actually meaningless, as there is
@@ -5591,14 +5592,14 @@ _LT_EOF
# Tell ltmain to make .dll files, not .so files.
shrext_cmds=.dll
# FIXME: Setting linknames here is a bad hack.
- _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+ _LT_TAGVAR(archive_cmds, $1)='$CC -Fe $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
_LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
cp "$export_symbols" "$output_objdir/$soname.def";
echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
else
$SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
fi~
- $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+ $CC -Fe $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
linknames='
# The linker will not automatically build a static lib if we build a DLL.
# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
@@ -5836,7 +5837,7 @@ _LT_EOF
*nto* | *qnx*)
;;
- openbsd* | bitrig*)
+ openbsd*)
if test -f /usr/libexec/ld.so; then
_LT_TAGVAR(hardcode_direct, $1)=yes
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
@@ -5879,7 +5880,7 @@ _LT_EOF
cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
emximp -o $lib $output_objdir/$libname.def'
- _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+ _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
_LT_TAGVAR(file_list_spec, $1)='@'
;;
@@ -6173,7 +6174,7 @@ _LT_TAGDECL([], [hardcode_direct], [0],
_LT_TAGDECL([], [hardcode_direct_absolute], [0],
[Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes
DIR into the resulting binary and the resulting library dependency is
- "absolute", i.e impossible to change by setting $shlibpath_var if the
+ "absolute", i.e. impossible to change by setting $shlibpath_var if the
library is relocated])
_LT_TAGDECL([], [hardcode_minus_L], [0],
[Set to "yes" if using the -LDIR flag during linking hardcodes DIR
@@ -6420,8 +6421,7 @@ if test yes != "$_lt_caught_CXX_error"; then
wlarc='$wl'
# ancient GNU ld didn't support --whole-archive et. al.
- if eval "`$CC -print-prog-name=ld` --help 2>&1" |
- $GREP 'no-whole-archive' > /dev/null; then
+ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
_LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
else
_LT_TAGVAR(whole_archive_flag_spec, $1)=
@@ -6441,7 +6441,7 @@ if test yes != "$_lt_caught_CXX_error"; then
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "[[-]]L"'
else
GXX=no
@@ -6650,7 +6650,7 @@ if test yes != "$_lt_caught_CXX_error"; then
esac
;;
- cygwin* | mingw* | pw32* | cegcc*)
+ cygwin* | mingw* | windows* | pw32* | cegcc*)
case $GXX,$cc_basename in
,cl* | no,cl* | ,icl* | no,icl*)
# Native MSVC or ICC
@@ -6749,7 +6749,7 @@ if test yes != "$_lt_caught_CXX_error"; then
cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
emximp -o $lib $output_objdir/$libname.def'
- _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+ _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
_LT_TAGVAR(file_list_spec, $1)='@'
;;
@@ -6817,7 +6817,7 @@ if test yes != "$_lt_caught_CXX_error"; then
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "[[-]]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
;;
*)
if test yes = "$GXX"; then
@@ -6882,7 +6882,7 @@ if test yes != "$_lt_caught_CXX_error"; then
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "[[-]]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
;;
*)
if test yes = "$GXX"; then
@@ -7130,7 +7130,7 @@ if test yes != "$_lt_caught_CXX_error"; then
_LT_TAGVAR(ld_shlibs, $1)=yes
;;
- openbsd* | bitrig*)
+ openbsd*)
if test -f /usr/libexec/ld.so; then
_LT_TAGVAR(hardcode_direct, $1)=yes
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
@@ -7221,7 +7221,7 @@ if test yes != "$_lt_caught_CXX_error"; then
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "[[-]]L"'
else
# FIXME: insert proper C++ library support
@@ -7305,7 +7305,7 @@ if test yes != "$_lt_caught_CXX_error"; then
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "[[-]]L"'
else
# g++ 2.7 appears to require '-G' NOT '-shared' on this
# platform.
@@ -7316,7 +7316,7 @@ if test yes != "$_lt_caught_CXX_error"; then
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
- output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+ output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "[[-]]L"'
fi
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir'
@@ -7554,10 +7554,11 @@ if AC_TRY_EVAL(ac_compile); then
case $prev$p in
-L* | -R* | -l*)
- # Some compilers place space between "-{L,R}" and the path.
+ # Some compilers place space between "-{L,R,l}" and the path.
# Remove the space.
- if test x-L = "$p" ||
- test x-R = "$p"; then
+ if test x-L = x"$p" ||
+ test x-R = x"$p" ||
+ test x-l = x"$p"; then
prev=$p
continue
fi
@@ -8215,7 +8216,7 @@ AC_SUBST([DLLTOOL])
# ----------------
# Check for a file(cmd) program that can be used to detect file type and magic
m4_defun([_LT_DECL_FILECMD],
-[AC_CHECK_TOOL([FILECMD], [file], [:])
+[AC_CHECK_PROG([FILECMD], [file], [:])
_LT_DECL([], [FILECMD], [1], [A file(cmd) program that detects file types])
])# _LD_DECL_FILECMD
@@ -8231,73 +8232,6 @@ _LT_DECL([], [SED], [1], [A sed program that does not truncate output])
_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
[Sed that helps us avoid accidentally triggering echo(1) options like -n])
])# _LT_DECL_SED
-
-m4_ifndef([AC_PROG_SED], [
-############################################################
-# NOTE: This macro has been submitted for inclusion into #
-# GNU Autoconf as AC_PROG_SED. When it is available in #
-# a released version of Autoconf we should remove this #
-# macro and use it instead. #
-############################################################
-
-m4_defun([AC_PROG_SED],
-[AC_MSG_CHECKING([for a sed that does not truncate output])
-AC_CACHE_VAL(lt_cv_path_SED,
-[# Loop through the user's path and test for sed and gsed.
-# Then use that list of sed's as ones to test for truncation.
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for lt_ac_prog in sed gsed; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
- lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
- fi
- done
- done
-done
-IFS=$as_save_IFS
-lt_ac_max=0
-lt_ac_count=0
-# Add /usr/xpg4/bin/sed as it is typically found on Solaris
-# along with /bin/sed that truncates output.
-for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
- test ! -f "$lt_ac_sed" && continue
- cat /dev/null > conftest.in
- lt_ac_count=0
- echo $ECHO_N "0123456789$ECHO_C" >conftest.in
- # Check for GNU sed and select it if it is found.
- if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
- lt_cv_path_SED=$lt_ac_sed
- break
- fi
- while true; do
- cat conftest.in conftest.in >conftest.tmp
- mv conftest.tmp conftest.in
- cp conftest.in conftest.nl
- echo >>conftest.nl
- $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
- cmp -s conftest.out conftest.nl || break
- # 10000 chars as input seems more than enough
- test 10 -lt "$lt_ac_count" && break
- lt_ac_count=`expr $lt_ac_count + 1`
- if test "$lt_ac_count" -gt "$lt_ac_max"; then
- lt_ac_max=$lt_ac_count
- lt_cv_path_SED=$lt_ac_sed
- fi
- done
-done
-])
-SED=$lt_cv_path_SED
-AC_SUBST([SED])
-AC_MSG_RESULT([$SED])
-])#AC_PROG_SED
-])#m4_ifndef
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
dnl aclocal-1.4 backwards compatibility:
dnl AC_DEFUN([LT_AC_PROG_SED], [])
@@ -8344,7 +8278,7 @@ AC_CACHE_VAL(lt_cv_to_host_file_cmd,
[case $host in
*-*-mingw* )
case $build in
- *-*-mingw* ) # actually msys
+ *-*-mingw* | *-*-windows* ) # actually msys
lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
;;
*-*-cygwin* )
@@ -8357,7 +8291,7 @@ AC_CACHE_VAL(lt_cv_to_host_file_cmd,
;;
*-*-cygwin* )
case $build in
- *-*-mingw* ) # actually msys
+ *-*-mingw* | *-*-windows* ) # actually msys
lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
;;
*-*-cygwin* )
@@ -8383,9 +8317,9 @@ AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
[#assume ordinary cross tools, or native build.
lt_cv_to_tool_file_cmd=func_convert_file_noop
case $host in
- *-*-mingw* )
+ *-*-mingw* | *-*-windows* )
case $build in
- *-*-mingw* ) # actually msys
+ *-*-mingw* | *-*-windows* ) # actually msys
lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
;;
esac
diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4
index b0b5e9c..6dfe99f 100644
--- a/m4/ltoptions.m4
+++ b/m4/ltoptions.m4
@@ -1,6 +1,6 @@
# Helper functions for option handling. -*- Autoconf -*-
#
-# Copyright (C) 2004-2005, 2007-2009, 2011-2019, 2021-2022 Free
+# Copyright (C) 2004-2005, 2007-2009, 2011-2019, 2021-2024 Free
# Software Foundation, Inc.
# Written by Gary V. Vaughan, 2004
#
@@ -8,7 +8,7 @@
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
-# serial 8 ltoptions.m4
+# serial 9 ltoptions.m4
# This is to help aclocal find these macros, as it can't see m4_define.
AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
@@ -128,7 +128,7 @@ LT_OPTION_DEFINE([LT_INIT], [win32-dll],
[enable_win32_dll=yes
case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
+*-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-cegcc*)
AC_CHECK_TOOL(AS, as, false)
AC_CHECK_TOOL(DLLTOOL, dlltool, false)
AC_CHECK_TOOL(OBJDUMP, objdump, false)
diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4
index 902508b..5b5c80a 100644
--- a/m4/ltsugar.m4
+++ b/m4/ltsugar.m4
@@ -1,6 +1,6 @@
# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
#
-# Copyright (C) 2004-2005, 2007-2008, 2011-2019, 2021-2022 Free Software
+# Copyright (C) 2004-2005, 2007-2008, 2011-2019, 2021-2024 Free Software
# Foundation, Inc.
# Written by Gary V. Vaughan, 2004
#
diff --git a/m4/ltversion.m4 b/m4/ltversion.m4
index 0026c21..82887f7 100644
--- a/m4/ltversion.m4
+++ b/m4/ltversion.m4
@@ -1,6 +1,6 @@
# ltversion.m4 -- version numbers -*- Autoconf -*-
#
-# Copyright (C) 2004, 2011-2019, 2021-2022 Free Software Foundation,
+# Copyright (C) 2004, 2011-2019, 2021-2024 Free Software Foundation,
# Inc.
# Written by Scott James Remnant, 2004
#
@@ -10,15 +10,15 @@
# @configure_input@
-# serial 4249 ltversion.m4
+# serial 4337 ltversion.m4
# This file is part of GNU Libtool
-m4_define([LT_PACKAGE_VERSION], [2.4.7.4-1ec8f-dirty])
-m4_define([LT_PACKAGE_REVISION], [2.4.7.4])
+m4_define([LT_PACKAGE_VERSION], [2.5.0.1-38c1-dirty])
+m4_define([LT_PACKAGE_REVISION], [2.5.0.1])
AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.4.7.4-1ec8f-dirty'
-macro_revision='2.4.7.4'
+[macro_version='2.5.0.1-38c1-dirty'
+macro_revision='2.5.0.1'
_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
_LT_DECL(, macro_revision, 0)
])
diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4
index 0f7a875..22b5346 100644
--- a/m4/lt~obsolete.m4
+++ b/m4/lt~obsolete.m4
@@ -1,6 +1,6 @@
# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
#
-# Copyright (C) 2004-2005, 2007, 2009, 2011-2019, 2021-2022 Free
+# Copyright (C) 2004-2005, 2007, 2009, 2011-2019, 2021-2024 Free
# Software Foundation, Inc.
# Written by Scott James Remnant, 2004.
#
diff --git a/m4/nls.m4 b/m4/nls.m4
index 7c11c90..4d37d37 100644
--- a/m4/nls.m4
+++ b/m4/nls.m4
@@ -1,5 +1,5 @@
# nls.m4 serial 6 (gettext-0.20.2)
-dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014, 2016, 2019-2022 Free
+dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014, 2016, 2019-2024 Free
dnl Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
diff --git a/m4/po.m4 b/m4/po.m4
index 2f14f8e..bc6df99 100644
--- a/m4/po.m4
+++ b/m4/po.m4
@@ -1,5 +1,6 @@
# po.m4 serial 32 (gettext-0.21.1)
-dnl Copyright (C) 1995-2014, 2016, 2018-2022 Free Software Foundation, Inc.
+dnl Copyright (C) 1995-2014, 2016, 2018-2022, 2024 Free Software Foundation,
+dnl Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/posix-shell.m4 b/m4/posix-shell.m4
index 4c56193..95a19a9 100644
--- a/m4/posix-shell.m4
+++ b/m4/posix-shell.m4
@@ -1,3 +1,5 @@
+dnl SPDX-License-Identifier: FSFULLR
+
# Find a POSIX-conforming shell.
# Copyright (C) 2007-2008 Free Software Foundation, Inc.
diff --git a/m4/progtest.m4 b/m4/progtest.m4
index 4a5b0b4..8dd4d60 100644
--- a/m4/progtest.m4
+++ b/m4/progtest.m4
@@ -1,5 +1,5 @@
-# progtest.m4 serial 9 (gettext-0.21.1)
-dnl Copyright (C) 1996-2003, 2005, 2008-2022 Free Software Foundation, Inc.
+# progtest.m4 serial 10 (gettext-0.23)
+dnl Copyright (C) 1996-2003, 2005, 2008-2024 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.
@@ -60,9 +60,9 @@ AC_CACHE_VAL([ac_cv_path_$1],
ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
;;
*)
- ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+ gt_saved_IFS="$IFS"; IFS=$PATH_SEPARATOR
for ac_dir in m4_if([$5], , $PATH, [$5]); do
- IFS="$ac_save_IFS"
+ IFS="$gt_saved_IFS"
test -z "$ac_dir" && ac_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
@@ -74,7 +74,7 @@ AC_CACHE_VAL([ac_cv_path_$1],
fi
done
done
- IFS="$ac_save_IFS"
+ IFS="$gt_saved_IFS"
dnl If no 4th arg is given, leave the cache variable unset,
dnl so AC_PATH_PROGS will keep looking.
m4_if([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
diff --git a/m4/tuklib_common.m4 b/m4/tuklib_common.m4
index d942a25..c837703 100644
--- a/m4/tuklib_common.m4
+++ b/m4/tuklib_common.m4
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: 0BSD
+
+#############################################################################
#
# SYNOPSIS
#
@@ -7,13 +10,11 @@
#
# 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.
+# Author: Lasse Collin
#
+#############################################################################
AC_DEFUN_ONCE([TUKLIB_COMMON], [
AC_REQUIRE([AC_CANONICAL_HOST])
diff --git a/m4/tuklib_cpucores.m4 b/m4/tuklib_cpucores.m4
index 873812d..a228a8f 100644
--- a/m4/tuklib_cpucores.m4
+++ b/m4/tuklib_cpucores.m4
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: 0BSD
+
+#############################################################################
#
# SYNOPSIS
#
@@ -17,13 +20,11 @@
# 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.
+# Author: Lasse Collin
#
+#############################################################################
AC_DEFUN_ONCE([TUKLIB_CPUCORES], [
AC_REQUIRE([TUKLIB_COMMON])
diff --git a/m4/tuklib_integer.m4 b/m4/tuklib_integer.m4
index ab9a405..906ecf1 100644
--- a/m4/tuklib_integer.m4
+++ b/m4/tuklib_integer.m4
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: 0BSD
+
+#############################################################################
#
# SYNOPSIS
#
@@ -11,13 +14,11 @@
# - Does the hardware support fast unaligned access to 16-bit, 32-bit,
# and 64-bit integers
#
-# COPYING
-#
-# Author: Lasse Collin
+#############################################################################
#
-# This file has been put into the public domain.
-# You can do whatever you want with this file.
+# Author: Lasse Collin
#
+#############################################################################
AC_DEFUN_ONCE([TUKLIB_INTEGER], [
AC_REQUIRE([TUKLIB_COMMON])
@@ -65,22 +66,42 @@ 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, 32-bit, and 64-bit integers. By default,
- this is enabled only on x86, x86_64, big endian PowerPC,
- and some ARM systems.]),
+ this is enabled on x86, x86-64,
+ 32/64-bit big endian PowerPC,
+ 64-bit little endian PowerPC,
+ and some ARM, ARM64, and RISC-V 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.
+ # NOTE: There might be other architectures on which unaligned access
+ # is fast.
case $host_cpu in
- i?86|x86_64|powerpc|powerpc64)
+ i?86|x86_64|powerpc|powerpc64|powerpc64le)
enable_unaligned_access=yes
;;
- arm*|aarch64*)
+ arm*|aarch64*|riscv*)
# On 32-bit and 64-bit ARM, GCC and Clang
# #define __ARM_FEATURE_UNALIGNED if
# unaligned access is supported.
+ #
+ # Exception: GCC at least up to 13.2.0
+ # defines it even when using -mstrict-align
+ # so in that case this autodetection goes wrong.
+ # Most of the time -mstrict-align isn't used so it
+ # shouldn't be a common problem in practice. See:
+ # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111555
+ #
+ # RISC-V C API Specification says that if
+ # __riscv_misaligned_fast is defined then
+ # unaligned access is known to be fast.
+ #
+ # MSVC is handled as a special case: We assume that
+ # 32/64-bit ARM supports fast unaligned access.
+ # If MSVC gets RISC-V support then this will assume
+ # fast unaligned access on RISC-V too.
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
-#ifndef __ARM_FEATURE_UNALIGNED
+#if !defined(__ARM_FEATURE_UNALIGNED) \
+ && !defined(__riscv_misaligned_fast) \
+ && !defined(_MSC_VER)
compile error
#endif
int main(void) { return 0; }
diff --git a/m4/tuklib_mbstr.m4 b/m4/tuklib_mbstr.m4
index 991be9b..0139834 100644
--- a/m4/tuklib_mbstr.m4
+++ b/m4/tuklib_mbstr.m4
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: 0BSD
+
+#############################################################################
#
# SYNOPSIS
#
@@ -15,13 +18,11 @@
# 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.
+# Author: Lasse Collin
#
+#############################################################################
AC_DEFUN_ONCE([TUKLIB_MBSTR], [
AC_REQUIRE([TUKLIB_COMMON])
diff --git a/m4/tuklib_physmem.m4 b/m4/tuklib_physmem.m4
index 5931785..b5e0b1a 100644
--- a/m4/tuklib_physmem.m4
+++ b/m4/tuklib_physmem.m4
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: 0BSD
+
+#############################################################################
#
# SYNOPSIS
#
@@ -29,13 +32,11 @@
# - 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.
+# Author: Lasse Collin
#
+#############################################################################
AC_DEFUN_ONCE([TUKLIB_PHYSMEM], [
AC_REQUIRE([TUKLIB_COMMON])
diff --git a/m4/tuklib_progname.m4 b/m4/tuklib_progname.m4
index 7685d06..b70d063 100644
--- a/m4/tuklib_progname.m4
+++ b/m4/tuklib_progname.m4
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: 0BSD
+
+#############################################################################
#
# SYNOPSIS
#
@@ -11,18 +14,16 @@
# 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.
+# Author: Lasse Collin
#
+#############################################################################
AC_DEFUN_ONCE([TUKLIB_PROGNAME], [
AC_REQUIRE([TUKLIB_COMMON])
AC_CHECK_DECL([program_invocation_name], [AC_DEFINE(
[HAVE_PROGRAM_INVOCATION_NAME], [1],
- [Define to 1 if `program_invocation_name' is declared in <errno.h>.])],
+ [Define to 1 if 'program_invocation_name' is declared in <errno.h>.])],
[], [#include <errno.h>])
])dnl
diff --git a/m4/visibility.m4 b/m4/visibility.m4
index f0468e8..4a741c5 100644
--- a/m4/visibility.m4
+++ b/m4/visibility.m4
@@ -1,5 +1,8 @@
-# visibility.m4 serial 8
-dnl Copyright (C) 2005, 2008, 2010-2023 Free Software Foundation, Inc.
+dnl SPDX-License-Identifier: FSFULLR
+
+# visibility.m4
+# serial 9
+dnl Copyright (C) 2005, 2008, 2010-2024 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.
@@ -31,18 +34,18 @@ AC_DEFUN([gl_VISIBILITY],
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"
+ [gl_saved_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"
+ CFLAGS="$gl_saved_CFLAGS"
])
dnl Now check whether visibility declarations are supported.
AC_CACHE_CHECK([for simple visibility declarations],
[gl_cv_cc_visibility],
- [gl_save_CFLAGS="$CFLAGS"
+ [gl_saved_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
@@ -68,7 +71,7 @@ AC_DEFUN([gl_VISIBILITY],
[[]])],
[gl_cv_cc_visibility=yes],
[gl_cv_cc_visibility=no])
- CFLAGS="$gl_save_CFLAGS"
+ CFLAGS="$gl_saved_CFLAGS"
])
if test $gl_cv_cc_visibility = yes; then
CFLAG_VISIBILITY="-fvisibility=hidden"
diff --git a/macosx/build.sh b/macosx/build.sh
deleted file mode 100755
index fd089f3..0000000
--- a/macosx/build.sh
+++ /dev/null
@@ -1,113 +0,0 @@
-#!/bin/sh
-
-###############################################################################
-# Author: Anders F Björklund <afb@users.sourceforge.net>
-#
-# 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
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
index 6b25f0d..2b36b11 100644
--- a/po/Makefile.in.in
+++ b/po/Makefile.in.in
@@ -1,13 +1,13 @@
# Makefile for PO directory in any package using GNU gettext.
# Copyright (C) 1995-2000 Ulrich Drepper <drepper@gnu.ai.mit.edu>
-# Copyright (C) 2000-2020 Free Software Foundation, Inc.
+# Copyright (C) 2000-2023 Free Software Foundation, Inc.
#
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved. This file is offered as-is,
# without any warranty.
#
-# Origin: gettext-0.21
+# Origin: gettext-0.22
GETTEXT_MACRO_VERSION = 0.20
PACKAGE = @PACKAGE@
@@ -248,15 +248,17 @@ $(POFILES): $(POFILESDEPS)
@lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
if test -f "$(srcdir)/$${lang}.po"; then \
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} --previous $${lang}.po $(DOMAIN).pot"; \
+ echo "$${cdcmd}$(MSGMERGE_UPDATE) --quiet $(MSGMERGE_OPTIONS) --lang=$${lang} --previous $${lang}.po $(DOMAIN).pot"; \
cd $(srcdir) \
&& { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].*) \
+ '' | 0.[0-9] | 0.[0-9].* | 0.10 | 0.10.*) \
$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \
+ 0.1[1-5] | 0.1[1-5].*) \
+ $(MSGMERGE_UPDATE) --quiet $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \
0.1[6-7] | 0.1[6-7].*) \
- $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --previous $${lang}.po $(DOMAIN).pot;; \
+ $(MSGMERGE_UPDATE) --quiet $(MSGMERGE_OPTIONS) --previous $${lang}.po $(DOMAIN).pot;; \
*) \
- $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} --previous $${lang}.po $(DOMAIN).pot;; \
+ $(MSGMERGE_UPDATE) --quiet $(MSGMERGE_OPTIONS) --lang=$${lang} --previous $${lang}.po $(DOMAIN).pot;; \
esac; \
}; \
else \
@@ -464,15 +466,17 @@ update-po: Makefile
tmpdir=`pwd`; \
echo "$$lang:"; \
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang --previous $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
+ echo "$${cdcmd}$(MSGMERGE) --quiet $(MSGMERGE_OPTIONS) --lang=$$lang --previous $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
cd $(srcdir); \
if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].*) \
+ '' | 0.[0-9] | 0.[0-9].* | 0.10 | 0.10.*) \
$(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
+ 0.1[1-5] | 0.1[1-5].*) \
+ $(MSGMERGE) --quiet $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
0.1[6-7] | 0.1[6-7].*) \
- $(MSGMERGE) $(MSGMERGE_OPTIONS) --previous -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
+ $(MSGMERGE) --quiet $(MSGMERGE_OPTIONS) --previous -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
*) \
- $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang --previous -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
+ $(MSGMERGE) --quiet $(MSGMERGE_OPTIONS) --lang=$$lang --previous -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
esac; \
}; then \
if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
diff --git a/po/Makevars b/po/Makevars
index dc19bc9..9108789 100644
--- a/po/Makevars
+++ b/po/Makevars
@@ -1,4 +1,10 @@
+# SPDX-License-Identifier: FSFUL
+
# Makefile variables for PO directory in any package using GNU gettext.
+#
+# Copyright (C) 2003-2019 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to use, copy, distribute, and modify it.
# Usually the message domain is the same as the package name.
DOMAIN = $(PACKAGE)
@@ -8,7 +14,7 @@ subdir = po
top_builddir = ..
# These options get passed to xgettext.
-XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ --add-location=file --no-wrap
# 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
@@ -18,7 +24,14 @@ XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
# 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 =
+COPYRIGHT_HOLDER = The XZ Utils authors and contributors
+
+# This tells whether or not to prepend "GNU " prefix to the package
+# name that gets inserted into the header of the $(DOMAIN).pot file.
+# Possible values are "yes", "no", or empty. If it is empty, try to
+# detect it automatically by scanning the files in $(top_srcdir) for
+# "GNU packagename" string.
+PACKAGE_GNU = no
# This is the email address or URL to which the translators shall report
# bugs in the untranslated strings:
@@ -40,7 +53,39 @@ MSGID_BUGS_ADDRESS =
# 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
+# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt'
+# context. Possible values are "yes" and "no". Set this to yes if the
+# package uses functions taking also a message context, like pgettext(), or
+# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument.
+USE_MSGCTXT = no
+
+# These options get passed to msgmerge.
+# Useful options are in particular:
+# --previous to keep previous msgids of translated messages,
+# --quiet to reduce the verbosity.
+MSGMERGE_OPTIONS = --add-location=file --no-wrap
+
+# These options get passed to msginit.
+# If you want to disable line wrapping when writing PO files, add
+# --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and
+# MSGINIT_OPTIONS.
+#
+# Although one may need slightly wider terminal than 80 chars, it is
+# much nicer to edit the output of --help when --no-wrap is set.
+MSGINIT_OPTIONS = --no-wrap
+
+# This tells whether or not to regenerate a PO file when $(DOMAIN).pot
+# has changed. Possible values are "yes" and "no". Set this to no if
+# the POT file is checked in the repository and the version control
+# program ignores timestamps.
+PO_DEPENDS_ON_POT = yes
+
+# This tells whether or not to forcibly update $(DOMAIN).pot and
+# regenerate PO files on "make dist". Possible values are "yes" and
+# "no". Set this to no if the POT file and PO files are maintained
+# externally.
+#
+# NOTE: The the custom "mydist" target in ../Makefile.am updates xz.pot.
+# An updated xz.pot will cause the .po files to be updated too but
+# only when updating would change more than the POT-Creation-Date line.
+DIST_DEPENDS_ON_UPDATE_PO = no
diff --git a/po/POTFILES.in b/po/POTFILES.in
index e1438e0..a4f4e00 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,3 +1,5 @@
+# SPDX-License-Identifier: 0BSD
+
# List of source files which contain translatable strings.
src/xz/args.c
src/xz/coder.c
@@ -6,8 +8,10 @@ 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
+src/lzmainfo/lzmainfo.c
src/common/tuklib_exit.c
diff --git a/po/ca.gmo b/po/ca.gmo
index b3dc849..04977cb 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index 748c14f..ff836cb 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: xz 5.4.0-pre2\n"
"Report-Msgid-Bugs-To: xz@tukaani.org\n"
-"POT-Creation-Date: 2023-10-31 22:33+0800\n"
+"POT-Creation-Date: 2024-05-29 17:41+0300\n"
"PO-Revision-Date: 2022-12-12 18:19+0300\n"
"Last-Translator: Jordi Mas i Hernàndez <jmas@softcatala.org>\n"
"Language-Team: Catalan <ca@dodds.net>\n"
@@ -17,145 +17,179 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n==1) ? 0 : 1;\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-#: src/xz/args.c:77
+#: src/xz/args.c
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr "%s: argument no vàlid per a --block-list"
-#: src/xz/args.c:87
+#: src/xz/args.c
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s: massa arguments per a --block-list"
-#: src/xz/args.c:116
+#: src/xz/args.c
+#, c-format
+msgid "In --block-list, block size is missing after filter chain number '%c:'"
+msgstr ""
+
+#: src/xz/args.c
msgid "0 can only be used as the last element in --block-list"
msgstr "0 només es pot utilitzar com a últim element a --block-list"
-#: src/xz/args.c:451
+#: src/xz/args.c
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s: tipus de format de fitxer desconegut"
-#: src/xz/args.c:474 src/xz/args.c:482
+#: src/xz/args.c
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s: tipus de comprovació d'integritat no suportat"
-#: src/xz/args.c:518
-msgid "Only one file can be specified with `--files' or `--files0'."
+#: src/xz/args.c
+#, fuzzy
+#| msgid "Only one file can be specified with `--files' or `--files0'."
+msgid "Only one file can be specified with '--files' or '--files0'."
msgstr "Només es pot especificar un fitxer amb `--files' o `--files0'."
#. TRANSLATORS: This is a translatable
#. string because French needs a space
#. before the colon ("%s : %s").
-#: src/xz/args.c:533 src/xz/coder.c:692 src/xz/coder.c:708 src/xz/coder.c:968
-#: src/xz/coder.c:971 src/xz/file_io.c:605 src/xz/file_io.c:679
-#: src/xz/file_io.c:769 src/xz/file_io.c:940 src/xz/list.c:369
-#: src/xz/list.c:415 src/xz/list.c:477 src/xz/list.c:581 src/xz/list.c:590
+#: src/xz/args.c src/xz/coder.c src/xz/file_io.c src/xz/list.c
#, fuzzy, c-format
#| msgid "%s: "
msgid "%s: %s"
msgstr "%s: "
-#: src/xz/args.c:589
+#: src/xz/args.c
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "La variable d'entorn %s conté massa arguments"
-#: src/xz/args.c:691
+#: src/xz/args.c
msgid "Compression support was disabled at build time"
msgstr "El suport de compressió s'ha desactivat en temps de construcció"
-#: src/xz/args.c:698
+#: src/xz/args.c
msgid "Decompression support was disabled at build time"
msgstr "El suport de descompressió s'ha desactivat en temps de construcció"
-#: src/xz/args.c:704
+#: src/xz/args.c
msgid "Compression of lzip files (.lz) is not supported"
msgstr "No s'admet la compressió de fitxers lzip (.lz)"
-#: src/xz/args.c:735
+#: src/xz/args.c
+msgid "--block-list is ignored unless compressing to the .xz format"
+msgstr ""
+
+#: src/xz/args.c
#, fuzzy
#| msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "%s: amb --format=raw, --suffix=.SUF és necessari si no s'escriu a la sortida estàndard"
-#: src/xz/coder.c:115
+#: src/xz/coder.c
msgid "Maximum number of filters is four"
msgstr "El nombre màxim de filtres és de quatre"
-#: src/xz/coder.c:135
+#: src/xz/coder.c
+#, c-format
+msgid "Error in --filters%s=FILTERS option:"
+msgstr ""
+
+#: src/xz/coder.c
msgid "Memory usage limit is too low for the given filter setup."
msgstr "El límit d'ús de la memòria és massa baix per a la configuració del filtre indicat."
-#: src/xz/coder.c:170
+#: src/xz/coder.c
+#, c-format
+msgid "filter chain %u used by --block-list but not specified with --filters%u="
+msgstr ""
+
+#: src/xz/coder.c
msgid "Using a preset in raw mode is discouraged."
msgstr "Es desaconsella l'ús d'un predefinit en mode RAW."
-#: src/xz/coder.c:172
+#: src/xz/coder.c
msgid "The exact options of the presets may vary between software versions."
msgstr "Les opcions exactes dels predefinits poden variar entre versions de programari."
-#: src/xz/coder.c:195
+#: src/xz/coder.c
msgid "The .lzma format supports only the LZMA1 filter"
msgstr "El format .lzma només admet el filtre LZMA1"
-#: src/xz/coder.c:203
+#: src/xz/coder.c
msgid "LZMA1 cannot be used with the .xz format"
msgstr "No es pot usar LZMA1 amb el format .xz"
-#: src/xz/coder.c:220
-msgid "The filter chain is incompatible with --flush-timeout"
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "The filter chain is incompatible with --flush-timeout"
+msgid "Filter chain %u is incompatible with --flush-timeout"
msgstr "La cadena de filtratge és incompatible amb --flush-timeout"
-#: src/xz/coder.c:226
+#: src/xz/coder.c
msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr "Es canvia al mode d'un sol fil a causa de --flush-timeout"
-#: src/xz/coder.c:250
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Unsupported options"
+msgid "Unsupported options in filter chain %u"
+msgstr "Opcions no suportades"
+
+#: src/xz/coder.c
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "S'utilitzen fins a %<PRIu32> fils."
-#: src/xz/coder.c:266
+#: src/xz/coder.c
msgid "Unsupported filter chain or filter options"
msgstr "Cadena de filtre no suportada o opcions de filtre"
-#: src/xz/coder.c:278
+#: src/xz/coder.c
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "La descompressió necessitarà %s MiB de memòria."
-#: src/xz/coder.c:310
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgstr "S'ha reduït el nombre de fils de %s a %s per a no excedir el límit d'ús de memòria de %s MiB"
-#: src/xz/coder.c:330
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway."
msgstr "S'ha reduït el nombre de fils de %s a un. El límit d'ús automàtic de memòria de %s MiB encara s'està excedint. Es requereix %s MiB de memòria. Es continua igualment."
-#: src/xz/coder.c:357
+#: src/xz/coder.c
#, c-format
msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB"
msgstr "S'està canviant al mode d'un sol fil per a no excedir el límit d'ús de la memòria de %s MiB"
-#: src/xz/coder.c:412
+#: src/xz/coder.c
#, 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 "S'ha ajustat la mida del diccionari LZMA%c de %s MiB a %s MiB per a no excedir el límit d'ús de memòria de %s MiB"
-#: src/xz/file_io.c:110 src/xz/file_io.c:118
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgid "Adjusted LZMA%c dictionary size for --filters%u from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgstr "S'ha ajustat la mida del diccionari LZMA%c de %s MiB a %s MiB per a no excedir el límit d'ús de memòria de %s MiB"
+
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Error creating a pipe: %s"
+msgid "Error changing to filter chain %u: %s"
+msgstr "S'ha produït un error en crear una canonada: %s"
+
+#: src/xz/file_io.c
#, c-format
msgid "Error creating a pipe: %s"
msgstr "S'ha produït un error en crear una canonada: %s"
-#: src/xz/file_io.c:252
-msgid "Failed to enable the sandbox"
-msgstr "No s'ha pogut habilitar l'espai aïllat"
-
-#: src/xz/file_io.c:294
+#: src/xz/file_io.c
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s: ha fallat la funció poll(): %s"
@@ -170,252 +204,252 @@ msgstr "%s: ha fallat la funció poll(): %s"
#. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously
#. shouldn't be removed.
-#: src/xz/file_io.c:361
+#: src/xz/file_io.c
#, c-format
msgid "%s: File seems to have been moved, not removing"
msgstr "%s: sembla que el fitxer s'ha mogut, no s'elimina"
-#: src/xz/file_io.c:368 src/xz/file_io.c:924
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: no es pot eliminar: %s"
-#: src/xz/file_io.c:394
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: no es pot establir el propietari del fitxer: %s"
-#: src/xz/file_io.c:407
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: no es pot establir el grup de fitxers: %s"
-#: src/xz/file_io.c:426
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: no es poden establir els permisos del fitxer: %s"
-#: src/xz/file_io.c:552
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "S'ha produït un error en obtenir els indicadors d'estat del fitxer de l'entrada estàndard: %s"
-#: src/xz/file_io.c:610 src/xz/file_io.c:672
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: és un enllaç simbòlic, s'omet"
-#: src/xz/file_io.c:701
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: és un directori, s'omet"
-#: src/xz/file_io.c:707
+#: src/xz/file_io.c
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: no és un fitxer normal, s'omet"
-#: src/xz/file_io.c:724
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s: el fitxer té el bit de setuid o setgid, s'omet"
-#: src/xz/file_io.c:731
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s: el fitxer té un bit enganxós, s'omet"
-#: src/xz/file_io.c:738
+#: src/xz/file_io.c
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s: el fitxer d'entrada té més d'un enllaç dur, s'omet"
-#: src/xz/file_io.c:780
+#: src/xz/file_io.c
msgid "Empty filename, skipping"
msgstr "Nom de fitxer buit, s'omet"
-#: src/xz/file_io.c:834
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "S'ha produït un error en restaurar els indicadors d'estat a l'entrada estàndard: %s"
-#: src/xz/file_io.c:882
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "S'ha produït un error en obtenir els indicadors d'estat del fitxer de la sortida estàndard: %s"
-#: src/xz/file_io.c:1081
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "S'ha produït un error en restaurar l'indicador O_APPEND a la sortida estàndard: %s"
-#: src/xz/file_io.c:1093
+#: src/xz/file_io.c
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: ha fallat el tancament del fitxer: %s"
-#: src/xz/file_io.c:1129 src/xz/file_io.c:1391
+#: src/xz/file_io.c
#, c-format
msgid "%s: Seeking failed when trying to create a sparse file: %s"
msgstr "%s: ha fallat la cerca en intentar crear un fitxer dispers: %s"
-#: src/xz/file_io.c:1229
+#: src/xz/file_io.c
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: error de lectura: %s"
-#: src/xz/file_io.c:1259
+#: src/xz/file_io.c
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: error en cercar el fitxer: %s"
-#: src/xz/file_io.c:1283
+#: src/xz/file_io.c
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: fi inesperat del fitxer"
-#: src/xz/file_io.c:1342
+#: src/xz/file_io.c
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: error d'escriptura: %s"
-#: src/xz/hardware.c:238
+#: src/xz/hardware.c
msgid "Disabled"
msgstr "Desactivat"
-#: src/xz/hardware.c:269
+#: src/xz/hardware.c
msgid "Amount of physical memory (RAM):"
msgstr "Quantitat de memòria física (RAM):"
-#: src/xz/hardware.c:270
+#: src/xz/hardware.c
msgid "Number of processor threads:"
msgstr "Nombre de fils del processador:"
-#: src/xz/hardware.c:271
+#: src/xz/hardware.c
msgid "Compression:"
msgstr "Compressió:"
-#: src/xz/hardware.c:272
+#: src/xz/hardware.c
msgid "Decompression:"
msgstr "Descompressió:"
-#: src/xz/hardware.c:273
+#: src/xz/hardware.c
msgid "Multi-threaded decompression:"
msgstr "Descompressió multifil:"
-#: src/xz/hardware.c:274
+#: src/xz/hardware.c
msgid "Default for -T0:"
msgstr "Predeterminat per a -T0:"
-#: src/xz/hardware.c:292
+#: src/xz/hardware.c
msgid "Hardware information:"
msgstr "Informació del maquinari:"
-#: src/xz/hardware.c:299
+#: src/xz/hardware.c
msgid "Memory usage limits:"
msgstr "Límits d'ús de la memòria"
-#: src/xz/list.c:68
+#: src/xz/list.c
msgid "Streams:"
msgstr "Fluxos:"
-#: src/xz/list.c:69
+#: src/xz/list.c
msgid "Blocks:"
msgstr "Blocs:"
-#: src/xz/list.c:70
+#: src/xz/list.c
msgid "Compressed size:"
msgstr "Mida comprimida:"
-#: src/xz/list.c:71
+#: src/xz/list.c
msgid "Uncompressed size:"
msgstr "Mida no comprimida:"
-#: src/xz/list.c:72
+#: src/xz/list.c
msgid "Ratio:"
msgstr "Relació:"
-#: src/xz/list.c:73
+#: src/xz/list.c
msgid "Check:"
msgstr "Comprovació:"
-#: src/xz/list.c:74
+#: src/xz/list.c
msgid "Stream Padding:"
msgstr "Farciment del flux:"
-#: src/xz/list.c:75
+#: src/xz/list.c
msgid "Memory needed:"
msgstr "Memòria necessària:"
-#: src/xz/list.c:76
+#: src/xz/list.c
msgid "Sizes in headers:"
msgstr "Mides a les capçaleres:"
-#: src/xz/list.c:79
+#: src/xz/list.c
msgid "Number of files:"
msgstr "Nombre de fitxers:"
-#: src/xz/list.c:122
+#: src/xz/list.c
msgid "Stream"
msgstr "Flux"
-#: src/xz/list.c:123
+#: src/xz/list.c
msgid "Block"
msgstr "Bloc"
-#: src/xz/list.c:124
+#: src/xz/list.c
msgid "Blocks"
msgstr "Blocs"
-#: src/xz/list.c:125
+#: src/xz/list.c
msgid "CompOffset"
msgstr "CompOffset"
-#: src/xz/list.c:126
+#: src/xz/list.c
msgid "UncompOffset"
msgstr "UncompOffset"
-#: src/xz/list.c:127
+#: src/xz/list.c
msgid "CompSize"
msgstr "CompSize"
-#: src/xz/list.c:128
+#: src/xz/list.c
msgid "UncompSize"
msgstr "UncompSize"
-#: src/xz/list.c:129
+#: src/xz/list.c
msgid "TotalSize"
msgstr "TotalSize"
-#: src/xz/list.c:130
+#: src/xz/list.c
msgid "Ratio"
msgstr "Relació"
-#: src/xz/list.c:131
+#: src/xz/list.c
msgid "Check"
msgstr "Comprovació"
-#: src/xz/list.c:132
+#: src/xz/list.c
msgid "CheckVal"
msgstr "CheckVal"
-#: src/xz/list.c:133
+#: src/xz/list.c
msgid "Padding"
msgstr "Separació"
-#: src/xz/list.c:134
+#: src/xz/list.c
msgid "Header"
msgstr "Capçalera"
-#: src/xz/list.c:135
+#: src/xz/list.c
msgid "Flags"
msgstr "Senyals"
-#: src/xz/list.c:136
+#: src/xz/list.c
msgid "MemUsage"
msgstr "MemUsage"
-#: src/xz/list.c:137
+#: src/xz/list.c
msgid "Filters"
msgstr "Filtres"
@@ -423,7 +457,7 @@ msgstr "Filtres"
#. This string is used in tables. In older xz version this
#. string was limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:169
+#: src/xz/list.c
msgid "None"
msgstr "Cap"
@@ -431,60 +465,60 @@ msgstr "Cap"
#. but the Check ID is known (here 2). In older xz version these
#. strings were limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:175
+#: src/xz/list.c
msgid "Unknown-2"
msgstr "NoConeix2"
-#: src/xz/list.c:176
+#: src/xz/list.c
msgid "Unknown-3"
msgstr "NoConeix3"
-#: src/xz/list.c:178
+#: src/xz/list.c
msgid "Unknown-5"
msgstr "NoConeix5"
-#: src/xz/list.c:179
+#: src/xz/list.c
msgid "Unknown-6"
msgstr "NoConeix6"
-#: src/xz/list.c:180
+#: src/xz/list.c
msgid "Unknown-7"
msgstr "NoConeix7"
-#: src/xz/list.c:181
+#: src/xz/list.c
msgid "Unknown-8"
msgstr "NoConeix8"
-#: src/xz/list.c:182
+#: src/xz/list.c
msgid "Unknown-9"
msgstr "NoConeix9"
-#: src/xz/list.c:184
+#: src/xz/list.c
msgid "Unknown-11"
msgstr "NoConeix11"
-#: src/xz/list.c:185
+#: src/xz/list.c
msgid "Unknown-12"
msgstr "NoConeix12"
-#: src/xz/list.c:186
+#: src/xz/list.c
msgid "Unknown-13"
msgstr "NoConeix13"
-#: src/xz/list.c:187
+#: src/xz/list.c
msgid "Unknown-14"
msgstr "NoConeix14"
-#: src/xz/list.c:188
+#: src/xz/list.c
msgid "Unknown-15"
msgstr "NoConeix15"
-#: src/xz/list.c:351
+#: src/xz/list.c
#, c-format
msgid "%s: File is empty"
msgstr "%s: El fitxer està buit"
-#: src/xz/list.c:356
+#: src/xz/list.c
#, c-format
msgid "%s: Too small to be a valid .xz file"
msgstr "%s: Massa petit per a ser un fitxer .xz vàlid"
@@ -493,64 +527,69 @@ msgstr "%s: Massa petit per a ser un fitxer .xz vàlid"
#. 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:731
+#: src/xz/list.c
msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename"
msgstr "Strms Blocs Comprimit NoComprimit Ràtio Check Nom de fitxer"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "Yes"
msgstr "Sí"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "No"
msgstr "No"
-#: src/xz/list.c:1028 src/xz/list.c:1206
+#: src/xz/list.c
#, c-format
msgid " Minimum XZ Utils version: %s\n"
msgstr " Versió mínima 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:1179
+#: src/xz/list.c
#, c-format
msgid "%s file\n"
msgid_plural "%s files\n"
msgstr[0] "%s fitxer\n"
msgstr[1] "%s fitxers\n"
-#: src/xz/list.c:1192
+#: src/xz/list.c
msgid "Totals:"
msgstr "Totals:"
-#: src/xz/list.c:1270
+#: src/xz/list.c
msgid "--list works only on .xz files (--format=xz or --format=auto)"
msgstr "--list només funciona en fitxers .xz (--format=xz o --format=auto)"
-#: src/xz/list.c:1276
+#: src/xz/list.c
+msgid "Try 'lzmainfo' with .lzma files."
+msgstr ""
+
+#: src/xz/list.c
msgid "--list does not support reading from standard input"
msgstr "--list no admet la lectura des de l'entrada estàndard"
-#: src/xz/main.c:89
+#: src/xz/main.c
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s: Error en llegir els noms de fitxer: %s"
-#: src/xz/main.c:96
+#: src/xz/main.c
#, c-format
msgid "%s: Unexpected end of input when reading filenames"
msgstr "%s: Final inesperat de l'entrada en llegir els noms de fitxer"
-#: src/xz/main.c:120
-#, c-format
-msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
+#: src/xz/main.c
+#, fuzzy, c-format
+#| msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
+msgid "%s: Null character found when reading filenames; maybe you meant to use '--files0' instead of '--files'?"
msgstr "%s: s'ha trobat un caràcter nul en llegir els noms de fitxer; potser volíeu utilitzar «--files0» en lloc de «--files»?"
-#: src/xz/main.c:188
+#: src/xz/main.c
msgid "Compression and decompression with --robot are not supported yet."
msgstr "La compressió i descompressió amb --robot encara no són admesos."
-#: src/xz/main.c:266
+#: src/xz/main.c
msgid "Cannot read data from standard input when reading filenames from standard input"
msgstr "No es poden llegir les dades de l'entrada estàndard en llegir els noms de fitxer de l'entrada estàndard"
@@ -558,68 +597,69 @@ msgstr "No es poden llegir les dades de l'entrada estàndard en llegir els noms
#. 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:670 src/xz/message.c:725
+#: src/xz/message.c
#, c-format
msgid "%s: "
msgstr "%s: "
-#: src/xz/message.c:797 src/xz/message.c:856
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
msgid "Internal error (bug)"
msgstr "Error intern (error)"
-#: src/xz/message.c:804
+#: src/xz/message.c
msgid "Cannot establish signal handlers"
msgstr "No es poden establir els gestors de senyals"
-#: src/xz/message.c:813
+#: src/xz/message.c
msgid "No integrity check; not verifying file integrity"
msgstr "Sense comprovació d'integritat; no es verifica la integritat del fitxer"
-#: src/xz/message.c:816
+#: src/xz/message.c
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "Tipus no admès de comprovació d'integritat; no es verifica la integritat del fitxer"
-#: src/xz/message.c:823
+#: src/xz/message.c
msgid "Memory usage limit reached"
msgstr "S'ha arribat al límit d'ús de la memòria"
-#: src/xz/message.c:826
+#: src/xz/message.c
msgid "File format not recognized"
msgstr "No s'ha reconegut el format del fitxer"
-#: src/xz/message.c:829
+#: src/xz/message.c
msgid "Unsupported options"
msgstr "Opcions no suportades"
-#: src/xz/message.c:832
+#: src/xz/message.c
msgid "Compressed data is corrupt"
msgstr "Les dades comprimides estan malmeses"
-#: src/xz/message.c:835
+#: src/xz/message.c
msgid "Unexpected end of input"
msgstr "Final inesperat de l'entrada"
-#: src/xz/message.c:877
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "Es requereixen %s MiB de memòria. El limitador està desactivat."
-#: src/xz/message.c:905
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr "Es requereixen %s MiB de memòria. El límit és %s."
-#: src/xz/message.c:924
+#: src/xz/message.c
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: Cadena de filtratge: %s\n"
-#: src/xz/message.c:935
-#, c-format
-msgid "Try `%s --help' for more information."
+#: src/xz/message.c
+#, fuzzy, c-format
+#| msgid "Try `%s --help' for more information."
+msgid "Try '%s --help' for more information."
msgstr "Proveu «%s --help» per a més informació."
-#: src/xz/message.c:961
+#: src/xz/message.c
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
@@ -630,17 +670,17 @@ msgstr ""
"Comprimeix o descomprimeix FITXERS en format .xz.\n"
"\n"
-#: src/xz/message.c:968
+#: src/xz/message.c
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr ""
"Els arguments obligatoris per a opcions llargues també són obligatoris\n"
"per a opcions curtes.\n"
-#: src/xz/message.c:972
+#: src/xz/message.c
msgid " Operation mode:\n"
msgstr " Mode d'operació:\n"
-#: src/xz/message.c:975
+#: src/xz/message.c
msgid ""
" -z, --compress force compression\n"
" -d, --decompress force decompression\n"
@@ -652,7 +692,7 @@ msgstr ""
" -t, --test comprova la integritat del fitxer comprimit\n"
" -l, --list informació sobre els fitxers .xz"
-#: src/xz/message.c:981
+#: src/xz/message.c
msgid ""
"\n"
" Operation modifiers:\n"
@@ -660,7 +700,7 @@ msgstr ""
"\n"
" Modificadors de l'operació:\n"
-#: src/xz/message.c:984
+#: src/xz/message.c
msgid ""
" -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\n"
@@ -672,7 +712,7 @@ msgstr ""
" -c, --stdout escriu a la sortida estàndard i no suprimeixis els\n"
" fitxers d'entrada"
-#: src/xz/message.c:993
+#: src/xz/message.c
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
@@ -680,10 +720,18 @@ msgstr ""
" --single-stream descomprimeix només el primer flux, i silenciosament\n"
" ignora les possibles dades d'entrada restants"
-#: src/xz/message.c:996
+#: src/xz/message.c
+#, fuzzy
+#| 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"
msgid ""
" --no-sparse do not create sparse files when decompressing\n"
-" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
+" -S, --suffix=.SUF use the suffix '.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n"
" omitted, filenames are read from the standard input;\n"
" filenames must be terminated with the newline character\n"
@@ -697,7 +745,7 @@ msgstr ""
" caràcter de línia nova\n"
" --files0[=FILE] com --files però usa el caràcter nul com a terminador"
-#: src/xz/message.c:1005
+#: src/xz/message.c
msgid ""
"\n"
" Basic file format and compression options:\n"
@@ -705,12 +753,18 @@ msgstr ""
"\n"
" Opcions bàsiques de format i compressió de fitxers:\n"
-#: src/xz/message.c:1007
+#: src/xz/message.c
+#, fuzzy
+#| msgid ""
+#| " -F, --format=FMT file format to encode or decode; possible values are\n"
+#| " `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
+#| " -C, --check=CHECK integrity check type: `none' (use with caution),\n"
+#| " `crc32', `crc64' (default), or `sha256'"
msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n"
-" `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
-" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-" `crc32', `crc64' (default), or `sha256'"
+" 'auto' (default), 'xz', 'lzma', 'lzip', and 'raw'\n"
+" -C, --check=CHECK integrity check type: 'none' (use with caution),\n"
+" 'crc32', 'crc64' (default), or 'sha256'"
msgstr ""
" -F, --format=FMT fitxer de format per a codificar o descodificar; els\n"
" valors possibles són «auto» (predeterminat), «xz»,\n"
@@ -718,11 +772,11 @@ msgstr ""
" -C, --check=CHECK el tipus de comprovació d'integritat: «none» (useu amb\n"
" precaució), «crc32», «crc64» (predeterminat), o «sha256»"
-#: src/xz/message.c:1012
+#: src/xz/message.c
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr " --ignore-check no verifiquis la comprovació d'integritat en descomprimir"
-#: src/xz/message.c:1016
+#: src/xz/message.c
msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!"
@@ -731,7 +785,7 @@ msgstr ""
" compte l'ús de memòria del compressor *i* del\n"
" descompressor abans d'utilitzar 7-9!"
-#: src/xz/message.c:1020
+#: src/xz/message.c
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
@@ -740,16 +794,20 @@ msgstr ""
" de CPU no afecta els requisits de memòria del\n"
" descompressor"
-#: src/xz/message.c:1024
+#: src/xz/message.c
+#, fuzzy
+#| 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"
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"
+" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
+" as many threads as there are processor cores"
msgstr ""
" -T, --threads=NUM usa com a màxim NUM fils; el valor predeterminat és 1;\n"
" estableix a 0 per a utilitzar tants fils com nuclis té\n"
" el processador"
-#: src/xz/message.c:1029
+#: src/xz/message.c
msgid ""
" --block-size=SIZE\n"
" start a new .xz block after every SIZE bytes of input;\n"
@@ -760,17 +818,24 @@ msgstr ""
" d'entrada; utilitzeu-ho per a establir la mida del bloc\n"
" per a la compressió amb fils"
-#: src/xz/message.c:1033
+#: src/xz/message.c
+#, fuzzy
+#| msgid ""
+#| " --block-list=SIZES\n"
+#| " start a new .xz block after the given comma-separated\n"
+#| " intervals of uncompressed data"
msgid ""
-" --block-list=SIZES\n"
+" --block-list=BLOCKS\n"
" start a new .xz block after the given comma-separated\n"
-" intervals of uncompressed data"
+" intervals of uncompressed data; optionally, specify a\n"
+" filter chain number (0-9) followed by a ':' before the\n"
+" uncompressed data size"
msgstr ""
" --block-list=MIDES\n"
" inicia un bloc nou .xz després dels intervals de dades\n"
" sense comprimir donats amb separació per comes"
-#: src/xz/message.c:1037
+#: src/xz/message.c
msgid ""
" --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n"
@@ -782,7 +847,7 @@ msgstr ""
" d'espera des de l'anterior fluix i llegir més entrades\n"
" blocaria, totes les dades pendents es buiden"
-#: src/xz/message.c:1043
+#: src/xz/message.c
#, no-c-format
msgid ""
" --memlimit-compress=LIMIT\n"
@@ -801,7 +866,7 @@ msgstr ""
" descompressió, descompressió amb fils, o tots ells; el\n"
" LÍMIT és en bytes, % de RAM, o 0 per als predeterminats"
-#: src/xz/message.c:1052
+#: src/xz/message.c
msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards"
@@ -809,7 +874,7 @@ msgstr ""
" --no-adjust si la configuració de compressió excedeix el límit d'ús\n"
" de memòria, dona error en lloc de reduir la configuració"
-#: src/xz/message.c:1058
+#: src/xz/message.c
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
@@ -818,7 +883,27 @@ msgstr ""
" Cadena de filtre personalitzada per a la compressió (alternativa per a l'ús\n"
" de predefinits):"
-#: src/xz/message.c:1067
+#: src/xz/message.c
+msgid ""
+"\n"
+" --filters=FILTERS set the filter chain using the liblzma filter string\n"
+" syntax; use --filters-help for more information"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters1=FILTERS ... --filters9=FILTERS\n"
+" set additional filter chains using the liblzma filter\n"
+" string syntax to use with --block-list"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters-help display more information about the liblzma filter string\n"
+" syntax and exit."
+msgstr ""
+
+#: src/xz/message.c
msgid ""
"\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
@@ -850,7 +935,19 @@ msgstr ""
" depth=NUM profunditat màxima de cerca; 0=automàtic\n"
" (predeterminat)"
-#: src/xz/message.c:1082
+#: src/xz/message.c
+#, fuzzy
+#| msgid ""
+#| "\n"
+#| " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
+#| " --arm[=OPTS] ARM BCJ filter\n"
+#| " --armthumb[=OPTS] ARM-Thumb BCJ filter\n"
+#| " --arm64[=OPTS] ARM64 BCJ filter\n"
+#| " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
+#| " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
+#| " --sparc[=OPTS] SPARC BCJ filter\n"
+#| " Valid OPTS for all BCJ filters:\n"
+#| " start=NUM start offset for conversions (default=0)"
msgid ""
"\n"
" --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
@@ -860,6 +957,7 @@ msgid ""
" --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
" --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
" --sparc[=OPTS] SPARC BCJ filter\n"
+" --riscv[=OPTS] RISC-V BCJ filter\n"
" Valid OPTS for all BCJ filters:\n"
" start=NUM start offset for conversions (default=0)"
msgstr ""
@@ -875,7 +973,7 @@ msgstr ""
" start=Núm. decalatge d'inici per a les conversions\n"
" (per defecte=0)"
-#: src/xz/message.c:1095
+#: src/xz/message.c
msgid ""
"\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n"
@@ -887,7 +985,7 @@ msgstr ""
" dist=Núm. entre bytes que es resten de\n"
" l'altre (1-256; 1)"
-#: src/xz/message.c:1103
+#: src/xz/message.c
msgid ""
"\n"
" Other options:\n"
@@ -895,7 +993,7 @@ msgstr ""
"\n"
" Altres opcions:\n"
-#: src/xz/message.c:1106
+#: src/xz/message.c
msgid ""
" -q, --quiet suppress warnings; specify twice to suppress errors too\n"
" -v, --verbose be verbose; specify twice for even more verbose"
@@ -905,17 +1003,17 @@ msgstr ""
" -v, --verbose sigues detallat; especifiqueu dues vegades per a tenir\n"
" encara més detall"
-#: src/xz/message.c:1111
+#: src/xz/message.c
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr " -Q, --no-warn fes que els avisos no afectin l'estat de sortida"
-#: src/xz/message.c:1113
+#: src/xz/message.c
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr ""
" --robot usa missatges analitzables per la màquina\n"
" (útil per a scripts)"
-#: src/xz/message.c:1116
+#: src/xz/message.c
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
@@ -923,7 +1021,7 @@ msgstr ""
" --info-memory mostra la quantitat total de RAM i els límits actualment\n"
" actius d'ús de memòria, i surt"
-#: src/xz/message.c:1119
+#: src/xz/message.c
msgid ""
" -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit"
@@ -931,7 +1029,7 @@ msgstr ""
" -h, --help mostra l'ajuda curta (només mostra les opcions bàsiques)\n"
" -H, --long-help mostra aquesta ajuda llarga i surt"
-#: src/xz/message.c:1123
+#: src/xz/message.c
msgid ""
" -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)"
@@ -939,11 +1037,12 @@ msgstr ""
" -h, --help mostra aquesta ajuda curta i surt\n"
" -H, --long-help mostra l'ajuda llarga (llista també opcions avançades)"
-#: src/xz/message.c:1128
+#: src/xz/message.c
msgid " -V, --version display the version number and exit"
msgstr " -V, --version mostra el número de versió i surt"
-#: src/xz/message.c:1130
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
+#, c-format
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
@@ -955,90 +1054,129 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks.
-#: src/xz/message.c:1136
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr "Informa d'errors a <%s> (en anglès o finès).\n"
-#: src/xz/message.c:1138
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Pàgina inicial de %s: <%s>\n"
-#: src/xz/message.c:1142
+#: src/xz/message.c
msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
msgstr "AQUESTA ÉS UNA VERSIÓ DE DESENVOLUPAMENT NO DESTINADA A L'ÚS EN PRODUCCIÓ."
-#: src/xz/options.c:86
-#, c-format
-msgid "%s: Options must be `name=value' pairs separated with commas"
+#: src/xz/message.c
+msgid ""
+"Filter chains are set using the --filters=FILTERS or\n"
+"--filters1=FILTERS ... --filters9=FILTERS options. Each filter in the chain\n"
+"can be separated by spaces or '--'. Alternatively a preset <0-9>[e] can be\n"
+"specified instead of a filter chain.\n"
+msgstr ""
+
+#: src/xz/message.c
+#, fuzzy
+#| msgid "Unsupported filter chain or filter options"
+msgid "The supported filters and their options are:"
+msgstr "Cadena de filtre no suportada o opcions de filtre"
+
+#: src/xz/options.c
+#, fuzzy, c-format
+#| msgid "%s: Options must be `name=value' pairs separated with commas"
+msgid "%s: Options must be 'name=value' pairs separated with commas"
msgstr "%s: les opcions han de ser parelles «name=value» separades amb comes"
-#: src/xz/options.c:93
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option name"
msgstr "%s: nom d'opció no vàlid"
-#: src/xz/options.c:113
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option value"
msgstr "%s: el valor de l'opció no és vàlid"
-#: src/xz/options.c:248
+#: src/xz/options.c
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "No s'admet el LZMA1/LZMA2 predefinit: %s"
-#: src/xz/options.c:356
+#: src/xz/options.c
msgid "The sum of lc and lp must not exceed 4"
msgstr "La suma de lc i lp no ha de superar 4"
-#: src/xz/suffix.c:160
+#: src/xz/suffix.c
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: El nom de fitxer té un sufix desconegut, s'omet"
-#: src/xz/suffix.c:181
-#, c-format
-msgid "%s: File already has `%s' suffix, skipping"
+#: src/xz/suffix.c
+#, fuzzy, c-format
+#| msgid "%s: File already has `%s' suffix, skipping"
+msgid "%s: File already has '%s' suffix, skipping"
msgstr "%s: El fitxer ja té el sufix «%s», s'ometrà"
-#: src/xz/suffix.c:388
+#: src/xz/suffix.c
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s: El sufix del nom de fitxer no és vàlid"
-#: src/xz/util.c:107
+#: src/xz/util.c
#, c-format
msgid "%s: Value is not a non-negative decimal integer"
msgstr "%s: El valor no és un enter decimal no negatiu"
-#: src/xz/util.c:149
+#: src/xz/util.c
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s: el sufix multiplicador no és vàlid"
-#: src/xz/util.c:151
-msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+#: src/xz/util.c
+#, fuzzy
+#| msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+msgid "Valid suffixes are 'KiB' (2^10), 'MiB' (2^20), and 'GiB' (2^30)."
msgstr "Els sufixos vàlids són `KiB' (2.10), `MiB' (2.20), i `GiB' (2.30)."
-#: src/xz/util.c:168
-#, c-format
-msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+#: src/xz/util.c
+#, fuzzy, c-format
+#| msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+msgid "Value of the option '%s' must be in the range [%<PRIu64>, %<PRIu64>]"
msgstr "El valor de l'opció «%s» ha d'estar a l'interval [%<PRIu64>, %<PRIu64>]"
-#: src/xz/util.c:270
+#: src/xz/util.c
msgid "Compressed data cannot be read from a terminal"
msgstr "Les dades comprimides no es poden llegir des d'un terminal"
-#: src/xz/util.c:283
+#: src/xz/util.c
msgid "Compressed data cannot be written to a terminal"
msgstr "Les dades comprimides no es poden escriure en un terminal"
-#: src/common/tuklib_exit.c:40
+#: src/lzmainfo/lzmainfo.c
+#, c-format
+msgid ""
+"Usage: %s [--help] [--version] [FILE]...\n"
+"Show information stored in the .lzma file header"
+msgstr ""
+
+#: src/lzmainfo/lzmainfo.c
+#, fuzzy
+#| msgid "%s: Too small to be a valid .xz file"
+msgid "File is too small to be a .lzma file"
+msgstr "%s: Massa petit per a ser un fitxer .xz vàlid"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "Not a .lzma file"
+msgstr ""
+
+#: src/common/tuklib_exit.c
msgid "Writing to standard output failed"
msgstr "Ha fallat l'escriptura a la sortida estàndard"
-#: src/common/tuklib_exit.c:43
+#: src/common/tuklib_exit.c
msgid "Unknown error"
msgstr "Error desconegut"
+
+#~ msgid "Failed to enable the sandbox"
+#~ msgstr "No s'ha pogut habilitar l'espai aïllat"
diff --git a/po/cs.gmo b/po/cs.gmo
index 165e974..edad4d1 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index a5eedf4..0015f85 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: xz-utils\n"
"Report-Msgid-Bugs-To: xz@tukaani.org\n"
-"POT-Creation-Date: 2023-10-31 22:33+0800\n"
+"POT-Creation-Date: 2024-05-29 17:41+0300\n"
"PO-Revision-Date: 2010-12-03 11:32+0100\n"
"Last-Translator: Marek Černocký <marek@manet.cz>\n"
"Language-Team: Czech <diskuze@lists.l10n.cz>\n"
@@ -18,146 +18,178 @@ msgstr ""
"X-Poedit-Language: Czech\n"
"X-Poedit-SourceCharset: utf-8\n"
-#: src/xz/args.c:77
+#: src/xz/args.c
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr ""
-#: src/xz/args.c:87
+#: src/xz/args.c
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr ""
-#: src/xz/args.c:116
+#: src/xz/args.c
+#, c-format
+msgid "In --block-list, block size is missing after filter chain number '%c:'"
+msgstr ""
+
+#: src/xz/args.c
msgid "0 can only be used as the last element in --block-list"
msgstr ""
-#: src/xz/args.c:451
+#: src/xz/args.c
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s: Neznámý typ formátu souboru"
-#: src/xz/args.c:474 src/xz/args.c:482
+#: src/xz/args.c
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s: Neznámý typ kontroly integrity"
-#: src/xz/args.c:518
-msgid "Only one file can be specified with `--files' or `--files0'."
+#: src/xz/args.c
+#, fuzzy
+#| msgid "Only one file can be specified with `--files' or `--files0'."
+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"
#. TRANSLATORS: This is a translatable
#. string because French needs a space
#. before the colon ("%s : %s").
-#: src/xz/args.c:533 src/xz/coder.c:692 src/xz/coder.c:708 src/xz/coder.c:968
-#: src/xz/coder.c:971 src/xz/file_io.c:605 src/xz/file_io.c:679
-#: src/xz/file_io.c:769 src/xz/file_io.c:940 src/xz/list.c:369
-#: src/xz/list.c:415 src/xz/list.c:477 src/xz/list.c:581 src/xz/list.c:590
+#: src/xz/args.c src/xz/coder.c src/xz/file_io.c src/xz/list.c
#, c-format
msgid "%s: %s"
msgstr ""
-#: src/xz/args.c:589
+#: src/xz/args.c
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "Proměnná prostředí %s obsahuje příliš mnoho argumentů"
-#: src/xz/args.c:691
+#: src/xz/args.c
msgid "Compression support was disabled at build time"
msgstr ""
-#: src/xz/args.c:698
+#: src/xz/args.c
msgid "Decompression support was disabled at build time"
msgstr ""
-#: src/xz/args.c:704
+#: src/xz/args.c
msgid "Compression of lzip files (.lz) is not supported"
msgstr ""
-#: src/xz/args.c:735
+#: src/xz/args.c
+msgid "--block-list is ignored unless compressing to the .xz format"
+msgstr ""
+
+#: src/xz/args.c
#, fuzzy
#| msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "%s: S přepínačem --format=raw je vyžadován --sufix=.PRIP, vyjma zápisu do standardního výstupu"
-#: src/xz/coder.c:115
+#: src/xz/coder.c
msgid "Maximum number of filters is four"
msgstr "Maximální počet filtrů je čtyři"
-#: src/xz/coder.c:135
+#: src/xz/coder.c
+#, c-format
+msgid "Error in --filters%s=FILTERS option:"
+msgstr ""
+
+#: src/xz/coder.c
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:170
+#: src/xz/coder.c
+#, c-format
+msgid "filter chain %u used by --block-list but not specified with --filters%u="
+msgstr ""
+
+#: src/xz/coder.c
msgid "Using a preset in raw mode is discouraged."
msgstr "Použití přednastavení v režimu raw je nevhodné."
-#: src/xz/coder.c:172
+#: src/xz/coder.c
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:195
+#: src/xz/coder.c
msgid "The .lzma format supports only the LZMA1 filter"
msgstr "Formát .lzma podporuje pouze filtr LZMA1"
-#: src/xz/coder.c:203
+#: src/xz/coder.c
msgid "LZMA1 cannot be used with the .xz format"
msgstr "LZMA1 nelze použít s formátem .xz"
-#: src/xz/coder.c:220
-msgid "The filter chain is incompatible with --flush-timeout"
+#: src/xz/coder.c
+#, c-format
+msgid "Filter chain %u is incompatible with --flush-timeout"
msgstr ""
-#: src/xz/coder.c:226
+#: src/xz/coder.c
msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr ""
-#: src/xz/coder.c:250
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Unsupported options"
+msgid "Unsupported options in filter chain %u"
+msgstr "Nepodporovaná volba"
+
+#: src/xz/coder.c
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr ""
-#: src/xz/coder.c:266
+#: src/xz/coder.c
msgid "Unsupported filter chain or filter options"
msgstr "Nepodporovaný omezující filtr nebo volby filtru"
-#: src/xz/coder.c:278
+#: src/xz/coder.c
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "Dekomprimace bude vyžadovat %s MiB paměti."
-#: src/xz/coder.c:310
+#: src/xz/coder.c
#, fuzzy, c-format
#| msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgstr "Přizpůsobit velikost slovníku LZMA%c z %s MiB na %s MiB, tak aby nebylo překročeno omezení použitelné paměti %s MiB"
-#: src/xz/coder.c:330
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway."
msgstr ""
-#: src/xz/coder.c:357
+#: src/xz/coder.c
#, fuzzy, c-format
#| msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB"
msgstr "Přizpůsobit velikost slovníku LZMA%c z %s MiB na %s MiB, tak aby nebylo překročeno omezení použitelné paměti %s MiB"
-#: src/xz/coder.c:412
+#: src/xz/coder.c
#, c-format
msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
msgstr "Přizpůsobit velikost slovníku LZMA%c z %s MiB na %s MiB, tak aby nebylo překročeno omezení použitelné paměti %s MiB"
-#: src/xz/file_io.c:110 src/xz/file_io.c:118
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgid "Adjusted LZMA%c dictionary size for --filters%u from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgstr "Přizpůsobit velikost slovníku LZMA%c z %s MiB na %s MiB, tak aby nebylo překročeno omezení použitelné paměti %s MiB"
+
+#: src/xz/coder.c
#, c-format
-msgid "Error creating a pipe: %s"
+msgid "Error changing to filter chain %u: %s"
msgstr ""
-#: src/xz/file_io.c:252
-msgid "Failed to enable the sandbox"
+#: src/xz/file_io.c
+#, c-format
+msgid "Error creating a pipe: %s"
msgstr ""
-#: src/xz/file_io.c:294
+#: src/xz/file_io.c
#, c-format
msgid "%s: poll() failed: %s"
msgstr ""
@@ -172,272 +204,272 @@ msgstr ""
#. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously
#. shouldn't be removed.
-#: src/xz/file_io.c:361
+#: src/xz/file_io.c
#, 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:368 src/xz/file_io.c:924
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: Nelze odstranit: %s"
-#: src/xz/file_io.c:394
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: Nelze nastavit vlastníka souboru: %s"
-#: src/xz/file_io.c:407
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: Nelze nastavit skupinu souboru: %s"
-#: src/xz/file_io.c:426
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: Nelze nastavit oprávnění souboru: %s"
-#: src/xz/file_io.c:552
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr ""
-#: src/xz/file_io.c:610 src/xz/file_io.c:672
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: Jedná se o symbolický odkaz, vynechává se"
-#: src/xz/file_io.c:701
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: Jedná se o složku, vynechává se"
-#: src/xz/file_io.c:707
+#: src/xz/file_io.c
#, 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:724
+#: src/xz/file_io.c
#, 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:731
+#: src/xz/file_io.c
#, 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:738
+#: src/xz/file_io.c
#, 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:780
+#: src/xz/file_io.c
msgid "Empty filename, skipping"
msgstr "Prázdný název souboru, vynechává se"
-#: src/xz/file_io.c:834
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr ""
-#: src/xz/file_io.c:882
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr ""
-#: src/xz/file_io.c:1081
+#: src/xz/file_io.c
#, 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:1093
+#: src/xz/file_io.c
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: Selhalo zavření souboru: %s"
-#: src/xz/file_io.c:1129 src/xz/file_io.c:1391
+#: src/xz/file_io.c
#, 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:1229
+#: src/xz/file_io.c
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: Chyba čtení: %s"
-#: src/xz/file_io.c:1259
+#: src/xz/file_io.c
#, 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:1283
+#: src/xz/file_io.c
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: Neočekávaný konec souboru"
-#: src/xz/file_io.c:1342
+#: src/xz/file_io.c
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: Chyba zápisu: %s"
-#: src/xz/hardware.c:238
+#: src/xz/hardware.c
msgid "Disabled"
msgstr "Vypnuto"
-#: src/xz/hardware.c:269
+#: src/xz/hardware.c
#, fuzzy
#| msgid "Total amount of physical memory (RAM): "
msgid "Amount of physical memory (RAM):"
msgstr "Celkové množství fyzické paměti (RAM): "
-#: src/xz/hardware.c:270
+#: src/xz/hardware.c
msgid "Number of processor threads:"
msgstr ""
-#: src/xz/hardware.c:271
+#: src/xz/hardware.c
msgid "Compression:"
msgstr ""
-#: src/xz/hardware.c:272
+#: src/xz/hardware.c
msgid "Decompression:"
msgstr ""
-#: src/xz/hardware.c:273
+#: src/xz/hardware.c
#, fuzzy
#| msgid "Memory usage limit for decompression: "
msgid "Multi-threaded decompression:"
msgstr "Omezení použitelné paměti pro dekomprimaci:"
-#: src/xz/hardware.c:274
+#: src/xz/hardware.c
msgid "Default for -T0:"
msgstr ""
-#: src/xz/hardware.c:292
+#: src/xz/hardware.c
msgid "Hardware information:"
msgstr ""
-#: src/xz/hardware.c:299
+#: src/xz/hardware.c
#, fuzzy
#| msgid "Memory usage limit reached"
msgid "Memory usage limits:"
msgstr "Dosaženo omezení použitelné paměti"
-#: src/xz/list.c:68
+#: src/xz/list.c
msgid "Streams:"
msgstr ""
-#: src/xz/list.c:69
+#: src/xz/list.c
msgid "Blocks:"
msgstr ""
-#: src/xz/list.c:70
+#: src/xz/list.c
#, fuzzy
#| msgid " Compressed size: %s\n"
msgid "Compressed size:"
msgstr " Komprimovaná velikost: %s\n"
-#: src/xz/list.c:71
+#: src/xz/list.c
#, fuzzy
#| msgid " Uncompressed size: %s\n"
msgid "Uncompressed size:"
msgstr " Nekomprimovaná velikost: %s\n"
-#: src/xz/list.c:72
+#: src/xz/list.c
msgid "Ratio:"
msgstr ""
-#: src/xz/list.c:73
+#: src/xz/list.c
msgid "Check:"
msgstr ""
-#: src/xz/list.c:74
+#: src/xz/list.c
#, fuzzy
#| msgid " Stream padding: %s\n"
msgid "Stream Padding:"
msgstr " Zarovnání proudu: %s\n"
-#: src/xz/list.c:75
+#: src/xz/list.c
#, fuzzy
#| msgid " Memory needed: %s MiB\n"
msgid "Memory needed:"
msgstr " Potřebná paměť: %s MiB\n"
-#: src/xz/list.c:76
+#: src/xz/list.c
#, fuzzy
#| msgid " Sizes in headers: %s\n"
msgid "Sizes in headers:"
msgstr " Velikosti v hlavičkách: %s\n"
-#: src/xz/list.c:79
+#: src/xz/list.c
#, fuzzy
#| msgid " Number of files: %s\n"
msgid "Number of files:"
msgstr " Počet souborů: %s\n"
-#: src/xz/list.c:122
+#: src/xz/list.c
msgid "Stream"
msgstr ""
-#: src/xz/list.c:123
+#: src/xz/list.c
msgid "Block"
msgstr ""
-#: src/xz/list.c:124
+#: src/xz/list.c
msgid "Blocks"
msgstr ""
-#: src/xz/list.c:125
+#: src/xz/list.c
msgid "CompOffset"
msgstr ""
-#: src/xz/list.c:126
+#: src/xz/list.c
msgid "UncompOffset"
msgstr ""
-#: src/xz/list.c:127
+#: src/xz/list.c
msgid "CompSize"
msgstr ""
-#: src/xz/list.c:128
+#: src/xz/list.c
msgid "UncompSize"
msgstr ""
-#: src/xz/list.c:129
+#: src/xz/list.c
#, fuzzy
#| msgid "Totals:"
msgid "TotalSize"
msgstr "Celkem:"
-#: src/xz/list.c:130
+#: src/xz/list.c
msgid "Ratio"
msgstr ""
-#: src/xz/list.c:131
+#: src/xz/list.c
msgid "Check"
msgstr ""
-#: src/xz/list.c:132
+#: src/xz/list.c
msgid "CheckVal"
msgstr ""
-#: src/xz/list.c:133
+#: src/xz/list.c
msgid "Padding"
msgstr ""
-#: src/xz/list.c:134
+#: src/xz/list.c
msgid "Header"
msgstr ""
-#: src/xz/list.c:135
+#: src/xz/list.c
msgid "Flags"
msgstr ""
-#: src/xz/list.c:136
+#: src/xz/list.c
msgid "MemUsage"
msgstr ""
-#: src/xz/list.c:137
+#: src/xz/list.c
msgid "Filters"
msgstr ""
@@ -445,7 +477,7 @@ msgstr ""
#. This string is used in tables. In older xz version this
#. string was limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:169
+#: src/xz/list.c
msgid "None"
msgstr "žádná"
@@ -453,60 +485,60 @@ msgstr "žádná"
#. but the Check ID is known (here 2). In older xz version these
#. strings were limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:175
+#: src/xz/list.c
msgid "Unknown-2"
msgstr "neznámá-2"
-#: src/xz/list.c:176
+#: src/xz/list.c
msgid "Unknown-3"
msgstr "neznámá-3"
-#: src/xz/list.c:178
+#: src/xz/list.c
msgid "Unknown-5"
msgstr "neznámá-5"
-#: src/xz/list.c:179
+#: src/xz/list.c
msgid "Unknown-6"
msgstr "neznámá-6"
-#: src/xz/list.c:180
+#: src/xz/list.c
msgid "Unknown-7"
msgstr "neznámá-7"
-#: src/xz/list.c:181
+#: src/xz/list.c
msgid "Unknown-8"
msgstr "neznámá-8"
-#: src/xz/list.c:182
+#: src/xz/list.c
msgid "Unknown-9"
msgstr "neznámá-9"
-#: src/xz/list.c:184
+#: src/xz/list.c
msgid "Unknown-11"
msgstr "neznámá-11"
-#: src/xz/list.c:185
+#: src/xz/list.c
msgid "Unknown-12"
msgstr "neznámá-12"
-#: src/xz/list.c:186
+#: src/xz/list.c
msgid "Unknown-13"
msgstr "neznámá-13"
-#: src/xz/list.c:187
+#: src/xz/list.c
msgid "Unknown-14"
msgstr "neznámá-14"
-#: src/xz/list.c:188
+#: src/xz/list.c
msgid "Unknown-15"
msgstr "neznámá-15"
-#: src/xz/list.c:351
+#: src/xz/list.c
#, c-format
msgid "%s: File is empty"
msgstr "%s: Soubor je prázdný"
-#: src/xz/list.c:356
+#: src/xz/list.c
#, 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"
@@ -515,26 +547,26 @@ msgstr "%s: Je příliš malý na to, aby to mohl být platný soubor .xz"
#. to Ratio, the columns are right aligned. Check and Filename
#. are left aligned. If you need longer words, it's OK to
#. use two lines here. Test with "xz -l foo.xz".
-#: src/xz/list.c:731
+#: src/xz/list.c
msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename"
msgstr "Proud Bloky Komprim Nekomprim Poměr Kontrl Název souboru"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "Yes"
msgstr "Ano"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "No"
msgstr "Ne"
-#: src/xz/list.c:1028 src/xz/list.c:1206
+#: src/xz/list.c
#, c-format
msgid " Minimum XZ Utils version: %s\n"
msgstr ""
#. TRANSLATORS: %s is an integer. Only the plural form of this
#. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz".
-#: src/xz/list.c:1179
+#: src/xz/list.c
#, c-format
msgid "%s file\n"
msgid_plural "%s files\n"
@@ -542,38 +574,43 @@ msgstr[0] "%s soubor\n"
msgstr[1] "%s soubory\n"
msgstr[2] "%s souborů\n"
-#: src/xz/list.c:1192
+#: src/xz/list.c
msgid "Totals:"
msgstr "Celkem:"
-#: src/xz/list.c:1270
+#: src/xz/list.c
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:1276
+#: src/xz/list.c
+msgid "Try 'lzmainfo' with .lzma files."
+msgstr ""
+
+#: src/xz/list.c
msgid "--list does not support reading from standard input"
msgstr "--list nepodporuje čtení ze standardního vstupu"
-#: src/xz/main.c:89
+#: src/xz/main.c
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s: Chyba při čtení názvů souborů: %s"
-#: src/xz/main.c:96
+#: src/xz/main.c
#, 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'?"
+#: src/xz/main.c
+#, fuzzy, c-format
+#| msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
+msgid "%s: Null character found when reading filenames; maybe you meant to use '--files0' instead of '--files'?"
msgstr "%s: Byl nalezen nulový znak při čtení názvů souborů; nechtěli jste náhodou použít „--files0“ místo „--files“?"
-#: src/xz/main.c:188
+#: src/xz/main.c
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:266
+#: src/xz/main.c
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ů"
@@ -581,68 +618,69 @@ msgstr "Ze standardního vstupu nelze číst data, když se ze standardního vst
#. 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:670 src/xz/message.c:725
+#: src/xz/message.c
#, c-format
msgid "%s: "
msgstr ""
-#: src/xz/message.c:797 src/xz/message.c:856
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
msgid "Internal error (bug)"
msgstr "Interní chyba"
-#: src/xz/message.c:804
+#: src/xz/message.c
msgid "Cannot establish signal handlers"
msgstr "Nelze ustanovit ovladač signálu"
-#: src/xz/message.c:813
+#: src/xz/message.c
msgid "No integrity check; not verifying file integrity"
msgstr "Žádná kontrola integrity; integrita souboru se nebude ověřovat"
-#: src/xz/message.c:816
+#: src/xz/message.c
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:823
+#: src/xz/message.c
msgid "Memory usage limit reached"
msgstr "Dosaženo omezení použitelné paměti"
-#: src/xz/message.c:826
+#: src/xz/message.c
msgid "File format not recognized"
msgstr "Formát souboru nebyl rozpoznán"
-#: src/xz/message.c:829
+#: src/xz/message.c
msgid "Unsupported options"
msgstr "Nepodporovaná volba"
-#: src/xz/message.c:832
+#: src/xz/message.c
msgid "Compressed data is corrupt"
msgstr "Komprimovaná data jsou poškozená"
-#: src/xz/message.c:835
+#: src/xz/message.c
msgid "Unexpected end of input"
msgstr "Neočekávaný konec vstupu"
-#: src/xz/message.c:877
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr ""
-#: src/xz/message.c:905
+#: src/xz/message.c
#, 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:924
+#: src/xz/message.c
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: Omezující filtr: %s\n"
-#: src/xz/message.c:935
-#, c-format
-msgid "Try `%s --help' for more information."
+#: src/xz/message.c
+#, fuzzy, c-format
+#| msgid "Try `%s --help' for more information."
+msgid "Try '%s --help' for more information."
msgstr "Zkuste „%s --help“ pro více informací"
-#: src/xz/message.c:961
+#: src/xz/message.c
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
@@ -653,15 +691,15 @@ msgstr ""
"Komprimuje nebo dekomprimuje SOUBORy ve formátu xz.\n"
"\n"
-#: src/xz/message.c:968
+#: src/xz/message.c
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:972
+#: src/xz/message.c
msgid " Operation mode:\n"
msgstr "Operační režim:\n"
-#: src/xz/message.c:975
+#: src/xz/message.c
msgid ""
" -z, --compress force compression\n"
" -d, --decompress force decompression\n"
@@ -673,7 +711,7 @@ msgstr ""
" -t, --test testovat integritu komprimovaného souboru\n"
" -l, --list vypsat informace o souborech .xz"
-#: src/xz/message.c:981
+#: src/xz/message.c
msgid ""
"\n"
" Operation modifiers:\n"
@@ -681,7 +719,7 @@ msgstr ""
"\n"
"Modifikátory operací:\n"
-#: src/xz/message.c:984
+#: src/xz/message.c
msgid ""
" -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\n"
@@ -691,16 +729,24 @@ msgstr ""
" -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:993
+#: src/xz/message.c
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
msgstr ""
-#: src/xz/message.c:996
+#: src/xz/message.c
+#, fuzzy
+#| 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"
msgid ""
" --no-sparse do not create sparse files when decompressing\n"
-" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
+" -S, --suffix=.SUF use the suffix '.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n"
" omitted, filenames are read from the standard input;\n"
" filenames must be terminated with the newline character\n"
@@ -713,7 +759,7 @@ msgstr ""
" 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:1005
+#: src/xz/message.c
msgid ""
"\n"
" Basic file format and compression options:\n"
@@ -721,7 +767,7 @@ msgstr ""
"\n"
"Základní přepínače pro formát souboru a komprimaci:\n"
-#: src/xz/message.c:1007
+#: src/xz/message.c
#, fuzzy
#| msgid ""
#| " -F, --format=FMT file format to encode or decode; possible values are\n"
@@ -730,20 +776,20 @@ msgstr ""
#| " `crc32', `crc64' (default), or `sha256'"
msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n"
-" `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
-" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-" `crc32', `crc64' (default), or `sha256'"
+" 'auto' (default), 'xz', 'lzma', 'lzip', and 'raw'\n"
+" -C, --check=CHECK integrity check type: 'none' (use with caution),\n"
+" 'crc32', 'crc64' (default), or 'sha256'"
msgstr ""
" -F, --format=FORMÁ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:1012
+#: src/xz/message.c
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr ""
-#: src/xz/message.c:1016
+#: src/xz/message.c
msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!"
@@ -751,7 +797,7 @@ 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:1020
+#: src/xz/message.c
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
@@ -759,27 +805,29 @@ 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:1024
+#: src/xz/message.c
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"
+" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
+" as many threads as there are processor cores"
msgstr ""
-#: src/xz/message.c:1029
+#: src/xz/message.c
msgid ""
" --block-size=SIZE\n"
" start a new .xz block after every SIZE bytes of input;\n"
" use this to set the block size for threaded compression"
msgstr ""
-#: src/xz/message.c:1033
+#: src/xz/message.c
msgid ""
-" --block-list=SIZES\n"
+" --block-list=BLOCKS\n"
" start a new .xz block after the given comma-separated\n"
-" intervals of uncompressed data"
+" intervals of uncompressed data; optionally, specify a\n"
+" filter chain number (0-9) followed by a ':' before the\n"
+" uncompressed data size"
msgstr ""
-#: src/xz/message.c:1037
+#: src/xz/message.c
msgid ""
" --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n"
@@ -787,7 +835,7 @@ msgid ""
" would block, all pending data is flushed out"
msgstr ""
-#: src/xz/message.c:1043
+#: src/xz/message.c
#, fuzzy, no-c-format
#| msgid ""
#| " --memlimit-compress=LIMIT\n"
@@ -811,7 +859,7 @@ msgstr ""
" dekomprimaci nebo obojí; LIMIT je v bajtech, % z paměti\n"
" RAM nebo 0 pro výchozí"
-#: src/xz/message.c:1052
+#: src/xz/message.c
msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards"
@@ -819,7 +867,7 @@ 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:1058
+#: src/xz/message.c
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
@@ -827,7 +875,27 @@ msgstr ""
"\n"
"Vlastní omezující filtr pro komprimaci (alternativa k použití přednastavených):"
-#: src/xz/message.c:1067
+#: src/xz/message.c
+msgid ""
+"\n"
+" --filters=FILTERS set the filter chain using the liblzma filter string\n"
+" syntax; use --filters-help for more information"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters1=FILTERS ... --filters9=FILTERS\n"
+" set additional filter chains using the liblzma filter\n"
+" string syntax to use with --block-list"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters-help display more information about the liblzma filter string\n"
+" syntax and exit."
+msgstr ""
+
+#: src/xz/message.c
msgid ""
"\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
@@ -856,7 +924,7 @@ msgstr ""
" depth=POČ maximální hloubka prohledávání;\n"
" 0 = automaticky (výchozí)"
-#: src/xz/message.c:1082
+#: src/xz/message.c
#, fuzzy
#| msgid ""
#| "\n"
@@ -877,6 +945,7 @@ msgid ""
" --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
" --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
" --sparc[=OPTS] SPARC BCJ filter\n"
+" --riscv[=OPTS] RISC-V BCJ filter\n"
" Valid OPTS for all BCJ filters:\n"
" start=NUM start offset for conversions (default=0)"
msgstr ""
@@ -890,7 +959,7 @@ msgstr ""
" Platné volby pro všechny filtry BCJ:\n"
" start=POČ počáteční posun pro převody (výchozí=0)"
-#: src/xz/message.c:1095
+#: src/xz/message.c
msgid ""
"\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n"
@@ -902,7 +971,7 @@ msgstr ""
" dist=POČ vzdálenost mezi bajty, které jsou odečítány\n"
" jeden od druhého (1 – 256; 1)"
-#: src/xz/message.c:1103
+#: src/xz/message.c
msgid ""
"\n"
" Other options:\n"
@@ -910,7 +979,7 @@ msgstr ""
"\n"
" Ostatní přepínače:\n"
-#: src/xz/message.c:1106
+#: src/xz/message.c
msgid ""
" -q, --quiet suppress warnings; specify twice to suppress errors too\n"
" -v, --verbose be verbose; specify twice for even more verbose"
@@ -919,17 +988,17 @@ msgstr ""
" -v, --verbose podrobnější zprávy; zadáním dvakrát, budou ještě\n"
" podrobnější"
-#: src/xz/message.c:1111
+#: src/xz/message.c
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:1113
+#: src/xz/message.c
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:1116
+#: src/xz/message.c
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
@@ -937,7 +1006,7 @@ 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:1119
+#: src/xz/message.c
msgid ""
" -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit"
@@ -945,7 +1014,7 @@ 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:1123
+#: src/xz/message.c
msgid ""
" -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)"
@@ -953,11 +1022,12 @@ 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:1128
+#: src/xz/message.c
msgid " -V, --version display the version number and exit"
msgstr " -V, --version zobrazit číslo verze a skončit"
-#: src/xz/message.c:1130
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
+#, c-format
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
@@ -969,91 +1039,127 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks.
-#: src/xz/message.c:1136
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, 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:1138
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Domovská stránka %s: <%s>\n"
-#: src/xz/message.c:1142
+#: src/xz/message.c
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"
+#: src/xz/message.c
+msgid ""
+"Filter chains are set using the --filters=FILTERS or\n"
+"--filters1=FILTERS ... --filters9=FILTERS options. Each filter in the chain\n"
+"can be separated by spaces or '--'. Alternatively a preset <0-9>[e] can be\n"
+"specified instead of a filter chain.\n"
+msgstr ""
+
+#: src/xz/message.c
+#, fuzzy
+#| msgid "Unsupported filter chain or filter options"
+msgid "The supported filters and their options are:"
+msgstr "Nepodporovaný omezující filtr nebo volby filtru"
+
+#: src/xz/options.c
+#, fuzzy, c-format
+#| msgid "%s: Options must be `name=value' pairs separated with commas"
+msgid "%s: Options must be 'name=value' pairs separated with commas"
msgstr "%s: Volby musí být páry „název=hodnota“ oddělené čárkami"
-#: src/xz/options.c:93
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option name"
msgstr "%s: Neplatný název volby"
-#: src/xz/options.c:113
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option value"
msgstr "%s: Neplatná hodnota volby"
-#: src/xz/options.c:248
+#: src/xz/options.c
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "Nepodporované přednastavení LZMA1/LZMA2: %s"
-#: src/xz/options.c:356
+#: src/xz/options.c
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/suffix.c:160
+#: src/xz/suffix.c
#, 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:181
-#, c-format
-msgid "%s: File already has `%s' suffix, skipping"
+#: src/xz/suffix.c
+#, fuzzy, c-format
+#| msgid "%s: File already has `%s' suffix, skipping"
+msgid "%s: File already has '%s' suffix, skipping"
msgstr "%s: Soubor již má příponu „%s“, vynechává se"
-#: src/xz/suffix.c:388
+#: src/xz/suffix.c
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s: Neplatná přípona názvu souboru"
-#: src/xz/util.c:107
+#: src/xz/util.c
#, 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:149
+#: src/xz/util.c
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s: Neplatná jednotka s předponou"
-#: src/xz/util.c:151
-msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+#: src/xz/util.c
+#, fuzzy
+#| msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+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:168
-#, c-format
-msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+#: src/xz/util.c
+#, fuzzy, c-format
+#| msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+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:270
+#: src/xz/util.c
msgid "Compressed data cannot be read from a terminal"
msgstr "Z terminálu nelze číst komprimovaná data"
-#: src/xz/util.c:283
+#: src/xz/util.c
msgid "Compressed data cannot be written to a terminal"
msgstr "Do terminálu nelze zapisovat komprimovaná data"
-#: src/common/tuklib_exit.c:40
+#: src/lzmainfo/lzmainfo.c
+#, c-format
+msgid ""
+"Usage: %s [--help] [--version] [FILE]...\n"
+"Show information stored in the .lzma file header"
+msgstr ""
+
+#: src/lzmainfo/lzmainfo.c
+#, fuzzy
+#| msgid "%s: Too small to be a valid .xz file"
+msgid "File is too small to be a .lzma file"
+msgstr "%s: Je příliš malý na to, aby to mohl být platný soubor .xz"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "Not a .lzma file"
+msgstr ""
+
+#: src/common/tuklib_exit.c
msgid "Writing to standard output failed"
msgstr "Zápis do standardního výstupu selhal"
-#: src/common/tuklib_exit.c:43
+#: src/common/tuklib_exit.c
msgid "Unknown error"
msgstr "Neznámá chyba"
diff --git a/po/da.gmo b/po/da.gmo
index d0359d4..3347988 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index 000510f..601d6b3 100644
--- a/po/da.po
+++ b/po/da.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: xz 5.2.4\n"
"Report-Msgid-Bugs-To: xz@tukaani.org\n"
-"POT-Creation-Date: 2023-10-31 22:33+0800\n"
+"POT-Creation-Date: 2024-05-29 17:41+0300\n"
"PO-Revision-Date: 2019-03-04 23:08+0100\n"
"Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
@@ -17,147 +17,181 @@ msgstr ""
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/xz/args.c:77
+#: src/xz/args.c
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr "%s: Ugyldigt parameter til --block-list"
-#: src/xz/args.c:87
+#: src/xz/args.c
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s: For mange argumenter til --block-list"
-#: src/xz/args.c:116
+#: src/xz/args.c
+#, c-format
+msgid "In --block-list, block size is missing after filter chain number '%c:'"
+msgstr ""
+
+#: src/xz/args.c
msgid "0 can only be used as the last element in --block-list"
msgstr "0 kan kun bruges som det sidste element i --block-list"
-#: src/xz/args.c:451
+#: src/xz/args.c
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s: Ukendt filformattype"
-#: src/xz/args.c:474 src/xz/args.c:482
+#: src/xz/args.c
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s: Typen for integritetkontrol er ikke understøttet"
-#: src/xz/args.c:518
-msgid "Only one file can be specified with `--files' or `--files0'."
+#: src/xz/args.c
+#, fuzzy
+#| msgid "Only one file can be specified with `--files' or `--files0'."
+msgid "Only one file can be specified with '--files' or '--files0'."
msgstr "Kun en fil kan angives med »--files« eller »--files0«."
#. TRANSLATORS: This is a translatable
#. string because French needs a space
#. before the colon ("%s : %s").
-#: src/xz/args.c:533 src/xz/coder.c:692 src/xz/coder.c:708 src/xz/coder.c:968
-#: src/xz/coder.c:971 src/xz/file_io.c:605 src/xz/file_io.c:679
-#: src/xz/file_io.c:769 src/xz/file_io.c:940 src/xz/list.c:369
-#: src/xz/list.c:415 src/xz/list.c:477 src/xz/list.c:581 src/xz/list.c:590
+#: src/xz/args.c src/xz/coder.c src/xz/file_io.c src/xz/list.c
#, fuzzy, c-format
#| msgid "%s: "
msgid "%s: %s"
msgstr "%s: "
-#: src/xz/args.c:589
+#: src/xz/args.c
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "Miljøvariablen %s indeholder for mange argumenter"
-#: src/xz/args.c:691
+#: src/xz/args.c
msgid "Compression support was disabled at build time"
msgstr "Komprimeringsunderstøttelse blev deaktiveret på byggetidspunktet"
-#: src/xz/args.c:698
+#: src/xz/args.c
msgid "Decompression support was disabled at build time"
msgstr "Dekomprimeringsunderstøttelse blev deaktiveret på byggetidspunktet"
-#: src/xz/args.c:704
+#: src/xz/args.c
msgid "Compression of lzip files (.lz) is not supported"
msgstr ""
-#: src/xz/args.c:735
+#: src/xz/args.c
+msgid "--block-list is ignored unless compressing to the .xz format"
+msgstr ""
+
+#: src/xz/args.c
#, fuzzy
#| msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "%s: med --format=raw, --suffix=.SUF er krævet med mindre der skrives til standardud"
-#: src/xz/coder.c:115
+#: src/xz/coder.c
msgid "Maximum number of filters is four"
msgstr "Maksimalt antal filtre er fire"
-#: src/xz/coder.c:135
+#: src/xz/coder.c
+#, c-format
+msgid "Error in --filters%s=FILTERS option:"
+msgstr ""
+
+#: src/xz/coder.c
msgid "Memory usage limit is too low for the given filter setup."
msgstr "Begræsningen for brug af hukommelse er for lav for den givne filteropsætning."
-#: src/xz/coder.c:170
+#: src/xz/coder.c
+#, c-format
+msgid "filter chain %u used by --block-list but not specified with --filters%u="
+msgstr ""
+
+#: src/xz/coder.c
msgid "Using a preset in raw mode is discouraged."
msgstr "Det frarådes at bruge en forhåndskonfiguration i rå tilstand (raw mode)."
-#: src/xz/coder.c:172
+#: src/xz/coder.c
msgid "The exact options of the presets may vary between software versions."
msgstr "De præcise indstillinger for forhåndskonfigurationerne kan variere mellem programversioner."
-#: src/xz/coder.c:195
+#: src/xz/coder.c
msgid "The .lzma format supports only the LZMA1 filter"
msgstr "Formatet .lzma understøtter kun LZMA1-filteret"
-#: src/xz/coder.c:203
+#: src/xz/coder.c
msgid "LZMA1 cannot be used with the .xz format"
msgstr "LZMA1 kan ikke bruges med .xz-formatet"
-#: src/xz/coder.c:220
-msgid "The filter chain is incompatible with --flush-timeout"
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "The filter chain is incompatible with --flush-timeout"
+msgid "Filter chain %u is incompatible with --flush-timeout"
msgstr "Filterkæden er ikke kompatibel med --flush-timeout"
-#: src/xz/coder.c:226
+#: src/xz/coder.c
msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr "Skifter til enkelt trådet tilstand på grund af --flush-timeout"
-#: src/xz/coder.c:250
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Unsupported options"
+msgid "Unsupported options in filter chain %u"
+msgstr "Tilvalg er ikke understøttede"
+
+#: src/xz/coder.c
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "Bruger op til %<PRIu32> tråde."
-#: src/xz/coder.c:266
+#: src/xz/coder.c
msgid "Unsupported filter chain or filter options"
msgstr "Filterkæde eller filterindstillinger er ikke understøttet"
-#: src/xz/coder.c:278
+#: src/xz/coder.c
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "Dekomprimering vil kræve %s MiB hukommelse."
-#: src/xz/coder.c:310
+#: src/xz/coder.c
#, fuzzy, c-format
#| msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgstr "Justerede antallet af tråde fra %s til %s for ikke at overskride begræsningen på brug af hukommelse på %s MiB"
-#: src/xz/coder.c:330
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway."
msgstr ""
-#: src/xz/coder.c:357
+#: src/xz/coder.c
#, fuzzy, c-format
#| msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB"
msgstr "Justerede antallet af tråde fra %s til %s for ikke at overskride begræsningen på brug af hukommelse på %s MiB"
-#: src/xz/coder.c:412
+#: src/xz/coder.c
#, c-format
msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
msgstr "Justerede LZMA%c-ordbogsstørrelsen fra %s MiB til %s MiB for ikke at overskride begrænsningen på brug af hukommelse på %s MiB"
-#: src/xz/file_io.c:110 src/xz/file_io.c:118
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgid "Adjusted LZMA%c dictionary size for --filters%u from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgstr "Justerede LZMA%c-ordbogsstørrelsen fra %s MiB til %s MiB for ikke at overskride begrænsningen på brug af hukommelse på %s MiB"
+
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Error creating a pipe: %s"
+msgid "Error changing to filter chain %u: %s"
+msgstr "Det opstod en fejl under oprettelse af en datakanal: %s"
+
+#: src/xz/file_io.c
#, c-format
msgid "Error creating a pipe: %s"
msgstr "Det opstod en fejl under oprettelse af en datakanal: %s"
-#: src/xz/file_io.c:252
-msgid "Failed to enable the sandbox"
-msgstr "Kunne ikke aktivere sandkassen"
-
-#: src/xz/file_io.c:294
+#: src/xz/file_io.c
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s: poll() mislykkedes: %s"
@@ -172,272 +206,272 @@ msgstr "%s: poll() mislykkedes: %s"
#. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously
#. shouldn't be removed.
-#: src/xz/file_io.c:361
+#: src/xz/file_io.c
#, c-format
msgid "%s: File seems to have been moved, not removing"
msgstr "%s: Filen er vist blevet flyttet, sletter ikke"
-#: src/xz/file_io.c:368 src/xz/file_io.c:924
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: Kan ikke fjerne: %s"
-#: src/xz/file_io.c:394
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: Kan ikke angive filejeren: %s"
-#: src/xz/file_io.c:407
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: Kan ikke angive filgruppen: %s"
-#: src/xz/file_io.c:426
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: Kan ikke angive filtilladelser: %s"
-#: src/xz/file_io.c:552
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "Der opstod en fejl under indhentelse af filstatusflag fra standardind: %s"
-#: src/xz/file_io.c:610 src/xz/file_io.c:672
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: Er en symbolsk henvisning, udelader"
-#: src/xz/file_io.c:701
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: Er en mappe, udelader"
-#: src/xz/file_io.c:707
+#: src/xz/file_io.c
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: Er ikke en normal fil, udelader"
-#: src/xz/file_io.c:724
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s: Filen har setuid- eller setgid-bitsæt, udelader"
-#: src/xz/file_io.c:731
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s: Fil har klæbende bitsæt, udelader"
-#: src/xz/file_io.c:738
+#: src/xz/file_io.c
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s: Inddatafil har mere end en hård henvisning, udelader"
-#: src/xz/file_io.c:780
+#: src/xz/file_io.c
msgid "Empty filename, skipping"
msgstr "Tomt filnavn, udelader"
-#: src/xz/file_io.c:834
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "Der opstod en fejl under gendannelse af statusflagene til standardind: %s"
-#: src/xz/file_io.c:882
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "Der opstod en fejl under indhentelse af filstatusflag fra standardud: %s"
-#: src/xz/file_io.c:1081
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "Der opstod en fejl under gendannelse af flaget O_APPEND til standardud: %s"
-#: src/xz/file_io.c:1093
+#: src/xz/file_io.c
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: Lukning af filen fejlede: %s"
-#: src/xz/file_io.c:1129 src/xz/file_io.c:1391
+#: src/xz/file_io.c
#, c-format
msgid "%s: Seeking failed when trying to create a sparse file: %s"
msgstr "%s: Søgning fejlede under forsøg på at oprette en tynd fil: %s"
-#: src/xz/file_io.c:1229
+#: src/xz/file_io.c
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: Læsefejl: %s"
-#: src/xz/file_io.c:1259
+#: src/xz/file_io.c
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: Der opstod en fejl under søgning efter filen: %s"
-#: src/xz/file_io.c:1283
+#: src/xz/file_io.c
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: Uventet filafslutning"
-#: src/xz/file_io.c:1342
+#: src/xz/file_io.c
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: Skrivefejl: %s"
-#: src/xz/hardware.c:238
+#: src/xz/hardware.c
msgid "Disabled"
msgstr "Deaktiveret"
-#: src/xz/hardware.c:269
+#: src/xz/hardware.c
#, fuzzy
#| msgid "Total amount of physical memory (RAM): "
msgid "Amount of physical memory (RAM):"
msgstr "Samlet mængde fysisk hukommelse (RAM): "
-#: src/xz/hardware.c:270
+#: src/xz/hardware.c
msgid "Number of processor threads:"
msgstr ""
-#: src/xz/hardware.c:271
+#: src/xz/hardware.c
msgid "Compression:"
msgstr ""
-#: src/xz/hardware.c:272
+#: src/xz/hardware.c
msgid "Decompression:"
msgstr ""
-#: src/xz/hardware.c:273
+#: src/xz/hardware.c
#, fuzzy
#| msgid "Memory usage limit for decompression: "
msgid "Multi-threaded decompression:"
msgstr "Grænse for hukommelsesforbug til dekomprimering: "
-#: src/xz/hardware.c:274
+#: src/xz/hardware.c
msgid "Default for -T0:"
msgstr ""
-#: src/xz/hardware.c:292
+#: src/xz/hardware.c
msgid "Hardware information:"
msgstr ""
-#: src/xz/hardware.c:299
+#: src/xz/hardware.c
#, fuzzy
#| msgid "Memory usage limit reached"
msgid "Memory usage limits:"
msgstr "Begrænsning på brug af hukommelse er nået"
-#: src/xz/list.c:68
+#: src/xz/list.c
msgid "Streams:"
msgstr ""
-#: src/xz/list.c:69
+#: src/xz/list.c
msgid "Blocks:"
msgstr ""
-#: src/xz/list.c:70
+#: src/xz/list.c
#, fuzzy
#| msgid " Compressed size: %s\n"
msgid "Compressed size:"
msgstr " Komprimeret str.: %s\n"
-#: src/xz/list.c:71
+#: src/xz/list.c
#, fuzzy
#| msgid " Uncompressed size: %s\n"
msgid "Uncompressed size:"
msgstr " Ukomprimeret str.: %s\n"
-#: src/xz/list.c:72
+#: src/xz/list.c
msgid "Ratio:"
msgstr ""
-#: src/xz/list.c:73
+#: src/xz/list.c
msgid "Check:"
msgstr ""
-#: src/xz/list.c:74
+#: src/xz/list.c
#, fuzzy
#| msgid " Stream padding: %s\n"
msgid "Stream Padding:"
msgstr " Strømfyld: %s\n"
-#: src/xz/list.c:75
+#: src/xz/list.c
#, fuzzy
#| msgid " Memory needed: %s MiB\n"
msgid "Memory needed:"
msgstr " Hukommelse krævet: %s MiB\n"
-#: src/xz/list.c:76
+#: src/xz/list.c
#, fuzzy
#| msgid " Sizes in headers: %s\n"
msgid "Sizes in headers:"
msgstr " Størrelser i teksthoveder: %s\n"
-#: src/xz/list.c:79
+#: src/xz/list.c
#, fuzzy
#| msgid " Number of files: %s\n"
msgid "Number of files:"
msgstr " Antal filer: %s\n"
-#: src/xz/list.c:122
+#: src/xz/list.c
msgid "Stream"
msgstr ""
-#: src/xz/list.c:123
+#: src/xz/list.c
msgid "Block"
msgstr ""
-#: src/xz/list.c:124
+#: src/xz/list.c
msgid "Blocks"
msgstr ""
-#: src/xz/list.c:125
+#: src/xz/list.c
msgid "CompOffset"
msgstr ""
-#: src/xz/list.c:126
+#: src/xz/list.c
msgid "UncompOffset"
msgstr ""
-#: src/xz/list.c:127
+#: src/xz/list.c
msgid "CompSize"
msgstr ""
-#: src/xz/list.c:128
+#: src/xz/list.c
msgid "UncompSize"
msgstr ""
-#: src/xz/list.c:129
+#: src/xz/list.c
#, fuzzy
#| msgid "Totals:"
msgid "TotalSize"
msgstr "I alt:"
-#: src/xz/list.c:130
+#: src/xz/list.c
msgid "Ratio"
msgstr ""
-#: src/xz/list.c:131
+#: src/xz/list.c
msgid "Check"
msgstr ""
-#: src/xz/list.c:132
+#: src/xz/list.c
msgid "CheckVal"
msgstr ""
-#: src/xz/list.c:133
+#: src/xz/list.c
msgid "Padding"
msgstr ""
-#: src/xz/list.c:134
+#: src/xz/list.c
msgid "Header"
msgstr ""
-#: src/xz/list.c:135
+#: src/xz/list.c
msgid "Flags"
msgstr ""
-#: src/xz/list.c:136
+#: src/xz/list.c
msgid "MemUsage"
msgstr ""
-#: src/xz/list.c:137
+#: src/xz/list.c
msgid "Filters"
msgstr ""
@@ -445,7 +479,7 @@ msgstr ""
#. This string is used in tables. In older xz version this
#. string was limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:169
+#: src/xz/list.c
msgid "None"
msgstr "Ingen"
@@ -453,60 +487,60 @@ msgstr "Ingen"
#. but the Check ID is known (here 2). In older xz version these
#. strings were limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:175
+#: src/xz/list.c
msgid "Unknown-2"
msgstr "Ukendt-2"
-#: src/xz/list.c:176
+#: src/xz/list.c
msgid "Unknown-3"
msgstr "Ukendt-3"
-#: src/xz/list.c:178
+#: src/xz/list.c
msgid "Unknown-5"
msgstr "Ukendt-5"
-#: src/xz/list.c:179
+#: src/xz/list.c
msgid "Unknown-6"
msgstr "Ukendt-6"
-#: src/xz/list.c:180
+#: src/xz/list.c
msgid "Unknown-7"
msgstr "Ukendt-7"
-#: src/xz/list.c:181
+#: src/xz/list.c
msgid "Unknown-8"
msgstr "Ukendt-8"
-#: src/xz/list.c:182
+#: src/xz/list.c
msgid "Unknown-9"
msgstr "Ukendt-9"
-#: src/xz/list.c:184
+#: src/xz/list.c
msgid "Unknown-11"
msgstr "Ukendt-11"
-#: src/xz/list.c:185
+#: src/xz/list.c
msgid "Unknown-12"
msgstr "Ukendt-12"
-#: src/xz/list.c:186
+#: src/xz/list.c
msgid "Unknown-13"
msgstr "Ukendt-13"
-#: src/xz/list.c:187
+#: src/xz/list.c
msgid "Unknown-14"
msgstr "Ukendt-14"
-#: src/xz/list.c:188
+#: src/xz/list.c
msgid "Unknown-15"
msgstr "Ukendt-15"
-#: src/xz/list.c:351
+#: src/xz/list.c
#, c-format
msgid "%s: File is empty"
msgstr "%s: Filen er tom"
-#: src/xz/list.c:356
+#: src/xz/list.c
#, c-format
msgid "%s: Too small to be a valid .xz file"
msgstr "%s: For lille til at være en gyldig .xz-fil"
@@ -515,64 +549,68 @@ msgstr "%s: For lille til at være en gyldig .xz-fil"
#. 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:731
+#: src/xz/list.c
msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename"
msgstr ""
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "Yes"
msgstr "Ja"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "No"
msgstr "Nej"
-#: src/xz/list.c:1028 src/xz/list.c:1206
+#: src/xz/list.c
#, c-format
msgid " Minimum XZ Utils version: %s\n"
msgstr " Minimum for XZ Utils-version: %s\n"
#. TRANSLATORS: %s is an integer. Only the plural form of this
#. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz".
-#: src/xz/list.c:1179
+#: src/xz/list.c
#, c-format
msgid "%s file\n"
msgid_plural "%s files\n"
msgstr[0] "%s fil\n"
msgstr[1] "%s filer\n"
-#: src/xz/list.c:1192
+#: src/xz/list.c
msgid "Totals:"
msgstr "I alt:"
-#: src/xz/list.c:1270
+#: src/xz/list.c
msgid "--list works only on .xz files (--format=xz or --format=auto)"
msgstr ""
-#: src/xz/list.c:1276
+#: src/xz/list.c
+msgid "Try 'lzmainfo' with .lzma files."
+msgstr ""
+
+#: src/xz/list.c
msgid "--list does not support reading from standard input"
msgstr "--list understøtter ikke læsning fra standardind"
-#: src/xz/main.c:89
+#: src/xz/main.c
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s: Der opstod en fejl under forsøg på læsning af filnavne: %s"
-#: src/xz/main.c:96
+#: src/xz/main.c
#, c-format
msgid "%s: Unexpected end of input when reading filenames"
msgstr "%s: Uventet afslutning på inddata under forsøg på læsning af filnavne"
-#: src/xz/main.c:120
+#: src/xz/main.c
#, c-format
-msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
+msgid "%s: Null character found when reading filenames; maybe you meant to use '--files0' instead of '--files'?"
msgstr ""
-#: src/xz/main.c:188
+#: src/xz/main.c
msgid "Compression and decompression with --robot are not supported yet."
msgstr "Komprimering og dekomprimering med --robot er endnu ikke understøttet."
-#: src/xz/main.c:266
+#: src/xz/main.c
msgid "Cannot read data from standard input when reading filenames from standard input"
msgstr ""
@@ -580,68 +618,69 @@ msgstr ""
#. 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:670 src/xz/message.c:725
+#: src/xz/message.c
#, c-format
msgid "%s: "
msgstr "%s: "
-#: src/xz/message.c:797 src/xz/message.c:856
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
msgid "Internal error (bug)"
msgstr "Intern fejl (fejl)"
-#: src/xz/message.c:804
+#: src/xz/message.c
msgid "Cannot establish signal handlers"
msgstr "Kan ikke etbalere signalhåndteringer"
-#: src/xz/message.c:813
+#: src/xz/message.c
msgid "No integrity check; not verifying file integrity"
msgstr "Ingen integritetkontrol; verificerer ikke filintegritet"
-#: src/xz/message.c:816
+#: src/xz/message.c
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr ""
-#: src/xz/message.c:823
+#: src/xz/message.c
msgid "Memory usage limit reached"
msgstr "Begrænsning på brug af hukommelse er nået"
-#: src/xz/message.c:826
+#: src/xz/message.c
msgid "File format not recognized"
msgstr "Filformatet blev ikke genkendt"
-#: src/xz/message.c:829
+#: src/xz/message.c
msgid "Unsupported options"
msgstr "Tilvalg er ikke understøttede"
-#: src/xz/message.c:832
+#: src/xz/message.c
msgid "Compressed data is corrupt"
msgstr "Komprimerede data er ødelagte"
-#: src/xz/message.c:835
+#: src/xz/message.c
msgid "Unexpected end of input"
msgstr "Uventet afslutning på inddata"
-#: src/xz/message.c:877
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "%s MiB hukommelse er krævet. Begrænseren er deaktiveret."
-#: src/xz/message.c:905
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr "%s MiB hukommelse er krævet. Begrænsningen er %s."
-#: src/xz/message.c:924
+#: src/xz/message.c
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: Filterkæde: %s\n"
-#: src/xz/message.c:935
-#, c-format
-msgid "Try `%s --help' for more information."
+#: src/xz/message.c
+#, fuzzy, c-format
+#| msgid "Try `%s --help' for more information."
+msgid "Try '%s --help' for more information."
msgstr "Prøv »%s --help« for yderligere information."
-#: src/xz/message.c:961
+#: src/xz/message.c
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
@@ -649,17 +688,17 @@ msgid ""
"\n"
msgstr ""
-#: src/xz/message.c:968
+#: src/xz/message.c
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr ""
"Obligatoriske argumenter til lange tilvalg er også obligatoriske for korte\n"
"tilvalg.\n"
-#: src/xz/message.c:972
+#: src/xz/message.c
msgid " Operation mode:\n"
msgstr " Operationstilstand:\n"
-#: src/xz/message.c:975
+#: src/xz/message.c
msgid ""
" -z, --compress force compression\n"
" -d, --decompress force decompression\n"
@@ -667,7 +706,7 @@ msgid ""
" -l, --list list information about .xz files"
msgstr ""
-#: src/xz/message.c:981
+#: src/xz/message.c
msgid ""
"\n"
" Operation modifiers:\n"
@@ -675,80 +714,82 @@ msgstr ""
"\n"
"Operationsændrere:\n"
-#: src/xz/message.c:984
+#: src/xz/message.c
msgid ""
" -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\n"
" -c, --stdout write to standard output and don't delete input files"
msgstr ""
-#: src/xz/message.c:993
+#: src/xz/message.c
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
msgstr ""
-#: src/xz/message.c:996
+#: src/xz/message.c
msgid ""
" --no-sparse do not create sparse files when decompressing\n"
-" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
+" -S, --suffix=.SUF use the suffix '.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n"
" omitted, filenames are read from the standard input;\n"
" filenames must be terminated with the newline character\n"
" --files0[=FILE] like --files but use the null character as terminator"
msgstr ""
-#: src/xz/message.c:1005
+#: src/xz/message.c
msgid ""
"\n"
" Basic file format and compression options:\n"
msgstr ""
-#: src/xz/message.c:1007
+#: src/xz/message.c
msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n"
-" `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
-" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-" `crc32', `crc64' (default), or `sha256'"
+" 'auto' (default), 'xz', 'lzma', 'lzip', and 'raw'\n"
+" -C, --check=CHECK integrity check type: 'none' (use with caution),\n"
+" 'crc32', 'crc64' (default), or 'sha256'"
msgstr ""
-#: src/xz/message.c:1012
+#: src/xz/message.c
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr ""
-#: src/xz/message.c:1016
+#: src/xz/message.c
msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!"
msgstr ""
-#: src/xz/message.c:1020
+#: src/xz/message.c
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
msgstr ""
-#: src/xz/message.c:1024
+#: src/xz/message.c
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"
+" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
+" as many threads as there are processor cores"
msgstr ""
-#: src/xz/message.c:1029
+#: src/xz/message.c
msgid ""
" --block-size=SIZE\n"
" start a new .xz block after every SIZE bytes of input;\n"
" use this to set the block size for threaded compression"
msgstr ""
-#: src/xz/message.c:1033
+#: src/xz/message.c
msgid ""
-" --block-list=SIZES\n"
+" --block-list=BLOCKS\n"
" start a new .xz block after the given comma-separated\n"
-" intervals of uncompressed data"
+" intervals of uncompressed data; optionally, specify a\n"
+" filter chain number (0-9) followed by a ':' before the\n"
+" uncompressed data size"
msgstr ""
-#: src/xz/message.c:1037
+#: src/xz/message.c
msgid ""
" --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n"
@@ -756,7 +797,7 @@ msgid ""
" would block, all pending data is flushed out"
msgstr ""
-#: src/xz/message.c:1043
+#: src/xz/message.c
#, no-c-format
msgid ""
" --memlimit-compress=LIMIT\n"
@@ -768,19 +809,39 @@ msgid ""
" bytes, % of RAM, or 0 for defaults"
msgstr ""
-#: src/xz/message.c:1052
+#: src/xz/message.c
msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards"
msgstr ""
-#: src/xz/message.c:1058
+#: src/xz/message.c
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
msgstr ""
-#: src/xz/message.c:1067
+#: src/xz/message.c
+msgid ""
+"\n"
+" --filters=FILTERS set the filter chain using the liblzma filter string\n"
+" syntax; use --filters-help for more information"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters1=FILTERS ... --filters9=FILTERS\n"
+" set additional filter chains using the liblzma filter\n"
+" string syntax to use with --block-list"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters-help display more information about the liblzma filter string\n"
+" syntax and exit."
+msgstr ""
+
+#: src/xz/message.c
msgid ""
"\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
@@ -796,7 +857,7 @@ msgid ""
" depth=NUM maximum search depth; 0=automatic (default)"
msgstr ""
-#: src/xz/message.c:1082
+#: src/xz/message.c
msgid ""
"\n"
" --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
@@ -806,11 +867,12 @@ msgid ""
" --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
" --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
" --sparc[=OPTS] SPARC BCJ filter\n"
+" --riscv[=OPTS] RISC-V BCJ filter\n"
" Valid OPTS for all BCJ filters:\n"
" start=NUM start offset for conversions (default=0)"
msgstr ""
-#: src/xz/message.c:1095
+#: src/xz/message.c
msgid ""
"\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n"
@@ -818,7 +880,7 @@ msgid ""
" from each other (1-256; 1)"
msgstr ""
-#: src/xz/message.c:1103
+#: src/xz/message.c
msgid ""
"\n"
" Other options:\n"
@@ -826,29 +888,29 @@ msgstr ""
"\n"
"Andre tilvalg:\n"
-#: src/xz/message.c:1106
+#: src/xz/message.c
msgid ""
" -q, --quiet suppress warnings; specify twice to suppress errors too\n"
" -v, --verbose be verbose; specify twice for even more verbose"
msgstr ""
-#: src/xz/message.c:1111
+#: src/xz/message.c
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr ""
-#: src/xz/message.c:1113
+#: src/xz/message.c
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr ""
" --robot brug beskeder der kan fortolkes maskinelt (nyttigt\n"
" for skripter)"
-#: src/xz/message.c:1116
+#: src/xz/message.c
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
msgstr ""
-#: src/xz/message.c:1119
+#: src/xz/message.c
msgid ""
" -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit"
@@ -857,7 +919,7 @@ msgstr ""
" tilvalg)\n"
" -H, --long-help vis den lange hjælpetekst og afslut"
-#: src/xz/message.c:1123
+#: src/xz/message.c
msgid ""
" -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)"
@@ -866,11 +928,12 @@ msgstr ""
" -H, --long-help vis den lange hjælpetekst (viser også de avancerede\n"
" tilvalg)"
-#: src/xz/message.c:1128
+#: src/xz/message.c
msgid " -V, --version display the version number and exit"
msgstr " -V, --version vis versionsnummer og afslut"
-#: src/xz/message.c:1130
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
+#, c-format
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
@@ -882,93 +945,129 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks.
-#: src/xz/message.c:1136
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr ""
"Rapporter fejl til <%s> (på engelsk eller finsk).\n"
"Rapporter oversættelsesfejl til <dansk@dansk-gruppen.dk>.\n"
-#: src/xz/message.c:1138
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "%s home page: <%s>\n"
msgstr "%s hjemmeside: <%s>\n"
-#: src/xz/message.c:1142
+#: src/xz/message.c
msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
msgstr "DETTE ER EN UDVIKLINGSVERSION - BRUG IKKE I PRODUKTION."
-#: src/xz/options.c:86
-#, c-format
-msgid "%s: Options must be `name=value' pairs separated with commas"
+#: src/xz/message.c
+msgid ""
+"Filter chains are set using the --filters=FILTERS or\n"
+"--filters1=FILTERS ... --filters9=FILTERS options. Each filter in the chain\n"
+"can be separated by spaces or '--'. Alternatively a preset <0-9>[e] can be\n"
+"specified instead of a filter chain.\n"
+msgstr ""
+
+#: src/xz/message.c
+#, fuzzy
+#| msgid "Unsupported filter chain or filter options"
+msgid "The supported filters and their options are:"
+msgstr "Filterkæde eller filterindstillinger er ikke understøttet"
+
+#: src/xz/options.c
+#, fuzzy, c-format
+#| msgid "%s: Options must be `name=value' pairs separated with commas"
+msgid "%s: Options must be 'name=value' pairs separated with commas"
msgstr "%s: Tilvalg skal være »navne=værdi«-par adskilt med kommaer"
-#: src/xz/options.c:93
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option name"
msgstr "%s: Ugyldigt tilvalgsnavn"
-#: src/xz/options.c:113
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option value"
msgstr "%s: Ugyldigt tilvalgsværdi"
-#: src/xz/options.c:248
+#: src/xz/options.c
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "LZMA1/LZMA2-forhåndskonfiguration er ikke understøttet: %s"
-#: src/xz/options.c:356
+#: src/xz/options.c
msgid "The sum of lc and lp must not exceed 4"
msgstr "Summen af lc og lp må ikke være højere end 4"
-#: src/xz/suffix.c:160
+#: src/xz/suffix.c
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: Filnavn har ukendt endelse, udelader"
-#: src/xz/suffix.c:181
-#, c-format
-msgid "%s: File already has `%s' suffix, skipping"
+#: src/xz/suffix.c
+#, fuzzy, c-format
+#| msgid "%s: File already has `%s' suffix, skipping"
+msgid "%s: File already has '%s' suffix, skipping"
msgstr "%s: Filen har allrede endelsen »%s«, udelader."
-#: src/xz/suffix.c:388
+#: src/xz/suffix.c
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s: Ugyldig filnavnendelse"
-#: src/xz/util.c:107
+#: src/xz/util.c
#, c-format
msgid "%s: Value is not a non-negative decimal integer"
msgstr "%s: Værdi er ikke et positivt decimalheltal"
-#: src/xz/util.c:149
+#: src/xz/util.c
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s: Ugyldig multiplikatorendelse"
-#: src/xz/util.c:151
-msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+#: src/xz/util.c
+#, fuzzy
+#| msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+msgid "Valid suffixes are 'KiB' (2^10), 'MiB' (2^20), and 'GiB' (2^30)."
msgstr "Gyldige endelser er »KiB« (2^10), »MiB« (2^20) og »GiB« (2^30)."
-#: src/xz/util.c:168
-#, c-format
-msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+#: src/xz/util.c
+#, fuzzy, c-format
+#| msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+msgid "Value of the option '%s' must be in the range [%<PRIu64>, %<PRIu64>]"
msgstr "Værdien for tilvalget »%s« skal være i intervallet [%<PRIu64>, %<PRIu64>]"
-#: src/xz/util.c:270
+#: src/xz/util.c
msgid "Compressed data cannot be read from a terminal"
msgstr "Komprimerede data kan ikke læses fra en terminal"
-#: src/xz/util.c:283
+#: src/xz/util.c
msgid "Compressed data cannot be written to a terminal"
msgstr "Komprimerede data kan ikke skrives til en terminal"
-#: src/common/tuklib_exit.c:40
+#: src/lzmainfo/lzmainfo.c
+#, c-format
+msgid ""
+"Usage: %s [--help] [--version] [FILE]...\n"
+"Show information stored in the .lzma file header"
+msgstr ""
+
+#: src/lzmainfo/lzmainfo.c
+#, fuzzy
+#| msgid "%s: Too small to be a valid .xz file"
+msgid "File is too small to be a .lzma file"
+msgstr "%s: For lille til at være en gyldig .xz-fil"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "Not a .lzma file"
+msgstr ""
+
+#: src/common/tuklib_exit.c
msgid "Writing to standard output failed"
msgstr "Skrivning til standardud mislykkedes"
-#: src/common/tuklib_exit.c:43
+#: src/common/tuklib_exit.c
msgid "Unknown error"
msgstr "Ukendt fejl"
@@ -978,6 +1077,9 @@ msgstr "Ukendt fejl"
#~ msgid "Sandbox was successfully enabled"
#~ msgstr "Sandkassen blev aktiveret"
+#~ msgid "Failed to enable the sandbox"
+#~ msgstr "Kunne ikke aktivere sandkassen"
+
#~ msgid "Memory usage limit for compression: "
#~ msgstr "Grænse for hukommelsesforbrug til komprimering: "
diff --git a/po/de.gmo b/po/de.gmo
index f0f5464..44dc7a6 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index 477905e..434ecec 100644
--- a/po/de.po
+++ b/po/de.po
@@ -1,15 +1,16 @@
-# XZ Utils German translation
-# This file is put in the public domain.
+# SPDX-License-Identifier: 0BSD
#
+# German translation for xz.
+# This file is published under the BSD Zero Clause License.
# André Noll <maan@tuebingen.mpg.de>, 2010.
# Anna Henningsen <sqrt@entless.org>, 2015.
-# Mario Blättermann <mario.blaettermann@gmail.com>, 2019, 2022-2023.
+# Mario Blättermann <mario.blaettermann@gmail.com>, 2019, 2022-2024.
msgid ""
msgstr ""
-"Project-Id-Version: xz 5.4.4-pre1\n"
+"Project-Id-Version: xz 5.6.0-pre2\n"
"Report-Msgid-Bugs-To: xz@tukaani.org\n"
-"POT-Creation-Date: 2023-10-31 22:33+0800\n"
-"PO-Revision-Date: 2023-07-19 20:44+0200\n"
+"POT-Creation-Date: 2024-05-29 17:41+0300\n"
+"PO-Revision-Date: 2024-02-15 17:45+0100\n"
"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
"Language: de\n"
@@ -18,144 +19,172 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Lokalize 23.04.3\n"
+"X-Generator: Lokalize 23.08.4\n"
-#: src/xz/args.c:77
+#: src/xz/args.c
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr "%s: Ungültiges Argument für --block-list"
-#: src/xz/args.c:87
+#: src/xz/args.c
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s: Zu viele Argumente für --block-list"
-#: src/xz/args.c:116
+#: src/xz/args.c
+#, c-format
+msgid "In --block-list, block size is missing after filter chain number '%c:'"
+msgstr "In --block-list fehlt die Blockgröße nach der Filterkettennummer »%c:«"
+
+#: src/xz/args.c
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:451
+#: src/xz/args.c
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s: Unbekanntes Dateiformat"
-#: src/xz/args.c:474 src/xz/args.c:482
+#: src/xz/args.c
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s: Integritätsprüfungstyp nicht unterstützt"
-#: src/xz/args.c:518
-msgid "Only one file can be specified with `--files' or `--files0'."
+#: src/xz/args.c
+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."
#. TRANSLATORS: This is a translatable
#. string because French needs a space
#. before the colon ("%s : %s").
-#: src/xz/args.c:533 src/xz/coder.c:692 src/xz/coder.c:708 src/xz/coder.c:968
-#: src/xz/coder.c:971 src/xz/file_io.c:605 src/xz/file_io.c:679
-#: src/xz/file_io.c:769 src/xz/file_io.c:940 src/xz/list.c:369
-#: src/xz/list.c:415 src/xz/list.c:477 src/xz/list.c:581 src/xz/list.c:590
+#: src/xz/args.c src/xz/coder.c src/xz/file_io.c src/xz/list.c
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: src/xz/args.c:589
+#: src/xz/args.c
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "Die Umgebungsvariable %s enthält zu viele Argumente"
-#: src/xz/args.c:691
+#: src/xz/args.c
msgid "Compression support was disabled at build time"
msgstr "Die Unterstützung für Kompression wurde zum Zeitpunkt der Erstellung deaktiviert"
-#: src/xz/args.c:698
+#: src/xz/args.c
msgid "Decompression support was disabled at build time"
msgstr "Die Unterstützung für Dekompression wurde zum Zeitpunkt der Erstellung deaktiviert"
-#: src/xz/args.c:704
+#: src/xz/args.c
msgid "Compression of lzip files (.lz) is not supported"
msgstr "Kompression von lzip-Dateien (.lz) wird nicht unterstützt"
-#: src/xz/args.c:735
+#: src/xz/args.c
+msgid "--block-list is ignored unless compressing to the .xz format"
+msgstr "--block-list wird ignoriert, außer wenn in das .xz-Format komprimiert wird"
+
+#: src/xz/args.c
msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "Mit --format=raw ist --suffix=.SUF notwendig, falls nicht in die Standardausgabe geschrieben wird"
-#: src/xz/coder.c:115
+#: src/xz/coder.c
msgid "Maximum number of filters is four"
msgstr "Maximal vier Filter möglich"
-#: src/xz/coder.c:135
+#: src/xz/coder.c
+#, c-format
+msgid "Error in --filters%s=FILTERS option:"
+msgstr "Fehler in der Option --filters%s=FILTER:"
+
+#: src/xz/coder.c
msgid "Memory usage limit is too low for the given filter setup."
msgstr "Die Speicherbedarfsbegrenzung ist für die gegebene Filter-Konfiguration zu niedrig."
-#: src/xz/coder.c:170
+#: src/xz/coder.c
+#, c-format
+msgid "filter chain %u used by --block-list but not specified with --filters%u="
+msgstr "Filterkette %u wird von --block-list verwendet, wurde aber nicht mit --filters%u= angegeben"
+
+#: src/xz/coder.c
msgid "Using a preset in raw mode is discouraged."
msgstr "Verwendung einer Voreinstellung im Roh-Modus wird nicht empfohlen."
-#: src/xz/coder.c:172
+#: src/xz/coder.c
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:195
+#: src/xz/coder.c
msgid "The .lzma format supports only the LZMA1 filter"
msgstr "Das .lzma-Format unterstützt nur den LZMA1-Filter"
-#: src/xz/coder.c:203
+#: src/xz/coder.c
msgid "LZMA1 cannot be used with the .xz format"
msgstr "LZMA1 kann nicht mit dem .xz-Format verwendet werden"
-#: src/xz/coder.c:220
-msgid "The filter chain is incompatible with --flush-timeout"
-msgstr "Diese Filterkette ist inkompatibel zu --flush-timeout"
+#: src/xz/coder.c
+#, c-format
+msgid "Filter chain %u is incompatible with --flush-timeout"
+msgstr "Die Filterkette %u ist inkompatibel zu --flush-timeout"
-#: src/xz/coder.c:226
+#: src/xz/coder.c
msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr "Wegen --flush-timeout wird auf den Einzelthread-Modus umgeschaltet"
-#: src/xz/coder.c:250
+#: src/xz/coder.c
+#, c-format
+msgid "Unsupported options in filter chain %u"
+msgstr "Nicht unterstützte Optionen in Filterkette %u"
+
+#: src/xz/coder.c
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "Bis zu %<PRIu32> Threads werden benutzt."
-#: src/xz/coder.c:266
+#: src/xz/coder.c
msgid "Unsupported filter chain or filter options"
msgstr "Filterkette oder Filteroptionen werden nicht unterstützt"
-#: src/xz/coder.c:278
+#: src/xz/coder.c
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "Dekompression wird %s MiB Speicher brauchen."
-#: src/xz/coder.c:310
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgstr "Anzahl der Threads wurde von %s auf %s reduziert, um die Speicherbedarfsbegrenzung von %s MiB nicht zu übersteigen"
-#: src/xz/coder.c:330
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway."
msgstr "Anzahl der Threads wurde von %s auf einen reduziert. Die automatische Begrenzung des Speicherverbrauchs auf %s MiB wird immer noch überschritten. %s MiB an Speicher sind erforderlich. Es wird dennoch fortgesetzt."
-#: src/xz/coder.c:357
+#: src/xz/coder.c
#, c-format
msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB"
msgstr "Es wurde in den Einzelthread-Modus gewechselt, um die Speicherbedarfsbegrenzung von %s MiB nicht zu übersteigen"
-#: src/xz/coder.c:412
+#: src/xz/coder.c
#, c-format
msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
msgstr "Die LZMA%c-Wörterbuchgröße wurde von %s MiB auf %s MiB angepasst, um die Speicherbedarfsbegrenzung von %s MiB nicht zu übersteigen"
-#: src/xz/file_io.c:110 src/xz/file_io.c:118
+#: src/xz/coder.c
+#, c-format
+msgid "Adjusted LZMA%c dictionary size for --filters%u from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgstr "Die LZMA%c-Wörterbuchgröße für --filters%u wurde von %s MiB auf %s MiB angepasst, um die Speicherbedarfsbegrenzung von %s MiB nicht zu übersteigen"
+
+#: src/xz/coder.c
+#, c-format
+msgid "Error changing to filter chain %u: %s"
+msgstr "Fehler beim Wechsel zur Filterkette %u: %s"
+
+#: src/xz/file_io.c
#, c-format
msgid "Error creating a pipe: %s"
msgstr "Fehler beim Erzeugen der Pipeline: %s"
-#: src/xz/file_io.c:252
-msgid "Failed to enable the sandbox"
-msgstr "Sandbox konnte nicht aktiviert werden"
-
-#: src/xz/file_io.c:294
+#: src/xz/file_io.c
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s: poll() ist fehlgeschlagen: %s"
@@ -170,252 +199,252 @@ msgstr "%s: poll() ist fehlgeschlagen: %s"
#. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously
#. shouldn't be removed.
-#: src/xz/file_io.c:361
+#: src/xz/file_io.c
#, c-format
msgid "%s: File seems to have been moved, not removing"
msgstr "%s: Datei scheint verschoben worden zu sein, daher wird sie nicht gelöscht"
-#: src/xz/file_io.c:368 src/xz/file_io.c:924
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: Löschen nicht möglich: %s"
-#: src/xz/file_io.c:394
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: Dateieigentümer kann nicht gesetzt werden: %s"
-#: src/xz/file_io.c:407
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: Dateigruppe kann nicht gesetzt werden: %s"
-#: src/xz/file_io.c:426
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: Zugriffsrechte können nicht gesetzt werden: %s"
-#: src/xz/file_io.c:552
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "Dateistatus-Markierungen können nicht aus der Standardeingabe ermittelt werden: %s"
-#: src/xz/file_io.c:610 src/xz/file_io.c:672
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: Ist ein symbolischer Link, wird übersprungen"
-#: src/xz/file_io.c:701
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: Ist ein Verzeichnis, wird übersprungen"
-#: src/xz/file_io.c:707
+#: src/xz/file_io.c
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: Keine reguläre Datei, wird übersprungen"
-#: src/xz/file_io.c:724
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s: Datei hat das setuid- oder setgid-Bit gesetzt, wird übersprungen"
-#: src/xz/file_io.c:731
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s: Datei hat sticky-Bit gesetzt, wird übersprungen"
-#: src/xz/file_io.c:738
+#: src/xz/file_io.c
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s: Eingabedatei hat mehr als einen harten Link, wird übersprungen"
-#: src/xz/file_io.c:780
+#: src/xz/file_io.c
msgid "Empty filename, skipping"
msgstr "Leerer Dateiname, wird übersprungen"
-#: src/xz/file_io.c:834
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "Fehler beim Wiederherstellen der Status-Markierungen für die Standardeingabe: %s"
-#: src/xz/file_io.c:882
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "Status-Markierungen der Standardausgabe können nicht ermittelt werden: %s"
-#: src/xz/file_io.c:1081
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "Fehler beim Wiederherstellen der O_APPEND-Markierungen für die Standardausgabe: %s"
-#: src/xz/file_io.c:1093
+#: src/xz/file_io.c
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: Fehler beim Schließen der Datei: %s"
-#: src/xz/file_io.c:1129 src/xz/file_io.c:1391
+#: src/xz/file_io.c
#, c-format
msgid "%s: Seeking failed when trying to create a sparse file: %s"
msgstr "%s: Positionierungsfehler beim Versuch, eine Sparse-Datei (dünnbesetzte Datei) zu erzeugen: %s"
-#: src/xz/file_io.c:1229
+#: src/xz/file_io.c
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: Lesefehler: %s"
-#: src/xz/file_io.c:1259
+#: src/xz/file_io.c
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: Fehler beim Durchsuchen der Datei: %s"
-#: src/xz/file_io.c:1283
+#: src/xz/file_io.c
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: Unerwartetes Ende der Datei"
-#: src/xz/file_io.c:1342
+#: src/xz/file_io.c
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: Schreibfehler: %s"
-#: src/xz/hardware.c:238
+#: src/xz/hardware.c
msgid "Disabled"
msgstr "Deaktiviert"
-#: src/xz/hardware.c:269
+#: src/xz/hardware.c
msgid "Amount of physical memory (RAM):"
msgstr "Gesamtmenge physischer Speicher (RAM):"
-#: src/xz/hardware.c:270
+#: src/xz/hardware.c
msgid "Number of processor threads:"
msgstr "Anzahl der Prozessor-Threads:"
-#: src/xz/hardware.c:271
+#: src/xz/hardware.c
msgid "Compression:"
msgstr "Kompression:"
-#: src/xz/hardware.c:272
+#: src/xz/hardware.c
msgid "Decompression:"
msgstr "Dekompression:"
-#: src/xz/hardware.c:273
+#: src/xz/hardware.c
msgid "Multi-threaded decompression:"
msgstr "Multithread-Dekompression:"
-#: src/xz/hardware.c:274
+#: src/xz/hardware.c
msgid "Default for -T0:"
msgstr "Vorgabe für -T0:"
-#: src/xz/hardware.c:292
+#: src/xz/hardware.c
msgid "Hardware information:"
msgstr "Hardware-Information:"
-#: src/xz/hardware.c:299
+#: src/xz/hardware.c
msgid "Memory usage limits:"
msgstr "Speicherbedarfsbegrenzung:"
-#: src/xz/list.c:68
+#: src/xz/list.c
msgid "Streams:"
msgstr "Datenströme:"
-#: src/xz/list.c:69
+#: src/xz/list.c
msgid "Blocks:"
msgstr "Blöcke:"
-#: src/xz/list.c:70
+#: src/xz/list.c
msgid "Compressed size:"
msgstr "Größe komprimiert:"
-#: src/xz/list.c:71
+#: src/xz/list.c
msgid "Uncompressed size:"
msgstr "Größe unkomprimiert:"
-#: src/xz/list.c:72
+#: src/xz/list.c
msgid "Ratio:"
msgstr "Verhältnis:"
-#: src/xz/list.c:73
+#: src/xz/list.c
msgid "Check:"
msgstr "Prüfung:"
-#: src/xz/list.c:74
+#: src/xz/list.c
msgid "Stream Padding:"
msgstr "Datenstromauffüllung:"
-#: src/xz/list.c:75
+#: src/xz/list.c
msgid "Memory needed:"
msgstr "Benötigter Speicher:"
-#: src/xz/list.c:76
+#: src/xz/list.c
msgid "Sizes in headers:"
msgstr "Größe in Köpfen:"
-#: src/xz/list.c:79
+#: src/xz/list.c
msgid "Number of files:"
msgstr "Anzahl Dateien:"
-#: src/xz/list.c:122
+#: src/xz/list.c
msgid "Stream"
msgstr "Datenstrom"
-#: src/xz/list.c:123
+#: src/xz/list.c
msgid "Block"
msgstr "Block"
-#: src/xz/list.c:124
+#: src/xz/list.c
msgid "Blocks"
msgstr "Blöcke"
-#: src/xz/list.c:125
+#: src/xz/list.c
msgid "CompOffset"
msgstr "KompVers"
-#: src/xz/list.c:126
+#: src/xz/list.c
msgid "UncompOffset"
msgstr "UnkompVers"
-#: src/xz/list.c:127
+#: src/xz/list.c
msgid "CompSize"
msgstr "KompGröße"
-#: src/xz/list.c:128
+#: src/xz/list.c
msgid "UncompSize"
msgstr "UnkompGröße"
-#: src/xz/list.c:129
+#: src/xz/list.c
msgid "TotalSize"
msgstr "Gesamt"
-#: src/xz/list.c:130
+#: src/xz/list.c
msgid "Ratio"
msgstr "Verhältnis"
-#: src/xz/list.c:131
+#: src/xz/list.c
msgid "Check"
msgstr "Prüfung"
-#: src/xz/list.c:132
+#: src/xz/list.c
msgid "CheckVal"
msgstr "Prüfwert"
-#: src/xz/list.c:133
+#: src/xz/list.c
msgid "Padding"
msgstr "Auffüllung"
-#: src/xz/list.c:134
+#: src/xz/list.c
msgid "Header"
msgstr "Kopf"
-#: src/xz/list.c:135
+#: src/xz/list.c
msgid "Flags"
msgstr "Flags"
-#: src/xz/list.c:136
+#: src/xz/list.c
msgid "MemUsage"
msgstr "SpeichVerb"
-#: src/xz/list.c:137
+#: src/xz/list.c
msgid "Filters"
msgstr "Filter"
@@ -423,7 +452,7 @@ msgstr "Filter"
#. This string is used in tables. In older xz version this
#. string was limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:169
+#: src/xz/list.c
msgid "None"
msgstr "Keine"
@@ -431,60 +460,60 @@ msgstr "Keine"
#. but the Check ID is known (here 2). In older xz version these
#. strings were limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:175
+#: src/xz/list.c
msgid "Unknown-2"
msgstr "Unbek.2"
-#: src/xz/list.c:176
+#: src/xz/list.c
msgid "Unknown-3"
msgstr "Unbek.3"
-#: src/xz/list.c:178
+#: src/xz/list.c
msgid "Unknown-5"
msgstr "Unbek.5"
-#: src/xz/list.c:179
+#: src/xz/list.c
msgid "Unknown-6"
msgstr "Unbek.6"
-#: src/xz/list.c:180
+#: src/xz/list.c
msgid "Unknown-7"
msgstr "Unbek.7"
-#: src/xz/list.c:181
+#: src/xz/list.c
msgid "Unknown-8"
msgstr "Unbek.8"
-#: src/xz/list.c:182
+#: src/xz/list.c
msgid "Unknown-9"
msgstr "Unbek.9"
-#: src/xz/list.c:184
+#: src/xz/list.c
msgid "Unknown-11"
msgstr "Unbek.11"
-#: src/xz/list.c:185
+#: src/xz/list.c
msgid "Unknown-12"
msgstr "Unbek.12"
-#: src/xz/list.c:186
+#: src/xz/list.c
msgid "Unknown-13"
msgstr "Unbek.13"
-#: src/xz/list.c:187
+#: src/xz/list.c
msgid "Unknown-14"
msgstr "Unbek.14"
-#: src/xz/list.c:188
+#: src/xz/list.c
msgid "Unknown-15"
msgstr "Unbek.15"
-#: src/xz/list.c:351
+#: src/xz/list.c
#, c-format
msgid "%s: File is empty"
msgstr "%s: Datei ist leer"
-#: src/xz/list.c:356
+#: src/xz/list.c
#, c-format
msgid "%s: Too small to be a valid .xz file"
msgstr "%s: Zu klein, um eine gültige .xz-Datei zu sein"
@@ -493,64 +522,68 @@ msgstr "%s: Zu klein, um eine gültige .xz-Datei zu sein"
#. 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:731
+#: src/xz/list.c
msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename"
msgstr " Str. Blöcke Kompr. Unkompr. Verh. Check Dateiname"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "Yes"
msgstr "Ja"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "No"
msgstr "Nein"
-#: src/xz/list.c:1028 src/xz/list.c:1206
+#: src/xz/list.c
#, c-format
msgid " Minimum XZ Utils version: %s\n"
msgstr " Minimal erforderliche XZ Utils-Version: %s\n"
#. TRANSLATORS: %s is an integer. Only the plural form of this
#. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz".
-#: src/xz/list.c:1179
+#: src/xz/list.c
#, 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:1192
+#: src/xz/list.c
msgid "Totals:"
msgstr "Gesamt:"
-#: src/xz/list.c:1270
+#: src/xz/list.c
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:1276
+#: src/xz/list.c
+msgid "Try 'lzmainfo' with .lzma files."
+msgstr "Versuchen Sie »lzmainfo« mit .lzma-Dateien."
+
+#: src/xz/list.c
msgid "--list does not support reading from standard input"
msgstr "--list unterstützt kein Lesen aus der Standardeingabe"
-#: src/xz/main.c:89
+#: src/xz/main.c
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s: Fehler beim Lesen der Dateinamen: %s"
-#: src/xz/main.c:96
+#: src/xz/main.c
#, c-format
msgid "%s: Unexpected end of input when reading filenames"
msgstr "%s: Unerwartetes Ende der Eingabe beim Lesen der Dateinamen"
-#: src/xz/main.c:120
+#: src/xz/main.c
#, c-format
-msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
+msgid "%s: Null character found when reading filenames; maybe you meant to use '--files0' instead of '--files'?"
msgstr "%s: Null-Zeichen beim Lesen der Dateinamen gefunden; meinten Sie »--files0« statt »--files«?"
-#: src/xz/main.c:188
+#: src/xz/main.c
msgid "Compression and decompression with --robot are not supported yet."
msgstr "Kompression und Dekompression mit --robot wird noch nicht unterstützt."
-#: src/xz/main.c:266
+#: src/xz/main.c
msgid "Cannot read data from standard input when reading filenames from standard input"
msgstr "Lesen der Daten aus der Standardeingabe ist nicht möglich, wenn die Dateinamen auch aus der Standardeingabe gelesen werden"
@@ -558,68 +591,68 @@ msgstr "Lesen der Daten aus der Standardeingabe ist nicht möglich, wenn die Dat
#. 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:670 src/xz/message.c:725
+#: src/xz/message.c
#, c-format
msgid "%s: "
msgstr "%s: "
-#: src/xz/message.c:797 src/xz/message.c:856
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
msgid "Internal error (bug)"
msgstr "Interner Fehler (Bug)"
-#: src/xz/message.c:804
+#: src/xz/message.c
msgid "Cannot establish signal handlers"
msgstr "Signalroutine kann nicht gesetzt werden"
-#: src/xz/message.c:813
+#: src/xz/message.c
msgid "No integrity check; not verifying file integrity"
msgstr "Keine Integritätsprüfung; Integrität der Datei wird nicht überprüft"
-#: src/xz/message.c:816
+#: src/xz/message.c
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "Typ der Integritätsprüfung wird nicht unterstützt; Integrität der Datei wird nicht überprüft"
-#: src/xz/message.c:823
+#: src/xz/message.c
msgid "Memory usage limit reached"
msgstr "Speicherbedarfsbegrenzung erreicht"
-#: src/xz/message.c:826
+#: src/xz/message.c
msgid "File format not recognized"
msgstr "Dateiformat nicht erkannt"
-#: src/xz/message.c:829
+#: src/xz/message.c
msgid "Unsupported options"
msgstr "Optionen nicht unterstützt"
-#: src/xz/message.c:832
+#: src/xz/message.c
msgid "Compressed data is corrupt"
msgstr "Komprimierte Daten sind beschädigt"
-#: src/xz/message.c:835
+#: src/xz/message.c
msgid "Unexpected end of input"
msgstr "Unerwartetes Ende der Eingabe"
-#: src/xz/message.c:877
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "%s MiB Speicher wird benötigt. Die Begrenzung ist deaktiviert."
-#: src/xz/message.c:905
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr "%s MiB Speicher wird benötigt. Die Begrenzung ist %s."
-#: src/xz/message.c:924
+#: src/xz/message.c
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: Filterkette: %s\n"
-#: src/xz/message.c:935
+#: src/xz/message.c
#, c-format
-msgid "Try `%s --help' for more information."
+msgid "Try '%s --help' for more information."
msgstr "Versuchen Sie »%s --help« für mehr Informationen."
-#: src/xz/message.c:961
+#: src/xz/message.c
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
@@ -630,17 +663,17 @@ msgstr ""
"Komprimiert oder dekomprimiert .xz-DATEI(EN).\n"
"\n"
-#: src/xz/message.c:968
+#: src/xz/message.c
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:972
+#: src/xz/message.c
msgid " Operation mode:\n"
msgstr " Aktionsmodus:\n"
-#: src/xz/message.c:975
+#: src/xz/message.c
msgid ""
" -z, --compress force compression\n"
" -d, --decompress force decompression\n"
@@ -652,7 +685,7 @@ msgstr ""
" -t, --test Dateiintegrität überprüfen\n"
" -l, --list Dateiinformationen anzeigen"
-#: src/xz/message.c:981
+#: src/xz/message.c
msgid ""
"\n"
" Operation modifiers:\n"
@@ -660,7 +693,7 @@ msgstr ""
"\n"
" Aktionsmodifikatoren:\n"
-#: src/xz/message.c:984
+#: src/xz/message.c
msgid ""
" -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\n"
@@ -672,7 +705,7 @@ msgstr ""
" -c, --stdout In die Standardausgabe schreiben und die\n"
" Eingabedateien nicht löschen"
-#: src/xz/message.c:993
+#: src/xz/message.c
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
@@ -681,10 +714,10 @@ msgstr ""
" stillschweigend mögliche weitere Eingabedaten\n"
" ignorieren"
-#: src/xz/message.c:996
+#: src/xz/message.c
msgid ""
" --no-sparse do not create sparse files when decompressing\n"
-" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
+" -S, --suffix=.SUF use the suffix '.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n"
" omitted, filenames are read from the standard input;\n"
" filenames must be terminated with the newline character\n"
@@ -702,7 +735,7 @@ msgstr ""
" --files0=[DATEI] Wie --files, aber das Null-Zeichen wird als\n"
" Trenner benutzt"
-#: src/xz/message.c:1005
+#: src/xz/message.c
msgid ""
"\n"
" Basic file format and compression options:\n"
@@ -710,12 +743,12 @@ msgstr ""
"\n"
" Grundlegende Optionen für Dateiformat und Kompression:\n"
-#: src/xz/message.c:1007
+#: src/xz/message.c
msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n"
-" `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
-" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-" `crc32', `crc64' (default), or `sha256'"
+" 'auto' (default), 'xz', 'lzma', 'lzip', and 'raw'\n"
+" -C, --check=CHECK integrity check type: 'none' (use with caution),\n"
+" 'crc32', 'crc64' (default), or 'sha256'"
msgstr ""
" -F, --format=FMT Dateiformat zur Kodierung oder Dekodierung; mögliche\n"
" Werte sind »auto« (Voreinstellung), »xz«, »lzma«,\n"
@@ -723,13 +756,13 @@ msgstr ""
" -C, --check=PRÜFUNG Typ der Integritätsprüfung: »none« (Vorsicht),\n"
" »crc32«, »crc64« (Voreinstellung) oder »sha256«"
-#: src/xz/message.c:1012
+#: src/xz/message.c
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr ""
" --ignore-check Integritätsprüfung beim Dekomprimieren\n"
" nicht ausführen"
-#: src/xz/message.c:1016
+#: src/xz/message.c
msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!"
@@ -738,7 +771,7 @@ msgstr ""
" Beachten Sie den Speicherbedarf des Kompressors\n"
" *und* des Dekompressors, wenn Sie 7-9 benutzen!"
-#: src/xz/message.c:1020
+#: src/xz/message.c
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
@@ -747,17 +780,16 @@ msgstr ""
" Kompressionsverhältnis zu verbessern. Dies beeinflusst\n"
" den Speicherbedarf des Dekompressors nicht."
-#: src/xz/message.c:1024
+#: src/xz/message.c
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"
+" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
+" as many threads as there are processor cores"
msgstr ""
" -T, --threads=ANZAHL Höchstens die angegebene ANZAHL Threads erzeugen;\n"
-" die Voreinstellung ist 1. Wenn der Wert 0 angegeben\n"
-" wird, dann werden so viele Threads erzeugt, wie\n"
-" Prozessorkerne vorhanden sind"
+" die Voreinstellung ist 0, wobei so viele Threads\n"
+" erzeugt werden, wie Prozessorkerne vorhanden sind"
-#: src/xz/message.c:1029
+#: src/xz/message.c
msgid ""
" --block-size=SIZE\n"
" start a new .xz block after every SIZE bytes of input;\n"
@@ -769,18 +801,22 @@ msgstr ""
" Option, um die Blockgröße für die Kompression mit\n"
" mehreren Threads zu setzen"
-#: src/xz/message.c:1033
+#: src/xz/message.c
msgid ""
-" --block-list=SIZES\n"
+" --block-list=BLOCKS\n"
" start a new .xz block after the given comma-separated\n"
-" intervals of uncompressed data"
+" intervals of uncompressed data; optionally, specify a\n"
+" filter chain number (0-9) followed by a ':' before the\n"
+" uncompressed data size"
msgstr ""
-" --block-list=GRÖẞEN\n"
+" --block-list=BLÖCKE\n"
" Einen neuen .xz-Block gemäß der angegebenen, durch\n"
" Kommata getrennten Intervalle an unkomprimierten\n"
-" Daten beginnen"
+" Daten beginnen; optional kann eine Filterketten-\n"
+" nummer (0-9) angegeben werden, gefolgt von einem\n"
+" »:« und der unkomprimierten Datengröße"
-#: src/xz/message.c:1037
+#: src/xz/message.c
msgid ""
" --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n"
@@ -794,7 +830,7 @@ msgstr ""
" Eingabedaten den Prozess blockieren würde, dann werden\n"
" alle noch ausstehenden Daten geschrieben"
-#: src/xz/message.c:1043
+#: src/xz/message.c
#, no-c-format
msgid ""
" --memlimit-compress=LIMIT\n"
@@ -815,7 +851,7 @@ msgstr ""
" Geben Sie 0 an, um die Grundeinstellungen zu\n"
" verwenden."
-#: src/xz/message.c:1052
+#: src/xz/message.c
msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards"
@@ -825,7 +861,7 @@ msgstr ""
" Fehler ausgegeben, statt die Einstellungen\n"
" nach unten anzupassen."
-#: src/xz/message.c:1058
+#: src/xz/message.c
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
@@ -833,7 +869,37 @@ msgstr ""
"\n"
" Benutzerdefinierte Filterkette für Kompression (alternativ zu Voreinstellung):"
-#: src/xz/message.c:1067
+#: src/xz/message.c
+msgid ""
+"\n"
+" --filters=FILTERS set the filter chain using the liblzma filter string\n"
+" syntax; use --filters-help for more information"
+msgstr ""
+"\n"
+" --filters=FILTER die Filterkette anhand der Liblzma-Filterketten-\n"
+" syntax setzen; mit --filters-help erhalten Sie\n"
+" weitere Informationen"
+
+#: src/xz/message.c
+msgid ""
+" --filters1=FILTERS ... --filters9=FILTERS\n"
+" set additional filter chains using the liblzma filter\n"
+" string syntax to use with --block-list"
+msgstr ""
+" --filters1=FILTER … --filters9=FILTER\n"
+" zusätzliche Filter anhand der Liblzma-Filterketten-\n"
+" syntax setzen, die mit --block-list verwendet\n"
+" werden sollen"
+
+#: src/xz/message.c
+msgid ""
+" --filters-help display more information about the liblzma filter string\n"
+" syntax and exit."
+msgstr ""
+" --filters-help weitere Information über die Liblzma-Filterketten-\n"
+" syntax anzeigen und beenden."
+
+#: src/xz/message.c
msgid ""
"\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
@@ -866,7 +932,7 @@ msgstr ""
" depth=ZAHL Maximale Suchtiefe; 0=automatisch\n"
" (Voreinstellung)"
-#: src/xz/message.c:1082
+#: src/xz/message.c
msgid ""
"\n"
" --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
@@ -876,6 +942,7 @@ msgid ""
" --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
" --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
" --sparc[=OPTS] SPARC BCJ filter\n"
+" --riscv[=OPTS] RISC-V BCJ filter\n"
" Valid OPTS for all BCJ filters:\n"
" start=NUM start offset for conversions (default=0)"
msgstr ""
@@ -887,11 +954,12 @@ msgstr ""
" --powerpc[=OPTIONEN] PowerPC-BCJ-Filter (nur Big Endian)\n"
" --ia64[=OPTIONEN] IA64-(Itanium-)BCJ-Filter\n"
" --sparc[=OPTIONEN] SPARC-BCJ-Filter\n"
+" --riscv[=OPTIONEN] RISC-V-BCJ-Filter\n"
" Zulässige Optionen für alle BCJ-Filter:\n"
" start=ZAHL Startversatz für Konversion\n"
" (Voreinstellung=0)"
-#: src/xz/message.c:1095
+#: src/xz/message.c
msgid ""
"\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n"
@@ -904,7 +972,7 @@ msgstr ""
" dist=NUM Abstand zwischen den Bytes, die voneinander\n"
" subtrahiert werden (1-256; 1)"
-#: src/xz/message.c:1103
+#: src/xz/message.c
msgid ""
"\n"
" Other options:\n"
@@ -912,7 +980,7 @@ msgstr ""
"\n"
" Andere Optionen:\n"
-#: src/xz/message.c:1106
+#: src/xz/message.c
msgid ""
" -q, --quiet suppress warnings; specify twice to suppress errors too\n"
" -v, --verbose be verbose; specify twice for even more verbose"
@@ -922,17 +990,17 @@ msgstr ""
" -v, --verbose Ausführlicher Modus; wird diese Option zweimal\n"
" angegeben, erfolgen noch ausführlichere Ausgaben"
-#: src/xz/message.c:1111
+#: src/xz/message.c
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:1113
+#: src/xz/message.c
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr ""
" --robot Maschinenlesbare Meldungen ausgeben (nützlich für\n"
" Skripte)"
-#: src/xz/message.c:1116
+#: src/xz/message.c
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
@@ -941,7 +1009,7 @@ msgstr ""
" Speicherbedarfsbegrenzung anzeigen\n"
" und das Programm beenden"
-#: src/xz/message.c:1119
+#: src/xz/message.c
msgid ""
" -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit"
@@ -950,7 +1018,7 @@ msgstr ""
" Optionen)\n"
" -H, --long-help Diese lange Hilfe anzeigen und das Programm beenden"
-#: src/xz/message.c:1123
+#: src/xz/message.c
msgid ""
" -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)"
@@ -959,11 +1027,12 @@ msgstr ""
" -H, --long-help Die lange Hilfe (und damit auch fortgeschrittene\n"
" Optionen) anzeigen"
-#: src/xz/message.c:1128
+#: src/xz/message.c
msgid " -V, --version display the version number and exit"
msgstr " -V, --version Versionsnummer anzeigen und beenden"
-#: src/xz/message.c:1130
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
+#, c-format
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
@@ -976,90 +1045,127 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks.
-#: src/xz/message.c:1136
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr "Melden Sie Fehler an <%s> (auf Englisch oder Finnisch).\n"
-#: src/xz/message.c:1138
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "%s home page: <%s>\n"
msgstr "%s-Homepage: <%s>\n"
-#: src/xz/message.c:1142
+#: src/xz/message.c
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
+#: src/xz/message.c
+msgid ""
+"Filter chains are set using the --filters=FILTERS or\n"
+"--filters1=FILTERS ... --filters9=FILTERS options. Each filter in the chain\n"
+"can be separated by spaces or '--'. Alternatively a preset <0-9>[e] can be\n"
+"specified instead of a filter chain.\n"
+msgstr ""
+"Filterketten werden durch Setzen der Optionen --filters=FILTER oder\n"
+"--filters1=FILTER … --filters9=FILTER definiert. Die Filter können\n"
+"innerhalb der Kette durch Leerzeichen oder »--« getrennt werden. Alternativ\n"
+"kann eine Voreinstellung <0-9>[e] anstelle einer Filterkette verwendet\n"
+"werden.\n"
+
+#: src/xz/message.c
+msgid "The supported filters and their options are:"
+msgstr "Folgende Filterkettem und Filteroptionen werden unterstützt:"
+
+#: src/xz/options.c
#, c-format
-msgid "%s: Options must be `name=value' pairs separated with commas"
+msgid "%s: Options must be 'name=value' pairs separated with commas"
msgstr "%s: Optionen müssen in der Form »Name=Wert« gegeben werden, getrennt durch Kommata"
-#: src/xz/options.c:93
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option name"
msgstr "%s: Ungültiger Optionsname"
-#: src/xz/options.c:113
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option value"
msgstr "%s: Ungültiger Optionswert"
-#: src/xz/options.c:248
+#: src/xz/options.c
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "LZMA1/LZMA2-Voreinstellung wird nicht unterstützt: %s"
-#: src/xz/options.c:356
+#: src/xz/options.c
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/suffix.c:160
+#: src/xz/suffix.c
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: Dateiname hat unbekanntes Suffix, wird übersprungen"
-#: src/xz/suffix.c:181
+#: src/xz/suffix.c
#, c-format
-msgid "%s: File already has `%s' suffix, skipping"
+msgid "%s: File already has '%s' suffix, skipping"
msgstr "%s: Datei hat bereits das Suffix »%s«, wird übersprungen"
-#: src/xz/suffix.c:388
+#: src/xz/suffix.c
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s: Ungültige Dateiendung"
-#: src/xz/util.c:107
+#: src/xz/util.c
#, c-format
msgid "%s: Value is not a non-negative decimal integer"
msgstr "%s: Wert ist keine nicht-negative dezimale Ganzzahl"
-#: src/xz/util.c:149
+#: src/xz/util.c
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s: Ungültige Einheit"
-#: src/xz/util.c:151
-msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+#: src/xz/util.c
+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:168
+#: src/xz/util.c
#, c-format
-msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+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:270
+#: src/xz/util.c
msgid "Compressed data cannot be read from a terminal"
msgstr "Komprimierte Daten können nicht vom Terminal gelesen werden"
-#: src/xz/util.c:283
+#: src/xz/util.c
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:40
+#: src/lzmainfo/lzmainfo.c
+#, c-format
+msgid ""
+"Usage: %s [--help] [--version] [FILE]...\n"
+"Show information stored in the .lzma file header"
+msgstr ""
+"Aufruf: %s [--help] [--version] [DATEI] …\n"
+"Im .lzma-Dateikopf gespeicherte Informationen anzeigen"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "File is too small to be a .lzma file"
+msgstr "Die Datei ist zu klein, um eine .lzma-Datei zu sein"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "Not a .lzma file"
+msgstr "Keine .lzma-Datei"
+
+#: src/common/tuklib_exit.c
msgid "Writing to standard output failed"
msgstr "Schreiben in die Standardausgabe fehlgeschlagen"
-#: src/common/tuklib_exit.c:43
+#: src/common/tuklib_exit.c
msgid "Unknown error"
msgstr "Unbekannter Fehler"
+
+#~ msgid "Failed to enable the sandbox"
+#~ msgstr "Sandbox konnte nicht aktiviert werden"
diff --git a/po/eo.gmo b/po/eo.gmo
index 2948f08..9af2151 100644
--- a/po/eo.gmo
+++ b/po/eo.gmo
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index 23a1b01..5377ac9 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -1,13 +1,15 @@
+# SPDX-License-Identifier: 0BSD
+#
# Esperanto translations for xz package.
-# This file is put in the public domain.
-# Keith Bowes <zooplah@gmail.com>, 2019, 2023.
+# This file is published under the BSD Zero Clause License.
+# Keith Bowes <zooplah@gmail.com>, 2019, 2023–2024.
#
msgid ""
msgstr ""
-"Project-Id-Version: xz 5.4.4-pre1\n"
+"Project-Id-Version: xz 5.6.0-pre2\n"
"Report-Msgid-Bugs-To: xz@tukaani.org\n"
-"POT-Creation-Date: 2023-10-31 22:33+0800\n"
-"PO-Revision-Date: 2023-08-26 11:30-0400\n"
+"POT-Creation-Date: 2024-05-29 17:41+0300\n"
+"PO-Revision-Date: 2024-02-24 00:16-0500\n"
"Last-Translator: Keith Bowes <zooplah@gmail.com>\n"
"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
"Language: eo\n"
@@ -17,142 +19,170 @@ msgstr ""
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/xz/args.c:77
+#: src/xz/args.c
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr "%s: Nevalida parametro por --block-list"
-#: src/xz/args.c:87
+#: src/xz/args.c
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s: Tro da argumentoj por --block-list"
-#: src/xz/args.c:116
+#: src/xz/args.c
+#, c-format
+msgid "In --block-list, block size is missing after filter chain number '%c:'"
+msgstr "En --block-list, la blokgrando mankas post numero de la filtrila ĉeno '%c:'"
+
+#: src/xz/args.c
msgid "0 can only be used as the last element in --block-list"
msgstr "0 povas nur esti uzata kiel la lasta elemento en --block-list"
-#: src/xz/args.c:451
+#: src/xz/args.c
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s: Nekonata dosierformata tipo"
-#: src/xz/args.c:474 src/xz/args.c:482
+#: src/xz/args.c
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s: Nekomprenata tipo de integra kontrolo"
-#: src/xz/args.c:518
-msgid "Only one file can be specified with `--files' or `--files0'."
-msgstr "Nur oni dosiero estas specifebla per `--files' aŭ `--files0'."
+#: src/xz/args.c
+msgid "Only one file can be specified with '--files' or '--files0'."
+msgstr "Nur unu dosiero estas specifebla per '--files' aŭ '--files0'."
#. TRANSLATORS: This is a translatable
#. string because French needs a space
#. before the colon ("%s : %s").
-#: src/xz/args.c:533 src/xz/coder.c:692 src/xz/coder.c:708 src/xz/coder.c:968
-#: src/xz/coder.c:971 src/xz/file_io.c:605 src/xz/file_io.c:679
-#: src/xz/file_io.c:769 src/xz/file_io.c:940 src/xz/list.c:369
-#: src/xz/list.c:415 src/xz/list.c:477 src/xz/list.c:581 src/xz/list.c:590
+#: src/xz/args.c src/xz/coder.c src/xz/file_io.c src/xz/list.c
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: src/xz/args.c:589
+#: src/xz/args.c
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "La medivariablo %s enhavas troajn argumentojn"
-#: src/xz/args.c:691
+#: src/xz/args.c
msgid "Compression support was disabled at build time"
msgstr "Rego de kunpremado estas malaktivigita dum muntotempo"
-#: src/xz/args.c:698
+#: src/xz/args.c
msgid "Decompression support was disabled at build time"
msgstr "Rego de malkunpremado estas malaktivigita dum muntotempo"
-#: src/xz/args.c:704
+#: src/xz/args.c
msgid "Compression of lzip files (.lz) is not supported"
msgstr "Ne povas kunpremi lzip-dosierojn (.lz)"
-#: src/xz/args.c:735
+#: src/xz/args.c
+msgid "--block-list is ignored unless compressing to the .xz format"
+msgstr "--block-list estas ignorata se ne kunpremas al la formato .xz"
+
+#: src/xz/args.c
msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "Kun --format=raw, --suffix=.SUF estas postulata se ne skribi al la ĉefeligujo"
-#: src/xz/coder.c:115
+#: src/xz/coder.c
msgid "Maximum number of filters is four"
msgstr "Maksimuma nombra da filtriloj estas kvar"
-#: src/xz/coder.c:135
+#: src/xz/coder.c
+#, c-format
+msgid "Error in --filters%s=FILTERS option:"
+msgstr "Erora en la --filters%s=FILTRILOJ elekto:"
+
+#: src/xz/coder.c
msgid "Memory usage limit is too low for the given filter setup."
msgstr "Memoruzada limigo estas tro malgranda por la donita filtrila elekto."
-#: src/xz/coder.c:170
+#: src/xz/coder.c
+#, c-format
+msgid "filter chain %u used by --block-list but not specified with --filters%u="
+msgstr "filtrila ĉeno %u uzata de --block-list sed ne specifita per --filters%u="
+
+#: src/xz/coder.c
msgid "Using a preset in raw mode is discouraged."
msgstr "Uzi aprioraĵon en kruda reĝimo estas malkonsilinda."
-#: src/xz/coder.c:172
+#: src/xz/coder.c
msgid "The exact options of the presets may vary between software versions."
msgstr "La ĝustaj elektoj de la aprioraĵoj povas varii inter programoj eldonoj."
-#: src/xz/coder.c:195
+#: src/xz/coder.c
msgid "The .lzma format supports only the LZMA1 filter"
msgstr "La .lzma-formato komprenas sole la filtrilon LZMA1"
-#: src/xz/coder.c:203
+#: src/xz/coder.c
msgid "LZMA1 cannot be used with the .xz format"
msgstr "LZMA ne estas uzebla por la .xz-formato"
-#: src/xz/coder.c:220
-msgid "The filter chain is incompatible with --flush-timeout"
-msgstr "La filtrila ĉeno estas nekongrua kun --flush-timeout"
+#: src/xz/coder.c
+#, c-format
+msgid "Filter chain %u is incompatible with --flush-timeout"
+msgstr "La filtrila ĉeno %u estas nekongrua kun --flush-timeout"
-#: src/xz/coder.c:226
+#: src/xz/coder.c
msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr "Ŝanĝas al unufadena reĝimo pro --flush-timeout"
-#: src/xz/coder.c:250
+#: src/xz/coder.c
+#, c-format
+msgid "Unsupported options in filter chain %u"
+msgstr "Nekomprenataj elektoj en filtrila ĉeno %u"
+
+#: src/xz/coder.c
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "Uzas ĝis %<PRIu32> fadenoj"
-#: src/xz/coder.c:266
+#: src/xz/coder.c
msgid "Unsupported filter chain or filter options"
msgstr "Nekomprenata filtrila ĉeno aŭ filtrilaj elektoj"
-#: src/xz/coder.c:278
+#: src/xz/coder.c
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "Malkunpremado postulos %s megabajtojn da memoro."
-#: src/xz/coder.c:310
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgstr "Malpliigis la nombron da fadenoj de %s ĝis %s por ne superi la memoruzadan limigo de %s megabajtoj"
-#: src/xz/coder.c:330
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway."
msgstr "Malpliigis la nombron da fadenoj de %s ĝis unu. La aŭtomata memoruzada limigo de %s megabajtoj ankoraŭ estas superata. %s megabajtoj da memoro estas postulata. Senkonsidere daŭrigas."
-#: src/xz/coder.c:357
+#: src/xz/coder.c
#, c-format
msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB"
msgstr "Ŝanĝas al unufadena reĝimo por ne superi la memoruzadan limigon de %s megabajtoj"
-#: src/xz/coder.c:412
+#: src/xz/coder.c
#, c-format
msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
msgstr "Alĝŭstigis vortara grando de LZMA%c de %s megabajtoj ĝis %s megabajtoj por ne superi la memoruzadan limigon de %s megabajtoj"
-#: src/xz/file_io.c:110 src/xz/file_io.c:118
+#: src/xz/coder.c
+#, c-format
+msgid "Adjusted LZMA%c dictionary size for --filters%u from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgstr "Alĝustigis vortara grando de LZMA%c por --filters%u de %s megabajtoj ĝis %s megabajtoj por ne superi la memoruzadan limigon de %s megabajtoj"
+
+#: src/xz/coder.c
+#, c-format
+msgid "Error changing to filter chain %u: %s"
+msgstr "Eraro dum ŝanĝiĝo al filtrila ĉeno %u: %s"
+
+#: src/xz/file_io.c
#, c-format
msgid "Error creating a pipe: %s"
msgstr "Eraro dum krei dukton: %s"
-#: src/xz/file_io.c:252
-msgid "Failed to enable the sandbox"
-msgstr "Malsukcesis aktivigi la sablujon"
-
-#: src/xz/file_io.c:294
+#: src/xz/file_io.c
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s: poll() malsukcesis: %s"
@@ -167,252 +197,252 @@ msgstr "%s: poll() malsukcesis: %s"
#. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously
#. shouldn't be removed.
-#: src/xz/file_io.c:361
+#: src/xz/file_io.c
#, c-format
msgid "%s: File seems to have been moved, not removing"
msgstr "%s: Dosiero ŝajne estis movita, ne forigos"
-#: src/xz/file_io.c:368 src/xz/file_io.c:924
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: Ne eblas forigi: %s"
-#: src/xz/file_io.c:394
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: Ne eblas agordi la dosieran estron: %s"
-#: src/xz/file_io.c:407
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: Ne eblas agordi la dosieran grupon: %s"
-#: src/xz/file_io.c:426
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: Ne eblas agordi la dosierajn atingopermesojn: %s"
-#: src/xz/file_io.c:552
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "Eraro dum atingi la dosierstatajn flagojn de ĉefenigujon: %s"
-#: src/xz/file_io.c:610 src/xz/file_io.c:672
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: Estas simbola ligilo, preterpasas"
-#: src/xz/file_io.c:701
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: Estas dosierujo, preterpasas"
-#: src/xz/file_io.c:707
+#: src/xz/file_io.c
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: Ne regula dosiero, preterpasas"
-#: src/xz/file_io.c:724
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s: Dosiero havas setuid- aŭ setgid-biton, preterpasas"
-#: src/xz/file_io.c:731
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s: Dosiero havas glueman biton, preterpasas"
-#: src/xz/file_io.c:738
+#: src/xz/file_io.c
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s: Enmeta dosiero havas pli ol rektan ligilon, preterpasas"
-#: src/xz/file_io.c:780
+#: src/xz/file_io.c
msgid "Empty filename, skipping"
msgstr "Malplena dosiero, preterpasas"
-#: src/xz/file_io.c:834
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "Eraro dum restarigi la statajn flagojn de la ĉefenigujo: %s"
-#: src/xz/file_io.c:882
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "Eraro dum atingi la dosierstatajn flagojn el la ĉefenigujo: %s"
-#: src/xz/file_io.c:1081
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "Eraro dum restarigi la flagon O_APPEND de la ĉefenigujo: %s"
-#: src/xz/file_io.c:1093
+#: src/xz/file_io.c
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: Fermo de la dosiero malsukcesis: %s"
-#: src/xz/file_io.c:1129 src/xz/file_io.c:1391
+#: src/xz/file_io.c
#, c-format
msgid "%s: Seeking failed when trying to create a sparse file: %s"
msgstr "%s: Serĉado malsukcesis dum provi krei maldensan dosieron: %s"
-#: src/xz/file_io.c:1229
+#: src/xz/file_io.c
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: Legeraro: %s"
-#: src/xz/file_io.c:1259
+#: src/xz/file_io.c
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: Eraro dum serĉi la dosieron: %s"
-#: src/xz/file_io.c:1283
+#: src/xz/file_io.c
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: Neatendita dosierfino"
-#: src/xz/file_io.c:1342
+#: src/xz/file_io.c
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: Skriberaro: %s"
-#: src/xz/hardware.c:238
+#: src/xz/hardware.c
msgid "Disabled"
msgstr "Malaktiva"
-#: src/xz/hardware.c:269
+#: src/xz/hardware.c
msgid "Amount of physical memory (RAM):"
msgstr "Kiomo da efektiva memoro (ĉefmemoro)"
-#: src/xz/hardware.c:270
+#: src/xz/hardware.c
msgid "Number of processor threads:"
msgstr "Nombro da procesoraj fadenoj:"
-#: src/xz/hardware.c:271
+#: src/xz/hardware.c
msgid "Compression:"
msgstr "Kunpremo:"
-#: src/xz/hardware.c:272
+#: src/xz/hardware.c
msgid "Decompression:"
msgstr "Malkunmpreno:"
-#: src/xz/hardware.c:273
+#: src/xz/hardware.c
msgid "Multi-threaded decompression:"
msgstr "Plurfadena malkunpremado:"
-#: src/xz/hardware.c:274
+#: src/xz/hardware.c
msgid "Default for -T0:"
msgstr "Aprioraĵo por -T0:"
-#: src/xz/hardware.c:292
+#: src/xz/hardware.c
msgid "Hardware information:"
msgstr "Aparataro-informoj:"
-#: src/xz/hardware.c:299
+#: src/xz/hardware.c
msgid "Memory usage limits:"
msgstr "Memoruzada limigoj:"
-#: src/xz/list.c:68
+#: src/xz/list.c
msgid "Streams:"
msgstr "Fluoj:"
-#: src/xz/list.c:69
+#: src/xz/list.c
msgid "Blocks:"
msgstr "Blokoj:"
-#: src/xz/list.c:70
+#: src/xz/list.c
msgid "Compressed size:"
msgstr "Kunpremita grando:"
-#: src/xz/list.c:71
+#: src/xz/list.c
msgid "Uncompressed size:"
msgstr "Nekunpremita grando:"
-#: src/xz/list.c:72
+#: src/xz/list.c
msgid "Ratio:"
msgstr "Proporcio:"
-#: src/xz/list.c:73
+#: src/xz/list.c
msgid "Check:"
msgstr "Kontrolo:"
-#: src/xz/list.c:74
+#: src/xz/list.c
msgid "Stream Padding:"
msgstr "Fluo-remburo:"
-#: src/xz/list.c:75
+#: src/xz/list.c
msgid "Memory needed:"
msgstr "Memoro postulata:"
-#: src/xz/list.c:76
+#: src/xz/list.c
msgid "Sizes in headers:"
msgstr "Grandoj en ĉapoj:"
-#: src/xz/list.c:79
+#: src/xz/list.c
msgid "Number of files:"
msgstr "Nombro da dosieroj:"
-#: src/xz/list.c:122
+#: src/xz/list.c
msgid "Stream"
msgstr "Fluo"
-#: src/xz/list.c:123
+#: src/xz/list.c
msgid "Block"
msgstr "Bloko"
-#: src/xz/list.c:124
+#: src/xz/list.c
msgid "Blocks"
msgstr "Blokoj"
-#: src/xz/list.c:125
+#: src/xz/list.c
msgid "CompOffset"
msgstr "KunpMsam"
-#: src/xz/list.c:126
+#: src/xz/list.c
msgid "UncompOffset"
msgstr "MKunMSam"
-#: src/xz/list.c:127
+#: src/xz/list.c
msgid "CompSize"
msgstr "Kunpgrando"
-#: src/xz/list.c:128
+#: src/xz/list.c
msgid "UncompSize"
msgstr "Mkunpgrando"
-#: src/xz/list.c:129
+#: src/xz/list.c
msgid "TotalSize"
msgstr "KiomGrando"
-#: src/xz/list.c:130
+#: src/xz/list.c
msgid "Ratio"
msgstr "Proporcio"
-#: src/xz/list.c:131
+#: src/xz/list.c
msgid "Check"
msgstr "Kontrolo"
-#: src/xz/list.c:132
+#: src/xz/list.c
msgid "CheckVal"
msgstr "KontVal"
-#: src/xz/list.c:133
+#: src/xz/list.c
msgid "Padding"
msgstr "Remburo"
-#: src/xz/list.c:134
+#: src/xz/list.c
msgid "Header"
msgstr "Ĉapo"
-#: src/xz/list.c:135
+#: src/xz/list.c
msgid "Flags"
msgstr "Flago"
-#: src/xz/list.c:136
+#: src/xz/list.c
msgid "MemUsage"
msgstr "Memuzado"
-#: src/xz/list.c:137
+#: src/xz/list.c
msgid "Filters"
msgstr "Filtriloj"
@@ -420,7 +450,7 @@ msgstr "Filtriloj"
#. This string is used in tables. In older xz version this
#. string was limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:169
+#: src/xz/list.c
msgid "None"
msgstr "Nenio"
@@ -428,60 +458,60 @@ msgstr "Nenio"
#. but the Check ID is known (here 2). In older xz version these
#. strings were limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:175
+#: src/xz/list.c
msgid "Unknown-2"
msgstr "Nekonata-2"
-#: src/xz/list.c:176
+#: src/xz/list.c
msgid "Unknown-3"
msgstr "Nekonata-3"
-#: src/xz/list.c:178
+#: src/xz/list.c
msgid "Unknown-5"
msgstr "Nekonata-5"
-#: src/xz/list.c:179
+#: src/xz/list.c
msgid "Unknown-6"
msgstr "Nekonata-6"
-#: src/xz/list.c:180
+#: src/xz/list.c
msgid "Unknown-7"
msgstr "Nekonata-7"
-#: src/xz/list.c:181
+#: src/xz/list.c
msgid "Unknown-8"
msgstr "Nekonata-8"
-#: src/xz/list.c:182
+#: src/xz/list.c
msgid "Unknown-9"
msgstr "Nekonata-9"
-#: src/xz/list.c:184
+#: src/xz/list.c
msgid "Unknown-11"
msgstr "Nekonata-11"
-#: src/xz/list.c:185
+#: src/xz/list.c
msgid "Unknown-12"
msgstr "Nekonata-12"
-#: src/xz/list.c:186
+#: src/xz/list.c
msgid "Unknown-13"
msgstr "Nekonata-13"
-#: src/xz/list.c:187
+#: src/xz/list.c
msgid "Unknown-14"
msgstr "Nekonata-14"
-#: src/xz/list.c:188
+#: src/xz/list.c
msgid "Unknown-15"
msgstr "Nekonata-15"
-#: src/xz/list.c:351
+#: src/xz/list.c
#, c-format
msgid "%s: File is empty"
msgstr "%s: Dosiero malplenas"
-#: src/xz/list.c:356
+#: src/xz/list.c
#, c-format
msgid "%s: Too small to be a valid .xz file"
msgstr "%s: Tro malgranda por esti valida .xz-dosiero"
@@ -490,64 +520,68 @@ msgstr "%s: Tro malgranda por esti valida .xz-dosiero"
#. 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:731
+#: src/xz/list.c
msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename"
msgstr "Fluoj Blokoj Kunpremita Nekunpremita Propor Kontrol Dosiernomo"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "Yes"
msgstr "Jes"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "No"
msgstr "Ne"
-#: src/xz/list.c:1028 src/xz/list.c:1206
+#: src/xz/list.c
#, c-format
msgid " Minimum XZ Utils version: %s\n"
msgstr " Minimuma eldono de XZ Utils: %s\n"
#. TRANSLATORS: %s is an integer. Only the plural form of this
#. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz".
-#: src/xz/list.c:1179
+#: src/xz/list.c
#, c-format
msgid "%s file\n"
msgid_plural "%s files\n"
msgstr[0] "%s dosiero\n"
msgstr[1] "%s dosieroj\n"
-#: src/xz/list.c:1192
+#: src/xz/list.c
msgid "Totals:"
msgstr "Sumoj:"
-#: src/xz/list.c:1270
+#: src/xz/list.c
msgid "--list works only on .xz files (--format=xz or --format=auto)"
msgstr "--list funkcias nur por .xz-dosierojn (--format=xz aŭ --format=auto)"
-#: src/xz/list.c:1276
+#: src/xz/list.c
+msgid "Try 'lzmainfo' with .lzma files."
+msgstr "Provi la programon 'lzmainfo' por .lzma-dosieroj."
+
+#: src/xz/list.c
msgid "--list does not support reading from standard input"
msgstr "--list ne regas legadon el la ĉefenigujo"
-#: src/xz/main.c:89
+#: src/xz/main.c
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s: Eraro dum legi dosiernomojn: %s"
-#: src/xz/main.c:96
+#: src/xz/main.c
#, c-format
msgid "%s: Unexpected end of input when reading filenames"
msgstr "%s: Neatendita fino de enigo dum legi dosiernomojn"
-#: src/xz/main.c:120
+#: src/xz/main.c
#, c-format
-msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
-msgstr "%s: Nula signo trovita dum legi dosiernomojn; eble vi celis uzi la parametron`--files0' anstataŭ `--files'"
+msgid "%s: Null character found when reading filenames; maybe you meant to use '--files0' instead of '--files'?"
+msgstr "%s: Nula signo trovita dum legi dosiernomojn; eble vi celis uzi la parametron '--files0' anstataŭ '--files'"
-#: src/xz/main.c:188
+#: src/xz/main.c
msgid "Compression and decompression with --robot are not supported yet."
msgstr "Kunpremo kaj malkunmpremo per --robot ankoraŭ ne estas regataj."
-#: src/xz/main.c:266
+#: src/xz/main.c
msgid "Cannot read data from standard input when reading filenames from standard input"
msgstr "Ne eblas legi datumojn el la ĉefenigujo dum legi dosiernomojn el la ĉefenigujo"
@@ -555,89 +589,89 @@ msgstr "Ne eblas legi datumojn el la ĉefenigujo dum legi dosiernomojn el la ĉe
#. 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:670 src/xz/message.c:725
+#: src/xz/message.c
#, c-format
msgid "%s: "
msgstr "%s: "
-#: src/xz/message.c:797 src/xz/message.c:856
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
msgid "Internal error (bug)"
msgstr "Interna programeraro"
-#: src/xz/message.c:804
+#: src/xz/message.c
msgid "Cannot establish signal handlers"
msgstr "Ne eblas establi signalajn traktilojn"
-#: src/xz/message.c:813
+#: src/xz/message.c
msgid "No integrity check; not verifying file integrity"
msgstr "Neniu integra kontrolo; ne certigos dosieran integron"
-#: src/xz/message.c:816
+#: src/xz/message.c
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "Nekomprenata tipo de integra kontrolo; ne certigos dosieran integron"
-#: src/xz/message.c:823
+#: src/xz/message.c
msgid "Memory usage limit reached"
msgstr "Memoruzada limigo atingita"
-#: src/xz/message.c:826
+#: src/xz/message.c
msgid "File format not recognized"
msgstr "Dosierformato ne rekonata"
-#: src/xz/message.c:829
+#: src/xz/message.c
msgid "Unsupported options"
msgstr "Nekomprenataj elektoj"
-#: src/xz/message.c:832
+#: src/xz/message.c
msgid "Compressed data is corrupt"
msgstr "Kunpremitaj datumoj estas koruptaj"
-#: src/xz/message.c:835
+#: src/xz/message.c
msgid "Unexpected end of input"
msgstr "Neatendita fino de enigo"
-#: src/xz/message.c:877
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "%s megabajtoj da memoro estas postulataj. La limigilo estas malaktiva."
-#: src/xz/message.c:905
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr "%s megabajtoj da memoro estas postulata. La limigo estas %s."
-#: src/xz/message.c:924
+#: src/xz/message.c
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: Filtrila ĉeno: %s\n"
-#: src/xz/message.c:935
+#: src/xz/message.c
#, c-format
-msgid "Try `%s --help' for more information."
-msgstr "`%s --help' provindas por pliaj informaj."
+msgid "Try '%s --help' for more information."
+msgstr "'%s --help' por pliaj informaj."
-#: src/xz/message.c:961
+#: src/xz/message.c
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
"Compress or decompress FILEs in the .xz format.\n"
"\n"
msgstr ""
-"Uzado: %s [ELEKTO].. [DOSIERO]...\n"
+"Uzmaniero: %s [ELEKTO].. [DOSIERO]...\n"
"Kunpremi aŭ malkunpremi DOSIEROjN laŭ la .xz-formato.\n"
"\n"
-#: src/xz/message.c:968
+#: src/xz/message.c
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr ""
"Devigitaj parametroj por longaj elektoj estas ankaŭ devigitaj por\n"
"mallongaj elektoj.\n"
-#: src/xz/message.c:972
+#: src/xz/message.c
msgid " Operation mode:\n"
msgstr " Operacia reĝimo:\n"
-#: src/xz/message.c:975
+#: src/xz/message.c
msgid ""
" -z, --compress force compression\n"
" -d, --decompress force decompression\n"
@@ -649,7 +683,7 @@ msgstr ""
" -t, --test certigi la integron de kunpremitan dosieron\n"
" -l, --list listigi informojn pri .xz-dosierojn"
-#: src/xz/message.c:981
+#: src/xz/message.c
msgid ""
"\n"
" Operation modifiers:\n"
@@ -657,7 +691,7 @@ msgstr ""
"\n"
" Operacia modifiloj:\n"
-#: src/xz/message.c:984
+#: src/xz/message.c
msgid ""
" -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\n"
@@ -668,7 +702,7 @@ msgstr ""
" (mal)kunpmremajn ligilojn \n"
" -c, --stdout skribi al la ĉefeligujo kaj ne forigi enigajn dosierojn"
-#: src/xz/message.c:993
+#: src/xz/message.c
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
@@ -677,25 +711,25 @@ msgstr ""
" malkunpremi nur la unuan fluon kaj silente\n"
" ignori eventualajn ceterajn enigajn datumojn"
-#: src/xz/message.c:996
+#: src/xz/message.c
msgid ""
" --no-sparse do not create sparse files when decompressing\n"
-" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
+" -S, --suffix=.SUF use the suffix '.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n"
" omitted, filenames are read from the standard input;\n"
" filenames must be terminated with the newline character\n"
" --files0[=FILE] like --files but use the null character as terminator"
msgstr ""
-" --no-sparse ne krei maldensajn dosierojn dum malkunpremi\n"
-" -S, --suffix=.SUF uzi la sufikson `.SUF' ĉe kunpremataj dosieroj\n"
+" --no-sparse ne krei maldensajn dosierojn dum malkunpremiĝo\n"
+" -S, --suffix=.SUF uzi la sufikson '.SUF' ĉe kunpremataj dosieroj\n"
" --files[=DOSIERO]\n"
-" legi dosiernomojn traktotajn de DOSIERO; se DOSIERO estas\n"
-" forlasita, dosieroj estas legotaj el la ĉefenigujo;\n"
-" dosiernomojn devas finigi novlinio signo\n"
+" legi dosiernomojn traktotajn el DOSIERO; se DOSIERO estas\n"
+" forlasita, dosiernomoj estas legataj el la ĉefenigujo;\n"
+" dosiernomojn devas finigi novlinia signo\n"
" --files0[=DOSIERO]\n"
" kiel --files sed uzi la nulan signon por finigi"
-#: src/xz/message.c:1005
+#: src/xz/message.c
msgid ""
"\n"
" Basic file format and compression options:\n"
@@ -703,23 +737,23 @@ msgstr ""
"\n"
" Bazaj dosierformataj kaj kunpremaj elektoj:\n"
-#: src/xz/message.c:1007
+#: src/xz/message.c
msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n"
-" `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
-" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-" `crc32', `crc64' (default), or `sha256'"
+" 'auto' (default), 'xz', 'lzma', 'lzip', and 'raw'\n"
+" -C, --check=CHECK integrity check type: 'none' (use with caution),\n"
+" 'crc32', 'crc64' (default), or 'sha256'"
msgstr ""
-" -F, --format=FMT dosierformato kodota aŭ malkodato; validaj valoroj estas\n"
-" `auto' (apriora), `xz', `lzma', 'lzip' kaj `raw'\n"
-" -C, --check=KONT tipo de integra kontrolo: `none' (estu atentema),\n"
-" `crc32', `crc64' (apriora) aŭ `sha256'"
+"h -F, --format=FMT dosierformato kodota aŭ malkodata; validaj valoroj estas\n"
+" 'auto' (apriora), 'xz', 'lzma', 'lzip' kaj 'raw'\n"
+" -C, --check=KONT tipo de integra kontrolo: 'none' (estu atentema),\n"
+" 'crc32', 'crc64' (apriora) aŭ 'sha256'"
-#: src/xz/message.c:1012
+#: src/xz/message.c
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr " --ignore-check ne certigi la integran kontrolon dum malkunpremo"
-#: src/xz/message.c:1016
+#: src/xz/message.c
msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!"
@@ -727,7 +761,7 @@ msgstr ""
" -0 ... -9 kunpremnivelo; apriore 6; pripensu memoruzadon antaŭ ol\n"
" uzi la nivelojn 7-9!"
-#: src/xz/message.c:1020
+#: src/xz/message.c
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
@@ -736,16 +770,16 @@ msgstr ""
" ĉefprocesoran tempon; ne influas la memorajn postulojn\n"
" de malkunpremo"
-#: src/xz/message.c:1024
+#: src/xz/message.c
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"
+" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
+" as many threads as there are processor cores"
msgstr ""
" -T, --threads=NOMBRO\n"
-" uzi maksimume NOMBRO da fadenoj; apriore 1; 0 por\n"
-" uzi fadenojn samnombrajn kiel procesoraj kernoj"
+" uzi maksimume NOMBRO da fadenoj; apriore 0, kiu\n"
+" uzas fadenojn samnombrajn kiel procesorajn kernojn"
-#: src/xz/message.c:1029
+#: src/xz/message.c
msgid ""
" --block-size=SIZE\n"
" start a new .xz block after every SIZE bytes of input;\n"
@@ -755,17 +789,21 @@ msgstr ""
" komenci novan .xz-blokon post ĉiu GRANDO bajtoj da enigo;\n"
" uzi por agordi la blokan grandon por kunfadena kunpremo"
-#: src/xz/message.c:1033
+#: src/xz/message.c
msgid ""
-" --block-list=SIZES\n"
+" --block-list=BLOCKS\n"
" start a new .xz block after the given comma-separated\n"
-" intervals of uncompressed data"
+" intervals of uncompressed data; optionally, specify a\n"
+" filter chain number (0-9) followed by a ':' before the\n"
+" uncompressed data size"
msgstr ""
-" --block-list=GRANDOJ\n"
+" --block-list=BLOKOJ\n"
" komenci novan .xz-blokon post la donitajn intertempojn de\n"
-" nekunpremitaj datumoj, apartigataj de komoj"
+" nekunpremitaj datumoj, apartigataj de komoj. Laŭvole\n"
+" specifi numero (0-9) de filtrila ĉeno kaj poste ':' antaŭ\n"
+" la malkunpremita datuma grando"
-#: src/xz/message.c:1037
+#: src/xz/message.c
msgid ""
" --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n"
@@ -777,7 +815,7 @@ msgstr ""
" okazis post la antaŭan elbufrigo kaj legi pliajn enigojn\n"
" paŭzigus, ĉiuj atendataj datumoj estas elbufrigataj"
-#: src/xz/message.c:1043
+#: src/xz/message.c
#, no-c-format
msgid ""
" --memlimit-compress=LIMIT\n"
@@ -796,7 +834,7 @@ msgstr ""
" kunfadena kunpmero aŭ ĉiuj el tiuj; LIMIGO estas\n"
" laŭ bajtoj, % da ĉefmemoro, aŭ 0 por aprioraĵoj"
-#: src/xz/message.c:1052
+#: src/xz/message.c
msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards"
@@ -804,7 +842,7 @@ msgstr ""
" --no-adjust se kunprema agordo superas la memoruzadan limigon\n"
" montri eraron anstataŭ malgrandigi la agordaĵon"
-#: src/xz/message.c:1058
+#: src/xz/message.c
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
@@ -812,7 +850,35 @@ msgstr ""
"\n"
" Propra filtrila ĉeno por kunpremo (alternativaj por uzi antaŭagordaĵon):"
-#: src/xz/message.c:1067
+#: src/xz/message.c
+msgid ""
+"\n"
+" --filters=FILTERS set the filter chain using the liblzma filter string\n"
+" syntax; use --filters-help for more information"
+msgstr ""
+"\n"
+" --filters=FILTRILOJ agordi la filtrilan ĉenan uzanta la sintakso de la\n"
+" lzma-filtrila ĉeno. --filters-help or pliaj informoj"
+
+#: src/xz/message.c
+msgid ""
+" --filters1=FILTERS ... --filters9=FILTERS\n"
+" set additional filter chains using the liblzma filter\n"
+" string syntax to use with --block-list"
+msgstr ""
+" --filters=FILTRILOJ ... --filters9=FILTRILOJ\n"
+" agordi aldonajn filtrilajn ĉenojn por uzi kun\n"
+" --block-list per la sintakso de liblzma-filtrila ĉeno"
+
+#: src/xz/message.c
+msgid ""
+" --filters-help display more information about the liblzma filter string\n"
+" syntax and exit."
+msgstr ""
+" --filters-help montri pliajn informojn pri la sintakso de la\n"
+" liblzma-filtrila ĉeno kaj poste eliri."
+
+#: src/xz/message.c
msgid ""
"\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
@@ -845,7 +911,7 @@ msgstr ""
" depth=NUM maksimuma profundo de serĉo; 0=aŭtomata\n"
" (apriore)"
-#: src/xz/message.c:1082
+#: src/xz/message.c
msgid ""
"\n"
" --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
@@ -855,11 +921,12 @@ msgid ""
" --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
" --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
" --sparc[=OPTS] SPARC BCJ filter\n"
+" --riscv[=OPTS] RISC-V BCJ filter\n"
" Valid OPTS for all BCJ filters:\n"
" start=NUM start offset for conversions (default=0)"
msgstr ""
"\n"
-" --x86[=ELEKTOJ] x86-BCJ-filtrilo (32-bita and 64-bita)\n"
+" --x86[=ELEKTOJ] x86-BCJ-filtrilo (32-bita kaj 64-bita)\n"
" --arm[=ELEKTOJ] ARM-BCJ-filtrilo\n"
" --armthumb[=ELEKTOJ]\n"
" ARM-Thumb-BCJ-filtrilo\n"
@@ -867,10 +934,11 @@ msgstr ""
" --powerpc[=ELEKTOJ] PowerPC-BCJ-filtrilo (nur pezkomenca)\n"
" --ia64[=ELEKTOJ] IA-64 (Itanium)-BCJ-filtrilo\n"
" --sparc[=ELEKTOJ] SPARC-BCJ-filtrilo\n"
+" --riscv[=ELEKTOJ] RISC-V_BCJ-filtrilo\n"
" Validaj ELEKTOJ por ĉiuj BCJ-filters:\n"
" start=NOMBRO komenca deŝovo por konvertoj (apriore 0)"
-#: src/xz/message.c:1095
+#: src/xz/message.c
msgid ""
"\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n"
@@ -882,7 +950,7 @@ msgstr ""
" dist=NOMBRO distanco inter bajtoj subtrahataj de unu\n"
" la alia (1-256; 1)"
-#: src/xz/message.c:1103
+#: src/xz/message.c
msgid ""
"\n"
" Other options:\n"
@@ -890,7 +958,7 @@ msgstr ""
"\n"
" Aliaj elektoj:\n"
-#: src/xz/message.c:1106
+#: src/xz/message.c
msgid ""
" -q, --quiet suppress warnings; specify twice to suppress errors too\n"
" -v, --verbose be verbose; specify twice for even more verbose"
@@ -899,15 +967,15 @@ msgstr ""
" -v, --verbose eligi superfluajn informojn; uzu dufoje por pliigi la\n"
" superfluecon"
-#: src/xz/message.c:1111
+#: src/xz/message.c
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr " -Q, --no-warn avertoj ne influu la eliran staton"
-#: src/xz/message.c:1113
+#: src/xz/message.c
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr " --robot uzi mesaĝojn facile analizeblaj per skriptoj"
-#: src/xz/message.c:1116
+#: src/xz/message.c
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
@@ -915,7 +983,7 @@ msgstr ""
" --info-memory montri la totalan kiomon de la ĉefmemoro kaj la nune\n"
" aktivaj memoruzadaj limigoj, kaj finiĝi"
-#: src/xz/message.c:1119
+#: src/xz/message.c
msgid ""
" -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit"
@@ -924,7 +992,7 @@ msgstr ""
" elektojn)\n"
" -H, --long-help montri la longan helpon kaj finiĝi"
-#: src/xz/message.c:1123
+#: src/xz/message.c
msgid ""
" -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)"
@@ -933,11 +1001,12 @@ msgstr ""
" -H, --long-help montri la longan helpon (listigas ankaŭ la altnivelajn\n"
" elektojn)"
-#: src/xz/message.c:1128
+#: src/xz/message.c
msgid " -V, --version display the version number and exit"
msgstr " -V, --version montri la eldonan numeron kaj finiĝi"
-#: src/xz/message.c:1130
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
+#, c-format
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
@@ -949,90 +1018,126 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks.
-#: src/xz/message.c:1136
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr "Raporti programerarojn al <%s> (en la angla aŭ la suoma).\n"
-#: src/xz/message.c:1138
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "%s home page: <%s>\n"
msgstr "%s ĉefpaĝo: <%s>\n"
-#: src/xz/message.c:1142
+#: src/xz/message.c
msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
msgstr "ĈI TIU ESTAS DISVOLVA REDAKCIO, NE CELATA POR ĈIUTAGA UZADO."
-#: src/xz/options.c:86
+#: src/xz/message.c
+msgid ""
+"Filter chains are set using the --filters=FILTERS or\n"
+"--filters1=FILTERS ... --filters9=FILTERS options. Each filter in the chain\n"
+"can be separated by spaces or '--'. Alternatively a preset <0-9>[e] can be\n"
+"specified instead of a filter chain.\n"
+msgstr ""
+"Filtrilaj ĉenoj estas agorditaj per la elektoj --filters=FIILTRILOJ aŭ\n"
+"--filters1=FILTRILOJ ... --filters9=FILTRILOJ. Ĉiu filtrilo en la ĉeno\n"
+"estas apartigebla per spacetoj aŭ '--'. Alternative antaŭargordo <0-9>[e]\n"
+"anstataŭ filtrila ĉeno estas specifebla.\n"
+
+#: src/xz/message.c
+msgid "The supported filters and their options are:"
+msgstr "La komprenataj filtriloj aŭ filtrilaj elektoj estas:"
+
+#: src/xz/options.c
#, c-format
-msgid "%s: Options must be `name=value' pairs separated with commas"
-msgstr "%s: Elektoj devas esti paroj de `name=value`, apartigitaj per komoj"
+msgid "%s: Options must be 'name=value' pairs separated with commas"
+msgstr "%s: Elektoj devas esti paroj de 'name=value', apartigitaj per komoj"
-#: src/xz/options.c:93
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option name"
msgstr "%s: Nevalida elekto-nomo"
-#: src/xz/options.c:113
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option value"
msgstr "%s: Nevalida elekto-valoro"
-#: src/xz/options.c:248
+#: src/xz/options.c
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "Nevalida LZMA1/LZMA2 antaŭagordaĵo: %s"
-#: src/xz/options.c:356
+#: src/xz/options.c
msgid "The sum of lc and lp must not exceed 4"
msgstr "La sumo de lc kaj lp devas ne esti pli ol 4"
-#: src/xz/suffix.c:160
+#: src/xz/suffix.c
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: Dosiernomo havas nekonatan sufikson, preterpasas"
-#: src/xz/suffix.c:181
+#: src/xz/suffix.c
#, c-format
-msgid "%s: File already has `%s' suffix, skipping"
-msgstr "%s: Dosiero jam havas la sufikson `%s', preterpasas"
+msgid "%s: File already has '%s' suffix, skipping"
+msgstr "%s: Dosiero jam havas la sufikson '%s', preterpasas"
-#: src/xz/suffix.c:388
+#: src/xz/suffix.c
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s: Nevalida dosiernoma sufikso"
-#: src/xz/util.c:107
+#: src/xz/util.c
#, c-format
msgid "%s: Value is not a non-negative decimal integer"
msgstr "%s: Valoro ne estas nenegativa dekuma entjero"
-#: src/xz/util.c:149
+#: src/xz/util.c
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s: Nevalida multiplika sufikso"
-#: src/xz/util.c:151
-msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
-msgstr "Validaj sufiksoj estas `KiB' (2^10), `MiB' (2^20) kaj `GiB' (2^30)."
+#: src/xz/util.c
+msgid "Valid suffixes are 'KiB' (2^10), 'MiB' (2^20), and 'GiB' (2^30)."
+msgstr "Validaj sufiksoj estas 'KiB' (2^10), 'MiB' (2^20) kaj 'GiB' (2^30)."
-#: src/xz/util.c:168
+#: src/xz/util.c
#, c-format
-msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
-msgstr "Valoro de la elekto `%s' devas esti inkluzive inter %<PRIu64> kaj %<PRIu64>"
+msgid "Value of the option '%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+msgstr "Valoro de la elekto '%s' devas esti inkluzive inter %<PRIu64> kaj %<PRIu64>"
-#: src/xz/util.c:270
+#: src/xz/util.c
msgid "Compressed data cannot be read from a terminal"
msgstr "Kunpremitaj datumoj ne povas esti ligataj de terminalo"
-#: src/xz/util.c:283
+#: src/xz/util.c
msgid "Compressed data cannot be written to a terminal"
-msgstr "Kunpmremitaj datumoj ne povas esti skribataj al terminalo"
+msgstr "Kunpremitaj datumoj ne povas esti skribataj al terminalo"
+
+#: src/lzmainfo/lzmainfo.c
+#, c-format
+msgid ""
+"Usage: %s [--help] [--version] [FILE]...\n"
+"Show information stored in the .lzma file header"
+msgstr ""
+"Uzmaniero: %s [--help] [--version] [DOSIERO]...\n"
+"Montri informojn konservitaj en la .lzma-dosiera ĉapo"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "File is too small to be a .lzma file"
+msgstr "Dosiero malgrandas por esti .lzma-dosiero"
-#: src/common/tuklib_exit.c:40
+#: src/lzmainfo/lzmainfo.c
+msgid "Not a .lzma file"
+msgstr "Ne .lzma-dosiero"
+
+#: src/common/tuklib_exit.c
msgid "Writing to standard output failed"
msgstr "Skribi al la ĉefeligujo malsukcesis"
-#: src/common/tuklib_exit.c:43
+#: src/common/tuklib_exit.c
msgid "Unknown error"
msgstr "Nekonata eraro"
+
+#~ msgid "Failed to enable the sandbox"
+#~ msgstr "Malsukcesis aktivigi la sablujon"
diff --git a/po/es.gmo b/po/es.gmo
index e8eeddb..2da7867 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index 41d2c09..6069b77 100644
--- a/po/es.po
+++ b/po/es.po
@@ -1,13 +1,16 @@
-# Spanish translation for xz-5.4.4-pre1.
-# This file is put in the public domain.
-# Cristian Othón Martínez Vera <cfuga@cfuga.mx>, 2022, 2023.
+# SPDX-License-Identifier: 0BSD
+#
+# Spanish translation for xz-5.6.0-pre2.
+# Copyright (C) 2024 The XZ Utils authors and contributors
+# This file is published under the BSD Zero Clause License.
+# Cristian Othón Martínez Vera <cfuga@cfuga.mx>, 2022, 2023, 2024.
#
msgid ""
msgstr ""
-"Project-Id-Version: xz 5.4.4-pre1\n"
+"Project-Id-Version: xz 5.6.0-pre2\n"
"Report-Msgid-Bugs-To: xz@tukaani.org\n"
-"POT-Creation-Date: 2023-10-31 22:33+0800\n"
-"PO-Revision-Date: 2023-07-19 11:31-0600\n"
+"POT-Creation-Date: 2024-05-29 17:41+0300\n"
+"PO-Revision-Date: 2024-02-16 09:36-0600\n"
"Last-Translator: Cristian Othón Martínez Vera <cfuga@cfuga.mx>\n"
"Language-Team: Spanish <es@tp.org.es>\n"
"Language: es\n"
@@ -17,142 +20,170 @@ msgstr ""
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/xz/args.c:77
+#: src/xz/args.c
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr "%s: Argumento inválido para --block-list"
-#: src/xz/args.c:87
+#: src/xz/args.c
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s: Demasiados argumentos para --block-list"
-#: src/xz/args.c:116
+#: src/xz/args.c
+#, c-format
+msgid "In --block-list, block size is missing after filter chain number '%c:'"
+msgstr "En --block-list, falta el tamaño de bloque después del número de cadena de filtros '%c:'"
+
+#: src/xz/args.c
msgid "0 can only be used as the last element in --block-list"
msgstr "0 solo se puede usar como el último elemento en --block-list"
-#: src/xz/args.c:451
+#: src/xz/args.c
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s: Tipo de formato de fichero desconocido"
-#: src/xz/args.c:474 src/xz/args.c:482
+#: src/xz/args.c
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s: No se admite el tipo de verificación de integridad"
-#: src/xz/args.c:518
-msgid "Only one file can be specified with `--files' or `--files0'."
-msgstr "Solo se puede especificar un fichero con `--files' o `--files0'."
+#: src/xz/args.c
+msgid "Only one file can be specified with '--files' or '--files0'."
+msgstr "Solo se puede especificar un fichero con '--files' o '--files0'."
#. TRANSLATORS: This is a translatable
#. string because French needs a space
#. before the colon ("%s : %s").
-#: src/xz/args.c:533 src/xz/coder.c:692 src/xz/coder.c:708 src/xz/coder.c:968
-#: src/xz/coder.c:971 src/xz/file_io.c:605 src/xz/file_io.c:679
-#: src/xz/file_io.c:769 src/xz/file_io.c:940 src/xz/list.c:369
-#: src/xz/list.c:415 src/xz/list.c:477 src/xz/list.c:581 src/xz/list.c:590
+#: src/xz/args.c src/xz/coder.c src/xz/file_io.c src/xz/list.c
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: src/xz/args.c:589
+#: src/xz/args.c
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "La variable de ambiente %s contiene demasiados argumentos"
-#: src/xz/args.c:691
+#: src/xz/args.c
msgid "Compression support was disabled at build time"
msgstr "Se desactivó el soporte para compresión en el momento de compilación"
-#: src/xz/args.c:698
+#: src/xz/args.c
msgid "Decompression support was disabled at build time"
msgstr "Se desactivó el soporte para descompresión en el momento de compilación"
-#: src/xz/args.c:704
+#: src/xz/args.c
msgid "Compression of lzip files (.lz) is not supported"
msgstr "No se admite la compresión de ficheros lzip (.lz)"
-#: src/xz/args.c:735
+#: src/xz/args.c
+msgid "--block-list is ignored unless compressing to the .xz format"
+msgstr "--block-list se descarta a menos que se comprima con el formato .xz"
+
+#: src/xz/args.c
msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "Con --format=raw, se requiere --suffix=.SUF a menos que se escriba a la salida estándar"
-#: src/xz/coder.c:115
+#: src/xz/coder.c
msgid "Maximum number of filters is four"
msgstr "El número máximo de filtros es cuatro"
-#: src/xz/coder.c:135
+#: src/xz/coder.c
+#, c-format
+msgid "Error in --filters%s=FILTERS option:"
+msgstr "Error en la opción --filters%s=FILTROS:"
+
+#: src/xz/coder.c
msgid "Memory usage limit is too low for the given filter setup."
-msgstr "El límite de uso de memoria es muy bajo para la configuración de filtro dada."
+msgstr "El límite de uso de memoria es demasiado bajo para la configuración de filtros dada."
+
+#: src/xz/coder.c
+#, c-format
+msgid "filter chain %u used by --block-list but not specified with --filters%u="
+msgstr "la cadena de filtros %u es usada por --block-list pero no se especifica con --filters%u="
-#: src/xz/coder.c:170
+#: src/xz/coder.c
msgid "Using a preset in raw mode is discouraged."
msgstr "No se recomienda un modo predeterminado en modo crudo."
-#: src/xz/coder.c:172
+#: src/xz/coder.c
msgid "The exact options of the presets may vary between software versions."
msgstr "El número exacto de las opciones predeterminadas puede variar entre versiones del software."
-#: src/xz/coder.c:195
+#: src/xz/coder.c
msgid "The .lzma format supports only the LZMA1 filter"
msgstr "El formato .lzma solamente admite el filtro LZMA1"
-#: src/xz/coder.c:203
+#: src/xz/coder.c
msgid "LZMA1 cannot be used with the .xz format"
msgstr "No se puede usar LZMA1 con el formato .xz"
-#: src/xz/coder.c:220
-msgid "The filter chain is incompatible with --flush-timeout"
-msgstr "La cadena de filtros es incompatible con --flush-timeout"
+#: src/xz/coder.c
+#, c-format
+msgid "Filter chain %u is incompatible with --flush-timeout"
+msgstr "La cadena de filtros %u es incompatible con --flush-timeout"
-#: src/xz/coder.c:226
+#: src/xz/coder.c
msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr "Se cambia al modo de un solo hilo debido a --flush-timeout"
-#: src/xz/coder.c:250
+#: src/xz/coder.c
+#, c-format
+msgid "Unsupported options in filter chain %u"
+msgstr "Opciones sin soporte en la cadena de filtros %u"
+
+#: src/xz/coder.c
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "Se usan hasta %<PRIu32> hilos."
-#: src/xz/coder.c:266
+#: src/xz/coder.c
msgid "Unsupported filter chain or filter options"
-msgstr "No se admite las opciones de cadena de filtros o de filtro"
+msgstr "No se admiten las opciones de cadena de filtros o de filtro"
-#: src/xz/coder.c:278
+#: src/xz/coder.c
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "La descompresión necesitará %s MiB de memoria."
-#: src/xz/coder.c:310
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgstr "Se reduce el número de hilos de %s a %s para no exceder el límite de uso de memoria de %s MiB"
-#: src/xz/coder.c:330
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway."
msgstr "Se reduce el número de hilos de %s a uno. Aún se está excediendo el límite automático de uso de memoria de %s MiB. Se requieren %s MiB de memoria. Continúa de cualquier manera."
-#: src/xz/coder.c:357
+#: src/xz/coder.c
#, c-format
msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB"
msgstr "Se ajusta al modo de un solo hilo para no exceder el límite de uso de memoria de %s MiB"
-#: src/xz/coder.c:412
+#: src/xz/coder.c
#, c-format
msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
msgstr "Se ajusta el tamaño del diccionario LZMA%c de %s MiB a %s MiB para no exceder el límite de uso de memoria de %s MiB"
-#: src/xz/file_io.c:110 src/xz/file_io.c:118
+#: src/xz/coder.c
+#, c-format
+msgid "Adjusted LZMA%c dictionary size for --filters%u from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgstr "Se ajusta el tamaño del diccionario LZMA%c para --filters%u de %s MiB a %s MiB para no exceder el límite de uso de memoria de %s MiB"
+
+#: src/xz/coder.c
+#, c-format
+msgid "Error changing to filter chain %u: %s"
+msgstr "Error al cambiar a la cadena de filtros %u: %s"
+
+#: src/xz/file_io.c
#, c-format
msgid "Error creating a pipe: %s"
msgstr "Error al crear una tubería: %s"
-#: src/xz/file_io.c:252
-msgid "Failed to enable the sandbox"
-msgstr "Falló al activar el arenero"
-
-#: src/xz/file_io.c:294
+#: src/xz/file_io.c
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s: falló poll(): %s"
@@ -167,252 +198,252 @@ msgstr "%s: falló poll(): %s"
#. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously
#. shouldn't be removed.
-#: src/xz/file_io.c:361
+#: src/xz/file_io.c
#, c-format
msgid "%s: File seems to have been moved, not removing"
msgstr "%s: Al parecer se movió el fichero, no se borra"
-#: src/xz/file_io.c:368 src/xz/file_io.c:924
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: No se puede borrar: %s"
-#: src/xz/file_io.c:394
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: No se puede establecer el propietario del fichero: %s"
-#: src/xz/file_io.c:407
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: No se puede establecer el grupo del fichero: %s"
-#: src/xz/file_io.c:426
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: No se pueden establecer los permisos del fichero: %s"
-#: src/xz/file_io.c:552
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "Error al obtener la opciones de estado de fichero de la entrada estándar: %s"
-#: src/xz/file_io.c:610 src/xz/file_io.c:672
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: Es un enlace simbólico, se salta"
-#: src/xz/file_io.c:701
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: Es un directorio, se salta"
-#: src/xz/file_io.c:707
+#: src/xz/file_io.c
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: No es un fichero regular, se salta"
-#: src/xz/file_io.c:724
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s: El fichero tiene el bit setuid o setgid activo, se salta"
-#: src/xz/file_io.c:731
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s: El fichero tiene el bit sticky activo, se salta"
-#: src/xz/file_io.c:738
+#: src/xz/file_io.c
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s: El fichero de entrada tiene más de un enlace duro, se salta"
-#: src/xz/file_io.c:780
+#: src/xz/file_io.c
msgid "Empty filename, skipping"
msgstr "Nombre de fichero vacío, se salta"
-#: src/xz/file_io.c:834
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "Error al restaurar las opciones de estado en la entrada estándar: %s"
-#: src/xz/file_io.c:882
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "Error al obtener las opciones de estado de fichero de la entrada estándar: %s"
-#: src/xz/file_io.c:1081
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "Error al restaurar la opción O_APPEND a la salida estándar: %s"
-#: src/xz/file_io.c:1093
+#: src/xz/file_io.c
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: Falló al cerrar el fichero: %s"
-#: src/xz/file_io.c:1129 src/xz/file_io.c:1391
+#: src/xz/file_io.c
#, c-format
msgid "%s: Seeking failed when trying to create a sparse file: %s"
msgstr "%s: Falló la búsqueda al tratar de crear un fichero disperso: %s"
-#: src/xz/file_io.c:1229
+#: src/xz/file_io.c
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: Error de lectura: %s"
-#: src/xz/file_io.c:1259
+#: src/xz/file_io.c
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: Error al buscar en el fichero: %s"
-#: src/xz/file_io.c:1283
+#: src/xz/file_io.c
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: Fin de fichero inesperado"
-#: src/xz/file_io.c:1342
+#: src/xz/file_io.c
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: Error de escritura: %s"
-#: src/xz/hardware.c:238
+#: src/xz/hardware.c
msgid "Disabled"
msgstr "Desactivado"
-#: src/xz/hardware.c:269
+#: src/xz/hardware.c
msgid "Amount of physical memory (RAM):"
msgstr "Cantidad total de memoria física (RAM):"
-#: src/xz/hardware.c:270
+#: src/xz/hardware.c
msgid "Number of processor threads:"
msgstr "Número de hilos de procesador:"
-#: src/xz/hardware.c:271
+#: src/xz/hardware.c
msgid "Compression:"
msgstr "Compresión"
-#: src/xz/hardware.c:272
+#: src/xz/hardware.c
msgid "Decompression:"
msgstr "Descompresión:"
-#: src/xz/hardware.c:273
+#: src/xz/hardware.c
msgid "Multi-threaded decompression:"
msgstr "Descompresión multihilos:"
-#: src/xz/hardware.c:274
+#: src/xz/hardware.c
msgid "Default for -T0:"
msgstr "Por omisión para -T0:"
-#: src/xz/hardware.c:292
+#: src/xz/hardware.c
msgid "Hardware information:"
msgstr "Información de hardware:"
-#: src/xz/hardware.c:299
+#: src/xz/hardware.c
msgid "Memory usage limits:"
msgstr "Límites de uso de memoria:"
-#: src/xz/list.c:68
+#: src/xz/list.c
msgid "Streams:"
msgstr "Flujos:"
-#: src/xz/list.c:69
+#: src/xz/list.c
msgid "Blocks:"
msgstr "Bloques:"
-#: src/xz/list.c:70
+#: src/xz/list.c
msgid "Compressed size:"
msgstr "Tamaño comprimido:"
-#: src/xz/list.c:71
+#: src/xz/list.c
msgid "Uncompressed size:"
msgstr "Tamaño sin comprimir:"
-#: src/xz/list.c:72
+#: src/xz/list.c
msgid "Ratio:"
msgstr "Tasa:"
-#: src/xz/list.c:73
+#: src/xz/list.c
msgid "Check:"
msgstr "Verificación:"
-#: src/xz/list.c:74
+#: src/xz/list.c
msgid "Stream Padding:"
msgstr "Relleno de flujo:"
-#: src/xz/list.c:75
+#: src/xz/list.c
msgid "Memory needed:"
msgstr "Memoria requerida:"
-#: src/xz/list.c:76
+#: src/xz/list.c
msgid "Sizes in headers:"
msgstr "Tamaños en cabeceras:"
-#: src/xz/list.c:79
+#: src/xz/list.c
msgid "Number of files:"
msgstr "Número de ficheros:"
-#: src/xz/list.c:122
+#: src/xz/list.c
msgid "Stream"
msgstr "Flujo"
-#: src/xz/list.c:123
+#: src/xz/list.c
msgid "Block"
msgstr "Bloque"
-#: src/xz/list.c:124
+#: src/xz/list.c
msgid "Blocks"
msgstr "Bloques"
-#: src/xz/list.c:125
+#: src/xz/list.c
msgid "CompOffset"
msgstr "DesplComp"
-#: src/xz/list.c:126
+#: src/xz/list.c
msgid "UncompOffset"
msgstr "DesplDescomp"
-#: src/xz/list.c:127
+#: src/xz/list.c
msgid "CompSize"
msgstr "TamComp"
-#: src/xz/list.c:128
+#: src/xz/list.c
msgid "UncompSize"
msgstr "TamDescomp"
-#: src/xz/list.c:129
+#: src/xz/list.c
msgid "TotalSize"
msgstr "TamTotal"
-#: src/xz/list.c:130
+#: src/xz/list.c
msgid "Ratio"
msgstr "Tasa"
-#: src/xz/list.c:131
+#: src/xz/list.c
msgid "Check"
msgstr "Verif"
-#: src/xz/list.c:132
+#: src/xz/list.c
msgid "CheckVal"
msgstr "ValVerif"
-#: src/xz/list.c:133
+#: src/xz/list.c
msgid "Padding"
msgstr "Relleno"
-#: src/xz/list.c:134
+#: src/xz/list.c
msgid "Header"
msgstr "Cabecera"
-#: src/xz/list.c:135
+#: src/xz/list.c
msgid "Flags"
msgstr "Opciones"
-#: src/xz/list.c:136
+#: src/xz/list.c
msgid "MemUsage"
msgstr "UsoMem"
-#: src/xz/list.c:137
+#: src/xz/list.c
msgid "Filters"
msgstr "Filtros"
@@ -420,7 +451,7 @@ msgstr "Filtros"
#. This string is used in tables. In older xz version this
#. string was limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:169
+#: src/xz/list.c
msgid "None"
msgstr "Ninguno"
@@ -428,60 +459,60 @@ msgstr "Ninguno"
#. but the Check ID is known (here 2). In older xz version these
#. strings were limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:175
+#: src/xz/list.c
msgid "Unknown-2"
msgstr "Descon-2"
-#: src/xz/list.c:176
+#: src/xz/list.c
msgid "Unknown-3"
msgstr "Descon-3"
-#: src/xz/list.c:178
+#: src/xz/list.c
msgid "Unknown-5"
msgstr "Descon-5"
-#: src/xz/list.c:179
+#: src/xz/list.c
msgid "Unknown-6"
msgstr "Descon-6"
-#: src/xz/list.c:180
+#: src/xz/list.c
msgid "Unknown-7"
msgstr "Descon-7"
-#: src/xz/list.c:181
+#: src/xz/list.c
msgid "Unknown-8"
msgstr "Descon-8"
-#: src/xz/list.c:182
+#: src/xz/list.c
msgid "Unknown-9"
msgstr "Descon-9"
-#: src/xz/list.c:184
+#: src/xz/list.c
msgid "Unknown-11"
msgstr "Descon-11"
-#: src/xz/list.c:185
+#: src/xz/list.c
msgid "Unknown-12"
msgstr "Descon-12"
-#: src/xz/list.c:186
+#: src/xz/list.c
msgid "Unknown-13"
msgstr "Descon-13"
-#: src/xz/list.c:187
+#: src/xz/list.c
msgid "Unknown-14"
msgstr "Descon-14"
-#: src/xz/list.c:188
+#: src/xz/list.c
msgid "Unknown-15"
msgstr "Descon-15"
-#: src/xz/list.c:351
+#: src/xz/list.c
#, c-format
msgid "%s: File is empty"
msgstr "%s: El fichero está vacío"
-#: src/xz/list.c:356
+#: src/xz/list.c
#, c-format
msgid "%s: Too small to be a valid .xz file"
msgstr "%s: Demasiado pequeño para ser un fichero .xz válido"
@@ -490,64 +521,68 @@ msgstr "%s: Demasiado pequeño para ser un fichero .xz válido"
#. 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:731
+#: src/xz/list.c
msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename"
-msgstr "Flujos Bloques Comprimido Sin-Comprimir Relac Verif Nombre-Fichero"
+msgstr "Flujos Bloques Comprimido Sin-Comprimir Tasa Verif Nombre-Fichero"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "Yes"
msgstr "Sí"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "No"
msgstr "No"
-#: src/xz/list.c:1028 src/xz/list.c:1206
+#: src/xz/list.c
#, c-format
msgid " Minimum XZ Utils version: %s\n"
msgstr " Versión de herramientas XZ mínima: %s\n"
#. TRANSLATORS: %s is an integer. Only the plural form of this
#. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz".
-#: src/xz/list.c:1179
+#: src/xz/list.c
#, c-format
msgid "%s file\n"
msgid_plural "%s files\n"
msgstr[0] "%s fichero\n"
msgstr[1] "%s ficheros\n"
-#: src/xz/list.c:1192
+#: src/xz/list.c
msgid "Totals:"
msgstr "Totales:"
-#: src/xz/list.c:1270
+#: src/xz/list.c
msgid "--list works only on .xz files (--format=xz or --format=auto)"
msgstr "--list solo funciona con ficheros .xz (--format=xz o --format=auto)"
-#: src/xz/list.c:1276
+#: src/xz/list.c
+msgid "Try 'lzmainfo' with .lzma files."
+msgstr "Pruebe 'lzmainfo' con ficheros .lzma."
+
+#: src/xz/list.c
msgid "--list does not support reading from standard input"
msgstr "--list no admite leer de la entrada estándar"
-#: src/xz/main.c:89
+#: src/xz/main.c
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s: Error al leer nombres de fichero: %s"
-#: src/xz/main.c:96
+#: src/xz/main.c
#, c-format
msgid "%s: Unexpected end of input when reading filenames"
msgstr "%s: Fin de entrada inesperada al leer nombres de fichero"
-#: src/xz/main.c:120
+#: src/xz/main.c
#, c-format
-msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
-msgstr "%s: Se encontraron caracteres nulos al leer nombres de ficheros. ¿Tal vez quería usar `--files0' en lugar de `--files'?"
+msgid "%s: Null character found when reading filenames; maybe you meant to use '--files0' instead of '--files'?"
+msgstr "%s: Se encontraron caracteres nulos al leer nombres de ficheros. ¿Tal vez quería usar '--files0' en lugar de '--files'?"
-#: src/xz/main.c:188
+#: src/xz/main.c
msgid "Compression and decompression with --robot are not supported yet."
msgstr "Aún no se admite la compresión y descompresión con --robot."
-#: src/xz/main.c:266
+#: src/xz/main.c
msgid "Cannot read data from standard input when reading filenames from standard input"
msgstr "No se pueden leer datos de la entrada estándar cuando se leen nombres de fichero de la entrada estándar"
@@ -555,68 +590,68 @@ msgstr "No se pueden leer datos de la entrada estándar cuando se leen nombres d
#. 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:670 src/xz/message.c:725
+#: src/xz/message.c
#, c-format
msgid "%s: "
msgstr "%s: "
-#: src/xz/message.c:797 src/xz/message.c:856
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
msgid "Internal error (bug)"
msgstr "Error interno (bug)"
-#: src/xz/message.c:804
+#: src/xz/message.c
msgid "Cannot establish signal handlers"
msgstr "No se pueden establecer los manejadores de señales"
-#: src/xz/message.c:813
+#: src/xz/message.c
msgid "No integrity check; not verifying file integrity"
msgstr "No hay revisión de integridad; no se verifica la integridad del fichero"
-#: src/xz/message.c:816
+#: src/xz/message.c
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "No se admite el tipo de revisión de integridad; no se verifica la integridad del fichero"
-#: src/xz/message.c:823
+#: src/xz/message.c
msgid "Memory usage limit reached"
msgstr "Se alcanzó el límite de uso de memoria"
-#: src/xz/message.c:826
+#: src/xz/message.c
msgid "File format not recognized"
msgstr "No se reconoce el formato del fichero"
-#: src/xz/message.c:829
+#: src/xz/message.c
msgid "Unsupported options"
msgstr "Opciones sin soporte"
-#: src/xz/message.c:832
+#: src/xz/message.c
msgid "Compressed data is corrupt"
msgstr "Los datos comprimidos están corruptos"
-#: src/xz/message.c:835
+#: src/xz/message.c
msgid "Unexpected end of input"
msgstr "Fin de entrada inesperado"
-#: src/xz/message.c:877
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "Se requieren %s MiB de memoria. Se desactiva el limitador."
-#: src/xz/message.c:905
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr "Se requieren %s MiB de memoria. El límite es %s."
-#: src/xz/message.c:924
+#: src/xz/message.c
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: Cadena de filtro: %s\n"
-#: src/xz/message.c:935
+#: src/xz/message.c
#, c-format
-msgid "Try `%s --help' for more information."
-msgstr "Intente `%s --help' para obtener más información."
+msgid "Try '%s --help' for more information."
+msgstr "Pruebe '%s --help' para obtener más información."
-#: src/xz/message.c:961
+#: src/xz/message.c
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
@@ -627,17 +662,17 @@ msgstr ""
"Comprime o descomprime FICHEROs en el formato .xz.\n"
"\n"
-#: src/xz/message.c:968
+#: src/xz/message.c
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr ""
"Los argumentos obligatorios para las opciones largas también son\n"
"obligatorios para las opciones cortas.\n"
-#: src/xz/message.c:972
+#: src/xz/message.c
msgid " Operation mode:\n"
msgstr " Modo de operación:\n"
-#: src/xz/message.c:975
+#: src/xz/message.c
msgid ""
" -z, --compress force compression\n"
" -d, --decompress force decompression\n"
@@ -649,7 +684,7 @@ msgstr ""
" -t, --test prueba la integridad del fichero comprimido\n"
" -l, --list lista la información sobre los ficheros .xz"
-#: src/xz/message.c:981
+#: src/xz/message.c
msgid ""
"\n"
" Operation modifiers:\n"
@@ -657,7 +692,7 @@ msgstr ""
"\n"
" Modificadores de operación:\n"
-#: src/xz/message.c:984
+#: src/xz/message.c
msgid ""
" -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\n"
@@ -669,7 +704,7 @@ msgstr ""
" -c, --stdout escribe a la entrada estándar y no borra los ficheros\n"
" de entrada"
-#: src/xz/message.c:993
+#: src/xz/message.c
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
@@ -677,24 +712,24 @@ msgstr ""
" --single-stream solo descomprime el primer flujo, y descarta\n"
" silenciosamente los posibles datos de entrada restantes"
-#: src/xz/message.c:996
+#: src/xz/message.c
msgid ""
" --no-sparse do not create sparse files when decompressing\n"
-" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
+" -S, --suffix=.SUF use the suffix '.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n"
" omitted, filenames are read from the standard input;\n"
" filenames must be terminated with the newline character\n"
" --files0[=FILE] like --files but use the null character as terminator"
msgstr ""
" --no-sparse no crea archivos dispersos durante la descompresión\n"
-" -S, --suffix=.SUF usa el sufijo `.SUF' en los ficheros comprimidos\n"
+" -S, --suffix=.SUF usa el sufijo '.SUF' en los ficheros comprimidos\n"
" --files[=FICH] lee los nombres de ficheros a procesar de FICHero;\n"
" si se omite el FICHero, los nombres de fichero se leen\n"
" de la entrada estándar; los nombres de fichero deben\n"
" terminar con el carácter de línea nueva\n"
" --files0[=FICH] como --files pero usa el carácter nulo como terminador"
-#: src/xz/message.c:1005
+#: src/xz/message.c
msgid ""
"\n"
" Basic file format and compression options:\n"
@@ -702,25 +737,25 @@ msgstr ""
"\n"
" Opciones básicas de compresión y formato de fichero:\n"
-#: src/xz/message.c:1007
+#: src/xz/message.c
msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n"
-" `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
-" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-" `crc32', `crc64' (default), or `sha256'"
+" 'auto' (default), 'xz', 'lzma', 'lzip', and 'raw'\n"
+" -C, --check=CHECK integrity check type: 'none' (use with caution),\n"
+" 'crc32', 'crc64' (default), or 'sha256'"
msgstr ""
" -F, --format=FMT formato de fichero para codificar o decodificar; los\n"
" valores posibles son\n"
-" `auto' (por defecto), `xz', `lzma', `lzip', y `raw'\n"
+" 'auto' (por defecto), 'xz', 'lzma', 'lzip', y 'raw'\n"
" -C, --check=VERIF tipo de verificación de integridad:\n"
-" `none' (usar con precaución),\n"
-" `crc32', `crc64' (por defecto), o `sha256'"
+" 'none' (usar con precaución),\n"
+" 'crc32', 'crc64' (por defecto), o 'sha256'"
-#: src/xz/message.c:1012
+#: src/xz/message.c
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr " --ignore-check no hace la verificación de integridad al descomprimir"
-#: src/xz/message.c:1016
+#: src/xz/message.c
msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!"
@@ -729,7 +764,7 @@ msgstr ""
" ¡Considere el uso de memoria del compresor *y*\n"
" del descompresor antes de usar 7-9!"
-#: src/xz/message.c:1020
+#: src/xz/message.c
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
@@ -738,16 +773,15 @@ msgstr ""
" tiempo de procesamiento; no afecta los requisitos\n"
" de memoria del descompresor"
-#: src/xz/message.c:1024
+#: src/xz/message.c
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"
+" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
+" as many threads as there are processor cores"
msgstr ""
-" -T, --threads=NÚM usa como máximo NÚM hilos; por defecto es 1;\n"
-" establezca a 0 para usar tantos hilos como hayan\n"
-" núcleos de procesador"
+" -T, --threads=NÚM usa como máximo NÚM hilos; por defecto es 0, el cual\n"
+" usa tantos hilos como hayan núcleos de procesador"
-#: src/xz/message.c:1029
+#: src/xz/message.c
msgid ""
" --block-size=SIZE\n"
" start a new .xz block after every SIZE bytes of input;\n"
@@ -758,17 +792,22 @@ msgstr ""
" de entrada; use esta opción para establecer el tamaño\n"
" de bloque para la compresión con hilos"
-#: src/xz/message.c:1033
+#: src/xz/message.c
msgid ""
-" --block-list=SIZES\n"
+" --block-list=BLOCKS\n"
" start a new .xz block after the given comma-separated\n"
-" intervals of uncompressed data"
+" intervals of uncompressed data; optionally, specify a\n"
+" filter chain number (0-9) followed by a ':' before the\n"
+" uncompressed data size"
msgstr ""
-" --block-list=TAMAÑOS\n"
+" --block-list=BLOQUES\n"
" inicia un nuevo bloque .xz después de cada intervalo\n"
-" dado, separado por comas, de datos sin comprimir"
+" dado, separado por comas, de datos sin comprimir;\n"
+" opcionalmente, especifica un número de cadena de filtros\n"
+" (0-9) a continuación de ':' antes del tamaño de\n"
+" los datos sin comprimir"
-#: src/xz/message.c:1037
+#: src/xz/message.c
msgid ""
" --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n"
@@ -781,7 +820,7 @@ msgstr ""
" produciría un bloqueo, todos los datos pendientes son\n"
" descartados"
-#: src/xz/message.c:1043
+#: src/xz/message.c
#, no-c-format
msgid ""
" --memlimit-compress=LIMIT\n"
@@ -801,7 +840,7 @@ msgstr ""
" anteriores; el LÍMITE está en bytes, % de RAM,\n"
" o 0 para valores por defecto"
-#: src/xz/message.c:1052
+#: src/xz/message.c
msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards"
@@ -810,15 +849,44 @@ msgstr ""
" uso de memoria, muestra un error en lugar de ajustar\n"
" los valores hacia abajo"
-#: src/xz/message.c:1058
+#: src/xz/message.c
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
msgstr ""
"\n"
-" Cadena de filtros para compresión (alternativa a valores predefinidos):"
+" Cadena de filtros para compresión (alternativa a usar valores predefinidos):"
+
+#: src/xz/message.c
+msgid ""
+"\n"
+" --filters=FILTERS set the filter chain using the liblzma filter string\n"
+" syntax; use --filters-help for more information"
+msgstr ""
+"\n"
+" --filters=FILTROS define la cadena de filtros usando la sintaxis de la\n"
+" cadena de filtros liblzma; use --filters-help para\n"
+" obtener más información"
+
+#: src/xz/message.c
+msgid ""
+" --filters1=FILTERS ... --filters9=FILTERS\n"
+" set additional filter chains using the liblzma filter\n"
+" string syntax to use with --block-list"
+msgstr ""
+" --filters1=FILTROS ... --filters9=FILTROS\n"
+" define cadenas de filtros adicionales usando la sintaxis\n"
+" de cadena de filtros liblzma para usar con --block-list"
-#: src/xz/message.c:1067
+#: src/xz/message.c
+msgid ""
+" --filters-help display more information about the liblzma filter string\n"
+" syntax and exit."
+msgstr ""
+" --filters-help muestra más información acerca de la sintaxis de cadenas\n"
+" de filtros liblzma y termina."
+
+#: src/xz/message.c
msgid ""
"\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
@@ -835,7 +903,7 @@ msgid ""
msgstr ""
"\n"
" --lzma1[=OPCIONES] LZMA1 o LZMA2; OPCIONES es una lista separada por comas\n"
-" --lzma2[=OPCIONES] de cero o más opciones (valores válidos; por defecto)\n"
+" --lzma2[=OPCIONES] de cero o más opciones (valores válidos; por defecto):\n"
" preset=PRE inicia opciones con un valor predefinido\n"
" (0-9[e])\n"
" dict=NÚM tamaño de diccionario (4KiB - 1536MiB; 8MiB)\n"
@@ -849,7 +917,7 @@ msgstr ""
" depth=NÚM profundidad máxima de búsqueda;\n"
" 0=automática (por defecto)"
-#: src/xz/message.c:1082
+#: src/xz/message.c
msgid ""
"\n"
" --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
@@ -859,6 +927,7 @@ msgid ""
" --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
" --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
" --sparc[=OPTS] SPARC BCJ filter\n"
+" --riscv[=OPTS] RISC-V BCJ filter\n"
" Valid OPTS for all BCJ filters:\n"
" start=NUM start offset for conversions (default=0)"
msgstr ""
@@ -870,11 +939,12 @@ msgstr ""
" --powerpc[=OPCIONES] filtro BCJ para PowerPC (solo big endian)\n"
" --ia64[=OPCIONES] filtro BCJ para IA-64 (Itanium)\n"
" --sparc[=OPCIONES] filtro BCJ para SPARC\n"
+" --riscv[=OPCIONES] filtro BCJ para RISC-V\n"
" OPCIONES válidas para todos los filtros BCJ:\n"
" start=NÚM inicio de desplazamiento para\n"
" conversiones (por defecto=0)"
-#: src/xz/message.c:1095
+#: src/xz/message.c
msgid ""
"\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n"
@@ -882,11 +952,11 @@ msgid ""
" from each other (1-256; 1)"
msgstr ""
"\n"
-" --delta[=OPCIONES] Filtro delta; OPCIONES (valores válidos; por defecto):\n"
-" dist=NÚM distancia entre bytes que se restan\n"
-" uno del otro (1-256; 1)"
+" --delta[=OPCIONES] Filtro delta; OPCIONES (valores válidos; por defecto):\n"
+" dist=NÚM distancia entre bytes que se restan\n"
+" uno del otro (1-256; 1)"
-#: src/xz/message.c:1103
+#: src/xz/message.c
msgid ""
"\n"
" Other options:\n"
@@ -894,7 +964,7 @@ msgstr ""
"\n"
" Otras opciones:\n"
-#: src/xz/message.c:1106
+#: src/xz/message.c
msgid ""
" -q, --quiet suppress warnings; specify twice to suppress errors too\n"
" -v, --verbose be verbose; specify twice for even more verbose"
@@ -902,15 +972,15 @@ msgstr ""
" -q, --quiet suprime avisos; use dos veces para suprimir errores\n"
" -v, --verbose detallado; use dos veces para obtener aún más detalle"
-#: src/xz/message.c:1111
+#: src/xz/message.c
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr " -Q, --no-warn los avisos no afectan el estado de la salida"
-#: src/xz/message.c:1113
+#: src/xz/message.c
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr " --robot usa mensajes analizables por máquina (útil para scripts)"
-#: src/xz/message.c:1116
+#: src/xz/message.c
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
@@ -918,7 +988,7 @@ msgstr ""
" --info-memory muestra la cantidad total de RAM y los límites de uso\n"
" de memoria activos, y termina"
-#: src/xz/message.c:1119
+#: src/xz/message.c
msgid ""
" -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit"
@@ -926,7 +996,7 @@ msgstr ""
" -h, --help muestra la ayuda corta (solo muestra las opciones básicas)\n"
" -H, --long-help muestra esta ayuda detallada y termina"
-#: src/xz/message.c:1123
+#: src/xz/message.c
msgid ""
" -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)"
@@ -934,11 +1004,12 @@ msgstr ""
" -h, --help muestra esta ayuda corta y termina\n"
" -H, --long-help muestra la ayuda larga (además muestra opciones avanzadas)"
-#: src/xz/message.c:1128
+#: src/xz/message.c
msgid " -V, --version display the version number and exit"
msgstr " -V, --version muestra el número de versión y termina"
-#: src/xz/message.c:1130
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
+#, c-format
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
@@ -950,96 +1021,132 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks.
-#: src/xz/message.c:1136
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr ""
"Reporte errores a <%s> (en inglés o finlandés).\n"
"Reporte errores de traducción al español a <es@tp.org.es>.\n"
-#: src/xz/message.c:1138
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Sitio web de %s: <%s>\n"
-#: src/xz/message.c:1142
+#: src/xz/message.c
msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
msgstr "ESTA ES UNA VERSIÓN EN DESARROLLO Y NO ESTÁ LISTA PARA USO EN PRODUCCIÓN."
-#: src/xz/options.c:86
+#: src/xz/message.c
+msgid ""
+"Filter chains are set using the --filters=FILTERS or\n"
+"--filters1=FILTERS ... --filters9=FILTERS options. Each filter in the chain\n"
+"can be separated by spaces or '--'. Alternatively a preset <0-9>[e] can be\n"
+"specified instead of a filter chain.\n"
+msgstr ""
+"Las cadenas de filtros se definen usando las opciones --filters=FILTROS o\n"
+"--filters1=FILTROS ... --filters9=FILTROS. Cada filtro en la cadena se puede\n"
+"separar con espacios o '--'. Alternativamente, se puede especificar un valor\n"
+"predeterminado <0-9>[e] en lugar de una cadena de filtro.\n"
+
+#: src/xz/message.c
+msgid "The supported filters and their options are:"
+msgstr "Los filtros admitidos y sus opciones son:"
+
+#: src/xz/options.c
#, c-format
-msgid "%s: Options must be `name=value' pairs separated with commas"
-msgstr "%s: Las opciones deben ser pares `nombre=valor' separadas por comas"
+msgid "%s: Options must be 'name=value' pairs separated with commas"
+msgstr "%s: Las opciones deben ser pares 'nombre=valor' separadas por comas"
-#: src/xz/options.c:93
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option name"
msgstr "%s: Nombre de opción inválido"
-#: src/xz/options.c:113
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option value"
msgstr "%s: Valor de opción inválido"
-#: src/xz/options.c:248
+#: src/xz/options.c
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "No se admite el valor predefinido LZMA1/LZMA2: %s"
-#: src/xz/options.c:356
+#: src/xz/options.c
msgid "The sum of lc and lp must not exceed 4"
msgstr "La suma de lc y lp no debe exceder 4"
-#: src/xz/suffix.c:160
+#: src/xz/suffix.c
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: El nombre de fichero tiene un sufijo desconocido, se salta"
-#: src/xz/suffix.c:181
+#: src/xz/suffix.c
#, c-format
-msgid "%s: File already has `%s' suffix, skipping"
-msgstr "%s: El fichero ya tiene un sufijo `%s', se salta"
+msgid "%s: File already has '%s' suffix, skipping"
+msgstr "%s: El fichero ya tiene un sufijo '%s', se salta"
-#: src/xz/suffix.c:388
+#: src/xz/suffix.c
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s: Sufijo de nombre de fichero inválido"
-#: src/xz/util.c:107
+#: src/xz/util.c
#, c-format
msgid "%s: Value is not a non-negative decimal integer"
msgstr "%s: El valor no es un entero decimal no-negativo"
-#: src/xz/util.c:149
+#: src/xz/util.c
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s: Sufijo multiplicador inválido"
-#: src/xz/util.c:151
-msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
-msgstr "Los sufijos válidos son `KiB' (2^10), `MiB' (2^20), y `GiB' (2^30)."
+#: src/xz/util.c
+msgid "Valid suffixes are 'KiB' (2^10), 'MiB' (2^20), and 'GiB' (2^30)."
+msgstr "Los sufijos válidos son 'KiB' (2^10), 'MiB' (2^20), y 'GiB' (2^30)."
-#: src/xz/util.c:168
+#: src/xz/util.c
#, c-format
-msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
-msgstr "El valor de la opción `%s' debe estar en el rango [%<PRIu64>, %<PRIu64>]"
+msgid "Value of the option '%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+msgstr "El valor de la opción '%s' debe estar en el rango [%<PRIu64>, %<PRIu64>]"
-#: src/xz/util.c:270
+#: src/xz/util.c
msgid "Compressed data cannot be read from a terminal"
msgstr "No se pueden leer datos comprimidos de una terminal"
-#: src/xz/util.c:283
+#: src/xz/util.c
msgid "Compressed data cannot be written to a terminal"
msgstr "No se pueden escribir datos comprimidos a una terminal"
-#: src/common/tuklib_exit.c:40
+#: src/lzmainfo/lzmainfo.c
+#, c-format
+msgid ""
+"Usage: %s [--help] [--version] [FILE]...\n"
+"Show information stored in the .lzma file header"
+msgstr ""
+"Uso: %s [--help] [--version] [FICHERO]...\n"
+"Muestra información almacenada en la cabecera del fichero .lzma"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "File is too small to be a .lzma file"
+msgstr "El fichero es demasiado pequeño para ser un fichero .lzma"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "Not a .lzma file"
+msgstr "No es un fichero .lzma"
+
+#: src/common/tuklib_exit.c
msgid "Writing to standard output failed"
msgstr "Falló la escritura a la salida estándar"
-#: src/common/tuklib_exit.c:43
+#: src/common/tuklib_exit.c
msgid "Unknown error"
msgstr "Error desconocido"
+#~ msgid "Failed to enable the sandbox"
+#~ msgstr "Falló al activar el arenero"
+
#~ msgid "The selected match finder requires at least nice=%<PRIu32>"
#~ msgstr "El buscador de coincidencias seleccionado requiere por lo menos nice=%<PRIu32>"
diff --git a/po/fi.gmo b/po/fi.gmo
index a0f43b7..87358cf 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index 789f7a0..4f85688 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: xz 5.4.0-pre1\n"
"Report-Msgid-Bugs-To: xz@tukaani.org\n"
-"POT-Creation-Date: 2023-10-31 22:33+0800\n"
+"POT-Creation-Date: 2024-05-29 17:41+0300\n"
"PO-Revision-Date: 2022-11-10 16:17+0200\n"
"Last-Translator: Lauri Nurmi <lanurmi@iki.fi>\n"
"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
@@ -19,145 +19,179 @@ msgstr ""
"X-Bugs: Report translation errors to the Language-Team address.\n"
"X-Generator: Poedit 3.2\n"
-#: src/xz/args.c:77
+#: src/xz/args.c
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr "%s: Virheellinen argumentti valitsimelle --block-list"
-#: src/xz/args.c:87
+#: src/xz/args.c
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s: Liian monta argumenttia valitsimelle --block-list"
-#: src/xz/args.c:116
+#: src/xz/args.c
+#, c-format
+msgid "In --block-list, block size is missing after filter chain number '%c:'"
+msgstr ""
+
+#: src/xz/args.c
msgid "0 can only be used as the last element in --block-list"
msgstr "0:aa voi käyttää vain viimeisenä alkiona valitsimen --block-list kanssa"
-#: src/xz/args.c:451
+#: src/xz/args.c
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s: Tuntematon tiedostomuototyyppi"
-#: src/xz/args.c:474 src/xz/args.c:482
+#: src/xz/args.c
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s: Eheystarkistuksen tyyppiä ei tueta"
-#: src/xz/args.c:518
-msgid "Only one file can be specified with `--files' or `--files0'."
+#: src/xz/args.c
+#, fuzzy
+#| msgid "Only one file can be specified with `--files' or `--files0'."
+msgid "Only one file can be specified with '--files' or '--files0'."
msgstr "Vain yksi tiedosto voidaan antaa valitsimille ”--files” ja ”--files0”."
#. TRANSLATORS: This is a translatable
#. string because French needs a space
#. before the colon ("%s : %s").
-#: src/xz/args.c:533 src/xz/coder.c:692 src/xz/coder.c:708 src/xz/coder.c:968
-#: src/xz/coder.c:971 src/xz/file_io.c:605 src/xz/file_io.c:679
-#: src/xz/file_io.c:769 src/xz/file_io.c:940 src/xz/list.c:369
-#: src/xz/list.c:415 src/xz/list.c:477 src/xz/list.c:581 src/xz/list.c:590
+#: src/xz/args.c src/xz/coder.c src/xz/file_io.c src/xz/list.c
#, fuzzy, c-format
#| msgid "%s: "
msgid "%s: %s"
msgstr "%s: "
-#: src/xz/args.c:589
+#: src/xz/args.c
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "Ympäristömuuttuja %s sisältää liian monta argumenttia"
-#: src/xz/args.c:691
+#: src/xz/args.c
msgid "Compression support was disabled at build time"
msgstr "Tiivistämistuki on poistettu käytöstä käännösaikana"
-#: src/xz/args.c:698
+#: src/xz/args.c
msgid "Decompression support was disabled at build time"
msgstr "Purkutuki on poistettu käytöstä käännösaikana"
-#: src/xz/args.c:704
+#: src/xz/args.c
msgid "Compression of lzip files (.lz) is not supported"
msgstr "Lzip-tiedostojen (.lz) pakkaamista ei tueta"
-#: src/xz/args.c:735
+#: src/xz/args.c
+msgid "--block-list is ignored unless compressing to the .xz format"
+msgstr ""
+
+#: src/xz/args.c
#, fuzzy
#| msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "%s: --format=raw vaatii, että --suffix=.PÄÄTE on annettu, ellei kirjoiteta vakiotulosteeseen"
-#: src/xz/coder.c:115
+#: src/xz/coder.c
msgid "Maximum number of filters is four"
msgstr "Suodattimien enimmäismäärä on neljä"
-#: src/xz/coder.c:135
+#: src/xz/coder.c
+#, c-format
+msgid "Error in --filters%s=FILTERS option:"
+msgstr ""
+
+#: src/xz/coder.c
msgid "Memory usage limit is too low for the given filter setup."
msgstr "Muistinkäytön raja on liian matala valituille suotimille."
-#: src/xz/coder.c:170
+#: src/xz/coder.c
+#, c-format
+msgid "filter chain %u used by --block-list but not specified with --filters%u="
+msgstr ""
+
+#: src/xz/coder.c
msgid "Using a preset in raw mode is discouraged."
msgstr "Esiasetusten käyttö raw-tilassa ei ole suositeltavaa."
-#: src/xz/coder.c:172
+#: src/xz/coder.c
msgid "The exact options of the presets may vary between software versions."
msgstr "Esiasetusten tarkat asetukset saattavat vaihdella ohjelmistoversioiden välillä."
-#: src/xz/coder.c:195
+#: src/xz/coder.c
msgid "The .lzma format supports only the LZMA1 filter"
msgstr ".lzma-muoto tukee vain LZMA1-suodinta"
-#: src/xz/coder.c:203
+#: src/xz/coder.c
msgid "LZMA1 cannot be used with the .xz format"
msgstr "LZMA1:tä ei voi käyttää .xz-muodon kanssa"
-#: src/xz/coder.c:220
-msgid "The filter chain is incompatible with --flush-timeout"
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "The filter chain is incompatible with --flush-timeout"
+msgid "Filter chain %u is incompatible with --flush-timeout"
msgstr "Suodinketju on yhteensopimaton valitsimen --flush-timeout kanssa"
-#: src/xz/coder.c:226
+#: src/xz/coder.c
msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr "Vaihdetaan yksisäikeiseen tilaan valitsimen --flush-timeout vuoksi"
-#: src/xz/coder.c:250
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Unsupported options"
+msgid "Unsupported options in filter chain %u"
+msgstr "Ei-tuetut valitsimet"
+
+#: src/xz/coder.c
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "Käytetään enintään %<PRIu32> säiettä."
-#: src/xz/coder.c:266
+#: src/xz/coder.c
msgid "Unsupported filter chain or filter options"
msgstr "Ei-tuettu suodinketju tai suotimen asetukset"
-#: src/xz/coder.c:278
+#: src/xz/coder.c
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "Purkaminen vaatii %s MiB muistia."
-#: src/xz/coder.c:310
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgstr "Pudotettiin säikeiden määrä %s säikeestä %s:een, jottei ylitettäisi %s MiB:n rajaa muistinkäytölle"
-#: src/xz/coder.c:330
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway."
msgstr "Pudotettiin säikeiden määrä %s säikeestä yhteen. Automaattinen %s MiB:n raja muistinkäytölle ylittyy silti. Vaaditaan %s MiB muistia. Jatketaan kaikesta huolimatta."
-#: src/xz/coder.c:357
+#: src/xz/coder.c
#, c-format
msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB"
msgstr "Siirrytään yhden säikeen tilaan, jottei ylitettäisi %s MiB:n rajaa muistinkäytölle"
-#: src/xz/coder.c:412
+#: src/xz/coder.c
#, c-format
msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
msgstr "Pudotettiin LZMA%c-sanaston koko %s MiB:stä %s MiB:hen, jottei ylitettäisi %s MiB:n rajaa muistinkäytölle"
-#: src/xz/file_io.c:110 src/xz/file_io.c:118
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgid "Adjusted LZMA%c dictionary size for --filters%u from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgstr "Pudotettiin LZMA%c-sanaston koko %s MiB:stä %s MiB:hen, jottei ylitettäisi %s MiB:n rajaa muistinkäytölle"
+
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Error creating a pipe: %s"
+msgid "Error changing to filter chain %u: %s"
+msgstr "Virhe putkea luodessa: %s"
+
+#: src/xz/file_io.c
#, c-format
msgid "Error creating a pipe: %s"
msgstr "Virhe putkea luodessa: %s"
-#: src/xz/file_io.c:252
-msgid "Failed to enable the sandbox"
-msgstr "Hiekkalaatikon ottaminen käyttöön epäonnistui"
-
-#: src/xz/file_io.c:294
+#: src/xz/file_io.c
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s: poll()-kutsu epäonnistui: %s"
@@ -172,252 +206,252 @@ msgstr "%s: poll()-kutsu epäonnistui: %s"
#. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously
#. shouldn't be removed.
-#: src/xz/file_io.c:361
+#: src/xz/file_io.c
#, c-format
msgid "%s: File seems to have been moved, not removing"
msgstr "%s: Tiedosto on nähtävästi siirretty, ei poisteta"
-#: src/xz/file_io.c:368 src/xz/file_io.c:924
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: Ei voi poistaa: %s"
-#: src/xz/file_io.c:394
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: Tiedoston omistajaa ei voi asettaa: %s"
-#: src/xz/file_io.c:407
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: Tiedoston ryhmää ei voi asettaa: %s"
-#: src/xz/file_io.c:426
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: Tiedoston oikeuksia ei voi asettaa: %s"
-#: src/xz/file_io.c:552
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "Virhe tiedoston tilalippujen noutamisessa vakiosyötteelle: %s"
-#: src/xz/file_io.c:610 src/xz/file_io.c:672
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: On symbolinen linkki, ohitetaan"
-#: src/xz/file_io.c:701
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: On hakemisto, ohitetaan"
-#: src/xz/file_io.c:707
+#: src/xz/file_io.c
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: Ei ole tavallinen tiedosto, ohitetaan"
-#: src/xz/file_io.c:724
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s: Tiedostolla on setuid- tai setgid-bitti, ohitetaan"
-#: src/xz/file_io.c:731
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s: Tiedostolla on sticky-bitti, ohitetaan"
-#: src/xz/file_io.c:738
+#: src/xz/file_io.c
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s: Syötetiedostoon on yli yksi kova linkki, ohitetaan"
-#: src/xz/file_io.c:780
+#: src/xz/file_io.c
msgid "Empty filename, skipping"
msgstr "Tyhjä tiedostonimi, ohitetaan"
-#: src/xz/file_io.c:834
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "Virhe tilalippujen palauttamisessa vakiosyötteelle: %s"
-#: src/xz/file_io.c:882
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "Virhe tiedoston tilalippujen noutamisessa vakiotulosteelle: %s"
-#: src/xz/file_io.c:1081
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "Virhe O_APPEND-lipun palauttamisessa vakiosyötteelle: %s"
-#: src/xz/file_io.c:1093
+#: src/xz/file_io.c
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: Tiedoston sulkeminen epäonnistui: %s"
-#: src/xz/file_io.c:1129 src/xz/file_io.c:1391
+#: src/xz/file_io.c
#, c-format
msgid "%s: Seeking failed when trying to create a sparse file: %s"
msgstr "%s: Siirtyminen epäonnistui yritettäessä luoda hajanaista tiedostoa: %s"
-#: src/xz/file_io.c:1229
+#: src/xz/file_io.c
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: Lukuvirhe: %s"
-#: src/xz/file_io.c:1259
+#: src/xz/file_io.c
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: Virhe tiedostossa siirtymisessä: %s"
-#: src/xz/file_io.c:1283
+#: src/xz/file_io.c
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: Odottamaton tiedoston loppu"
-#: src/xz/file_io.c:1342
+#: src/xz/file_io.c
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: Kirjoitusvirhe: %s"
-#: src/xz/hardware.c:238
+#: src/xz/hardware.c
msgid "Disabled"
msgstr "Pois käytöstä"
-#: src/xz/hardware.c:269
+#: src/xz/hardware.c
msgid "Amount of physical memory (RAM):"
msgstr "Fyysisen muistin kokonaismäärä (RAM):"
-#: src/xz/hardware.c:270
+#: src/xz/hardware.c
msgid "Number of processor threads:"
msgstr "Suoritinsäikeiden määrä:"
-#: src/xz/hardware.c:271
+#: src/xz/hardware.c
msgid "Compression:"
msgstr "Tiivistys:"
-#: src/xz/hardware.c:272
+#: src/xz/hardware.c
msgid "Decompression:"
msgstr "Purku:"
-#: src/xz/hardware.c:273
+#: src/xz/hardware.c
msgid "Multi-threaded decompression:"
msgstr "Monisäikeinen purku:"
-#: src/xz/hardware.c:274
+#: src/xz/hardware.c
msgid "Default for -T0:"
msgstr "-T0:n oletusarvo:"
-#: src/xz/hardware.c:292
+#: src/xz/hardware.c
msgid "Hardware information:"
msgstr "Laitteiston tiedot:"
-#: src/xz/hardware.c:299
+#: src/xz/hardware.c
msgid "Memory usage limits:"
msgstr "Muistinkäytön rajat:"
-#: src/xz/list.c:68
+#: src/xz/list.c
msgid "Streams:"
msgstr "Virrat:"
-#: src/xz/list.c:69
+#: src/xz/list.c
msgid "Blocks:"
msgstr "Lohkot:"
-#: src/xz/list.c:70
+#: src/xz/list.c
msgid "Compressed size:"
msgstr "Tiivistetty koko:"
-#: src/xz/list.c:71
+#: src/xz/list.c
msgid "Uncompressed size:"
msgstr "Tiivistämätön koko:"
-#: src/xz/list.c:72
+#: src/xz/list.c
msgid "Ratio:"
msgstr "Suhde:"
-#: src/xz/list.c:73
+#: src/xz/list.c
msgid "Check:"
msgstr "Tarkistus:"
-#: src/xz/list.c:74
+#: src/xz/list.c
msgid "Stream Padding:"
msgstr "Virran tasaus:"
-#: src/xz/list.c:75
+#: src/xz/list.c
msgid "Memory needed:"
msgstr "Tarvittava muisti:"
-#: src/xz/list.c:76
+#: src/xz/list.c
msgid "Sizes in headers:"
msgstr "Koot otsakkeissa:"
-#: src/xz/list.c:79
+#: src/xz/list.c
msgid "Number of files:"
msgstr "Tiedostojen määrä:"
-#: src/xz/list.c:122
+#: src/xz/list.c
msgid "Stream"
msgstr "Virta"
-#: src/xz/list.c:123
+#: src/xz/list.c
msgid "Block"
msgstr "Lohko"
-#: src/xz/list.c:124
+#: src/xz/list.c
msgid "Blocks"
msgstr "Lohkot"
-#: src/xz/list.c:125
+#: src/xz/list.c
msgid "CompOffset"
msgstr "TiivSiirr."
-#: src/xz/list.c:126
+#: src/xz/list.c
msgid "UncompOffset"
msgstr "Tv:tönSiirr."
-#: src/xz/list.c:127
+#: src/xz/list.c
msgid "CompSize"
msgstr "TiivKoko"
-#: src/xz/list.c:128
+#: src/xz/list.c
msgid "UncompSize"
msgstr "Tv:tönKoko"
-#: src/xz/list.c:129
+#: src/xz/list.c
msgid "TotalSize"
msgstr "Yht.Koko"
-#: src/xz/list.c:130
+#: src/xz/list.c
msgid "Ratio"
msgstr "Suhde"
-#: src/xz/list.c:131
+#: src/xz/list.c
msgid "Check"
msgstr "Tark."
-#: src/xz/list.c:132
+#: src/xz/list.c
msgid "CheckVal"
msgstr "Tark.arvo"
-#: src/xz/list.c:133
+#: src/xz/list.c
msgid "Padding"
msgstr "Tasaus"
-#: src/xz/list.c:134
+#: src/xz/list.c
msgid "Header"
msgstr "Otsake"
-#: src/xz/list.c:135
+#: src/xz/list.c
msgid "Flags"
msgstr "Liput"
-#: src/xz/list.c:136
+#: src/xz/list.c
msgid "MemUsage"
msgstr "Muist.käyt."
-#: src/xz/list.c:137
+#: src/xz/list.c
msgid "Filters"
msgstr "Suodattimet"
@@ -425,7 +459,7 @@ msgstr "Suodattimet"
#. This string is used in tables. In older xz version this
#. string was limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:169
+#: src/xz/list.c
msgid "None"
msgstr "Ei mitään"
@@ -433,60 +467,60 @@ msgstr "Ei mitään"
#. but the Check ID is known (here 2). In older xz version these
#. strings were limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:175
+#: src/xz/list.c
msgid "Unknown-2"
msgstr "Tuntematon-2"
-#: src/xz/list.c:176
+#: src/xz/list.c
msgid "Unknown-3"
msgstr "Tuntematon-3"
-#: src/xz/list.c:178
+#: src/xz/list.c
msgid "Unknown-5"
msgstr "Tuntematon-5"
-#: src/xz/list.c:179
+#: src/xz/list.c
msgid "Unknown-6"
msgstr "Tuntematon-6"
-#: src/xz/list.c:180
+#: src/xz/list.c
msgid "Unknown-7"
msgstr "Tuntematon-7"
-#: src/xz/list.c:181
+#: src/xz/list.c
msgid "Unknown-8"
msgstr "Tuntematon-8"
-#: src/xz/list.c:182
+#: src/xz/list.c
msgid "Unknown-9"
msgstr "Tuntematon-9"
-#: src/xz/list.c:184
+#: src/xz/list.c
msgid "Unknown-11"
msgstr "Tuntematon-11"
-#: src/xz/list.c:185
+#: src/xz/list.c
msgid "Unknown-12"
msgstr "Tuntematon-12"
-#: src/xz/list.c:186
+#: src/xz/list.c
msgid "Unknown-13"
msgstr "Tuntematon-13"
-#: src/xz/list.c:187
+#: src/xz/list.c
msgid "Unknown-14"
msgstr "Tuntematon-14"
-#: src/xz/list.c:188
+#: src/xz/list.c
msgid "Unknown-15"
msgstr "Tuntematon-15"
-#: src/xz/list.c:351
+#: src/xz/list.c
#, c-format
msgid "%s: File is empty"
msgstr "%s: Tiedosto on tyhjä"
-#: src/xz/list.c:356
+#: src/xz/list.c
#, c-format
msgid "%s: Too small to be a valid .xz file"
msgstr "%s: Liian pieni kelvolliseksi .xz-tiedostoksi"
@@ -495,64 +529,69 @@ msgstr "%s: Liian pieni kelvolliseksi .xz-tiedostoksi"
#. 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:731
+#: src/xz/list.c
msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename"
msgstr "Virrat Lohkot Tiivist. Tiivistämätön Suhde Tark. Tiedostonimi"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "Yes"
msgstr "Kyllä"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "No"
msgstr "Ei"
-#: src/xz/list.c:1028 src/xz/list.c:1206
+#: src/xz/list.c
#, c-format
msgid " Minimum XZ Utils version: %s\n"
msgstr " XZ Utilsin vähimmäisversio: %s\n"
#. TRANSLATORS: %s is an integer. Only the plural form of this
#. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz".
-#: src/xz/list.c:1179
+#: src/xz/list.c
#, c-format
msgid "%s file\n"
msgid_plural "%s files\n"
msgstr[0] "%s tiedosto\n"
msgstr[1] "%s tiedostoa\n"
-#: src/xz/list.c:1192
+#: src/xz/list.c
msgid "Totals:"
msgstr "Yhteensä:"
-#: src/xz/list.c:1270
+#: src/xz/list.c
msgid "--list works only on .xz files (--format=xz or --format=auto)"
msgstr "--list toimii vain .xz-tiedostoille (--format=xz tai --format=auto)"
-#: src/xz/list.c:1276
+#: src/xz/list.c
+msgid "Try 'lzmainfo' with .lzma files."
+msgstr ""
+
+#: src/xz/list.c
msgid "--list does not support reading from standard input"
msgstr "--list ei tue lukemista vakiosyötteestä"
-#: src/xz/main.c:89
+#: src/xz/main.c
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s: Virhe luettaessa tiedostonimiä: %s"
-#: src/xz/main.c:96
+#: src/xz/main.c
#, c-format
msgid "%s: Unexpected end of input when reading filenames"
msgstr "%s: Odottamaton syötteen loppu tiedostonimiä luettaessa"
-#: src/xz/main.c:120
-#, c-format
-msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
+#: src/xz/main.c
+#, fuzzy, c-format
+#| msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
+msgid "%s: Null character found when reading filenames; maybe you meant to use '--files0' instead of '--files'?"
msgstr "%s: Nul-merkki kohdattiin tiedostonimiä lukiessa; oliko tarkoitus antaa valitsin ”--files0” eikä ”--files”?"
-#: src/xz/main.c:188
+#: src/xz/main.c
msgid "Compression and decompression with --robot are not supported yet."
msgstr "Tiivistys ja purku --robot -valitsimen kanssa eivät ole vielä tuettuja."
-#: src/xz/main.c:266
+#: src/xz/main.c
msgid "Cannot read data from standard input when reading filenames from standard input"
msgstr "Dataa ei voi lukea vakiosyötteestä kun tiedostonimiä luetaan vakiosyötteestä"
@@ -560,68 +599,69 @@ msgstr "Dataa ei voi lukea vakiosyötteestä kun tiedostonimiä luetaan vakiosy
#. 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:670 src/xz/message.c:725
+#: src/xz/message.c
#, c-format
msgid "%s: "
msgstr "%s: "
-#: src/xz/message.c:797 src/xz/message.c:856
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
msgid "Internal error (bug)"
msgstr "Sisäinen virhe (ohjelmistovika)"
-#: src/xz/message.c:804
+#: src/xz/message.c
msgid "Cannot establish signal handlers"
msgstr "Signaalinkäsittelimiä ei voi muodostaa"
-#: src/xz/message.c:813
+#: src/xz/message.c
msgid "No integrity check; not verifying file integrity"
msgstr "Ei eheystarkastusta; ei varmenneta tiedoston eheyttä"
-#: src/xz/message.c:816
+#: src/xz/message.c
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "Ei-tuettu eheystarkastuksen tyyppi; ei varmenneta tiedoston eheyttä"
-#: src/xz/message.c:823
+#: src/xz/message.c
msgid "Memory usage limit reached"
msgstr "Muistinkäytön raja saavutettu"
-#: src/xz/message.c:826
+#: src/xz/message.c
msgid "File format not recognized"
msgstr "Tiedostomuotoa ei tunnistettu"
-#: src/xz/message.c:829
+#: src/xz/message.c
msgid "Unsupported options"
msgstr "Ei-tuetut valitsimet"
-#: src/xz/message.c:832
+#: src/xz/message.c
msgid "Compressed data is corrupt"
msgstr "Tiivistetty data on turmeltunut"
-#: src/xz/message.c:835
+#: src/xz/message.c
msgid "Unexpected end of input"
msgstr "Odottamaton syötteen loppu"
-#: src/xz/message.c:877
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "%s MiB muistia vaaditaan. Rajoitin on poistettu käytöstä."
-#: src/xz/message.c:905
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr "%s MiB muistia vaaditaan. Raja on %s."
-#: src/xz/message.c:924
+#: src/xz/message.c
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: Suodinketju: %s\n"
-#: src/xz/message.c:935
-#, c-format
-msgid "Try `%s --help' for more information."
+#: src/xz/message.c
+#, fuzzy, c-format
+#| msgid "Try `%s --help' for more information."
+msgid "Try '%s --help' for more information."
msgstr "Komento ”%s --help” antaa lisää tietoa."
-#: src/xz/message.c:961
+#: src/xz/message.c
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
@@ -632,15 +672,15 @@ msgstr ""
"Tiivistä tai pura .xz-muotoisia TIEDOSTOja.\n"
"\n"
-#: src/xz/message.c:968
+#: src/xz/message.c
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr "Pitkien valitsinten pakolliset argumentit ovat pakollisia myös lyhyille.\n"
-#: src/xz/message.c:972
+#: src/xz/message.c
msgid " Operation mode:\n"
msgstr " Toimintatila:\n"
-#: src/xz/message.c:975
+#: src/xz/message.c
msgid ""
" -z, --compress force compression\n"
" -d, --decompress force decompression\n"
@@ -652,7 +692,7 @@ msgstr ""
" -t, --test testaa tiivistetyn tiedoston eheys\n"
" -l, --list näytä tietoja .xz-tiedostoista"
-#: src/xz/message.c:981
+#: src/xz/message.c
msgid ""
"\n"
" Operation modifiers:\n"
@@ -660,7 +700,7 @@ msgstr ""
"\n"
" Toimintomääreet:\n"
-#: src/xz/message.c:984
+#: src/xz/message.c
msgid ""
" -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\n"
@@ -671,7 +711,7 @@ msgstr ""
" linkit\n"
" -c, --stdout kirjoita vakiotulosteeseen äläkä poista syötetiedostoja"
-#: src/xz/message.c:993
+#: src/xz/message.c
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
@@ -679,10 +719,18 @@ msgstr ""
" --single-stream pura vain ensimmäinen virta, ja ohita\n"
" hiljaisesti mahdollinen jäljellä oleva syötedata"
-#: src/xz/message.c:996
+#: src/xz/message.c
+#, fuzzy
+#| 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"
msgid ""
" --no-sparse do not create sparse files when decompressing\n"
-" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
+" -S, --suffix=.SUF use the suffix '.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n"
" omitted, filenames are read from the standard input;\n"
" filenames must be terminated with the newline character\n"
@@ -695,7 +743,7 @@ msgstr ""
" tiedostonimet on päätettävä rivinvaihtomerkillä\n"
" --files0[=TIED] kuten --files mutta käytä päättämiseen nul-merkkiä"
-#: src/xz/message.c:1005
+#: src/xz/message.c
msgid ""
"\n"
" Basic file format and compression options:\n"
@@ -703,23 +751,29 @@ msgstr ""
"\n"
" Tiedostomuodon ja tiivistyksen perusvalitsimet:\n"
-#: src/xz/message.c:1007
+#: src/xz/message.c
+#, fuzzy
+#| msgid ""
+#| " -F, --format=FMT file format to encode or decode; possible values are\n"
+#| " `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
+#| " -C, --check=CHECK integrity check type: `none' (use with caution),\n"
+#| " `crc32', `crc64' (default), or `sha256'"
msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n"
-" `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
-" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-" `crc32', `crc64' (default), or `sha256'"
+" 'auto' (default), 'xz', 'lzma', 'lzip', and 'raw'\n"
+" -C, --check=CHECK integrity check type: 'none' (use with caution),\n"
+" 'crc32', 'crc64' (default), or 'sha256'"
msgstr ""
" -F, --format=MUOTO tuotettava tai luettava tiedostomuoto; vaihtoehdot\n"
" ovat ”auto” (oletus), ”xz”, ”lzma”, ”lzip” ja ”raw”\n"
" -C, --check=CHECK eheystarkastuksen tyyppi: ”none” (käytä varoen),\n"
" ”crc32”, ”crc64” (oletus) tai ”sha256”"
-#: src/xz/message.c:1012
+#: src/xz/message.c
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr " --ignore-check älä suorita eheystarkastusta purettaessa"
-#: src/xz/message.c:1016
+#: src/xz/message.c
msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!"
@@ -728,7 +782,7 @@ msgstr ""
" *ja* purun muistinkäyttö huomioon ennen kuin käytät\n"
" arvoja 7–9!"
-#: src/xz/message.c:1020
+#: src/xz/message.c
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
@@ -736,15 +790,19 @@ msgstr ""
" -e, --extreme yritä parantaa tiivistyssuhdetta käyttämällä enemmän\n"
" suoritinaikaa; ei vaikuta purkimen muistivaatimuksiin"
-#: src/xz/message.c:1024
+#: src/xz/message.c
+#, fuzzy
+#| 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"
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"
+" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
+" as many threads as there are processor cores"
msgstr ""
" -T, --threads=MÄÄRÄ käytä enintää MÄÄRÄä säiettä; oletus on 1; asettamalla\n"
" 0:ksi käytetään suoritinytimien määrän verran säikeitä"
-#: src/xz/message.c:1029
+#: src/xz/message.c
msgid ""
" --block-size=SIZE\n"
" start a new .xz block after every SIZE bytes of input;\n"
@@ -754,18 +812,25 @@ msgstr ""
" aloita uusi .xz-lohko aina KOKO syötetavun jälkeen; käytä\n"
" tätä säikeistetyn tiivistyksen lohkokoon asettamiseen"
-#: src/xz/message.c:1033
+#: src/xz/message.c
+#, fuzzy
+#| msgid ""
+#| " --block-list=SIZES\n"
+#| " start a new .xz block after the given comma-separated\n"
+#| " intervals of uncompressed data"
msgid ""
-" --block-list=SIZES\n"
+" --block-list=BLOCKS\n"
" start a new .xz block after the given comma-separated\n"
-" intervals of uncompressed data"
+" intervals of uncompressed data; optionally, specify a\n"
+" filter chain number (0-9) followed by a ':' before the\n"
+" uncompressed data size"
msgstr ""
" --block-list=KOOT\n"
" aloita uusi .xz-lohko kun tiivistämätöntä dataa on\n"
" käsitelty pilkuilla erotellut tavumäärät"
# FIXME: tarvitaan kiva suomenkielinen termi block-verbille tässä merkityksessä
-#: src/xz/message.c:1037
+#: src/xz/message.c
msgid ""
" --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n"
@@ -777,7 +842,7 @@ msgstr ""
" edellisestä huuhtomisesta ja syötteen lukemisen\n"
" jatkaminen pysähtyisi, kaikki odottava data huuhdellaan"
-#: src/xz/message.c:1043
+#: src/xz/message.c
#, no-c-format
msgid ""
" --memlimit-compress=LIMIT\n"
@@ -795,7 +860,7 @@ msgstr ""
" säikeistetylle purkamisella tai näille kaikille; RAJA\n"
" on tavuja, %-osuus RAMista tai 0 oletusarvoille"
-#: src/xz/message.c:1052
+#: src/xz/message.c
msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards"
@@ -803,7 +868,7 @@ msgstr ""
" --no-adjust jos tiivistysasetukset ylittävät muistinkäytön rajan,\n"
" anna virhe äläkä pudota asetuksia alaspäin"
-#: src/xz/message.c:1058
+#: src/xz/message.c
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
@@ -811,7 +876,27 @@ msgstr ""
"\n"
" Mukautettu suodinketju tiivistykselle (vaihtoehto esiasetuksille):"
-#: src/xz/message.c:1067
+#: src/xz/message.c
+msgid ""
+"\n"
+" --filters=FILTERS set the filter chain using the liblzma filter string\n"
+" syntax; use --filters-help for more information"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters1=FILTERS ... --filters9=FILTERS\n"
+" set additional filter chains using the liblzma filter\n"
+" string syntax to use with --block-list"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters-help display more information about the liblzma filter string\n"
+" syntax and exit."
+msgstr ""
+
+#: src/xz/message.c
msgid ""
"\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
@@ -841,7 +926,19 @@ msgstr ""
" bt4; bt4)\n"
" depth=LUKU enimmäishakusyvyys; 0=automaattinen (oletus)"
-#: src/xz/message.c:1082
+#: src/xz/message.c
+#, fuzzy
+#| msgid ""
+#| "\n"
+#| " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
+#| " --arm[=OPTS] ARM BCJ filter\n"
+#| " --armthumb[=OPTS] ARM-Thumb BCJ filter\n"
+#| " --arm64[=OPTS] ARM64 BCJ filter\n"
+#| " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
+#| " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
+#| " --sparc[=OPTS] SPARC BCJ filter\n"
+#| " Valid OPTS for all BCJ filters:\n"
+#| " start=NUM start offset for conversions (default=0)"
msgid ""
"\n"
" --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
@@ -851,6 +948,7 @@ msgid ""
" --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
" --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
" --sparc[=OPTS] SPARC BCJ filter\n"
+" --riscv[=OPTS] RISC-V BCJ filter\n"
" Valid OPTS for all BCJ filters:\n"
" start=NUM start offset for conversions (default=0)"
msgstr ""
@@ -865,7 +963,7 @@ msgstr ""
" Kelvolliset ASETukset kaikille BCJ-suotimille:\n"
" start=LUKU muunnoksien aloitussiirtymä (oletus=0)"
-#: src/xz/message.c:1095
+#: src/xz/message.c
msgid ""
"\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n"
@@ -877,7 +975,7 @@ msgstr ""
" dist=LUKU toisistaan vähennettävien tavujen\n"
" välinen etäisyys (1–256; 1)"
-#: src/xz/message.c:1103
+#: src/xz/message.c
msgid ""
"\n"
" Other options:\n"
@@ -885,7 +983,7 @@ msgstr ""
"\n"
" Muut valitsimet:\n"
-#: src/xz/message.c:1106
+#: src/xz/message.c
msgid ""
" -q, --quiet suppress warnings; specify twice to suppress errors too\n"
" -v, --verbose be verbose; specify twice for even more verbose"
@@ -893,15 +991,15 @@ msgstr ""
" -q, --quiet vaienna varoitukset; kahdesti antamalla myös virheet\n"
" -v, --verbose ole lavea; kahdesti antamalla vieläkin laveampi"
-#: src/xz/message.c:1111
+#: src/xz/message.c
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr " -Q, --no-warn älkööt varoitukset vaikuttako paluuarvoon"
-#: src/xz/message.c:1113
+#: src/xz/message.c
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr " --robot käytä koneluettavia viestejä (sopii skripteihin)"
-#: src/xz/message.c:1116
+#: src/xz/message.c
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
@@ -909,7 +1007,7 @@ msgstr ""
" --info-memory näytä RAM-muistin kokonaismäärä ja parhaillaan\n"
" vallitsevat muistinkäytön rajat, ja poistu"
-#: src/xz/message.c:1119
+#: src/xz/message.c
msgid ""
" -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit"
@@ -917,7 +1015,7 @@ msgstr ""
" -h, --help näytä lyhyt ohje (kertoo vain perusvalitsimet)\n"
" -H, --long-help näytä tämä pitkä ohje ja poistu"
-#: src/xz/message.c:1123
+#: src/xz/message.c
msgid ""
" -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)"
@@ -925,11 +1023,12 @@ msgstr ""
" -h, --help näytä tämä lyhyt ohje ja poistu\n"
" -H, --long-help näytä pitkä ohje (kertoo myös lisävalitsimet)"
-#: src/xz/message.c:1128
+#: src/xz/message.c
msgid " -V, --version display the version number and exit"
msgstr " -V, --version näytä versionumero ja poistu"
-#: src/xz/message.c:1130
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
+#, c-format
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
@@ -941,94 +1040,133 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks.
-#: src/xz/message.c:1136
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr "Ilmoita ohjelmistovioista (suomeksi) osoitteeseen <%s>.\n"
-#: src/xz/message.c:1138
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "%s home page: <%s>\n"
msgstr "%s -kotisivu: <%s>\n"
-#: src/xz/message.c:1142
+#: src/xz/message.c
msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
msgstr "TÄMÄ ON KEHITYSVERSIO, JOTA EI OLE TARKOITETTU TUOTANTOKÄYTTÖÖN."
-#: src/xz/options.c:86
-#, c-format
-msgid "%s: Options must be `name=value' pairs separated with commas"
+#: src/xz/message.c
+msgid ""
+"Filter chains are set using the --filters=FILTERS or\n"
+"--filters1=FILTERS ... --filters9=FILTERS options. Each filter in the chain\n"
+"can be separated by spaces or '--'. Alternatively a preset <0-9>[e] can be\n"
+"specified instead of a filter chain.\n"
+msgstr ""
+
+#: src/xz/message.c
+#, fuzzy
+#| msgid "Unsupported filter chain or filter options"
+msgid "The supported filters and their options are:"
+msgstr "Ei-tuettu suodinketju tai suotimen asetukset"
+
+#: src/xz/options.c
+#, fuzzy, c-format
+#| msgid "%s: Options must be `name=value' pairs separated with commas"
+msgid "%s: Options must be 'name=value' pairs separated with commas"
msgstr "%s: Asetusten on oltava pilkuilla eroteltuja ”nimi=arvo” -pareja"
-#: src/xz/options.c:93
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option name"
msgstr "%s: Virheellinen asetuksen nimi"
-#: src/xz/options.c:113
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option value"
msgstr "%s: Virheellinen asetuksen arvo"
-#: src/xz/options.c:248
+#: src/xz/options.c
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "Ei-tuettu LZMA1/LZMA2-esiasetus: %s"
-#: src/xz/options.c:356
+#: src/xz/options.c
msgid "The sum of lc and lp must not exceed 4"
msgstr "lc:n ja lp:n summa ei saa olla yli 4"
-#: src/xz/suffix.c:160
+#: src/xz/suffix.c
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: Tiedostonimen pääte on tuntematon, ohitetaan"
-#: src/xz/suffix.c:181
-#, c-format
-msgid "%s: File already has `%s' suffix, skipping"
+#: src/xz/suffix.c
+#, fuzzy, c-format
+#| msgid "%s: File already has `%s' suffix, skipping"
+msgid "%s: File already has '%s' suffix, skipping"
msgstr "%s: Tiedostolla on jo ”%s”-pääte, ohitetaan"
-#: src/xz/suffix.c:388
+#: src/xz/suffix.c
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s: Virheellinen tiedostonimen pääte"
-#: src/xz/util.c:107
+#: src/xz/util.c
#, c-format
msgid "%s: Value is not a non-negative decimal integer"
msgstr "%s: Arvo ei ole ei ole epänegatiivinen kymmenkantainen kokonaisluku"
-#: src/xz/util.c:149
+#: src/xz/util.c
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s: Tuntematon kerroin"
-#: src/xz/util.c:151
-msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+#: src/xz/util.c
+#, fuzzy
+#| msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+msgid "Valid suffixes are 'KiB' (2^10), 'MiB' (2^20), and 'GiB' (2^30)."
msgstr "Kelvolliset kertoimet ovat ”KiB” (2¹⁰), ”MiB” (2²⁰) ja ”GiB” (2³⁰)."
-#: src/xz/util.c:168
-#, c-format
-msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+#: src/xz/util.c
+#, fuzzy, c-format
+#| msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+msgid "Value of the option '%s' must be in the range [%<PRIu64>, %<PRIu64>]"
msgstr "Valitsimen ”%s” arvon on oltava välillä [%<PRIu64>, %<PRIu64>]"
-#: src/xz/util.c:270
+#: src/xz/util.c
msgid "Compressed data cannot be read from a terminal"
msgstr "Tiivistettyä dataa ei voi lukea päätteestä"
-#: src/xz/util.c:283
+#: src/xz/util.c
msgid "Compressed data cannot be written to a terminal"
msgstr "Tiivistettyä dataa ei voi kirjoittaa päätteeseen"
-#: src/common/tuklib_exit.c:40
+#: src/lzmainfo/lzmainfo.c
+#, c-format
+msgid ""
+"Usage: %s [--help] [--version] [FILE]...\n"
+"Show information stored in the .lzma file header"
+msgstr ""
+
+#: src/lzmainfo/lzmainfo.c
+#, fuzzy
+#| msgid "%s: Too small to be a valid .xz file"
+msgid "File is too small to be a .lzma file"
+msgstr "%s: Liian pieni kelvolliseksi .xz-tiedostoksi"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "Not a .lzma file"
+msgstr ""
+
+#: src/common/tuklib_exit.c
msgid "Writing to standard output failed"
msgstr "Vakiotulosteeseen kirjoitus epäonnistui"
-#: src/common/tuklib_exit.c:43
+#: src/common/tuklib_exit.c
msgid "Unknown error"
msgstr "Tuntematon virhe"
+#~ msgid "Failed to enable the sandbox"
+#~ msgstr "Hiekkalaatikon ottaminen käyttöön epäonnistui"
+
#, c-format
#~ msgid "The selected match finder requires at least nice=%<PRIu32>"
#~ msgstr "Valittu täsmäävyydenetsin vaatii vähintään nice-arvon=%<PRIu32>"
diff --git a/po/fr.gmo b/po/fr.gmo
index 0ee4955..519637b 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index acc3aac..9c050d3 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -1,14 +1,14 @@
# XZ Utils French Translation
# This file is put in the public domain.
# Adrien Nader <adrien@notk.org>, 2011-2014.
-# Stéphane Aulery <lkppo@free.fr>, 2019.
+# Stéphane Aulery <lkppo@free.fr>, 2019-2023.
#
msgid ""
msgstr ""
-"Project-Id-Version: xz-5.2.4\n"
+"Project-Id-Version: xz-5.4.4-pre1\n"
"Report-Msgid-Bugs-To: xz@tukaani.org\n"
-"POT-Creation-Date: 2023-10-31 22:33+0800\n"
-"PO-Revision-Date: 2019-05-12 05:46+0200\n"
+"POT-Creation-Date: 2024-05-29 17:41+0300\n"
+"PO-Revision-Date: 2023-12-19 04:12+0100\n"
"Last-Translator: Stéphane Aulery <lkppo@free.fr>\n"
"Language-Team: French <traduc@traduc.org>\n"
"Language: fr\n"
@@ -18,147 +18,179 @@ msgstr ""
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n==1) ? 0 : 1;\n"
-#: src/xz/args.c:77
+#: src/xz/args.c
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr "%s : argument de l'option --block-list invalide"
-#: src/xz/args.c:87
+#: src/xz/args.c
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s : trop d'arguments pour l'option --block-list"
-#: src/xz/args.c:116
+#: src/xz/args.c
+#, c-format
+msgid "In --block-list, block size is missing after filter chain number '%c:'"
+msgstr ""
+
+#: src/xz/args.c
msgid "0 can only be used as the last element in --block-list"
msgstr "0 peut seulement être utilisé en dernier élément de --block-list"
-#: src/xz/args.c:451
+#: src/xz/args.c
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s : Format de fichier inconnu"
-#: src/xz/args.c:474 src/xz/args.c:482
+#: src/xz/args.c
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s : Type de vérification d'intégrité inconnu"
-#: src/xz/args.c:518
-msgid "Only one file can be specified with `--files' or `--files0'."
+#: src/xz/args.c
+#, fuzzy
+#| msgid "Only one file can be specified with `--files' or `--files0'."
+msgid "Only one file can be specified with '--files' or '--files0'."
msgstr "Un seul fichier peut être spécifié avec `--files' ou `--files0'."
#. TRANSLATORS: This is a translatable
#. string because French needs a space
#. before the colon ("%s : %s").
-#: src/xz/args.c:533 src/xz/coder.c:692 src/xz/coder.c:708 src/xz/coder.c:968
-#: src/xz/coder.c:971 src/xz/file_io.c:605 src/xz/file_io.c:679
-#: src/xz/file_io.c:769 src/xz/file_io.c:940 src/xz/list.c:369
-#: src/xz/list.c:415 src/xz/list.c:477 src/xz/list.c:581 src/xz/list.c:590
+#: src/xz/args.c src/xz/coder.c src/xz/file_io.c src/xz/list.c
#, fuzzy, c-format
#| msgid "%s: "
msgid "%s: %s"
msgstr "%s : "
-#: src/xz/args.c:589
+#: src/xz/args.c
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "La variable d'environnement %s contient trop d'arguments"
-#: src/xz/args.c:691
+#: src/xz/args.c
msgid "Compression support was disabled at build time"
msgstr "Le support de la compression à était désactivé lors de la compilaton"
-#: src/xz/args.c:698
+#: src/xz/args.c
msgid "Decompression support was disabled at build time"
msgstr "Le support de la décompression a été désactivé lors de la compilation"
-#: src/xz/args.c:704
+#: src/xz/args.c
msgid "Compression of lzip files (.lz) is not supported"
msgstr ""
-#: src/xz/args.c:735
+#: src/xz/args.c
+msgid "--block-list is ignored unless compressing to the .xz format"
+msgstr ""
+
+#: src/xz/args.c
#, fuzzy
#| msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "%s : Avec --format=raw, --suffix=.SUF est nécessaire sauf lors de l'écriture vers stdout"
-#: src/xz/coder.c:115
+#: src/xz/coder.c
msgid "Maximum number of filters is four"
msgstr "Le nombre maximal de filtres est quatre"
-#: src/xz/coder.c:135
+#: src/xz/coder.c
+#, c-format
+msgid "Error in --filters%s=FILTERS option:"
+msgstr ""
+
+#: src/xz/coder.c
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:170
+#: src/xz/coder.c
+#, c-format
+msgid "filter chain %u used by --block-list but not specified with --filters%u="
+msgstr ""
+
+#: src/xz/coder.c
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:172
+#: src/xz/coder.c
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:195
+#: src/xz/coder.c
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:203
+#: src/xz/coder.c
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:220
-msgid "The filter chain is incompatible with --flush-timeout"
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "The filter chain is incompatible with --flush-timeout"
+msgid "Filter chain %u is incompatible with --flush-timeout"
msgstr "La Chaine de filtre est incompatible avec --flush-timeout"
-#: src/xz/coder.c:226
+#: src/xz/coder.c
msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr "Bascule en mode mono-processus à cause de --flush-timeout"
-#: src/xz/coder.c:250
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Unsupported options"
+msgid "Unsupported options in filter chain %u"
+msgstr "Options non prises en charge"
+
+#: src/xz/coder.c
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "Jusqu'à %<PRIu32> threads seront utilisés."
-#: src/xz/coder.c:266
+#: src/xz/coder.c
msgid "Unsupported filter chain or filter options"
msgstr "Enchaînement ou options de filtres non pris en charge"
-#: src/xz/coder.c:278
+#: src/xz/coder.c
#, 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:310
+#: src/xz/coder.c
#, fuzzy, c-format
-#| msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgstr "Nombre de threads réduit de %s à %s pour ne pas dépasser la limite d'utilisation mémoire de %s MiB"
-#: src/xz/coder.c:330
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway."
msgstr ""
-#: src/xz/coder.c:357
+#: src/xz/coder.c
#, fuzzy, c-format
-#| msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB"
msgstr "Nombre de threads réduit de %s à %s pour ne pas dépasser la limite d'utilisation mémoire de %s MiB"
-#: src/xz/coder.c:412
+#: src/xz/coder.c
#, 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:110 src/xz/file_io.c:118
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgid "Adjusted LZMA%c dictionary size for --filters%u 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/coder.c
+#, fuzzy, c-format
+#| msgid "Error creating a pipe: %s"
+msgid "Error changing to filter chain %u: %s"
+msgstr "Impossible de créer un tube anonyme (pipe) : %s"
+
+#: src/xz/file_io.c
#, c-format
msgid "Error creating a pipe: %s"
msgstr "Impossible de créer un tube anonyme (pipe) : %s"
-#: src/xz/file_io.c:252
-msgid "Failed to enable the sandbox"
-msgstr "Echec de l'activation de la sandboxe"
-
-#: src/xz/file_io.c:294
+#: src/xz/file_io.c
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s : L'appel à la fonction poll() a échoué : %s"
@@ -173,27 +205,27 @@ msgstr "%s : L'appel à la fonction poll() a échoué : %s"
#. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously
#. shouldn't be removed.
-#: src/xz/file_io.c:361
+#: src/xz/file_io.c
#, 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:368 src/xz/file_io.c:924
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s : Impossible de supprimer : %s"
-#: src/xz/file_io.c:394
+#: src/xz/file_io.c
#, 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:407
+#: src/xz/file_io.c
#, 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:426
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s : Impossible de modifier les permissions du fichier : %s"
@@ -206,249 +238,239 @@ msgstr "%s : Impossible de modifier les permissions du fichier : %s"
# - make it more difficult to look up in search engines; it might happen one in
# a million times, if we dilute the error message in 20 languages, it will be
# almost impossible to find an explanation and support for the error.
-#: src/xz/file_io.c:552
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "Echec de la lecture du drapeau d'état du fichier depuis la sortie standard : %s"
-#: src/xz/file_io.c:610 src/xz/file_io.c:672
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s est un lien symbolique : ignoré"
-#: src/xz/file_io.c:701
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s est un répertoire : ignoré"
-#: src/xz/file_io.c:707
+#: src/xz/file_io.c
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s n'est pas un fichier régulier : ignoré"
-#: src/xz/file_io.c:724
+#: src/xz/file_io.c
#, 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:731
+#: src/xz/file_io.c
#, 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:738
+#: src/xz/file_io.c
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s : Le fichier d'entrée a plus d'un lien matériel : ignoré"
-#: src/xz/file_io.c:780
+#: src/xz/file_io.c
msgid "Empty filename, skipping"
msgstr "Nom de fichier vide, ignoré"
# See note from translator above titled "file status flags".
-#: src/xz/file_io.c:834
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "Erreur de restauration du drapeau d'état de l'entrée standard : %s"
# See note from translator above titled "file status flags".
-#: src/xz/file_io.c:882
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "Erreur de lecture du drapeau d'état du fichier depuis la sortie standard : %s"
-#: src/xz/file_io.c:1081
+#: src/xz/file_io.c
#, 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:1093
+#: src/xz/file_io.c
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s : Impossible de fermer le fichier : %s"
-#: src/xz/file_io.c:1129 src/xz/file_io.c:1391
+#: src/xz/file_io.c
#, 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:1229
+#: src/xz/file_io.c
#, c-format
msgid "%s: Read error: %s"
msgstr "%s : Erreur d'écriture : %s"
-#: src/xz/file_io.c:1259
+#: src/xz/file_io.c
#, 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:1283
+#: src/xz/file_io.c
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s : Fin de fichier inattendue"
-#: src/xz/file_io.c:1342
+#: src/xz/file_io.c
#, c-format
msgid "%s: Write error: %s"
msgstr "%s : Erreur d'écriture : %s"
-#: src/xz/hardware.c:238
+#: src/xz/hardware.c
msgid "Disabled"
msgstr "Désactivé"
-#: src/xz/hardware.c:269
+#: src/xz/hardware.c
#, fuzzy
-#| msgid "Total amount of physical memory (RAM): "
msgid "Amount of physical memory (RAM):"
msgstr "Quantité totale de mémoire physique (RAM) : "
-#: src/xz/hardware.c:270
+#: src/xz/hardware.c
msgid "Number of processor threads:"
msgstr ""
-#: src/xz/hardware.c:271
+#: src/xz/hardware.c
msgid "Compression:"
msgstr ""
-#: src/xz/hardware.c:272
+#: src/xz/hardware.c
msgid "Decompression:"
msgstr ""
-#: src/xz/hardware.c:273
+#: src/xz/hardware.c
#, fuzzy
-#| msgid "Memory usage limit for decompression: "
msgid "Multi-threaded decompression:"
msgstr "Limite d'utilisation pour la décompression : "
-#: src/xz/hardware.c:274
+#: src/xz/hardware.c
msgid "Default for -T0:"
msgstr ""
-#: src/xz/hardware.c:292
+#: src/xz/hardware.c
msgid "Hardware information:"
msgstr ""
-#: src/xz/hardware.c:299
+#: src/xz/hardware.c
#, fuzzy
-#| msgid "Memory usage limit reached"
msgid "Memory usage limits:"
msgstr "Limite d'utilisation mémoire atteinte"
-#: src/xz/list.c:68
+#: src/xz/list.c
msgid "Streams:"
msgstr ""
-#: src/xz/list.c:69
+#: src/xz/list.c
msgid "Blocks:"
msgstr ""
-#: src/xz/list.c:70
+#: src/xz/list.c
#, fuzzy
-#| msgid " Compressed size: %s\n"
msgid "Compressed size:"
msgstr " Taille données avec compression : %s\n"
-#: src/xz/list.c:71
+#: src/xz/list.c
#, fuzzy
-#| msgid " Uncompressed size: %s\n"
msgid "Uncompressed size:"
msgstr " Taille données sans compression : %s\n"
-#: src/xz/list.c:72
+#: src/xz/list.c
msgid "Ratio:"
msgstr ""
-#: src/xz/list.c:73
+#: src/xz/list.c
msgid "Check:"
msgstr ""
-#: src/xz/list.c:74
+#: src/xz/list.c
#, fuzzy
-#| msgid " Stream padding: %s\n"
msgid "Stream Padding:"
msgstr " Octets de rembourrage du flux : %s\n"
-#: src/xz/list.c:75
+#: src/xz/list.c
#, fuzzy
-#| msgid " Memory needed: %s MiB\n"
msgid "Memory needed:"
msgstr " Mémoire nécessaire : %s MiB\n"
-#: src/xz/list.c:76
+#: src/xz/list.c
#, fuzzy
-#| msgid " Sizes in headers: %s\n"
msgid "Sizes in headers:"
msgstr " Tailles stockées dans l'en-tête : %s\n"
-#: src/xz/list.c:79
+#: src/xz/list.c
#, fuzzy
-#| msgid " Number of files: %s\n"
msgid "Number of files:"
msgstr " Nombre de fichiers : %s\n"
-#: src/xz/list.c:122
+#: src/xz/list.c
msgid "Stream"
msgstr ""
-#: src/xz/list.c:123
+#: src/xz/list.c
msgid "Block"
msgstr ""
-#: src/xz/list.c:124
+#: src/xz/list.c
msgid "Blocks"
msgstr ""
-#: src/xz/list.c:125
+#: src/xz/list.c
msgid "CompOffset"
msgstr ""
-#: src/xz/list.c:126
+#: src/xz/list.c
msgid "UncompOffset"
msgstr ""
-#: src/xz/list.c:127
+#: src/xz/list.c
msgid "CompSize"
msgstr ""
-#: src/xz/list.c:128
+#: src/xz/list.c
msgid "UncompSize"
msgstr ""
-#: src/xz/list.c:129
+#: src/xz/list.c
#, fuzzy
-#| msgid "Totals:"
msgid "TotalSize"
msgstr "Totaux :"
-#: src/xz/list.c:130
+#: src/xz/list.c
msgid "Ratio"
msgstr ""
-#: src/xz/list.c:131
+#: src/xz/list.c
msgid "Check"
msgstr ""
-#: src/xz/list.c:132
+#: src/xz/list.c
msgid "CheckVal"
msgstr ""
-#: src/xz/list.c:133
+#: src/xz/list.c
msgid "Padding"
msgstr ""
-#: src/xz/list.c:134
+#: src/xz/list.c
msgid "Header"
msgstr ""
-#: src/xz/list.c:135
+#: src/xz/list.c
msgid "Flags"
msgstr ""
-#: src/xz/list.c:136
+#: src/xz/list.c
msgid "MemUsage"
msgstr ""
-#: src/xz/list.c:137
+#: src/xz/list.c
msgid "Filters"
msgstr ""
@@ -456,7 +478,7 @@ msgstr ""
#. This string is used in tables. In older xz version this
#. string was limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:169
+#: src/xz/list.c
msgid "None"
msgstr "Aucune"
@@ -464,60 +486,60 @@ msgstr "Aucune"
#. but the Check ID is known (here 2). In older xz version these
#. strings were limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:175
+#: src/xz/list.c
msgid "Unknown-2"
msgstr "Inconnue-2"
-#: src/xz/list.c:176
+#: src/xz/list.c
msgid "Unknown-3"
msgstr "Inconnue-3"
-#: src/xz/list.c:178
+#: src/xz/list.c
msgid "Unknown-5"
msgstr "Inconnue-5"
-#: src/xz/list.c:179
+#: src/xz/list.c
msgid "Unknown-6"
msgstr "Inconnue-6"
-#: src/xz/list.c:180
+#: src/xz/list.c
msgid "Unknown-7"
msgstr "Inconnue-7"
-#: src/xz/list.c:181
+#: src/xz/list.c
msgid "Unknown-8"
msgstr "Inconnue-8"
-#: src/xz/list.c:182
+#: src/xz/list.c
msgid "Unknown-9"
msgstr "Inconnue-9"
-#: src/xz/list.c:184
+#: src/xz/list.c
msgid "Unknown-11"
msgstr "Inconnue-11"
-#: src/xz/list.c:185
+#: src/xz/list.c
msgid "Unknown-12"
msgstr "Inconnue-12"
-#: src/xz/list.c:186
+#: src/xz/list.c
msgid "Unknown-13"
msgstr "Inconnue-13"
-#: src/xz/list.c:187
+#: src/xz/list.c
msgid "Unknown-14"
msgstr "Inconnue-14"
-#: src/xz/list.c:188
+#: src/xz/list.c
msgid "Unknown-15"
msgstr "Inconnue-15"
-#: src/xz/list.c:351
+#: src/xz/list.c
#, c-format
msgid "%s: File is empty"
msgstr "%s : Le fichier est vide"
-#: src/xz/list.c:356
+#: src/xz/list.c
#, c-format
msgid "%s: Too small to be a valid .xz file"
msgstr "%s : Trop petit pour être un fichier xz valide."
@@ -526,64 +548,69 @@ msgstr "%s : Trop petit pour être un fichier xz valide."
#. to Ratio, the columns are right aligned. Check and Filename
#. are left aligned. If you need longer words, it's OK to
#. use two lines here. Test with "xz -l foo.xz".
-#: src/xz/list.c:731
+#: src/xz/list.c
msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename"
msgstr "Flux Blocs Compressé Décompressé Ratio Vérif. Nom de fichier"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "Yes"
msgstr "Oui"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "No"
msgstr "Non"
-#: src/xz/list.c:1028 src/xz/list.c:1206
+#: src/xz/list.c
#, 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:1179
+#: src/xz/list.c
#, 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:1192
+#: src/xz/list.c
msgid "Totals:"
msgstr "Totaux :"
-#: src/xz/list.c:1270
+#: src/xz/list.c
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:1276
+#: src/xz/list.c
+msgid "Try 'lzmainfo' with .lzma files."
+msgstr ""
+
+#: src/xz/list.c
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
+#: src/xz/main.c
#, 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
+#: src/xz/main.c
#, 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'?"
+#: src/xz/main.c
+#, fuzzy, c-format
+#| msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
+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:188
+#: src/xz/main.c
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:266
+#: src/xz/main.c
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"
@@ -591,68 +618,69 @@ msgstr "Impossible de lire à la fois les données et les noms de fichiers depui
#. of the line in messages. Usually it becomes "xz: ".
#. This is a translatable string because French needs
#. a space before a colon.
-#: src/xz/message.c:670 src/xz/message.c:725
+#: src/xz/message.c
#, c-format
msgid "%s: "
msgstr "%s : "
-#: src/xz/message.c:797 src/xz/message.c:856
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
msgid "Internal error (bug)"
msgstr "Erreur interne (bug)"
-#: src/xz/message.c:804
+#: src/xz/message.c
msgid "Cannot establish signal handlers"
msgstr "Impossible d'installer le gestionnaire de signaux"
-#: src/xz/message.c:813
+#: src/xz/message.c
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:816
+#: src/xz/message.c
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:823
+#: src/xz/message.c
msgid "Memory usage limit reached"
msgstr "Limite d'utilisation mémoire atteinte"
-#: src/xz/message.c:826
+#: src/xz/message.c
msgid "File format not recognized"
msgstr "Format de fichier inconnu"
-#: src/xz/message.c:829
+#: src/xz/message.c
msgid "Unsupported options"
msgstr "Options non prises en charge"
-#: src/xz/message.c:832
+#: src/xz/message.c
msgid "Compressed data is corrupt"
msgstr "Les données compressées sont corrompues"
-#: src/xz/message.c:835
+#: src/xz/message.c
msgid "Unexpected end of input"
msgstr "Fin des données inattendue "
-#: src/xz/message.c:877
+#: src/xz/message.c
#, 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:905
+#: src/xz/message.c
#, 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:924
+#: src/xz/message.c
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s : Enchaînement de filtres : %s\n"
-#: src/xz/message.c:935
-#, c-format
-msgid "Try `%s --help' for more information."
+#: src/xz/message.c
+#, fuzzy, c-format
+#| msgid "Try `%s --help' for more information."
+msgid "Try '%s --help' for more information."
msgstr "Éxécutez `%s --help' pour obtenir davantage d'informations."
-#: src/xz/message.c:961
+#: src/xz/message.c
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
@@ -663,17 +691,17 @@ msgstr ""
"Compresse ou decompresse FICHIER(s) au format .xz.\n"
"\n"
-#: src/xz/message.c:968
+#: src/xz/message.c
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:972
+#: src/xz/message.c
msgid " Operation mode:\n"
msgstr " Mode d'opération :\n"
-#: src/xz/message.c:975
+#: src/xz/message.c
msgid ""
" -z, --compress force compression\n"
" -d, --decompress force decompression\n"
@@ -685,7 +713,7 @@ msgstr ""
" -t, --test tester l'intégrité du fichier compressé\n"
" -l, --list lister les informations sur les fichiers .xz"
-#: src/xz/message.c:981
+#: src/xz/message.c
msgid ""
"\n"
" Operation modifiers:\n"
@@ -693,7 +721,7 @@ msgstr ""
"\n"
" Modificateurs :\n"
-#: src/xz/message.c:984
+#: src/xz/message.c
msgid ""
" -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\n"
@@ -705,7 +733,7 @@ msgstr ""
" -c, --stdout écrire sur la sortie standard et ne pas supprimer les\n"
" fichiers d'entrée"
-#: src/xz/message.c:993
+#: src/xz/message.c
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
@@ -713,10 +741,18 @@ msgstr ""
" --single-stream décompresser uniquement le premier flux et ignorer\n"
" silencieusement les données éventuellement restantes"
-#: src/xz/message.c:996
+#: src/xz/message.c
+#, fuzzy
+#| 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"
msgid ""
" --no-sparse do not create sparse files when decompressing\n"
-" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
+" -S, --suffix=.SUF use the suffix '.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n"
" omitted, filenames are read from the standard input;\n"
" filenames must be terminated with the newline character\n"
@@ -729,7 +765,7 @@ msgstr ""
" et doivent être suivis d'un caractère retour à la ligne\n"
" --files0[=FILE] comme --files mais avec un caractère null comme séparateur"
-#: src/xz/message.c:1005
+#: src/xz/message.c
msgid ""
"\n"
" Basic file format and compression options:\n"
@@ -737,31 +773,26 @@ msgstr ""
"\n"
" Options basiques de format de fichier et de compression :\n"
-#: src/xz/message.c:1007
+#: src/xz/message.c
#, fuzzy
-#| msgid ""
-#| " -F, --format=FMT file format to encode or decode; possible values are\n"
-#| " `auto' (default), `xz', `lzma', and `raw'\n"
-#| " -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-#| " `crc32', `crc64' (default), or `sha256'"
msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n"
-" `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
-" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-" `crc32', `crc64' (default), or `sha256'"
+" 'auto' (default), 'xz', 'lzma', 'lzip', and 'raw'\n"
+" -C, --check=CHECK integrity check type: 'none' (use with caution),\n"
+" 'crc32', 'crc64' (default), or 'sha256'"
msgstr ""
" -F, --format=FMT 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:1012
+#: src/xz/message.c
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:1016
+#: src/xz/message.c
msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!"
@@ -770,7 +801,7 @@ msgstr ""
" l'utilisation mémoire du compresseur *et* du décompresseur\n"
" avant d'utiliser 7, 8 ou 9 !"
-#: src/xz/message.c:1020
+#: src/xz/message.c
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
@@ -779,16 +810,20 @@ msgstr ""
" de temps processeur ;\n"
" n'affecte pas les besoins mémoire du décompresseur"
-#: src/xz/message.c:1024
+#: src/xz/message.c
+#, fuzzy
+#| 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"
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"
+" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
+" 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:1029
+#: src/xz/message.c
msgid ""
" --block-size=SIZE\n"
" start a new .xz block after every SIZE bytes of input;\n"
@@ -798,17 +833,24 @@ msgstr ""
" débuter un bloc XZ après chaque TAILLE octets de données\n"
" d'entrée ; ce réglage sert pour la compression paralléle"
-#: src/xz/message.c:1033
+#: src/xz/message.c
+#, fuzzy
+#| msgid ""
+#| " --block-list=SIZES\n"
+#| " start a new .xz block after the given comma-separated\n"
+#| " intervals of uncompressed data"
msgid ""
-" --block-list=SIZES\n"
+" --block-list=BLOCKS\n"
" start a new .xz block after the given comma-separated\n"
-" intervals of uncompressed data"
+" intervals of uncompressed data; optionally, specify a\n"
+" filter chain number (0-9) followed by a ':' before the\n"
+" uncompressed data size"
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:1037
+#: src/xz/message.c
msgid ""
" --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n"
@@ -818,16 +860,10 @@ msgstr ""
" --flush-timeout=TIMEOUT\n"
" pendant la compression, si plus de TIMEOUT ms ont passées\n"
" depuis le dernier flush et que la lecture est bloquée,\n"
-" toutes les données en attente snt écrites"
+" toutes les données en attente sont écrites"
-#: src/xz/message.c:1043
+#: src/xz/message.c
#, fuzzy, no-c-format
-#| msgid ""
-#| " --memlimit-compress=LIMIT\n"
-#| " --memlimit-decompress=LIMIT\n"
-#| " -M, --memlimit=LIMIT\n"
-#| " set memory usage limit for compression, decompression,\n"
-#| " or both; LIMIT is in bytes, % of RAM, or 0 for defaults"
msgid ""
" --memlimit-compress=LIMIT\n"
" --memlimit-decompress=LIMIT\n"
@@ -844,7 +880,7 @@ msgstr ""
" décompression ou les deux ; LIMIT est en octets,\n"
" pourcentage de RAM, ou 0 pour la valeur par défaut"
-#: src/xz/message.c:1052
+#: src/xz/message.c
msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards"
@@ -853,7 +889,7 @@ msgstr ""
" d'utilisation mémoire, renvoyer une erreur plutôt que de\n"
" diminuer les réglages"
-#: src/xz/message.c:1058
+#: src/xz/message.c
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
@@ -861,7 +897,27 @@ msgstr ""
"\n"
" Chaîne de filtres de compression personnalisée (en lieu des préréglages) :"
-#: src/xz/message.c:1067
+#: src/xz/message.c
+msgid ""
+"\n"
+" --filters=FILTERS set the filter chain using the liblzma filter string\n"
+" syntax; use --filters-help for more information"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters1=FILTERS ... --filters9=FILTERS\n"
+" set additional filter chains using the liblzma filter\n"
+" string syntax to use with --block-list"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters-help display more information about the liblzma filter string\n"
+" syntax and exit."
+msgstr ""
+
+#: src/xz/message.c
msgid ""
"\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
@@ -890,18 +946,8 @@ msgstr ""
" depth=NUM profondeur de recherche maximale ;\n"
" 0=automatique (par défaut)"
-#: src/xz/message.c:1082
+#: src/xz/message.c
#, fuzzy
-#| msgid ""
-#| "\n"
-#| " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
-#| " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
-#| " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
-#| " --arm[=OPTS] ARM BCJ filter (little endian only)\n"
-#| " --armthumb[=OPTS] ARM-Thumb BCJ filter (little endian only)\n"
-#| " --sparc[=OPTS] SPARC BCJ filter\n"
-#| " Valid OPTS for all BCJ filters:\n"
-#| " start=NUM start offset for conversions (default=0)"
msgid ""
"\n"
" --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
@@ -911,6 +957,7 @@ msgid ""
" --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
" --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
" --sparc[=OPTS] SPARC BCJ filter\n"
+" --riscv[=OPTS] RISC-V BCJ filter\n"
" Valid OPTS for all BCJ filters:\n"
" start=NUM start offset for conversions (default=0)"
msgstr ""
@@ -924,7 +971,7 @@ msgstr ""
" OPTS valides pour tous les filtres BCJ :\n"
" start=NUM position de début de la conversion (défaut=0)"
-#: src/xz/message.c:1095
+#: src/xz/message.c
msgid ""
"\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n"
@@ -936,7 +983,7 @@ msgstr ""
" dist=NUM distance entre les octets soustraits les\n"
" uns aux autres (1-256 ; 1)"
-#: src/xz/message.c:1103
+#: src/xz/message.c
msgid ""
"\n"
" Other options:\n"
@@ -944,7 +991,7 @@ msgstr ""
"\n"
" Autres options :\n"
-#: src/xz/message.c:1106
+#: src/xz/message.c
msgid ""
" -q, --quiet suppress warnings; specify twice to suppress errors too\n"
" -v, --verbose be verbose; specify twice for even more verbose"
@@ -953,17 +1000,17 @@ msgstr ""
" aussi masquer les erreurs\n"
" -v, --verbose être bavard ; spécifier deux fois pour l'être davantage"
-#: src/xz/message.c:1111
+#: src/xz/message.c
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:1113
+#: src/xz/message.c
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:1116
+#: src/xz/message.c
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
@@ -971,7 +1018,7 @@ msgstr ""
" --info-memory afficher la quantité totale de RAM ainsi que la limite\n"
" actuelle d'utilisation mémoire puis quitter"
-#: src/xz/message.c:1119
+#: src/xz/message.c
msgid ""
" -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit"
@@ -979,7 +1026,7 @@ msgstr ""
" -h, --help afficher l'aide courte (ne liste que les options de base)\n"
" -H, --long-help afficher l'aide longue (ceci) puis quitter"
-#: src/xz/message.c:1123
+#: src/xz/message.c
msgid ""
" -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)"
@@ -987,11 +1034,12 @@ 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:1128
+#: src/xz/message.c
msgid " -V, --version display the version number and exit"
msgstr " -V, --version afficher le numéro de version puis quitter"
-#: src/xz/message.c:1130
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
+#, c-format
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
@@ -1003,96 +1051,138 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks.
-#: src/xz/message.c:1136
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr ""
"Signaler les bogues à <%s> (en anglais ou en finnois).\n"
"Signaler les bogues de traduction à <lkppo@free.fr>.\n"
-#: src/xz/message.c:1138
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Page du projet %s : <%s>\n"
-#: src/xz/message.c:1142
+#: src/xz/message.c
msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
msgstr "CECI EST UNE VERSION DE DEVELOPPEMENT QUI NE DOIT PAS ÊTRE UTILISEE EN PRODUCTION."
-#: src/xz/options.c:86
-#, c-format
-msgid "%s: Options must be `name=value' pairs separated with commas"
+#: src/xz/message.c
+msgid ""
+"Filter chains are set using the --filters=FILTERS or\n"
+"--filters1=FILTERS ... --filters9=FILTERS options. Each filter in the chain\n"
+"can be separated by spaces or '--'. Alternatively a preset <0-9>[e] can be\n"
+"specified instead of a filter chain.\n"
+msgstr ""
+
+#: src/xz/message.c
+#, fuzzy
+#| msgid "Unsupported filter chain or filter options"
+msgid "The supported filters and their options are:"
+msgstr "Enchaînement ou options de filtres non pris en charge"
+
+#: src/xz/options.c
+#, fuzzy, c-format
+#| msgid "%s: Options must be `name=value' pairs separated with commas"
+msgid "%s: Options must be 'name=value' pairs separated with commas"
msgstr "%s: Les options doivent être des paires `nom=valeur' séparées par des virgules"
-#: src/xz/options.c:93
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option name"
msgstr "%s : Nom d'option invalide"
-#: src/xz/options.c:113
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option value"
msgstr "%s : Valeur d'option invalide"
-#: src/xz/options.c:248
+#: src/xz/options.c
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "Préréglage LZMA1/LZMA2 non reconnu : %s"
-#: src/xz/options.c:356
+#: src/xz/options.c
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/suffix.c:160
+#: src/xz/suffix.c
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s : Le fichier a un suffixe inconnu, ignoré"
-#: src/xz/suffix.c:181
-#, c-format
-msgid "%s: File already has `%s' suffix, skipping"
+#: src/xz/suffix.c
+#, fuzzy, c-format
+#| msgid "%s: File already has `%s' suffix, skipping"
+msgid "%s: File already has '%s' suffix, skipping"
msgstr "%s : Le fichier a déjà le suffixe '%s', ignoré"
-#: src/xz/suffix.c:388
+#: src/xz/suffix.c
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s: Suffixe de nom de fichier invalide"
-#: src/xz/util.c:107
+#: src/xz/util.c
#, 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:149
+#: src/xz/util.c
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s : Suffixe multiplicateur invalide"
-#: src/xz/util.c:151
-msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+#: src/xz/util.c
+#, fuzzy
+#| msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+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:168
-#, c-format
-msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+#: src/xz/util.c
+#, fuzzy, c-format
+#| msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+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:270
+#: src/xz/util.c
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:283
+#: src/xz/util.c
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:40
+#: src/lzmainfo/lzmainfo.c
+#, c-format
+msgid ""
+"Usage: %s [--help] [--version] [FILE]...\n"
+"Show information stored in the .lzma file header"
+msgstr ""
+
+#: src/lzmainfo/lzmainfo.c
+#, fuzzy
+#| msgid "%s: Too small to be a valid .xz file"
+msgid "File is too small to be a .lzma file"
+msgstr "%s : Trop petit pour être un fichier xz valide."
+
+#: src/lzmainfo/lzmainfo.c
+msgid "Not a .lzma file"
+msgstr ""
+
+#: src/common/tuklib_exit.c
msgid "Writing to standard output failed"
msgstr "Impossible d'écrire vers la sortie standard"
-#: src/common/tuklib_exit.c:43
+#: src/common/tuklib_exit.c
msgid "Unknown error"
msgstr "Erreur inconnue"
+#~ msgid "Failed to enable the sandbox"
+#~ msgstr "Echec de l'activation de la sandboxe"
+
+#~ msgid "The selected match finder requires at least nice=%<PRIu32>"
+#~ msgstr "Le `match finder' choisi nécessite au moins nice=%<PRIu32>"
+
#~ msgid "Sandbox is disabled due to incompatible command line arguments"
#~ msgstr "La sandbox est désactivée car elle est incompatible avec les arguments passés"
@@ -1102,19 +1192,15 @@ msgstr "Erreur inconnue"
#~ msgid "Memory usage limit for compression: "
#~ msgstr "Limite d'utilisation pour la compression : "
-#, c-format
#~ msgid " Streams: %s\n"
#~ msgstr " Flux : %s\n"
-#, c-format
#~ msgid " Blocks: %s\n"
#~ msgstr " Blocs : %s\n"
-#, c-format
#~ msgid " Ratio: %s\n"
#~ msgstr " Ratio : %s\n"
-#, c-format
#~ msgid " Check: %s\n"
#~ msgstr " Vérification : %s\n"
@@ -1125,7 +1211,6 @@ msgstr "Erreur inconnue"
#~ " Flux :\n"
#~ " Flux Blocs PositionComp PositionDécomp TailleComp TailleDécomp Ratio Vérif. Bourrage"
-#, c-format
#~ msgid ""
#~ " Blocks:\n"
#~ " Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check"
@@ -1133,14 +1218,9 @@ msgstr "Erreur inconnue"
#~ " Blocs :\n"
#~ " Flux Bloc PositionComp PositionDécomp TailleTot TailleDécomp Ratio Vérif."
-#, c-format
#~ msgid " CheckVal %*s Header Flags CompSize MemUsage Filters"
#~ msgstr " ValVérif %*sEn-tête Drapeaux TailleComp UtilMém Filtres"
-#, c-format
-#~ msgid "The selected match finder requires at least nice=%<PRIu32>"
-#~ msgstr "Le `match finder' choisi nécessite au moins nice=%<PRIu32>"
-
#~ msgid "Error setting O_NONBLOCK on standard input: %s"
#~ msgstr "Impossible d'établir le drapeau O_NONBLOCK sur la sortie standard : %s"
diff --git a/po/hr.gmo b/po/hr.gmo
index 9561735..eb4709c 100644
--- a/po/hr.gmo
+++ b/po/hr.gmo
Binary files differ
diff --git a/po/hr.po b/po/hr.po
index 3db349a..2e1fcef 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -1,13 +1,18 @@
-# Croatian translation of xz.
-# This file is put in the public domain.
+# SPDX-License-Identifier: 0BSD
+# This file is published under the BSD Zero Clause License.
#
-# Božidar Putanec <bozidarp@yahoo.com>, 2020, 2022, 2023.
+# Copyright (C) The XZ Utils authors and contributors
+#
+# Croatian messages for xz.
+# Božidar Putanec <bozidarp@yahoo.com>, 2020, 2022, 2023, 2024.
+#
+#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: xz-5.4.4-pre1\n"
+"Project-Id-Version: xz 5.6.0-pre2\n"
"Report-Msgid-Bugs-To: xz@tukaani.org\n"
-"POT-Creation-Date: 2023-10-31 22:33+0800\n"
-"PO-Revision-Date: 2023-07-20 09:23+0200\n"
+"POT-Creation-Date: 2024-05-29 17:41+0300\n"
+"PO-Revision-Date: 2024-02-18 17:31-0800\n"
"Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n"
"Language-Team: Croatian <lokalizacija@linux.hr>\n"
"Language: hr\n"
@@ -16,144 +21,171 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-"X-Generator: Poedit 3.3.2\n"
-#: src/xz/args.c:77
+#: src/xz/args.c
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr "%s: nevaljani argument za --block-list"
-#: src/xz/args.c:87
+#: src/xz/args.c
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s: Previše argumenata za --block-list"
-#: src/xz/args.c:116
+#: src/xz/args.c
+#, c-format
+msgid "In --block-list, block size is missing after filter chain number '%c:'"
+msgstr "U --block-list nedostaje veličina bloka iza broja lanca filtra „%c:“"
+
+#: src/xz/args.c
msgid "0 can only be used as the last element in --block-list"
-msgstr "0 se može koristiti samo kao zadnji element za --block-list"
+msgstr "0 se može koristiti samo kao posljedni element za --block-list"
-#: src/xz/args.c:451
+#: src/xz/args.c
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s: Nepoznati tip formata datoteke"
-#: src/xz/args.c:474 src/xz/args.c:482
+#: src/xz/args.c
#, c-format
msgid "%s: Unsupported integrity check type"
-msgstr "%s: Nepodržani tip provjere integriteta"
+msgstr "%s: Nepodržani način (tip) provjere integriteta"
-#: src/xz/args.c:518
-msgid "Only one file can be specified with `--files' or `--files0'."
-msgstr "Samo jednu datoteku smijete navesti uz opcije „--files” ili „--files0”."
+#: src/xz/args.c
+msgid "Only one file can be specified with '--files' or '--files0'."
+msgstr "Samo jedna datoteka može biti specificirana s --files ili --files0."
#. TRANSLATORS: This is a translatable
#. string because French needs a space
#. before the colon ("%s : %s").
-#: src/xz/args.c:533 src/xz/coder.c:692 src/xz/coder.c:708 src/xz/coder.c:968
-#: src/xz/coder.c:971 src/xz/file_io.c:605 src/xz/file_io.c:679
-#: src/xz/file_io.c:769 src/xz/file_io.c:940 src/xz/list.c:369
-#: src/xz/list.c:415 src/xz/list.c:477 src/xz/list.c:581 src/xz/list.c:590
+#: src/xz/args.c src/xz/coder.c src/xz/file_io.c src/xz/list.c
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: src/xz/args.c:589
+#: src/xz/args.c
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "Varijabla okoline %s sadrži previše argumenata"
-#: src/xz/args.c:691
+#: src/xz/args.c
msgid "Compression support was disabled at build time"
-msgstr "Tijekom izrade programa onemogućena je podrška za kompresiju"
+msgstr "Podrška za kompresiju bila je onemogućena prilikom kompiliranja"
-#: src/xz/args.c:698
+#: src/xz/args.c
msgid "Decompression support was disabled at build time"
-msgstr "Tijekom izrade programa onemogućena je podrška za dekompresiju"
+msgstr "Podrška za dekompresiju bila je onemogućena prilikom kompiliranja"
-#: src/xz/args.c:704
+#: src/xz/args.c
msgid "Compression of lzip files (.lz) is not supported"
msgstr "Kompresija lzip datoteka (.lz) nije podržana"
-#: src/xz/args.c:735
+#: src/xz/args.c
+msgid "--block-list is ignored unless compressing to the .xz format"
+msgstr "--block-list je zanemaren osim ako se ne komprimira u .xz format"
+
+#: src/xz/args.c
msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout"
-msgstr "Uz opciju --format=raw i ako ne piše na standardni izlaz, --suffix=.SUF je nužan"
+msgstr "Uz opciju --format=raw, --suffix=.SUF je nužan, osim ako je izlaz na stdout"
-#: src/xz/coder.c:115
+#: src/xz/coder.c
msgid "Maximum number of filters is four"
-msgstr "Moguće je najviše do četiri filtara"
+msgstr "Maksimalni broj filtara je četiri (4)"
+
+#: src/xz/coder.c
+#, c-format
+msgid "Error in --filters%s=FILTERS option:"
+msgstr "Greška u opciji --filters%s=FILTRI:"
-#: src/xz/coder.c:135
+#: src/xz/coder.c
msgid "Memory usage limit is too low for the given filter setup."
msgstr "Ograničenje upotrebe memorije premalo je za danu postavku filtra."
-#: src/xz/coder.c:170
+#: src/xz/coder.c
+#, c-format
+msgid "filter chain %u used by --block-list but not specified with --filters%u="
+msgstr "lanac filtra %u koristi se u --block-list ali nije specificiran s --filters%u="
+
+#: src/xz/coder.c
msgid "Using a preset in raw mode is discouraged."
-msgstr "Nije preporučeno koristiti pretpostavke u sirovom načinu rada."
+msgstr "Nije preporučeno koristiti preset postavke u sirovom načinu rada."
-#: src/xz/coder.c:172
+#: src/xz/coder.c
msgid "The exact options of the presets may vary between software versions."
-msgstr "Točne opcije pretpostavki mogu ovisiti o verziji softvera."
+msgstr "Točne opcije preset postavki mogu se razlikovati ovisno o verziji softvera."
-#: src/xz/coder.c:195
+#: src/xz/coder.c
msgid "The .lzma format supports only the LZMA1 filter"
-msgstr "Samo LZMA1 filtar podržava .lzma format"
+msgstr "Format .lzma podržan je samo s .lzma filtrom"
-#: src/xz/coder.c:203
+#: src/xz/coder.c
msgid "LZMA1 cannot be used with the .xz format"
-msgstr "LZMA1 se ne može koristi za .xz format"
+msgstr "LZMA1 ne može se koristi za .xz format"
-#: src/xz/coder.c:220
-msgid "The filter chain is incompatible with --flush-timeout"
-msgstr "Lanac filtara nije kompatibilan s --flush-timeout"
+#: src/xz/coder.c
+#, c-format
+msgid "Filter chain %u is incompatible with --flush-timeout"
+msgstr "Lanac filtara %u nije kompatibilan s --flush-timeout"
-#: src/xz/coder.c:226
+#: src/xz/coder.c
msgid "Switching to single-threaded mode due to --flush-timeout"
-msgstr "Prebacivanje u jednodretveni rad zbog --flush-timeout"
+msgstr "Prelazimo na jednodretveni način rada zbog --flush-timeout"
-#: src/xz/coder.c:250
+#: src/xz/coder.c
+#, c-format
+msgid "Unsupported options in filter chain %u"
+msgstr "Nepodržane opcije u lancu filtra %u"
+
+#: src/xz/coder.c
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "Koristimo do %<PRIu32> dretvi."
-#: src/xz/coder.c:266
+#: src/xz/coder.c
msgid "Unsupported filter chain or filter options"
-msgstr "Lanac filtara ili opcije filtara nisu podržane"
+msgstr "Nepodržani lanac filtara ili opcija filtara"
-#: src/xz/coder.c:278
+#: src/xz/coder.c
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "Za dekompresiju će trebati %s MiB memorije."
-#: src/xz/coder.c:310
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
-msgstr "Smanjen je broj dretvi od %s na %s da se ne prekorači ograničenje upotrebe memorije od %s MiB"
+msgstr "Smanjen je broj dretvi od %s na %s da ne prekoračimo ograničenje upotrebe memorije od %s MiB"
-#: src/xz/coder.c:330
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway."
-msgstr "Smanjen je broj dretvi od %s na jednu. Ograničenje automatske upotrebe memorije od %s MiB još uvijek je prekoračeno. Potrebno je %s MiB memorije. Ipak nastavljamo dalje."
+msgstr "Smanjen je broj dretvi od %s na jednu. Ograničenje automatske upotrebe memorije od %s MiB je još uvijek prekoračeno. Potrebno je %s MiB memorije. Ipak nastavljamo dalje."
-#: src/xz/coder.c:357
+#: src/xz/coder.c
#, c-format
msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB"
-msgstr "Prebacivanje na rad s jednom dretvom da se ne prekorači ograničenje upotrebe memorije od %s MiB"
+msgstr "Prelazimo na način rada s jednom dretvom da ne prekoračimo ograničenje upotrebe memorije od %s MiB"
-#: src/xz/coder.c:412
+#: src/xz/coder.c
#, c-format
msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
-msgstr "Prilagođena je veličina LZMA%c rječnika od %s na %s da se ne premaši ograničenje upotrebe memorije od %s MiB"
+msgstr "Prilagođena je veličina LZMA%c rječnika od %s na %s da ne prekoračimo ograničenje upotrebe memorije od %s MiB"
+
+#: src/xz/coder.c
+#, c-format
+msgid "Adjusted LZMA%c dictionary size for --filters%u from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgstr "Prilagođena veličina LZMA%c rječnika za --filters%u od %s na %s da ne prekoračimo ograničenje upotrebe memorije od %s MiB"
+
+#: src/xz/coder.c
+#, c-format
+msgid "Error changing to filter chain %u: %s"
+msgstr "Greška pri promjeni na lanac filtra %u: %s"
-#: src/xz/file_io.c:110 src/xz/file_io.c:118
+#: src/xz/file_io.c
#, c-format
msgid "Error creating a pipe: %s"
msgstr "Greška pri stvaranju cijevi: %s"
-#: src/xz/file_io.c:252
-msgid "Failed to enable the sandbox"
-msgstr "Nije uspjelo omogućiti sandbox"
-
-#: src/xz/file_io.c:294
+#: src/xz/file_io.c
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s: poll() nije uspjela: %s"
@@ -168,349 +200,349 @@ msgstr "%s: poll() nije uspjela: %s"
#. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously
#. shouldn't be removed.
-#: src/xz/file_io.c:361
+#: src/xz/file_io.c
#, c-format
msgid "%s: File seems to have been moved, not removing"
-msgstr "%s: Izgleda da je datoteka pomaknuta -- ne briše se"
+msgstr "%s: Izgleda da je datoteka pomaknuta -- ne brišemo ju"
-#: src/xz/file_io.c:368 src/xz/file_io.c:924
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: Brisanje nije moguće: %s"
-#: src/xz/file_io.c:394
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file owner: %s"
-msgstr "%s: Promijeniti vlasnika datoteke nije moguće: %s"
+msgstr "%s: Nije moguće promijeniti vlasnika datoteke: %s"
-#: src/xz/file_io.c:407
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file group: %s"
-msgstr "%s: Promijeniti grupu datoteke nije moguće: %s"
+msgstr "%s: Nije moguće promijeniti grupu datoteke: %s"
-#: src/xz/file_io.c:426
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file permissions: %s"
-msgstr "%s: Nije moguće postaviti prava dostupa: %s"
+msgstr "%s: Nije moguće postaviti prava dostupa datoteci: %s"
-#: src/xz/file_io.c:552
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard input: %s"
-msgstr "Greška pri dobavljanju statusnih flagova datoteke iz standardnog ulaza: %s"
+msgstr "Greška pri pokušaju dobivanja oznaka statusa datoteke iz standardnog ulaza: %s"
-#: src/xz/file_io.c:610 src/xz/file_io.c:672
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a symbolic link, skipping"
-msgstr "%s: To je simbolička poveznica, preskačemo"
+msgstr "%s: To je simbolička poveznica -- preskačemo ju"
-#: src/xz/file_io.c:701
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a directory, skipping"
-msgstr "%s: To je direktorij, preskačemo"
+msgstr "%s: To je direktorij -- preskačemo ga"
-#: src/xz/file_io.c:707
+#: src/xz/file_io.c
#, c-format
msgid "%s: Not a regular file, skipping"
-msgstr "%s: To nije regularna datoteka, preskačemo"
+msgstr "%s: To nije regularna datoteka -- preskačemo je"
-#: src/xz/file_io.c:724
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
-msgstr "%s: Datoteka ima postavljen setuid ili setgid bit, preskačemo"
+msgstr "%s: Datoteka s postavljenim setuid ili setgid bitom -- preskačemo ju"
-#: src/xz/file_io.c:731
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has sticky bit set, skipping"
-msgstr "%s: Datoteka ima postavljen sticky bit, preskačemo"
+msgstr "%s: Datoteka s postavljenim ljepljivim bitom -- preskačemo ju"
-#: src/xz/file_io.c:738
+#: src/xz/file_io.c
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
-msgstr "%s: Ulazna datoteka ima više od jedne tvrde poveznice, preskačemo"
+msgstr "%s: Ulazna datoteka ima više od jedne tvrde poveznice -- preskačemo ju"
-#: src/xz/file_io.c:780
+#: src/xz/file_io.c
msgid "Empty filename, skipping"
-msgstr "Prazna datoteka, preskačemo"
+msgstr "Prazna datoteka -- preskačemo ju"
-#: src/xz/file_io.c:834
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the status flags to standard input: %s"
-msgstr "Greška pri vraćanju statusnih flagova na standardni ulaz: %s"
+msgstr "Greška pri vraćanju oznaka statusa na standardni ulaz: %s"
-#: src/xz/file_io.c:882
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard output: %s"
-msgstr "Greška pri dobavljanju statusnih flagova datoteke iz standardnog izlazu: %s"
+msgstr "Greška pri dobivanju oznaka statusa datoteke iz standardnog izlazu: %s"
-#: src/xz/file_io.c:1081
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
-msgstr "Greška pri vraćanju O_APPEND flagova na standardni izlaz: %s"
+msgstr "Greška pri vraćanju O_APPEND oznaka na standardni izlaz: %s"
-#: src/xz/file_io.c:1093
+#: src/xz/file_io.c
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: Nije uspjelo zatvoriti datoteku: %s"
-#: src/xz/file_io.c:1129 src/xz/file_io.c:1391
+#: src/xz/file_io.c
#, c-format
msgid "%s: Seeking failed when trying to create a sparse file: %s"
msgstr "%s: Poziciona greška pri pokušaju stvaranja raštrkane datoteke: %s"
-#: src/xz/file_io.c:1229
+#: src/xz/file_io.c
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: Greška pri čitanju: %s"
-#: src/xz/file_io.c:1259
+#: src/xz/file_io.c
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: Greška pozicioniranja u datoteci: %s"
-#: src/xz/file_io.c:1283
+#: src/xz/file_io.c
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: Neočekivani kraj datoteke"
-#: src/xz/file_io.c:1342
+#: src/xz/file_io.c
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: Greška pri pisanju: %s"
-#: src/xz/hardware.c:238
+#: src/xz/hardware.c
msgid "Disabled"
msgstr "Onemogućeno"
-#: src/xz/hardware.c:269
+#: src/xz/hardware.c
msgid "Amount of physical memory (RAM):"
msgstr "Količina fizičke memorije (RAM):"
-#: src/xz/hardware.c:270
+#: src/xz/hardware.c
msgid "Number of processor threads:"
msgstr "Broj dretvi procesora:"
-#: src/xz/hardware.c:271
+#: src/xz/hardware.c
msgid "Compression:"
msgstr "Kompresija:"
-#: src/xz/hardware.c:272
+#: src/xz/hardware.c
msgid "Decompression:"
msgstr "Dekompresija:"
-#: src/xz/hardware.c:273
+#: src/xz/hardware.c
msgid "Multi-threaded decompression:"
-msgstr "Više dretvama dekompresija:"
+msgstr "Višedretvena dekompresija:"
-#: src/xz/hardware.c:274
+#: src/xz/hardware.c
msgid "Default for -T0:"
msgstr "Zadano za -T0:"
-#: src/xz/hardware.c:292
+#: src/xz/hardware.c
msgid "Hardware information:"
msgstr "Informacije o hardveru:"
-#: src/xz/hardware.c:299
+#: src/xz/hardware.c
msgid "Memory usage limits:"
-msgstr "Ograničenje za korištenje memorije:"
+msgstr "Ograničenja za korištenje memorije:"
-#: src/xz/list.c:68
+#: src/xz/list.c
msgid "Streams:"
msgstr "Tokovi:"
-#: src/xz/list.c:69
+#: src/xz/list.c
msgid "Blocks:"
msgstr "Blokovi:"
-#: src/xz/list.c:70
+#: src/xz/list.c
msgid "Compressed size:"
msgstr "Komprimirana veličina:"
-#: src/xz/list.c:71
+#: src/xz/list.c
msgid "Uncompressed size:"
msgstr "Dekomprimirana veličina:"
-#: src/xz/list.c:72
+#: src/xz/list.c
msgid "Ratio:"
msgstr "Omjer:"
-#: src/xz/list.c:73
+#: src/xz/list.c
msgid "Check:"
msgstr "Kontrola:"
-#: src/xz/list.c:74
+#: src/xz/list.c
msgid "Stream Padding:"
msgstr "Ispuna za tok:"
-#: src/xz/list.c:75
+#: src/xz/list.c
msgid "Memory needed:"
msgstr "Potrebna memorija:"
-#: src/xz/list.c:76
+#: src/xz/list.c
msgid "Sizes in headers:"
msgstr "Veličine u zaglavljima:"
-#: src/xz/list.c:79
+#: src/xz/list.c
msgid "Number of files:"
msgstr "Broj datoteka:"
-#: src/xz/list.c:122
+#: src/xz/list.c
msgid "Stream"
msgstr "Tok"
-#: src/xz/list.c:123
+#: src/xz/list.c
msgid "Block"
msgstr "Blok"
-#: src/xz/list.c:124
+#: src/xz/list.c
msgid "Blocks"
msgstr "Blokovi"
-#: src/xz/list.c:125
+#: src/xz/list.c
msgid "CompOffset"
msgstr "KomprOffset"
-#: src/xz/list.c:126
+#: src/xz/list.c
msgid "UncompOffset"
msgstr "DekomprOffset"
-#: src/xz/list.c:127
+#: src/xz/list.c
msgid "CompSize"
msgstr "KomprVeličina"
-#: src/xz/list.c:128
+#: src/xz/list.c
msgid "UncompSize"
msgstr "DekomprVeličina"
-#: src/xz/list.c:129
+#: src/xz/list.c
msgid "TotalSize"
msgstr "TotalVeličina"
-#: src/xz/list.c:130
+#: src/xz/list.c
msgid "Ratio"
msgstr "Omjer"
-#: src/xz/list.c:131
+#: src/xz/list.c
msgid "Check"
msgstr "Kontrola"
-#: src/xz/list.c:132
+#: src/xz/list.c
msgid "CheckVal"
msgstr "KontrolVrijednost"
-#: src/xz/list.c:133
+#: src/xz/list.c
msgid "Padding"
msgstr "Ispuna"
-#: src/xz/list.c:134
+#: src/xz/list.c
msgid "Header"
msgstr "Zaglavlje"
-#: src/xz/list.c:135
+#: src/xz/list.c
msgid "Flags"
-msgstr "Flagi"
+msgstr "Oznake"
-#: src/xz/list.c:136
+#: src/xz/list.c
msgid "MemUsage"
msgstr "MemUpotreba"
-#: src/xz/list.c:137
+#: src/xz/list.c
msgid "Filters"
-msgstr "Filteri"
+msgstr "Filtri"
#. TRANSLATORS: Indicates that there is no integrity check.
#. This string is used in tables. In older xz version this
#. string was limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:169
+#: src/xz/list.c
msgid "None"
-msgstr "Nema"
+msgstr "Nijedan"
#. TRANSLATORS: Indicates that integrity check name is not known,
#. but the Check ID is known (here 2). In older xz version these
#. strings were limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:175
+#: src/xz/list.c
msgid "Unknown-2"
msgstr "Nepoznat-2"
-#: src/xz/list.c:176
+#: src/xz/list.c
msgid "Unknown-3"
msgstr "Nepoznat-3"
-#: src/xz/list.c:178
+#: src/xz/list.c
msgid "Unknown-5"
msgstr "Nepoznat-5"
-#: src/xz/list.c:179
+#: src/xz/list.c
msgid "Unknown-6"
msgstr "Nepoznat-6"
-#: src/xz/list.c:180
+#: src/xz/list.c
msgid "Unknown-7"
msgstr "Nepoznat-7"
-#: src/xz/list.c:181
+#: src/xz/list.c
msgid "Unknown-8"
msgstr "Nepoznat-8"
-#: src/xz/list.c:182
+#: src/xz/list.c
msgid "Unknown-9"
msgstr "Nepoznat-9"
-#: src/xz/list.c:184
+#: src/xz/list.c
msgid "Unknown-11"
msgstr "Nepoznat-11"
-#: src/xz/list.c:185
+#: src/xz/list.c
msgid "Unknown-12"
msgstr "Nepoznat-12"
-#: src/xz/list.c:186
+#: src/xz/list.c
msgid "Unknown-13"
msgstr "Nepoznat-13"
-#: src/xz/list.c:187
+#: src/xz/list.c
msgid "Unknown-14"
msgstr "Nepoznat-14"
-#: src/xz/list.c:188
+#: src/xz/list.c
msgid "Unknown-15"
msgstr "Nepoznat-15"
-#: src/xz/list.c:351
+#: src/xz/list.c
#, c-format
msgid "%s: File is empty"
msgstr "%s: Datoteka je prazna"
-#: src/xz/list.c:356
+#: src/xz/list.c
#, c-format
msgid "%s: Too small to be a valid .xz file"
-msgstr "%s: Premala, a da bi bila valjana .xz datoteka"
+msgstr "%s: Premala da bude valjana .xz datoteka"
#. TRANSLATORS: These are column headings. From Strms (Streams)
#. to Ratio, the columns are right aligned. Check and Filename
#. are left aligned. If you need longer words, it's OK to
#. use two lines here. Test with "xz -l foo.xz".
-#: src/xz/list.c:731
+#: src/xz/list.c
msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename"
msgstr " Tok Blok Komprimirano Dekomprimir Omjer Kontr Datoteka"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "Yes"
msgstr "Da"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "No"
msgstr "Ne"
-#: src/xz/list.c:1028 src/xz/list.c:1206
+#: src/xz/list.c
#, c-format
msgid " Minimum XZ Utils version: %s\n"
-msgstr " Potrebna je inačica XY Utils: %s ili viša\n"
+msgstr " Minimalno je potrebna verzija 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:1179
+#: src/xz/list.c
#, c-format
msgid "%s file\n"
msgid_plural "%s files\n"
@@ -518,38 +550,42 @@ msgstr[0] "%s datoteka\n"
msgstr[1] "%s datoteke\n"
msgstr[2] "%s datoteka\n"
-#: src/xz/list.c:1192
+#: src/xz/list.c
msgid "Totals:"
msgstr "Ukupno:"
-#: src/xz/list.c:1270
+#: src/xz/list.c
msgid "--list works only on .xz files (--format=xz or --format=auto)"
msgstr "--list radi samo sa .xz datoteke (--format=xz ili --format=auto)"
-#: src/xz/list.c:1276
+#: src/xz/list.c
+msgid "Try 'lzmainfo' with .lzma files."
+msgstr "Pokušajte s „lzmainfo“ s .lzma datotekama."
+
+#: src/xz/list.c
msgid "--list does not support reading from standard input"
msgstr "--list ne podržava čitanje iz standardnog izlaza"
-#: src/xz/main.c:89
+#: src/xz/main.c
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s: Greška pri čitanju datoteka: %s"
-#: src/xz/main.c:96
+#: src/xz/main.c
#, c-format
msgid "%s: Unexpected end of input when reading filenames"
msgstr "%s: Neočekivani kraj ulaznih podataka tijekom čitanja imena datoteka"
-#: src/xz/main.c:120
+#: src/xz/main.c
#, c-format
-msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
-msgstr "%s: Prazni (null) znak pronađen pri čitanju imena datoteka; možda ste mislili koristiti „--files0” umjesto „--files”?"
+msgid "%s: Null character found when reading filenames; maybe you meant to use '--files0' instead of '--files'?"
+msgstr "%s: Prazni (null) znak pronađen pri čitanju imena datoteka; možda ste mislili koristiti --files0 umjesto --files?"
-#: src/xz/main.c:188
+#: src/xz/main.c
msgid "Compression and decompression with --robot are not supported yet."
msgstr "Komprimiranje i dekomprimiranje s --robot još nije podržano."
-#: src/xz/main.c:266
+#: src/xz/main.c
msgid "Cannot read data from standard input when reading filenames from standard input"
msgstr "Nije moguće čitati podatke iz standardnog ulaza dok se čitaju imena datoteka iz standardnog ulaza"
@@ -557,68 +593,68 @@ msgstr "Nije moguće čitati podatke iz standardnog ulaza dok se čitaju imena d
#. 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:670 src/xz/message.c:725
+#: src/xz/message.c
#, c-format
msgid "%s: "
msgstr "%s: "
-#: src/xz/message.c:797 src/xz/message.c:856
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
msgid "Internal error (bug)"
msgstr "Interna greška (bug)"
-#: src/xz/message.c:804
+#: src/xz/message.c
msgid "Cannot establish signal handlers"
msgstr "Nije moguće uspostaviti rukovatelje signala"
-#: src/xz/message.c:813
+#: src/xz/message.c
msgid "No integrity check; not verifying file integrity"
msgstr "Nema provjere integriteta -- ne provjeravamo integritet datoteke"
-#: src/xz/message.c:816
+#: src/xz/message.c
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "Nepodržani tip provjere integriteta -- ne provjeravamo integritet datoteke"
-#: src/xz/message.c:823
+#: src/xz/message.c
msgid "Memory usage limit reached"
-msgstr "Dostignuto je ograničenje za korištenje memorije"
+msgstr "Dosegnuto je ograničenje za upotrebu memorije"
-#: src/xz/message.c:826
+#: src/xz/message.c
msgid "File format not recognized"
msgstr "Format datoteke nije prepoznat"
-#: src/xz/message.c:829
+#: src/xz/message.c
msgid "Unsupported options"
msgstr "Nepodržane opcije"
-#: src/xz/message.c:832
+#: src/xz/message.c
msgid "Compressed data is corrupt"
msgstr "Komprimirani podaci su oštećeni"
-#: src/xz/message.c:835
+#: src/xz/message.c
msgid "Unexpected end of input"
msgstr "Neočekivani kraj ulaznih podataka"
-#: src/xz/message.c:877
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
-msgstr "%s MiB memorije je potrebno. Ograničenje je onemogućeno."
+msgstr "%s Potrebno je MiB memorije. Ograničavač je onemogućen."
-#: src/xz/message.c:905
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
-msgstr "%s MiB memorije je potrebno. Ograničenje je %s."
+msgstr "%s Potrebno je MiB memorije. Ograničenje je %s."
-#: src/xz/message.c:924
+#: src/xz/message.c
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: Lanac filtara: %s\n"
-#: src/xz/message.c:935
+#: src/xz/message.c
#, c-format
-msgid "Try `%s --help' for more information."
-msgstr "Pokušajte s „`%s --help“ za pomoć i više informacija."
+msgid "Try '%s --help' for more information."
+msgstr "Pokušajte s „%s --help“ za pomoć i više informacija."
-#: src/xz/message.c:961
+#: src/xz/message.c
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
@@ -629,15 +665,15 @@ msgstr ""
"Komprimira ili dekomprimira DATOTEKE u .xz formatu.\n"
"\n"
-#: src/xz/message.c:968
+#: src/xz/message.c
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr "Obvezni argumenti za duge opcije, obvezni su i za kratke opcije.\n"
-#: src/xz/message.c:972
+#: src/xz/message.c
msgid " Operation mode:\n"
msgstr " Način rada:\n"
-#: src/xz/message.c:975
+#: src/xz/message.c
msgid ""
" -z, --compress force compression\n"
" -d, --decompress force decompression\n"
@@ -649,7 +685,7 @@ msgstr ""
" -t, --test testira integritet komprimirane datoteke\n"
" -l, --list ispiše podatke o .xz datotekama"
-#: src/xz/message.c:981
+#: src/xz/message.c
msgid ""
"\n"
" Operation modifiers:\n"
@@ -657,7 +693,7 @@ msgstr ""
"\n"
" Modifikatori načina rada:\n"
-#: src/xz/message.c:984
+#: src/xz/message.c
msgid ""
" -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\n"
@@ -669,32 +705,32 @@ msgstr ""
" -c, --stdout piše na standardni izlaz i ne briše\n"
" ulazne datoteke"
-#: src/xz/message.c:993
+#: src/xz/message.c
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
msgstr ""
-" --single-stream dekomprimira samo prvi tok i nijemo\n"
+" --single-stream dekomprimira samo prvi tok i tiho\n"
" zanemari moguće preostale ulazne podatke"
-#: src/xz/message.c:996
+#: src/xz/message.c
msgid ""
" --no-sparse do not create sparse files when decompressing\n"
-" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
+" -S, --suffix=.SUF use the suffix '.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n"
" omitted, filenames are read from the standard input;\n"
" filenames must be terminated with the newline character\n"
" --files0[=FILE] like --files but use the null character as terminator"
msgstr ""
" --no-sparse ne stvara raštrkane datoteke pri dekompresiji\n"
-" -S, --suffix=.SUF rabi sufiks „.SUF” za komprimirane datoteke umjesto .xz\n"
+" -S, --suffix=.SUF rabi sufiks .SUF za komprimirane datoteke\n"
" --files[=DATOTEKA] čita imena datoteka za obradu iz DATOTEKE; ako\n"
" DATOTEKA nije dana, imena datoteka čita iz\n"
-" standardnog ulaza; ime datoteke mora završiti\n"
-" sa znakom novog reda\n"
-" --files0[=DATOTEKA] kao --files, ali popis datoteka završi s NULL znakom"
+" standardnog ulaza; imena datoteka moraju završiti\n"
+" sa znakom novog retka\n"
+" --files0[=DATOTEKA] kao --files, ali koristi NULL znak kao terminator"
-#: src/xz/message.c:1005
+#: src/xz/message.c
msgid ""
"\n"
" Basic file format and compression options:\n"
@@ -702,31 +738,32 @@ msgstr ""
"\n"
" Osnovne opcije za format datoteka i kompresiju:\n"
-#: src/xz/message.c:1007
+#: src/xz/message.c
msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n"
-" `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
-" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-" `crc32', `crc64' (default), or `sha256'"
+" 'auto' (default), 'xz', 'lzma', 'lzip', and 'raw'\n"
+" -C, --check=CHECK integrity check type: 'none' (use with caution),\n"
+" 'crc32', 'crc64' (default), or 'sha256'"
msgstr ""
" -F, --format=FMT format datoteke za kodiranje ili dekodiranje; mogućnosti:\n"
" „auto” (zadano), „xz”, „lzma”, „lzip“ i „raw”\n"
" -C, --check=KONTROLA tip provjere integriteta: „none” (koristite s oprezom),\n"
" „crc32”, „crc64” (zadano), ili „sha256”"
-#: src/xz/message.c:1012
+#: src/xz/message.c
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr " --ignore-check ne verificira provjeru integriteta pri dekompresiji"
-#: src/xz/message.c:1016
+#: src/xz/message.c
msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!"
msgstr ""
-" -0 ... -9 pretpostavke za kompresiju; zadano je 6; uzmite u obzir\n"
-" upotrebu memorije za (de)kompresor prije upotrebe 7-9!"
+" -0 ... -9 preset postavke za kompresiju; zadano je 6; u obzir\n"
+" uzmite i upotrebu memorije za (de)kompresor prije\n"
+" upotrebe 7-9!"
-#: src/xz/message.c:1020
+#: src/xz/message.c
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
@@ -734,15 +771,15 @@ msgstr ""
" -e, --extreme pokuša poboljšati omjer kompresije koristeći više CPU\n"
" vremena; ne utječe na potrebnu memoriju za dekompresiju"
-#: src/xz/message.c:1024
+#: src/xz/message.c
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"
+" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
+" as many threads as there are processor cores"
msgstr ""
-" -T, --threads=BROJ rabi ne više od BROJ dretvi; zadano je 1; postavkom 0\n"
-" za BROJ koristi se toliko dretvi koliko CPU ima jezgri"
+" -T, --threads=BROJ ne rabi više od BROJ dretvi; zadano je 0 kojom se koristi\n"
+" toliko dretvi koliko CPU ima jezgri"
-#: src/xz/message.c:1029
+#: src/xz/message.c
msgid ""
" --block-size=SIZE\n"
" start a new .xz block after every SIZE bytes of input;\n"
@@ -752,29 +789,33 @@ msgstr ""
" ulaznih podataka; ovo rabite za postavljanje\n"
" veličine bloka za kompresiju s dretvama"
-#: src/xz/message.c:1033
+#: src/xz/message.c
msgid ""
-" --block-list=SIZES\n"
+" --block-list=BLOCKS\n"
" start a new .xz block after the given comma-separated\n"
-" intervals of uncompressed data"
+" intervals of uncompressed data; optionally, specify a\n"
+" filter chain number (0-9) followed by a ':' before the\n"
+" uncompressed data size"
msgstr ""
-" --block-list=VELIČINE započne novi .xz blok nakon svake navedene\n"
-" VELIČINE nekomprimiranih ulaznih podataka;\n"
-" VELIČINE su zarezom odvojene"
+" --block-list=BLOKOVI\n"
+" započne novi .xz blok nakon navedenih intervala (zarezima\n"
+" odvojenih) nekomprimiranih podataka; opcionalno, navedite\n"
+" lance filtra broj (0-9) iza kojeg slijedi „:“ (dvotočka)\n"
+" prije veličine nekompromiranih podataka"
-#: src/xz/message.c:1037
+#: src/xz/message.c
msgid ""
" --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n"
" passed since the previous flush and reading more input\n"
" would block, all pending data is flushed out"
msgstr ""
-" --flush-timeout=VRIJEME pri komprimiranju, ako je prošlo više od VRIJEME\n"
-" milisekundi od prethodnog pražnjenja, a daljne\n"
-" čitanje bi blokiralo ulaz, svi podaci na\n"
-" čekanju se isprazne iz kodera na izlaz"
+" --flush-timeout=VRIJEME\n"
+" ako se pri komprimiranju potroši više od VRIJEME\n"
+" milisekundi od prethodnog pražnjenja, a daljne čitanje\n"
+" bi blokiralo ulaz, svi podatci na čekanju se isprazne"
-#: src/xz/message.c:1043
+#: src/xz/message.c
#, no-c-format
msgid ""
" --memlimit-compress=LIMIT\n"
@@ -792,7 +833,7 @@ msgstr ""
" dekompresiju, dretvama dekompresiju, ili sve ovo;\n"
" GRANICA je u bajtima, % RAM, ili 0 za zadano"
-#: src/xz/message.c:1052
+#: src/xz/message.c
msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards"
@@ -801,15 +842,41 @@ msgstr ""
" upotrebe memorije, završi s greškom umjesto da\n"
" prilagodi postavke shodno ograničenju memorije"
-#: src/xz/message.c:1058
+#: src/xz/message.c
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
msgstr ""
"\n"
-" Prilagođeni lanac filtara za kompresiju (alternativa korištenju pretpostavki):"
+" Prilagođeni lanac filtra za kompresiju (alternativa korištenju presets):"
-#: src/xz/message.c:1067
+#: src/xz/message.c
+msgid ""
+"\n"
+" --filters=FILTERS set the filter chain using the liblzma filter string\n"
+" syntax; use --filters-help for more information"
+msgstr ""
+"\n"
+" --filters=FILTRI postavi lanac filtara pomoću sintakse za string liblzma\n"
+" filtra; koristite --filters-help za više informacija"
+
+#: src/xz/message.c
+msgid ""
+" --filters1=FILTERS ... --filters9=FILTERS\n"
+" set additional filter chains using the liblzma filter\n"
+" string syntax to use with --block-list"
+msgstr ""
+" --filters1=FILTRI ... --filters9=FILTERS\n"
+" postavite dodatne lance filtera pomoću sintakse za\n"
+" string liblzma filtra za upotrebu s --block-list"
+
+#: src/xz/message.c
+msgid ""
+" --filters-help display more information about the liblzma filter string\n"
+" syntax and exit."
+msgstr " --filters-help pokaže više informacija za sintaksu stringa liblzma filtra"
+
+#: src/xz/message.c
msgid ""
"\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
@@ -838,7 +905,7 @@ msgstr ""
" mf=IME podudarač (hc3, hc4, bt2, bt3, bt4; bt4)\n"
" depth=BROJ max. dubina traženja; 0=automatski (default)"
-#: src/xz/message.c:1082
+#: src/xz/message.c
msgid ""
"\n"
" --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
@@ -848,6 +915,7 @@ msgid ""
" --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
" --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
" --sparc[=OPTS] SPARC BCJ filter\n"
+" --riscv[=OPTS] RISC-V BCJ filter\n"
" Valid OPTS for all BCJ filters:\n"
" start=NUM start offset for conversions (default=0)"
msgstr ""
@@ -859,10 +927,11 @@ msgstr ""
" --powerpc[=OPCIJE] PowerPC BCJ filtar (samo veliki endian)\n"
" --ia64[=OPCIJE] IA-64 (Itanium) BCJ filtar\n"
" --sparc[=OPCIJE] SPARC BCJ filtar\n"
+" --riscv[=OPTS] RISC-V BCJ filtar\n"
" Valjane OPCIJE za BCJ filtre:\n"
" start=BROJ početni offset za konverzije (zadano=0)"
-#: src/xz/message.c:1095
+#: src/xz/message.c
msgid ""
"\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n"
@@ -875,7 +944,7 @@ msgstr ""
" dist=BROJ razmak između bajtova koji se oduzimaju\n"
" jedan od drugog (1-256; 1)"
-#: src/xz/message.c:1103
+#: src/xz/message.c
msgid ""
"\n"
" Other options:\n"
@@ -883,23 +952,23 @@ msgstr ""
"\n"
" Ostale opcije:\n"
-#: src/xz/message.c:1106
+#: src/xz/message.c
msgid ""
" -q, --quiet suppress warnings; specify twice to suppress errors too\n"
" -v, --verbose be verbose; specify twice for even more verbose"
msgstr ""
-" -q, --quiet izostavi upozorenja; „-qq” izostavi i greške\n"
-" -v, --verbose opširnije informira; „=vv” još više informira"
+" -q, --quiet izostavi upozorenja; -qq izostavi i greške\n"
+" -v, --verbose opširnije informira; -vv još više informira"
-#: src/xz/message.c:1111
+#: src/xz/message.c
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr " -Q, --no-warn upozorenja nemaju utjecaja na status završetka (izlaza)"
-#: src/xz/message.c:1113
+#: src/xz/message.c
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr " --robot poruke u strojnom formatu (korisno za skripte)"
-#: src/xz/message.c:1116
+#: src/xz/message.c
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
@@ -907,173 +976,161 @@ msgstr ""
" --info-memory pokaže ukupnu količinu RAM-a i trenutno\n"
" aktivna ograničenja korištenja memorije, pa iziđe"
-#: src/xz/message.c:1119
+#: src/xz/message.c
msgid ""
" -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit"
msgstr ""
-" -h, --help prikaže kratku pomoć (izlista samo osnovne opcije)\n"
-" -H, --long-help prikaže ovu dugačku pomoć i iziđe"
+" -h, --help pokaže kratku pomoć (izlista samo osnovne opcije)\n"
+" -H, --long-help pokaže opširnu pomoć"
-#: src/xz/message.c:1123
+#: src/xz/message.c
msgid ""
" -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)"
msgstr ""
-" -h, --help prikaže ovu kratku pomoć i iziđe\n"
-" -H, --long-help prikaže dugačku pomoć (izlista i napredne opcije)"
+" -h, --help pokaže kratku pomoć\n"
+" -H, --long-help pokaže opširnu pomoć (izlista i napredne opcije)"
-#: src/xz/message.c:1128
+#: src/xz/message.c
msgid " -V, --version display the version number and exit"
-msgstr " -V, --version prikaže informacije o inačici i iziđe"
+msgstr " -V, --version pokaže informacije o inačici"
-#: src/xz/message.c:1130
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
+#, c-format
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
msgstr ""
"\n"
-"Ako DATOTEKA nije navedena ili je „-“, čita standardni ulaz.\n"
+"Ako DATOTEKA nije navedena ili je - (crtica), čita standardni ulaz.\n"
#. TRANSLATORS: This message indicates the bug reporting address
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks.
-#: src/xz/message.c:1136
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr "Greške prijavite na <%s> (na engleskom ili finskom).\n"
-#: src/xz/message.c:1138
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "%s home page: <%s>\n"
msgstr ""
"%s matična mrežna stranica: <%s>\n"
"Pogreške u prijevodu i vaše prijedloge javite na <lokalizacija@linux.hr>.\n"
-#: src/xz/message.c:1142
+#: src/xz/message.c
msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
msgstr "OVO JE RAZVOJNA INAČICA I NIJE NAMIJENJENA ZA PROIZVODNJU."
-#: src/xz/options.c:86
+#: src/xz/message.c
+msgid ""
+"Filter chains are set using the --filters=FILTERS or\n"
+"--filters1=FILTERS ... --filters9=FILTERS options. Each filter in the chain\n"
+"can be separated by spaces or '--'. Alternatively a preset <0-9>[e] can be\n"
+"specified instead of a filter chain.\n"
+msgstr ""
+"Lanci filtara postavljaju se pomoću --filters=FILTERS ili\n"
+"--filters1=FILTRI ... --filters9=FILTRI opcije. Svaki filter u lancu može biti\n"
+"odvojen s razmakom ili s „--“ (dvije crtice). Alternativno, preset postavka\n"
+"<0-9>[e] može biti navedena umjesto lanca filtra.\n"
+
+#: src/xz/message.c
+msgid "The supported filters and their options are:"
+msgstr "Podržani filtri i njihove opcije su:"
+
+#: src/xz/options.c
#, c-format
-msgid "%s: Options must be `name=value' pairs separated with commas"
+msgid "%s: Options must be 'name=value' pairs separated with commas"
msgstr "%s: Opcije moraju biti parovi „name=value” odvojeni zarezima"
-#: src/xz/options.c:93
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option name"
msgstr "%s: Nevaljano ime opcije"
-#: src/xz/options.c:113
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option value"
msgstr "%s: Nevaljana vrijednost opcije"
-#: src/xz/options.c:248
+#: src/xz/options.c
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
-msgstr "Nepodržana LZMA1/LZMA2 pretpostavka: %s"
+msgstr "Nepodržana LZMA1/LZMA2 preset postavka: %s"
-#: src/xz/options.c:356
+#: src/xz/options.c
msgid "The sum of lc and lp must not exceed 4"
msgstr "Zbroj lc i lp ne smije biti veći od 4"
-#: src/xz/suffix.c:160
+#: src/xz/suffix.c
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: Ime datoteke nema poznati sufiks, preskačemo"
-#: src/xz/suffix.c:181
+#: src/xz/suffix.c
#, c-format
-msgid "%s: File already has `%s' suffix, skipping"
+msgid "%s: File already has '%s' suffix, skipping"
msgstr "%s: Datoteka već ima „%s” sufiks, preskačemo"
-#: src/xz/suffix.c:388
+#: src/xz/suffix.c
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s: Nevaljani sufiks imena datoteke"
-#: src/xz/util.c:107
+#: src/xz/util.c
#, c-format
msgid "%s: Value is not a non-negative decimal integer"
msgstr "%s: Vrijednost nije nula ili pozitivni decimalni cijeli broj"
-#: src/xz/util.c:149
+#: src/xz/util.c
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s: Nevaljana mjerna jedinica (sufiks)"
-#: src/xz/util.c:151
-msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+#: src/xz/util.c
+msgid "Valid suffixes are 'KiB' (2^10), 'MiB' (2^20), and 'GiB' (2^30)."
msgstr "Valjani sufiksi (mjerne jedinice) su „KiB” (2^10), „MiB” (2^20), i „GiB” (2^30)."
-#: src/xz/util.c:168
+#: src/xz/util.c
#, c-format
-msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+msgid "Value of the option '%s' must be in the range [%<PRIu64>, %<PRIu64>]"
msgstr "Vrijednost opcije „%s” mora biti u rasponu [%<PRIu64>, %<PRIu64>]"
-#: src/xz/util.c:270
+#: src/xz/util.c
msgid "Compressed data cannot be read from a terminal"
msgstr "Nije moguće čitati komprimirane podatke iz terminala"
-#: src/xz/util.c:283
+#: src/xz/util.c
msgid "Compressed data cannot be written to a terminal"
msgstr "Nije moguće pisati komprimirane podatke na terminala"
-#: src/common/tuklib_exit.c:40
+#: src/lzmainfo/lzmainfo.c
+#, c-format
+msgid ""
+"Usage: %s [--help] [--version] [FILE]...\n"
+"Show information stored in the .lzma file header"
+msgstr ""
+"Upotreba: %s [--help] [--version] [DATOTEKA]...\n"
+"Pokaže informacije pohranjene u zaglavlju datoteke .lzma"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "File is too small to be a .lzma file"
+msgstr "Datoteka je premala da bude .lzma datoteka"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "Not a .lzma file"
+msgstr "To nije .lzma datoteka"
+
+#: src/common/tuklib_exit.c
msgid "Writing to standard output failed"
msgstr "Pisanje na standardni izlaz nije uspjelo"
-#: src/common/tuklib_exit.c:43
+#: src/common/tuklib_exit.c
msgid "Unknown error"
msgstr "Nepoznata greška"
-#~ msgid "The selected match finder requires at least nice=%<PRIu32>"
-#~ msgstr ""
-#~ "Odabrani podudarač (algoritam za pronalaženje podudaranja)\n"
-#~ "zahtijeva barem nice=%<PRIu32>"
-
-#~ msgid "Nepoznat-6"
-#~ msgstr "Nepoznat-6"
-
-#~ msgid "Nepoznat-7"
-#~ msgstr "Nepoznat-7"
-
-#~ msgid "Sandbox is disabled due to incompatible command line arguments"
-#~ msgstr "Sandbox je onemogućen zbog nekompatibilnih argumenata naredbenog retka"
-
-#~ msgid "Sandbox was successfully enabled"
-#~ msgstr "Sandbox je uspješno omogućen"
-
-#~ msgid "Memory usage limit for compression: "
-#~ msgstr " Ograničenje memorije za kompresiju: "
-
-#~ msgid " Streams: %s\n"
-#~ msgstr " Tok(a/ova): %s\n"
-
-#~ msgid " Blocks: %s\n"
-#~ msgstr " Blok(a/ova): %s\n"
-
-#~ msgid " Ratio: %s\n"
-#~ msgstr " Omjer: %s\n"
-
-#~ msgid " Check: %s\n"
-#~ msgstr " Kontrola: %s\n"
-
-#~ msgid ""
-#~ " Streams:\n"
-#~ " Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding"
-#~ msgstr ""
-#~ " Tokovi:\n"
-#~ " Tok Blokovi KompOffset DekompOffset KompVeličina DekompOffset Omjer Kontrola Ispuna"
-
-#~ msgid ""
-#~ " Blocks:\n"
-#~ " Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check"
-#~ msgstr ""
-#~ " Blokovi:\n"
-#~ " Tok Blok KompOffset DekompOffset KompVeličina DekompOffset Omjer Kontrola"
-
-#~ msgid " CheckVal %*s Header Flags CompSize MemUsage Filters"
-#~ msgstr " KonSvota %*s Zaglav Flags KompVel Memorija Filtri"
+#~ msgid "Failed to enable the sandbox"
+#~ msgstr "Nije uspjelo omogućiti sandbox"
diff --git a/po/hu.gmo b/po/hu.gmo
index 0a82679..301c920 100644
--- a/po/hu.gmo
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
index 169cad5..6e0d877 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -1,162 +1,190 @@
+# SPDX-License-Identifier: 0BSD
+#
# Hungarian translation for xz.
-# This file is put in the public domain.
+# This file is published under the BSD Zero Clause License.
#
-# Meskó Balázs <mesko.balazs@fsf.hu>, 2019, 2022.
+# Meskó Balázs <mesko.balazs@fsf.hu>, 2019, 2022, 2024.
msgid ""
msgstr ""
-"Project-Id-Version: xz 5.4.0-pre1\n"
+"Project-Id-Version: xz 5.6.0-pre2\n"
"Report-Msgid-Bugs-To: xz@tukaani.org\n"
-"POT-Creation-Date: 2023-10-31 22:33+0800\n"
-"PO-Revision-Date: 2022-11-10 12:13+0100\n"
+"POT-Creation-Date: 2024-05-29 17:41+0300\n"
+"PO-Revision-Date: 2024-02-17 18:35+0100\n"
"Last-Translator: Meskó Balázs <mesko.balazs@fsf.hu>\n"
"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"plural-forms: nplurals=2; plural=(n != 1);\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-"X-Generator: Poedit 3.1.1\n"
+"X-Generator: Poedit 3.4\n"
-#: src/xz/args.c:77
+#: src/xz/args.c
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr "%s: Érvénytelen argumentum a --block-list kapcsolóhoz"
-#: src/xz/args.c:87
+#: src/xz/args.c
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s: Túl sok argumentum a --block-list kapcsolóhoz"
-#: src/xz/args.c:116
+#: src/xz/args.c
+#, c-format
+msgid "In --block-list, block size is missing after filter chain number '%c:'"
+msgstr "A --block-list kapcsolónál hiányzik a blokkméret a(z) „%c:” szűrőláncszám után"
+
+#: src/xz/args.c
msgid "0 can only be used as the last element in --block-list"
msgstr "A 0 csak utolsó elemként használható a --block-list kapcsolónál"
-#: src/xz/args.c:451
+#: src/xz/args.c
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s: Ismeretlen fájlformátumtípus"
-#: src/xz/args.c:474 src/xz/args.c:482
+#: src/xz/args.c
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s: Nem támogatott integritás-ellenőrzési típus"
-#: src/xz/args.c:518
-msgid "Only one file can be specified with `--files' or `--files0'."
+#: src/xz/args.c
+msgid "Only one file can be specified with '--files' or '--files0'."
msgstr "Csak egy fájl adható meg a „--files” vagy „--files0” kapcsolóknál."
#. TRANSLATORS: This is a translatable
#. string because French needs a space
#. before the colon ("%s : %s").
-#: src/xz/args.c:533 src/xz/coder.c:692 src/xz/coder.c:708 src/xz/coder.c:968
-#: src/xz/coder.c:971 src/xz/file_io.c:605 src/xz/file_io.c:679
-#: src/xz/file_io.c:769 src/xz/file_io.c:940 src/xz/list.c:369
-#: src/xz/list.c:415 src/xz/list.c:477 src/xz/list.c:581 src/xz/list.c:590
-#, fuzzy, c-format
-#| msgid "%s: "
+#: src/xz/args.c src/xz/coder.c src/xz/file_io.c src/xz/list.c
+#, c-format
msgid "%s: %s"
-msgstr "%s: "
+msgstr "%s: %s"
-#: src/xz/args.c:589
+#: src/xz/args.c
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "A(z) %s környezeti változó túl sok argumentumot tartalmaz"
-#: src/xz/args.c:691
+#: src/xz/args.c
msgid "Compression support was disabled at build time"
msgstr "A tömörítési támogatás ki lett kapcsolva fordítási időben"
-#: src/xz/args.c:698
+#: src/xz/args.c
msgid "Decompression support was disabled at build time"
msgstr "A kibontási támogatás ki lett kapcsolva fordítási időben"
-#: src/xz/args.c:704
+#: src/xz/args.c
msgid "Compression of lzip files (.lz) is not supported"
msgstr "Az lzip-fájlok (.lz) tömörítése nem támogatott"
-#: src/xz/args.c:735
-#, fuzzy
-#| msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
+#: src/xz/args.c
+msgid "--block-list is ignored unless compressing to the .xz format"
+msgstr "A --block-list kapcsoló csak .xz formátum esetén van figyelembe véve"
+
+#: src/xz/args.c
msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout"
-msgstr "%s: --format=raw esetén, --suffix=.SUF szükséges, hacsak nem a szabványosra kimenetre ír"
+msgstr "A --format=raw esetén a --suffix=.SUF szükséges, hacsak nem a szabványosra kimenetre ír"
-#: src/xz/coder.c:115
+#: src/xz/coder.c
msgid "Maximum number of filters is four"
msgstr "A szűrők legnagyobb száma négy"
-#: src/xz/coder.c:135
+#: src/xz/coder.c
+#, c-format
+msgid "Error in --filters%s=FILTERS option:"
+msgstr "Hiba a --filters%s=SZŰRŐK kapcsolóban:"
+
+#: src/xz/coder.c
msgid "Memory usage limit is too low for the given filter setup."
msgstr "A memóriahasználat túl alacsony a megadott szűrőbeállításokhoz."
-#: src/xz/coder.c:170
+#: src/xz/coder.c
+#, c-format
+msgid "filter chain %u used by --block-list but not specified with --filters%u="
+msgstr "A --block-list használja a(z) %u. szűrőláncot, de az nincs megadva a --filters%u= kapcsolóval"
+
+#: src/xz/coder.c
msgid "Using a preset in raw mode is discouraged."
msgstr "Az előbeállítások használata nyers módban nem javasolt."
-#: src/xz/coder.c:172
+#: src/xz/coder.c
msgid "The exact options of the presets may vary between software versions."
msgstr "Az előbeállítások pontos beállításai különbözhetnek a szoftververziók között."
-#: src/xz/coder.c:195
+#: src/xz/coder.c
msgid "The .lzma format supports only the LZMA1 filter"
msgstr "Az .lzma formátum csak az LZMA1 szűrőt támogatja"
-#: src/xz/coder.c:203
+#: src/xz/coder.c
msgid "LZMA1 cannot be used with the .xz format"
msgstr "Az LZMA1 nem használható az .xz formátummal"
-#: src/xz/coder.c:220
-msgid "The filter chain is incompatible with --flush-timeout"
-msgstr "A szűrőlánc nem kompatibilis a --flush-timeout kapcsolóval"
+#: src/xz/coder.c
+#, c-format
+msgid "Filter chain %u is incompatible with --flush-timeout"
+msgstr "A(z) %u. szűrőlánc nem kompatibilis a --flush-timeout kapcsolóval"
-#: src/xz/coder.c:226
+#: src/xz/coder.c
msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr "Egyszálú módra váltás a --flush-timeout kapcsoló miatt"
-#: src/xz/coder.c:250
+#: src/xz/coder.c
+#, c-format
+msgid "Unsupported options in filter chain %u"
+msgstr "Nem támogatott kapcsolók a(z) %u szűrőláncban"
+
+#: src/xz/coder.c
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "Legfeljebb %<PRIu32> szál használata."
-#: src/xz/coder.c:266
+#: src/xz/coder.c
msgid "Unsupported filter chain or filter options"
msgstr "Nem támogatott szűrőlánc vagy szűrőkapcsolók"
-#: src/xz/coder.c:278
+#: src/xz/coder.c
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "A kibontáshoz %s MiB memória szükséges."
-#: src/xz/coder.c:310
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgstr "A szálak számának csökkentése erről: %s, erre: %s, hogy ne lépje túl a(z) %s MiB-os korlátot"
-#: src/xz/coder.c:330
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway."
msgstr "A szálak számának csökkentése erről: %s, egyre. A(z) %s MiB-os automatikus memóriahasználati korlát így is túl lett lépve. %s MiB memória szükséges. Ennek ellenére folytatás mindenképpen."
-#: src/xz/coder.c:357
+#: src/xz/coder.c
#, c-format
msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB"
msgstr "Egyszálú módra váltás, hogy ne lépje túl a(z) %s MiB-os memóriahasználati korlátot"
-#: src/xz/coder.c:412
+#: src/xz/coder.c
#, c-format
msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
msgstr "Az LZMA%c szótár méretének módosítása erről: %s MiB, erre: %s MiB, hogy ne lépje túl a(z) %s MiB-os korlátot"
-#: src/xz/file_io.c:110 src/xz/file_io.c:118
+#: src/xz/coder.c
+#, c-format
+msgid "Adjusted LZMA%c dictionary size for --filters%u from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgstr "A --filters%2$u szűrőhöz tartozó LZMA%1$c szótár méretének módosítása %3$s MiB-ról %4$s MiB-ra, hogy ne lépje túl a(z) %5$s MiB-os korlátot"
+
+#: src/xz/coder.c
+#, c-format
+msgid "Error changing to filter chain %u: %s"
+msgstr "Hiba a(z) %u. szűrőlánc létrehozásakor: %s"
+
+#: src/xz/file_io.c
#, c-format
msgid "Error creating a pipe: %s"
msgstr "Hiba a csővezeték létrehozásakor: %s"
-#: src/xz/file_io.c:252
-msgid "Failed to enable the sandbox"
-msgstr "A homokozó engedélyezése sikertelen"
-
-#: src/xz/file_io.c:294
+#: src/xz/file_io.c
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s: poll() sikertelen: %s"
@@ -171,252 +199,252 @@ msgstr "%s: poll() sikertelen: %s"
#. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously
#. shouldn't be removed.
-#: src/xz/file_io.c:361
+#: src/xz/file_io.c
#, c-format
msgid "%s: File seems to have been moved, not removing"
msgstr "%s: Úgy tűnik, hogy a fájl át lett helyezve, nincs eltávolítás"
-#: src/xz/file_io.c:368 src/xz/file_io.c:924
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: Nem távolítható el: %s"
-#: src/xz/file_io.c:394
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: A fájl tulajdonosa nem adható meg: %s"
-#: src/xz/file_io.c:407
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: A fájl csoportja nem adható meg: %s"
-#: src/xz/file_io.c:426
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: A fájl jogosultságai nem adhatók meg: %s"
-#: src/xz/file_io.c:552
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "Hiba a fájl állapotjelzőinek lekérdezésekor a szabványos bemenetről: %s"
-#: src/xz/file_io.c:610 src/xz/file_io.c:672
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: Szimbolikus link, kihagyás"
-#: src/xz/file_io.c:701
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: Könyvtár, kihagyás"
-#: src/xz/file_io.c:707
+#: src/xz/file_io.c
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: Nem szabályos fájl, kihagyás"
-#: src/xz/file_io.c:724
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s: A fájlon setuid vagy setgid bit van beállítva, kihagyás"
-#: src/xz/file_io.c:731
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s: A fájlon sticky bit van beállítva, kihagyás"
-#: src/xz/file_io.c:738
+#: src/xz/file_io.c
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s: A bemeneti fájlhoz több mint egy hard link tartozik, kihagyás"
-#: src/xz/file_io.c:780
+#: src/xz/file_io.c
msgid "Empty filename, skipping"
msgstr "Üres fájlnév, kihagyás"
-#: src/xz/file_io.c:834
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "Hiba a fájl állapotjelzőinek visszaállításakor a szabványos bemenetre: %s"
-#: src/xz/file_io.c:882
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "Hiba a fájl állapotjelzőinek lekérdezésekor a szabványos kimenetről: %s"
-#: src/xz/file_io.c:1081
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "Hiba az O_APPEND visszaállításakor a szabványos kimenetre: %s"
-#: src/xz/file_io.c:1093
+#: src/xz/file_io.c
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: A fájl lezárása sikertelen: %s"
-#: src/xz/file_io.c:1129 src/xz/file_io.c:1391
+#: src/xz/file_io.c
#, c-format
msgid "%s: Seeking failed when trying to create a sparse file: %s"
msgstr "%s: A pozícionálás sikertelen a ritka fájl létrehozásának kísérletekor: %s"
-#: src/xz/file_io.c:1229
+#: src/xz/file_io.c
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: Olvasási hiba: %s"
-#: src/xz/file_io.c:1259
+#: src/xz/file_io.c
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: Hiba a fájlban pozícionáláskor: %s"
-#: src/xz/file_io.c:1283
+#: src/xz/file_io.c
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: Váratlan fájlvég"
-#: src/xz/file_io.c:1342
+#: src/xz/file_io.c
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: Írási hiba: %s"
-#: src/xz/hardware.c:238
+#: src/xz/hardware.c
msgid "Disabled"
msgstr "Letiltva"
-#: src/xz/hardware.c:269
+#: src/xz/hardware.c
msgid "Amount of physical memory (RAM):"
msgstr "Fizikai memória (RAM) mennyisége:"
-#: src/xz/hardware.c:270
+#: src/xz/hardware.c
msgid "Number of processor threads:"
msgstr "Processzorszálak száma:"
-#: src/xz/hardware.c:271
+#: src/xz/hardware.c
msgid "Compression:"
msgstr "Tömörítés:"
-#: src/xz/hardware.c:272
+#: src/xz/hardware.c
msgid "Decompression:"
msgstr "Kibontás:"
-#: src/xz/hardware.c:273
+#: src/xz/hardware.c
msgid "Multi-threaded decompression:"
msgstr "Többszálás kibontás:"
-#: src/xz/hardware.c:274
+#: src/xz/hardware.c
msgid "Default for -T0:"
msgstr "A -T0 alapértelmezése:"
-#: src/xz/hardware.c:292
+#: src/xz/hardware.c
msgid "Hardware information:"
msgstr "Hardverjellemzők:"
-#: src/xz/hardware.c:299
+#: src/xz/hardware.c
msgid "Memory usage limits:"
msgstr "Memóriahasználat korlátja:"
-#: src/xz/list.c:68
+#: src/xz/list.c
msgid "Streams:"
msgstr "Adatfolyamok:"
-#: src/xz/list.c:69
+#: src/xz/list.c
msgid "Blocks:"
msgstr "Blokkok:"
-#: src/xz/list.c:70
+#: src/xz/list.c
msgid "Compressed size:"
msgstr "Tömörített méret:"
-#: src/xz/list.c:71
+#: src/xz/list.c
msgid "Uncompressed size:"
msgstr "Kibontott méret:"
-#: src/xz/list.c:72
+#: src/xz/list.c
msgid "Ratio:"
msgstr "Arány:"
-#: src/xz/list.c:73
+#: src/xz/list.c
msgid "Check:"
msgstr "Ellenőrzés:"
-#: src/xz/list.c:74
+#: src/xz/list.c
msgid "Stream Padding:"
msgstr "Adatfolyam kerete:"
-#: src/xz/list.c:75
+#: src/xz/list.c
msgid "Memory needed:"
msgstr "Szükséges memória:"
-#: src/xz/list.c:76
+#: src/xz/list.c
msgid "Sizes in headers:"
msgstr "Méretek a fejlécekben:"
-#: src/xz/list.c:79
+#: src/xz/list.c
msgid "Number of files:"
msgstr "Fájlok száma:"
-#: src/xz/list.c:122
+#: src/xz/list.c
msgid "Stream"
msgstr "Adatfolyam"
-#: src/xz/list.c:123
+#: src/xz/list.c
msgid "Block"
msgstr "Blokk"
-#: src/xz/list.c:124
+#: src/xz/list.c
msgid "Blocks"
msgstr "Blokkok"
-#: src/xz/list.c:125
+#: src/xz/list.c
msgid "CompOffset"
msgstr "Tömörített eltolás"
-#: src/xz/list.c:126
+#: src/xz/list.c
msgid "UncompOffset"
msgstr "Kibontott eltolás"
-#: src/xz/list.c:127
+#: src/xz/list.c
msgid "CompSize"
msgstr "Tömörített méret"
-#: src/xz/list.c:128
+#: src/xz/list.c
msgid "UncompSize"
msgstr "Kibontott méret"
-#: src/xz/list.c:129
+#: src/xz/list.c
msgid "TotalSize"
msgstr "Teljes méret"
-#: src/xz/list.c:130
+#: src/xz/list.c
msgid "Ratio"
msgstr "Arány"
-#: src/xz/list.c:131
+#: src/xz/list.c
msgid "Check"
msgstr "Ellenőrzés"
-#: src/xz/list.c:132
+#: src/xz/list.c
msgid "CheckVal"
msgstr "Ellenőrzőérték"
-#: src/xz/list.c:133
+#: src/xz/list.c
msgid "Padding"
msgstr "Keret"
-#: src/xz/list.c:134
+#: src/xz/list.c
msgid "Header"
msgstr "Fejléc"
-#: src/xz/list.c:135
+#: src/xz/list.c
msgid "Flags"
msgstr "Jelzők"
-#: src/xz/list.c:136
+#: src/xz/list.c
msgid "MemUsage"
msgstr "Memóriahasználat"
-#: src/xz/list.c:137
+#: src/xz/list.c
msgid "Filters"
msgstr "Szűrők"
@@ -424,7 +452,7 @@ msgstr "Szűrők"
#. This string is used in tables. In older xz version this
#. string was limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:169
+#: src/xz/list.c
msgid "None"
msgstr "Nincs"
@@ -432,60 +460,60 @@ msgstr "Nincs"
#. but the Check ID is known (here 2). In older xz version these
#. strings were limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:175
+#: src/xz/list.c
msgid "Unknown-2"
msgstr "Névtelen-2"
-#: src/xz/list.c:176
+#: src/xz/list.c
msgid "Unknown-3"
msgstr "Névtelen-3"
-#: src/xz/list.c:178
+#: src/xz/list.c
msgid "Unknown-5"
msgstr "Névtelen-5"
-#: src/xz/list.c:179
+#: src/xz/list.c
msgid "Unknown-6"
msgstr "Névtelen-6"
-#: src/xz/list.c:180
+#: src/xz/list.c
msgid "Unknown-7"
msgstr "Névtelen-7"
-#: src/xz/list.c:181
+#: src/xz/list.c
msgid "Unknown-8"
msgstr "Névtelen-8"
-#: src/xz/list.c:182
+#: src/xz/list.c
msgid "Unknown-9"
msgstr "Névtelen-9"
-#: src/xz/list.c:184
+#: src/xz/list.c
msgid "Unknown-11"
msgstr "Névtelen-11"
-#: src/xz/list.c:185
+#: src/xz/list.c
msgid "Unknown-12"
msgstr "Névtelen-12"
-#: src/xz/list.c:186
+#: src/xz/list.c
msgid "Unknown-13"
msgstr "Névtelen-13"
-#: src/xz/list.c:187
+#: src/xz/list.c
msgid "Unknown-14"
msgstr "Névtelen-14"
-#: src/xz/list.c:188
+#: src/xz/list.c
msgid "Unknown-15"
msgstr "Névtelen-15"
-#: src/xz/list.c:351
+#: src/xz/list.c
#, c-format
msgid "%s: File is empty"
msgstr "%s: A fájl üres"
-#: src/xz/list.c:356
+#: src/xz/list.c
#, c-format
msgid "%s: Too small to be a valid .xz file"
msgstr "%s: Túl kicsi, hogy érvényes .xz fájl legyen"
@@ -494,64 +522,68 @@ msgstr "%s: Túl kicsi, hogy érvényes .xz fájl legyen"
#. 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:731
+#: src/xz/list.c
msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename"
msgstr "Folyam Blokkok Tömörített Kibontott Arány Ellenőrzés Fájlnév"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "Yes"
msgstr "Igen"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "No"
msgstr "Nem"
-#: src/xz/list.c:1028 src/xz/list.c:1206
+#: src/xz/list.c
#, c-format
msgid " Minimum XZ Utils version: %s\n"
msgstr " Legkisebb XZ Utils verzió: %s\n"
#. TRANSLATORS: %s is an integer. Only the plural form of this
#. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz".
-#: src/xz/list.c:1179
+#: src/xz/list.c
#, c-format
msgid "%s file\n"
msgid_plural "%s files\n"
msgstr[0] "%s fájl\n"
msgstr[1] "%s fájl\n"
-#: src/xz/list.c:1192
+#: src/xz/list.c
msgid "Totals:"
msgstr "Összesen:"
-#: src/xz/list.c:1270
+#: src/xz/list.c
msgid "--list works only on .xz files (--format=xz or --format=auto)"
msgstr "A --list csak .xz fájlokkal működik (--format=xz vagy --format=auto)"
-#: src/xz/list.c:1276
+#: src/xz/list.c
+msgid "Try 'lzmainfo' with .lzma files."
+msgstr "Az „lzmainfo” kipróbálása az .lzma fájlok esetén."
+
+#: src/xz/list.c
msgid "--list does not support reading from standard input"
msgstr "A --list nem támogatja a szabványos bemenetről beolvasást"
-#: src/xz/main.c:89
+#: src/xz/main.c
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s: Hiba a fájlnevek olvasásakor: %s"
-#: src/xz/main.c:96
+#: src/xz/main.c
#, c-format
msgid "%s: Unexpected end of input when reading filenames"
msgstr "%s: A bemenet váratlanul véget ért a fájlnevek olvasásakor"
-#: src/xz/main.c:120
+#: src/xz/main.c
#, c-format
-msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
+msgid "%s: Null character found when reading filenames; maybe you meant to use '--files0' instead of '--files'?"
msgstr "%s: Null karakter található a fájlnevek olvasásakor; talán a „--files0” kapcsolóra gondolt a „--files” helyett?"
-#: src/xz/main.c:188
+#: src/xz/main.c
msgid "Compression and decompression with --robot are not supported yet."
msgstr "A tömörítés és kibontás még nem támogatott a --robot kapcsolóval."
-#: src/xz/main.c:266
+#: src/xz/main.c
msgid "Cannot read data from standard input when reading filenames from standard input"
msgstr "Az adatok nem olvashatók be a szabványos bemenetről a fájlnevek olvasásakor"
@@ -559,68 +591,68 @@ msgstr "Az adatok nem olvashatók be a szabványos bemenetről a fájlnevek olva
#. 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:670 src/xz/message.c:725
+#: src/xz/message.c
#, c-format
msgid "%s: "
msgstr "%s: "
-#: src/xz/message.c:797 src/xz/message.c:856
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
msgid "Internal error (bug)"
msgstr "Belső hiba (bug)"
-#: src/xz/message.c:804
+#: src/xz/message.c
msgid "Cannot establish signal handlers"
msgstr "A szignálkezelők nem hozhatók létre"
-#: src/xz/message.c:813
+#: src/xz/message.c
msgid "No integrity check; not verifying file integrity"
msgstr "Nincs integritás-ellenőrzés; a fájl épsége nem lesz ellenőrizve"
-#: src/xz/message.c:816
+#: src/xz/message.c
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "Nem támogatott integritás-ellenőrzési típus; a fájl épsége nem lesz ellenőrizve"
-#: src/xz/message.c:823
+#: src/xz/message.c
msgid "Memory usage limit reached"
msgstr "Memóriahasználat korlátja elérve"
-#: src/xz/message.c:826
+#: src/xz/message.c
msgid "File format not recognized"
msgstr "A fájlformátum nem felismert"
-#: src/xz/message.c:829
+#: src/xz/message.c
msgid "Unsupported options"
msgstr "Nem támogatott kapcsolók"
-#: src/xz/message.c:832
+#: src/xz/message.c
msgid "Compressed data is corrupt"
msgstr "A tömörített adatok megsérültek"
-#: src/xz/message.c:835
+#: src/xz/message.c
msgid "Unexpected end of input"
msgstr "A bemenet váratlanul véget ért"
-#: src/xz/message.c:877
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "%s MiB memória szükséges. A korlátozás letiltva."
-#: src/xz/message.c:905
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr "%s MiB memória szükséges. A korlát %s."
-#: src/xz/message.c:924
+#: src/xz/message.c
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: Szűrőlánc: %s\n"
-#: src/xz/message.c:935
+#: src/xz/message.c
#, c-format
-msgid "Try `%s --help' for more information."
+msgid "Try '%s --help' for more information."
msgstr "További információkért adja ki a következő parancsot: „%s --help”."
-#: src/xz/message.c:961
+#: src/xz/message.c
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
@@ -631,15 +663,15 @@ msgstr ""
".xz formátumú FÁJLok tömörítése vagy kibontása.\n"
"\n"
-#: src/xz/message.c:968
+#: src/xz/message.c
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr "A hosszú kapcsolók kötelező argumentumai a rövid kapcsolók esetén is kötelezők.\n"
-#: src/xz/message.c:972
+#: src/xz/message.c
msgid " Operation mode:\n"
msgstr " Működési mód:\n"
-#: src/xz/message.c:975
+#: src/xz/message.c
msgid ""
" -z, --compress force compression\n"
" -d, --decompress force decompression\n"
@@ -651,7 +683,7 @@ msgstr ""
" -t, --test tömörített fájl épségének tesztelése\n"
" -l, --list információk kiírása az .xz fájlokról"
-#: src/xz/message.c:981
+#: src/xz/message.c
msgid ""
"\n"
" Operation modifiers:\n"
@@ -659,7 +691,7 @@ msgstr ""
"\n"
" Műveleti módosítók:\n"
-#: src/xz/message.c:984
+#: src/xz/message.c
msgid ""
" -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\n"
@@ -671,7 +703,7 @@ msgstr ""
" -c, --stdout írás a szabványos kimenetre írás, és nem törli a\n"
" bemeneti fájlokat"
-#: src/xz/message.c:993
+#: src/xz/message.c
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
@@ -679,10 +711,10 @@ msgstr ""
" --single-stream csak az első adatfolyam kibontása, és a\n"
" lehetséges hátralévő bemeneti adatok mellőzése"
-#: src/xz/message.c:996
+#: src/xz/message.c
msgid ""
" --no-sparse do not create sparse files when decompressing\n"
-" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
+" -S, --suffix=.SUF use the suffix '.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n"
" omitted, filenames are read from the standard input;\n"
" filenames must be terminated with the newline character\n"
@@ -697,7 +729,7 @@ msgstr ""
" --files0[=FÁJL] mint a --files, de a null karaktert használja\n"
" használja elválasztóként"
-#: src/xz/message.c:1005
+#: src/xz/message.c
msgid ""
"\n"
" Basic file format and compression options:\n"
@@ -705,12 +737,12 @@ msgstr ""
"\n"
" Alapvető fájlformátum és tömörítési beállítások:\n"
-#: src/xz/message.c:1007
+#: src/xz/message.c
msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n"
-" `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
-" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-" `crc32', `crc64' (default), or `sha256'"
+" 'auto' (default), 'xz', 'lzma', 'lzip', and 'raw'\n"
+" -C, --check=CHECK integrity check type: 'none' (use with caution),\n"
+" 'crc32', 'crc64' (default), or 'sha256'"
msgstr ""
" -F, --format=FMT a kódoláshoz vagy dekódoláshoz használt fájlformátum;\n"
" lehetséges értékek „auto” (alapértelmezett), „xz”,\n"
@@ -718,11 +750,11 @@ msgstr ""
" -C, --check=ELL integritás-ellenőrzés típusa: „none” (óvatosan használja),\n"
" „crc32”, „crc64” (alapértelmezett) vagy „sha256”"
-#: src/xz/message.c:1012
+#: src/xz/message.c
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr " --ignore-check kibontáskor ne ellenőrizze az épséget"
-#: src/xz/message.c:1016
+#: src/xz/message.c
msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!"
@@ -731,7 +763,7 @@ msgstr ""
" a 7-9 használata előtt vegye figyelembe a tömörítő\n"
" *és* kibontó memóriahasználatát!"
-#: src/xz/message.c:1020
+#: src/xz/message.c
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
@@ -739,16 +771,16 @@ msgstr ""
" -e, --extreme a tömörítési arány javítási kísérlete több CPU-idő\n"
" használatával; nincs hatással a kibontó memóriaigényére"
-#: src/xz/message.c:1024
+#: src/xz/message.c
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"
+" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
+" as many threads as there are processor cores"
msgstr ""
-" -T, --threads=SZÁM legfeljebb ennyi szál használata; alapértelmezett az 1;\n"
-" állítsa 0-ra, hogy annyi szálat használjon, amennyi\n"
-" processzormag áll rendelkezésre"
+" -T, --threads=SZÁM legfeljebb ennyi szál használata; alapértelmezett a 0,\n"
+" amely annyi szálat használ, amennyi processzormag áll\n"
+" rendelkezésre"
-#: src/xz/message.c:1029
+#: src/xz/message.c
msgid ""
" --block-size=SIZE\n"
" start a new .xz block after every SIZE bytes of input;\n"
@@ -758,17 +790,21 @@ msgstr ""
" új .xz blokk indítása minden MÉRETnyi bájt bemenet után;\n"
" a többszálas tömörítés blokkméretének megadásához"
-#: src/xz/message.c:1033
+#: src/xz/message.c
msgid ""
-" --block-list=SIZES\n"
+" --block-list=BLOCKS\n"
" start a new .xz block after the given comma-separated\n"
-" intervals of uncompressed data"
+" intervals of uncompressed data; optionally, specify a\n"
+" filter chain number (0-9) followed by a ':' before the\n"
+" uncompressed data size"
msgstr ""
-" --block-list=MÉRETEK\n"
+" --block-list=BLOKKOK\n"
" új .xz blokk indítása a vesszőkkel felsorolva megadott\n"
-" méretű tömörítetlen adatszakaszok után"
+" méretű tömörítetlen adatszakaszok után; a tömörítetlen\n"
+" adatok mérete előtt egy szűrőláncszám (0-9) is megadható\n"
+" egy „:” karakter közbeiktatásával"
-#: src/xz/message.c:1037
+#: src/xz/message.c
msgid ""
" --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n"
@@ -780,7 +816,7 @@ msgstr ""
" telt el az előző kiírástól, és a bemenetolvasás\n"
" blokkolna, akkor minden adat ki lesz írva"
-#: src/xz/message.c:1043
+#: src/xz/message.c
#, no-c-format
msgid ""
" --memlimit-compress=LIMIT\n"
@@ -800,7 +836,7 @@ msgstr ""
" KORLÁT bájtokban van megadva, a RAM %-ában, vagy 0 az\n"
" alapértelmezéshez"
-#: src/xz/message.c:1052
+#: src/xz/message.c
msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards"
@@ -809,7 +845,7 @@ msgstr ""
" korlátot, akkor hibát fog adni a beállítások lefelé\n"
" állítása helyett"
-#: src/xz/message.c:1058
+#: src/xz/message.c
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
@@ -817,7 +853,35 @@ msgstr ""
"\n"
" Egyéni szűrőlánc a tömörítéshez (alternatíva az előbeállításokra):"
-#: src/xz/message.c:1067
+#: src/xz/message.c
+msgid ""
+"\n"
+" --filters=FILTERS set the filter chain using the liblzma filter string\n"
+" syntax; use --filters-help for more information"
+msgstr ""
+"\n"
+" --filters=SZŰRŐK a szűrőlánc beállítása liblzma szűrőformátummal;\n"
+" további információkért lásd a --filters-help kapcsolót"
+
+#: src/xz/message.c
+msgid ""
+" --filters1=FILTERS ... --filters9=FILTERS\n"
+" set additional filter chains using the liblzma filter\n"
+" string syntax to use with --block-list"
+msgstr ""
+" --filters1=SZŰRŐK ... --filters9=SZŰRŐK\n"
+" további szűrőláncok beállítása liblzma formátummal a\n"
+" --block-list kapcsolóhoz"
+
+#: src/xz/message.c
+msgid ""
+" --filters-help display more information about the liblzma filter string\n"
+" syntax and exit."
+msgstr ""
+" --filters-help további információk megjelenítése a libzma\n"
+" szűrőformátumról, majd kilépés."
+
+#: src/xz/message.c
msgid ""
"\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
@@ -847,7 +911,7 @@ msgstr ""
" depth=SZÁM legnagyobb keresési mélység; 0=automatikus\n"
" (alapértelmezett)"
-#: src/xz/message.c:1082
+#: src/xz/message.c
msgid ""
"\n"
" --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
@@ -857,6 +921,7 @@ msgid ""
" --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
" --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
" --sparc[=OPTS] SPARC BCJ filter\n"
+" --riscv[=OPTS] RISC-V BCJ filter\n"
" Valid OPTS for all BCJ filters:\n"
" start=NUM start offset for conversions (default=0)"
msgstr ""
@@ -868,11 +933,12 @@ msgstr ""
" --powerpc[=KAPCS] PowerPC BCJ szűrő (csak big endian esetén)\n"
" --ia64[=KAPCS] IA-64 (Itanium) BCJ szűrő\n"
" --sparc[=KAPCS] SPARC BCJ szűrő\n"
+" --riscv[=KAPCS] RISC-V BCJ szűrő\n"
" Érvényes KAPCS az összes BCJ szűrőhöz:\n"
-" start=SZÁM kezdési eltolás az átalakításokhoz\n"
-" (alapértelmezett=0)"
+" start=SZÁM kezdési eltolás az átalakításokhoz\n"
+" (alapértelmezett=0)"
-#: src/xz/message.c:1095
+#: src/xz/message.c
msgid ""
"\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n"
@@ -885,7 +951,7 @@ msgstr ""
" dist=SZÁM az egymásból kivont bájtok közti\n"
" távolság (1-256; 1)"
-#: src/xz/message.c:1103
+#: src/xz/message.c
msgid ""
"\n"
" Other options:\n"
@@ -893,7 +959,7 @@ msgstr ""
"\n"
" Egyéb kapcsolók:\n"
-#: src/xz/message.c:1106
+#: src/xz/message.c
msgid ""
" -q, --quiet suppress warnings; specify twice to suppress errors too\n"
" -v, --verbose be verbose; specify twice for even more verbose"
@@ -903,19 +969,19 @@ msgstr ""
" -v, --verbose legyen bőbeszédű; adja meg kétszer, hogy még bőbeszédűbb\n"
" legyen"
-#: src/xz/message.c:1111
+#: src/xz/message.c
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr ""
" -Q, --no-warn a figyelmeztetések nem befolyásolják a kilépési\n"
" állapotkódot"
-#: src/xz/message.c:1113
+#: src/xz/message.c
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr ""
" --robot géppel értelmezhető üzenetek használata\n"
" (parancsfájlok esetén hasznos)"
-#: src/xz/message.c:1116
+#: src/xz/message.c
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
@@ -923,7 +989,7 @@ msgstr ""
" --info-memory az összes RAM mennyiségének és a jelenlegi\n"
" memóriahasználati korlátok megjelenítése, és kilépés"
-#: src/xz/message.c:1119
+#: src/xz/message.c
msgid ""
" -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit"
@@ -931,7 +997,7 @@ msgstr ""
" -h, --help a rövid súgó megjelenítése (csak az alapvető kapcsolók)\n"
" -H, --long-help ezen hosszú súgó megjelenítése, és kilépés"
-#: src/xz/message.c:1123
+#: src/xz/message.c
msgid ""
" -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)"
@@ -939,11 +1005,12 @@ msgstr ""
" -h, --help ezen rövid súgó megjelenítése, és kilépés\n"
" -H, --long-help a hosszú súgó megjelenítése (speciális kapcsolókhoz)"
-#: src/xz/message.c:1128
+#: src/xz/message.c
msgid " -V, --version display the version number and exit"
msgstr " -V, --version a verziószám kiírása és kilépés"
-#: src/xz/message.c:1130
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
+#, c-format
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
@@ -955,94 +1022,130 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks.
-#: src/xz/message.c:1136
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr "Ide jelentse a hibákat: <%s> (angolul vagy finnül).\n"
-#: src/xz/message.c:1138
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "%s home page: <%s>\n"
msgstr "%s honlap: <%s>\n"
-#: src/xz/message.c:1142
+#: src/xz/message.c
msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
msgstr "EZ EGY FEJLESZTŐI VÁLTOZAT, NEM ÉLES HASZNÁLATRA SZÁNT."
-#: src/xz/options.c:86
+#: src/xz/message.c
+msgid ""
+"Filter chains are set using the --filters=FILTERS or\n"
+"--filters1=FILTERS ... --filters9=FILTERS options. Each filter in the chain\n"
+"can be separated by spaces or '--'. Alternatively a preset <0-9>[e] can be\n"
+"specified instead of a filter chain.\n"
+msgstr ""
+"A szűrőláncokat a --filters=SZŰRŐK vagy a\n"
+"--filters1=SZŰRŐK ... --filters9=SZŰRŐK kapcsolókkal lehet megadni. A láncban\n"
+"szereplő egyes szűrőket szóközökkel vagy „--” karakterekkel kell elválasztani.\n"
+"Illetve egy <0-9>[e] előbeállítás is megadható szűrőlánc helyett.\n"
+
+#: src/xz/message.c
+msgid "The supported filters and their options are:"
+msgstr "A támogatott szűrők és azok kapcsolói a következők:"
+
+#: src/xz/options.c
#, c-format
-msgid "%s: Options must be `name=value' pairs separated with commas"
+msgid "%s: Options must be 'name=value' pairs separated with commas"
msgstr "%s: A kapcsolóknak vesszőkkel elválasztott „név=érték” pároknak kell lenniük"
-#: src/xz/options.c:93
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option name"
msgstr "%s: Érvénytelen kapcsolónév"
-#: src/xz/options.c:113
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option value"
msgstr "%s: Érvénytelen kapcsolóérték"
-#: src/xz/options.c:248
+#: src/xz/options.c
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "Nem támogatott LZMA1/LZMA2 előbeállítás: %s"
-#: src/xz/options.c:356
+#: src/xz/options.c
msgid "The sum of lc and lp must not exceed 4"
msgstr "Az lc és lp összege nem haladhatja meg a 4-et"
-#: src/xz/suffix.c:160
+#: src/xz/suffix.c
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: A fájlnév utótagja ismeretlen, kihagyás"
-#: src/xz/suffix.c:181
+#: src/xz/suffix.c
#, c-format
-msgid "%s: File already has `%s' suffix, skipping"
-msgstr "%s: A(z) „%s” fájlnak már van utótagja, kihagyás"
+msgid "%s: File already has '%s' suffix, skipping"
+msgstr "%s: A fájlnak már van „%s” utótagja, kihagyás"
-#: src/xz/suffix.c:388
+#: src/xz/suffix.c
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s: Érvénytelen fájlnév utótag"
-#: src/xz/util.c:107
+#: src/xz/util.c
#, c-format
msgid "%s: Value is not a non-negative decimal integer"
msgstr "%s: Az érték nem nemnegatív decimális egész szám"
-#: src/xz/util.c:149
+#: src/xz/util.c
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s: Érvénytelen szorzó utótag"
-#: src/xz/util.c:151
-msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+#: src/xz/util.c
+msgid "Valid suffixes are 'KiB' (2^10), 'MiB' (2^20), and 'GiB' (2^30)."
msgstr "Az érvényes utótagok: „KiB” (2^10), „MiB” (2^20) és „GiB” (2^30)."
-#: src/xz/util.c:168
+#: src/xz/util.c
#, c-format
-msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+msgid "Value of the option '%s' must be in the range [%<PRIu64>, %<PRIu64>]"
msgstr "A(z) „%s” kapcsoló értékének a(z) [%<PRIu64>, %<PRIu64>] tartományban kell lennie"
-#: src/xz/util.c:270
+#: src/xz/util.c
msgid "Compressed data cannot be read from a terminal"
msgstr "A tömörített adatokat nem lehet beolvasni a terminálból"
-#: src/xz/util.c:283
+#: src/xz/util.c
msgid "Compressed data cannot be written to a terminal"
msgstr "A tömörített adatokat nem lehet kiírni a terminálba"
-#: src/common/tuklib_exit.c:40
+#: src/lzmainfo/lzmainfo.c
+#, c-format
+msgid ""
+"Usage: %s [--help] [--version] [FILE]...\n"
+"Show information stored in the .lzma file header"
+msgstr ""
+"Használat: %s [--help] [--version] [FÁJL]…\n"
+"Az .lzma fájl fejlécében tárolt információk megjelenítése"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "File is too small to be a .lzma file"
+msgstr "A fájl túl kicsi, hogy érvényes .lzma fájl legyen"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "Not a .lzma file"
+msgstr "Nem .lzma fájl"
+
+#: src/common/tuklib_exit.c
msgid "Writing to standard output failed"
msgstr "A szabványos kimenetre írás sikertelen"
-#: src/common/tuklib_exit.c:43
+#: src/common/tuklib_exit.c
msgid "Unknown error"
msgstr "Ismeretlen hiba"
+#~ msgid "Failed to enable the sandbox"
+#~ msgstr "A homokozó engedélyezése sikertelen"
+
#, c-format
#~ msgid "The selected match finder requires at least nice=%<PRIu32>"
#~ msgstr "A kiválasztott egyezéskeresőhöz legalább nice=%<PRIu32> szükséges"
diff --git a/po/it.gmo b/po/it.gmo
index 73a6ede..6f670ce 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index 96f519b..88384f0 100644
--- a/po/it.po
+++ b/po/it.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: xz 5.2.4\n"
"Report-Msgid-Bugs-To: xz@tukaani.org\n"
-"POT-Creation-Date: 2023-10-31 22:33+0800\n"
+"POT-Creation-Date: 2024-05-29 17:41+0300\n"
"PO-Revision-Date: 2019-03-04 14:21+0100\n"
"Last-Translator: Milo Casagrande <milo@milo.name>\n"
"Language-Team: Italian <tp@lists.linux.it>\n"
@@ -21,147 +21,181 @@ msgstr ""
"X-Generator: Poedit 2.2.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/xz/args.c:77
+#: src/xz/args.c
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr "%s: argomento non valido per --block-list"
-#: src/xz/args.c:87
+#: src/xz/args.c
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s: troppi argomenti per --block-list"
-#: src/xz/args.c:116
+#: src/xz/args.c
+#, c-format
+msgid "In --block-list, block size is missing after filter chain number '%c:'"
+msgstr ""
+
+#: src/xz/args.c
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:451
+#: src/xz/args.c
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s: tipo di formato del file sconosciuto"
-#: src/xz/args.c:474 src/xz/args.c:482
+#: src/xz/args.c
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s: tipo di controllo integrità non supportato"
-#: src/xz/args.c:518
-msgid "Only one file can be specified with `--files' or `--files0'."
+#: src/xz/args.c
+#, fuzzy
+#| msgid "Only one file can be specified with `--files' or `--files0'."
+msgid "Only one file can be specified with '--files' or '--files0'."
msgstr "Solo un file può essere specificato con \"--files\" o \"--files0\"."
#. TRANSLATORS: This is a translatable
#. string because French needs a space
#. before the colon ("%s : %s").
-#: src/xz/args.c:533 src/xz/coder.c:692 src/xz/coder.c:708 src/xz/coder.c:968
-#: src/xz/coder.c:971 src/xz/file_io.c:605 src/xz/file_io.c:679
-#: src/xz/file_io.c:769 src/xz/file_io.c:940 src/xz/list.c:369
-#: src/xz/list.c:415 src/xz/list.c:477 src/xz/list.c:581 src/xz/list.c:590
+#: src/xz/args.c src/xz/coder.c src/xz/file_io.c src/xz/list.c
#, fuzzy, c-format
#| msgid "%s: "
msgid "%s: %s"
msgstr "%s: "
-#: src/xz/args.c:589
+#: src/xz/args.c
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "La variabile d'ambiente %s contiene troppi argomenti"
-#: src/xz/args.c:691
+#: src/xz/args.c
msgid "Compression support was disabled at build time"
msgstr "Il supporto alla compressione è stato disabilitato in fase di compilazione"
-#: src/xz/args.c:698
+#: src/xz/args.c
msgid "Decompression support was disabled at build time"
msgstr "Il supporto alla decompressione è stato disabilitato in fase di compilazione"
-#: src/xz/args.c:704
+#: src/xz/args.c
msgid "Compression of lzip files (.lz) is not supported"
msgstr ""
-#: src/xz/args.c:735
+#: src/xz/args.c
+msgid "--block-list is ignored unless compressing to the .xz format"
+msgstr ""
+
+#: src/xz/args.c
#, fuzzy
#| msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "%s: con --format=raw, --suffix=.SUF è richiesto a meno che non si scriva sullo stdout"
-#: src/xz/coder.c:115
+#: src/xz/coder.c
msgid "Maximum number of filters is four"
msgstr "Il numero massimo di filtri è quattro"
-#: src/xz/coder.c:135
+#: src/xz/coder.c
+#, c-format
+msgid "Error in --filters%s=FILTERS option:"
+msgstr ""
+
+#: src/xz/coder.c
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:170
+#: src/xz/coder.c
+#, c-format
+msgid "filter chain %u used by --block-list but not specified with --filters%u="
+msgstr ""
+
+#: src/xz/coder.c
msgid "Using a preset in raw mode is discouraged."
msgstr "Non è consigliato usare un preset nella modalità raw."
-#: src/xz/coder.c:172
+#: src/xz/coder.c
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:195
+#: src/xz/coder.c
msgid "The .lzma format supports only the LZMA1 filter"
msgstr "Il formato .lzma supporta solo il filtro LZMA1"
-#: src/xz/coder.c:203
+#: src/xz/coder.c
msgid "LZMA1 cannot be used with the .xz format"
msgstr "LZMA1 non può essere usato con il formato .xz"
-#: src/xz/coder.c:220
-msgid "The filter chain is incompatible with --flush-timeout"
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "The filter chain is incompatible with --flush-timeout"
+msgid "Filter chain %u is incompatible with --flush-timeout"
msgstr "La catena di filtri non è compatibile con --flush-timeout"
-#: src/xz/coder.c:226
+#: src/xz/coder.c
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:250
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Unsupported options"
+msgid "Unsupported options in filter chain %u"
+msgstr "Opzioni non supportate"
+
+#: src/xz/coder.c
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "Vengono usati circa %<PRIu32> thread."
-#: src/xz/coder.c:266
+#: src/xz/coder.c
msgid "Unsupported filter chain or filter options"
msgstr "Catena di filtri od opzioni del filtro non supportata"
-#: src/xz/coder.c:278
+#: src/xz/coder.c
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "L'estrazione necessita di %s MiB di memoria."
-#: src/xz/coder.c:310
+#: src/xz/coder.c
#, fuzzy, c-format
#| msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgstr "Regolato il numero di thread da %s a %s per non eccedere il limite di utilizzo della memoria di %s MiB"
-#: src/xz/coder.c:330
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway."
msgstr ""
-#: src/xz/coder.c:357
+#: src/xz/coder.c
#, fuzzy, c-format
#| msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB"
msgstr "Regolato il numero di thread da %s a %s per non eccedere il limite di utilizzo della memoria di %s MiB"
-#: src/xz/coder.c:412
+#: src/xz/coder.c
#, 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:110 src/xz/file_io.c:118
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgid "Adjusted LZMA%c dictionary size for --filters%u 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/coder.c
+#, fuzzy, c-format
+#| msgid "Error creating a pipe: %s"
+msgid "Error changing to filter chain %u: %s"
+msgstr "Errore nel creare una pipe: %s"
+
+#: src/xz/file_io.c
#, c-format
msgid "Error creating a pipe: %s"
msgstr "Errore nel creare una pipe: %s"
-#: src/xz/file_io.c:252
-msgid "Failed to enable the sandbox"
-msgstr "Abilitazione modalità sandbox non riuscita"
-
-#: src/xz/file_io.c:294
+#: src/xz/file_io.c
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s: poll() non riuscita: %s"
@@ -176,272 +210,272 @@ msgstr "%s: poll() non riuscita: %s"
#. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously
#. shouldn't be removed.
-#: src/xz/file_io.c:361
+#: src/xz/file_io.c
#, 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:368 src/xz/file_io.c:924
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: impossibile rimuovere: %s"
-#: src/xz/file_io.c:394
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: impossibile impostare il proprietario del file: %s"
-#: src/xz/file_io.c:407
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: impossibile impostare il gruppo del file: %s"
-#: src/xz/file_io.c:426
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: impossibile impostare i permessi del file: %s"
-#: src/xz/file_io.c:552
+#: src/xz/file_io.c
#, 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:610 src/xz/file_io.c:672
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: è un collegamento simbolico, viene saltato"
-#: src/xz/file_io.c:701
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: è una directory, viene saltata"
-#: src/xz/file_io.c:707
+#: src/xz/file_io.c
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: non è un file regolare, viene saltato"
-#: src/xz/file_io.c:724
+#: src/xz/file_io.c
#, 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:731
+#: src/xz/file_io.c
#, 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:738
+#: src/xz/file_io.c
#, 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:780
+#: src/xz/file_io.c
msgid "Empty filename, skipping"
msgstr "Nome file vuoto, viene saltato"
-#: src/xz/file_io.c:834
+#: src/xz/file_io.c
#, 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:882
+#: src/xz/file_io.c
#, 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:1081
+#: src/xz/file_io.c
#, 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:1093
+#: src/xz/file_io.c
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: chiusura del file non riuscita: %s"
-#: src/xz/file_io.c:1129 src/xz/file_io.c:1391
+#: src/xz/file_io.c
#, 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:1229
+#: src/xz/file_io.c
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: errore di lettura: %s"
-#: src/xz/file_io.c:1259
+#: src/xz/file_io.c
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: errore nel cercare il file: %s"
-#: src/xz/file_io.c:1283
+#: src/xz/file_io.c
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: fine del file inaspettata"
-#: src/xz/file_io.c:1342
+#: src/xz/file_io.c
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: errore di scrittura: %s"
-#: src/xz/hardware.c:238
+#: src/xz/hardware.c
msgid "Disabled"
msgstr "Disabilitato"
-#: src/xz/hardware.c:269
+#: src/xz/hardware.c
#, fuzzy
#| msgid "Total amount of physical memory (RAM): "
msgid "Amount of physical memory (RAM):"
msgstr "Quantità totale di memoria fisica (RAM): "
-#: src/xz/hardware.c:270
+#: src/xz/hardware.c
msgid "Number of processor threads:"
msgstr ""
-#: src/xz/hardware.c:271
+#: src/xz/hardware.c
msgid "Compression:"
msgstr ""
-#: src/xz/hardware.c:272
+#: src/xz/hardware.c
msgid "Decompression:"
msgstr ""
-#: src/xz/hardware.c:273
+#: src/xz/hardware.c
#, fuzzy
#| msgid "Memory usage limit for decompression: "
msgid "Multi-threaded decompression:"
msgstr "Limite utilizzo memoria per l'estrazione: "
-#: src/xz/hardware.c:274
+#: src/xz/hardware.c
msgid "Default for -T0:"
msgstr ""
-#: src/xz/hardware.c:292
+#: src/xz/hardware.c
msgid "Hardware information:"
msgstr ""
-#: src/xz/hardware.c:299
+#: src/xz/hardware.c
#, fuzzy
#| msgid "Memory usage limit reached"
msgid "Memory usage limits:"
msgstr "Limite di utilizzo della memoria raggiunto"
-#: src/xz/list.c:68
+#: src/xz/list.c
msgid "Streams:"
msgstr ""
-#: src/xz/list.c:69
+#: src/xz/list.c
msgid "Blocks:"
msgstr ""
-#: src/xz/list.c:70
+#: src/xz/list.c
#, fuzzy
#| msgid " Compressed size: %s\n"
msgid "Compressed size:"
msgstr " Dim. compresso: %s\n"
-#: src/xz/list.c:71
+#: src/xz/list.c
#, fuzzy
#| msgid " Uncompressed size: %s\n"
msgid "Uncompressed size:"
msgstr " Dim. estratto: %s\n"
-#: src/xz/list.c:72
+#: src/xz/list.c
msgid "Ratio:"
msgstr ""
-#: src/xz/list.c:73
+#: src/xz/list.c
msgid "Check:"
msgstr ""
-#: src/xz/list.c:74
+#: src/xz/list.c
#, fuzzy
#| msgid " Stream padding: %s\n"
msgid "Stream Padding:"
msgstr " Padding dello stream: %s\n"
-#: src/xz/list.c:75
+#: src/xz/list.c
#, fuzzy
#| msgid " Memory needed: %s MiB\n"
msgid "Memory needed:"
msgstr " Memoria necessaria: %s MiB\n"
-#: src/xz/list.c:76
+#: src/xz/list.c
#, fuzzy
#| msgid " Sizes in headers: %s\n"
msgid "Sizes in headers:"
msgstr " Dim. negli header: %s\n"
-#: src/xz/list.c:79
+#: src/xz/list.c
#, fuzzy
#| msgid " Number of files: %s\n"
msgid "Number of files:"
msgstr " Numero di file: %s\n"
-#: src/xz/list.c:122
+#: src/xz/list.c
msgid "Stream"
msgstr ""
-#: src/xz/list.c:123
+#: src/xz/list.c
msgid "Block"
msgstr ""
-#: src/xz/list.c:124
+#: src/xz/list.c
msgid "Blocks"
msgstr ""
-#: src/xz/list.c:125
+#: src/xz/list.c
msgid "CompOffset"
msgstr ""
-#: src/xz/list.c:126
+#: src/xz/list.c
msgid "UncompOffset"
msgstr ""
-#: src/xz/list.c:127
+#: src/xz/list.c
msgid "CompSize"
msgstr ""
-#: src/xz/list.c:128
+#: src/xz/list.c
msgid "UncompSize"
msgstr ""
-#: src/xz/list.c:129
+#: src/xz/list.c
#, fuzzy
#| msgid "Totals:"
msgid "TotalSize"
msgstr "Totali:"
-#: src/xz/list.c:130
+#: src/xz/list.c
msgid "Ratio"
msgstr ""
-#: src/xz/list.c:131
+#: src/xz/list.c
msgid "Check"
msgstr ""
-#: src/xz/list.c:132
+#: src/xz/list.c
msgid "CheckVal"
msgstr ""
-#: src/xz/list.c:133
+#: src/xz/list.c
msgid "Padding"
msgstr ""
-#: src/xz/list.c:134
+#: src/xz/list.c
msgid "Header"
msgstr ""
-#: src/xz/list.c:135
+#: src/xz/list.c
msgid "Flags"
msgstr ""
-#: src/xz/list.c:136
+#: src/xz/list.c
msgid "MemUsage"
msgstr ""
-#: src/xz/list.c:137
+#: src/xz/list.c
msgid "Filters"
msgstr ""
@@ -449,7 +483,7 @@ msgstr ""
#. This string is used in tables. In older xz version this
#. string was limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:169
+#: src/xz/list.c
msgid "None"
msgstr "Nessuno"
@@ -457,60 +491,60 @@ msgstr "Nessuno"
#. but the Check ID is known (here 2). In older xz version these
#. strings were limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:175
+#: src/xz/list.c
msgid "Unknown-2"
msgstr "Sconosc2"
-#: src/xz/list.c:176
+#: src/xz/list.c
msgid "Unknown-3"
msgstr "Sconosc3"
-#: src/xz/list.c:178
+#: src/xz/list.c
msgid "Unknown-5"
msgstr "Sconosc5"
-#: src/xz/list.c:179
+#: src/xz/list.c
msgid "Unknown-6"
msgstr "Sconosc6"
-#: src/xz/list.c:180
+#: src/xz/list.c
msgid "Unknown-7"
msgstr "Sconosc7"
-#: src/xz/list.c:181
+#: src/xz/list.c
msgid "Unknown-8"
msgstr "Sconosc8"
-#: src/xz/list.c:182
+#: src/xz/list.c
msgid "Unknown-9"
msgstr "Sconosc9"
-#: src/xz/list.c:184
+#: src/xz/list.c
msgid "Unknown-11"
msgstr "Sconosc11"
-#: src/xz/list.c:185
+#: src/xz/list.c
msgid "Unknown-12"
msgstr "Sconosc12"
-#: src/xz/list.c:186
+#: src/xz/list.c
msgid "Unknown-13"
msgstr "Sconosc13"
-#: src/xz/list.c:187
+#: src/xz/list.c
msgid "Unknown-14"
msgstr "Sconosc14"
-#: src/xz/list.c:188
+#: src/xz/list.c
msgid "Unknown-15"
msgstr "Sconosc15"
-#: src/xz/list.c:351
+#: src/xz/list.c
#, c-format
msgid "%s: File is empty"
msgstr "%s: il file è vuoto"
-#: src/xz/list.c:356
+#: src/xz/list.c
#, c-format
msgid "%s: Too small to be a valid .xz file"
msgstr "%s: troppo piccolo per essere un file .xz valido"
@@ -519,64 +553,69 @@ msgstr "%s: troppo piccolo per essere un file .xz valido"
#. to Ratio, the columns are right aligned. Check and Filename
#. are left aligned. If you need longer words, it's OK to
#. use two lines here. Test with "xz -l foo.xz".
-#: src/xz/list.c:731
+#: src/xz/list.c
msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename"
msgstr " Strm Blocc. Compresso Estratto Rapp. Contr Nome file"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "Yes"
msgstr "Sì"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "No"
msgstr "No"
-#: src/xz/list.c:1028 src/xz/list.c:1206
+#: src/xz/list.c
#, 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:1179
+#: src/xz/list.c
#, 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:1192
+#: src/xz/list.c
msgid "Totals:"
msgstr "Totali:"
-#: src/xz/list.c:1270
+#: src/xz/list.c
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:1276
+#: src/xz/list.c
+msgid "Try 'lzmainfo' with .lzma files."
+msgstr ""
+
+#: src/xz/list.c
msgid "--list does not support reading from standard input"
msgstr "--list non è in grado di leggere dallo standard input"
-#: src/xz/main.c:89
+#: src/xz/main.c
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s: errore nel leggere i nomi dei file: %s"
-#: src/xz/main.c:96
+#: src/xz/main.c
#, 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'?"
+#: src/xz/main.c
+#, fuzzy, c-format
+#| msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
+msgid "%s: Null character found when reading filenames; maybe you meant to use '--files0' instead of '--files'?"
msgstr "%s: nessun carattere trovato durante la lettura dei nomi dei file; forse si intendeva usare \"--files0\" invece di \"--files\"?"
-#: src/xz/main.c:188
+#: src/xz/main.c
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:266
+#: src/xz/main.c
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"
@@ -584,68 +623,69 @@ msgstr "Impossibile leggere i dati dallo standard input durante la lettura dei n
#. 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:670 src/xz/message.c:725
+#: src/xz/message.c
#, c-format
msgid "%s: "
msgstr "%s: "
-#: src/xz/message.c:797 src/xz/message.c:856
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
msgid "Internal error (bug)"
msgstr "Errore interno (bug)"
-#: src/xz/message.c:804
+#: src/xz/message.c
msgid "Cannot establish signal handlers"
msgstr "Impossibile stabilire i gestori dei segnali"
-#: src/xz/message.c:813
+#: src/xz/message.c
msgid "No integrity check; not verifying file integrity"
msgstr "Nessun controllo d'integrità; l'integrità del file non viene verificata"
-#: src/xz/message.c:816
+#: src/xz/message.c
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:823
+#: src/xz/message.c
msgid "Memory usage limit reached"
msgstr "Limite di utilizzo della memoria raggiunto"
-#: src/xz/message.c:826
+#: src/xz/message.c
msgid "File format not recognized"
msgstr "Formato di file non riconosciuto"
-#: src/xz/message.c:829
+#: src/xz/message.c
msgid "Unsupported options"
msgstr "Opzioni non supportate"
-#: src/xz/message.c:832
+#: src/xz/message.c
msgid "Compressed data is corrupt"
msgstr "I dati compressi sono danneggiati"
-#: src/xz/message.c:835
+#: src/xz/message.c
msgid "Unexpected end of input"
msgstr "Fine dell'input non attesa"
-#: src/xz/message.c:877
+#: src/xz/message.c
#, 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:905
+#: src/xz/message.c
#, 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:924
+#: src/xz/message.c
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: catena di filtri: %s\n"
-#: src/xz/message.c:935
-#, c-format
-msgid "Try `%s --help' for more information."
+#: src/xz/message.c
+#, fuzzy, c-format
+#| msgid "Try `%s --help' for more information."
+msgid "Try '%s --help' for more information."
msgstr "Provare \"%s --help\" per maggiori informazioni."
-#: src/xz/message.c:961
+#: src/xz/message.c
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
@@ -656,15 +696,15 @@ msgstr ""
"Comprime o estrae i FILE nel formato .xz.\n"
"\n"
-#: src/xz/message.c:968
+#: src/xz/message.c
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:972
+#: src/xz/message.c
msgid " Operation mode:\n"
msgstr " Modalità di operazione:\n"
-#: src/xz/message.c:975
+#: src/xz/message.c
msgid ""
" -z, --compress force compression\n"
" -d, --decompress force decompression\n"
@@ -676,7 +716,7 @@ msgstr ""
" -t, --test Verifica l'integrità dei file compressi\n"
" -l, --list Elenca informazioni sui file .xz"
-#: src/xz/message.c:981
+#: src/xz/message.c
msgid ""
"\n"
" Operation modifiers:\n"
@@ -684,7 +724,7 @@ msgstr ""
"\n"
" Modificatori di operazioni:\n"
-#: src/xz/message.c:984
+#: src/xz/message.c
msgid ""
" -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\n"
@@ -695,7 +735,7 @@ msgstr ""
" collegamenti\n"
" -c, --stdout Scrive sullo standard output e non elimina i file di input"
-#: src/xz/message.c:993
+#: src/xz/message.c
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
@@ -703,10 +743,18 @@ msgstr ""
" --single-stream Decomprime solamente il primo stream e ignora\n"
" silenziosamente i restanti dati di input"
-#: src/xz/message.c:996
+#: src/xz/message.c
+#, fuzzy
+#| 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"
msgid ""
" --no-sparse do not create sparse files when decompressing\n"
-" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
+" -S, --suffix=.SUF use the suffix '.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n"
" omitted, filenames are read from the standard input;\n"
" filenames must be terminated with the newline character\n"
@@ -720,7 +768,7 @@ msgstr ""
" di newline\n"
" --files0=[FILE] Come --files ma usa il carattere null come terminatore"
-#: src/xz/message.c:1005
+#: src/xz/message.c
msgid ""
"\n"
" Basic file format and compression options:\n"
@@ -728,7 +776,7 @@ msgstr ""
"\n"
" Formato file di base e opzioni di compressione:\n"
-#: src/xz/message.c:1007
+#: src/xz/message.c
#, fuzzy
#| msgid ""
#| " -F, --format=FMT file format to encode or decode; possible values are\n"
@@ -737,20 +785,20 @@ msgstr ""
#| " `crc32', `crc64' (default), or `sha256'"
msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n"
-" `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
-" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-" `crc32', `crc64' (default), or `sha256'"
+" 'auto' (default), 'xz', 'lzma', 'lzip', and 'raw'\n"
+" -C, --check=CHECK integrity check type: 'none' (use with caution),\n"
+" 'crc32', 'crc64' (default), or 'sha256'"
msgstr ""
" -F, --format=FMT Formato 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:1012
+#: src/xz/message.c
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:1016
+#: src/xz/message.c
msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!"
@@ -759,7 +807,7 @@ msgstr ""
" l'utilizzo di memoria per comprimere ed estrarre prima\n"
" di usare 7-9"
-#: src/xz/message.c:1020
+#: src/xz/message.c
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
@@ -768,16 +816,20 @@ msgstr ""
" utilizzando più tempo di CPU; non cambia i requisiti di\n"
" memoria in fase di estrazione"
-#: src/xz/message.c:1024
+#: src/xz/message.c
+#, fuzzy
+#| 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"
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"
+" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
+" 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:1029
+#: src/xz/message.c
msgid ""
" --block-size=SIZE\n"
" start a new .xz block after every SIZE bytes of input;\n"
@@ -788,17 +840,24 @@ msgstr ""
" usare per impostare la dimensione del blocco durante la\n"
" compressione con thread"
-#: src/xz/message.c:1033
+#: src/xz/message.c
+#, fuzzy
+#| msgid ""
+#| " --block-list=SIZES\n"
+#| " start a new .xz block after the given comma-separated\n"
+#| " intervals of uncompressed data"
msgid ""
-" --block-list=SIZES\n"
+" --block-list=BLOCKS\n"
" start a new .xz block after the given comma-separated\n"
-" intervals of uncompressed data"
+" intervals of uncompressed data; optionally, specify a\n"
+" filter chain number (0-9) followed by a ':' before the\n"
+" uncompressed data size"
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:1037
+#: src/xz/message.c
msgid ""
" --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n"
@@ -811,7 +870,7 @@ msgstr ""
" ulteriore input risulterebbe bloccata, viene eseguito il\n"
" flush di tutti i dati pendenti"
-#: src/xz/message.c:1043
+#: src/xz/message.c
#, fuzzy, no-c-format
#| msgid ""
#| " --memlimit-compress=LIMIT\n"
@@ -835,7 +894,7 @@ msgstr ""
" compressione, l'estrazione o entrambe; LIMIT è in byte,\n"
" % della memoria RAM oppure 0 per il valore predefinito"
-#: src/xz/message.c:1052
+#: src/xz/message.c
msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards"
@@ -844,7 +903,7 @@ msgstr ""
" utilizzo della memoria, lancia un errore invece di\n"
" utilizzare valori più piccoli"
-#: src/xz/message.c:1058
+#: src/xz/message.c
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
@@ -853,7 +912,27 @@ msgstr ""
" Catena di filtri personalizzati per la compressione (alternative per\n"
" l'utilizzo di preset):"
-#: src/xz/message.c:1067
+#: src/xz/message.c
+msgid ""
+"\n"
+" --filters=FILTERS set the filter chain using the liblzma filter string\n"
+" syntax; use --filters-help for more information"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters1=FILTERS ... --filters9=FILTERS\n"
+" set additional filter chains using the liblzma filter\n"
+" string syntax to use with --block-list"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters-help display more information about the liblzma filter string\n"
+" syntax and exit."
+msgstr ""
+
+#: src/xz/message.c
msgid ""
"\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
@@ -886,7 +965,7 @@ msgstr ""
" depth=NUM Profondità massima di ricerca; 0=automatica\n"
" (predefinito)"
-#: src/xz/message.c:1082
+#: src/xz/message.c
#, fuzzy
#| msgid ""
#| "\n"
@@ -907,6 +986,7 @@ msgid ""
" --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
" --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
" --sparc[=OPTS] SPARC BCJ filter\n"
+" --riscv[=OPTS] RISC-V BCJ filter\n"
" Valid OPTS for all BCJ filters:\n"
" start=NUM start offset for conversions (default=0)"
msgstr ""
@@ -921,7 +1001,7 @@ msgstr ""
" start=NUM Offset iniziale per le conversioni\n"
" (predefinito=0)"
-#: src/xz/message.c:1095
+#: src/xz/message.c
msgid ""
"\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n"
@@ -933,7 +1013,7 @@ msgstr ""
" dist=NUM Distanza tra byte sottratti\n"
" gli uni dagli altri (1-256; 1)"
-#: src/xz/message.c:1103
+#: src/xz/message.c
msgid ""
"\n"
" Other options:\n"
@@ -941,7 +1021,7 @@ msgstr ""
"\n"
" Altre opzioni:\n"
-#: src/xz/message.c:1106
+#: src/xz/message.c
msgid ""
" -q, --quiet suppress warnings; specify twice to suppress errors too\n"
" -v, --verbose be verbose; specify twice for even more verbose"
@@ -951,15 +1031,15 @@ msgstr ""
" -v, --verbose Output prolisso; specificare due volte per output ancora\n"
" più prolisso"
-#: src/xz/message.c:1111
+#: src/xz/message.c
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:1113
+#: src/xz/message.c
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr " --robot Usa messaggi analizzabili (utile per gli script)"
-#: src/xz/message.c:1116
+#: src/xz/message.c
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
@@ -967,7 +1047,7 @@ msgstr ""
" --info-memory Visualizza la quantità totale di RAM, il limite attuale\n"
" attivo di utilizzo della memore ed esce"
-#: src/xz/message.c:1119
+#: src/xz/message.c
msgid ""
" -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit"
@@ -975,7 +1055,7 @@ msgstr ""
" -h, --help Stampa l'aiuto breve (elenca solo le opzioni di base)\n"
" -H, --long-help Stampa questo lungo aiuto ed esce"
-#: src/xz/message.c:1123
+#: src/xz/message.c
msgid ""
" -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)"
@@ -983,11 +1063,12 @@ 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:1128
+#: src/xz/message.c
msgid " -V, --version display the version number and exit"
msgstr " -V, --version Stampa il numero della versione ed esce"
-#: src/xz/message.c:1130
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
+#, c-format
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
@@ -999,93 +1080,129 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks.
-#: src/xz/message.c:1136
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr ""
"Segnalare i bug a <%s> (in inglese o finlandese).\n"
"Segnalare i bug di traduzione a <tp@lists.linux.it>.\n"
-#: src/xz/message.c:1138
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Sito web di %s: <%s>\n"
-#: src/xz/message.c:1142
+#: src/xz/message.c
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"
+#: src/xz/message.c
+msgid ""
+"Filter chains are set using the --filters=FILTERS or\n"
+"--filters1=FILTERS ... --filters9=FILTERS options. Each filter in the chain\n"
+"can be separated by spaces or '--'. Alternatively a preset <0-9>[e] can be\n"
+"specified instead of a filter chain.\n"
+msgstr ""
+
+#: src/xz/message.c
+#, fuzzy
+#| msgid "Unsupported filter chain or filter options"
+msgid "The supported filters and their options are:"
+msgstr "Catena di filtri od opzioni del filtro non supportata"
+
+#: src/xz/options.c
+#, fuzzy, c-format
+#| msgid "%s: Options must be `name=value' pairs separated with commas"
+msgid "%s: Options must be 'name=value' pairs separated with commas"
msgstr "%s: le opzioni devono essere coppie \"nome=valore\" separate da virgole"
-#: src/xz/options.c:93
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option name"
msgstr "%s: nome opzione non valido"
-#: src/xz/options.c:113
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option value"
msgstr "%s: valore dell'opzione non valido"
-#: src/xz/options.c:248
+#: src/xz/options.c
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "Preset LZMA/LZMA2 non supportato: %s"
-#: src/xz/options.c:356
+#: src/xz/options.c
msgid "The sum of lc and lp must not exceed 4"
msgstr "La somma di lc e lp non deve superare 4"
-#: src/xz/suffix.c:160
+#: src/xz/suffix.c
#, 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:181
-#, c-format
-msgid "%s: File already has `%s' suffix, skipping"
+#: src/xz/suffix.c
+#, fuzzy, c-format
+#| msgid "%s: File already has `%s' suffix, skipping"
+msgid "%s: File already has '%s' suffix, skipping"
msgstr "%s: il file ha già il suffisso \"%s\", viene saltato"
-#: src/xz/suffix.c:388
+#: src/xz/suffix.c
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s: suffisso del nome del file non valido"
-#: src/xz/util.c:107
+#: src/xz/util.c
#, 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:149
+#: src/xz/util.c
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s: suffisso del moltiplicatore non valido"
-#: src/xz/util.c:151
-msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+#: src/xz/util.c
+#, fuzzy
+#| msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+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:168
-#, c-format
-msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+#: src/xz/util.c
+#, fuzzy, c-format
+#| msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+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:270
+#: src/xz/util.c
msgid "Compressed data cannot be read from a terminal"
msgstr "I dati compressi non possono essere letti da un terminale"
-#: src/xz/util.c:283
+#: src/xz/util.c
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:40
+#: src/lzmainfo/lzmainfo.c
+#, c-format
+msgid ""
+"Usage: %s [--help] [--version] [FILE]...\n"
+"Show information stored in the .lzma file header"
+msgstr ""
+
+#: src/lzmainfo/lzmainfo.c
+#, fuzzy
+#| msgid "%s: Too small to be a valid .xz file"
+msgid "File is too small to be a .lzma file"
+msgstr "%s: troppo piccolo per essere un file .xz valido"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "Not a .lzma file"
+msgstr ""
+
+#: src/common/tuklib_exit.c
msgid "Writing to standard output failed"
msgstr "Scrittura sullo standard ouput non riuscita"
-#: src/common/tuklib_exit.c:43
+#: src/common/tuklib_exit.c
msgid "Unknown error"
msgstr "Errore sconosciuto"
@@ -1095,6 +1212,9 @@ msgstr "Errore sconosciuto"
#~ msgid "Sandbox was successfully enabled"
#~ msgstr "Sandbox abilitata con successo"
+#~ msgid "Failed to enable the sandbox"
+#~ msgstr "Abilitazione modalità sandbox non riuscita"
+
#~ msgid "Memory usage limit for compression: "
#~ msgstr "Limite utilizzo memoria per la compressione: "
diff --git a/po/ko.gmo b/po/ko.gmo
index cea6626..7d33e87 100644
--- a/po/ko.gmo
+++ b/po/ko.gmo
Binary files differ
diff --git a/po/ko.po b/po/ko.po
index 88b6c89..834b0bc 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -1,13 +1,14 @@
+# SPDX-License-Identifier: 0BSD
# Korean translation for the xz.
-# This file is put in the public domain.
-# Seong-ho Cho <darkcircle.0426@gmail.com>, 2019, 2022, 2023.
+# This file is published under the BSD Zero Clause License.
+# Seong-ho Cho <darkcircle.0426@gmail.com>, 2019, 2022, 2023, 2024.
#
msgid ""
msgstr ""
-"Project-Id-Version: xz 5.4.4-pre1\n"
+"Project-Id-Version: xz 5.6.0-pre2\n"
"Report-Msgid-Bugs-To: xz@tukaani.org\n"
-"POT-Creation-Date: 2023-10-31 22:33+0800\n"
-"PO-Revision-Date: 2023-07-20 10:59+0900\n"
+"POT-Creation-Date: 2024-05-29 17:41+0300\n"
+"PO-Revision-Date: 2024-02-18 01:45+0900\n"
"Last-Translator: Seong-ho Cho <darkcircle.0426@gmail.com>\n"
"Language-Team: Korean <translation-team-ko@googlegroups.com>\n"
"Language: ko\n"
@@ -16,144 +17,172 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-"X-Generator: Poedit 3.0.1\n"
+"X-Generator: Poedit 3.4.2\n"
-#: src/xz/args.c:77
+#: src/xz/args.c
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr "%s: --block-list의 인자값이 잘못됨"
-#: src/xz/args.c:87
+#: src/xz/args.c
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s: --block-list 인자 갯수가 너무 많음"
-#: src/xz/args.c:116
+#: src/xz/args.c
+#, c-format
+msgid "In --block-list, block size is missing after filter chain number '%c:'"
+msgstr "--block-list에서 필터 체인 번호 '%c:' 다음 블록 크기가 빠졌습니다."
+
+#: src/xz/args.c
msgid "0 can only be used as the last element in --block-list"
msgstr "0 값은 --block-list의 마지막 원소로만 사용할 수 있습니다"
-#: src/xz/args.c:451
+#: src/xz/args.c
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s: 알 수 없는 파일 형식"
-#: src/xz/args.c:474 src/xz/args.c:482
+#: src/xz/args.c
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s: 지원하지 않는 무결성 검사 형식"
-#: src/xz/args.c:518
-msgid "Only one file can be specified with `--files' or `--files0'."
-msgstr "`--files' 또는 `--files0' 옵션으로 하나의 파일만 지정할 수 있습니다."
+#: src/xz/args.c
+msgid "Only one file can be specified with '--files' or '--files0'."
+msgstr "'--files' 또는 '--files0' 옵션에는 하나의 파일만 지정할 수 있습니다."
#. TRANSLATORS: This is a translatable
#. string because French needs a space
#. before the colon ("%s : %s").
-#: src/xz/args.c:533 src/xz/coder.c:692 src/xz/coder.c:708 src/xz/coder.c:968
-#: src/xz/coder.c:971 src/xz/file_io.c:605 src/xz/file_io.c:679
-#: src/xz/file_io.c:769 src/xz/file_io.c:940 src/xz/list.c:369
-#: src/xz/list.c:415 src/xz/list.c:477 src/xz/list.c:581 src/xz/list.c:590
+#: src/xz/args.c src/xz/coder.c src/xz/file_io.c src/xz/list.c
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: src/xz/args.c:589
+#: src/xz/args.c
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "%s 환경 변수에 너무 많은 인자 값이 들어있습니다"
-#: src/xz/args.c:691
+#: src/xz/args.c
msgid "Compression support was disabled at build time"
msgstr "빌드 시점에 압축 기능을 비활성했습니다"
-#: src/xz/args.c:698
+#: src/xz/args.c
msgid "Decompression support was disabled at build time"
msgstr "빌드 시점에 압축 해제 기능을 비활성했습니다"
-#: src/xz/args.c:704
+#: src/xz/args.c
msgid "Compression of lzip files (.lz) is not supported"
-msgstr "lzip 파일(.lz) 압축은 지원하지 않습니다"
+msgstr "lzip 파일 (.lz) 압축은 지원하지 않습니다"
+
+#: src/xz/args.c
+msgid "--block-list is ignored unless compressing to the .xz format"
+msgstr ".xz 형식으로 압축하지 않으면 --block-list 옵션은 무시합니다"
-#: src/xz/args.c:735
+#: src/xz/args.c
msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout"
-msgstr "표준 출력으로 기록하지 않는 한 --format=raw, --suffix=.SUF 옵션이 필요합니다"
+msgstr "표준 출력으로 기록하지 않는 한 --format=raw, --suffix=.<확장자> 옵션이 필요합니다"
-#: src/xz/coder.c:115
+#: src/xz/coder.c
msgid "Maximum number of filters is four"
msgstr "최대 필터 갯수는 4 입니다"
-#: src/xz/coder.c:135
+#: src/xz/coder.c
+#, c-format
+msgid "Error in --filters%s=FILTERS option:"
+msgstr "--filters%s=<필터> 옵션 오류:"
+
+#: src/xz/coder.c
msgid "Memory usage limit is too low for the given filter setup."
msgstr "주어진 필터 설정으로는 메모리 사용 제한 값이 너무 적습니다."
-#: src/xz/coder.c:170
+#: src/xz/coder.c
+#, c-format
+msgid "filter chain %u used by --block-list but not specified with --filters%u="
+msgstr "--block-lisk에서 필터 체인 %u번을 사용하고 있지만 --filters%u= 옵션으로 지정하지 않았습니다"
+
+#: src/xz/coder.c
msgid "Using a preset in raw mode is discouraged."
msgstr "RAW 모드에서의 프리셋 사용은 권장하지 않습니다."
-#: src/xz/coder.c:172
+#: src/xz/coder.c
msgid "The exact options of the presets may vary between software versions."
msgstr "프리셋의 정확한 옵션 값은 프로그램 버전에 따라 다릅니다."
-#: src/xz/coder.c:195
+#: src/xz/coder.c
msgid "The .lzma format supports only the LZMA1 filter"
msgstr ".lzma 형식은 LZMA1 필터만 지원합니다"
-#: src/xz/coder.c:203
+#: src/xz/coder.c
msgid "LZMA1 cannot be used with the .xz format"
msgstr ".xz 형식에는 LZMA1 필터를 사용할 수 없습니다"
-#: src/xz/coder.c:220
-msgid "The filter chain is incompatible with --flush-timeout"
-msgstr "--flush-timeout 옵션에는 필터 체인이 맞지 않습니다"
+#: src/xz/coder.c
+#, c-format
+msgid "Filter chain %u is incompatible with --flush-timeout"
+msgstr "필터 체인 %u번이 --flush-timeout 옵션과 맞지 않습니다"
-#: src/xz/coder.c:226
+#: src/xz/coder.c
msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr "--flush-timeout 옵션을 지정하였으므로 단일 스레드 모드로 전환합니다"
-#: src/xz/coder.c:250
+#: src/xz/coder.c
+#, c-format
+msgid "Unsupported options in filter chain %u"
+msgstr "필터 체인 %u번에서 지원하지 않는 옵션"
+
+#: src/xz/coder.c
#, c-format
msgid "Using up to %<PRIu32> threads."
-msgstr "최대 %<PRIu32> 스레드를 사용합니다."
+msgstr "최대 스레드 %<PRIu32>개를 사용합니다."
-#: src/xz/coder.c:266
+#: src/xz/coder.c
msgid "Unsupported filter chain or filter options"
msgstr "지원하지 않는 필터 체인 또는 필터 옵션"
-#: src/xz/coder.c:278
+#: src/xz/coder.c
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "압축 해제시 %s MiB 메모리 용량이 필요합니다."
-#: src/xz/coder.c:310
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgstr "메모리 사용량 %s MiB 제한을 넘지 않으려 스레드 수를 %s(에)서 %s(으)로 줄였습니다"
-#: src/xz/coder.c:330
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway."
-msgstr "스레드 수가 %s(에)서 하나로 줄었습니다. 메모리 사용 자동 제한량 %s MiB를 여전히 초과합니다. 메모리 공간 %s MiB가 필요합니다. 어쨌든 계속합니다."
+msgstr "스레드 수가 %s(에)서 하나로 줄었습니다. 메모리 사용 자동 제한량 %sMiB를 여전히 초과합니다. 메모리 공간 %sMiB가 필요합니다. 어쨌든 계속합니다."
-#: src/xz/coder.c:357
+#: src/xz/coder.c
#, c-format
msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB"
-msgstr "메모리 사용량 %s MiB 제한을 넘지 않으려 단일 스레드 모드로 전환합니다"
+msgstr "메모리 사용 제한량 %sMiB를 넘지 않으려 단일 스레드 모드로 전환합니다"
-#: src/xz/coder.c:412
+#: src/xz/coder.c
#, c-format
msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
-msgstr "메모리 사용량 %4$s MiB 제한을 넘지 않으려 %2$s MiB에서 %3$s MiB로 LZMA%1$c 딕셔너리 크기를 조정했습니다"
+msgstr "메모리 사용 제한량 %4$sMiB를 넘지 않으려 %2$sMiB에서 %3$sMiB로 LZMA%1$c 딕셔너리 크기를 조정했습니다"
+
+#: src/xz/coder.c
+#, c-format
+msgid "Adjusted LZMA%c dictionary size for --filters%u from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgstr "메모리 사용 제한량 %5$sMiB를 넘지 않으려 %3$sMiB에서 %4$sMiB로 --filters%2$u의 LZMA%1$c 딕셔너리 크기를 조정했습니다"
-#: src/xz/file_io.c:110 src/xz/file_io.c:118
+#: src/xz/coder.c
+#, c-format
+msgid "Error changing to filter chain %u: %s"
+msgstr "필터 체인 %u번 전환 오류: %s"
+
+#: src/xz/file_io.c
#, c-format
msgid "Error creating a pipe: %s"
msgstr "파이프 생성 오류: %s"
-#: src/xz/file_io.c:252
-msgid "Failed to enable the sandbox"
-msgstr "샌드 박스 활성화 실패"
-
-#: src/xz/file_io.c:294
+#: src/xz/file_io.c
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s: poll() 실패: %s"
@@ -168,252 +197,252 @@ msgstr "%s: poll() 실패: %s"
#. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously
#. shouldn't be removed.
-#: src/xz/file_io.c:361
+#: src/xz/file_io.c
#, c-format
msgid "%s: File seems to have been moved, not removing"
msgstr "%s: 파일을 이동한 것 같음, 제거 안함"
-#: src/xz/file_io.c:368 src/xz/file_io.c:924
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: 제거할 수 없음: %s"
-#: src/xz/file_io.c:394
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: 파일 소유자를 설정할 수 없음: %s"
-#: src/xz/file_io.c:407
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: 파일 소유 그룹을 설정할 수 없음: %s"
-#: src/xz/file_io.c:426
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: 파일 권한을 설정할 수 없음: %s"
-#: src/xz/file_io.c:552
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "표준 입력에서 파일 상태 플래그 가져오기 오류: %s"
-#: src/xz/file_io.c:610 src/xz/file_io.c:672
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: 심볼릭 링크, 건너뜀"
-#: src/xz/file_io.c:701
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: 디렉터리입니다, 건너뜀"
-#: src/xz/file_io.c:707
+#: src/xz/file_io.c
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: 일반 파일 아님, 건너뜀"
-#: src/xz/file_io.c:724
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s: setuid 또는 setgid 비트 설정 있음, 건너뜀"
-#: src/xz/file_io.c:731
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s: 끈적이 비트 설정이 있는 파일, 건너뜀"
-#: src/xz/file_io.c:738
+#: src/xz/file_io.c
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s: 입력 파일에 하나 이상의 하드링크가 있습니다, 건너뜀"
-#: src/xz/file_io.c:780
+#: src/xz/file_io.c
msgid "Empty filename, skipping"
msgstr "파일 이름 없음, 건너뜀"
-#: src/xz/file_io.c:834
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "표준 입력으로의 상태 플래그 복원 오류: %s"
-#: src/xz/file_io.c:882
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "표준 출력에서 파일 상태 플래그 가져오기 오류: %s"
-#: src/xz/file_io.c:1081
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "표준 출력으로의 O_APPEND 플래그 복원 오류: %s"
-#: src/xz/file_io.c:1093
+#: src/xz/file_io.c
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: 파일 닫기 실패: %s"
-#: src/xz/file_io.c:1129 src/xz/file_io.c:1391
+#: src/xz/file_io.c
#, c-format
msgid "%s: Seeking failed when trying to create a sparse file: %s"
msgstr "%s: 분할 파일 생성 시도시 탐색 실패: %s"
-#: src/xz/file_io.c:1229
+#: src/xz/file_io.c
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: 읽기 오류: %s"
-#: src/xz/file_io.c:1259
+#: src/xz/file_io.c
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: 파일 탐색 오류: %s"
-#: src/xz/file_io.c:1283
+#: src/xz/file_io.c
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: 예상치 못한 파일의 끝"
-#: src/xz/file_io.c:1342
+#: src/xz/file_io.c
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: 쓰기 오류: %s"
-#: src/xz/hardware.c:238
+#: src/xz/hardware.c
msgid "Disabled"
msgstr "사용 안함"
-#: src/xz/hardware.c:269
+#: src/xz/hardware.c
msgid "Amount of physical memory (RAM):"
-msgstr "물리 메모리 양(RAM):"
+msgstr "물리 메모리 양 (RAM):"
-#: src/xz/hardware.c:270
+#: src/xz/hardware.c
msgid "Number of processor threads:"
msgstr "프로세서 스레드 수:"
-#: src/xz/hardware.c:271
+#: src/xz/hardware.c
msgid "Compression:"
msgstr "압축:"
-#: src/xz/hardware.c:272
+#: src/xz/hardware.c
msgid "Decompression:"
msgstr "압축해제:"
-#: src/xz/hardware.c:273
+#: src/xz/hardware.c
msgid "Multi-threaded decompression:"
msgstr "멀티 스레드 압축 해제:"
-#: src/xz/hardware.c:274
+#: src/xz/hardware.c
msgid "Default for -T0:"
msgstr "-T0 기본값:"
-#: src/xz/hardware.c:292
+#: src/xz/hardware.c
msgid "Hardware information:"
msgstr "하드웨어 정보:"
-#: src/xz/hardware.c:299
+#: src/xz/hardware.c
msgid "Memory usage limits:"
-msgstr "메모리 사용량 제한:"
+msgstr "메모리 사용 제한량:"
-#: src/xz/list.c:68
+#: src/xz/list.c
msgid "Streams:"
msgstr "스트림:"
-#: src/xz/list.c:69
+#: src/xz/list.c
msgid "Blocks:"
msgstr "블록 수:"
-#: src/xz/list.c:70
+#: src/xz/list.c
msgid "Compressed size:"
msgstr "압축 용량:"
-#: src/xz/list.c:71
+#: src/xz/list.c
msgid "Uncompressed size:"
msgstr "압축해제 용량:"
-#: src/xz/list.c:72
+#: src/xz/list.c
msgid "Ratio:"
msgstr "압축율:"
-#: src/xz/list.c:73
+#: src/xz/list.c
msgid "Check:"
msgstr "검사:"
-#: src/xz/list.c:74
+#: src/xz/list.c
msgid "Stream Padding:"
msgstr "스트림 패딩:"
-#: src/xz/list.c:75
+#: src/xz/list.c
msgid "Memory needed:"
msgstr "요구 메모리:"
-#: src/xz/list.c:76
+#: src/xz/list.c
msgid "Sizes in headers:"
msgstr "헤더 길이:"
-#: src/xz/list.c:79
+#: src/xz/list.c
msgid "Number of files:"
msgstr "파일 갯수:"
-#: src/xz/list.c:122
+#: src/xz/list.c
msgid "Stream"
msgstr "스트림"
-#: src/xz/list.c:123
+#: src/xz/list.c
msgid "Block"
msgstr "블록"
-#: src/xz/list.c:124
+#: src/xz/list.c
msgid "Blocks"
msgstr "블록"
-#: src/xz/list.c:125
+#: src/xz/list.c
msgid "CompOffset"
msgstr "압축오프셋"
-#: src/xz/list.c:126
+#: src/xz/list.c
msgid "UncompOffset"
msgstr "압축해제오프셋"
-#: src/xz/list.c:127
+#: src/xz/list.c
msgid "CompSize"
msgstr "압축크기"
-#: src/xz/list.c:128
+#: src/xz/list.c
msgid "UncompSize"
msgstr "압축해제크기"
-#: src/xz/list.c:129
+#: src/xz/list.c
msgid "TotalSize"
msgstr "총크기"
-#: src/xz/list.c:130
+#: src/xz/list.c
msgid "Ratio"
msgstr "압축율"
-#: src/xz/list.c:131
+#: src/xz/list.c
msgid "Check"
msgstr "검사"
-#: src/xz/list.c:132
+#: src/xz/list.c
msgid "CheckVal"
msgstr "검사값"
-#: src/xz/list.c:133
+#: src/xz/list.c
msgid "Padding"
msgstr "패딩"
-#: src/xz/list.c:134
+#: src/xz/list.c
msgid "Header"
msgstr "헤더"
-#: src/xz/list.c:135
+#: src/xz/list.c
msgid "Flags"
msgstr "플래그"
-#: src/xz/list.c:136
+#: src/xz/list.c
msgid "MemUsage"
msgstr "메모리사용"
-#: src/xz/list.c:137
+#: src/xz/list.c
msgid "Filters"
msgstr "필터"
@@ -421,7 +450,7 @@ msgstr "필터"
#. This string is used in tables. In older xz version this
#. string was limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:169
+#: src/xz/list.c
msgid "None"
msgstr "없음"
@@ -429,60 +458,60 @@ msgstr "없음"
#. but the Check ID is known (here 2). In older xz version these
#. strings were limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:175
+#: src/xz/list.c
msgid "Unknown-2"
msgstr "알 수 없음-2"
-#: src/xz/list.c:176
+#: src/xz/list.c
msgid "Unknown-3"
msgstr "알 수 없음-3"
-#: src/xz/list.c:178
+#: src/xz/list.c
msgid "Unknown-5"
msgstr "알 수 없음-5"
-#: src/xz/list.c:179
+#: src/xz/list.c
msgid "Unknown-6"
msgstr "알 수 없음-6"
-#: src/xz/list.c:180
+#: src/xz/list.c
msgid "Unknown-7"
msgstr "알 수 없음-7"
-#: src/xz/list.c:181
+#: src/xz/list.c
msgid "Unknown-8"
msgstr "알 수 없음-8"
-#: src/xz/list.c:182
+#: src/xz/list.c
msgid "Unknown-9"
msgstr "알 수 없음-9"
-#: src/xz/list.c:184
+#: src/xz/list.c
msgid "Unknown-11"
msgstr "알 수 없음-11"
-#: src/xz/list.c:185
+#: src/xz/list.c
msgid "Unknown-12"
msgstr "알 수 없음-12"
-#: src/xz/list.c:186
+#: src/xz/list.c
msgid "Unknown-13"
msgstr "알 수 없음-13"
-#: src/xz/list.c:187
+#: src/xz/list.c
msgid "Unknown-14"
msgstr "알 수 없음-14"
-#: src/xz/list.c:188
+#: src/xz/list.c
msgid "Unknown-15"
msgstr "알 수 없음-15"
-#: src/xz/list.c:351
+#: src/xz/list.c
#, c-format
msgid "%s: File is empty"
msgstr "%s: 파일 내용 없음"
-#: src/xz/list.c:356
+#: src/xz/list.c
#, c-format
msgid "%s: Too small to be a valid .xz file"
msgstr "%s: 유효한 .xz 파일로 보기에는 너무 작습니다"
@@ -491,64 +520,68 @@ msgstr "%s: 유효한 .xz 파일로 보기에는 너무 작습니다"
#. to Ratio, the columns are right aligned. Check and Filename
#. are left aligned. If you need longer words, it's OK to
#. use two lines here. Test with "xz -l foo.xz".
-#: src/xz/list.c:731
+#: src/xz/list.c
msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename"
msgstr "스트림 블록 압축 압축해제 압축율 검사 파일 이름"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "Yes"
msgstr "예"
# 주: 아니오가 아니라 아니요가 맞는 표현
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "No"
msgstr "아니요"
-#: src/xz/list.c:1028 src/xz/list.c:1206
+#: src/xz/list.c
#, c-format
msgid " Minimum XZ Utils version: %s\n"
-msgstr " 최소 XZ Utils 버전: %s\n"
+msgstr " 최소 XZ 유틸리티 버전: %s\n"
#. TRANSLATORS: %s is an integer. Only the plural form of this
#. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz".
-#: src/xz/list.c:1179
+#: src/xz/list.c
#, c-format
msgid "%s file\n"
msgid_plural "%s files\n"
msgstr[0] "파일 %s개\n"
-#: src/xz/list.c:1192
+#: src/xz/list.c
msgid "Totals:"
msgstr "총:"
-#: src/xz/list.c:1270
+#: src/xz/list.c
msgid "--list works only on .xz files (--format=xz or --format=auto)"
msgstr "--list 옵션은 .xz 파일에만 동작합니다(--format=xz 또는 --format=auto)"
-#: src/xz/list.c:1276
+#: src/xz/list.c
+msgid "Try 'lzmainfo' with .lzma files."
+msgstr "'lzmainfo' 명령에 .lzma 파일 이름을 붙여 실행해보십시오."
+
+#: src/xz/list.c
msgid "--list does not support reading from standard input"
msgstr "--list 옵션은 표준 입력 읽기를 지원하지 않습니다"
-#: src/xz/main.c:89
+#: src/xz/main.c
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s: 파일 이름 읽기 오류: %s"
-#: src/xz/main.c:96
+#: src/xz/main.c
#, c-format
msgid "%s: Unexpected end of input when reading filenames"
msgstr "%s: 파일 이름 읽는 중 예상치 못한 입력 끝"
-#: src/xz/main.c:120
+#: src/xz/main.c
#, c-format
-msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
-msgstr "%s: 파일 이름을 읽는 도중 NULL 문자 발견. `--files' 옵션 대신 `--files0' 옵션을 사용하시려는게 아닙니까?"
+msgid "%s: Null character found when reading filenames; maybe you meant to use '--files0' instead of '--files'?"
+msgstr "%s: 파일 이름을 읽는 도중 NULL 문자 발견. '--files' 옵션 대신 '--files0' 옵션을 사용하시려는게 아닙니까?"
-#: src/xz/main.c:188
+#: src/xz/main.c
msgid "Compression and decompression with --robot are not supported yet."
msgstr "아직 압축 동작과 압축 해제 동작에 --robot 옵션을 지원하지 않습니다."
-#: src/xz/main.c:266
+#: src/xz/main.c
msgid "Cannot read data from standard input when reading filenames from standard input"
msgstr "표준 출력에서 파일 이름을 읽을 때 표준 입력에서 데이터를 읽을 수 없습니다"
@@ -556,68 +589,68 @@ msgstr "표준 출력에서 파일 이름을 읽을 때 표준 입력에서 데
#. 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:670 src/xz/message.c:725
+#: src/xz/message.c
#, c-format
msgid "%s: "
msgstr "%s: "
-#: src/xz/message.c:797 src/xz/message.c:856
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
msgid "Internal error (bug)"
-msgstr "내부 오류(버그)"
+msgstr "내부 오류 (버그)"
-#: src/xz/message.c:804
+#: src/xz/message.c
msgid "Cannot establish signal handlers"
msgstr "시그널 처리자를 준비할 수 없습니다"
-#: src/xz/message.c:813
+#: src/xz/message.c
msgid "No integrity check; not verifying file integrity"
msgstr "무결성 검사 안함. 파일 무결성을 검증하지 않습니다"
-#: src/xz/message.c:816
+#: src/xz/message.c
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "지원하지 않는 무결성 검사 형식. 파일 무결성을 검증하지 않습니다"
-#: src/xz/message.c:823
+#: src/xz/message.c
msgid "Memory usage limit reached"
msgstr "메모리 사용량 한계에 도달했습니다"
-#: src/xz/message.c:826
+#: src/xz/message.c
msgid "File format not recognized"
msgstr "파일 형식을 인식할 수 없음"
-#: src/xz/message.c:829
+#: src/xz/message.c
msgid "Unsupported options"
msgstr "지원하지 않는 옵션"
-#: src/xz/message.c:832
+#: src/xz/message.c
msgid "Compressed data is corrupt"
msgstr "압축 데이터 깨짐"
-#: src/xz/message.c:835
+#: src/xz/message.c
msgid "Unexpected end of input"
msgstr "예상치 못한 입력 끝"
-#: src/xz/message.c:877
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "%s MiB 메모리 용량이 필요합니다. 제한을 비활성합니다."
-#: src/xz/message.c:905
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
-msgstr "%s MiB 메모리 용량이 필요합니다. 제한 값은 %s 입니다."
+msgstr "%s MiB 메모리 용량이 필요합니다. 제한 용량은 %s 입니다."
-#: src/xz/message.c:924
+#: src/xz/message.c
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: 필터 체인: %s\n"
-#: src/xz/message.c:935
+#: src/xz/message.c
#, c-format
-msgid "Try `%s --help' for more information."
-msgstr "자세한 사용법은 `%s --help'를 입력하십시오."
+msgid "Try '%s --help' for more information."
+msgstr "자세한 사용법은 '%s --help'를 입력하십시오."
-#: src/xz/message.c:961
+#: src/xz/message.c
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
@@ -625,18 +658,18 @@ msgid ""
"\n"
msgstr ""
"사용법: %s [<옵션>]... [<파일>]...\n"
-".xz 형식으로 <파일> 다수를 압축(해제)합니다.\n"
+".xz 형식(으로) <파일> 다수를 압축(해제)합니다.\n"
"\n"
-#: src/xz/message.c:968
+#: src/xz/message.c
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr "긴 옵션 버전의 필수 인자는 짧은 옵션 버전에도 해당합니다.\n"
-#: src/xz/message.c:972
+#: src/xz/message.c
msgid " Operation mode:\n"
msgstr " 동작 방식:\n"
-#: src/xz/message.c:975
+#: src/xz/message.c
msgid ""
" -z, --compress force compression\n"
" -d, --decompress force decompression\n"
@@ -648,7 +681,7 @@ msgstr ""
" -t, --test 압축 파일 무결성 검사\n"
" -l, --list .xz 파일 정보 출력"
-#: src/xz/message.c:981
+#: src/xz/message.c
msgid ""
"\n"
" Operation modifiers:\n"
@@ -656,17 +689,17 @@ msgstr ""
"\n"
" 동작 지정:\n"
-#: src/xz/message.c:984
+#: src/xz/message.c
msgid ""
" -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\n"
" -c, --stdout write to standard output and don't delete input files"
msgstr ""
-" -k, --keep 입력 파일을 유지합니다(삭제 안함)\n"
+" -k, --keep 입력 파일을 유지합니다 (삭제 안함)\n"
" -f, --force 출력 파일을 강제로 덮어쓰고 링크도 압축(해제)합니다\n"
" -c, --stdout 표준 출력으로 기록하고 입력 파일을 삭제하지 않습니다"
-#: src/xz/message.c:993
+#: src/xz/message.c
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
@@ -674,26 +707,25 @@ msgstr ""
" --single-stream 첫번째 스트림만 압축해제하며, 나머지 입력 데이터는\n"
" 조용히 무시합니다"
-#: src/xz/message.c:996
+#: src/xz/message.c
msgid ""
" --no-sparse do not create sparse files when decompressing\n"
-" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
+" -S, --suffix=.SUF use the suffix '.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n"
" omitted, filenames are read from the standard input;\n"
" filenames must be terminated with the newline character\n"
" --files0[=FILE] like --files but use the null character as terminator"
msgstr ""
-" --no-sparse 압축 해제에 활용할 분할 파일을 만들지 않음\n"
+" --no-sparse 압축 해제에 활용할 분할 파일을 만들지 않습니다\n"
" -S, --suffix=.<확장자>\n"
-" 압축 파일 확장자에 `.<확장자>'를 사용합니다\n"
-" --files[=<파일>]\n"
-" <파일> 에서 처리할 파일 이름을 읽습니다. <파일>을\n"
-" 생략하면 표준 입력에서 파일 이름을 읽습니다.\n"
-" 파일 이름은 개행 문자로 끝나야합니다\n"
+" 압축 파일 확장자에 '.<확장자>'를 사용합니다\n"
+" --files[=<파일>] <파일> 에서 처리할 파일 이름을 읽습니다.\n"
+" <파일>을 생략하면 표준 입력에서 파일 이름을\n"
+" 읽습니다. 파일 이름은 개행 문자로 끝나야 합니다\n"
" --files0[=<파일>]\n"
" --files 옵션과 비슷하지만 NULL 문자로 끝납니다"
-#: src/xz/message.c:1005
+#: src/xz/message.c
msgid ""
"\n"
" Basic file format and compression options:\n"
@@ -701,49 +733,48 @@ msgstr ""
"\n"
" 기본 파일 형식 및 압축 옵션:\n"
-#: src/xz/message.c:1007
+#: src/xz/message.c
msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n"
-" `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
-" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-" `crc32', `crc64' (default), or `sha256'"
+" 'auto' (default), 'xz', 'lzma', 'lzip', and 'raw'\n"
+" -C, --check=CHECK integrity check type: 'none' (use with caution),\n"
+" 'crc32', 'crc64' (default), or 'sha256'"
msgstr ""
" -F, --format=<형식> 인코딩 디코딩할 파일 형식입니다. 가능한 값:\n"
-" `auto' (기본), `xz', `lzma', `lzip', `raw'\n"
-" -C, --check=<검사> 무결성 검사 형식: `none'(위험),\n"
-" `crc32', `crc64'(기본), `sha256'"
+" 'auto' (기본), 'xz', 'lzma', 'lzip', 'raw'\n"
+" -C, --check=<검사> 무결성 검사 형식: 'none' (위험),\n"
+" 'crc32', 'crc64' (기본), 'sha256'"
-#: src/xz/message.c:1012
+#: src/xz/message.c
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr " --ignore-check 압축 해제시 무결성 검사를 수행하지 않습니다"
-#: src/xz/message.c:1016
+#: src/xz/message.c
msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!"
msgstr ""
-" -0 ... -9 압축 프리셋. 기본값은 6 입니다. 7-9를 사용하려면 입축\n"
+" -0 ... -9 압축 사전 설정. 기본값은 6 입니다. 7-9를 사용하려면 압축\n"
" 메모리 사용량*과* 압축 해제 메모리 사용량을 지정하십시오!"
-#: src/xz/message.c:1020
+#: src/xz/message.c
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
msgstr ""
-" -e, --extreme CPU 점유시간을 더 확보하여 압축률을 개선합니다.\n"
+" -e, --extreme CPU 점유 시간을 더 확보하여 압축률을 개선합니다.\n"
" 압축 해제시 메모리 요구 용량에는 영향을 주지 않습니다"
-#: src/xz/message.c:1024
+#: src/xz/message.c
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"
+" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
+" as many threads as there are processor cores"
msgstr ""
" -T, --threads=<개수>\n"
-" 최대 스레드 <개수>를 사용합니다. 기본값은 1 입니다\n"
-" 실제 프로세서 코어만큼의 스레드를 사용하려면 0 값으로\n"
-" 지정합니다"
+" 최대 스레드 <개수>를 사용합니다. 기본값은 실제 프로세서\n"
+" 코어 수 만큼의 스레드를 사용하도록 지정하는 0 값입니다"
-#: src/xz/message.c:1029
+#: src/xz/message.c
msgid ""
" --block-size=SIZE\n"
" start a new .xz block after every SIZE bytes of input;\n"
@@ -753,17 +784,21 @@ msgstr ""
" 모든 <크기>의 입력 다음 새 .xz 블록을 시작합니다.\n"
" 스레드 압축에 블록 크기를 지정할 때 사용합니다"
-#: src/xz/message.c:1033
+#: src/xz/message.c
msgid ""
-" --block-list=SIZES\n"
+" --block-list=BLOCKS\n"
" start a new .xz block after the given comma-separated\n"
-" intervals of uncompressed data"
+" intervals of uncompressed data; optionally, specify a\n"
+" filter chain number (0-9) followed by a ':' before the\n"
+" uncompressed data size"
msgstr ""
" --block-list=<크기>\n"
-" 콤마로 구분한 연속 지정값 만큼 압축해제한 데이터 용량을\n"
-" 넘긴 후 새 .xz 블록을 시작합니다"
+" 콤마로 구분한 연속 지정값 만큼 압축 해제한 데이터\n"
+" 용량 다음, 새 .xz 블록을 시작합니다. 압축 해제 데이터\n"
+" 크기 앞에 콜론(':') 표기 후 필터 체인 번호(0-9)를 추가로\n"
+" 지정할 수 있습니다"
-#: src/xz/message.c:1037
+#: src/xz/message.c
msgid ""
" --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n"
@@ -771,11 +806,11 @@ msgid ""
" would block, all pending data is flushed out"
msgstr ""
" --flush-timeout=<제한시간>\n"
-" 앞서 플러싱한 후 더 많은 블록 입력을 읽어들일 때 밀리초\n"
-" 단위 <제한시간>을 넘기면 모든 대기 데이터를\n"
+" 이전 데이터를 플러싱한 후 더 많은 블록 입력을 읽어들일 때\n"
+" 밀리초단위 <제한시간>을 넘기면 모든 대기 데이터를\n"
" 플러싱아웃합니다"
-#: src/xz/message.c:1043
+#: src/xz/message.c
#, no-c-format
msgid ""
" --memlimit-compress=LIMIT\n"
@@ -791,10 +826,10 @@ msgstr ""
" --memlimit-mt-decompress=<제한용량>\n"
" -M, --memlimit=<제한용량>\n"
" 압축, 압축해제, 또는 각각의 경우에 대한 메모리 사용량\n"
-" 제한값을 설정합니다. <제한용량> 값 단위는 바이트 또는 램\n"
-" 용량 백분율이며, 기본 값은 0 입니다"
+" 제한값을 설정합니다. <제한용량> 값 단위는 바이트 또는\n"
+" 램 용량 백분율이며, 기본값은 0 입니다"
-#: src/xz/message.c:1052
+#: src/xz/message.c
msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards"
@@ -802,15 +837,43 @@ msgstr ""
" --no-adjust 압축 설정이 메모리 사용량 제한을 넘어서면\n"
" 설정 값을 줄이는 대신 오류 정보를 나타냅니다"
-#: src/xz/message.c:1058
+#: src/xz/message.c
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
msgstr ""
"\n"
-" 압축용 개별 필터 체인 설정(사전 설정 사용을 대신함):"
+" 압축용 개별 필터 체인 설정 (사전 설정 사용을 대신함):"
+
+#: src/xz/message.c
+msgid ""
+"\n"
+" --filters=FILTERS set the filter chain using the liblzma filter string\n"
+" syntax; use --filters-help for more information"
+msgstr ""
+"\n"
+" --filters=<필터> liblzma 필터 문자열 문법으로 필터 체인을 설정합니다.\n"
+" 자세한 정보는 --filters-help 옵션을 사용하십시오"
+
+#: src/xz/message.c
+msgid ""
+" --filters1=FILTERS ... --filters9=FILTERS\n"
+" set additional filter chains using the liblzma filter\n"
+" string syntax to use with --block-list"
+msgstr ""
+" --filters1=<필터> ... --filters9=<필터>\n"
+" --block-list 옵션을 함께 활용할 수 있는 liblzma 필터\n"
+" 문자열 문법으로 추가 필터 체인을 설정합니다"
-#: src/xz/message.c:1067
+#: src/xz/message.c
+msgid ""
+" --filters-help display more information about the liblzma filter string\n"
+" syntax and exit."
+msgstr ""
+" --filters-help liblzma 필터 문자열 문법 추가 정보를 나타낸 후\n"
+" 빠져나갑니다."
+
+#: src/xz/message.c
msgid ""
"\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
@@ -837,10 +900,10 @@ msgstr ""
" mode=<모드> 압축 모드 fast 또는 normal, normal)\n"
" nice=<숫자> nice 일치 길이 값(2-273, 64)\n"
" mf=<이름> 일치 탐색기(hc3, hc4, bt2, bt3, bt4\n"
-" 중 하나. bt4)\n"
+" 중 하나. 기본값은 bt4)\n"
" depth=<숫자> 최대 검색 깊이. 0=자동(기본값)"
-#: src/xz/message.c:1082
+#: src/xz/message.c
msgid ""
"\n"
" --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
@@ -850,21 +913,23 @@ msgid ""
" --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
" --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
" --sparc[=OPTS] SPARC BCJ filter\n"
+" --riscv[=OPTS] RISC-V BCJ filter\n"
" Valid OPTS for all BCJ filters:\n"
" start=NUM start offset for conversions (default=0)"
msgstr ""
"\n"
-" --x86[=<옵션>] x86 BCJ 필터(32-bit, 64-bit)\n"
+" --x86[=<옵션>] x86 BCJ 필터(32-비트, 64-비트)\n"
" --arm[=<옵션>] ARM BCJ 필터\n"
" --armthumb[=<옵션>] ARM-Thumb BCJ 필터\n"
" --arm64[=<옵션>] ARM64 BCJ 필터\n"
" --powerpc[=<옵션>] PowerPC BCJ 필터 (빅 엔디언 전용)\n"
" --ia64[=<옵션>] IA-64 (아이태니엄) BCJ 필터\n"
" --sparc[=<옵션>] SPARC BCJ 필터\n"
+" --riscv[=<옵션>] RISC-V BCJ 필터\n"
" 모든 BCJ 필터의 유효한 <옵션>:\n"
" start=<숫자> 변환 시작 오프셋(기본값=0)"
-#: src/xz/message.c:1095
+#: src/xz/message.c
msgid ""
"\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n"
@@ -873,10 +938,10 @@ msgid ""
msgstr ""
"\n"
" --delta[=<옵션>] 델타 필터. 유효한 <옵션> (유효값, 기본값):\n"
-" dist=<숫자> 각 바이트 값의 차이 값\n"
-" (1-256, 1)"
+" dist=<숫자> 각 바이트 값의 차이 값\n"
+" (1-256, 1)"
-#: src/xz/message.c:1103
+#: src/xz/message.c
msgid ""
"\n"
" Other options:\n"
@@ -884,7 +949,7 @@ msgstr ""
"\n"
"기타 옵션:\n"
-#: src/xz/message.c:1106
+#: src/xz/message.c
msgid ""
" -q, --quiet suppress warnings; specify twice to suppress errors too\n"
" -v, --verbose be verbose; specify twice for even more verbose"
@@ -892,15 +957,15 @@ msgstr ""
" -q, --quiet 경고 메시지 끔. 오류 메시지도 끄려면 두번 지정합니다\n"
" -v, --verbose 자세히 표시. 더 자세히 표시하려면 두번 지정합니다"
-#: src/xz/message.c:1111
+#: src/xz/message.c
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr " -Q, --no-warn 경고가 종료 상태에 영향을 주지 않게합니다"
-#: src/xz/message.c:1113
+#: src/xz/message.c
msgid " --robot use machine-parsable messages (useful for scripts)"
-msgstr " --robot 기계 해석용 메시지를 사용합니다(스크립트에 적합)"
+msgstr " --robot 기계 해석용 메시지를 사용합니다 (스크립트에 적합)"
-#: src/xz/message.c:1116
+#: src/xz/message.c
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
@@ -908,27 +973,28 @@ msgstr ""
" --info-memory 총 사용 메모리양과 현재 활성 메모리 사용 제한 값을\n"
" 표시하고 빠져나갑니다"
-#: src/xz/message.c:1119
+#: src/xz/message.c
msgid ""
" -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit"
msgstr ""
-" -h, --help 간단한 도움말을 표시합니다(기본 옵션만 나열)\n"
+" -h, --help 간단한 도움말을 표시합니다 (기본 옵션만 나열)\n"
" -H, --long-help 긴 도움말을 표시하고 빠져나갑니다"
-#: src/xz/message.c:1123
+#: src/xz/message.c
msgid ""
" -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)"
msgstr ""
" -h, --help 간단한 도움말을 표시하고 빠져나갑니다\n"
-" -H, --long-help 긴 도움말을 표시합니다(고급 옵션도 나열)"
+" -H, --long-help 긴 도움말을 표시합니다 (고급 옵션도 나열)"
-#: src/xz/message.c:1128
+#: src/xz/message.c
msgid " -V, --version display the version number and exit"
msgstr " -V, --version 버전 번호를 표시하고 빠져나갑니다"
-#: src/xz/message.c:1130
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
+#, c-format
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
@@ -940,131 +1006,125 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks.
-#: src/xz/message.c:1136
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr "<%s> (영문 또는 핀란드어)에 버그를 보고하십시오.\n"
-#: src/xz/message.c:1138
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "%s home page: <%s>\n"
msgstr "%s 홈페이지: <%s>\n"
-#: src/xz/message.c:1142
+#: src/xz/message.c
msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
msgstr "!! 주의 !! 개발 버전이며 실제 사용 용도가 아닙니다."
-#: src/xz/options.c:86
+#: src/xz/message.c
+msgid ""
+"Filter chains are set using the --filters=FILTERS or\n"
+"--filters1=FILTERS ... --filters9=FILTERS options. Each filter in the chain\n"
+"can be separated by spaces or '--'. Alternatively a preset <0-9>[e] can be\n"
+"specified instead of a filter chain.\n"
+msgstr ""
+"--filters=<필터> 또는 --filters1=<필터> ... --filters9=<필터> 옵션으로\n"
+"필터 체인을 지정합니다. 체인의 각 필터는 공백 문자 또는 '--'으로 구분할 수 있습니다.\n"
+"필터 체인 대신 <0-9>[e] 사전 설정 값을 지정할 수 있습니다.\n"
+
+#: src/xz/message.c
+msgid "The supported filters and their options are:"
+msgstr "지원하는 필터와 옵션은 다음과 같습니다:"
+
+#: src/xz/options.c
#, c-format
-msgid "%s: Options must be `name=value' pairs separated with commas"
-msgstr "%s: 옵션은 쉼표로 구분한 `이름=값' 쌍이어야합니다"
+msgid "%s: Options must be 'name=value' pairs separated with commas"
+msgstr "%s: 옵션은 쉼표로 구분한 '이름=값' 쌍이어야합니다"
-#: src/xz/options.c:93
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option name"
msgstr "%s: 잘못된 옵션 이름"
-#: src/xz/options.c:113
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option value"
msgstr "%s: 잘못된 옵션 값"
-#: src/xz/options.c:248
+#: src/xz/options.c
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
-msgstr "지원하지 않는 LZMA1/LZMA2 프리셋: %s"
+msgstr "지원하지 않는 LZMA1/LZMA2 사전 설정: %s"
-#: src/xz/options.c:356
+#: src/xz/options.c
msgid "The sum of lc and lp must not exceed 4"
msgstr "lc값과 lp값의 합이 4를 초과하면 안됩니다"
-#: src/xz/suffix.c:160
+#: src/xz/suffix.c
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: 파일 이름에 알 수 없는 확장자 붙음, 건너뜀"
-#: src/xz/suffix.c:181
+#: src/xz/suffix.c
#, c-format
-msgid "%s: File already has `%s' suffix, skipping"
-msgstr "%s: 파일에 이미 `%s' 확장자가 붙음, 건너뜀"
+msgid "%s: File already has '%s' suffix, skipping"
+msgstr "%s: 파일에 이미 '%s' 확장자가 붙음, 건너뜀"
-#: src/xz/suffix.c:388
+#: src/xz/suffix.c
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s: 잘못된 파일 이름 확장자"
-#: src/xz/util.c:107
+#: src/xz/util.c
#, c-format
msgid "%s: Value is not a non-negative decimal integer"
msgstr "%s: 값은 10진 양수입니다"
-#: src/xz/util.c:149
+#: src/xz/util.c
#, c-format
msgid "%s: Invalid multiplier suffix"
-msgstr "%s: 잘못된 승수 후위 단위"
+msgstr "%s: 잘못된 승수 단위"
-#: src/xz/util.c:151
-msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
-msgstr "유효한 후위 단위는 `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30) 입니다."
+#: src/xz/util.c
+msgid "Valid suffixes are 'KiB' (2^10), 'MiB' (2^20), and 'GiB' (2^30)."
+msgstr "사용할 수 있는 단위는 'KiB' (2^10), 'MiB' (2^20), 'GiB' (2^30) 입니다."
-#: src/xz/util.c:168
+#: src/xz/util.c
#, c-format
-msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
-msgstr "`%s' 옵션 값은 범위[%<PRIu64>, %<PRIu64>] 안에 있어야 합니다"
+msgid "Value of the option '%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+msgstr "'%s' 옵션 값은 [%<PRIu64>, %<PRIu64>] 범위 안에 있어야 합니다"
-#: src/xz/util.c:270
+#: src/xz/util.c
msgid "Compressed data cannot be read from a terminal"
msgstr "압축 데이터를 터미널에서 읽을 수 없습니다"
-#: src/xz/util.c:283
+#: src/xz/util.c
msgid "Compressed data cannot be written to a terminal"
msgstr "압축 데이터를 터미널에 기록할 수 없습니다"
-#: src/common/tuklib_exit.c:40
+#: src/lzmainfo/lzmainfo.c
+#, c-format
+msgid ""
+"Usage: %s [--help] [--version] [FILE]...\n"
+"Show information stored in the .lzma file header"
+msgstr ""
+"사용법: %s [--help] [--version] [<파일>]...\n"
+".lzma 파일 헤더에 저장한 정보를 보여줍니다"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "File is too small to be a .lzma file"
+msgstr ".lzma 파일이기에는 너무 작습니다"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "Not a .lzma file"
+msgstr ".lzma 파일이 아닙니다"
+
+#: src/common/tuklib_exit.c
msgid "Writing to standard output failed"
msgstr "표준 출력 기록 실패"
-#: src/common/tuklib_exit.c:43
+#: src/common/tuklib_exit.c
msgid "Unknown error"
msgstr "알 수 없는 오류"
-#~ msgid "The selected match finder requires at least nice=%<PRIu32>"
-#~ msgstr "선택한 일치 탐색기는 최소한 nice=%<PRIu32> 상태여야합니다"
-
-#~ msgid "Sandbox is disabled due to incompatible command line arguments"
-#~ msgstr "비호환 명령행 인자값이 있어 샌드박스를 비활성했습니다"
-
-#~ msgid "Sandbox was successfully enabled"
-#~ msgstr "샌드 박스 활성화에 성공했습니다"
-
-#~ msgid "Memory usage limit for compression: "
-#~ msgstr "압축 메모리 사용 제한량: "
-
-#~ msgid " Streams: %s\n"
-#~ msgstr " 스트림: %s\n"
-
-#~ msgid " Blocks: %s\n"
-#~ msgstr " 블록: %s\n"
-
-#~ msgid " Ratio: %s\n"
-#~ msgstr " 압축률: %s\n"
-
-#~ msgid " Check: %s\n"
-#~ msgstr " 검사: %s\n"
-
-#~ msgid ""
-#~ " Streams:\n"
-#~ " Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding"
-#~ msgstr ""
-#~ " 스트림:\n"
-#~ " 스트림 블록 압축오프셋 압축해제 오프셋 압축용량 압축해제용량 압축율 검사 패딩"
-
-#~ msgid ""
-#~ " Blocks:\n"
-#~ " Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check"
-#~ msgstr ""
-#~ " 블록:\n"
-#~ " 스트림 블록 압축오프셋 압축해제오프셋 총용량 압축해제용량 압축율 검사"
-
-#~ msgid " CheckVal %*s Header Flags CompSize MemUsage Filters"
-#~ msgstr " CheckVal %*s Header 플래그 압축용량 메모리사용량 필터"
+#~ msgid "Failed to enable the sandbox"
+#~ msgstr "샌드박스 활성화 실패"
diff --git a/po/pl.gmo b/po/pl.gmo
index a40ccd7..535dd5d 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index 1ce4e0c..caa9f63 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,13 +1,15 @@
+# SPDX-License-Identifier: 0BSD
+#
# Polish translation for xz.
-# This file is put in the public domain.
-# Jakub Bogusz <qboosh@pld-linux.org>, 2011-2023.
+# This file is published under the BSD Zero Clause License.
+# Jakub Bogusz <qboosh@pld-linux.org>, 2011-2024.
#
msgid ""
msgstr ""
-"Project-Id-Version: xz 5.4.4-pre1\n"
+"Project-Id-Version: xz 5.6.0-pre2\n"
"Report-Msgid-Bugs-To: xz@tukaani.org\n"
-"POT-Creation-Date: 2023-10-31 22:33+0800\n"
-"PO-Revision-Date: 2023-07-19 21:30+0200\n"
+"POT-Creation-Date: 2024-05-29 17:41+0300\n"
+"PO-Revision-Date: 2024-02-15 21:15+0100\n"
"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
"Language: pl\n"
@@ -17,142 +19,170 @@ msgstr ""
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-#: src/xz/args.c:77
+#: src/xz/args.c
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr "%s: Błędny argument dla --block-list"
-#: src/xz/args.c:87
+#: src/xz/args.c
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s: Zbyt dużo argumentów dla --block-list"
-#: src/xz/args.c:116
+#: src/xz/args.c
+#, c-format
+msgid "In --block-list, block size is missing after filter chain number '%c:'"
+msgstr "W --block-list brakuje rozmiaru bloku po numerze łańcucha filtrów „%c:”"
+
+#: src/xz/args.c
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:451
+#: src/xz/args.c
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s: Nieznany typ formatu pliku"
-#: src/xz/args.c:474 src/xz/args.c:482
+#: src/xz/args.c
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s: Nieobsługiwany typ kontroli spójności"
-#: src/xz/args.c:518
-msgid "Only one file can be specified with `--files' or `--files0'."
-msgstr "Wraz z opcją `--files' lub `--files0' można podać tylko jeden plik."
+#: src/xz/args.c
+msgid "Only one file can be specified with '--files' or '--files0'."
+msgstr "Wraz z opcją „--files” lub „--files0” można podać tylko jeden plik."
#. TRANSLATORS: This is a translatable
#. string because French needs a space
#. before the colon ("%s : %s").
-#: src/xz/args.c:533 src/xz/coder.c:692 src/xz/coder.c:708 src/xz/coder.c:968
-#: src/xz/coder.c:971 src/xz/file_io.c:605 src/xz/file_io.c:679
-#: src/xz/file_io.c:769 src/xz/file_io.c:940 src/xz/list.c:369
-#: src/xz/list.c:415 src/xz/list.c:477 src/xz/list.c:581 src/xz/list.c:590
+#: src/xz/args.c src/xz/coder.c src/xz/file_io.c src/xz/list.c
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: src/xz/args.c:589
+#: src/xz/args.c
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "Zmienna środowiskowa %s zawiera zbyt dużo argumentów"
-#: src/xz/args.c:691
+#: src/xz/args.c
msgid "Compression support was disabled at build time"
msgstr "Obsługa kompresji została wyłączona na etapie budowania"
-#: src/xz/args.c:698
+#: src/xz/args.c
msgid "Decompression support was disabled at build time"
msgstr "Obsługa dekompresji została wyłączona na etapie budowania"
-#: src/xz/args.c:704
+#: src/xz/args.c
msgid "Compression of lzip files (.lz) is not supported"
msgstr "Kompresja plików lzip (.lz) nie jest osbługiwana"
-#: src/xz/args.c:735
+#: src/xz/args.c
+msgid "--block-list is ignored unless compressing to the .xz format"
+msgstr "--block-list jest ignorowane poza kompresją do formatu .xz"
+
+#: src/xz/args.c
msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "Przy --format=raw i zapisie do pliku wymagana jest opcja --suffix=.ROZ"
-#: src/xz/coder.c:115
+#: src/xz/coder.c
msgid "Maximum number of filters is four"
msgstr "Maksymalna liczba filtrów to cztery"
-#: src/xz/coder.c:135
+#: src/xz/coder.c
+#, c-format
+msgid "Error in --filters%s=FILTERS option:"
+msgstr "Błąd w opcji --filters%s=FILTRY:"
+
+#: src/xz/coder.c
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:170
+#: src/xz/coder.c
+#, c-format
+msgid "filter chain %u used by --block-list but not specified with --filters%u="
+msgstr "łańcuch filtrów %u użyty w --block-list, ale nie podany przez --filters%u="
+
+#: src/xz/coder.c
msgid "Using a preset in raw mode is discouraged."
msgstr "Użycie ustawień predefiniowanych w trybie surowym jest odradzane."
-#: src/xz/coder.c:172
+#: src/xz/coder.c
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:195
+#: src/xz/coder.c
msgid "The .lzma format supports only the LZMA1 filter"
msgstr "Format .lzma obsługuje tylko filtr LZMA1"
-#: src/xz/coder.c:203
+#: src/xz/coder.c
msgid "LZMA1 cannot be used with the .xz format"
msgstr "LZMA1 nie może być używany z formatem .xz"
-#: src/xz/coder.c:220
-msgid "The filter chain is incompatible with --flush-timeout"
-msgstr "Łańcuch filtrów jest niezgodny z --flush-timeout"
+#: src/xz/coder.c
+#, c-format
+msgid "Filter chain %u is incompatible with --flush-timeout"
+msgstr "Łańcuch filtrów %u jest niezgodny z --flush-timeout"
-#: src/xz/coder.c:226
+#: src/xz/coder.c
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:250
+#: src/xz/coder.c
+#, c-format
+msgid "Unsupported options in filter chain %u"
+msgstr "Nieobsługiwane opcje w łańcuchu filtrów %u"
+
+#: src/xz/coder.c
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "Maksymalna liczba używanych wątków: %<PRIu32>."
-#: src/xz/coder.c:266
+#: src/xz/coder.c
msgid "Unsupported filter chain or filter options"
msgstr "Nieobsługiwany łańcuch filtrów lub opcje filtra"
-#: src/xz/coder.c:278
+#: src/xz/coder.c
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "Dekompresja będzie wymagała %s MiB pamięci."
-#: src/xz/coder.c:310
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgstr "Zmniejszono liczbę wątków z %s do %s, aby nie przekroczyć limitu użycia pamięci %s MiB"
-#: src/xz/coder.c:330
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway."
msgstr "Zmniejszono liczbę wątków z %s do jednego. Automatyczny limit użycia pamięci %s MiB jest nadal przekroczony - wymagane jest %s MiB. Kontynuacja mimo to."
-#: src/xz/coder.c:357
+#: src/xz/coder.c
#, c-format
msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB"
msgstr "Przełączenie w tryb jednowątkowy, aby nie przekroczyć limitu użycia pamięci %s MiB"
-#: src/xz/coder.c:412
+#: src/xz/coder.c
#, 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:110 src/xz/file_io.c:118
+#: src/xz/coder.c
+#, c-format
+msgid "Adjusted LZMA%c dictionary size for --filters%u from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgstr "Skorygowano rozmiar słownika LZMA%c dla --filters%u z %s MiB do %s MiB, aby nie przekroczyć limitu użycia pamięci %s MiB"
+
+#: src/xz/coder.c
+#, c-format
+msgid "Error changing to filter chain %u: %s"
+msgstr "Błąd podczas zmiany w łańcuchu filtrów %u: %s"
+
+#: src/xz/file_io.c
#, c-format
msgid "Error creating a pipe: %s"
msgstr "Błąd tworzenia potoku: %s"
-#: src/xz/file_io.c:252
-msgid "Failed to enable the sandbox"
-msgstr "Nie udało się włączyć piaskownicy"
-
-#: src/xz/file_io.c:294
+#: src/xz/file_io.c
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s: poll() nie powiodło się: %s"
@@ -167,252 +197,252 @@ msgstr "%s: poll() nie powiodło się: %s"
#. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously
#. shouldn't be removed.
-#: src/xz/file_io.c:361
+#: src/xz/file_io.c
#, 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:368 src/xz/file_io.c:924
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: Nie można usunąć: %s"
-#: src/xz/file_io.c:394
+#: src/xz/file_io.c
#, 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:407
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: Nie można ustawić grupy pliku: %s"
-#: src/xz/file_io.c:426
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: Nie można ustawić uprawnień pliku: %s"
-#: src/xz/file_io.c:552
+#: src/xz/file_io.c
#, 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:610 src/xz/file_io.c:672
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: Jest dowiązaniem symbolicznym, pominięto"
-#: src/xz/file_io.c:701
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: Jest katalogiem, pominięto"
-#: src/xz/file_io.c:707
+#: src/xz/file_io.c
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: Nie jest zwykłym plikiem, pominięto"
-#: src/xz/file_io.c:724
+#: src/xz/file_io.c
#, 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:731
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s: Plik ma ustawiony bit sticky, pominięto"
-#: src/xz/file_io.c:738
+#: src/xz/file_io.c
#, 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:780
+#: src/xz/file_io.c
msgid "Empty filename, skipping"
msgstr "Pusta nazwa pliku, pominięto"
-#: src/xz/file_io.c:834
+#: src/xz/file_io.c
#, 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:882
+#: src/xz/file_io.c
#, 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:1081
+#: src/xz/file_io.c
#, 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:1093
+#: src/xz/file_io.c
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: Zamknięcie pliku nie powiodło się: %s"
-#: src/xz/file_io.c:1129 src/xz/file_io.c:1391
+#: src/xz/file_io.c
#, 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:1229
+#: src/xz/file_io.c
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: Błąd odczytu: %s"
-#: src/xz/file_io.c:1259
+#: src/xz/file_io.c
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: Błąd podczas zmiany pozycji w pliku: %s"
-#: src/xz/file_io.c:1283
+#: src/xz/file_io.c
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: Nieoczekiwany koniec pliku"
-#: src/xz/file_io.c:1342
+#: src/xz/file_io.c
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: Błąd zapisu: %s"
-#: src/xz/hardware.c:238
+#: src/xz/hardware.c
msgid "Disabled"
msgstr "Wyłączony"
-#: src/xz/hardware.c:269
+#: src/xz/hardware.c
msgid "Amount of physical memory (RAM):"
msgstr "Rozmiar pamięci fizycznej (RAM):"
-#: src/xz/hardware.c:270
+#: src/xz/hardware.c
msgid "Number of processor threads:"
msgstr "Liczba wątków procesora:"
-#: src/xz/hardware.c:271
+#: src/xz/hardware.c
msgid "Compression:"
msgstr "Kompresja:"
-#: src/xz/hardware.c:272
+#: src/xz/hardware.c
msgid "Decompression:"
msgstr "Dekompresja:"
-#: src/xz/hardware.c:273
+#: src/xz/hardware.c
msgid "Multi-threaded decompression:"
msgstr "Dekompresja wielowątkowa:"
-#: src/xz/hardware.c:274
+#: src/xz/hardware.c
msgid "Default for -T0:"
msgstr "Domyślnie dla -T0:"
-#: src/xz/hardware.c:292
+#: src/xz/hardware.c
msgid "Hardware information:"
msgstr "Informacje o sprzęcie:"
-#: src/xz/hardware.c:299
+#: src/xz/hardware.c
msgid "Memory usage limits:"
msgstr "Limity użycia pamięci"
-#: src/xz/list.c:68
+#: src/xz/list.c
msgid "Streams:"
msgstr "Strumienie:"
-#: src/xz/list.c:69
+#: src/xz/list.c
msgid "Blocks:"
msgstr "Bloki:"
-#: src/xz/list.c:70
+#: src/xz/list.c
msgid "Compressed size:"
msgstr "Rozmiar spakowany:"
-#: src/xz/list.c:71
+#: src/xz/list.c
msgid "Uncompressed size:"
msgstr "Rozmiar rozpakowany:"
-#: src/xz/list.c:72
+#: src/xz/list.c
msgid "Ratio:"
msgstr "Współczynnik:"
-#: src/xz/list.c:73
+#: src/xz/list.c
msgid "Check:"
msgstr "Kontrola spójności:"
-#: src/xz/list.c:74
+#: src/xz/list.c
msgid "Stream Padding:"
msgstr "Wyrównanie strumienia:"
-#: src/xz/list.c:75
+#: src/xz/list.c
msgid "Memory needed:"
msgstr "Wymagana pamięć:"
-#: src/xz/list.c:76
+#: src/xz/list.c
msgid "Sizes in headers:"
msgstr "Rozmiar w nagłówkach:"
-#: src/xz/list.c:79
+#: src/xz/list.c
msgid "Number of files:"
msgstr "Liczba plików:"
-#: src/xz/list.c:122
+#: src/xz/list.c
msgid "Stream"
msgstr "Strumień"
-#: src/xz/list.c:123
+#: src/xz/list.c
msgid "Block"
msgstr "Blok"
-#: src/xz/list.c:124
+#: src/xz/list.c
msgid "Blocks"
msgstr "Bloki"
-#: src/xz/list.c:125
+#: src/xz/list.c
msgid "CompOffset"
msgstr "Offset spak."
-#: src/xz/list.c:126
+#: src/xz/list.c
msgid "UncompOffset"
msgstr "Offset rozp."
-#: src/xz/list.c:127
+#: src/xz/list.c
msgid "CompSize"
msgstr "Rozm.spak."
-#: src/xz/list.c:128
+#: src/xz/list.c
msgid "UncompSize"
msgstr "Rozm.rozp."
-#: src/xz/list.c:129
+#: src/xz/list.c
msgid "TotalSize"
msgstr "Rozm.całk."
-#: src/xz/list.c:130
+#: src/xz/list.c
msgid "Ratio"
msgstr "Wsp."
-#: src/xz/list.c:131
+#: src/xz/list.c
msgid "Check"
msgstr "Kontrola"
-#: src/xz/list.c:132
+#: src/xz/list.c
msgid "CheckVal"
msgstr "S.kontr."
-#: src/xz/list.c:133
+#: src/xz/list.c
msgid "Padding"
msgstr "Wyrównanie"
-#: src/xz/list.c:134
+#: src/xz/list.c
msgid "Header"
msgstr "Nagłówek"
-#: src/xz/list.c:135
+#: src/xz/list.c
msgid "Flags"
msgstr "Flagi"
-#: src/xz/list.c:136
+#: src/xz/list.c
msgid "MemUsage"
msgstr "Uż.pamięci"
-#: src/xz/list.c:137
+#: src/xz/list.c
msgid "Filters"
msgstr "Filtry"
@@ -420,7 +450,7 @@ msgstr "Filtry"
#. This string is used in tables. In older xz version this
#. string was limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:169
+#: src/xz/list.c
msgid "None"
msgstr "Brak"
@@ -428,60 +458,60 @@ msgstr "Brak"
#. but the Check ID is known (here 2). In older xz version these
#. strings were limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:175
+#: src/xz/list.c
msgid "Unknown-2"
msgstr "Nieznany-2"
-#: src/xz/list.c:176
+#: src/xz/list.c
msgid "Unknown-3"
msgstr "Nieznany-3"
-#: src/xz/list.c:178
+#: src/xz/list.c
msgid "Unknown-5"
msgstr "Nieznany-5"
-#: src/xz/list.c:179
+#: src/xz/list.c
msgid "Unknown-6"
msgstr "Nieznany-6"
-#: src/xz/list.c:180
+#: src/xz/list.c
msgid "Unknown-7"
msgstr "Nieznany-7"
-#: src/xz/list.c:181
+#: src/xz/list.c
msgid "Unknown-8"
msgstr "Nieznany-8"
-#: src/xz/list.c:182
+#: src/xz/list.c
msgid "Unknown-9"
msgstr "Nieznany-9"
-#: src/xz/list.c:184
+#: src/xz/list.c
msgid "Unknown-11"
msgstr "Nieznany11"
-#: src/xz/list.c:185
+#: src/xz/list.c
msgid "Unknown-12"
msgstr "Nieznany12"
-#: src/xz/list.c:186
+#: src/xz/list.c
msgid "Unknown-13"
msgstr "Nieznany13"
-#: src/xz/list.c:187
+#: src/xz/list.c
msgid "Unknown-14"
msgstr "Nieznany14"
-#: src/xz/list.c:188
+#: src/xz/list.c
msgid "Unknown-15"
msgstr "Nieznany15"
-#: src/xz/list.c:351
+#: src/xz/list.c
#, c-format
msgid "%s: File is empty"
msgstr "%s: Plik jest pusty"
-#: src/xz/list.c:356
+#: src/xz/list.c
#, c-format
msgid "%s: Too small to be a valid .xz file"
msgstr "%s: Za mały na poprawny plik .xz"
@@ -490,26 +520,26 @@ msgstr "%s: Za mały na poprawny plik .xz"
#. to Ratio, the columns are right aligned. Check and Filename
#. are left aligned. If you need longer words, it's OK to
#. use two lines here. Test with "xz -l foo.xz".
-#: src/xz/list.c:731
+#: src/xz/list.c
msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename"
msgstr "Strum. Bloki Spakowany Rozpakowany Wsp. Kontrola Nazwa pliku"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "Yes"
msgstr "Tak"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "No"
msgstr "Nie"
-#: src/xz/list.c:1028 src/xz/list.c:1206
+#: src/xz/list.c
#, 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:1179
+#: src/xz/list.c
#, c-format
msgid "%s file\n"
msgid_plural "%s files\n"
@@ -517,38 +547,42 @@ msgstr[0] "%s plik\n"
msgstr[1] "%s pliki\n"
msgstr[2] "%s plików\n"
-#: src/xz/list.c:1192
+#: src/xz/list.c
msgid "Totals:"
msgstr "Sumarycznie:"
-#: src/xz/list.c:1270
+#: src/xz/list.c
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:1276
+#: src/xz/list.c
+msgid "Try 'lzmainfo' with .lzma files."
+msgstr "Proszę spróbować „lzmainfo” z plikami .lzma."
+
+#: src/xz/list.c
msgid "--list does not support reading from standard input"
msgstr "--list nie obsługuje odczytu ze standardowego wejścia"
-#: src/xz/main.c:89
+#: src/xz/main.c
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s: Błąd odczytu nazw plików: %s"
-#: src/xz/main.c:96
+#: src/xz/main.c
#, 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
+#: src/xz/main.c
#, 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'?"
+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:188
+#: src/xz/main.c
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:266
+#: src/xz/main.c
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"
@@ -556,68 +590,68 @@ msgstr "Nie można odczytać danych ze standardowego wejścia przy czytaniu nazw
#. of the line in messages. Usually it becomes "xz: ".
#. This is a translatable string because French needs
#. a space before a colon.
-#: src/xz/message.c:670 src/xz/message.c:725
+#: src/xz/message.c
#, c-format
msgid "%s: "
msgstr "%s: "
-#: src/xz/message.c:797 src/xz/message.c:856
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
msgid "Internal error (bug)"
msgstr "Błąd wewnętrzny"
-#: src/xz/message.c:804
+#: src/xz/message.c
msgid "Cannot establish signal handlers"
msgstr "Nie można ustawić obsługi sygnałów"
-#: src/xz/message.c:813
+#: src/xz/message.c
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:816
+#: src/xz/message.c
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:823
+#: src/xz/message.c
msgid "Memory usage limit reached"
msgstr "Osiągnięto limit użycia pamięci"
-#: src/xz/message.c:826
+#: src/xz/message.c
msgid "File format not recognized"
msgstr "Nie rozpoznany format pliku"
-#: src/xz/message.c:829
+#: src/xz/message.c
msgid "Unsupported options"
msgstr "Nieobsługiwane opcje"
-#: src/xz/message.c:832
+#: src/xz/message.c
msgid "Compressed data is corrupt"
msgstr "Dane skompresowane są uszkodzone"
-#: src/xz/message.c:835
+#: src/xz/message.c
msgid "Unexpected end of input"
msgstr "Nieoczekiwany koniec wejścia"
-#: src/xz/message.c:877
+#: src/xz/message.c
#, 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:905
+#: src/xz/message.c
#, 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:924
+#: src/xz/message.c
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: Łańcuch filtrów: %s\n"
-#: src/xz/message.c:935
+#: src/xz/message.c
#, c-format
-msgid "Try `%s --help' for more information."
-msgstr "Polecenie `%s --help' pokaże więcej informacji."
+msgid "Try '%s --help' for more information."
+msgstr "Polecenie „%s --help” pokaże więcej informacji."
-#: src/xz/message.c:961
+#: src/xz/message.c
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
@@ -628,17 +662,17 @@ msgstr ""
"Kompresja lub dekompresja PLIKÓW w formacie .xz.\n"
"\n"
-#: src/xz/message.c:968
+#: src/xz/message.c
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:972
+#: src/xz/message.c
msgid " Operation mode:\n"
msgstr " Tryb pracy:\n"
-#: src/xz/message.c:975
+#: src/xz/message.c
msgid ""
" -z, --compress force compression\n"
" -d, --decompress force decompression\n"
@@ -650,7 +684,7 @@ msgstr ""
" -t, --test sprawdzenie spójności plików skompresowanych\n"
" -l, --list wypisanie informacji o plikach .xz"
-#: src/xz/message.c:981
+#: src/xz/message.c
msgid ""
"\n"
" Operation modifiers:\n"
@@ -658,7 +692,7 @@ msgstr ""
"\n"
" Modyfikatory operacji:\n"
-#: src/xz/message.c:984
+#: src/xz/message.c
msgid ""
" -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\n"
@@ -668,7 +702,7 @@ msgstr ""
" -f, --force nadpisywanie plików wyjściowych i (de)kompresja dowiązań\n"
" -c, --stdout zapis na standardowe wyjście, nieusuwanie plików wej."
-#: src/xz/message.c:993
+#: src/xz/message.c
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
@@ -676,23 +710,23 @@ msgstr ""
" --single-stream dekompresja tylko pierwszego strumienia, ciche\n"
" zignorowanie pozostałych danych wejściowych"
-#: src/xz/message.c:996
+#: src/xz/message.c
msgid ""
" --no-sparse do not create sparse files when decompressing\n"
-" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
+" -S, --suffix=.SUF use the suffix '.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n"
" 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"
+" -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:1005
+#: src/xz/message.c
msgid ""
"\n"
" Basic file format and compression options:\n"
@@ -700,23 +734,23 @@ msgstr ""
"\n"
" Podstawowe opcje formatu pliku i kompresji:\n"
-#: src/xz/message.c:1007
+#: src/xz/message.c
msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n"
-" `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
-" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-" `crc32', `crc64' (default), or `sha256'"
+" 'auto' (default), 'xz', 'lzma', 'lzip', and 'raw'\n"
+" -C, --check=CHECK integrity check type: 'none' (use with caution),\n"
+" 'crc32', 'crc64' (default), or 'sha256'"
msgstr ""
" -F, --format=FORM format pliki do kodowania lub dekodowania; możliwe to\n"
-" `auto' (domyślny), `xz', 'lzma', `lzip' i `raw'\n"
-" -C, --check=TEST typ kontroli spójności: `none' (ostrożnie!),\n"
-" `crc32', `crc64' (domyślny) lub `sha256'"
+" „auto” (domyślny), „xz”, „lzma”, „lzip” i „raw”\n"
+" -C, --check=TEST typ kontroli spójności: „none” (ostrożnie!),\n"
+" „crc32”, „crc64” (domyślny) lub „sha256”"
-#: src/xz/message.c:1012
+#: src/xz/message.c
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:1016
+#: src/xz/message.c
msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!"
@@ -725,7 +759,7 @@ msgstr ""
" użyciem wartości 7-9 należy wziąć pod uwagę wykorzystanie\n"
" pamięci przy kompresji *oraz* dekompresji!"
-#: src/xz/message.c:1020
+#: src/xz/message.c
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
@@ -734,15 +768,15 @@ msgstr ""
" ilości czasu procesora; nie wpływa na wymagania\n"
" pamięciowe dekompresora"
-#: src/xz/message.c:1024
+#: src/xz/message.c
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"
+" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
+" 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"
+" -T, --threads=ILE użycie maksymalnie ILU wątków; domyślnie 0, co oznacza\n"
" tyle, ile jest rdzeni procesorów"
-#: src/xz/message.c:1029
+#: src/xz/message.c
msgid ""
" --block-size=SIZE\n"
" start a new .xz block after every SIZE bytes of input;\n"
@@ -753,17 +787,21 @@ msgstr ""
" opcja służy do ustawienia rozmiaru bloku dla kompresji\n"
" wielowątkowej"
-#: src/xz/message.c:1033
+#: src/xz/message.c
msgid ""
-" --block-list=SIZES\n"
+" --block-list=BLOCKS\n"
" start a new .xz block after the given comma-separated\n"
-" intervals of uncompressed data"
+" intervals of uncompressed data; optionally, specify a\n"
+" filter chain number (0-9) followed by a ':' before the\n"
+" uncompressed data size"
msgstr ""
" --block-list=ROZMIARY\n"
" rozpoczęcie nowego bloku .xz po rozdzielonych przecinkiem\n"
-" przedziałach danych nieskompresowanych"
+" przedziałach danych nieskompresowanych; opcjonalnie można\n"
+" podać numer łańcucha filtrów (0-9) ze znakiem „:” przed\n"
+" rozmiarem danych nieskompresowanych"
-#: src/xz/message.c:1037
+#: src/xz/message.c
msgid ""
" --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n"
@@ -775,7 +813,7 @@ msgstr ""
" ostatniegu zapisu bloku, a odczyt kolejnych danych byłby\n"
" blokujący, wszystkie gotowe dane są zapisywane"
-#: src/xz/message.c:1043
+#: src/xz/message.c
#, no-c-format
msgid ""
" --memlimit-compress=LIMIT\n"
@@ -794,7 +832,7 @@ msgstr ""
" dekompresji, dekompresji wielowątkowej lub wszystkich;\n"
" LIMIT jest w bajtach, % RAM lub 0 dla limitów domyślnych"
-#: src/xz/message.c:1052
+#: src/xz/message.c
msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards"
@@ -803,7 +841,7 @@ msgstr ""
" pamięci, zostanie zgłoszony błąd zamiast zmniejszania\n"
" ustawień"
-#: src/xz/message.c:1058
+#: src/xz/message.c
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
@@ -811,7 +849,36 @@ msgstr ""
"\n"
" Łańcuch własnych filtrów do kompresji (alternatywa do używania -0 .. -9):"
-#: src/xz/message.c:1067
+#: src/xz/message.c
+msgid ""
+"\n"
+" --filters=FILTERS set the filter chain using the liblzma filter string\n"
+" syntax; use --filters-help for more information"
+msgstr ""
+"\n"
+" --filters=FILTRY ustawienie łańcucha filtrów przy użyciu składni łańcucha\n"
+" filtrów liblzma; więcej informacji z opcją --filters-help"
+
+#: src/xz/message.c
+msgid ""
+" --filters1=FILTERS ... --filters9=FILTERS\n"
+" set additional filter chains using the liblzma filter\n"
+" string syntax to use with --block-list"
+msgstr ""
+" --filters1=FILTRY ... --filters9=FILTRY\n"
+" ustawienie dodatkowego łańcucha filtrów przy użyciu\n"
+" składni łańcucha filtrów liblzma do użyciaw opcji\n"
+" --block-list"
+
+#: src/xz/message.c
+msgid ""
+" --filters-help display more information about the liblzma filter string\n"
+" syntax and exit."
+msgstr ""
+" --filters-help więcej informacji o składni lańcuchów filtrów libzma\n"
+" i zakończenie."
+
+#: src/xz/message.c
msgid ""
"\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
@@ -840,7 +907,7 @@ msgstr ""
" mf=NAZWA dopasowywacz (hc3, hc4, bt2, bt3, bt4; bt4)\n"
" depth=ILE maks. głębokość szukania; 0=auto (domyślne)"
-#: src/xz/message.c:1082
+#: src/xz/message.c
msgid ""
"\n"
" --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
@@ -850,6 +917,7 @@ msgid ""
" --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
" --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
" --sparc[=OPTS] SPARC BCJ filter\n"
+" --riscv[=OPTS] RISC-V BCJ filter\n"
" Valid OPTS for all BCJ filters:\n"
" start=NUM start offset for conversions (default=0)"
msgstr ""
@@ -861,10 +929,11 @@ msgstr ""
" --powerpc[=OPCJE] Filtr BCJ PowerPC (tylko big-endian)\n"
" --ia64[=OPCJE] Filtr BCJ IA-64 (Itanium)\n"
" --sparc[=OPCJE] Filtr BCJ SPARC\n"
+" --riscv[=OPTS] Filtr BCJ RISC-V\n"
" Poprawne OPCJE dla wszystkich filtrów BCJ:\n"
" start=ILE offset początku konwersji (domyślnie=0)"
-#: src/xz/message.c:1095
+#: src/xz/message.c
msgid ""
"\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n"
@@ -876,7 +945,7 @@ msgstr ""
" dist=ILE odległość między bajtami odejmowanymi od\n"
" siebie (1-256; 1)"
-#: src/xz/message.c:1103
+#: src/xz/message.c
msgid ""
"\n"
" Other options:\n"
@@ -884,7 +953,7 @@ msgstr ""
"\n"
" Inne opcje:\n"
-#: src/xz/message.c:1106
+#: src/xz/message.c
msgid ""
" -q, --quiet suppress warnings; specify twice to suppress errors too\n"
" -v, --verbose be verbose; specify twice for even more verbose"
@@ -892,15 +961,15 @@ msgstr ""
" -q, --quiet pominięcie ostrzeżeń; dwukrotne podanie pomija też błędy\n"
" -v, --verbose więcej informacji; dwukrotne podanie to jeszcze więcej"
-#: src/xz/message.c:1111
+#: src/xz/message.c
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:1113
+#: src/xz/message.c
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr " --robot komunikaty w formacie dla maszyny (do skryptów)"
-#: src/xz/message.c:1116
+#: src/xz/message.c
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
@@ -908,7 +977,7 @@ msgstr ""
" --info-memory wyświetlenie całkowitej ilości pamięci RAM oraz aktualnie\n"
" aktywnych limitów pamięci i zakończenie pracy"
-#: src/xz/message.c:1119
+#: src/xz/message.c
msgid ""
" -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit"
@@ -916,7 +985,7 @@ msgstr ""
" -h, --help wyświetlenie krótkiego opisu (tylko podstawowe opcje)\n"
" -H, --long-help wyświetlenie tego długiego opisu i zakończenie"
-#: src/xz/message.c:1123
+#: src/xz/message.c
msgid ""
" -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)"
@@ -924,11 +993,12 @@ 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:1128
+#: src/xz/message.c
msgid " -V, --version display the version number and exit"
msgstr " -V, --version wyświetlenie informacji o wersji i zakończenie"
-#: src/xz/message.c:1130
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
+#, c-format
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
@@ -940,7 +1010,7 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks.
-#: src/xz/message.c:1136
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr ""
@@ -949,85 +1019,121 @@ msgstr ""
"Błędy w tłumaczeniu prosimy zgłaszać na adres\n"
"<translation-team-pl@lists.sourceforge.net>.\n"
-#: src/xz/message.c:1138
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Strona domowa %s: <%s>\n"
-#: src/xz/message.c:1142
+#: src/xz/message.c
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
+#: src/xz/message.c
+msgid ""
+"Filter chains are set using the --filters=FILTERS or\n"
+"--filters1=FILTERS ... --filters9=FILTERS options. Each filter in the chain\n"
+"can be separated by spaces or '--'. Alternatively a preset <0-9>[e] can be\n"
+"specified instead of a filter chain.\n"
+msgstr ""
+"Łańcuchy filtrów ustawia się przy użyciu --filters=FILTRY lub\n"
+"--filters1=FILTRY ... --filters9=FILTRY. Każdy filtr w łańcuchu może być\n"
+"rozdzielony spacjami lub „--”. Alternatywnie zamiast łańcucha filtrów można\n"
+"podać predefiniowane <0-9>[e].\n"
+
+#: src/xz/message.c
+msgid "The supported filters and their options are:"
+msgstr "Obsługiwane filtry i ich opcje to:"
+
+#: src/xz/options.c
#, c-format
-msgid "%s: Options must be `name=value' pairs separated with commas"
-msgstr "%s: Opcje muszą być parami `nazwa=wartość' rozdzielonymi przecinkami"
+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
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option name"
msgstr "%s: Błędna nazwa opcji"
-#: src/xz/options.c:113
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option value"
msgstr "%s: Błędna wartość opcji"
-#: src/xz/options.c:248
+#: src/xz/options.c
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "Nieobsługiwane ustawienie predefiniowane LZMA1/LZMA2: %s"
-#: src/xz/options.c:356
+#: src/xz/options.c
msgid "The sum of lc and lp must not exceed 4"
msgstr "Suma lc i lp nie może przekroczyć 4"
-#: src/xz/suffix.c:160
+#: src/xz/suffix.c
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: Nazwa pliku ma nieznane rozszerzenie, pominięto"
-#: src/xz/suffix.c:181
+#: src/xz/suffix.c
#, c-format
-msgid "%s: File already has `%s' suffix, skipping"
-msgstr "%s: Plik już ma rozszerzenie `%s', pominięto"
+msgid "%s: File already has '%s' suffix, skipping"
+msgstr "%s: Plik już ma rozszerzenie „%s”, pominięto"
-#: src/xz/suffix.c:388
+#: src/xz/suffix.c
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s: Błędne rozszerzenie nazwy pliku"
-#: src/xz/util.c:107
+#: src/xz/util.c
#, 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:149
+#: src/xz/util.c
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s: Błędny przyrostek mnożnika"
-#: src/xz/util.c:151
-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
+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:168
+#: src/xz/util.c
#, 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>]"
+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:270
+#: src/xz/util.c
msgid "Compressed data cannot be read from a terminal"
msgstr "Dane skompresowane nie mogą być czytane z terminala"
-#: src/xz/util.c:283
+#: src/xz/util.c
msgid "Compressed data cannot be written to a terminal"
msgstr "Dane skompresowane nie mogą być zapisywane na terminal"
-#: src/common/tuklib_exit.c:40
+#: src/lzmainfo/lzmainfo.c
+#, c-format
+msgid ""
+"Usage: %s [--help] [--version] [FILE]...\n"
+"Show information stored in the .lzma file header"
+msgstr ""
+"Składnia: %s [--help] [--version] [PLIK]...\n"
+"Wyświetlanie informacji zapisanych w nagłówku pliku .lzma"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "File is too small to be a .lzma file"
+msgstr "Plik jest za mały, aby był plikiem .lzma"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "Not a .lzma file"
+msgstr "To nie jest plik .lzma"
+
+#: src/common/tuklib_exit.c
msgid "Writing to standard output failed"
msgstr "Zapis na standardowe wyjście nie powiódł się"
-#: src/common/tuklib_exit.c:43
+#: src/common/tuklib_exit.c
msgid "Unknown error"
msgstr "Nieznany błąd"
+
+#~ msgid "Failed to enable the sandbox"
+#~ msgstr "Nie udało się włączyć piaskownicy"
diff --git a/po/pt.gmo b/po/pt.gmo
index cde956d..7499ab7 100644
--- a/po/pt.gmo
+++ b/po/pt.gmo
Binary files differ
diff --git a/po/pt.po b/po/pt.po
index fe8892d..5a36570 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: xz 5.2.4\n"
"Report-Msgid-Bugs-To: xz@tukaani.org\n"
-"POT-Creation-Date: 2023-10-31 22:33+0800\n"
+"POT-Creation-Date: 2024-05-29 17:41+0300\n"
"PO-Revision-Date: 2019-09-27 08:08+0100\n"
"Last-Translator: Pedro Albuquerque <palbuquerque73@gmail.com>\n"
"Language-Team: Portuguese <translation-team-pt@lists.sourceforge.net>\n"
@@ -19,147 +19,181 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Gtranslator 2.91.7\n"
-#: src/xz/args.c:77
+#: src/xz/args.c
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr "%s: argumento inválido para --block-list"
-#: src/xz/args.c:87
+#: src/xz/args.c
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s: demasiados argumentos para --block-list"
-#: src/xz/args.c:116
+#: src/xz/args.c
+#, c-format
+msgid "In --block-list, block size is missing after filter chain number '%c:'"
+msgstr ""
+
+#: src/xz/args.c
msgid "0 can only be used as the last element in --block-list"
msgstr "0 só pode ser usado como o último elemento em --block-list"
-#: src/xz/args.c:451
+#: src/xz/args.c
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s: tipo de formato de ficheiro desconhecido"
-#: src/xz/args.c:474 src/xz/args.c:482
+#: src/xz/args.c
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s: tipo de verificação de integridade não suportado"
-#: src/xz/args.c:518
-msgid "Only one file can be specified with `--files' or `--files0'."
+#: src/xz/args.c
+#, fuzzy
+#| msgid "Only one file can be specified with `--files' or `--files0'."
+msgid "Only one file can be specified with '--files' or '--files0'."
msgstr "Só pode especificar um ficheiro com \"--files\" ou \"--files0\"."
#. TRANSLATORS: This is a translatable
#. string because French needs a space
#. before the colon ("%s : %s").
-#: src/xz/args.c:533 src/xz/coder.c:692 src/xz/coder.c:708 src/xz/coder.c:968
-#: src/xz/coder.c:971 src/xz/file_io.c:605 src/xz/file_io.c:679
-#: src/xz/file_io.c:769 src/xz/file_io.c:940 src/xz/list.c:369
-#: src/xz/list.c:415 src/xz/list.c:477 src/xz/list.c:581 src/xz/list.c:590
+#: src/xz/args.c src/xz/coder.c src/xz/file_io.c src/xz/list.c
#, fuzzy, c-format
#| msgid "%s: "
msgid "%s: %s"
msgstr "%s: "
-#: src/xz/args.c:589
+#: src/xz/args.c
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "A variável de ambiente %s contém demasiados argumentos"
-#: src/xz/args.c:691
+#: src/xz/args.c
msgid "Compression support was disabled at build time"
msgstr "O suporte a compressão foi desactivado ao compilar"
-#: src/xz/args.c:698
+#: src/xz/args.c
msgid "Decompression support was disabled at build time"
msgstr "O suporte a descompressão foi desactivado ao compilar"
-#: src/xz/args.c:704
+#: src/xz/args.c
msgid "Compression of lzip files (.lz) is not supported"
msgstr ""
-#: src/xz/args.c:735
+#: src/xz/args.c
+msgid "--block-list is ignored unless compressing to the .xz format"
+msgstr ""
+
+#: src/xz/args.c
#, fuzzy
#| msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "%s: com --format=raw, --suffix=.SUF é requerido, a menos que seja escrito em stdout"
-#: src/xz/coder.c:115
+#: src/xz/coder.c
msgid "Maximum number of filters is four"
msgstr "O número máximo de filtros é quatro"
-#: src/xz/coder.c:135
+#: src/xz/coder.c
+#, c-format
+msgid "Error in --filters%s=FILTERS option:"
+msgstr ""
+
+#: src/xz/coder.c
msgid "Memory usage limit is too low for the given filter setup."
msgstr "O limite de uso de memória é baixo demais para a configuração de filtro dada."
-#: src/xz/coder.c:170
+#: src/xz/coder.c
+#, c-format
+msgid "filter chain %u used by --block-list but not specified with --filters%u="
+msgstr ""
+
+#: src/xz/coder.c
msgid "Using a preset in raw mode is discouraged."
msgstr "O uso de uma predefinição em modo bruto é desencorajado."
-#: src/xz/coder.c:172
+#: src/xz/coder.c
msgid "The exact options of the presets may vary between software versions."
msgstr "As opções exactas de predefinições podem variar entre versões do programa."
-#: src/xz/coder.c:195
+#: src/xz/coder.c
msgid "The .lzma format supports only the LZMA1 filter"
msgstr "O formato .lzma tem só suporta o filtro LZMA1"
-#: src/xz/coder.c:203
+#: src/xz/coder.c
msgid "LZMA1 cannot be used with the .xz format"
msgstr "Impossível utilizar LZMA1 com o formato .xz"
-#: src/xz/coder.c:220
-msgid "The filter chain is incompatible with --flush-timeout"
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "The filter chain is incompatible with --flush-timeout"
+msgid "Filter chain %u is incompatible with --flush-timeout"
msgstr "A cadeia de filtros é incompatível com --flush-timeout"
-#: src/xz/coder.c:226
+#: src/xz/coder.c
msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr "A mudar para o modo de linha única devido a --flush-timeout"
-#: src/xz/coder.c:250
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Unsupported options"
+msgid "Unsupported options in filter chain %u"
+msgstr "Opções não suportadas"
+
+#: src/xz/coder.c
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "A usar até %<PRIu32> linhas."
-#: src/xz/coder.c:266
+#: src/xz/coder.c
msgid "Unsupported filter chain or filter options"
msgstr "Opções de filtro ou cadeia de filtros não suportadas"
-#: src/xz/coder.c:278
+#: src/xz/coder.c
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "A descompressão precisará de %s MiB de memória."
-#: src/xz/coder.c:310
+#: src/xz/coder.c
#, fuzzy, c-format
#| msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgstr "Ajustado o número de linhas de %s de %s para não exceder o limite de uso de memória de %s MiB"
-#: src/xz/coder.c:330
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway."
msgstr ""
-#: src/xz/coder.c:357
+#: src/xz/coder.c
#, fuzzy, c-format
#| msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB"
msgstr "Ajustado o número de linhas de %s de %s para não exceder o limite de uso de memória de %s MiB"
-#: src/xz/coder.c:412
+#: src/xz/coder.c
#, c-format
msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
msgstr "Ajustado o tamanho de dicionário de LZMA%c de %s MiB para %s MiB para não exceder o limite de uso de memória de %s MiB"
-#: src/xz/file_io.c:110 src/xz/file_io.c:118
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgid "Adjusted LZMA%c dictionary size for --filters%u from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgstr "Ajustado o tamanho de dicionário de LZMA%c de %s MiB para %s MiB para não exceder o limite de uso de memória de %s MiB"
+
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Error creating a pipe: %s"
+msgid "Error changing to filter chain %u: %s"
+msgstr "Erro ao criar um túnel: %s"
+
+#: src/xz/file_io.c
#, c-format
msgid "Error creating a pipe: %s"
msgstr "Erro ao criar um túnel: %s"
-#: src/xz/file_io.c:252
-msgid "Failed to enable the sandbox"
-msgstr "Falha ao activar a Sandbox"
-
-#: src/xz/file_io.c:294
+#: src/xz/file_io.c
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s: poll() falhou: %s"
@@ -174,275 +208,275 @@ msgstr "%s: poll() falhou: %s"
#. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously
#. shouldn't be removed.
-#: src/xz/file_io.c:361
+#: src/xz/file_io.c
#, c-format
msgid "%s: File seems to have been moved, not removing"
msgstr "%s: o ficheiro parece ter sido movido, não será eliminado"
-#: src/xz/file_io.c:368 src/xz/file_io.c:924
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: impossível remover: %s"
-#: src/xz/file_io.c:394
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: impossível definir o proprietário do ficheiro: %s"
-#: src/xz/file_io.c:407
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: impossível definir o grupo do ficheiro: %s"
-#: src/xz/file_io.c:426
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: impossível definir as permissões do ficheiro: %s"
-#: src/xz/file_io.c:552
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "Erro ao obter as bandeiras de estado da entrada padrão: %s"
-#: src/xz/file_io.c:610 src/xz/file_io.c:672
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: é uma ligação simbólica, a ignorar"
-#: src/xz/file_io.c:701
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: é uma pasta, a ignorar"
-#: src/xz/file_io.c:707
+#: src/xz/file_io.c
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: não é um ficheiro normal, a ignorar"
-#: src/xz/file_io.c:724
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s: o ficheiro tem o bit setuid ou setgid definido, a ignorar"
-#: src/xz/file_io.c:731
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s: o ficheiro tem o bit sticky definido, a ignorar"
-#: src/xz/file_io.c:738
+#: src/xz/file_io.c
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s: o ficheiro de entrada tem mais de uma ligação absoluta, a ignorar"
-#: src/xz/file_io.c:780
+#: src/xz/file_io.c
msgid "Empty filename, skipping"
msgstr "Nome de ficheiro vazio, a ignorar"
-#: src/xz/file_io.c:834
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "Erro ao restaurar as bandeiras de estado para a entrada padrão: %s"
-#: src/xz/file_io.c:882
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "Erro ao obter as bandeiras de estado do ficheiro da saída padrão: %s"
-#: src/xz/file_io.c:1081
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "Erro ao restaurar a bandeira O_APPEND para a saída padrão: %s"
-#: src/xz/file_io.c:1093
+#: src/xz/file_io.c
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: falha ao fechar o ficheiro: %s"
-#: src/xz/file_io.c:1129 src/xz/file_io.c:1391
+#: src/xz/file_io.c
#, c-format
msgid "%s: Seeking failed when trying to create a sparse file: %s"
msgstr "%s: falha na procura ao tentar criar um ficheiro escasso: %s"
-#: src/xz/file_io.c:1229
+#: src/xz/file_io.c
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: erro de leitura: %s"
-#: src/xz/file_io.c:1259
+#: src/xz/file_io.c
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: erro ao procurar o ficheiro: %s"
-#: src/xz/file_io.c:1283
+#: src/xz/file_io.c
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: fim de ficheiro inesperado"
-#: src/xz/file_io.c:1342
+#: src/xz/file_io.c
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: erro de escrita: %s"
-#: src/xz/hardware.c:238
+#: src/xz/hardware.c
msgid "Disabled"
msgstr "Desactivado"
# Espaços adicionados para manter alinhamento com mensagens adjacentes -- Rafael
-#: src/xz/hardware.c:269
+#: src/xz/hardware.c
#, fuzzy
#| msgid "Total amount of physical memory (RAM): "
msgid "Amount of physical memory (RAM):"
msgstr "Quantidade total de memória física (RAM): "
-#: src/xz/hardware.c:270
+#: src/xz/hardware.c
msgid "Number of processor threads:"
msgstr ""
-#: src/xz/hardware.c:271
+#: src/xz/hardware.c
msgid "Compression:"
msgstr ""
-#: src/xz/hardware.c:272
+#: src/xz/hardware.c
msgid "Decompression:"
msgstr ""
# Espaços reduzidos para manter alinhamento com mensagens adjacentes -- Rafael
-#: src/xz/hardware.c:273
+#: src/xz/hardware.c
#, fuzzy
#| msgid "Memory usage limit for decompression: "
msgid "Multi-threaded decompression:"
msgstr "Limite de uso de memória para descompressão: "
-#: src/xz/hardware.c:274
+#: src/xz/hardware.c
msgid "Default for -T0:"
msgstr ""
-#: src/xz/hardware.c:292
+#: src/xz/hardware.c
msgid "Hardware information:"
msgstr ""
-#: src/xz/hardware.c:299
+#: src/xz/hardware.c
#, fuzzy
#| msgid "Memory usage limit reached"
msgid "Memory usage limits:"
msgstr "Limite de uso de memória alcançado"
-#: src/xz/list.c:68
+#: src/xz/list.c
msgid "Streams:"
msgstr ""
-#: src/xz/list.c:69
+#: src/xz/list.c
msgid "Blocks:"
msgstr ""
-#: src/xz/list.c:70
+#: src/xz/list.c
#, fuzzy
#| msgid " Compressed size: %s\n"
msgid "Compressed size:"
msgstr " Tam. comprimido: %s\n"
-#: src/xz/list.c:71
+#: src/xz/list.c
#, fuzzy
#| msgid " Uncompressed size: %s\n"
msgid "Uncompressed size:"
msgstr " Tam. descomprimido: %s\n"
-#: src/xz/list.c:72
+#: src/xz/list.c
msgid "Ratio:"
msgstr ""
-#: src/xz/list.c:73
+#: src/xz/list.c
msgid "Check:"
msgstr ""
-#: src/xz/list.c:74
+#: src/xz/list.c
#, fuzzy
#| msgid " Stream padding: %s\n"
msgid "Stream Padding:"
msgstr " Espaço do fluxo: %s\n"
-#: src/xz/list.c:75
+#: src/xz/list.c
#, fuzzy
#| msgid " Memory needed: %s MiB\n"
msgid "Memory needed:"
msgstr " Memória requerida: %s MiB\n"
# Espaço adicionado para promover alinhamento, vide "xz -lvv foo.xz"
-#: src/xz/list.c:76
+#: src/xz/list.c
#, fuzzy
#| msgid " Sizes in headers: %s\n"
msgid "Sizes in headers:"
msgstr " Tam. em cabeçalhos: %s\n"
-#: src/xz/list.c:79
+#: src/xz/list.c
#, fuzzy
#| msgid " Number of files: %s\n"
msgid "Number of files:"
msgstr " Nº. de ficheiros: %s\n"
-#: src/xz/list.c:122
+#: src/xz/list.c
msgid "Stream"
msgstr ""
-#: src/xz/list.c:123
+#: src/xz/list.c
msgid "Block"
msgstr ""
-#: src/xz/list.c:124
+#: src/xz/list.c
msgid "Blocks"
msgstr ""
-#: src/xz/list.c:125
+#: src/xz/list.c
msgid "CompOffset"
msgstr ""
-#: src/xz/list.c:126
+#: src/xz/list.c
msgid "UncompOffset"
msgstr ""
-#: src/xz/list.c:127
+#: src/xz/list.c
msgid "CompSize"
msgstr ""
-#: src/xz/list.c:128
+#: src/xz/list.c
msgid "UncompSize"
msgstr ""
-#: src/xz/list.c:129
+#: src/xz/list.c
#, fuzzy
#| msgid "Totals:"
msgid "TotalSize"
msgstr "Totais:"
-#: src/xz/list.c:130
+#: src/xz/list.c
msgid "Ratio"
msgstr ""
-#: src/xz/list.c:131
+#: src/xz/list.c
msgid "Check"
msgstr ""
-#: src/xz/list.c:132
+#: src/xz/list.c
msgid "CheckVal"
msgstr ""
-#: src/xz/list.c:133
+#: src/xz/list.c
msgid "Padding"
msgstr ""
-#: src/xz/list.c:134
+#: src/xz/list.c
msgid "Header"
msgstr ""
-#: src/xz/list.c:135
+#: src/xz/list.c
msgid "Flags"
msgstr ""
-#: src/xz/list.c:136
+#: src/xz/list.c
msgid "MemUsage"
msgstr ""
-#: src/xz/list.c:137
+#: src/xz/list.c
msgid "Filters"
msgstr ""
@@ -450,7 +484,7 @@ msgstr ""
#. This string is used in tables. In older xz version this
#. string was limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:169
+#: src/xz/list.c
msgid "None"
msgstr "Nenhum"
@@ -458,71 +492,71 @@ msgstr "Nenhum"
#. but the Check ID is known (here 2). In older xz version these
#. strings were limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:175
+#: src/xz/list.c
msgid "Unknown-2"
msgstr "SemNome-2"
# Não exceder 10 caracteres e espaços não são permitidos -- Rafael
-#: src/xz/list.c:176
+#: src/xz/list.c
msgid "Unknown-3"
msgstr "SemNome-3"
# Não exceder 10 caracteres e espaços não são permitidos -- Rafael
-#: src/xz/list.c:178
+#: src/xz/list.c
msgid "Unknown-5"
msgstr "SemNome-5"
# Não exceder 10 caracteres e espaços não são permitidos -- Rafael
-#: src/xz/list.c:179
+#: src/xz/list.c
msgid "Unknown-6"
msgstr "SemNome-6"
# Não exceder 10 caracteres e espaços não são permitidos -- Rafael
-#: src/xz/list.c:180
+#: src/xz/list.c
msgid "Unknown-7"
msgstr "SemNome-7"
# Não exceder 10 caracteres e espaços não são permitidos -- Rafael
-#: src/xz/list.c:181
+#: src/xz/list.c
msgid "Unknown-8"
msgstr "SemNome-8"
# Não exceder 10 caracteres e espaços não são permitidos -- Rafael
-#: src/xz/list.c:182
+#: src/xz/list.c
msgid "Unknown-9"
msgstr "SemNome-9"
# Não exceder 10 caracteres e espaços não são permitidos -- Rafael
-#: src/xz/list.c:184
+#: src/xz/list.c
msgid "Unknown-11"
msgstr "SemNome-11"
# Não exceder 10 caracteres e espaços não são permitidos -- Rafael
-#: src/xz/list.c:185
+#: src/xz/list.c
msgid "Unknown-12"
msgstr "SemNome-12"
# Não exceder 10 caracteres e espaços não são permitidos -- Rafael
-#: src/xz/list.c:186
+#: src/xz/list.c
msgid "Unknown-13"
msgstr "SemNome-13"
# Não exceder 10 caracteres e espaços não são permitidos -- Rafael
-#: src/xz/list.c:187
+#: src/xz/list.c
msgid "Unknown-14"
msgstr "SemNome-14"
# Não exceder 10 caracteres e espaços não são permitidos -- Rafael
-#: src/xz/list.c:188
+#: src/xz/list.c
msgid "Unknown-15"
msgstr "SemNome-15"
-#: src/xz/list.c:351
+#: src/xz/list.c
#, c-format
msgid "%s: File is empty"
msgstr "%s: o ficheiro está vazio"
-#: src/xz/list.c:356
+#: src/xz/list.c
#, c-format
msgid "%s: Too small to be a valid .xz file"
msgstr "%s: muito pequeno para um ficheiro .xz válido"
@@ -531,64 +565,69 @@ msgstr "%s: muito pequeno para um ficheiro .xz válido"
#. 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:731
+#: src/xz/list.c
msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename"
msgstr "Fluxos Blocos Comprimido Descomprimido Rácio Verif. Nome de ficheiro"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "Yes"
msgstr "Sim"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "No"
msgstr "Não"
-#: src/xz/list.c:1028 src/xz/list.c:1206
+#: src/xz/list.c
#, c-format
msgid " Minimum XZ Utils version: %s\n"
msgstr " Versão mínima do XZ Utils: %s\n"
#. TRANSLATORS: %s is an integer. Only the plural form of this
#. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz".
-#: src/xz/list.c:1179
+#: src/xz/list.c
#, c-format
msgid "%s file\n"
msgid_plural "%s files\n"
msgstr[0] "%s ficheiro\n"
msgstr[1] "%s ficheiros\n"
-#: src/xz/list.c:1192
+#: src/xz/list.c
msgid "Totals:"
msgstr "Totais:"
-#: src/xz/list.c:1270
+#: src/xz/list.c
msgid "--list works only on .xz files (--format=xz or --format=auto)"
msgstr "--list só funciona em ficheiros .xz (--format=xz ou --format=auto)"
-#: src/xz/list.c:1276
+#: src/xz/list.c
+msgid "Try 'lzmainfo' with .lzma files."
+msgstr ""
+
+#: src/xz/list.c
msgid "--list does not support reading from standard input"
msgstr "--list não suporta a leitura da entrada padrão"
-#: src/xz/main.c:89
+#: src/xz/main.c
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s: erro ao ler nomes de ficheiro: %s"
-#: src/xz/main.c:96
+#: src/xz/main.c
#, c-format
msgid "%s: Unexpected end of input when reading filenames"
msgstr "%s: fim de entrada inesperado ao ler nomes de ficheiros"
-#: src/xz/main.c:120
-#, c-format
-msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
+#: src/xz/main.c
+#, fuzzy, c-format
+#| msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
+msgid "%s: Null character found when reading filenames; maybe you meant to use '--files0' instead of '--files'?"
msgstr "%s: encontrado carácter nulo ao ler nomes de ficheiro; talvez queira usar \"--files0\" em vez de \"--files\"?"
-#: src/xz/main.c:188
+#: src/xz/main.c
msgid "Compression and decompression with --robot are not supported yet."
msgstr "Compressão e descompressão com --robot ainda não são suportadas."
-#: src/xz/main.c:266
+#: src/xz/main.c
msgid "Cannot read data from standard input when reading filenames from standard input"
msgstr "Impossível ler dados da entrada padrão ao ler nomes de ficheiro da entrada padrão"
@@ -596,68 +635,69 @@ msgstr "Impossível ler dados da entrada padrão ao ler nomes de ficheiro da ent
#. 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:670 src/xz/message.c:725
+#: src/xz/message.c
#, c-format
msgid "%s: "
msgstr "%s: "
-#: src/xz/message.c:797 src/xz/message.c:856
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
msgid "Internal error (bug)"
msgstr "Erro interno (erro)"
-#: src/xz/message.c:804
+#: src/xz/message.c
msgid "Cannot establish signal handlers"
msgstr "Impossível estabelecer gestores de sinais"
-#: src/xz/message.c:813
+#: src/xz/message.c
msgid "No integrity check; not verifying file integrity"
msgstr "Sem teste de integridade; a integridade do ficheiro não será verificada"
-#: src/xz/message.c:816
+#: src/xz/message.c
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "Tipo de verificação de integridade não suportada; a integridade do ficheiro não será verificada"
-#: src/xz/message.c:823
+#: src/xz/message.c
msgid "Memory usage limit reached"
msgstr "Limite de uso de memória alcançado"
-#: src/xz/message.c:826
+#: src/xz/message.c
msgid "File format not recognized"
msgstr "Formato de ficheiro não reconhecido"
-#: src/xz/message.c:829
+#: src/xz/message.c
msgid "Unsupported options"
msgstr "Opções não suportadas"
-#: src/xz/message.c:832
+#: src/xz/message.c
msgid "Compressed data is corrupt"
msgstr "Os dados comprimidos estão corrompidos"
-#: src/xz/message.c:835
+#: src/xz/message.c
msgid "Unexpected end of input"
msgstr "Fim de entrada inesperado"
-#: src/xz/message.c:877
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "São necessários %s MiB de memória. O limitador está desactivado."
-#: src/xz/message.c:905
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr "São necessários %s MiB de memória. O limite é %s."
-#: src/xz/message.c:924
+#: src/xz/message.c
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: cadeia de filtros: %s\n"
-#: src/xz/message.c:935
-#, c-format
-msgid "Try `%s --help' for more information."
+#: src/xz/message.c
+#, fuzzy, c-format
+#| msgid "Try `%s --help' for more information."
+msgid "Try '%s --help' for more information."
msgstr "Tente \"%s --help\" para mais informações."
-#: src/xz/message.c:961
+#: src/xz/message.c
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
@@ -668,17 +708,17 @@ msgstr ""
"Comprime ou descomprime FICHEIROs no formato .xz.\n"
"\n"
-#: src/xz/message.c:968
+#: src/xz/message.c
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr ""
"Argumentos obrigatórios para opções longas são também obrigatórios para\n"
"opções curtas.\n"
-#: src/xz/message.c:972
+#: src/xz/message.c
msgid " Operation mode:\n"
msgstr " Modo de operação:\n"
-#: src/xz/message.c:975
+#: src/xz/message.c
msgid ""
" -z, --compress force compression\n"
" -d, --decompress force decompression\n"
@@ -690,7 +730,7 @@ msgstr ""
" -t, --test testa a integridade do ficheiro comprimido\n"
" -l, --list lista informações sobre ficheiros .xz"
-#: src/xz/message.c:981
+#: src/xz/message.c
msgid ""
"\n"
" Operation modifiers:\n"
@@ -698,7 +738,7 @@ msgstr ""
"\n"
" Modificadores de operações:\n"
-#: src/xz/message.c:984
+#: src/xz/message.c
msgid ""
" -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\n"
@@ -710,7 +750,7 @@ msgstr ""
" -c, --stdout escreve na saída padrão e não elimina os ficheiros de\n"
" entrada"
-#: src/xz/message.c:993
+#: src/xz/message.c
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
@@ -718,10 +758,18 @@ msgstr ""
" --single-stream descomprime só o primeiro fluxo e ignora silenciosamente\n"
" possíveis dados de entrada restantes"
-#: src/xz/message.c:996
+#: src/xz/message.c
+#, fuzzy
+#| 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"
msgid ""
" --no-sparse do not create sparse files when decompressing\n"
-" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
+" -S, --suffix=.SUF use the suffix '.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n"
" omitted, filenames are read from the standard input;\n"
" filenames must be terminated with the newline character\n"
@@ -735,7 +783,7 @@ msgstr ""
" devem ser terminados com o carácter de nova linha\n"
" --files0[=FICH] igual a --files, mas usa o carácter nulo como terminador"
-#: src/xz/message.c:1005
+#: src/xz/message.c
msgid ""
"\n"
" Basic file format and compression options:\n"
@@ -743,7 +791,7 @@ msgstr ""
"\n"
" Opções básicas de formato e compressão de ficheiro:\n"
-#: src/xz/message.c:1007
+#: src/xz/message.c
#, fuzzy
#| msgid ""
#| " -F, --format=FMT file format to encode or decode; possible values are\n"
@@ -752,9 +800,9 @@ msgstr ""
#| " `crc32', `crc64' (default), or `sha256'"
msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n"
-" `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
-" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-" `crc32', `crc64' (default), or `sha256'"
+" 'auto' (default), 'xz', 'lzma', 'lzip', and 'raw'\n"
+" -C, --check=CHECK integrity check type: 'none' (use with caution),\n"
+" 'crc32', 'crc64' (default), or 'sha256'"
msgstr ""
" -F, --format=FMT formato de ficheiro a codificar ou descodificar; os\n"
" valores possíveis são \"auto\" (predefinição), \"xz\",\n"
@@ -762,11 +810,11 @@ msgstr ""
" -C, --check=TESTE tipo de teste de integridade: \"none\" (cuidado!),\n"
" \"crc32\", \"crc64\" (predefinição) ou \"sha256\""
-#: src/xz/message.c:1012
+#: src/xz/message.c
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr " --ignore-check não verifica a integridade ao descomprimir"
-#: src/xz/message.c:1016
+#: src/xz/message.c
msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!"
@@ -775,7 +823,7 @@ msgstr ""
" conta o uso de memória do compressor *e* descompressor\n"
" antes de usar 7-9!"
-#: src/xz/message.c:1020
+#: src/xz/message.c
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
@@ -783,16 +831,20 @@ msgstr ""
" -e, --extreme tenta melhorar o rácio de compressão usando mais tempo de\n"
" CPU; não afecta os requisitos de memória do descompressor"
-#: src/xz/message.c:1024
+#: src/xz/message.c
+#, fuzzy
+#| 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"
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"
+" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
+" as many threads as there are processor cores"
msgstr ""
" -T, --threads=NÚM usa no máximo NÚM linhas; a predefinição é 1; defina para\n"
" 0 para usar tantas linhas como núcleos de processadores\n"
" haja"
-#: src/xz/message.c:1029
+#: src/xz/message.c
msgid ""
" --block-size=SIZE\n"
" start a new .xz block after every SIZE bytes of input;\n"
@@ -803,17 +855,24 @@ msgstr ""
" use para definir o tamanho de bloco para compressão com\n"
" linhas"
-#: src/xz/message.c:1033
+#: src/xz/message.c
+#, fuzzy
+#| msgid ""
+#| " --block-list=SIZES\n"
+#| " start a new .xz block after the given comma-separated\n"
+#| " intervals of uncompressed data"
msgid ""
-" --block-list=SIZES\n"
+" --block-list=BLOCKS\n"
" start a new .xz block after the given comma-separated\n"
-" intervals of uncompressed data"
+" intervals of uncompressed data; optionally, specify a\n"
+" filter chain number (0-9) followed by a ':' before the\n"
+" uncompressed data size"
msgstr ""
" --block-list=TAM\n"
" inicia um novo bloco .xz após os intervalos dados,\n"
" separados por vírgulas, de dados descomprimidos"
-#: src/xz/message.c:1037
+#: src/xz/message.c
msgid ""
" --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n"
@@ -826,7 +885,7 @@ msgstr ""
" entrada bloquearia, todos os dados pendentes serão\n"
" despejados"
-#: src/xz/message.c:1043
+#: src/xz/message.c
#, fuzzy, no-c-format
#| msgid ""
#| " --memlimit-compress=LIMIT\n"
@@ -850,7 +909,7 @@ msgstr ""
" descompressão ou ambos; LIMITE é em bytes, % de RAM ou 0\n"
" para predefinições"
-#: src/xz/message.c:1052
+#: src/xz/message.c
msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards"
@@ -859,7 +918,7 @@ msgstr ""
" uso de memória, devolve um erro em vez de reduzir as\n"
" configurações"
-#: src/xz/message.c:1058
+#: src/xz/message.c
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
@@ -867,7 +926,27 @@ msgstr ""
"\n"
" Cadeia de filtros personalizada para compressão (alternativa às predefinições):"
-#: src/xz/message.c:1067
+#: src/xz/message.c
+msgid ""
+"\n"
+" --filters=FILTERS set the filter chain using the liblzma filter string\n"
+" syntax; use --filters-help for more information"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters1=FILTERS ... --filters9=FILTERS\n"
+" set additional filter chains using the liblzma filter\n"
+" string syntax to use with --block-list"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters-help display more information about the liblzma filter string\n"
+" syntax and exit."
+msgstr ""
+
+#: src/xz/message.c
msgid ""
"\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
@@ -899,7 +978,7 @@ msgstr ""
" depth=NUM máximo de profundidade de pesquisa;\n"
" 0=automatic (predefinição)"
-#: src/xz/message.c:1082
+#: src/xz/message.c
#, fuzzy
#| msgid ""
#| "\n"
@@ -920,6 +999,7 @@ msgid ""
" --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
" --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
" --sparc[=OPTS] SPARC BCJ filter\n"
+" --riscv[=OPTS] RISC-V BCJ filter\n"
" Valid OPTS for all BCJ filters:\n"
" start=NUM start offset for conversions (default=0)"
msgstr ""
@@ -934,7 +1014,7 @@ msgstr ""
" start=NUM desvio inicial para conversões\n"
" (predefinição=0)"
-#: src/xz/message.c:1095
+#: src/xz/message.c
msgid ""
"\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n"
@@ -947,7 +1027,7 @@ msgstr ""
" dist=NÚM distância entre bytes a serem subtraídos\n"
" de cada um (1-256; 1)"
-#: src/xz/message.c:1103
+#: src/xz/message.c
msgid ""
"\n"
" Other options:\n"
@@ -955,7 +1035,7 @@ msgstr ""
"\n"
" Outras opções:\n"
-#: src/xz/message.c:1106
+#: src/xz/message.c
msgid ""
" -q, --quiet suppress warnings; specify twice to suppress errors too\n"
" -v, --verbose be verbose; specify twice for even more verbose"
@@ -963,15 +1043,15 @@ msgstr ""
" -q, --quiet suprime avisos, use duas vezes para suprimir também erros\n"
" -v, --verbose é verboso; use duas vezes para ainda mais verbosidade"
-#: src/xz/message.c:1111
+#: src/xz/message.c
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr " -Q, --no-warn fazer avisos não afecta o estado da saída"
-#: src/xz/message.c:1113
+#: src/xz/message.c
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr " --robot usa mensagens analisáveis por máquina (útil para scripts)"
-#: src/xz/message.c:1116
+#: src/xz/message.c
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
@@ -979,7 +1059,7 @@ msgstr ""
" --info-memory mostra a quantidade total de RAM e os limites de uso\n"
" de memória actualmente activos e sai"
-#: src/xz/message.c:1119
+#: src/xz/message.c
msgid ""
" -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit"
@@ -987,7 +1067,7 @@ msgstr ""
" -h, --help mostra a ajuda curta (lista só as opções básicas)\n"
" -H, --long-help mostra esta mensagem de ajuda e sai"
-#: src/xz/message.c:1123
+#: src/xz/message.c
msgid ""
" -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)"
@@ -995,11 +1075,12 @@ msgstr ""
" -h, --help mostra esta mensagem de ajuda e sai\n"
" -H, --long-help mostra a ajuda longa (lista também as opções avançadas)"
-#: src/xz/message.c:1128
+#: src/xz/message.c
msgid " -V, --version display the version number and exit"
msgstr " -V, --version mostra o número da versão e sai"
-#: src/xz/message.c:1130
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
+#, c-format
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
@@ -1011,96 +1092,135 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks.
-#: src/xz/message.c:1136
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr ""
"Reporte erros em <%s> (em inglês ou finlandês).\n"
"Relate erros de tradução em <translation-team-pt@lists.sourceforge.net>.\n"
-#: src/xz/message.c:1138
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Página inicial %s: <%s>\n"
-#: src/xz/message.c:1142
+#: src/xz/message.c
msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
msgstr "ESTA É UMA VERSÃO DE DESENVOLVIMENTO NÃO DESTINADA A USO EM PRODUÇÃO."
-#: src/xz/options.c:86
-#, c-format
-msgid "%s: Options must be `name=value' pairs separated with commas"
+#: src/xz/message.c
+msgid ""
+"Filter chains are set using the --filters=FILTERS or\n"
+"--filters1=FILTERS ... --filters9=FILTERS options. Each filter in the chain\n"
+"can be separated by spaces or '--'. Alternatively a preset <0-9>[e] can be\n"
+"specified instead of a filter chain.\n"
+msgstr ""
+
+#: src/xz/message.c
+#, fuzzy
+#| msgid "Unsupported filter chain or filter options"
+msgid "The supported filters and their options are:"
+msgstr "Opções de filtro ou cadeia de filtros não suportadas"
+
+#: src/xz/options.c
+#, fuzzy, c-format
+#| msgid "%s: Options must be `name=value' pairs separated with commas"
+msgid "%s: Options must be 'name=value' pairs separated with commas"
msgstr "%s: as opções devem ser pares \"nome=valor\" separados por vírgulas"
-#: src/xz/options.c:93
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option name"
msgstr "%s: nome de opção inválido"
-#: src/xz/options.c:113
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option value"
msgstr "%s: valor de opção inválido"
-#: src/xz/options.c:248
+#: src/xz/options.c
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "Predefinição LZMA1/LZMA2 não suportada: %s"
-#: src/xz/options.c:356
+#: src/xz/options.c
msgid "The sum of lc and lp must not exceed 4"
msgstr "A soma de lc e lp não deve exceder 4"
-#: src/xz/suffix.c:160
+#: src/xz/suffix.c
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: nome de ficheiro com sufixo desconhecido, a ignorar"
-#: src/xz/suffix.c:181
-#, c-format
-msgid "%s: File already has `%s' suffix, skipping"
+#: src/xz/suffix.c
+#, fuzzy, c-format
+#| msgid "%s: File already has `%s' suffix, skipping"
+msgid "%s: File already has '%s' suffix, skipping"
msgstr "%s: o ficheiro já tem o sufixo \"%s\", a ignorar"
-#: src/xz/suffix.c:388
+#: src/xz/suffix.c
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s: sufixo de nome de ficheiro inválido"
-#: src/xz/util.c:107
+#: src/xz/util.c
#, c-format
msgid "%s: Value is not a non-negative decimal integer"
msgstr "%s: o valor não é um inteiro decimal não-negativo"
-#: src/xz/util.c:149
+#: src/xz/util.c
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s: sufixo multiplicador inválido"
-#: src/xz/util.c:151
-msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+#: src/xz/util.c
+#, fuzzy
+#| msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+msgid "Valid suffixes are 'KiB' (2^10), 'MiB' (2^20), and 'GiB' (2^30)."
msgstr "Sufixos válidos são \"KiB\" (2^10), \"MiB\" (2^20) e \"GiB\" (2^30)."
-#: src/xz/util.c:168
-#, c-format
-msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+#: src/xz/util.c
+#, fuzzy, c-format
+#| msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+msgid "Value of the option '%s' must be in the range [%<PRIu64>, %<PRIu64>]"
msgstr "O valor da opção \"%s\" deve estar no intervalo [%<PRIu64>, %<PRIu64>]"
-#: src/xz/util.c:270
+#: src/xz/util.c
msgid "Compressed data cannot be read from a terminal"
msgstr "Dados comprimidos não podem ser lidos de um terminal"
-#: src/xz/util.c:283
+#: src/xz/util.c
msgid "Compressed data cannot be written to a terminal"
msgstr "Dados comprimidos não podem ser escritos num terminal"
-#: src/common/tuklib_exit.c:40
+#: src/lzmainfo/lzmainfo.c
+#, c-format
+msgid ""
+"Usage: %s [--help] [--version] [FILE]...\n"
+"Show information stored in the .lzma file header"
+msgstr ""
+
+#: src/lzmainfo/lzmainfo.c
+#, fuzzy
+#| msgid "%s: Too small to be a valid .xz file"
+msgid "File is too small to be a .lzma file"
+msgstr "%s: muito pequeno para um ficheiro .xz válido"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "Not a .lzma file"
+msgstr ""
+
+#: src/common/tuklib_exit.c
msgid "Writing to standard output failed"
msgstr "A escrita para a saída padrão falhou"
-#: src/common/tuklib_exit.c:43
+#: src/common/tuklib_exit.c
msgid "Unknown error"
msgstr "Erro desconhecido"
+#~ msgid "Failed to enable the sandbox"
+#~ msgstr "Falha ao activar a Sandbox"
+
# Espaços adicionados para manter alinhamento com mensagens adjacentes -- Rafael
#~ msgid "Memory usage limit for compression: "
#~ msgstr "Limite de uso de memória para compressão: "
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index 2a77d33..c431a48 100644
--- a/po/pt_BR.gmo
+++ b/po/pt_BR.gmo
Binary files differ
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 766f917..78b7904 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: xz 5.4.0-pre2\n"
"Report-Msgid-Bugs-To: xz@tukaani.org\n"
-"POT-Creation-Date: 2023-10-31 22:33+0800\n"
+"POT-Creation-Date: 2024-05-29 17:41+0300\n"
"PO-Revision-Date: 2023-01-12 14:40-0300\n"
"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge.net>\n"
@@ -19,145 +19,179 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
"X-Generator: Gtranslator 42.0\n"
-#: src/xz/args.c:77
+#: src/xz/args.c
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr "%s: Argumento inválido para --block-list"
-#: src/xz/args.c:87
+#: src/xz/args.c
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s: Argumentos demais para --block-list"
-#: src/xz/args.c:116
+#: src/xz/args.c
+#, c-format
+msgid "In --block-list, block size is missing after filter chain number '%c:'"
+msgstr ""
+
+#: src/xz/args.c
msgid "0 can only be used as the last element in --block-list"
msgstr "0 só pode ser usado como o último elemento em --block-list"
-#: src/xz/args.c:451
+#: src/xz/args.c
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s: Tipo de formato de arquivo desconhecido"
-#: src/xz/args.c:474 src/xz/args.c:482
+#: src/xz/args.c
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s: Tipo de verificação de integridade sem suporte"
-#: src/xz/args.c:518
-msgid "Only one file can be specified with `--files' or `--files0'."
+#: src/xz/args.c
+#, fuzzy
+#| msgid "Only one file can be specified with `--files' or `--files0'."
+msgid "Only one file can be specified with '--files' or '--files0'."
msgstr "Somente um arquivo pode ser especificado com \"--files\" ou \"--files0\"."
#. TRANSLATORS: This is a translatable
#. string because French needs a space
#. before the colon ("%s : %s").
-#: src/xz/args.c:533 src/xz/coder.c:692 src/xz/coder.c:708 src/xz/coder.c:968
-#: src/xz/coder.c:971 src/xz/file_io.c:605 src/xz/file_io.c:679
-#: src/xz/file_io.c:769 src/xz/file_io.c:940 src/xz/list.c:369
-#: src/xz/list.c:415 src/xz/list.c:477 src/xz/list.c:581 src/xz/list.c:590
+#: src/xz/args.c src/xz/coder.c src/xz/file_io.c src/xz/list.c
#, fuzzy, c-format
#| msgid "%s: "
msgid "%s: %s"
msgstr "%s: "
-#: src/xz/args.c:589
+#: src/xz/args.c
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "A variável de ambiente %s contém argumentos demais"
-#: src/xz/args.c:691
+#: src/xz/args.c
msgid "Compression support was disabled at build time"
msgstr "Suporte a compressão foi desabilitado em tempo de compilação"
-#: src/xz/args.c:698
+#: src/xz/args.c
msgid "Decompression support was disabled at build time"
msgstr "Suporte a descompressão foi desabilitado em tempo de compilação"
-#: src/xz/args.c:704
+#: src/xz/args.c
msgid "Compression of lzip files (.lz) is not supported"
msgstr "A compactação de arquivos lzip (.lz) não é suportada"
-#: src/xz/args.c:735
+#: src/xz/args.c
+msgid "--block-list is ignored unless compressing to the .xz format"
+msgstr ""
+
+#: src/xz/args.c
#, fuzzy
#| msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "%s: Com --format=raw, --suffix=.SUF é exigido, a menos que esteja escrevendo para stdout"
-#: src/xz/coder.c:115
+#: src/xz/coder.c
msgid "Maximum number of filters is four"
msgstr "O número máximo de filtros é quatro"
-#: src/xz/coder.c:135
+#: src/xz/coder.c
+#, c-format
+msgid "Error in --filters%s=FILTERS option:"
+msgstr ""
+
+#: src/xz/coder.c
msgid "Memory usage limit is too low for the given filter setup."
msgstr "O limite de uso de memória é baixo demais para a configuração de filtro dada."
-#: src/xz/coder.c:170
+#: src/xz/coder.c
+#, c-format
+msgid "filter chain %u used by --block-list but not specified with --filters%u="
+msgstr ""
+
+#: src/xz/coder.c
msgid "Using a preset in raw mode is discouraged."
msgstr "O uso de uma predefinição em modo bruto é desencorajado."
-#: src/xz/coder.c:172
+#: src/xz/coder.c
msgid "The exact options of the presets may vary between software versions."
msgstr "As opções exatas de predefinições podem variar entre versões do software."
-#: src/xz/coder.c:195
+#: src/xz/coder.c
msgid "The .lzma format supports only the LZMA1 filter"
msgstr "O formato .lzma possui suporte apenas ao filtro LZMA1"
-#: src/xz/coder.c:203
+#: src/xz/coder.c
msgid "LZMA1 cannot be used with the .xz format"
msgstr "LZMA1 não pode ser usado com o formato .xz"
-#: src/xz/coder.c:220
-msgid "The filter chain is incompatible with --flush-timeout"
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "The filter chain is incompatible with --flush-timeout"
+msgid "Filter chain %u is incompatible with --flush-timeout"
msgstr "A cadeia de filtros é incompatível com --flush-timeout"
-#: src/xz/coder.c:226
+#: src/xz/coder.c
msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr "Alternando para o modo de thread única por causa de --flush-timeout"
-#: src/xz/coder.c:250
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Unsupported options"
+msgid "Unsupported options in filter chain %u"
+msgstr "Opções sem suporte"
+
+#: src/xz/coder.c
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "Usando até %<PRIu32> threads."
-#: src/xz/coder.c:266
+#: src/xz/coder.c
msgid "Unsupported filter chain or filter options"
msgstr "Opções de filtro ou cadeia de filtros sem suporte"
-#: src/xz/coder.c:278
+#: src/xz/coder.c
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "A descompressão precisará de %s MiB de memória."
-#: src/xz/coder.c:310
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgstr "Reduzido o número de threads de %s para %s para não exceder o limite de uso de memória de %s MiB"
-#: src/xz/coder.c:330
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway."
msgstr "Reduzido o número de threads de %s para um. O limite de uso de memória automática de %s MiB ainda está sendo excedido. %s MiB de memória é necessário. Continuando de qualquer maneira."
-#: src/xz/coder.c:357
+#: src/xz/coder.c
#, c-format
msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB"
msgstr "Alternando para o modo de thread única para não exceder o limite de uso de memória de %s MiB"
-#: src/xz/coder.c:412
+#: src/xz/coder.c
#, c-format
msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
msgstr "Ajustado o tamanho de dicionário de LZMA%c de %s MiB para %s MiB para não exceder o limite de uso de memória de %s MiB"
-#: src/xz/file_io.c:110 src/xz/file_io.c:118
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgid "Adjusted LZMA%c dictionary size for --filters%u from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgstr "Ajustado o tamanho de dicionário de LZMA%c de %s MiB para %s MiB para não exceder o limite de uso de memória de %s MiB"
+
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Error creating a pipe: %s"
+msgid "Error changing to filter chain %u: %s"
+msgstr "Erro ao criar um pipe: %s"
+
+#: src/xz/file_io.c
#, c-format
msgid "Error creating a pipe: %s"
msgstr "Erro ao criar um pipe: %s"
-#: src/xz/file_io.c:252
-msgid "Failed to enable the sandbox"
-msgstr "Falha ao habilitar o sandbox"
-
-#: src/xz/file_io.c:294
+#: src/xz/file_io.c
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s: poll() falhou: %s"
@@ -172,252 +206,252 @@ msgstr "%s: poll() falhou: %s"
#. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously
#. shouldn't be removed.
-#: src/xz/file_io.c:361
+#: src/xz/file_io.c
#, c-format
msgid "%s: File seems to have been moved, not removing"
msgstr "%s: O arquivo parece ter sido movido, não será removido"
-#: src/xz/file_io.c:368 src/xz/file_io.c:924
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: Não foi possível remover: %s"
-#: src/xz/file_io.c:394
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: Não foi possível definir o dono do arquivo: %s"
-#: src/xz/file_io.c:407
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: Não foi possível definir o grupo do arquivo: %s"
-#: src/xz/file_io.c:426
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: Não foi possível definir as permissões do arquivo: %s"
-#: src/xz/file_io.c:552
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "Erro ao obter os sinalizadores de status da entrada padrão: %s"
-#: src/xz/file_io.c:610 src/xz/file_io.c:672
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: É um link simbólico, ignorando"
-#: src/xz/file_io.c:701
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: É um diretório, ignorando"
-#: src/xz/file_io.c:707
+#: src/xz/file_io.c
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: Não é um arquivo comum, ignorando"
-#: src/xz/file_io.c:724
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s: O arquivo possui o bit setuid ou setgid definido, ignorando"
-#: src/xz/file_io.c:731
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s: O arquivo possui o bit sticky definido, ignorando"
-#: src/xz/file_io.c:738
+#: src/xz/file_io.c
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s: O arquivo de entrada possui mais de um link físico, ignorando"
-#: src/xz/file_io.c:780
+#: src/xz/file_io.c
msgid "Empty filename, skipping"
msgstr "Nome de arquivo vazio, ignorando"
-#: src/xz/file_io.c:834
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "Erro ao restaurar os sinalizadores de status para entrada padrão: %s"
-#: src/xz/file_io.c:882
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "Erro ao obter os sinalizadores de status de arquivo da saída padrão: %s"
-#: src/xz/file_io.c:1081
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "Erro ao restaurar o sinalizador O_APPEND para a saída padrão: %s"
-#: src/xz/file_io.c:1093
+#: src/xz/file_io.c
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: Fechamento do arquivo falhou: %s"
-#: src/xz/file_io.c:1129 src/xz/file_io.c:1391
+#: src/xz/file_io.c
#, c-format
msgid "%s: Seeking failed when trying to create a sparse file: %s"
msgstr "%s: Busca falhou ao tentar criar um arquivo esparso: %s"
-#: src/xz/file_io.c:1229
+#: src/xz/file_io.c
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: Erro de leitura: %s"
-#: src/xz/file_io.c:1259
+#: src/xz/file_io.c
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: Erro ao buscar o arquivo: %s"
-#: src/xz/file_io.c:1283
+#: src/xz/file_io.c
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: Fim de arquivo inesperado"
-#: src/xz/file_io.c:1342
+#: src/xz/file_io.c
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: Erro de escrita: %s"
-#: src/xz/hardware.c:238
+#: src/xz/hardware.c
msgid "Disabled"
msgstr "Desabilitado"
-#: src/xz/hardware.c:269
+#: src/xz/hardware.c
msgid "Amount of physical memory (RAM):"
msgstr "Quantidade total de memória física (RAM):"
-#: src/xz/hardware.c:270
+#: src/xz/hardware.c
msgid "Number of processor threads:"
msgstr "Número de threads de processador:"
-#: src/xz/hardware.c:271
+#: src/xz/hardware.c
msgid "Compression:"
msgstr "Compactação:"
-#: src/xz/hardware.c:272
+#: src/xz/hardware.c
msgid "Decompression:"
msgstr "Descompactação:"
-#: src/xz/hardware.c:273
+#: src/xz/hardware.c
msgid "Multi-threaded decompression:"
msgstr "Descompactação com várias threads:"
-#: src/xz/hardware.c:274
+#: src/xz/hardware.c
msgid "Default for -T0:"
msgstr "Padrão para -T0:"
-#: src/xz/hardware.c:292
+#: src/xz/hardware.c
msgid "Hardware information:"
msgstr "Informações de hardware:"
-#: src/xz/hardware.c:299
+#: src/xz/hardware.c
msgid "Memory usage limits:"
msgstr "Memory usage limits:"
-#: src/xz/list.c:68
+#: src/xz/list.c
msgid "Streams:"
msgstr "Fluxos:"
-#: src/xz/list.c:69
+#: src/xz/list.c
msgid "Blocks:"
msgstr "Blocos:"
-#: src/xz/list.c:70
+#: src/xz/list.c
msgid "Compressed size:"
msgstr "Tamanho compactado:"
-#: src/xz/list.c:71
+#: src/xz/list.c
msgid "Uncompressed size:"
msgstr "Tamanho não compactado:"
-#: src/xz/list.c:72
+#: src/xz/list.c
msgid "Ratio:"
msgstr "Proporção:"
-#: src/xz/list.c:73
+#: src/xz/list.c
msgid "Check:"
msgstr "Verificação:"
-#: src/xz/list.c:74
+#: src/xz/list.c
msgid "Stream Padding:"
msgstr "Ajuste do fluxo:"
-#: src/xz/list.c:75
+#: src/xz/list.c
msgid "Memory needed:"
msgstr "Memória exigida:"
-#: src/xz/list.c:76
+#: src/xz/list.c
msgid "Sizes in headers:"
msgstr "Tamanhos nos cabeçalhos:"
-#: src/xz/list.c:79
+#: src/xz/list.c
msgid "Number of files:"
msgstr "Número de arquivos:"
-#: src/xz/list.c:122
+#: src/xz/list.c
msgid "Stream"
msgstr "Fluxo"
-#: src/xz/list.c:123
+#: src/xz/list.c
msgid "Block"
msgstr "Bloco"
-#: src/xz/list.c:124
+#: src/xz/list.c
msgid "Blocks"
msgstr "Blocos"
-#: src/xz/list.c:125
+#: src/xz/list.c
msgid "CompOffset"
msgstr "DeslocComp"
-#: src/xz/list.c:126
+#: src/xz/list.c
msgid "UncompOffset"
msgstr "DeslocDescomp"
-#: src/xz/list.c:127
+#: src/xz/list.c
msgid "CompSize"
msgstr "TamComp"
-#: src/xz/list.c:128
+#: src/xz/list.c
msgid "UncompSize"
msgstr "TamDescomp"
-#: src/xz/list.c:129
+#: src/xz/list.c
msgid "TotalSize"
msgstr "TamTotal"
-#: src/xz/list.c:130
+#: src/xz/list.c
msgid "Ratio"
msgstr "Proporção"
-#: src/xz/list.c:131
+#: src/xz/list.c
msgid "Check"
msgstr "Verificação"
-#: src/xz/list.c:132
+#: src/xz/list.c
msgid "CheckVal"
msgstr "ValorVerific."
-#: src/xz/list.c:133
+#: src/xz/list.c
msgid "Padding"
msgstr "Preench."
-#: src/xz/list.c:134
+#: src/xz/list.c
msgid "Header"
msgstr "Cabeçalho"
-#: src/xz/list.c:135
+#: src/xz/list.c
msgid "Flags"
msgstr "Sinalizadores"
-#: src/xz/list.c:136
+#: src/xz/list.c
msgid "MemUsage"
msgstr "UsoMem"
-#: src/xz/list.c:137
+#: src/xz/list.c
msgid "Filters"
msgstr "Filtros"
@@ -425,7 +459,7 @@ msgstr "Filtros"
#. This string is used in tables. In older xz version this
#. string was limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:169
+#: src/xz/list.c
msgid "None"
msgstr "Nenhuma"
@@ -433,71 +467,71 @@ msgstr "Nenhuma"
#. but the Check ID is known (here 2). In older xz version these
#. strings were limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:175
+#: src/xz/list.c
msgid "Unknown-2"
msgstr "Incógnito2"
# Não exceder 10 caracteres e espaços não são permitidos -- Rafael
-#: src/xz/list.c:176
+#: src/xz/list.c
msgid "Unknown-3"
msgstr "Incógnito3"
# Não exceder 10 caracteres e espaços não são permitidos -- Rafael
-#: src/xz/list.c:178
+#: src/xz/list.c
msgid "Unknown-5"
msgstr "Incógnito5"
# Não exceder 10 caracteres e espaços não são permitidos -- Rafael
-#: src/xz/list.c:179
+#: src/xz/list.c
msgid "Unknown-6"
msgstr "Incógnito6"
# Não exceder 10 caracteres e espaços não são permitidos -- Rafael
-#: src/xz/list.c:180
+#: src/xz/list.c
msgid "Unknown-7"
msgstr "Incógnito7"
# Não exceder 10 caracteres e espaços não são permitidos -- Rafael
-#: src/xz/list.c:181
+#: src/xz/list.c
msgid "Unknown-8"
msgstr "Incógnito8"
# Não exceder 10 caracteres e espaços não são permitidos -- Rafael
-#: src/xz/list.c:182
+#: src/xz/list.c
msgid "Unknown-9"
msgstr "Incógnito9"
# Não exceder 10 caracteres e espaços não são permitidos -- Rafael
-#: src/xz/list.c:184
+#: src/xz/list.c
msgid "Unknown-11"
msgstr "Incógnito11"
# Não exceder 10 caracteres e espaços não são permitidos -- Rafael
-#: src/xz/list.c:185
+#: src/xz/list.c
msgid "Unknown-12"
msgstr "Incógnito12"
# Não exceder 10 caracteres e espaços não são permitidos -- Rafael
-#: src/xz/list.c:186
+#: src/xz/list.c
msgid "Unknown-13"
msgstr "Incógnito13"
# Não exceder 10 caracteres e espaços não são permitidos -- Rafael
-#: src/xz/list.c:187
+#: src/xz/list.c
msgid "Unknown-14"
msgstr "Incógnito14"
# Não exceder 10 caracteres e espaços não são permitidos -- Rafael
-#: src/xz/list.c:188
+#: src/xz/list.c
msgid "Unknown-15"
msgstr "Incógnito15"
-#: src/xz/list.c:351
+#: src/xz/list.c
#, c-format
msgid "%s: File is empty"
msgstr "%s: O arquivo está vazio"
-#: src/xz/list.c:356
+#: src/xz/list.c
#, c-format
msgid "%s: Too small to be a valid .xz file"
msgstr "%s: Pequeno demais para ser um arquivo .xz válido"
@@ -506,64 +540,69 @@ msgstr "%s: Pequeno demais para ser um arquivo .xz válido"
#. 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:731
+#: src/xz/list.c
msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename"
msgstr "Fluxos Blocos Comprimido Descomprimid Propo Verif Nome de Arquivo"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "Yes"
msgstr "Sim"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "No"
msgstr "Não"
-#: src/xz/list.c:1028 src/xz/list.c:1206
+#: src/xz/list.c
#, c-format
msgid " Minimum XZ Utils version: %s\n"
msgstr " Versão mínima do XZ Utils: %s\n"
#. TRANSLATORS: %s is an integer. Only the plural form of this
#. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz".
-#: src/xz/list.c:1179
+#: src/xz/list.c
#, c-format
msgid "%s file\n"
msgid_plural "%s files\n"
msgstr[0] "%s arquivo\n"
msgstr[1] "%s arquivos\n"
-#: src/xz/list.c:1192
+#: src/xz/list.c
msgid "Totals:"
msgstr "Totais:"
-#: src/xz/list.c:1270
+#: src/xz/list.c
msgid "--list works only on .xz files (--format=xz or --format=auto)"
msgstr "--list funciona apenas em arquivos .xz (--format=xz ou --format=auto)"
-#: src/xz/list.c:1276
+#: src/xz/list.c
+msgid "Try 'lzmainfo' with .lzma files."
+msgstr ""
+
+#: src/xz/list.c
msgid "--list does not support reading from standard input"
msgstr "--list não possui suporte a leitura da entrada padrão"
-#: src/xz/main.c:89
+#: src/xz/main.c
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s: Erro ao ler nomes de arquivo: %s"
-#: src/xz/main.c:96
+#: src/xz/main.c
#, c-format
msgid "%s: Unexpected end of input when reading filenames"
msgstr "%s: Fim da entrada inesperado ao ler nomes de arquivos"
-#: src/xz/main.c:120
-#, c-format
-msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
+#: src/xz/main.c
+#, fuzzy, c-format
+#| msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
+msgid "%s: Null character found when reading filenames; maybe you meant to use '--files0' instead of '--files'?"
msgstr "%s: Caractere nulo encontrado ao ler nomes de arquivos; talvez você queria usar \"--files0\" em vez de \"--files\"?"
-#: src/xz/main.c:188
+#: src/xz/main.c
msgid "Compression and decompression with --robot are not supported yet."
msgstr "Ainda não há suporte a compressão e descompressão com --robot."
-#: src/xz/main.c:266
+#: src/xz/main.c
msgid "Cannot read data from standard input when reading filenames from standard input"
msgstr "Não é possível ler dados da entrada padrão ao ler nomes de arquivos da entrada padrão"
@@ -571,68 +610,69 @@ msgstr "Não é possível ler dados da entrada padrão ao ler nomes de arquivos
#. 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:670 src/xz/message.c:725
+#: src/xz/message.c
#, c-format
msgid "%s: "
msgstr "%s: "
-#: src/xz/message.c:797 src/xz/message.c:856
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
msgid "Internal error (bug)"
msgstr "Erro interno (bug)"
-#: src/xz/message.c:804
+#: src/xz/message.c
msgid "Cannot establish signal handlers"
msgstr "Não foi possível estabelecer manipuladores de sinais"
-#: src/xz/message.c:813
+#: src/xz/message.c
msgid "No integrity check; not verifying file integrity"
msgstr "Sem verificação de integridade; não será verificada a integridade do arquivo"
-#: src/xz/message.c:816
+#: src/xz/message.c
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "Tipo de verificação de integridade sem suporte; não será verificada a integridade do arquivo"
-#: src/xz/message.c:823
+#: src/xz/message.c
msgid "Memory usage limit reached"
msgstr "Limite de uso de memória alcançado"
-#: src/xz/message.c:826
+#: src/xz/message.c
msgid "File format not recognized"
msgstr "Formato de arquivo não reconhecido"
-#: src/xz/message.c:829
+#: src/xz/message.c
msgid "Unsupported options"
msgstr "Opções sem suporte"
-#: src/xz/message.c:832
+#: src/xz/message.c
msgid "Compressed data is corrupt"
msgstr "Os dados comprimidos estão corrompidos"
-#: src/xz/message.c:835
+#: src/xz/message.c
msgid "Unexpected end of input"
msgstr "Fim da entrada inesperado"
-#: src/xz/message.c:877
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "%s MiB de memória é necessário. O limitador está desabilitado."
-#: src/xz/message.c:905
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr "%s MiB de memória é necessário. O limite é %s."
-#: src/xz/message.c:924
+#: src/xz/message.c
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: Cadeia de filtros: %s\n"
-#: src/xz/message.c:935
-#, c-format
-msgid "Try `%s --help' for more information."
+#: src/xz/message.c
+#, fuzzy, c-format
+#| msgid "Try `%s --help' for more information."
+msgid "Try '%s --help' for more information."
msgstr "Tente \"%s --help\" para mais informações."
-#: src/xz/message.c:961
+#: src/xz/message.c
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
@@ -643,15 +683,15 @@ msgstr ""
"Comprime e descomprime ARQUIVOs no formato .xz.\n"
"\n"
-#: src/xz/message.c:968
+#: src/xz/message.c
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr "Argumentos obrigatórios para opções longas também o são para opções curtas.\n"
-#: src/xz/message.c:972
+#: src/xz/message.c
msgid " Operation mode:\n"
msgstr " Modo de operação:\n"
-#: src/xz/message.c:975
+#: src/xz/message.c
msgid ""
" -z, --compress force compression\n"
" -d, --decompress force decompression\n"
@@ -663,7 +703,7 @@ msgstr ""
" -t, --test testa a integridade do arquivo comprimido\n"
" -l, --list lista informações sobre arquivos .xz"
-#: src/xz/message.c:981
+#: src/xz/message.c
msgid ""
"\n"
" Operation modifiers:\n"
@@ -671,7 +711,7 @@ msgstr ""
"\n"
" Modificadores de opções:\n"
-#: src/xz/message.c:984
+#: src/xz/message.c
msgid ""
" -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\n"
@@ -683,7 +723,7 @@ msgstr ""
" -c, --stdout escreve a entrada padrão e não exclui os arquivos\n"
" de entrada"
-#: src/xz/message.c:993
+#: src/xz/message.c
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
@@ -691,10 +731,18 @@ msgstr ""
" --single-stream descomprime apenas o primeiro fluxo, e ignora de forma\n"
" silenciosa possíveis dados de entrada restantes"
-#: src/xz/message.c:996
+#: src/xz/message.c
+#, fuzzy
+#| 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"
msgid ""
" --no-sparse do not create sparse files when decompressing\n"
-" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
+" -S, --suffix=.SUF use the suffix '.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n"
" omitted, filenames are read from the standard input;\n"
" filenames must be terminated with the newline character\n"
@@ -711,7 +759,7 @@ msgstr ""
" similar a --files, mas usa o caractere nulo como\n"
" terminador"
-#: src/xz/message.c:1005
+#: src/xz/message.c
msgid ""
"\n"
" Basic file format and compression options:\n"
@@ -719,12 +767,18 @@ msgstr ""
"\n"
" Opções básicas de formato de arquivo e compressão:\n"
-#: src/xz/message.c:1007
+#: src/xz/message.c
+#, fuzzy
+#| msgid ""
+#| " -F, --format=FMT file format to encode or decode; possible values are\n"
+#| " `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
+#| " -C, --check=CHECK integrity check type: `none' (use with caution),\n"
+#| " `crc32', `crc64' (default), or `sha256'"
msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n"
-" `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
-" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-" `crc32', `crc64' (default), or `sha256'"
+" 'auto' (default), 'xz', 'lzma', 'lzip', and 'raw'\n"
+" -C, --check=CHECK integrity check type: 'none' (use with caution),\n"
+" 'crc32', 'crc64' (default), or 'sha256'"
msgstr ""
" -F, --format=FMT formato de arquivo para codificar ou decodificar;\n"
" valores possíveis são\n"
@@ -732,11 +786,11 @@ msgstr ""
" -C, --check=VERIF tipo de verificação de integridade: \"none\" (cuidado!),\n"
" \"crc32\", \"crc64\" (padrão) ou \"sha256\""
-#: src/xz/message.c:1012
+#: src/xz/message.c
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr " --ignore-check não faz a verificação de integridade ao descomprimir"
-#: src/xz/message.c:1016
+#: src/xz/message.c
msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!"
@@ -745,7 +799,7 @@ msgstr ""
" memória do compressor *e* descompressor em conta\n"
" antes de usar 7-9!"
-#: src/xz/message.c:1020
+#: src/xz/message.c
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
@@ -754,16 +808,20 @@ msgstr ""
" tempo de CPU; não afeta os requisitos de memória do\n"
" descompressor"
-#: src/xz/message.c:1024
+#: src/xz/message.c
+#, fuzzy
+#| 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"
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"
+" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
+" as many threads as there are processor cores"
msgstr ""
" -T, --threads=NÚM usa no máximo NÚM threads; o padrão é 1; defina para\n"
" 0 para usar o máximo de threads que há de núcleos de\n"
" processador"
-#: src/xz/message.c:1029
+#: src/xz/message.c
msgid ""
" --block-size=SIZE\n"
" start a new .xz block after every SIZE bytes of input;\n"
@@ -774,17 +832,24 @@ msgstr ""
" use isso para definido o tamanho de bloco para\n"
" compressão com threads"
-#: src/xz/message.c:1033
+#: src/xz/message.c
+#, fuzzy
+#| msgid ""
+#| " --block-list=SIZES\n"
+#| " start a new .xz block after the given comma-separated\n"
+#| " intervals of uncompressed data"
msgid ""
-" --block-list=SIZES\n"
+" --block-list=BLOCKS\n"
" start a new .xz block after the given comma-separated\n"
-" intervals of uncompressed data"
+" intervals of uncompressed data; optionally, specify a\n"
+" filter chain number (0-9) followed by a ':' before the\n"
+" uncompressed data size"
msgstr ""
" --block-list=TAM\n"
" inicia um novo bloco .xz após os intervalos dados,\n"
" separados por vírgula, de dados descomprimidos"
-#: src/xz/message.c:1037
+#: src/xz/message.c
msgid ""
" --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n"
@@ -797,7 +862,7 @@ msgstr ""
" de mais entrada bloquearia, todos os dados pendentes\n"
" serão liberados"
-#: src/xz/message.c:1043
+#: src/xz/message.c
#, no-c-format
msgid ""
" --memlimit-compress=LIMIT\n"
@@ -816,7 +881,7 @@ msgstr ""
" descompressão, compactação em threads ou todas essas;\n"
" LIMITE é em bytes, % de RAM ou 0 para padrões"
-#: src/xz/message.c:1052
+#: src/xz/message.c
msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards"
@@ -825,7 +890,7 @@ msgstr ""
" de uso de memória, fornece um erro em vez de\n"
" ajustar as configurações para baixo"
-#: src/xz/message.c:1058
+#: src/xz/message.c
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
@@ -833,7 +898,27 @@ msgstr ""
"\n"
" Cadeia de filtros personalizada para compressão (alternativa à predefinição):"
-#: src/xz/message.c:1067
+#: src/xz/message.c
+msgid ""
+"\n"
+" --filters=FILTERS set the filter chain using the liblzma filter string\n"
+" syntax; use --filters-help for more information"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters1=FILTERS ... --filters9=FILTERS\n"
+" set additional filter chains using the liblzma filter\n"
+" string syntax to use with --block-list"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters-help display more information about the liblzma filter string\n"
+" syntax and exit."
+msgstr ""
+
+#: src/xz/message.c
msgid ""
"\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
@@ -863,7 +948,19 @@ msgstr ""
" depth=NUM máximo de profundidade de pesquisa;\n"
" 0=automatic (padrão)"
-#: src/xz/message.c:1082
+#: src/xz/message.c
+#, fuzzy
+#| msgid ""
+#| "\n"
+#| " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
+#| " --arm[=OPTS] ARM BCJ filter\n"
+#| " --armthumb[=OPTS] ARM-Thumb BCJ filter\n"
+#| " --arm64[=OPTS] ARM64 BCJ filter\n"
+#| " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
+#| " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
+#| " --sparc[=OPTS] SPARC BCJ filter\n"
+#| " Valid OPTS for all BCJ filters:\n"
+#| " start=NUM start offset for conversions (default=0)"
msgid ""
"\n"
" --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
@@ -873,6 +970,7 @@ msgid ""
" --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
" --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
" --sparc[=OPTS] SPARC BCJ filter\n"
+" --riscv[=OPTS] RISC-V BCJ filter\n"
" Valid OPTS for all BCJ filters:\n"
" start=NUM start offset for conversions (default=0)"
msgstr ""
@@ -888,7 +986,7 @@ msgstr ""
" start=NUM deslocamento inicial para conversões\n"
" (padrão=0)"
-#: src/xz/message.c:1095
+#: src/xz/message.c
msgid ""
"\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n"
@@ -900,7 +998,7 @@ msgstr ""
" dist=NÚM distância entre bytes sendo subtraído\n"
" de cada um (1-256; 1)"
-#: src/xz/message.c:1103
+#: src/xz/message.c
msgid ""
"\n"
" Other options:\n"
@@ -908,7 +1006,7 @@ msgstr ""
"\n"
" Outras opções:\n"
-#: src/xz/message.c:1106
+#: src/xz/message.c
msgid ""
" -q, --quiet suppress warnings; specify twice to suppress errors too\n"
" -v, --verbose be verbose; specify twice for even more verbose"
@@ -916,15 +1014,15 @@ msgstr ""
" -q, --quiet suprime avisos, use duas vezes para suprimir erros também\n"
" -v, --verbose ser detalhado; use duas vezes para ainda mais detalhes"
-#: src/xz/message.c:1111
+#: src/xz/message.c
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr " -Q, --no-warn faz os avisos não afetarem o status de saída"
-#: src/xz/message.c:1113
+#: src/xz/message.c
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr " --robot usa mensagens analisáveis por máquina (útil p/ scripts)"
-#: src/xz/message.c:1116
+#: src/xz/message.c
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
@@ -932,7 +1030,7 @@ msgstr ""
" --info-memory exibe a quantidade total de RAM e os limites de uso\n"
" de memória atualmente ativos e sai"
-#: src/xz/message.c:1119
+#: src/xz/message.c
msgid ""
" -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit"
@@ -940,7 +1038,7 @@ msgstr ""
" -h, --help exibe a ajuda curto (lista apenas as opções básicas)\n"
" -H, --long-help exibe essa ajuda longa e sai"
-#: src/xz/message.c:1123
+#: src/xz/message.c
msgid ""
" -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)"
@@ -948,11 +1046,12 @@ msgstr ""
" -h, --help exibe essa ajuda curta e sai\n"
" -H, --long-help exibe a ajuda longa (lista também as opções avançadas)"
-#: src/xz/message.c:1128
+#: src/xz/message.c
msgid " -V, --version display the version number and exit"
msgstr " -V, --version exibe o número de versão e sai"
-#: src/xz/message.c:1130
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
+#, c-format
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
@@ -964,96 +1063,135 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks.
-#: src/xz/message.c:1136
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr ""
"Relate erros para <%s> (em inglês ou finlandês).\n"
"Relate erros de tradução para <https://translationproject.org/team/pt_BR.html>.\n"
-#: src/xz/message.c:1138
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Site do %s: <%s>\n"
-#: src/xz/message.c:1142
+#: src/xz/message.c
msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
msgstr "ESSA É UMA VERSÃO DE DESENVOLVIMENTO, NÃO DESTINADA PARA USO EM PRODUÇÃO."
-#: src/xz/options.c:86
-#, c-format
-msgid "%s: Options must be `name=value' pairs separated with commas"
+#: src/xz/message.c
+msgid ""
+"Filter chains are set using the --filters=FILTERS or\n"
+"--filters1=FILTERS ... --filters9=FILTERS options. Each filter in the chain\n"
+"can be separated by spaces or '--'. Alternatively a preset <0-9>[e] can be\n"
+"specified instead of a filter chain.\n"
+msgstr ""
+
+#: src/xz/message.c
+#, fuzzy
+#| msgid "Unsupported filter chain or filter options"
+msgid "The supported filters and their options are:"
+msgstr "Opções de filtro ou cadeia de filtros sem suporte"
+
+#: src/xz/options.c
+#, fuzzy, c-format
+#| msgid "%s: Options must be `name=value' pairs separated with commas"
+msgid "%s: Options must be 'name=value' pairs separated with commas"
msgstr "%s: As opções devem ser pares \"nome=valor\" separados por vírgulas"
-#: src/xz/options.c:93
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option name"
msgstr "%s: Nome de opção inválido"
-#: src/xz/options.c:113
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option value"
msgstr "%s: Valor de opção inválido"
-#: src/xz/options.c:248
+#: src/xz/options.c
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "Predefinição LZMA1/LZMA2 sem suporte: %s"
-#: src/xz/options.c:356
+#: src/xz/options.c
msgid "The sum of lc and lp must not exceed 4"
msgstr "A soma de lc e lp não deve exceder 4"
-#: src/xz/suffix.c:160
+#: src/xz/suffix.c
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: O nome de arquivo tem um sufixo desconhecido, ignorando"
-#: src/xz/suffix.c:181
-#, c-format
-msgid "%s: File already has `%s' suffix, skipping"
+#: src/xz/suffix.c
+#, fuzzy, c-format
+#| msgid "%s: File already has `%s' suffix, skipping"
+msgid "%s: File already has '%s' suffix, skipping"
msgstr "%s: O arquivo já tem o sufixo \"%s\", ignorando"
-#: src/xz/suffix.c:388
+#: src/xz/suffix.c
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s: Sufixo de nome de arquivo inválido"
-#: src/xz/util.c:107
+#: src/xz/util.c
#, c-format
msgid "%s: Value is not a non-negative decimal integer"
msgstr "%s: O valor não é um inteiro integral decimal"
-#: src/xz/util.c:149
+#: src/xz/util.c
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s: Sufixo multiplicador inválido"
-#: src/xz/util.c:151
-msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+#: src/xz/util.c
+#, fuzzy
+#| msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+msgid "Valid suffixes are 'KiB' (2^10), 'MiB' (2^20), and 'GiB' (2^30)."
msgstr "Sufixos válidos são \"KiB\" (2^10), \"MiB\" (2^20) e \"GiB\" (2^30)."
-#: src/xz/util.c:168
-#, c-format
-msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+#: src/xz/util.c
+#, fuzzy, c-format
+#| msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+msgid "Value of the option '%s' must be in the range [%<PRIu64>, %<PRIu64>]"
msgstr "O valor da opção \"%s\" deve estar no intervalo [%<PRIu64>, %<PRIu64>]"
-#: src/xz/util.c:270
+#: src/xz/util.c
msgid "Compressed data cannot be read from a terminal"
msgstr "Dados comprimidos não podem ser lidos de um terminal"
-#: src/xz/util.c:283
+#: src/xz/util.c
msgid "Compressed data cannot be written to a terminal"
msgstr "Dados comprimidos não podem ser escrito para um terminal"
-#: src/common/tuklib_exit.c:40
+#: src/lzmainfo/lzmainfo.c
+#, c-format
+msgid ""
+"Usage: %s [--help] [--version] [FILE]...\n"
+"Show information stored in the .lzma file header"
+msgstr ""
+
+#: src/lzmainfo/lzmainfo.c
+#, fuzzy
+#| msgid "%s: Too small to be a valid .xz file"
+msgid "File is too small to be a .lzma file"
+msgstr "%s: Pequeno demais para ser um arquivo .xz válido"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "Not a .lzma file"
+msgstr ""
+
+#: src/common/tuklib_exit.c
msgid "Writing to standard output failed"
msgstr "A escrita para a saída padrão falhou"
-#: src/common/tuklib_exit.c:43
+#: src/common/tuklib_exit.c
msgid "Unknown error"
msgstr "Erro desconhecido"
+#~ msgid "Failed to enable the sandbox"
+#~ msgstr "Falha ao habilitar o sandbox"
+
#~ msgid "Sandbox is disabled due to incompatible command line arguments"
#~ msgstr "Sandbox está desabilitado em razão de argumentos de linha de comando incompatíveis"
diff --git a/po/ro.gmo b/po/ro.gmo
index 5a6638e..1789148 100644
--- a/po/ro.gmo
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
index 1b406de..91761da 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -1,8 +1,10 @@
-# Romanian translation for xz.
-# Mesajele în limba română pentru pachetul xz.
-# This file is put in the public domain.
+# SPDX-License-Identifier: 0BSD
#
-# Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>, 2022 = 2023.
+# Romanian translation for XZ Utils package.
+# Mesajele în limba română pentru pachetul XZ Utils.
+# This file is published under the BSD Zero Clause License.
+#
+# Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>, 2022 - 2024.
#
# Cronologia traducerii fișierului „xz”:
# Traducerea inițială, făcută de R-GC, pentru versiunea xz 5.2.5.
@@ -12,14 +14,16 @@
# Actualizare a traducerii pentru versiunea 5.4.0-pre2, făcută de R-GC, dec-2022.
# Actualizare a traducerii pentru versiunea 5.4.3, făcută de R-GC, mai-2023.
# Actualizare a traducerii pentru versiunea 5.4.4-pre1, făcută de R-GC, iul-2023.
+# Actualizare a traducerii pentru versiunea 5.6.0-pre1, făcută de R-GC, feb-2024.
+# Actualizare a traducerii pentru versiunea 5.6.0-pre2, făcută de R-GC, feb-2024.
# Actualizare a traducerii pentru versiunea Y, făcută de X, Z(luna-anul).
#
msgid ""
msgstr ""
-"Project-Id-Version: xz 5.4.4-pre1\n"
+"Project-Id-Version: xz 5.6.0-pre2\n"
"Report-Msgid-Bugs-To: xz@tukaani.org\n"
-"POT-Creation-Date: 2023-10-31 22:33+0800\n"
-"PO-Revision-Date: 2023-07-19 19:34+0200\n"
+"POT-Creation-Date: 2024-05-29 17:41+0300\n"
+"PO-Revision-Date: 2024-02-16 13:27+0100\n"
"Last-Translator: Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>\n"
"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
"Language: ro\n"
@@ -30,100 +34,122 @@ msgstr ""
"X-Bugs: Report translation errors to the Language-Team address.\n"
"X-Generator: Poedit 3.2.2\n"
-#: src/xz/args.c:77
+#: src/xz/args.c
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr "%s: Argument nevalid pentru opțiunea „--block-list”"
-#: src/xz/args.c:87
+#: src/xz/args.c
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s: Prea multe argumente pentru opțiunea „--block-list”"
-#: src/xz/args.c:116
+#: src/xz/args.c
+#, c-format
+msgid "In --block-list, block size is missing after filter chain number '%c:'"
+msgstr "În „--block-list”, dimensiunea blocului lipsește după numărul lanțului de filtrare „%c”:"
+
+#: src/xz/args.c
msgid "0 can only be used as the last element in --block-list"
msgstr "0 poate fi folosit doar ca ultimul element din opțiunea „--block-list”"
-#: src/xz/args.c:451
+#: src/xz/args.c
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s: Tip de format de fișier necunoscut"
-#: src/xz/args.c:474 src/xz/args.c:482
+#: src/xz/args.c
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s: Tip de verificare a integrității neacceptat"
-#: src/xz/args.c:518
-msgid "Only one file can be specified with `--files' or `--files0'."
+#: src/xz/args.c
+msgid "Only one file can be specified with '--files' or '--files0'."
msgstr "Numai un fișier poate fi specificat cu „--files” sau „--files0”."
#. TRANSLATORS: This is a translatable
#. string because French needs a space
#. before the colon ("%s : %s").
-#: src/xz/args.c:533 src/xz/coder.c:692 src/xz/coder.c:708 src/xz/coder.c:968
-#: src/xz/coder.c:971 src/xz/file_io.c:605 src/xz/file_io.c:679
-#: src/xz/file_io.c:769 src/xz/file_io.c:940 src/xz/list.c:369
-#: src/xz/list.c:415 src/xz/list.c:477 src/xz/list.c:581 src/xz/list.c:590
+#: src/xz/args.c src/xz/coder.c src/xz/file_io.c src/xz/list.c
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: src/xz/args.c:589
+#: src/xz/args.c
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "Variabila de mediu „%s” conține prea multe argumente"
-#: src/xz/args.c:691
+#: src/xz/args.c
msgid "Compression support was disabled at build time"
msgstr "Suportul de comprimare a fost dezactivat în timpul construirii"
-#: src/xz/args.c:698
+#: src/xz/args.c
msgid "Decompression support was disabled at build time"
msgstr "Suportul de decomprimare a fost dezactivat în timpul construirii"
-#: src/xz/args.c:704
+#: src/xz/args.c
msgid "Compression of lzip files (.lz) is not supported"
msgstr "Comprimarea fișierelor lzip (.lz) nu este acceptată"
-#: src/xz/args.c:735
+#: src/xz/args.c
+msgid "--block-list is ignored unless compressing to the .xz format"
+msgstr "opțiunea „--block-list” este ignorată dacă nu se comprimă în formatul .xz"
+
+#: src/xz/args.c
msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout"
-msgstr "Cu --format=raw, este necesar --suffix=.SUF, cu excepția cazului în care se scrie la ieșirea standard(stdout)"
+msgstr "Cu opțiunea „--format=raw”, este necesară opțiunea „--suffix=.SUF”, cu excepția cazului în care se scrie la ieșirea standard"
-#: src/xz/coder.c:115
+#: src/xz/coder.c
msgid "Maximum number of filters is four"
msgstr "Numărul maxim de filtre este patru"
-#: src/xz/coder.c:135
+#: src/xz/coder.c
+#, c-format
+msgid "Error in --filters%s=FILTERS option:"
+msgstr "Eroare în opțiunea „--filters%s=FILTRE”:"
+
+#: src/xz/coder.c
msgid "Memory usage limit is too low for the given filter setup."
msgstr "Limita de utilizare a memoriei este prea mică pentru configurarea dată filtrului."
+#: src/xz/coder.c
+#, c-format
+msgid "filter chain %u used by --block-list but not specified with --filters%u="
+msgstr "lanțul de filtre %u este utilizat de „--block-list”, dar nu este specificat cu „--filters%u=”"
+
# Notă:
# cu toate că sunt împotriva americanismelor, am preferat folosirea cuvîntului american, „românizat”, pentru a avea o traducere fluidă, fără construcții încărcate și inecesare...
-#: src/xz/coder.c:170
+#: src/xz/coder.c
msgid "Using a preset in raw mode is discouraged."
msgstr "Utilizarea unei presetări în modul brut este descurajată."
-#: src/xz/coder.c:172
+#: src/xz/coder.c
msgid "The exact options of the presets may vary between software versions."
msgstr "Opțiunile exacte ale presetărilor pot varia între versiunile de software."
-#: src/xz/coder.c:195
+#: src/xz/coder.c
msgid "The .lzma format supports only the LZMA1 filter"
msgstr "Formatul .lzma acceptă numai filtrul LZMA1"
-#: src/xz/coder.c:203
+#: src/xz/coder.c
msgid "LZMA1 cannot be used with the .xz format"
msgstr "LZMA1 nu poate fi utilizat cu formatul .xz"
-#: src/xz/coder.c:220
-msgid "The filter chain is incompatible with --flush-timeout"
-msgstr "Lanțul de filtre este incompatibil cu opțiunea „--flush-timeout”"
+#: src/xz/coder.c
+#, c-format
+msgid "Filter chain %u is incompatible with --flush-timeout"
+msgstr "Lanțul de filtre %u este incompatibil cu opțiunea „--flush-timeout”"
-#: src/xz/coder.c:226
+#: src/xz/coder.c
msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr "Se trece la modul cu un singur fir de execuție datorită opțiunii „--flush-timeout”"
+#: src/xz/coder.c
+#, c-format
+msgid "Unsupported options in filter chain %u"
+msgstr "Opțiuni neacceptate în lanțul de filtre %u"
+
# NOTĂ:
# - să intru în contact cu dezvoltatorii, pentru ai ruga să introducă a doua formă de plural
# (necesară cel puțin pentru limba română):
@@ -133,50 +159,56 @@ msgstr "Se trece la modul cu un singur fir de execuție datorită opțiunii „-
# procesoare/nuclee > 10
# ===
# cred că deja au apărut astfel de „monștrii”
-#: src/xz/coder.c:250
+#: src/xz/coder.c
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "Se utilizează până la %<PRIu32> fire de execuție."
-#: src/xz/coder.c:266
+#: src/xz/coder.c
msgid "Unsupported filter chain or filter options"
msgstr "Lanț de filtre sau opțiuni de filtrare neacceptate"
-#: src/xz/coder.c:278
+#: src/xz/coder.c
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "Decomprimarea va avea nevoie de %sMio de memorie."
-#: src/xz/coder.c:310
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgstr "Numărul de fire de execuție a fost redus de la %s la %s pentru a nu se depăși limita de utilizare a memoriei de %sMio"
-#: src/xz/coder.c:330
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway."
msgstr "S-a redus numărul de fire de execuție de la %s la unul. Limita automată de utilizare a memoriei de %sMio este încă depășită. Sunt necesari %sMio de memorie. Se continuă în ciuda acestui lucru."
-#: src/xz/coder.c:357
+#: src/xz/coder.c
#, c-format
msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB"
msgstr "S-a trecut la modul cu un singur-fir de execuție pentru a nu se depăși limita de utilizare a memoriei de %sMio"
-#: src/xz/coder.c:412
+#: src/xz/coder.c
#, 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 "S-a ajustat dimensiunea dicționarului LZMA%c de la %sMio la %sMio pentru a nu se depăși limita de utilizare a memoriei de %sMio"
-#: src/xz/file_io.c:110 src/xz/file_io.c:118
+#: src/xz/coder.c
#, c-format
-msgid "Error creating a pipe: %s"
-msgstr "Eroare la crearea unei conducte(pipe): %s"
+msgid "Adjusted LZMA%c dictionary size for --filters%u from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgstr "S-a ajustat dimensiunea dicționarului LZMA%c pentru „--filters%u” de la %sMio la %sMio pentru a nu depăși limita de utilizare a memoriei de %sMio"
-#: src/xz/file_io.c:252
-msgid "Failed to enable the sandbox"
-msgstr "Nu s-a reușit activarea cutiei de probă(sandbox)"
+#: src/xz/coder.c
+#, c-format
+msgid "Error changing to filter chain %u: %s"
+msgstr "Eroare la schimbarea lanțului de filtrare %u: %s"
-#: src/xz/file_io.c:294
+#: src/xz/file_io.c
+#, c-format
+msgid "Error creating a pipe: %s"
+msgstr "Eroare la crearea unei conducte: %s"
+
+#: src/xz/file_io.c
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s: poll() a eșuat: %s"
@@ -191,138 +223,138 @@ msgstr "%s: poll() a eșuat: %s"
#. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously
#. shouldn't be removed.
-#: src/xz/file_io.c:361
+#: src/xz/file_io.c
#, c-format
msgid "%s: File seems to have been moved, not removing"
msgstr "%s: Fișierul pare să fi fost mutat, nu eliminat"
-#: src/xz/file_io.c:368 src/xz/file_io.c:924
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: Nu se poate elimina: %s"
-#: src/xz/file_io.c:394
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: Nu se poate configura proprietarul fișierului: %s"
-#: src/xz/file_io.c:407
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: Nu se poate configura grupul proprietar al fișierului: %s"
-#: src/xz/file_io.c:426
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: Nu se pot configura permisiunile fișierului: %s"
-#: src/xz/file_io.c:552
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "Eroare la obținerea indicatorilor de stare a fișierului de la intrarea standard: %s"
-#: src/xz/file_io.c:610 src/xz/file_io.c:672
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: Este o legătură simbolică, se omite"
-#: src/xz/file_io.c:701
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: Este un director, se omite"
-#: src/xz/file_io.c:707
+#: src/xz/file_io.c
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: Nu este un fișier obișnuit, se omite"
-#: src/xz/file_io.c:724
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s: Fișierul are activați biții «setuid» sau «setgid», se omite"
-#: src/xz/file_io.c:731
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s: Fișierul are activat bitul lipicios(sticky), se omite"
-#: src/xz/file_io.c:738
+#: src/xz/file_io.c
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s: Fișierul de intrare are mai mult de o legătură dură, se omite"
-#: src/xz/file_io.c:780
+#: src/xz/file_io.c
msgid "Empty filename, skipping"
msgstr "Numele fișierului este gol, se omite"
-#: src/xz/file_io.c:834
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "Eroare la restabilirea indicatorilor de stare la intrarea standard: %s"
-#: src/xz/file_io.c:882
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "Eroare la obținerea indicatorilor de stare a fișierului de la ieșirea standard: %s"
-#: src/xz/file_io.c:1081
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "Eroare la restabilirea indicatorului O_APPEND la ieșirea standard: %s"
-#: src/xz/file_io.c:1093
+#: src/xz/file_io.c
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: Închiderea fișierului a eșuat: %s"
-#: src/xz/file_io.c:1129 src/xz/file_io.c:1391
+#: src/xz/file_io.c
#, c-format
msgid "%s: Seeking failed when trying to create a sparse file: %s"
msgstr "%s: Căutarea a eșuat când se încerca crearea unui fișier dispers(sparse): %s"
-#: src/xz/file_io.c:1229
+#: src/xz/file_io.c
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: Eroare de citire: %s"
-#: src/xz/file_io.c:1259
+#: src/xz/file_io.c
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: Eroare la căutarea fișierului: %s"
-#: src/xz/file_io.c:1283
+#: src/xz/file_io.c
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: Sfârșit neașteptat al fișierului"
-#: src/xz/file_io.c:1342
+#: src/xz/file_io.c
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: Eroare de scriere: %s"
-#: src/xz/hardware.c:238
+#: src/xz/hardware.c
msgid "Disabled"
msgstr "Dezactivat"
-#: src/xz/hardware.c:269
+#: src/xz/hardware.c
msgid "Amount of physical memory (RAM):"
msgstr "Cantitatea totală de memorie fizică (RAM):"
-#: src/xz/hardware.c:270
+#: src/xz/hardware.c
msgid "Number of processor threads:"
msgstr "Numărul de fire de execuție ale procesorului:"
-#: src/xz/hardware.c:271
+#: src/xz/hardware.c
msgid "Compression:"
msgstr "Comprimare:"
-#: src/xz/hardware.c:272
+#: src/xz/hardware.c
msgid "Decompression:"
msgstr "Decomprimare:"
-#: src/xz/hardware.c:273
+#: src/xz/hardware.c
msgid "Multi-threaded decompression:"
-msgstr "Decomprimare multiple-fire de execuție:"
+msgstr "Decomprimare cu multiple-fire de execuție:"
# R-GC, scrie:
# ATENȚIE:
@@ -332,119 +364,119 @@ msgstr "Decomprimare multiple-fire de execuție:"
# ****
# probabil tipul de literă folosit de mine în Poedit, să
# nu diferențieze prea mult O de 0...
-#: src/xz/hardware.c:274
+#: src/xz/hardware.c
msgid "Default for -T0:"
msgstr "Implicit pentru -T0:"
-#: src/xz/hardware.c:292
+#: src/xz/hardware.c
msgid "Hardware information:"
msgstr "Informații despre componentele mașinii:"
-#: src/xz/hardware.c:299
+#: src/xz/hardware.c
msgid "Memory usage limits:"
msgstr "Limitele de utilizare a memoriei:"
-#: src/xz/list.c:68
+#: src/xz/list.c
msgid "Streams:"
msgstr "Fluxuri:"
-#: src/xz/list.c:69
+#: src/xz/list.c
msgid "Blocks:"
msgstr "Blocuri:"
-#: src/xz/list.c:70
+#: src/xz/list.c
msgid "Compressed size:"
msgstr "Dimensiune comprimată:"
-#: src/xz/list.c:71
+#: src/xz/list.c
msgid "Uncompressed size:"
msgstr "Dimensiune decomprimată:"
-#: src/xz/list.c:72
+#: src/xz/list.c
msgid "Ratio:"
msgstr "Raport:"
-#: src/xz/list.c:73
+#: src/xz/list.c
msgid "Check:"
msgstr "Verificare:"
-#: src/xz/list.c:74
+#: src/xz/list.c
msgid "Stream Padding:"
msgstr "Completare flux:"
-#: src/xz/list.c:75
+#: src/xz/list.c
msgid "Memory needed:"
msgstr "Memorie necesară:"
-#: src/xz/list.c:76
+#: src/xz/list.c
msgid "Sizes in headers:"
msgstr "Dim. în antete:"
-#: src/xz/list.c:79
+#: src/xz/list.c
msgid "Number of files:"
msgstr "Numărul de fișiere:"
-#: src/xz/list.c:122
+#: src/xz/list.c
msgid "Stream"
msgstr "Flux"
-#: src/xz/list.c:123
+#: src/xz/list.c
msgid "Block"
msgstr "Bloc"
-#: src/xz/list.c:124
+#: src/xz/list.c
msgid "Blocks"
msgstr "Blocuri"
-#: src/xz/list.c:125
+#: src/xz/list.c
msgid "CompOffset"
msgstr "PozițieComprim"
-#: src/xz/list.c:126
+#: src/xz/list.c
msgid "UncompOffset"
msgstr "PozițieDecomprim"
-#: src/xz/list.c:127
+#: src/xz/list.c
msgid "CompSize"
msgstr "DimComp"
-#: src/xz/list.c:128
+#: src/xz/list.c
msgid "UncompSize"
msgstr "DimDecomp"
-#: src/xz/list.c:129
+#: src/xz/list.c
msgid "TotalSize"
msgstr "DimTotală"
-#: src/xz/list.c:130
+#: src/xz/list.c
msgid "Ratio"
msgstr "Raport"
-#: src/xz/list.c:131
+#: src/xz/list.c
msgid "Check"
msgstr "Verificare"
-#: src/xz/list.c:132
+#: src/xz/list.c
msgid "CheckVal"
msgstr "ValVerificare"
-#: src/xz/list.c:133
+#: src/xz/list.c
msgid "Padding"
msgstr "Completare"
-#: src/xz/list.c:134
+#: src/xz/list.c
msgid "Header"
msgstr "Antet"
-#: src/xz/list.c:135
+#: src/xz/list.c
msgid "Flags"
msgstr "Indicatori"
-#: src/xz/list.c:136
+#: src/xz/list.c
msgid "MemUsage"
msgstr "UtilizareMem"
-#: src/xz/list.c:137
+#: src/xz/list.c
msgid "Filters"
msgstr "Filtre"
@@ -452,7 +484,7 @@ msgstr "Filtre"
#. This string is used in tables. In older xz version this
#. string was limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:169
+#: src/xz/list.c
msgid "None"
msgstr "Nici una"
@@ -460,60 +492,60 @@ msgstr "Nici una"
#. but the Check ID is known (here 2). In older xz version these
#. strings were limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:175
+#: src/xz/list.c
msgid "Unknown-2"
msgstr "Necunos-2"
-#: src/xz/list.c:176
+#: src/xz/list.c
msgid "Unknown-3"
msgstr "Necunos-3"
-#: src/xz/list.c:178
+#: src/xz/list.c
msgid "Unknown-5"
msgstr "Necunos-5"
-#: src/xz/list.c:179
+#: src/xz/list.c
msgid "Unknown-6"
msgstr "Necunos-6"
-#: src/xz/list.c:180
+#: src/xz/list.c
msgid "Unknown-7"
msgstr "Necunos-7"
-#: src/xz/list.c:181
+#: src/xz/list.c
msgid "Unknown-8"
msgstr "Necunos-8"
-#: src/xz/list.c:182
+#: src/xz/list.c
msgid "Unknown-9"
msgstr "Necunos-9"
-#: src/xz/list.c:184
+#: src/xz/list.c
msgid "Unknown-11"
msgstr "Necunos-11"
-#: src/xz/list.c:185
+#: src/xz/list.c
msgid "Unknown-12"
msgstr "Necunos-12"
-#: src/xz/list.c:186
+#: src/xz/list.c
msgid "Unknown-13"
msgstr "Necunos-13"
-#: src/xz/list.c:187
+#: src/xz/list.c
msgid "Unknown-14"
msgstr "Necunos-14"
-#: src/xz/list.c:188
+#: src/xz/list.c
msgid "Unknown-15"
msgstr "Necunos-15"
-#: src/xz/list.c:351
+#: src/xz/list.c
#, c-format
msgid "%s: File is empty"
msgstr "%s: Fișierul este gol"
-#: src/xz/list.c:356
+#: src/xz/list.c
#, c-format
msgid "%s: Too small to be a valid .xz file"
msgstr "%s: Prea mic pentru a fi un fișier .xz valid"
@@ -522,26 +554,26 @@ msgstr "%s: Prea mic pentru a fi un fișier .xz valid"
#. 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:731
+#: src/xz/list.c
msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename"
msgstr "Fluxuri Blocuri Comprimare Decomprimare Raport Verificare Nume fișier"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "Yes"
msgstr "Da"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "No"
msgstr "Nu"
-#: src/xz/list.c:1028 src/xz/list.c:1206
+#: src/xz/list.c
#, c-format
msgid " Minimum XZ Utils version: %s\n"
msgstr " Versiunea minimă 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:1179
+#: src/xz/list.c
#, c-format
msgid "%s file\n"
msgid_plural "%s files\n"
@@ -550,46 +582,50 @@ msgstr[1] "două fișiere\n"
msgstr[2] "%s fișiere\n"
msgstr[3] "%s de fișiere\n"
-#: src/xz/list.c:1192
+#: src/xz/list.c
msgid "Totals:"
msgstr "Totaluri:"
-#: src/xz/list.c:1270
+#: src/xz/list.c
msgid "--list works only on .xz files (--format=xz or --format=auto)"
msgstr "--list funcționează numai pe fișierele .xz (--format=xz sau --format=auto)"
-#: src/xz/list.c:1276
+#: src/xz/list.c
+msgid "Try 'lzmainfo' with .lzma files."
+msgstr "Încercați «lzmainfo» cu fișiere .lzma."
+
+#: src/xz/list.c
msgid "--list does not support reading from standard input"
msgstr "--list nu acceptă citirea de la intrarea standard"
-#: src/xz/main.c:89
+#: src/xz/main.c
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s: Eroare la citirea numelor de fișiere: %s"
-#: src/xz/main.c:96
+#: src/xz/main.c
#, c-format
msgid "%s: Unexpected end of input when reading filenames"
msgstr "%s: Sfârșit neașteptat al intrării la citirea numelor de fișiere"
# Adaptînd sugestia făcută de Daniel Șerbănescu asupra traducerii cuvîntului „null”, am modificat
-# traducere de la:„Caracter nul găsit...”, la:
+# traducerea de la:„Caracter nul găsit...”, la:
# „Caracter nul(null) găsit...”
# Sugestia făcută de el în baza obiecției că în pagina web, «dexonline» definiția cuvîntului nul, este un pic ambiguă; nu are o bază prea solidă,
# din următoarele motive:
# - pagina în cauză e construită, alimentată și menținută de persoane voluntare, precum noi ca traducători de software.
# - intrările pentru definiția cuvîntului „nul”, sînt extrase din dicționare de uz general; niciuna dintre ele, nu a ieșit dintr-un dicționar tehnic, cu atît mai puțin unul de informatică.
# - utilizatorul software-ului «xz», direct de la linia de comandă, mă îndoiesc că va fi un utilizator ce nu este familiarizat cu nomenclatura din informatică (pentru restul utilizatorilor, acest mesaj nu va fi vizibil, pentru că-l vor utiliza din spatele unui software „IGU” «InterfațăGrafică(de)Utilizator»
-#: src/xz/main.c:120
+#: src/xz/main.c
#, c-format
-msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
+msgid "%s: Null character found when reading filenames; maybe you meant to use '--files0' instead of '--files'?"
msgstr "%s: Caracter nul(null) găsit la citirea numelor de fișiere; poate ați vrut să utilizați „--files0” în loc de „--files”?"
-#: src/xz/main.c:188
+#: src/xz/main.c
msgid "Compression and decompression with --robot are not supported yet."
msgstr "Comprimarea și decomprimarea cu „--robot” nu sunt încă acceptate."
-#: src/xz/main.c:266
+#: src/xz/main.c
msgid "Cannot read data from standard input when reading filenames from standard input"
msgstr "Nu se pot citi date de la intrarea standard atunci când se citesc numele de fișiere de la intrarea standard"
@@ -597,68 +633,68 @@ msgstr "Nu se pot citi date de la intrarea standard atunci când se citesc numel
#. 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:670 src/xz/message.c:725
+#: src/xz/message.c
#, c-format
msgid "%s: "
msgstr "%s: "
-#: src/xz/message.c:797 src/xz/message.c:856
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
msgid "Internal error (bug)"
msgstr "Eroare internă (bug)"
-#: src/xz/message.c:804
+#: src/xz/message.c
msgid "Cannot establish signal handlers"
msgstr "Nu se pot stabili operatorii de semnal"
-#: src/xz/message.c:813
+#: src/xz/message.c
msgid "No integrity check; not verifying file integrity"
msgstr "Fără verificare a integrității; nu se verifică integritatea fișierului"
-#: src/xz/message.c:816
+#: src/xz/message.c
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "Tip neacceptat de verificare a integrității; nu se verifică integritatea fișierului"
-#: src/xz/message.c:823
+#: src/xz/message.c
msgid "Memory usage limit reached"
msgstr "Limita de utilizare a memoriei a fost atinsă"
-#: src/xz/message.c:826
+#: src/xz/message.c
msgid "File format not recognized"
msgstr "Formatul fișierului nu este recunoscut"
-#: src/xz/message.c:829
+#: src/xz/message.c
msgid "Unsupported options"
msgstr "Opțiuni neacceptate"
-#: src/xz/message.c:832
+#: src/xz/message.c
msgid "Compressed data is corrupt"
msgstr "Datele comprimate sunt corupte"
-#: src/xz/message.c:835
+#: src/xz/message.c
msgid "Unexpected end of input"
msgstr "Sfârșit neașteptat al intrării"
-#: src/xz/message.c:877
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
-msgstr "Se necesită %s Mio de memorie. Limitarea este dezactivată."
+msgstr "Se necesită %sMio de memorie. Limitarea este dezactivată."
-#: src/xz/message.c:905
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr "Se necesită %sMio de memorie. Limita este de %s."
-#: src/xz/message.c:924
+#: src/xz/message.c
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: Lanț de filtre: %s\n"
-#: src/xz/message.c:935
+#: src/xz/message.c
#, c-format
-msgid "Try `%s --help' for more information."
+msgid "Try '%s --help' for more information."
msgstr "Încercați «%s --help» pentru mai multe informații."
-#: src/xz/message.c:961
+#: src/xz/message.c
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
@@ -669,17 +705,17 @@ msgstr ""
"Comprimă sau decomprimă FIȘIER(e) în formatul .xz.\n"
"\n"
-#: src/xz/message.c:968
+#: src/xz/message.c
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr ""
"Argumentele obligatorii pentru opțiunile lungi sunt obligatorii și\n"
"pentru opțiunile scurte.\n"
-#: src/xz/message.c:972
+#: src/xz/message.c
msgid " Operation mode:\n"
msgstr " Mod de operare:\n"
-#: src/xz/message.c:975
+#: src/xz/message.c
msgid ""
" -z, --compress force compression\n"
" -d, --decompress force decompression\n"
@@ -691,7 +727,7 @@ msgstr ""
" -t, --test testează integritatea fișierului comprimat\n"
" -l, --list listează informații despre fișierele .xz"
-#: src/xz/message.c:981
+#: src/xz/message.c
msgid ""
"\n"
" Operation modifiers:\n"
@@ -699,7 +735,7 @@ msgstr ""
"\n"
" Modificatori de operare:\n"
-#: src/xz/message.c:984
+#: src/xz/message.c
msgid ""
" -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\n"
@@ -711,7 +747,7 @@ msgstr ""
" -c, --stdout scrie la ieșirea standard și nu șterge fișierele de\n"
" intrare"
-#: src/xz/message.c:993
+#: src/xz/message.c
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
@@ -719,10 +755,10 @@ msgstr ""
" --single-stream decomprimă doar primul flux și ignoră în tăcere\n"
" posibilele date de intrare rămase"
-#: src/xz/message.c:996
+#: src/xz/message.c
msgid ""
" --no-sparse do not create sparse files when decompressing\n"
-" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
+" -S, --suffix=.SUF use the suffix '.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n"
" omitted, filenames are read from the standard input;\n"
" filenames must be terminated with the newline character\n"
@@ -736,10 +772,9 @@ msgstr ""
" de la intrarea standard; numele de fișiere trebuie să\n"
" fie terminate cu caracterul de linie nouă\n"
" --files0[=FIȘIER]\n"
-" ca --files, dar folosește caracterul nul(null) ca\n"
-" terminator"
+" ca „--files”, dar folosește caracterul null ca terminator"
-#: src/xz/message.c:1005
+#: src/xz/message.c
msgid ""
"\n"
" Basic file format and compression options:\n"
@@ -747,12 +782,12 @@ msgstr ""
"\n"
" Formatul de bază al fișierului și opțiunile de comprimare:\n"
-#: src/xz/message.c:1007
+#: src/xz/message.c
msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n"
-" `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
-" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-" `crc32', `crc64' (default), or `sha256'"
+" 'auto' (default), 'xz', 'lzma', 'lzip', and 'raw'\n"
+" -C, --check=CHECK integrity check type: 'none' (use with caution),\n"
+" 'crc32', 'crc64' (default), or 'sha256'"
msgstr ""
" -F, --format=FORMAT\n"
" formatul de fișier pentru codificare sau decodificare;\n"
@@ -763,11 +798,11 @@ msgstr ""
" cu precauție), „crc32”, „crc64” (implicit) sau\n"
" „sha256”"
-#: src/xz/message.c:1012
+#: src/xz/message.c
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr " --ignore-check nu se efectuează verificarea integrității la decomprimare"
-#: src/xz/message.c:1016
+#: src/xz/message.c
msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!"
@@ -777,7 +812,7 @@ msgstr ""
" comprimare *și* de instrumentul de decomprimare, înainte\n"
" de a utiliza presetările 7-9!"
-#: src/xz/message.c:1020
+#: src/xz/message.c
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
@@ -786,17 +821,17 @@ msgstr ""
" folosind mai mult timp CPU-ul; nu afectează cerințele\n"
" de memorie ale instrumentului de decomprimare"
-#: src/xz/message.c:1024
+#: src/xz/message.c
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"
+" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
+" as many threads as there are processor cores"
msgstr ""
" -T, --threads=NUMĂR\n"
-" utilizați cel mult NUMĂR fire de execuție; implicit\n"
-" este 1; specificați valoarea 0 pentru a utiliza atâtea\n"
-" fire de execuție câte nuclee de procesor există"
+" utilizează cel mult NUMĂR fire de execuție; valoarea\n"
+" implicită este 0, care utilizează atâtea fire de execuție\n"
+" câte nuclee există în procesor"
-#: src/xz/message.c:1029
+#: src/xz/message.c
msgid ""
" --block-size=SIZE\n"
" start a new .xz block after every SIZE bytes of input;\n"
@@ -807,17 +842,21 @@ msgstr ""
" utilizați acest lucru pentru a stabili dimensiunea\n"
" blocului pentru comprimarea cu fire de execuție"
-#: src/xz/message.c:1033
+#: src/xz/message.c
msgid ""
-" --block-list=SIZES\n"
+" --block-list=BLOCKS\n"
" start a new .xz block after the given comma-separated\n"
-" intervals of uncompressed data"
+" intervals of uncompressed data; optionally, specify a\n"
+" filter chain number (0-9) followed by a ':' before the\n"
+" uncompressed data size"
msgstr ""
-" --block-list=DM\n"
+" --block-list=BLOCURI\n"
" începe un nou bloc .xz după intervalele date separate\n"
-" prin virgulă, de date necomprimate"
+" prin virgulă, de date necomprimate; opțional, specificați\n"
+" un număr de lanț de filtrare (0-9) urmat de „:” înainte\n"
+" de dimensiunea datelor necomprimate"
-#: src/xz/message.c:1037
+#: src/xz/message.c
msgid ""
" --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n"
@@ -830,7 +869,7 @@ msgstr ""
" multor intrări s-ar bloca, toate datele în așteptare\n"
" sunt eliminate"
-#: src/xz/message.c:1043
+#: src/xz/message.c
#, no-c-format
msgid ""
" --memlimit-compress=LIMIT\n"
@@ -850,7 +889,7 @@ msgstr ""
" execuție sau toate acestea; LIMITA este exprimată în\n"
" octeți, % din RAM sau 0 pt. a activa valoarea implicită"
-#: src/xz/message.c:1052
+#: src/xz/message.c
msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards"
@@ -858,7 +897,7 @@ msgstr ""
" --no-adjust dacă setările de comprimare depășesc limita de utilizare\n"
" a memoriei, dă o eroare în loc să reducă val. stabilite"
-#: src/xz/message.c:1058
+#: src/xz/message.c
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
@@ -867,7 +906,37 @@ msgstr ""
" Lanț de filtrare personalizat pentru comprimare (alternativă la utilizarea\n"
" presetărilor):"
-#: src/xz/message.c:1067
+#: src/xz/message.c
+msgid ""
+"\n"
+" --filters=FILTERS set the filter chain using the liblzma filter string\n"
+" syntax; use --filters-help for more information"
+msgstr ""
+"\n"
+" --filters=FILTRE definește lanțul de filtre folosind sintaxa șirului de\n"
+" filtre liblzma; utilizați „--filters-help” pentru mai\n"
+" multe informații"
+
+#: src/xz/message.c
+msgid ""
+" --filters1=FILTERS ... --filters9=FILTERS\n"
+" set additional filter chains using the liblzma filter\n"
+" string syntax to use with --block-list"
+msgstr ""
+" --filters1=FILTRE ... --filters9=FILTRE\n"
+" definește lanțuri de filtre suplimentare folosind sintaxa\n"
+" șirului de filtre liblzma pentru a fi utilizate cu\n"
+" opțiunea „--block-list”"
+
+#: src/xz/message.c
+msgid ""
+" --filters-help display more information about the liblzma filter string\n"
+" syntax and exit."
+msgstr ""
+" --filters-help afișează mai multe informații despre sintaxa șirului de\n"
+" filtre liblzma și iese"
+
+#: src/xz/message.c
msgid ""
"\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
@@ -901,7 +970,7 @@ msgstr ""
" depth=NUM adâncimea maximă de căutare; 0=automată\n"
" (valoarea implicită)"
-#: src/xz/message.c:1082
+#: src/xz/message.c
msgid ""
"\n"
" --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
@@ -911,6 +980,7 @@ msgid ""
" --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
" --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
" --sparc[=OPTS] SPARC BCJ filter\n"
+" --riscv[=OPTS] RISC-V BCJ filter\n"
" Valid OPTS for all BCJ filters:\n"
" start=NUM start offset for conversions (default=0)"
msgstr ""
@@ -922,10 +992,11 @@ msgstr ""
" --powerpc[=OPȚIUNI] filtru BCJ PowerPC (numai big endian)\n"
" --ia64[=OPȚIUNI] filtru BCJ IA-64 (Itanium)\n"
" --sparc[=OPȚIUNI] filtru BCJ SPARC\n"
+" --riscv[=OPȚIUNI] filtru RISC-V BCJ\n"
" OPȚIUNI valide pentru toate filtrele BCJ:\n"
-" start=NUM poziția de pornire a conversiilor (implicit=0)"
+" start=NUM poziția de pornire a conversiilor (implicit=0)"
-#: src/xz/message.c:1095
+#: src/xz/message.c
msgid ""
"\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n"
@@ -937,7 +1008,7 @@ msgstr ""
" dist=NUM distanța dintre octeți fiind dedusă\n"
" scăzând un octet din celălalt (1-256; 1)"
-#: src/xz/message.c:1103
+#: src/xz/message.c
msgid ""
"\n"
" Other options:\n"
@@ -945,27 +1016,27 @@ msgstr ""
"\n"
" Alte opțiuni:\n"
-#: src/xz/message.c:1106
+#: src/xz/message.c
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 suprimă avertismentele; specificați de două ori pentru\n"
+" -q, --quiet suprimă avertismentele; specificați-o de două ori pentru\n"
" a suprima și erorile\n"
-" -v, --verbose descriere detaliată; specificați de două ori pentru și\n"
+" -v, --verbose descriere detaliată; specificați-o de două ori pentru și\n"
" mai multe detalii"
-#: src/xz/message.c:1111
+#: src/xz/message.c
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr " -Q, --no-warn face ca avertismentele să nu afecteze starea de ieșire"
-#: src/xz/message.c:1113
+#: src/xz/message.c
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr ""
" --robot utilizează mesaje analizabile de mașină (utile pentru\n"
" scripturi)"
-#: src/xz/message.c:1116
+#: src/xz/message.c
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
@@ -973,7 +1044,7 @@ msgstr ""
" --info-memory afișează cantitatea totală de memorie RAM și limitele de\n"
" utilizare a memoriei active în prezent, și iese"
-#: src/xz/message.c:1119
+#: src/xz/message.c
msgid ""
" -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit"
@@ -981,7 +1052,7 @@ msgstr ""
" -h, --help afișează ajutorul scurt (enumeră doar opțiunile de bază)\n"
" -H, --long-help afișează acest ajutor lung(detaliat) și iese"
-#: src/xz/message.c:1123
+#: src/xz/message.c
msgid ""
" -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)"
@@ -990,11 +1061,12 @@ msgstr ""
" -H, --long-help afișează mesajul detaliat de ajutor (afișează și opțiunile\n"
" avansate)"
-#: src/xz/message.c:1128
+#: src/xz/message.c
msgid " -V, --version display the version number and exit"
msgstr " -V, --version afișează numărul versiunii, și iese"
-#: src/xz/message.c:1130
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
+#, c-format
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
@@ -1006,133 +1078,128 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks.
-#: src/xz/message.c:1136
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr ""
"Raportați erorile la <%s> (în engleză sau finlandeză).\n"
"Raportați erorile de traducere la <translation-team-ro@lists.sourceforge.net>\n"
-#: src/xz/message.c:1138
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Pagina principală a %s: <%s>\n"
-#: src/xz/message.c:1142
+#: src/xz/message.c
msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
msgstr "ACEASTA ESTE O VERSIUNE DE DEZVOLTARE, NEDESTINATĂ UTILIZĂRII ÎN PRODUCȚIE."
-#: src/xz/options.c:86
+#: src/xz/message.c
+msgid ""
+"Filter chains are set using the --filters=FILTERS or\n"
+"--filters1=FILTERS ... --filters9=FILTERS options. Each filter in the chain\n"
+"can be separated by spaces or '--'. Alternatively a preset <0-9>[e] can be\n"
+"specified instead of a filter chain.\n"
+msgstr ""
+"Lanțurile de filtre sunt definite cu ajutorul opțiunilor „--filters=FILTRE” sau\n"
+"„--filters1=FILTRE ... --filters9=FILTRE”. Fiecare filtru din lanț poate fi\n"
+"separat prin spații sau „--”. Alternativ, se poate specifica o presetare\n"
+"<0-9>[e] în locul unui lanț de filtre.\n"
+
+#: src/xz/message.c
+msgid "The supported filters and their options are:"
+msgstr "Filtrele acceptate și opțiunile acestora sunt:"
+
+#: src/xz/options.c
#, c-format
-msgid "%s: Options must be `name=value' pairs separated with commas"
+msgid "%s: Options must be 'name=value' pairs separated with commas"
msgstr "%s: Opțiunile trebuie să fie perechi „nume=valoare” separate prin virgule"
-#: src/xz/options.c:93
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option name"
msgstr "%s: Nume de opțiune nevalid"
-#: src/xz/options.c:113
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option value"
msgstr "%s: Valoare nevalidă a opțiunii"
-#: src/xz/options.c:248
+#: src/xz/options.c
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "Presetare LZMA1/LZMA2 neacceptată: %s"
-#: src/xz/options.c:356
+#: src/xz/options.c
msgid "The sum of lc and lp must not exceed 4"
msgstr "Suma de lc și lp nu trebuie să depășească 4"
-#: src/xz/suffix.c:160
+#: src/xz/suffix.c
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: Numele fișierului are un sufix necunoscut, care se omite"
-#: src/xz/suffix.c:181
+#: src/xz/suffix.c
#, c-format
-msgid "%s: File already has `%s' suffix, skipping"
+msgid "%s: File already has '%s' suffix, skipping"
msgstr "%s: Fișierul are deja sufixul „%s”, se omite"
-#: src/xz/suffix.c:388
+#: src/xz/suffix.c
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s: Sufixul numelui de fișier nu este valid"
-#: src/xz/util.c:107
+#: src/xz/util.c
#, c-format
msgid "%s: Value is not a non-negative decimal integer"
msgstr "%s: Valoarea nu este un număr întreg zecimal nenegativ"
-#: src/xz/util.c:149
+#: src/xz/util.c
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s: Sufix multiplicator nevalid"
-#: src/xz/util.c:151
-msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+#: src/xz/util.c
+msgid "Valid suffixes are 'KiB' (2^10), 'MiB' (2^20), and 'GiB' (2^30)."
msgstr "Sufixele valide sunt „KiB” (2^10), „MiB” (2^20) și „GiB” (2^30)."
-#: src/xz/util.c:168
+#: src/xz/util.c
#, c-format
-msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+msgid "Value of the option '%s' must be in the range [%<PRIu64>, %<PRIu64>]"
msgstr "Valoarea opțiunii „%s” trebuie să fie în intervalul [%<PRIu64>, %<PRIu64>]"
-#: src/xz/util.c:270
+#: src/xz/util.c
msgid "Compressed data cannot be read from a terminal"
msgstr "Datele comprimate nu pot fi citite de pe un terminal"
-#: src/xz/util.c:283
+#: src/xz/util.c
msgid "Compressed data cannot be written to a terminal"
msgstr "Datele comprimate nu pot fi scrise pe un terminal"
-#: src/common/tuklib_exit.c:40
+#: src/lzmainfo/lzmainfo.c
+#, c-format
+msgid ""
+"Usage: %s [--help] [--version] [FILE]...\n"
+"Show information stored in the .lzma file header"
+msgstr ""
+"Utilizare: %s [--help] [--version] [FIȘIER]...\n"
+"Afișează informațiile stocate în antetul fișierului .lzma"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "File is too small to be a .lzma file"
+msgstr "Prea mic pentru a fi un fișier .lzma"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "Not a .lzma file"
+msgstr "Nu este un fișier .lzma"
+
+#: src/common/tuklib_exit.c
msgid "Writing to standard output failed"
msgstr "Scrierea la ieșirea standard a eșuat"
-#: src/common/tuklib_exit.c:43
+#: src/common/tuklib_exit.c
msgid "Unknown error"
msgstr "Eroare necunoscută"
-#~ msgid "The selected match finder requires at least nice=%<PRIu32>"
-#~ msgstr "Găsitorul de potriviri selectat necesită cel puțin nice=%<PRIu32>"
-
-#~ msgid "Memory usage limit for compression: "
-#~ msgstr "Limita de utilizare a memoriei pentru comprimare: "
-
-#~ msgid " Streams: %s\n"
-#~ msgstr " Fluxuri: %s\n"
-
-#~ msgid " Blocks: %s\n"
-#~ msgstr " Blocuri: %s\n"
-
-#~ msgid " Ratio: %s\n"
-#~ msgstr " Raport: %s\n"
-
-#~ msgid " Check: %s\n"
-#~ msgstr " Verificare: %s\n"
-
-#~ msgid ""
-#~ " Streams:\n"
-#~ " Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding"
-#~ msgstr ""
-#~ " Fluxuri:\n"
-#~ " Flux Blocuri DecalajComp. DecalajDecomp. Dim.Comp. Dim.Decomp. Raport Verif. Compl.Flux"
-
-#~ msgid ""
-#~ " Blocks:\n"
-#~ " Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check"
-#~ msgstr ""
-#~ " Blocuri:\n"
-#~ " Flux Bloc DecalajComp. DecalajDecomp. Dim.Totală Dim.Decomp. Raport Verif."
-
-#~ msgid " CheckVal %*s Header Flags CompSize MemUsage Filters"
-#~ msgstr " Val.Verif. %*sAntet Indicat. Dim.Comp. UzMem. Filtre"
-
-#~ msgid "Sandbox is disabled due to incompatible command line arguments"
-#~ msgstr "Cutia de probă(sandbox) este dezactivată din cauza argumentelor incompatibile din linia de comandă"
-
-#~ msgid "Sandbox was successfully enabled"
-#~ msgstr "Cutia de probă(sandbox) a fost activată cu succes"
+#~ msgid "Failed to enable the sandbox"
+#~ msgstr "Nu s-a reușit activarea cutiei de probă(sandbox)"
diff --git a/po/sr.gmo b/po/sr.gmo
index e6fb61b..b91a832 100644
--- a/po/sr.gmo
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
index 524460c..7e2a5e7 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: xz 5.2.4\n"
"Report-Msgid-Bugs-To: xz@tukaani.org\n"
-"POT-Creation-Date: 2023-10-31 22:33+0800\n"
+"POT-Creation-Date: 2024-05-29 17:41+0300\n"
"PO-Revision-Date: 2022-06-24 22:07+0800\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <(nothing)>\n"
@@ -16,147 +16,181 @@ msgstr ""
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-#: src/xz/args.c:77
+#: src/xz/args.c
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr "%s: Неисправан аргумент за „--block-list“"
-#: src/xz/args.c:87
+#: src/xz/args.c
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s: Превише аргумената за „--block-list“"
-#: src/xz/args.c:116
+#: src/xz/args.c
+#, c-format
+msgid "In --block-list, block size is missing after filter chain number '%c:'"
+msgstr ""
+
+#: src/xz/args.c
msgid "0 can only be used as the last element in --block-list"
msgstr "0 се може користити само као последњи елемент у „--block-list“-у"
-#: src/xz/args.c:451
+#: src/xz/args.c
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s: Непозната врста формата датотеке"
-#: src/xz/args.c:474 src/xz/args.c:482
+#: src/xz/args.c
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s: Неподржана врста провере целовитости"
-#: src/xz/args.c:518
-msgid "Only one file can be specified with `--files' or `--files0'."
+#: src/xz/args.c
+#, fuzzy
+#| msgid "Only one file can be specified with `--files' or `--files0'."
+msgid "Only one file can be specified with '--files' or '--files0'."
msgstr "Само једну датотеку можете навести са „--files“ или „--files0“."
#. TRANSLATORS: This is a translatable
#. string because French needs a space
#. before the colon ("%s : %s").
-#: src/xz/args.c:533 src/xz/coder.c:692 src/xz/coder.c:708 src/xz/coder.c:968
-#: src/xz/coder.c:971 src/xz/file_io.c:605 src/xz/file_io.c:679
-#: src/xz/file_io.c:769 src/xz/file_io.c:940 src/xz/list.c:369
-#: src/xz/list.c:415 src/xz/list.c:477 src/xz/list.c:581 src/xz/list.c:590
+#: src/xz/args.c src/xz/coder.c src/xz/file_io.c src/xz/list.c
#, fuzzy, c-format
#| msgid "%s: "
msgid "%s: %s"
msgstr "%s: "
-#: src/xz/args.c:589
+#: src/xz/args.c
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "Променљива окружења „%s“ садржи превише аргумената"
-#: src/xz/args.c:691
+#: src/xz/args.c
msgid "Compression support was disabled at build time"
msgstr "Подршка запакивања је искључена у време изградње"
-#: src/xz/args.c:698
+#: src/xz/args.c
msgid "Decompression support was disabled at build time"
msgstr "Подршка распакивања је искључена у време изградње"
-#: src/xz/args.c:704
+#: src/xz/args.c
msgid "Compression of lzip files (.lz) is not supported"
msgstr ""
-#: src/xz/args.c:735
+#: src/xz/args.c
+msgid "--block-list is ignored unless compressing to the .xz format"
+msgstr ""
+
+#: src/xz/args.c
#, fuzzy
#| msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "%s: Са „--format=raw“, „--suffix=.SUF“ је потребно осим ако пише на стандардни излаз"
-#: src/xz/coder.c:115
+#: src/xz/coder.c
msgid "Maximum number of filters is four"
msgstr "Највећи број филтера је четири"
-#: src/xz/coder.c:135
+#: src/xz/coder.c
+#, c-format
+msgid "Error in --filters%s=FILTERS option:"
+msgstr ""
+
+#: src/xz/coder.c
msgid "Memory usage limit is too low for the given filter setup."
msgstr "Ограничење коришћења меморије је премало за дато подешавање филтера."
-#: src/xz/coder.c:170
+#: src/xz/coder.c
+#, c-format
+msgid "filter chain %u used by --block-list but not specified with --filters%u="
+msgstr ""
+
+#: src/xz/coder.c
msgid "Using a preset in raw mode is discouraged."
msgstr "Коришћење претподешавања у сировом режиму је обесхрабрујуће."
-#: src/xz/coder.c:172
+#: src/xz/coder.c
msgid "The exact options of the presets may vary between software versions."
msgstr "Тачне опције претподешавања се могу разликовати од издања до издања софтвера."
-#: src/xz/coder.c:195
+#: src/xz/coder.c
msgid "The .lzma format supports only the LZMA1 filter"
msgstr "Формат „.lzma“ подржава само „LZMA1“ филтер"
-#: src/xz/coder.c:203
+#: src/xz/coder.c
msgid "LZMA1 cannot be used with the .xz format"
msgstr "Не можете користити „LZMA1“ са „.xz“ форматом"
-#: src/xz/coder.c:220
-msgid "The filter chain is incompatible with --flush-timeout"
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "The filter chain is incompatible with --flush-timeout"
+msgid "Filter chain %u is incompatible with --flush-timeout"
msgstr "Ланац филтера није сагласан са „--flush-timeout“"
-#: src/xz/coder.c:226
+#: src/xz/coder.c
msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr "Пребацујем се на режим једне нити због „--flush-timeout“"
-#: src/xz/coder.c:250
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Unsupported options"
+msgid "Unsupported options in filter chain %u"
+msgstr "Неподржане опције"
+
+#: src/xz/coder.c
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "Користим до %<PRIu32> нити."
-#: src/xz/coder.c:266
+#: src/xz/coder.c
msgid "Unsupported filter chain or filter options"
msgstr "Неподржан ланац филтера или опције филтера"
-#: src/xz/coder.c:278
+#: src/xz/coder.c
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "За распакивање ће бити потребно %s MiB меморије."
-#: src/xz/coder.c:310
+#: src/xz/coder.c
#, fuzzy, c-format
#| msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgstr "Број нити је промењен са %s на %s да се неби прекорачило ограничење коришћења меморије од %s MiB"
-#: src/xz/coder.c:330
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway."
msgstr ""
-#: src/xz/coder.c:357
+#: src/xz/coder.c
#, fuzzy, c-format
#| msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB"
msgstr "Број нити је промењен са %s на %s да се неби прекорачило ограничење коришћења меморије од %s MiB"
-#: src/xz/coder.c:412
+#: src/xz/coder.c
#, c-format
msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
msgstr "Величина „LZMA%c“ речника је промењена са %s на %s да се неби прекорачило ограничење коришћења меморије од %s MiB"
-#: src/xz/file_io.c:110 src/xz/file_io.c:118
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgid "Adjusted LZMA%c dictionary size for --filters%u from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgstr "Величина „LZMA%c“ речника је промењена са %s на %s да се неби прекорачило ограничење коришћења меморије од %s MiB"
+
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Error creating a pipe: %s"
+msgid "Error changing to filter chain %u: %s"
+msgstr "Грешка стварања спојке: %s"
+
+#: src/xz/file_io.c
#, c-format
msgid "Error creating a pipe: %s"
msgstr "Грешка стварања спојке: %s"
-#: src/xz/file_io.c:252
-msgid "Failed to enable the sandbox"
-msgstr "Нисам успео да укључим безбедно окружење"
-
-#: src/xz/file_io.c:294
+#: src/xz/file_io.c
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s: „poll()“ није успело: %s"
@@ -171,272 +205,272 @@ msgstr "%s: „poll()“ није успело: %s"
#. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously
#. shouldn't be removed.
-#: src/xz/file_io.c:361
+#: src/xz/file_io.c
#, c-format
msgid "%s: File seems to have been moved, not removing"
msgstr "%s: Изгледа да је датотека премештена, не уклањам"
-#: src/xz/file_io.c:368 src/xz/file_io.c:924
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: Не могу да уклоним: %s"
-#: src/xz/file_io.c:394
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: Не могу да поставим власника датотеке: %s"
-#: src/xz/file_io.c:407
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: Не могу да поставим групу датотеке: %s"
-#: src/xz/file_io.c:426
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: Не могу да поставим овлашћења датотеке: %s"
-#: src/xz/file_io.c:552
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "Грешка добављања заставица стања датотеке са стандардног улаза: %s"
-#: src/xz/file_io.c:610 src/xz/file_io.c:672
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: Јесте симболичка веза прескачем"
-#: src/xz/file_io.c:701
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: Јесте директоријум, прескачем"
-#: src/xz/file_io.c:707
+#: src/xz/file_io.c
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: Није обична датотека, прескачем"
-#: src/xz/file_io.c:724
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s: Датотека има постављен „setuid“ или „setgid“ бит, прескачем"
-#: src/xz/file_io.c:731
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s: Датотека има постављен лепљиви бит, прескачем"
-#: src/xz/file_io.c:738
+#: src/xz/file_io.c
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s: Улазна датотека има више од једне чврсте везе, прескачем"
-#: src/xz/file_io.c:780
+#: src/xz/file_io.c
msgid "Empty filename, skipping"
msgstr "Празан назив датотеке, прескачем"
-#: src/xz/file_io.c:834
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "Грешка повраћаја заставица стања на стандардни улаз: %s"
-#: src/xz/file_io.c:882
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "Грешка добављања заставица стања датотеке са стандардног излаза: %s"
-#: src/xz/file_io.c:1081
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "Грешка повраћаја заставице „O_APPEND“ на стандардни излаз: %s"
-#: src/xz/file_io.c:1093
+#: src/xz/file_io.c
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: Затварање датотеке није успело: %s"
-#: src/xz/file_io.c:1129 src/xz/file_io.c:1391
+#: src/xz/file_io.c
#, c-format
msgid "%s: Seeking failed when trying to create a sparse file: %s"
msgstr "%s: Премотавање није успело приликом покушаја прављења оскудне датотеке: %s"
-#: src/xz/file_io.c:1229
+#: src/xz/file_io.c
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: Грешка читања: %s"
-#: src/xz/file_io.c:1259
+#: src/xz/file_io.c
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: Грешка приликом претраге датотеке: %s"
-#: src/xz/file_io.c:1283
+#: src/xz/file_io.c
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: Неочекиван крај датотеке"
-#: src/xz/file_io.c:1342
+#: src/xz/file_io.c
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: Грешка писања: %s"
-#: src/xz/hardware.c:238
+#: src/xz/hardware.c
msgid "Disabled"
msgstr "Искључено"
-#: src/xz/hardware.c:269
+#: src/xz/hardware.c
#, fuzzy
#| msgid "Total amount of physical memory (RAM): "
msgid "Amount of physical memory (RAM):"
msgstr "Укупна количина физичке меморије (RAM): "
-#: src/xz/hardware.c:270
+#: src/xz/hardware.c
msgid "Number of processor threads:"
msgstr ""
-#: src/xz/hardware.c:271
+#: src/xz/hardware.c
msgid "Compression:"
msgstr ""
-#: src/xz/hardware.c:272
+#: src/xz/hardware.c
msgid "Decompression:"
msgstr ""
-#: src/xz/hardware.c:273
+#: src/xz/hardware.c
#, fuzzy
#| msgid "Memory usage limit for decompression: "
msgid "Multi-threaded decompression:"
msgstr "Ограничење коришћења меморије за распакивање: "
-#: src/xz/hardware.c:274
+#: src/xz/hardware.c
msgid "Default for -T0:"
msgstr ""
-#: src/xz/hardware.c:292
+#: src/xz/hardware.c
msgid "Hardware information:"
msgstr ""
-#: src/xz/hardware.c:299
+#: src/xz/hardware.c
#, fuzzy
#| msgid "Memory usage limit reached"
msgid "Memory usage limits:"
msgstr "Ограничење коришћења меморије је достигнуто"
-#: src/xz/list.c:68
+#: src/xz/list.c
msgid "Streams:"
msgstr ""
-#: src/xz/list.c:69
+#: src/xz/list.c
msgid "Blocks:"
msgstr ""
-#: src/xz/list.c:70
+#: src/xz/list.c
#, fuzzy
#| msgid " Compressed size: %s\n"
msgid "Compressed size:"
msgstr " Величина сажетог: %s\n"
-#: src/xz/list.c:71
+#: src/xz/list.c
#, fuzzy
#| msgid " Uncompressed size: %s\n"
msgid "Uncompressed size:"
msgstr " Величина несажетог: %s\n"
-#: src/xz/list.c:72
+#: src/xz/list.c
msgid "Ratio:"
msgstr ""
-#: src/xz/list.c:73
+#: src/xz/list.c
msgid "Check:"
msgstr ""
-#: src/xz/list.c:74
+#: src/xz/list.c
#, fuzzy
#| msgid " Stream padding: %s\n"
msgid "Stream Padding:"
msgstr " Попуна тока: %s\n"
-#: src/xz/list.c:75
+#: src/xz/list.c
#, fuzzy
#| msgid " Memory needed: %s MiB\n"
msgid "Memory needed:"
msgstr " Потребна меморија: %s MiB\n"
-#: src/xz/list.c:76
+#: src/xz/list.c
#, fuzzy
#| msgid " Sizes in headers: %s\n"
msgid "Sizes in headers:"
msgstr " Величине у заглављима: %s\n"
-#: src/xz/list.c:79
+#: src/xz/list.c
#, fuzzy
#| msgid " Number of files: %s\n"
msgid "Number of files:"
msgstr " Број датотека: %s\n"
-#: src/xz/list.c:122
+#: src/xz/list.c
msgid "Stream"
msgstr ""
-#: src/xz/list.c:123
+#: src/xz/list.c
msgid "Block"
msgstr ""
-#: src/xz/list.c:124
+#: src/xz/list.c
msgid "Blocks"
msgstr ""
-#: src/xz/list.c:125
+#: src/xz/list.c
msgid "CompOffset"
msgstr ""
-#: src/xz/list.c:126
+#: src/xz/list.c
msgid "UncompOffset"
msgstr ""
-#: src/xz/list.c:127
+#: src/xz/list.c
msgid "CompSize"
msgstr ""
-#: src/xz/list.c:128
+#: src/xz/list.c
msgid "UncompSize"
msgstr ""
-#: src/xz/list.c:129
+#: src/xz/list.c
#, fuzzy
#| msgid "Totals:"
msgid "TotalSize"
msgstr "Укупно:"
-#: src/xz/list.c:130
+#: src/xz/list.c
msgid "Ratio"
msgstr ""
-#: src/xz/list.c:131
+#: src/xz/list.c
msgid "Check"
msgstr ""
-#: src/xz/list.c:132
+#: src/xz/list.c
msgid "CheckVal"
msgstr ""
-#: src/xz/list.c:133
+#: src/xz/list.c
msgid "Padding"
msgstr ""
-#: src/xz/list.c:134
+#: src/xz/list.c
msgid "Header"
msgstr ""
-#: src/xz/list.c:135
+#: src/xz/list.c
msgid "Flags"
msgstr ""
-#: src/xz/list.c:136
+#: src/xz/list.c
msgid "MemUsage"
msgstr ""
-#: src/xz/list.c:137
+#: src/xz/list.c
msgid "Filters"
msgstr ""
@@ -444,7 +478,7 @@ msgstr ""
#. This string is used in tables. In older xz version this
#. string was limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:169
+#: src/xz/list.c
msgid "None"
msgstr "Ништа"
@@ -452,60 +486,60 @@ msgstr "Ништа"
#. but the Check ID is known (here 2). In older xz version these
#. strings were limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:175
+#: src/xz/list.c
msgid "Unknown-2"
msgstr "Незнано-2"
-#: src/xz/list.c:176
+#: src/xz/list.c
msgid "Unknown-3"
msgstr "Незнано-3"
-#: src/xz/list.c:178
+#: src/xz/list.c
msgid "Unknown-5"
msgstr "Незнано-5"
-#: src/xz/list.c:179
+#: src/xz/list.c
msgid "Unknown-6"
msgstr "Незнано-6"
-#: src/xz/list.c:180
+#: src/xz/list.c
msgid "Unknown-7"
msgstr "Незнано-7"
-#: src/xz/list.c:181
+#: src/xz/list.c
msgid "Unknown-8"
msgstr "Незнано-8"
-#: src/xz/list.c:182
+#: src/xz/list.c
msgid "Unknown-9"
msgstr "Незнано-9"
-#: src/xz/list.c:184
+#: src/xz/list.c
msgid "Unknown-11"
msgstr "Незнано-11"
-#: src/xz/list.c:185
+#: src/xz/list.c
msgid "Unknown-12"
msgstr "Незнано-12"
-#: src/xz/list.c:186
+#: src/xz/list.c
msgid "Unknown-13"
msgstr "Незнано-13"
-#: src/xz/list.c:187
+#: src/xz/list.c
msgid "Unknown-14"
msgstr "Незнано-14"
-#: src/xz/list.c:188
+#: src/xz/list.c
msgid "Unknown-15"
msgstr "Незнано-15"
-#: src/xz/list.c:351
+#: src/xz/list.c
#, c-format
msgid "%s: File is empty"
msgstr "%s: Датотека је празна"
-#: src/xz/list.c:356
+#: src/xz/list.c
#, c-format
msgid "%s: Too small to be a valid .xz file"
msgstr "%s: Премало је да би било исправна „.xz“ датотека"
@@ -514,26 +548,26 @@ msgstr "%s: Премало је да би било исправна „.xz“ д
#. to Ratio, the columns are right aligned. Check and Filename
#. are left aligned. If you need longer words, it's OK to
#. use two lines here. Test with "xz -l foo.xz".
-#: src/xz/list.c:731
+#: src/xz/list.c
msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename"
msgstr "Токови Блокови Запаковано Распаковано Однос Провера Датотека"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "Yes"
msgstr "Да"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "No"
msgstr "Не"
-#: src/xz/list.c:1028 src/xz/list.c:1206
+#: src/xz/list.c
#, c-format
msgid " Minimum XZ Utils version: %s\n"
msgstr " Најмање издање XZ помагала: %s\n"
#. TRANSLATORS: %s is an integer. Only the plural form of this
#. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz".
-#: src/xz/list.c:1179
+#: src/xz/list.c
#, c-format
msgid "%s file\n"
msgid_plural "%s files\n"
@@ -541,38 +575,43 @@ msgstr[0] "%s датотека\n"
msgstr[1] "%s датотеке\n"
msgstr[2] "%s датотека\n"
-#: src/xz/list.c:1192
+#: src/xz/list.c
msgid "Totals:"
msgstr "Укупно:"
-#: src/xz/list.c:1270
+#: src/xz/list.c
msgid "--list works only on .xz files (--format=xz or --format=auto)"
msgstr "„--list“ ради само над „.xz“ датотекама (--format=xz или --format=auto)"
-#: src/xz/list.c:1276
+#: src/xz/list.c
+msgid "Try 'lzmainfo' with .lzma files."
+msgstr ""
+
+#: src/xz/list.c
msgid "--list does not support reading from standard input"
msgstr "„--list“ не подржава читање са стандардног улаза"
-#: src/xz/main.c:89
+#: src/xz/main.c
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s: Грешка читања назива датотека: %s"
-#: src/xz/main.c:96
+#: src/xz/main.c
#, c-format
msgid "%s: Unexpected end of input when reading filenames"
msgstr "%s: Неочекивани крај улаза приликом читања назива датотека"
-#: src/xz/main.c:120
-#, c-format
-msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
+#: src/xz/main.c
+#, fuzzy, c-format
+#| msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
+msgid "%s: Null character found when reading filenames; maybe you meant to use '--files0' instead of '--files'?"
msgstr "%s: Нађох ништаван знак приликом читања назива датотека; можта сте хтели да користите „--files0“ уместо „--files“?"
-#: src/xz/main.c:188
+#: src/xz/main.c
msgid "Compression and decompression with --robot are not supported yet."
msgstr "Запакивање и распакивање са „--robot“ није још подржано."
-#: src/xz/main.c:266
+#: src/xz/main.c
msgid "Cannot read data from standard input when reading filenames from standard input"
msgstr "Не могу да читам податке са стандардног улаза приликом читања назива датотека са стандардног улаза"
@@ -580,68 +619,69 @@ msgstr "Не могу да читам податке са стандардног
#. 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:670 src/xz/message.c:725
+#: src/xz/message.c
#, c-format
msgid "%s: "
msgstr "%s: "
-#: src/xz/message.c:797 src/xz/message.c:856
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
msgid "Internal error (bug)"
msgstr "Унутрашња грешка (бубица)"
-#: src/xz/message.c:804
+#: src/xz/message.c
msgid "Cannot establish signal handlers"
msgstr "Не могу да успоставим руковаоце сигналом"
-#: src/xz/message.c:813
+#: src/xz/message.c
msgid "No integrity check; not verifying file integrity"
msgstr "Нема провере целовитости; не проверавам целовитост датотеке"
-#: src/xz/message.c:816
+#: src/xz/message.c
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "Неподржана врста провере целовитости; не проверавам целовитост датотеке"
-#: src/xz/message.c:823
+#: src/xz/message.c
msgid "Memory usage limit reached"
msgstr "Ограничење коришћења меморије је достигнуто"
-#: src/xz/message.c:826
+#: src/xz/message.c
msgid "File format not recognized"
msgstr "Није препознат формат датотеке"
-#: src/xz/message.c:829
+#: src/xz/message.c
msgid "Unsupported options"
msgstr "Неподржане опције"
-#: src/xz/message.c:832
+#: src/xz/message.c
msgid "Compressed data is corrupt"
msgstr "Запаковани подаци су оштећени"
-#: src/xz/message.c:835
+#: src/xz/message.c
msgid "Unexpected end of input"
msgstr "Неочекиван крај улаза"
-#: src/xz/message.c:877
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "%s MiB меморије је потребно. Ограничавач је онемогућен."
-#: src/xz/message.c:905
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr "%s MiB меморије је потребно. Ограничење је %s."
-#: src/xz/message.c:924
+#: src/xz/message.c
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: Ланац филтера: %s\n"
-#: src/xz/message.c:935
-#, c-format
-msgid "Try `%s --help' for more information."
+#: src/xz/message.c
+#, fuzzy, c-format
+#| msgid "Try `%s --help' for more information."
+msgid "Try '%s --help' for more information."
msgstr "Пробајте „%s --help“ за више података."
-#: src/xz/message.c:961
+#: src/xz/message.c
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
@@ -652,15 +692,15 @@ msgstr ""
"Пакује или распакује ДАТОТЕКЕ у „.xz“ формату.\n"
"\n"
-#: src/xz/message.c:968
+#: src/xz/message.c
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr "Обавезни аргументи за дуге опције су такође обавезни и за кратке опције.\n"
-#: src/xz/message.c:972
+#: src/xz/message.c
msgid " Operation mode:\n"
msgstr " Режим рада:\n"
-#: src/xz/message.c:975
+#: src/xz/message.c
msgid ""
" -z, --compress force compression\n"
" -d, --decompress force decompression\n"
@@ -672,7 +712,7 @@ msgstr ""
" -t, --test тестира целовитост запаковане датотеке\n"
" -l, --list исписује податке о „.xz“ датотекама"
-#: src/xz/message.c:981
+#: src/xz/message.c
msgid ""
"\n"
" Operation modifiers:\n"
@@ -680,7 +720,7 @@ msgstr ""
"\n"
" Измењивачи рада:\n"
-#: src/xz/message.c:984
+#: src/xz/message.c
msgid ""
" -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\n"
@@ -691,7 +731,7 @@ msgstr ""
" (рас)запакивања\n"
" -c, --stdout пише на стандардни излаз и не брише улазне датотеке"
-#: src/xz/message.c:993
+#: src/xz/message.c
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
@@ -699,10 +739,18 @@ msgstr ""
" --single-stream распакује само први ток, и тихо\n"
" занемарује могуће преостале улазне податке"
-#: src/xz/message.c:996
+#: src/xz/message.c
+#, fuzzy
+#| 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"
msgid ""
" --no-sparse do not create sparse files when decompressing\n"
-" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
+" -S, --suffix=.SUF use the suffix '.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n"
" omitted, filenames are read from the standard input;\n"
" filenames must be terminated with the newline character\n"
@@ -716,7 +764,7 @@ msgstr ""
" завршавати знаком новог реда\n"
" --files0[=ДТТКА] као „--files“ али користи празан знак као завршни"
-#: src/xz/message.c:1005
+#: src/xz/message.c
msgid ""
"\n"
" Basic file format and compression options:\n"
@@ -724,7 +772,7 @@ msgstr ""
"\n"
" Основне опције формата датотеке и запакивања:\n"
-#: src/xz/message.c:1007
+#: src/xz/message.c
#, fuzzy
#| msgid ""
#| " -F, --format=FMT file format to encode or decode; possible values are\n"
@@ -733,9 +781,9 @@ msgstr ""
#| " `crc32', `crc64' (default), or `sha256'"
msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n"
-" `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
-" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-" `crc32', `crc64' (default), or `sha256'"
+" 'auto' (default), 'xz', 'lzma', 'lzip', and 'raw'\n"
+" -C, --check=CHECK integrity check type: 'none' (use with caution),\n"
+" 'crc32', 'crc64' (default), or 'sha256'"
msgstr ""
" -F, --format=ФМТ формат датотеке за кодирање и декодирање; могуће\n"
" вредности су „auto“ (основно), „xz“, „lzma“,\n"
@@ -743,13 +791,13 @@ msgstr ""
" -C, --check=ПРОВЕРА врста провере целовитости: „none“ (користите уз\n"
" опрез), „crc32“, „crc64“ (основно), или „sha256“"
-#: src/xz/message.c:1012
+#: src/xz/message.c
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr ""
" --ignore-check не потврђује проверу целовитости приликом\n"
" распакивања"
-#: src/xz/message.c:1016
+#: src/xz/message.c
msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!"
@@ -758,7 +806,7 @@ msgstr ""
" обзир коришћење меморије запакивања *и* распакивања\n"
" пре него ли употребите 7-9!"
-#: src/xz/message.c:1020
+#: src/xz/message.c
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
@@ -767,16 +815,20 @@ msgstr ""
" времена процесора; не утиче на потребе меморије\n"
" распакивача"
-#: src/xz/message.c:1024
+#: src/xz/message.c
+#, fuzzy
+#| 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"
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"
+" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
+" as many threads as there are processor cores"
msgstr ""
" -T, --threads=БР користи највише БР нити; основно је 1; поставите\n"
" на 0 за коришћење онолико нити колико има\n"
" процесорских језгара"
-#: src/xz/message.c:1029
+#: src/xz/message.c
msgid ""
" --block-size=SIZE\n"
" start a new .xz block after every SIZE bytes of input;\n"
@@ -787,17 +839,24 @@ msgstr ""
" бајта улаза; користите ово да поставите величину\n"
" блока за нитирано запакивање"
-#: src/xz/message.c:1033
+#: src/xz/message.c
+#, fuzzy
+#| msgid ""
+#| " --block-list=SIZES\n"
+#| " start a new .xz block after the given comma-separated\n"
+#| " intervals of uncompressed data"
msgid ""
-" --block-list=SIZES\n"
+" --block-list=BLOCKS\n"
" start a new .xz block after the given comma-separated\n"
-" intervals of uncompressed data"
+" intervals of uncompressed data; optionally, specify a\n"
+" filter chain number (0-9) followed by a ':' before the\n"
+" uncompressed data size"
msgstr ""
" --block-list=ВЕЛИЧИНА\n"
" започиње нови „.xz“ блок након датих зарезом\n"
" раздвојених периода незапакованих података"
-#: src/xz/message.c:1037
+#: src/xz/message.c
msgid ""
" --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n"
@@ -810,7 +869,7 @@ msgstr ""
" читања још улаза блокираће, сви подаци на чекању се\n"
" истискују ван"
-#: src/xz/message.c:1043
+#: src/xz/message.c
#, fuzzy, no-c-format
#| msgid ""
#| " --memlimit-compress=LIMIT\n"
@@ -834,7 +893,7 @@ msgstr ""
" запакивање, распакивање, или оба; ОГРАНИЧЕЊЕ је у\n"
" бајтовима, % o РАМ, или 0 за основно"
-#: src/xz/message.c:1052
+#: src/xz/message.c
msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards"
@@ -843,7 +902,7 @@ msgstr ""
" коришћења меморије, даје грешку уместо дотеривања\n"
" подешавања"
-#: src/xz/message.c:1058
+#: src/xz/message.c
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
@@ -852,7 +911,27 @@ msgstr ""
" Произвољни ланац филтера за запакивање (алтернатива за коришћење\n"
" претподешавања):"
-#: src/xz/message.c:1067
+#: src/xz/message.c
+msgid ""
+"\n"
+" --filters=FILTERS set the filter chain using the liblzma filter string\n"
+" syntax; use --filters-help for more information"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters1=FILTERS ... --filters9=FILTERS\n"
+" set additional filter chains using the liblzma filter\n"
+" string syntax to use with --block-list"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters-help display more information about the liblzma filter string\n"
+" syntax and exit."
+msgstr ""
+
+#: src/xz/message.c
msgid ""
"\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
@@ -883,7 +962,7 @@ msgstr ""
" depth=БРОЈ највећа дубина тражења; 0=самостално\n"
" (основно)"
-#: src/xz/message.c:1082
+#: src/xz/message.c
#, fuzzy
#| msgid ""
#| "\n"
@@ -904,6 +983,7 @@ msgid ""
" --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
" --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
" --sparc[=OPTS] SPARC BCJ filter\n"
+" --riscv[=OPTS] RISC-V BCJ filter\n"
" Valid OPTS for all BCJ filters:\n"
" start=NUM start offset for conversions (default=0)"
msgstr ""
@@ -918,7 +998,7 @@ msgstr ""
" start=БРОЈ померај почетка за претварања\n"
" (основно=0)"
-#: src/xz/message.c:1095
+#: src/xz/message.c
msgid ""
"\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n"
@@ -931,7 +1011,7 @@ msgstr ""
" dist=БРОЈ растојање између бајтова који су\n"
" одузети из свих других (1-256; 1)"
-#: src/xz/message.c:1103
+#: src/xz/message.c
msgid ""
"\n"
" Other options:\n"
@@ -939,7 +1019,7 @@ msgstr ""
"\n"
" Остале опције:\n"
-#: src/xz/message.c:1106
+#: src/xz/message.c
msgid ""
" -q, --quiet suppress warnings; specify twice to suppress errors too\n"
" -v, --verbose be verbose; specify twice for even more verbose"
@@ -948,17 +1028,17 @@ msgstr ""
" грешке такође\n"
" -v, --verbose бива опширан; наведите два пута за још опширније"
-#: src/xz/message.c:1111
+#: src/xz/message.c
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr " -Q, --no-warn чини да упозорења не делују на стање излаза"
-#: src/xz/message.c:1113
+#: src/xz/message.c
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr ""
" --robot користи поруке обрадиве рачунаром\n"
" (корисно за скрипте)"
-#: src/xz/message.c:1116
+#: src/xz/message.c
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
@@ -966,7 +1046,7 @@ msgstr ""
" --info-memory приказује укупан износ РАМ-а и тренутно активна\n"
" ограничења коришћења меморије, и излази"
-#: src/xz/message.c:1119
+#: src/xz/message.c
msgid ""
" -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit"
@@ -975,7 +1055,7 @@ msgstr ""
" опције)\n"
" -H, --long-help приказује ову дугу помоћ и излази"
-#: src/xz/message.c:1123
+#: src/xz/message.c
msgid ""
" -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)"
@@ -984,11 +1064,12 @@ msgstr ""
" -H, --long-help приказује дугу помоћ (исписује такође и напредне\n"
" опције)"
-#: src/xz/message.c:1128
+#: src/xz/message.c
msgid " -V, --version display the version number and exit"
msgstr " -V, --version приказује број издања и излази"
-#: src/xz/message.c:1130
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
+#, c-format
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
@@ -1000,94 +1081,133 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks.
-#: src/xz/message.c:1136
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr "Грешке пријавите на <%s> (на енглеском или финском).\n"
-#: src/xz/message.c:1138
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "%s home page: <%s>\n"
msgstr "„%s“ матична страница: <%s>\n"
-#: src/xz/message.c:1142
+#: src/xz/message.c
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"
+#: src/xz/message.c
+msgid ""
+"Filter chains are set using the --filters=FILTERS or\n"
+"--filters1=FILTERS ... --filters9=FILTERS options. Each filter in the chain\n"
+"can be separated by spaces or '--'. Alternatively a preset <0-9>[e] can be\n"
+"specified instead of a filter chain.\n"
+msgstr ""
+
+#: src/xz/message.c
+#, fuzzy
+#| msgid "Unsupported filter chain or filter options"
+msgid "The supported filters and their options are:"
+msgstr "Неподржан ланац филтера или опције филтера"
+
+#: src/xz/options.c
+#, fuzzy, c-format
+#| msgid "%s: Options must be `name=value' pairs separated with commas"
+msgid "%s: Options must be 'name=value' pairs separated with commas"
msgstr "%s: Опције морају бити парови „name=value“ раздвојени зарезима"
-#: src/xz/options.c:93
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option name"
msgstr "%s: Неисправан назив опције"
-#: src/xz/options.c:113
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option value"
msgstr "%s: Неисправна вредност опције"
-#: src/xz/options.c:248
+#: src/xz/options.c
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "Неподржано претподешавање „LZMA1/LZMA2“: %s"
-#: src/xz/options.c:356
+#: src/xz/options.c
msgid "The sum of lc and lp must not exceed 4"
msgstr "Збир „lc“ и „lp“ не сме премашити 4"
-#: src/xz/suffix.c:160
+#: src/xz/suffix.c
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: Назив датотеке има непознат суфикс, прескачем"
-#: src/xz/suffix.c:181
-#, c-format
-msgid "%s: File already has `%s' suffix, skipping"
+#: src/xz/suffix.c
+#, fuzzy, c-format
+#| msgid "%s: File already has `%s' suffix, skipping"
+msgid "%s: File already has '%s' suffix, skipping"
msgstr "%s: Датотека већ има суфикс „%s“, прескачем"
-#: src/xz/suffix.c:388
+#: src/xz/suffix.c
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s: Неисправан суфикс назива датотеке"
-#: src/xz/util.c:107
+#: src/xz/util.c
#, c-format
msgid "%s: Value is not a non-negative decimal integer"
msgstr "%s: Вредност није не-негативан децимални цео број"
-#: src/xz/util.c:149
+#: src/xz/util.c
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s: Неисправан суфикс умножавача"
-#: src/xz/util.c:151
-msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+#: src/xz/util.c
+#, fuzzy
+#| msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+msgid "Valid suffixes are 'KiB' (2^10), 'MiB' (2^20), and 'GiB' (2^30)."
msgstr "Исправни суфикси су KiB (2^10), MiB (2^20), и GiB (2^30)."
-#: src/xz/util.c:168
-#, c-format
-msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+#: src/xz/util.c
+#, fuzzy, c-format
+#| msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+msgid "Value of the option '%s' must be in the range [%<PRIu64>, %<PRIu64>]"
msgstr "Вредност опције „%s“ мора бити у опсегу [%<PRIu64>, %<PRIu64>]"
-#: src/xz/util.c:270
+#: src/xz/util.c
msgid "Compressed data cannot be read from a terminal"
msgstr "Запаковани подаци се не могу читати из терминала"
-#: src/xz/util.c:283
+#: src/xz/util.c
msgid "Compressed data cannot be written to a terminal"
msgstr "Запаковани подаци се не могу писати на терминал"
-#: src/common/tuklib_exit.c:40
+#: src/lzmainfo/lzmainfo.c
+#, c-format
+msgid ""
+"Usage: %s [--help] [--version] [FILE]...\n"
+"Show information stored in the .lzma file header"
+msgstr ""
+
+#: src/lzmainfo/lzmainfo.c
+#, fuzzy
+#| msgid "%s: Too small to be a valid .xz file"
+msgid "File is too small to be a .lzma file"
+msgstr "%s: Премало је да би било исправна „.xz“ датотека"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "Not a .lzma file"
+msgstr ""
+
+#: src/common/tuklib_exit.c
msgid "Writing to standard output failed"
msgstr "Писање на стандардни излаз није успело"
-#: src/common/tuklib_exit.c:43
+#: src/common/tuklib_exit.c
msgid "Unknown error"
msgstr "Непозната грешка"
+#~ msgid "Failed to enable the sandbox"
+#~ msgstr "Нисам успео да укључим безбедно окружење"
+
#~ msgid "Memory usage limit for compression: "
#~ msgstr "Ограничење коришћења меморије за запакивање: "
diff --git a/po/sv.gmo b/po/sv.gmo
index f1b1302..65d8ad6 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index 58105e0..2a9c543 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,15 +1,20 @@
-# Swedish messages for xz.
-# This file is put in the public domain.
+# SPDX-License-Identifier: 0BSD
+#
+# Swedish translation for xz.
+# Copyright (C) The XZ Utils authors and contributors
+# This file is published under the BSD Zero Clause License.
+#
# Sebastian Rasmussen <sebras@gmail.com>, 2019.
-# Luna Jernberg <droidbittin@gmail.com>, 2022, 2023.
+# Luna Jernberg <droidbittin@gmail.com>, 2022, 2023, 2024.
+# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2024.
#
msgid ""
msgstr ""
-"Project-Id-Version: xz 5.4.4-pre1\n"
+"Project-Id-Version: xz 5.6.0-pre2\n"
"Report-Msgid-Bugs-To: xz@tukaani.org\n"
-"POT-Creation-Date: 2023-10-31 22:33+0800\n"
-"PO-Revision-Date: 2023-07-19 20:25+0200\n"
-"Last-Translator: Luna Jernberg <droidbittin@gmail.com>\n"
+"POT-Creation-Date: 2024-05-29 17:41+0300\n"
+"PO-Revision-Date: 2024-02-15 21:37+0100\n"
+"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
@@ -17,145 +22,173 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-"X-Generator: Poedit 3.3.2\n"
+"X-Generator: Poedit 3.4.2\n"
"X-Poedit-Bookmarks: -1,10,-1,-1,-1,-1,-1,-1,-1,-1\n"
-#: src/xz/args.c:77
+#: src/xz/args.c
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr "%s: Ogiltigt argument till --block-list"
-#: src/xz/args.c:87
+#: src/xz/args.c
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s: För många argument till --block-list"
-#: src/xz/args.c:116
+#: src/xz/args.c
+#, c-format
+msgid "In --block-list, block size is missing after filter chain number '%c:'"
+msgstr "I --block-list saknas blockstorlek efter filterkedjenummer ”%c:”"
+
+#: src/xz/args.c
msgid "0 can only be used as the last element in --block-list"
msgstr "0 kan endast användas som det sista elementet i --block-list"
-#: src/xz/args.c:451
+#: src/xz/args.c
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s: Okänd filformatstyp"
-#: src/xz/args.c:474 src/xz/args.c:482
+#: src/xz/args.c
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s: Integritetskontrolltyp stöds inte"
-#: src/xz/args.c:518
-msgid "Only one file can be specified with `--files' or `--files0'."
+#: src/xz/args.c
+msgid "Only one file can be specified with '--files' or '--files0'."
msgstr "Endast en fil kan anges med ”--files” eller ”--files0”."
#. TRANSLATORS: This is a translatable
#. string because French needs a space
#. before the colon ("%s : %s").
-#: src/xz/args.c:533 src/xz/coder.c:692 src/xz/coder.c:708 src/xz/coder.c:968
-#: src/xz/coder.c:971 src/xz/file_io.c:605 src/xz/file_io.c:679
-#: src/xz/file_io.c:769 src/xz/file_io.c:940 src/xz/list.c:369
-#: src/xz/list.c:415 src/xz/list.c:477 src/xz/list.c:581 src/xz/list.c:590
+#: src/xz/args.c src/xz/coder.c src/xz/file_io.c src/xz/list.c
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: src/xz/args.c:589
+#: src/xz/args.c
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "Miljövariabeln %s innehåller för många argument"
-#: src/xz/args.c:691
+#: src/xz/args.c
msgid "Compression support was disabled at build time"
msgstr "Komprimeringsstöd inaktiverades vid byggtid"
-#: src/xz/args.c:698
+#: src/xz/args.c
msgid "Decompression support was disabled at build time"
msgstr "Dekomprimeringsstöd inaktiverades vid byggtid"
-#: src/xz/args.c:704
+#: src/xz/args.c
msgid "Compression of lzip files (.lz) is not supported"
msgstr "Komprimering av lzip-filer (.lz) stöds inte"
-#: src/xz/args.c:735
+#: src/xz/args.c
+msgid "--block-list is ignored unless compressing to the .xz format"
+msgstr "--block-list ignoreras såvida du inte komprimerar till .xz-formatet"
+
+#: src/xz/args.c
msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout"
-msgstr "Med --format=raw, --suffix=.SUF krävs om data inte skrivs till standard ut"
+msgstr "Med --format=raw krävs --suffix=.SUF om data inte skrivs till standard ut"
-#: src/xz/coder.c:115
+#: src/xz/coder.c
msgid "Maximum number of filters is four"
msgstr "Maximalt antal filter är fyra"
-#: src/xz/coder.c:135
+#: src/xz/coder.c
+#, c-format
+msgid "Error in --filters%s=FILTERS option:"
+msgstr "Fel i flagga för --filters%s=FILTER:"
+
+#: src/xz/coder.c
msgid "Memory usage limit is too low for the given filter setup."
msgstr "Begränsning av minnesanvändning är allt för låg för den angivna filteruppsättningen."
-#: src/xz/coder.c:170
+#: src/xz/coder.c
+#, c-format
+msgid "filter chain %u used by --block-list but not specified with --filters%u="
+msgstr "filterkedja %u används av --block-list men inte specificerad med --filters%u="
+
+#: src/xz/coder.c
msgid "Using a preset in raw mode is discouraged."
msgstr "Det avråds från att använda en förinställning i rått läge."
-#: src/xz/coder.c:172
+#: src/xz/coder.c
msgid "The exact options of the presets may vary between software versions."
msgstr "De exakta flaggorna för förinställningar kan variera mellan programversioner."
-#: src/xz/coder.c:195
+#: src/xz/coder.c
msgid "The .lzma format supports only the LZMA1 filter"
msgstr "Formatet .lzma har endast stöd för LZMA1-filtret"
-#: src/xz/coder.c:203
+#: src/xz/coder.c
msgid "LZMA1 cannot be used with the .xz format"
msgstr "LZMA1 kan inte användas tillsammans med .xz-formatet"
-#: src/xz/coder.c:220
-msgid "The filter chain is incompatible with --flush-timeout"
-msgstr "Filterkedjan är inkompatibel med --flush-timeout"
+#: src/xz/coder.c
+#, c-format
+msgid "Filter chain %u is incompatible with --flush-timeout"
+msgstr "Filterkedja %u är inkompatibel med --flush-timeout"
-#: src/xz/coder.c:226
+#: src/xz/coder.c
msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr "Växlar till entrådsläge på grund av --flush-timeout"
-#: src/xz/coder.c:250
+#: src/xz/coder.c
+#, c-format
+msgid "Unsupported options in filter chain %u"
+msgstr "Flaggor som inte stöds i filterkedjan %u"
+
+#: src/xz/coder.c
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "Använder upp till %<PRIu32> trådar."
-#: src/xz/coder.c:266
+#: src/xz/coder.c
msgid "Unsupported filter chain or filter options"
msgstr "Filterkedja eller filterflaggor stöds inte"
-#: src/xz/coder.c:278
+#: src/xz/coder.c
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "Dekomprimering kommer att kräva %s MiB minne."
-#: src/xz/coder.c:310
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgstr "Reducerade antalet trådar från %s till %s för att inte överstiga begränsningen av minnesanvändning på %s MiB"
-#: src/xz/coder.c:330
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway."
msgstr "Reducerade antalet trådar från %s till en. Den automatiska minnesanvändningsgränsen på %s MiB överskrids fortfarande. %s MiB minne krävs. Fortsätter i alla fall."
-#: src/xz/coder.c:357
+#: src/xz/coder.c
#, c-format
msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB"
msgstr "Ändrar till enkeltrådat läge för att inte överskrida minnesanvändningsgränsen på %s MiB"
-#: src/xz/coder.c:412
+#: src/xz/coder.c
#, c-format
msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
msgstr "Justerade storlek för LZMA%c-lexikon från %s MiB till %s MiB för att inte överstiga begränsningen av minnesanvändning på %s MiB"
-#: src/xz/file_io.c:110 src/xz/file_io.c:118
+#: src/xz/coder.c
+#, c-format
+msgid "Adjusted LZMA%c dictionary size for --filters%u from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgstr "Justerade storlek för LZMA%c-lexikon för --filters%u från %s MiB till %s MiB för att inte överskrida minnesanvändningsgränsen på %s MiB"
+
+#: src/xz/coder.c
+#, c-format
+msgid "Error changing to filter chain %u: %s"
+msgstr "Fel vid ändring till filterkedja %u: %s"
+
+#: src/xz/file_io.c
#, c-format
msgid "Error creating a pipe: %s"
msgstr "Fel vid skapande av rörledning: %s"
-#: src/xz/file_io.c:252
-msgid "Failed to enable the sandbox"
-msgstr "Misslyckades med att aktivera sandlådan"
-
-#: src/xz/file_io.c:294
+#: src/xz/file_io.c
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s: poll() misslyckades: %s"
@@ -170,252 +203,252 @@ msgstr "%s: poll() misslyckades: %s"
#. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously
#. shouldn't be removed.
-#: src/xz/file_io.c:361
+#: src/xz/file_io.c
#, c-format
msgid "%s: File seems to have been moved, not removing"
msgstr "%s: Filen verkar ha flyttats, tar inte bort"
-#: src/xz/file_io.c:368 src/xz/file_io.c:924
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: Kan inte ta bort: %s"
-#: src/xz/file_io.c:394
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: Kan inte sätta filägaren: %s"
-#: src/xz/file_io.c:407
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: Kan inte sätta filgruppen: %s"
-#: src/xz/file_io.c:426
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: Kan inte sätta filrättigheterna: %s"
-#: src/xz/file_io.c:552
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "Fel vid hämtning av filstatusflaggor från standard in: %s"
-#: src/xz/file_io.c:610 src/xz/file_io.c:672
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: Är en symbolisk länk, hoppar över"
-#: src/xz/file_io.c:701
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: Är en katalog, hoppar över"
-#: src/xz/file_io.c:707
+#: src/xz/file_io.c
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: Är inte en vanlig fil, hoppar över"
-#: src/xz/file_io.c:724
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s: Filen har setuid- eller setgid-biten satt, hoppar över"
-#: src/xz/file_io.c:731
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s: Filen har stickybiten satt, hoppar över"
-#: src/xz/file_io.c:738
+#: src/xz/file_io.c
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s: Indatafilen har mer än en hårdlänk, hoppar över"
-#: src/xz/file_io.c:780
+#: src/xz/file_io.c
msgid "Empty filename, skipping"
msgstr "Tomt filnamn, hoppar över"
-#: src/xz/file_io.c:834
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "Fel vid återställning av statusflaggorna för standard in: %s"
-#: src/xz/file_io.c:882
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "Fel vid hämtning av filstatusflaggorna från standard ut: %s"
-#: src/xz/file_io.c:1081
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "Fel vid återställning av O_APPEND-flaggan till standard ut: %s"
-#: src/xz/file_io.c:1093
+#: src/xz/file_io.c
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: Stängning av filen misslyckades: %s"
-#: src/xz/file_io.c:1129 src/xz/file_io.c:1391
+#: src/xz/file_io.c
#, c-format
msgid "%s: Seeking failed when trying to create a sparse file: %s"
msgstr "%s: Sökning misslyckades vid skapande av gles fil: %s"
-#: src/xz/file_io.c:1229
+#: src/xz/file_io.c
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: Läsfel: %s"
-#: src/xz/file_io.c:1259
+#: src/xz/file_io.c
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: Fel vid sökning i fil: %s"
-#: src/xz/file_io.c:1283
+#: src/xz/file_io.c
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: Oväntat filslut"
-#: src/xz/file_io.c:1342
+#: src/xz/file_io.c
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: Skrivfel: %s"
-#: src/xz/hardware.c:238
+#: src/xz/hardware.c
msgid "Disabled"
msgstr "Inaktiverad"
-#: src/xz/hardware.c:269
+#: src/xz/hardware.c
msgid "Amount of physical memory (RAM):"
msgstr "Totalt mängd fysiskt minne (RAM):"
-#: src/xz/hardware.c:270
+#: src/xz/hardware.c
msgid "Number of processor threads:"
msgstr "Antal processortrådar:"
-#: src/xz/hardware.c:271
+#: src/xz/hardware.c
msgid "Compression:"
msgstr "Komprimering:"
-#: src/xz/hardware.c:272
+#: src/xz/hardware.c
msgid "Decompression:"
msgstr "Dekomprimering:"
-#: src/xz/hardware.c:273
+#: src/xz/hardware.c
msgid "Multi-threaded decompression:"
msgstr "Flertrådad dekomprimering:"
-#: src/xz/hardware.c:274
+#: src/xz/hardware.c
msgid "Default for -T0:"
msgstr "Standard för -T0:"
-#: src/xz/hardware.c:292
+#: src/xz/hardware.c
msgid "Hardware information:"
msgstr "Hårdvaruinformation:"
-#: src/xz/hardware.c:299
+#: src/xz/hardware.c
msgid "Memory usage limits:"
msgstr "Minnesanvändningsgränser:"
-#: src/xz/list.c:68
+#: src/xz/list.c
msgid "Streams:"
msgstr "Strömmar:"
-#: src/xz/list.c:69
+#: src/xz/list.c
msgid "Blocks:"
msgstr "Block:"
-#: src/xz/list.c:70
+#: src/xz/list.c
msgid "Compressed size:"
msgstr "Komprimerad storlek:"
-#: src/xz/list.c:71
+#: src/xz/list.c
msgid "Uncompressed size:"
msgstr "Okomprimerad storlek:"
-#: src/xz/list.c:72
+#: src/xz/list.c
msgid "Ratio:"
msgstr "Förhållande:"
-#: src/xz/list.c:73
+#: src/xz/list.c
msgid "Check:"
msgstr "Kontroll:"
-#: src/xz/list.c:74
+#: src/xz/list.c
msgid "Stream Padding:"
msgstr "Strömfyllnad:"
-#: src/xz/list.c:75
+#: src/xz/list.c
msgid "Memory needed:"
msgstr "Minne som behövs:"
-#: src/xz/list.c:76
+#: src/xz/list.c
msgid "Sizes in headers:"
msgstr "Storlek i huvuden:"
-#: src/xz/list.c:79
+#: src/xz/list.c
msgid "Number of files:"
msgstr "Antal filer:"
-#: src/xz/list.c:122
+#: src/xz/list.c
msgid "Stream"
msgstr "Ström"
-#: src/xz/list.c:123
+#: src/xz/list.c
msgid "Block"
msgstr "Block"
-#: src/xz/list.c:124
+#: src/xz/list.c
msgid "Blocks"
msgstr "Block"
-#: src/xz/list.c:125
+#: src/xz/list.c
msgid "CompOffset"
msgstr "Komprimerad position"
-#: src/xz/list.c:126
+#: src/xz/list.c
msgid "UncompOffset"
msgstr "Okomprimerad position"
-#: src/xz/list.c:127
+#: src/xz/list.c
msgid "CompSize"
msgstr "Komprimerad storlek"
-#: src/xz/list.c:128
+#: src/xz/list.c
msgid "UncompSize"
msgstr "Okomprimerad storlek"
-#: src/xz/list.c:129
+#: src/xz/list.c
msgid "TotalSize"
msgstr "Total storlek"
-#: src/xz/list.c:130
+#: src/xz/list.c
msgid "Ratio"
msgstr "Förhållande"
-#: src/xz/list.c:131
+#: src/xz/list.c
msgid "Check"
msgstr "Kontroll"
-#: src/xz/list.c:132
+#: src/xz/list.c
msgid "CheckVal"
msgstr "Kontrollvärde"
-#: src/xz/list.c:133
+#: src/xz/list.c
msgid "Padding"
msgstr "Fyllnad"
-#: src/xz/list.c:134
+#: src/xz/list.c
msgid "Header"
msgstr "Huvud"
-#: src/xz/list.c:135
+#: src/xz/list.c
msgid "Flags"
msgstr "Flaggor"
-#: src/xz/list.c:136
+#: src/xz/list.c
msgid "MemUsage"
msgstr "Minnesanvändning"
-#: src/xz/list.c:137
+#: src/xz/list.c
msgid "Filters"
msgstr "Filters"
@@ -423,7 +456,7 @@ msgstr "Filters"
#. This string is used in tables. In older xz version this
#. string was limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:169
+#: src/xz/list.c
msgid "None"
msgstr "Ingen"
@@ -431,126 +464,130 @@ msgstr "Ingen"
#. but the Check ID is known (here 2). In older xz version these
#. strings were limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:175
+#: src/xz/list.c
msgid "Unknown-2"
msgstr "Okänd-2"
-#: src/xz/list.c:176
+#: src/xz/list.c
msgid "Unknown-3"
msgstr "Okänd-3"
-#: src/xz/list.c:178
+#: src/xz/list.c
msgid "Unknown-5"
msgstr "Okänd-5"
-#: src/xz/list.c:179
+#: src/xz/list.c
msgid "Unknown-6"
msgstr "Okänd-6"
-#: src/xz/list.c:180
+#: src/xz/list.c
msgid "Unknown-7"
msgstr "Okänd-7"
-#: src/xz/list.c:181
+#: src/xz/list.c
msgid "Unknown-8"
msgstr "Okänd-8"
-#: src/xz/list.c:182
+#: src/xz/list.c
msgid "Unknown-9"
msgstr "Okänd-9"
-#: src/xz/list.c:184
+#: src/xz/list.c
msgid "Unknown-11"
msgstr "Okänd-11"
-#: src/xz/list.c:185
+#: src/xz/list.c
msgid "Unknown-12"
msgstr "Okänd-12"
-#: src/xz/list.c:186
+#: src/xz/list.c
msgid "Unknown-13"
msgstr "Okänd-13"
-#: src/xz/list.c:187
+#: src/xz/list.c
msgid "Unknown-14"
msgstr "Okänd-14"
-#: src/xz/list.c:188
+#: src/xz/list.c
msgid "Unknown-15"
msgstr "Okänd-15"
-#: src/xz/list.c:351
+#: src/xz/list.c
#, c-format
msgid "%s: File is empty"
msgstr "%s: Fil är tom"
-#: src/xz/list.c:356
+#: src/xz/list.c
#, c-format
msgid "%s: Too small to be a valid .xz file"
-msgstr "%s: För lite för att vara en giltig xz-fil"
+msgstr "%s: För liten för att vara en giltig .xz-fil"
#. TRANSLATORS: These are column headings. From Strms (Streams)
#. to Ratio, the columns are right aligned. Check and Filename
#. are left aligned. If you need longer words, it's OK to
#. use two lines here. Test with "xz -l foo.xz".
-#: src/xz/list.c:731
+#: src/xz/list.c
msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename"
msgstr "Strmr Block Komprimerd Okomprimerd Förh. Kntrll Filnamn"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "Yes"
msgstr "Ja"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "No"
msgstr "Nej"
-#: src/xz/list.c:1028 src/xz/list.c:1206
+#: src/xz/list.c
#, c-format
msgid " Minimum XZ Utils version: %s\n"
msgstr " Minsta XZ Utils-version: %s\n"
#. TRANSLATORS: %s is an integer. Only the plural form of this
#. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz".
-#: src/xz/list.c:1179
+#: src/xz/list.c
#, c-format
msgid "%s file\n"
msgid_plural "%s files\n"
msgstr[0] "%s fil\n"
msgstr[1] "%s filer\n"
-#: src/xz/list.c:1192
+#: src/xz/list.c
msgid "Totals:"
msgstr "Total:"
-#: src/xz/list.c:1270
+#: src/xz/list.c
msgid "--list works only on .xz files (--format=xz or --format=auto)"
msgstr "--list fungerar endast med .xz-filer (--format=xz eller --format=auto)"
-#: src/xz/list.c:1276
+#: src/xz/list.c
+msgid "Try 'lzmainfo' with .lzma files."
+msgstr "Pröva ”lzmainfo” med .lzma-filer."
+
+#: src/xz/list.c
msgid "--list does not support reading from standard input"
msgstr "--list saknar stöd för att läsa från standard in"
-#: src/xz/main.c:89
+#: src/xz/main.c
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s: Fel vid läsning av filnamn: %s"
-#: src/xz/main.c:96
+#: src/xz/main.c
#, c-format
msgid "%s: Unexpected end of input when reading filenames"
msgstr "%s: Oväntat slut av indata vid läsning av filnamn"
-#: src/xz/main.c:120
+#: src/xz/main.c
#, c-format
-msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
-msgstr "%s: Null-tecken hittat vid läsning av filnamn; kanske menade du att använda ”--files0” istället för ”--files”?"
+msgid "%s: Null character found when reading filenames; maybe you meant to use '--files0' instead of '--files'?"
+msgstr "%s: Nulltecken hittades vid läsning av filnamn; kanske du menade att använda ”--files0” istället för ”--files”?"
-#: src/xz/main.c:188
+#: src/xz/main.c
msgid "Compression and decompression with --robot are not supported yet."
msgstr "Komprimering och dekomprimering med --robot stöds inte än."
-#: src/xz/main.c:266
+#: src/xz/main.c
msgid "Cannot read data from standard input when reading filenames from standard input"
msgstr "Kan inte läsa data från standard in när filnamn läses från standard in"
@@ -558,68 +595,68 @@ msgstr "Kan inte läsa data från standard in när filnamn läses från standard
#. 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:670 src/xz/message.c:725
+#: src/xz/message.c
#, c-format
msgid "%s: "
msgstr "%s: "
-#: src/xz/message.c:797 src/xz/message.c:856
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
msgid "Internal error (bug)"
msgstr "Internt fel"
-#: src/xz/message.c:804
+#: src/xz/message.c
msgid "Cannot establish signal handlers"
msgstr "Kan inte etablera signalhanterare"
-#: src/xz/message.c:813
+#: src/xz/message.c
msgid "No integrity check; not verifying file integrity"
msgstr "Ingen integritetskontroll; kan inte verifiera filintegritet"
-#: src/xz/message.c:816
+#: src/xz/message.c
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "Typ av integritetskontroll stöds inte; verifierar inte filintegritet"
-#: src/xz/message.c:823
+#: src/xz/message.c
msgid "Memory usage limit reached"
msgstr "Begränsning av minnesanvändning uppnådd"
-#: src/xz/message.c:826
+#: src/xz/message.c
msgid "File format not recognized"
msgstr "Filformat okänt"
-#: src/xz/message.c:829
+#: src/xz/message.c
msgid "Unsupported options"
msgstr "Flaggor stöds inte"
-#: src/xz/message.c:832
+#: src/xz/message.c
msgid "Compressed data is corrupt"
msgstr "Komprimerad data är korrupt"
-#: src/xz/message.c:835
+#: src/xz/message.c
msgid "Unexpected end of input"
msgstr "Oväntat avslut av indata"
-#: src/xz/message.c:877
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "%s MiB minne krävs. Begränsaren inaktiverad."
-#: src/xz/message.c:905
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr "%s MiB minne krävs. Begränsningen är %s."
-#: src/xz/message.c:924
+#: src/xz/message.c
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: Filterkedja: %s\n"
-#: src/xz/message.c:935
+#: src/xz/message.c
#, c-format
-msgid "Try `%s --help' for more information."
-msgstr "Prova ”%s --help” för vidare information."
+msgid "Try '%s --help' for more information."
+msgstr "Testa ”%s --help” för mer information."
-#: src/xz/message.c:961
+#: src/xz/message.c
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
@@ -630,15 +667,15 @@ msgstr ""
"Komprimera eller dekomprimera FILer i .xz-formatet.\n"
"\n"
-#: src/xz/message.c:968
+#: src/xz/message.c
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr "Nödvändiga argument till långa flaggor är också nödvändiga för korta flaggor.\n"
-#: src/xz/message.c:972
+#: src/xz/message.c
msgid " Operation mode:\n"
msgstr " Operationsläge:\n"
-#: src/xz/message.c:975
+#: src/xz/message.c
msgid ""
" -z, --compress force compression\n"
" -d, --decompress force decompression\n"
@@ -650,7 +687,7 @@ msgstr ""
" -t, --test testa integritet för komprimerad fil\n"
" -l, --list lista information om .xz-filer"
-#: src/xz/message.c:981
+#: src/xz/message.c
msgid ""
"\n"
" Operation modifiers:\n"
@@ -658,7 +695,7 @@ msgstr ""
"\n"
" Operationsmodifierare:\n"
-#: src/xz/message.c:984
+#: src/xz/message.c
msgid ""
" -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\n"
@@ -669,7 +706,7 @@ msgstr ""
" länkar\n"
" -c, --stdout skriv till standard ut och ta inte bort indatafiler"
-#: src/xz/message.c:993
+#: src/xz/message.c
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
@@ -677,10 +714,10 @@ msgstr ""
" --single-stream dekomprimera endast den första strömmen och hoppa\n"
" tyst över eventuellt återstående indata"
-#: src/xz/message.c:996
+#: src/xz/message.c
msgid ""
" --no-sparse do not create sparse files when decompressing\n"
-" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
+" -S, --suffix=.SUF use the suffix '.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n"
" omitted, filenames are read from the standard input;\n"
" filenames must be terminated with the newline character\n"
@@ -693,7 +730,7 @@ msgstr ""
" filnamn måste avslutas med nyradstecken\n"
" --files0[=FIL] som --files men null-tecknet måste användas"
-#: src/xz/message.c:1005
+#: src/xz/message.c
msgid ""
"\n"
" Basic file format and compression options:\n"
@@ -701,23 +738,23 @@ msgstr ""
"\n"
" Grundläggande filformat och komprimeringsflaggor:\n"
-#: src/xz/message.c:1007
+#: src/xz/message.c
msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n"
-" `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
-" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-" `crc32', `crc64' (default), or `sha256'"
+" 'auto' (default), 'xz', 'lzma', 'lzip', and 'raw'\n"
+" -C, --check=CHECK integrity check type: 'none' (use with caution),\n"
+" 'crc32', 'crc64' (default), or 'sha256'"
msgstr ""
" -F, --format=FMT filformat att koda eller avkoda; möjliga värden är\n"
" ”auto” (standard), ”xz”, ”lzma”, ”lzip” och ”raw”\n"
" -C, --check=CHECK typ av integritetskontroll: ”none” (använd med\n"
" försiktighet), ”crc32”, ”crc64” (standard), eller ”sha256”"
-#: src/xz/message.c:1012
+#: src/xz/message.c
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr " --ignore-check verifiera inte integritet vid dekomprimering"
-#: src/xz/message.c:1016
+#: src/xz/message.c
msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!"
@@ -726,7 +763,7 @@ msgstr ""
" minnesanvändning för komprimerare *och* dekomprimerare\n"
" i beaktande innan du använder 7-9!"
-#: src/xz/message.c:1020
+#: src/xz/message.c
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
@@ -735,16 +772,15 @@ msgstr ""
" använda mer CPU-tid; påverkar inte minnesanvändning för\n"
" dekomprimerare"
-#: src/xz/message.c:1024
+#: src/xz/message.c
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"
+" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
+" as many threads as there are processor cores"
msgstr ""
-" -T, --threads=NUM använd som mest NUM trådar; standard är 1; sätt till 0\n"
-" för att använda så många trådar som det finns\n"
-" processorkärnor"
+" -T, --threads=NUM använd högst NUM trådar; standard är 0 vilket använder\n"
+" lika många trådar som det finns processorkärnor"
-#: src/xz/message.c:1029
+#: src/xz/message.c
msgid ""
" --block-size=SIZE\n"
" start a new .xz block after every SIZE bytes of input;\n"
@@ -755,17 +791,21 @@ msgstr ""
" använd detta för att sätta blockstorleken för trådad\n"
" komprimering"
-#: src/xz/message.c:1033
+#: src/xz/message.c
msgid ""
-" --block-list=SIZES\n"
+" --block-list=BLOCKS\n"
" start a new .xz block after the given comma-separated\n"
-" intervals of uncompressed data"
+" intervals of uncompressed data; optionally, specify a\n"
+" filter chain number (0-9) followed by a ':' before the\n"
+" uncompressed data size"
msgstr ""
-" --block-list=STORLEKAR\n"
-" påbörja ett nytt .xz-block efter de angivna\n"
-" komma-separerade intervallen av okomprimerad data"
+" --block-list=BLOCK\n"
+" starta ett nytt .xz-block efter de givna\n"
+" kommaseparerade intervallen av okomprimerad data;\n"
+" ange valfritt ett filterkedjenummer (0-9) följt av ett\n"
+" ”:” före den okomprimerade datastorleken"
-#: src/xz/message.c:1037
+#: src/xz/message.c
msgid ""
" --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n"
@@ -778,7 +818,7 @@ msgstr ""
" mer indata skulle blockera, så kommer all väntande data\n"
" att spolas ut"
-#: src/xz/message.c:1043
+#: src/xz/message.c
#, no-c-format
msgid ""
" --memlimit-compress=LIMIT\n"
@@ -797,7 +837,7 @@ msgstr ""
" dekomprimering, trådad dekomprimering, eller alla av\n"
" dessa; BEGR är i byte, % RAM, eller 0 för standardvärden"
-#: src/xz/message.c:1052
+#: src/xz/message.c
msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards"
@@ -806,7 +846,7 @@ msgstr ""
" minnesanvändning, ge ett fel istället för att justera ner\n"
" inställningarna"
-#: src/xz/message.c:1058
+#: src/xz/message.c
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
@@ -815,7 +855,37 @@ msgstr ""
" Anpassad filterkedja för komprimering (alternativ till att använda\n"
" förinställningar):"
-#: src/xz/message.c:1067
+#: src/xz/message.c
+msgid ""
+"\n"
+" --filters=FILTERS set the filter chain using the liblzma filter string\n"
+" syntax; use --filters-help for more information"
+msgstr ""
+"\n"
+" --filters=FILTER ställ in filterkedjan med syntax för\n"
+" liblzma-filtersträngar; använd --filters-help för\n"
+" mer information"
+
+#: src/xz/message.c
+msgid ""
+" --filters1=FILTERS ... --filters9=FILTERS\n"
+" set additional filter chains using the liblzma filter\n"
+" string syntax to use with --block-list"
+msgstr ""
+" --filters1=FILTER ... --filters9=FILTER\n"
+" ställ in ytterligare filterkedjor som använder\n"
+" syntax för liblzma-filtersträngar att\n"
+" använda med --block-list"
+
+#: src/xz/message.c
+msgid ""
+" --filters-help display more information about the liblzma filter string\n"
+" syntax and exit."
+msgstr ""
+" --filters-help visa mer information om syntax för\n"
+" liblzma-filtersträngar och avsluta."
+
+#: src/xz/message.c
msgid ""
"\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
@@ -846,7 +916,7 @@ msgstr ""
" bt4)\n"
" depth=NUM maximalt sökdjup; 0=automatisk (standard)"
-#: src/xz/message.c:1082
+#: src/xz/message.c
msgid ""
"\n"
" --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
@@ -856,6 +926,7 @@ msgid ""
" --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
" --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
" --sparc[=OPTS] SPARC BCJ filter\n"
+" --riscv[=OPTS] RISC-V BCJ filter\n"
" Valid OPTS for all BCJ filters:\n"
" start=NUM start offset for conversions (default=0)"
msgstr ""
@@ -864,14 +935,15 @@ msgstr ""
" --arm[=FLAGGOR] ARM BCJ-filter\n"
" --armthumb[=FLAGGOR] ARM-Thumb BCJ-filter\n"
" --arm64[=FLAGGOR] ARM64 BCJ-filter\n"
-" --powerpc[=FLAGGOR] PowerPC BCJ-filter (endast rak byteordning)\n"
+" --powerpc[=FLAGGOR] PowerPC BCJ-filter (endast big endian)\n"
" --ia64[=FLAGGOR] IA-64 (Itanium) BCJ-filter\n"
" --sparc[=FLAGGOR] SPARC BCJ-filter\n"
+" --riscv[=FLAGGOR] RISC-V BCJ-filter\n"
" Giltiga FLAGGOR för alla BCJ-filter:\n"
-" start=NUM startposition för konverteringar\n"
-" (standard=0)"
+" start=NUM startposition för\n"
+" konverteringar (standard=0)"
-#: src/xz/message.c:1095
+#: src/xz/message.c
msgid ""
"\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n"
@@ -883,7 +955,7 @@ msgstr ""
" dist=NUM avstånd mellan byte som subtraheras\n"
" från varandra (1-256; 1)"
-#: src/xz/message.c:1103
+#: src/xz/message.c
msgid ""
"\n"
" Other options:\n"
@@ -891,7 +963,7 @@ msgstr ""
"\n"
" Andra flaggor:\n"
-#: src/xz/message.c:1106
+#: src/xz/message.c
msgid ""
" -q, --quiet suppress warnings; specify twice to suppress errors too\n"
" -v, --verbose be verbose; specify twice for even more verbose"
@@ -900,17 +972,17 @@ msgstr ""
" undertrycka fel\n"
" -v, --verbose var utförlig; ange två gånger för än mer utförlig"
-#: src/xz/message.c:1111
+#: src/xz/message.c
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr " -Q, --no-warn låt inte varningar påverka avslutningsstatus"
-#: src/xz/message.c:1113
+#: src/xz/message.c
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr ""
" --robot använd maskintolkningsbara meddelanden\n"
" (användbara för skript)"
-#: src/xz/message.c:1116
+#: src/xz/message.c
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
@@ -918,7 +990,7 @@ msgstr ""
" --info-memory visa den totala mängden RAM och den för närvarande aktiva\n"
" begränsningen av minnesanvändning och avsluta"
-#: src/xz/message.c:1119
+#: src/xz/message.c
msgid ""
" -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit"
@@ -927,7 +999,7 @@ msgstr ""
" flaggorna)\n"
" -H, --long-help visar denna långa hjälp av avsluta"
-#: src/xz/message.c:1123
+#: src/xz/message.c
msgid ""
" -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)"
@@ -936,11 +1008,12 @@ msgstr ""
" -H, --long-help visa den långa hjälpen (listar också de avancerade\n"
" flaggorna)"
-#: src/xz/message.c:1128
+#: src/xz/message.c
msgid " -V, --version display the version number and exit"
msgstr " -V, --version visa versionsnumret och avsluta"
-#: src/xz/message.c:1130
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
+#, c-format
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
@@ -952,96 +1025,132 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks.
-#: src/xz/message.c:1136
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr ""
-"Rapportera buggar till <%s> (på engelska eller finska).\n"
-"Rapportera översättningsfel till tp-sv@listor.tp-sv.se\n"
+"Rapportera fel till <%s> (på engelska eller finska).\n"
+"Rapportera översättningsfel till <tp-sv@listor.tp-sv.se>\n"
-#: src/xz/message.c:1138
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "%s home page: <%s>\n"
msgstr "%s webbsida: <%s>\n"
-#: src/xz/message.c:1142
+#: src/xz/message.c
msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
msgstr "DETTA ÄR EN UTVECKLINGSVERSION SOM INTE ÄR AVSEDD FÖR PRODUKTIONSANVÄNDNING."
-#: src/xz/options.c:86
+#: src/xz/message.c
+msgid ""
+"Filter chains are set using the --filters=FILTERS or\n"
+"--filters1=FILTERS ... --filters9=FILTERS options. Each filter in the chain\n"
+"can be separated by spaces or '--'. Alternatively a preset <0-9>[e] can be\n"
+"specified instead of a filter chain.\n"
+msgstr ""
+"Filterkedjor ställs in med flaggorna --filters=FILTER eller\n"
+"--filters1=FILTER ... --filters9=FILTER. Varje filter i kedjan kan\n"
+"separeras med mellanslag eller ”--”. Alternativt kan en förinställning\n"
+"<0-9>[e] anges istället för en filterkedja.\n"
+
+#: src/xz/message.c
+msgid "The supported filters and their options are:"
+msgstr "Filtren som stöds och flaggorna för dem är:"
+
+#: src/xz/options.c
#, c-format
-msgid "%s: Options must be `name=value' pairs separated with commas"
+msgid "%s: Options must be 'name=value' pairs separated with commas"
msgstr "%s: Flaggor måste vara ”namn=värde”-par separerade med kommatecken"
-#: src/xz/options.c:93
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option name"
msgstr "%s: Ogiltigt flaggnamn"
-#: src/xz/options.c:113
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option value"
msgstr "%s: Ogiltigt flaggvärde"
-#: src/xz/options.c:248
+#: src/xz/options.c
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "LZMA1/LZMA2-förinställning stöds inte: %s"
-#: src/xz/options.c:356
+#: src/xz/options.c
msgid "The sum of lc and lp must not exceed 4"
msgstr "Summan av lc och lp får inte överstiga 4"
-#: src/xz/suffix.c:160
+#: src/xz/suffix.c
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: Filnamn har okänd filändelse, hoppar över"
-#: src/xz/suffix.c:181
+#: src/xz/suffix.c
#, c-format
-msgid "%s: File already has `%s' suffix, skipping"
-msgstr "%s: Fil har redan ”%s”-ändelse, hoppar över"
+msgid "%s: File already has '%s' suffix, skipping"
+msgstr "%s: Filen har redan ändelsen ”%s”, hoppar över"
-#: src/xz/suffix.c:388
+#: src/xz/suffix.c
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s: Ogiltig filnamnsändelse"
-#: src/xz/util.c:107
+#: src/xz/util.c
#, c-format
msgid "%s: Value is not a non-negative decimal integer"
msgstr "%s: Värdet är inte ett icke-negativt, decimalt heltal"
-#: src/xz/util.c:149
+#: src/xz/util.c
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s: Ogiltig multipeländelse"
-#: src/xz/util.c:151
-msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
-msgstr "Giltiga ändelser är ”KiB” (2^10), ”MiB” (2^20) och ”GiB” (2^30)."
+#: src/xz/util.c
+msgid "Valid suffixes are 'KiB' (2^10), 'MiB' (2^20), and 'GiB' (2^30)."
+msgstr "Giltiga suffix är ”KiB” (2^10), ”MiB” (2^20) och ”GiB” (2^30)."
-#: src/xz/util.c:168
+#: src/xz/util.c
#, c-format
-msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+msgid "Value of the option '%s' must be in the range [%<PRIu64>, %<PRIu64>]"
msgstr "Värdet för flaggan ”%s” måste vara inom intervallet [%<PRIu64>, %<PRIu64>]"
-#: src/xz/util.c:270
+#: src/xz/util.c
msgid "Compressed data cannot be read from a terminal"
msgstr "Komprimerad data kan inte läsas från en terminal"
-#: src/xz/util.c:283
+#: src/xz/util.c
msgid "Compressed data cannot be written to a terminal"
msgstr "Komprimerad data kan inte skrivas till en terminal"
-#: src/common/tuklib_exit.c:40
+#: src/lzmainfo/lzmainfo.c
+#, c-format
+msgid ""
+"Usage: %s [--help] [--version] [FILE]...\n"
+"Show information stored in the .lzma file header"
+msgstr ""
+"Användning: %s [--help] [--version] [FIL]…\n"
+"Visa information som lagrats i .lzma-filhuvudet"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "File is too small to be a .lzma file"
+msgstr "Filen är för liten för att vara en giltig .lzma-fil"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "Not a .lzma file"
+msgstr "Inte en .lzma-fil"
+
+#: src/common/tuklib_exit.c
msgid "Writing to standard output failed"
msgstr "Skrivning till standard ut misslyckades"
-#: src/common/tuklib_exit.c:43
+#: src/common/tuklib_exit.c
msgid "Unknown error"
msgstr "Okänt fel"
+#~ msgid "Failed to enable the sandbox"
+#~ msgstr "Misslyckades med att aktivera sandlådan"
+
#~ msgid "The selected match finder requires at least nice=%<PRIu32>"
#~ msgstr "Den valda matchningshittaren kräver åtminstone nice=%<PRIu32>"
diff --git a/po/tr.gmo b/po/tr.gmo
index 0a89955..12dcddc 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index 902a695..0af70be 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: xz 5.4.0-pre2\n"
"Report-Msgid-Bugs-To: xz@tukaani.org\n"
-"POT-Creation-Date: 2023-10-31 22:33+0800\n"
+"POT-Creation-Date: 2024-05-29 17:41+0300\n"
"PO-Revision-Date: 2022-12-05 19:00+0300\n"
"Last-Translator: Emir SARI <emir_sari@icloud.com>\n"
"Language-Team: Turkish <gnome-turk@gnome.org>\n"
@@ -19,145 +19,179 @@ msgstr ""
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: src/xz/args.c:77
+#: src/xz/args.c
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr "%s: --block-list için geçersiz argüman"
-#: src/xz/args.c:87
+#: src/xz/args.c
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s: --block-list için çok fazla argüman"
-#: src/xz/args.c:116
+#: src/xz/args.c
+#, c-format
+msgid "In --block-list, block size is missing after filter chain number '%c:'"
+msgstr ""
+
+#: src/xz/args.c
msgid "0 can only be used as the last element in --block-list"
msgstr "0, yalnızca --block-list içindeki son öge olarak kullanılabilir"
-#: src/xz/args.c:451
+#: src/xz/args.c
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s: Bilinmeyen dosya biçimi türü"
-#: src/xz/args.c:474 src/xz/args.c:482
+#: src/xz/args.c
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s: Desteklenmeyen bütünlük denetimi türü"
-#: src/xz/args.c:518
-msgid "Only one file can be specified with `--files' or `--files0'."
+#: src/xz/args.c
+#, fuzzy
+#| msgid "Only one file can be specified with `--files' or `--files0'."
+msgid "Only one file can be specified with '--files' or '--files0'."
msgstr "'--files' veya '--files0' ile yalnızca bir dosya belirtilebilir."
#. TRANSLATORS: This is a translatable
#. string because French needs a space
#. before the colon ("%s : %s").
-#: src/xz/args.c:533 src/xz/coder.c:692 src/xz/coder.c:708 src/xz/coder.c:968
-#: src/xz/coder.c:971 src/xz/file_io.c:605 src/xz/file_io.c:679
-#: src/xz/file_io.c:769 src/xz/file_io.c:940 src/xz/list.c:369
-#: src/xz/list.c:415 src/xz/list.c:477 src/xz/list.c:581 src/xz/list.c:590
+#: src/xz/args.c src/xz/coder.c src/xz/file_io.c src/xz/list.c
#, fuzzy, c-format
#| msgid "%s: "
msgid "%s: %s"
msgstr "%s: "
-#: src/xz/args.c:589
+#: src/xz/args.c
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "Çevre değişkeni %s, pek fazla argüman içeriyor"
-#: src/xz/args.c:691
+#: src/xz/args.c
msgid "Compression support was disabled at build time"
msgstr "Sıkıştırma desteği, yapım sırasında devre dışı bırakıldı"
-#: src/xz/args.c:698
+#: src/xz/args.c
msgid "Decompression support was disabled at build time"
msgstr "Sıkıştırma açma desteği, yapım sırasında devre dışı bırakıldı"
-#: src/xz/args.c:704
+#: src/xz/args.c
msgid "Compression of lzip files (.lz) is not supported"
msgstr "lzip dosyalarının (.lz) sıkıştırılması desteklenmiyor"
-#: src/xz/args.c:735
+#: src/xz/args.c
+msgid "--block-list is ignored unless compressing to the .xz format"
+msgstr ""
+
+#: src/xz/args.c
#, fuzzy
#| msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "%s: --format-raw ile, stdout'a yazılmıyorsa --suffix=.SUF gereklidir"
-#: src/xz/coder.c:115
+#: src/xz/coder.c
msgid "Maximum number of filters is four"
msgstr "Olabilecek en çok süzgeç sayısı dörttür"
-#: src/xz/coder.c:135
+#: src/xz/coder.c
+#, c-format
+msgid "Error in --filters%s=FILTERS option:"
+msgstr ""
+
+#: src/xz/coder.c
msgid "Memory usage limit is too low for the given filter setup."
msgstr "Verilen süzgeç ayarı için bellek kullanım sınırı pek düşük."
-#: src/xz/coder.c:170
+#: src/xz/coder.c
+#, c-format
+msgid "filter chain %u used by --block-list but not specified with --filters%u="
+msgstr ""
+
+#: src/xz/coder.c
msgid "Using a preset in raw mode is discouraged."
msgstr "Ham kipte bir önayar kullanımı önerilmez."
-#: src/xz/coder.c:172
+#: src/xz/coder.c
msgid "The exact options of the presets may vary between software versions."
msgstr "Önayarların kesin seçenekleri yazılım sürümleri arasında ayrım gösterebilir."
-#: src/xz/coder.c:195
+#: src/xz/coder.c
msgid "The .lzma format supports only the LZMA1 filter"
msgstr ".lzma biçimi, yalnızca LZMA1 süzgecini destekler"
-#: src/xz/coder.c:203
+#: src/xz/coder.c
msgid "LZMA1 cannot be used with the .xz format"
msgstr "LZMA1, .xz biçimi ile birlikte kullanılamaz"
-#: src/xz/coder.c:220
-msgid "The filter chain is incompatible with --flush-timeout"
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "The filter chain is incompatible with --flush-timeout"
+msgid "Filter chain %u is incompatible with --flush-timeout"
msgstr "Süzgeç zinciri, --flush-timeout ile uyumsuz"
-#: src/xz/coder.c:226
+#: src/xz/coder.c
msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr "--flush-timeout nedeniyle tek iş parçacıklı kipe geçiliyor"
-#: src/xz/coder.c:250
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Unsupported options"
+msgid "Unsupported options in filter chain %u"
+msgstr "Desteklenmeyen seçenekler"
+
+#: src/xz/coder.c
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "En çok %<PRIu32> iş parçacığı kullanılıyor."
-#: src/xz/coder.c:266
+#: src/xz/coder.c
msgid "Unsupported filter chain or filter options"
msgstr "Desteklenmeyen süzgeç zinciri veya süzgeç seçenekleri"
-#: src/xz/coder.c:278
+#: src/xz/coder.c
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "Sıkıştırma açma, %s MiB belleğe gereksinim duyacak."
-#: src/xz/coder.c:310
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgstr "%3$s MiB bellek kullanımı sınırını aşmamak için iş parçacığı sayısı %1$s -> %2$s olarak ayarlandı"
-#: src/xz/coder.c:330
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway."
msgstr "İş parçacıklarının sayısı %s -> 1 olarak azaltıldı. %s MiB otomatik bellek sınırı hâlâ aşılıyor. %s MiB belleğe gereksinim var. Yine de sürdürülüyor."
-#: src/xz/coder.c:357
+#: src/xz/coder.c
#, c-format
msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB"
msgstr "%s MiB bellek kullanım sınırını aşmamak için tek iş parçacıklı kipe geçiliyor"
-#: src/xz/coder.c:412
+#: src/xz/coder.c
#, c-format
msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
msgstr "%4$s MiB bellek kullanımı sınırını aşmamak için LZMA%1$c sözlük boyutu %2$s MiB'tan %3$s MiB'a ayarlandı"
-#: src/xz/file_io.c:110 src/xz/file_io.c:118
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgid "Adjusted LZMA%c dictionary size for --filters%u from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgstr "%4$s MiB bellek kullanımı sınırını aşmamak için LZMA%1$c sözlük boyutu %2$s MiB'tan %3$s MiB'a ayarlandı"
+
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Error creating a pipe: %s"
+msgid "Error changing to filter chain %u: %s"
+msgstr "Veriyolu oluştururken hata: %s"
+
+#: src/xz/file_io.c
#, c-format
msgid "Error creating a pipe: %s"
msgstr "Veriyolu oluştururken hata: %s"
-#: src/xz/file_io.c:252
-msgid "Failed to enable the sandbox"
-msgstr "Kum havuzu etkinleştirilemedi"
-
-#: src/xz/file_io.c:294
+#: src/xz/file_io.c
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s: poll() başarısız oldu: %s"
@@ -172,252 +206,252 @@ msgstr "%s: poll() başarısız oldu: %s"
#. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously
#. shouldn't be removed.
-#: src/xz/file_io.c:361
+#: src/xz/file_io.c
#, c-format
msgid "%s: File seems to have been moved, not removing"
msgstr "%s: Dosya taşınmış gibi görünüyor, kaldırılmıyor"
-#: src/xz/file_io.c:368 src/xz/file_io.c:924
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: Kaldırılamıyor: %s"
-#: src/xz/file_io.c:394
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: Dosya sahibi ayarlanamıyor: %s"
-#: src/xz/file_io.c:407
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: Dosya grubu ayarlanamıyor: %s"
-#: src/xz/file_io.c:426
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: Dosya izinleri ayarlanamıyor: %s"
-#: src/xz/file_io.c:552
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "Standart girdi'den dosya durum bayrakları alınırken hata: %s"
-#: src/xz/file_io.c:610 src/xz/file_io.c:672
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: Bir sembolik bağ, atlanıyor"
-#: src/xz/file_io.c:701
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: Bir dizin, atlanıyor"
-#: src/xz/file_io.c:707
+#: src/xz/file_io.c
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: Olağan bir dosya değil, atlanıyor"
-#: src/xz/file_io.c:724
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s: Dosyanın setuid'si veya setgid biti ayarlanmış, atlanıyor"
-#: src/xz/file_io.c:731
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s: Dosyanın yapışkan bit seti var, atlanıyor"
-#: src/xz/file_io.c:738
+#: src/xz/file_io.c
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s: Girdi dosyasında birden çok sabit bağ var, atlanıyor"
-#: src/xz/file_io.c:780
+#: src/xz/file_io.c
msgid "Empty filename, skipping"
msgstr "Boş dosya adı, atlanıyor"
-#: src/xz/file_io.c:834
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "Standart girdi'ye durum bayrakları geri yüklenirken hata: %s"
-#: src/xz/file_io.c:882
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "Standart çıktı'dan dosya durum bayrakları alınırken hata: %s"
-#: src/xz/file_io.c:1081
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "Standart çıktı'dan O_APPEND bayrağı geri yüklenirken hata: %s"
-#: src/xz/file_io.c:1093
+#: src/xz/file_io.c
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: Dosyayı kapatma başarısız: %s"
-#: src/xz/file_io.c:1129 src/xz/file_io.c:1391
+#: src/xz/file_io.c
#, c-format
msgid "%s: Seeking failed when trying to create a sparse file: %s"
msgstr "%s: Bir aralıklı dosya oluşturmaya çalışırken arama başarısız: %s"
-#: src/xz/file_io.c:1229
+#: src/xz/file_io.c
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: Okuma hatası: %s"
-#: src/xz/file_io.c:1259
+#: src/xz/file_io.c
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: Dosyayı ararken hata: %s"
-#: src/xz/file_io.c:1283
+#: src/xz/file_io.c
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: Dosyanın beklenmedik sonu"
-#: src/xz/file_io.c:1342
+#: src/xz/file_io.c
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: Yazma hatası: %s"
-#: src/xz/hardware.c:238
+#: src/xz/hardware.c
msgid "Disabled"
msgstr "Devre dışı"
-#: src/xz/hardware.c:269
+#: src/xz/hardware.c
msgid "Amount of physical memory (RAM):"
msgstr "Fiziksel bellek miktarı (RAM):"
-#: src/xz/hardware.c:270
+#: src/xz/hardware.c
msgid "Number of processor threads:"
msgstr "İşlemci iş parçacığı sayısı:"
-#: src/xz/hardware.c:271
+#: src/xz/hardware.c
msgid "Compression:"
msgstr "Sıkıştırma:"
-#: src/xz/hardware.c:272
+#: src/xz/hardware.c
msgid "Decompression:"
msgstr "Sıkıştırma açma:"
-#: src/xz/hardware.c:273
+#: src/xz/hardware.c
msgid "Multi-threaded decompression:"
msgstr "Çok iş parçacıklı sıkıştırma açma:"
-#: src/xz/hardware.c:274
+#: src/xz/hardware.c
msgid "Default for -T0:"
msgstr "-T0 için öntanımlı:"
-#: src/xz/hardware.c:292
+#: src/xz/hardware.c
msgid "Hardware information:"
msgstr "Donanım bilgisi:"
-#: src/xz/hardware.c:299
+#: src/xz/hardware.c
msgid "Memory usage limits:"
msgstr "Bellek kullanım sınırları:"
-#: src/xz/list.c:68
+#: src/xz/list.c
msgid "Streams:"
msgstr "Akışlar:"
-#: src/xz/list.c:69
+#: src/xz/list.c
msgid "Blocks:"
msgstr "Bloklar:"
-#: src/xz/list.c:70
+#: src/xz/list.c
msgid "Compressed size:"
msgstr "Sıkıştırılmış boyut:"
-#: src/xz/list.c:71
+#: src/xz/list.c
msgid "Uncompressed size:"
msgstr "Sıkıştırılmamış boyut:"
-#: src/xz/list.c:72
+#: src/xz/list.c
msgid "Ratio:"
msgstr "Oran:"
-#: src/xz/list.c:73
+#: src/xz/list.c
msgid "Check:"
msgstr "Denetim:"
-#: src/xz/list.c:74
+#: src/xz/list.c
msgid "Stream Padding:"
msgstr "Akış dolgusu:"
-#: src/xz/list.c:75
+#: src/xz/list.c
msgid "Memory needed:"
msgstr "Gereken bellek:"
-#: src/xz/list.c:76
+#: src/xz/list.c
msgid "Sizes in headers:"
msgstr "Üstbilgideki boyut:"
-#: src/xz/list.c:79
+#: src/xz/list.c
msgid "Number of files:"
msgstr "Dosya sayısı:"
-#: src/xz/list.c:122
+#: src/xz/list.c
msgid "Stream"
msgstr "Akış"
-#: src/xz/list.c:123
+#: src/xz/list.c
msgid "Block"
msgstr "Blok"
-#: src/xz/list.c:124
+#: src/xz/list.c
msgid "Blocks"
msgstr "Bloklar"
-#: src/xz/list.c:125
+#: src/xz/list.c
msgid "CompOffset"
msgstr "SkştrOfseti"
-#: src/xz/list.c:126
+#: src/xz/list.c
msgid "UncompOffset"
msgstr "SkştrmmşOfset"
-#: src/xz/list.c:127
+#: src/xz/list.c
msgid "CompSize"
msgstr "SkştrBoyut"
-#: src/xz/list.c:128
+#: src/xz/list.c
msgid "UncompSize"
msgstr "SkştrmmşBoyut"
-#: src/xz/list.c:129
+#: src/xz/list.c
msgid "TotalSize"
msgstr "ToplamBoyut"
-#: src/xz/list.c:130
+#: src/xz/list.c
msgid "Ratio"
msgstr "Oran"
-#: src/xz/list.c:131
+#: src/xz/list.c
msgid "Check"
msgstr "Denetim"
-#: src/xz/list.c:132
+#: src/xz/list.c
msgid "CheckVal"
msgstr "DğrDentm"
-#: src/xz/list.c:133
+#: src/xz/list.c
msgid "Padding"
msgstr "Dolgu"
-#: src/xz/list.c:134
+#: src/xz/list.c
msgid "Header"
msgstr "Üstveri"
-#: src/xz/list.c:135
+#: src/xz/list.c
msgid "Flags"
msgstr "Bayrak"
-#: src/xz/list.c:136
+#: src/xz/list.c
msgid "MemUsage"
msgstr "BelKullnm"
-#: src/xz/list.c:137
+#: src/xz/list.c
msgid "Filters"
msgstr "Süzgeçler"
@@ -425,7 +459,7 @@ msgstr "Süzgeçler"
#. This string is used in tables. In older xz version this
#. string was limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:169
+#: src/xz/list.c
msgid "None"
msgstr "Yok"
@@ -433,60 +467,60 @@ msgstr "Yok"
#. but the Check ID is known (here 2). In older xz version these
#. strings were limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:175
+#: src/xz/list.c
msgid "Unknown-2"
msgstr "?-2"
-#: src/xz/list.c:176
+#: src/xz/list.c
msgid "Unknown-3"
msgstr "?-3"
-#: src/xz/list.c:178
+#: src/xz/list.c
msgid "Unknown-5"
msgstr "?-5"
-#: src/xz/list.c:179
+#: src/xz/list.c
msgid "Unknown-6"
msgstr "?-6"
-#: src/xz/list.c:180
+#: src/xz/list.c
msgid "Unknown-7"
msgstr "?-7"
-#: src/xz/list.c:181
+#: src/xz/list.c
msgid "Unknown-8"
msgstr "?-8"
-#: src/xz/list.c:182
+#: src/xz/list.c
msgid "Unknown-9"
msgstr "?-9"
-#: src/xz/list.c:184
+#: src/xz/list.c
msgid "Unknown-11"
msgstr "?-11"
-#: src/xz/list.c:185
+#: src/xz/list.c
msgid "Unknown-12"
msgstr "?-12"
-#: src/xz/list.c:186
+#: src/xz/list.c
msgid "Unknown-13"
msgstr "?-13"
-#: src/xz/list.c:187
+#: src/xz/list.c
msgid "Unknown-14"
msgstr "?-14"
-#: src/xz/list.c:188
+#: src/xz/list.c
msgid "Unknown-15"
msgstr "?-15"
-#: src/xz/list.c:351
+#: src/xz/list.c
#, c-format
msgid "%s: File is empty"
msgstr "%s: Dosya boş"
-#: src/xz/list.c:356
+#: src/xz/list.c
#, c-format
msgid "%s: Too small to be a valid .xz file"
msgstr "%s: Geçerli bir .xz dosyası olabilmek için pek küçük"
@@ -495,64 +529,69 @@ msgstr "%s: Geçerli bir .xz dosyası olabilmek için pek küçük"
#. 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:731
+#: src/xz/list.c
msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename"
msgstr " Akış Blok Sıkıştırıl. Sıkıştırmas. Oran Denetim Dosya ad"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "Yes"
msgstr "Evet"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "No"
msgstr "Hayır"
-#: src/xz/list.c:1028 src/xz/list.c:1206
+#: src/xz/list.c
#, c-format
msgid " Minimum XZ Utils version: %s\n"
msgstr " En düşük XZ Utils sürümü: %s\n"
#. TRANSLATORS: %s is an integer. Only the plural form of this
#. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz".
-#: src/xz/list.c:1179
+#: src/xz/list.c
#, c-format
msgid "%s file\n"
msgid_plural "%s files\n"
msgstr[0] "%s dosya\n"
msgstr[1] "%s dosya\n"
-#: src/xz/list.c:1192
+#: src/xz/list.c
msgid "Totals:"
msgstr "Toplamlar:"
-#: src/xz/list.c:1270
+#: src/xz/list.c
msgid "--list works only on .xz files (--format=xz or --format=auto)"
msgstr "--list, yalnızca .xz dosyalarında çalışır (--format=xz veya --format=auto)"
-#: src/xz/list.c:1276
+#: src/xz/list.c
+msgid "Try 'lzmainfo' with .lzma files."
+msgstr ""
+
+#: src/xz/list.c
msgid "--list does not support reading from standard input"
msgstr "--list, standart girdi'den okumayı desteklemez"
-#: src/xz/main.c:89
+#: src/xz/main.c
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s: Dosya adları okunurken hata: %s"
-#: src/xz/main.c:96
+#: src/xz/main.c
#, c-format
msgid "%s: Unexpected end of input when reading filenames"
msgstr "%s: Dosya adları okunurken beklenmedik girdi sonu"
-#: src/xz/main.c:120
-#, c-format
-msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
+#: src/xz/main.c
+#, fuzzy, c-format
+#| msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
+msgid "%s: Null character found when reading filenames; maybe you meant to use '--files0' instead of '--files'?"
msgstr "%s: Dosya adları okunurken boş karakter bulundu; '--files' yerine '--files0' mı demek istediniz?"
-#: src/xz/main.c:188
+#: src/xz/main.c
msgid "Compression and decompression with --robot are not supported yet."
msgstr "--robot ile sıkıştırma ve sıkıştırma açma henüz desteklenmiyor."
-#: src/xz/main.c:266
+#: src/xz/main.c
msgid "Cannot read data from standard input when reading filenames from standard input"
msgstr "Standart girdi'den dosya adları okunurken standart girdi'den veri okunamıyor"
@@ -560,68 +599,69 @@ msgstr "Standart girdi'den dosya adları okunurken standart girdi'den veri okuna
#. 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:670 src/xz/message.c:725
+#: src/xz/message.c
#, c-format
msgid "%s: "
msgstr "%s: "
-#: src/xz/message.c:797 src/xz/message.c:856
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
msgid "Internal error (bug)"
msgstr "İç hata (yazılım hatası)"
-#: src/xz/message.c:804
+#: src/xz/message.c
msgid "Cannot establish signal handlers"
msgstr "Sinyal işleyicileri tesis edilemiyor"
-#: src/xz/message.c:813
+#: src/xz/message.c
msgid "No integrity check; not verifying file integrity"
msgstr "Bütünlülük denetimi yok; dosya bütünlüğü doğrulanmıyor"
-#: src/xz/message.c:816
+#: src/xz/message.c
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "Desteklenmeyen bütünlülük denetimi türü; dosya bütünlüğü doğrulanmıyor"
-#: src/xz/message.c:823
+#: src/xz/message.c
msgid "Memory usage limit reached"
msgstr "Bellek kullanım sınırına erişildi"
-#: src/xz/message.c:826
+#: src/xz/message.c
msgid "File format not recognized"
msgstr "Dosya biçimi tanımlanamıyor"
-#: src/xz/message.c:829
+#: src/xz/message.c
msgid "Unsupported options"
msgstr "Desteklenmeyen seçenekler"
-#: src/xz/message.c:832
+#: src/xz/message.c
msgid "Compressed data is corrupt"
msgstr "Sıkıştırılmış veri hasarlı"
-#: src/xz/message.c:835
+#: src/xz/message.c
msgid "Unexpected end of input"
msgstr "Beklenmedik girdi sonu"
-#: src/xz/message.c:877
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "%s MiB bellek gerekiyor. Sınırlandırıcı devre dışı bırakıldı."
-#: src/xz/message.c:905
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr "%s MiB bellek gerekiyor. Sınır, %s."
-#: src/xz/message.c:924
+#: src/xz/message.c
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: Süzgeç zinciri: %s\n"
-#: src/xz/message.c:935
-#, c-format
-msgid "Try `%s --help' for more information."
+#: src/xz/message.c
+#, fuzzy, c-format
+#| msgid "Try `%s --help' for more information."
+msgid "Try '%s --help' for more information."
msgstr "Daha fazla bilgi için '%s --help' deneyin."
-#: src/xz/message.c:961
+#: src/xz/message.c
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
@@ -632,15 +672,15 @@ msgstr ""
".xz biçimindeki dosyaları sıkıştırın veya sıkıştırmasını açın.\n"
"\n"
-#: src/xz/message.c:968
+#: src/xz/message.c
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr "Uzun seçenekler için zorunlu olan argümanlar kısa seçenekler için de geçerlidir.\n"
-#: src/xz/message.c:972
+#: src/xz/message.c
msgid " Operation mode:\n"
msgstr " İşlem kipi:\n"
-#: src/xz/message.c:975
+#: src/xz/message.c
msgid ""
" -z, --compress force compression\n"
" -d, --decompress force decompression\n"
@@ -652,7 +692,7 @@ msgstr ""
" -t, --test sıkıştırılmış dosya bütünlüğünü sına\n"
" -l, --list .xz dosyaları hakkında bilgi listele"
-#: src/xz/message.c:981
+#: src/xz/message.c
msgid ""
"\n"
" Operation modifiers:\n"
@@ -660,7 +700,7 @@ msgstr ""
"\n"
" İşlem değiştiricileri:\n"
-#: src/xz/message.c:984
+#: src/xz/message.c
msgid ""
" -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\n"
@@ -671,7 +711,7 @@ msgstr ""
" sıkıştır/sıkıştırmayı aç\n"
" -c, --stdout standart çıktıya yaz ve girdi dosyalarını silme"
-#: src/xz/message.c:993
+#: src/xz/message.c
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
@@ -679,10 +719,18 @@ msgstr ""
" --single-stream yalnızca ilk akışın sıkıştırmasını aç ve sessizce\n"
" kalan girdi verisini yok say"
-#: src/xz/message.c:996
+#: src/xz/message.c
+#, fuzzy
+#| 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"
msgid ""
" --no-sparse do not create sparse files when decompressing\n"
-" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
+" -S, --suffix=.SUF use the suffix '.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n"
" omitted, filenames are read from the standard input;\n"
" filenames must be terminated with the newline character\n"
@@ -696,7 +744,7 @@ msgstr ""
" --files0[=DSYA] --files gibi; ancak sonlandırıcı olarak null karakteri\n"
" kullan"
-#: src/xz/message.c:1005
+#: src/xz/message.c
msgid ""
"\n"
" Basic file format and compression options:\n"
@@ -704,12 +752,18 @@ msgstr ""
"\n"
" Temel dosya biçimi ve sıkıştırma seçenekleri:\n"
-#: src/xz/message.c:1007
+#: src/xz/message.c
+#, fuzzy
+#| msgid ""
+#| " -F, --format=FMT file format to encode or decode; possible values are\n"
+#| " `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
+#| " -C, --check=CHECK integrity check type: `none' (use with caution),\n"
+#| " `crc32', `crc64' (default), or `sha256'"
msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n"
-" `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
-" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-" `crc32', `crc64' (default), or `sha256'"
+" 'auto' (default), 'xz', 'lzma', 'lzip', and 'raw'\n"
+" -C, --check=CHECK integrity check type: 'none' (use with caution),\n"
+" 'crc32', 'crc64' (default), or 'sha256'"
msgstr ""
" -F, --format=BÇM kodlanacak veya kodu çözülecek dosya biçimi; olası\n"
" değerler: `auto' (öntanımlı), `xz', `lzma', 'lzip'\n"
@@ -717,11 +771,11 @@ msgstr ""
" -C, --check=DNTLE bütünlük denetimi türü: `none' (dikkatli kullanın),\n"
" `crc32', `crc64' (öntanımlı) veya `sha256'"
-#: src/xz/message.c:1012
+#: src/xz/message.c
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr " --ignore-check sıkıştırma açarken bütünlük denetimini doğrulama"
-#: src/xz/message.c:1016
+#: src/xz/message.c
msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!"
@@ -729,7 +783,7 @@ msgstr ""
" -0 ... -9 sıkıştırma önayarı; öntanımlı 6; 7-9 kullanmadan önce\n"
" sıkıştırma açıcı bellek kullanımını hesaba katın!"
-#: src/xz/message.c:1020
+#: src/xz/message.c
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
@@ -738,16 +792,20 @@ msgstr ""
" iyileştirmeye çalış; sıkıştırma açıcı bellek\n"
" gereksinimlerini etkilemez"
-#: src/xz/message.c:1024
+#: src/xz/message.c
+#, fuzzy
+#| 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"
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"
+" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
+" as many threads as there are processor cores"
msgstr ""
" -T, --threads=SAYI en çok SAYI iş parçacığı kullan; öntanımlı 1; var olan\n"
" işlemci çekirdeği kadar iş parçacığı kullanmak için\n"
" 0'a ayarlayın"
-#: src/xz/message.c:1029
+#: src/xz/message.c
msgid ""
" --block-size=SIZE\n"
" start a new .xz block after every SIZE bytes of input;\n"
@@ -758,17 +816,24 @@ msgstr ""
" iş parçacığı kullanan sıkıştırma için blok boyutunu\n"
" ayarlamak için bunu kullanın"
-#: src/xz/message.c:1033
+#: src/xz/message.c
+#, fuzzy
+#| msgid ""
+#| " --block-list=SIZES\n"
+#| " start a new .xz block after the given comma-separated\n"
+#| " intervals of uncompressed data"
msgid ""
-" --block-list=SIZES\n"
+" --block-list=BLOCKS\n"
" start a new .xz block after the given comma-separated\n"
-" intervals of uncompressed data"
+" intervals of uncompressed data; optionally, specify a\n"
+" filter chain number (0-9) followed by a ':' before the\n"
+" uncompressed data size"
msgstr ""
" --block-list=BOYUTLAR\n"
" sıkıştırılmamış verinin virgülle ayrılmış verilen\n"
" aralıklarından sonra yeni bir .xz bloku başlat"
-#: src/xz/message.c:1037
+#: src/xz/message.c
msgid ""
" --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n"
@@ -780,7 +845,7 @@ msgstr ""
" milisaniye geçmişse ve daha çok girdi okuma bloklarsa\n"
" tüm bekleyen veri floşlanır"
-#: src/xz/message.c:1043
+#: src/xz/message.c
#, no-c-format
msgid ""
" --memlimit-compress=LIMIT\n"
@@ -799,7 +864,7 @@ msgstr ""
" açma veya tümü için bellek kullanımı sınırını ayarla;\n"
" LİMİT, bayt, RAM % veya öntanımlılar için 0'dır"
-#: src/xz/message.c:1052
+#: src/xz/message.c
msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards"
@@ -807,7 +872,7 @@ msgstr ""
" --no-adjust sıkıştırma ayarları bellek kullanımı sınırını aşarsa\n"
" ayarı aşağı doğru düzeltmek yerine bir hata ver"
-#: src/xz/message.c:1058
+#: src/xz/message.c
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
@@ -815,7 +880,27 @@ msgstr ""
"\n"
" Sıkıştırma için özel süzgeç zinciri (önayar kullanımı alternatifi):"
-#: src/xz/message.c:1067
+#: src/xz/message.c
+msgid ""
+"\n"
+" --filters=FILTERS set the filter chain using the liblzma filter string\n"
+" syntax; use --filters-help for more information"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters1=FILTERS ... --filters9=FILTERS\n"
+" set additional filter chains using the liblzma filter\n"
+" string syntax to use with --block-list"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters-help display more information about the liblzma filter string\n"
+" syntax and exit."
+msgstr ""
+
+#: src/xz/message.c
msgid ""
"\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
@@ -844,7 +929,19 @@ msgstr ""
" mf=AD eşleşme bul (hc3, hc4, bt2, bt3, bt4; bt4)\n"
" depth=NUM en büyük arama derinliği; 0=oto (öntanımlı)"
-#: src/xz/message.c:1082
+#: src/xz/message.c
+#, fuzzy
+#| msgid ""
+#| "\n"
+#| " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
+#| " --arm[=OPTS] ARM BCJ filter\n"
+#| " --armthumb[=OPTS] ARM-Thumb BCJ filter\n"
+#| " --arm64[=OPTS] ARM64 BCJ filter\n"
+#| " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
+#| " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
+#| " --sparc[=OPTS] SPARC BCJ filter\n"
+#| " Valid OPTS for all BCJ filters:\n"
+#| " start=NUM start offset for conversions (default=0)"
msgid ""
"\n"
" --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
@@ -854,6 +951,7 @@ msgid ""
" --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
" --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
" --sparc[=OPTS] SPARC BCJ filter\n"
+" --riscv[=OPTS] RISC-V BCJ filter\n"
" Valid OPTS for all BCJ filters:\n"
" start=NUM start offset for conversions (default=0)"
msgstr ""
@@ -868,7 +966,7 @@ msgstr ""
" Tüm BCJ süzgeçleri için geçerli SÇNKLR:\n"
" start=NUM dönüşümler başlangıç ofseti (öntanımlı=0)"
-#: src/xz/message.c:1095
+#: src/xz/message.c
msgid ""
"\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n"
@@ -881,7 +979,7 @@ msgstr ""
" dist=NUM birbirinden çırakılar baytlar arasındaki\n"
" uzaklık (1-256; 1)"
-#: src/xz/message.c:1103
+#: src/xz/message.c
msgid ""
"\n"
" Other options:\n"
@@ -889,7 +987,7 @@ msgstr ""
"\n"
" Diğer seçenekler:\n"
-#: src/xz/message.c:1106
+#: src/xz/message.c
msgid ""
" -q, --quiet suppress warnings; specify twice to suppress errors too\n"
" -v, --verbose be verbose; specify twice for even more verbose"
@@ -898,17 +996,17 @@ msgstr ""
" belirt\n"
" -v, --verbose ayrıntılı ol; daha da çok ayrıntı için iki kez belirt"
-#: src/xz/message.c:1111
+#: src/xz/message.c
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr " -Q, --no-warn uyarıların çıkış durumunu etkilemesine izin verme"
-#: src/xz/message.c:1113
+#: src/xz/message.c
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr ""
" --robot makine-ayrıştırılabilir iletiler kullan (betikler için\n"
" yararlı)"
-#: src/xz/message.c:1116
+#: src/xz/message.c
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
@@ -916,7 +1014,7 @@ msgstr ""
" --info-memory toplam RAM miktarını ve şu anki bellek kullanımı\n"
" sınırlarını görüntüle ve çık"
-#: src/xz/message.c:1119
+#: src/xz/message.c
msgid ""
" -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit"
@@ -924,7 +1022,7 @@ msgstr ""
" -h, --help kısa yardımı görüntüle (temel seçenekleri listeler)\n"
" -H, --long-help bu uzun yardımı görüntüle ve çık"
-#: src/xz/message.c:1123
+#: src/xz/message.c
msgid ""
" -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)"
@@ -932,11 +1030,12 @@ msgstr ""
" -h, --help bu kısa yardımı görüntüle ve çık\n"
" -H, --long-help uzun yardımı görüntüle (gelişmiş seçenekleri listeler)"
-#: src/xz/message.c:1128
+#: src/xz/message.c
msgid " -V, --version display the version number and exit"
msgstr " -V, --version sürüm numarasını görüntüle ve çık"
-#: src/xz/message.c:1130
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
+#, c-format
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
@@ -948,90 +1047,129 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks.
-#: src/xz/message.c:1136
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr "Hataları <%s> adresine bildirin (İngilizce veya Fince).\n"
-#: src/xz/message.c:1138
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "%s home page: <%s>\n"
msgstr "%s ana sayfası: <%s>\n"
-#: src/xz/message.c:1142
+#: src/xz/message.c
msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
msgstr "BU, NORMAL KULLANIM İÇİN OLMAYAN BİR GELİŞTİRME SÜRÜMÜDÜR."
-#: src/xz/options.c:86
-#, c-format
-msgid "%s: Options must be `name=value' pairs separated with commas"
+#: src/xz/message.c
+msgid ""
+"Filter chains are set using the --filters=FILTERS or\n"
+"--filters1=FILTERS ... --filters9=FILTERS options. Each filter in the chain\n"
+"can be separated by spaces or '--'. Alternatively a preset <0-9>[e] can be\n"
+"specified instead of a filter chain.\n"
+msgstr ""
+
+#: src/xz/message.c
+#, fuzzy
+#| msgid "Unsupported filter chain or filter options"
+msgid "The supported filters and their options are:"
+msgstr "Desteklenmeyen süzgeç zinciri veya süzgeç seçenekleri"
+
+#: src/xz/options.c
+#, fuzzy, c-format
+#| msgid "%s: Options must be `name=value' pairs separated with commas"
+msgid "%s: Options must be 'name=value' pairs separated with commas"
msgstr "%s: Seçenekler, virgülle ayrılmış 'ad=değer' çiftleri olmalıdır"
-#: src/xz/options.c:93
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option name"
msgstr "%s: Geçersiz seçenek adı"
-#: src/xz/options.c:113
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option value"
msgstr "%s: Geçersiz seçenek değeri"
-#: src/xz/options.c:248
+#: src/xz/options.c
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "Desteklenmeyen LZMA1/LZMA2 önayarı: %s"
-#: src/xz/options.c:356
+#: src/xz/options.c
msgid "The sum of lc and lp must not exceed 4"
msgstr "lc ve lp'nin toplamı 4'ü geçmemelidir"
-#: src/xz/suffix.c:160
+#: src/xz/suffix.c
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: Dosya adında bilinmeyen sonek var, atlanıyor"
-#: src/xz/suffix.c:181
-#, c-format
-msgid "%s: File already has `%s' suffix, skipping"
+#: src/xz/suffix.c
+#, fuzzy, c-format
+#| msgid "%s: File already has `%s' suffix, skipping"
+msgid "%s: File already has '%s' suffix, skipping"
msgstr "%s: Dosyada '%s' soneki halihazırda var, atlanıyor"
-#: src/xz/suffix.c:388
+#: src/xz/suffix.c
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s: Geçersiz dosya adı soneki"
-#: src/xz/util.c:107
+#: src/xz/util.c
#, c-format
msgid "%s: Value is not a non-negative decimal integer"
msgstr "%s: Değer, bir negatif olmayan ondalık tamsayı"
-#: src/xz/util.c:149
+#: src/xz/util.c
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s: Geçersiz çoklayıcı soneki"
-#: src/xz/util.c:151
-msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+#: src/xz/util.c
+#, fuzzy
+#| msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+msgid "Valid suffixes are 'KiB' (2^10), 'MiB' (2^20), and 'GiB' (2^30)."
msgstr "Geçerli sonekler: 'KiB' (2^10), 'MiB' (2^20) ve 'GiB' (2^30)."
-#: src/xz/util.c:168
-#, c-format
-msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+#: src/xz/util.c
+#, fuzzy, c-format
+#| msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+msgid "Value of the option '%s' must be in the range [%<PRIu64>, %<PRIu64>]"
msgstr "'%s' seçeneği değeri erimde olmalıdır [%<PRIu64>, %<PRIu64>]"
-#: src/xz/util.c:270
+#: src/xz/util.c
msgid "Compressed data cannot be read from a terminal"
msgstr "Bir uçbirimden sıkıştırılmış veri okunamaz"
-#: src/xz/util.c:283
+#: src/xz/util.c
msgid "Compressed data cannot be written to a terminal"
msgstr "Bir uçbirime sıkıştırılmış veri yazılamaz"
-#: src/common/tuklib_exit.c:40
+#: src/lzmainfo/lzmainfo.c
+#, c-format
+msgid ""
+"Usage: %s [--help] [--version] [FILE]...\n"
+"Show information stored in the .lzma file header"
+msgstr ""
+
+#: src/lzmainfo/lzmainfo.c
+#, fuzzy
+#| msgid "%s: Too small to be a valid .xz file"
+msgid "File is too small to be a .lzma file"
+msgstr "%s: Geçerli bir .xz dosyası olabilmek için pek küçük"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "Not a .lzma file"
+msgstr ""
+
+#: src/common/tuklib_exit.c
msgid "Writing to standard output failed"
msgstr "Standart çıktı'ya yazma başarısız"
-#: src/common/tuklib_exit.c:43
+#: src/common/tuklib_exit.c
msgid "Unknown error"
msgstr "Bilinmeyen hata"
+
+#~ msgid "Failed to enable the sandbox"
+#~ msgstr "Kum havuzu etkinleştirilemedi"
diff --git a/po/uk.gmo b/po/uk.gmo
index 054d8cf..e383add 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index 3ca235e..0a51f68 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -1,13 +1,16 @@
+# SPDX-License-Identifier: 0BSD
+#
# Ukrainian translation for xz.
-# This file is put in the public domain.
+# This file is published under the BSD Zero Clause License.
+# Copyright (C) The XZ Utils authors and contributors
#
-# Yuri Chornoivan <yurchor@ukr.net>, 2019, 2022, 2023.
+# Yuri Chornoivan <yurchor@ukr.net>, 2019, 2022, 2023, 2024.
msgid ""
msgstr ""
-"Project-Id-Version: xz 5.4.4-pre1\n"
+"Project-Id-Version: xz 5.6.0-pre2\n"
"Report-Msgid-Bugs-To: xz@tukaani.org\n"
-"POT-Creation-Date: 2023-10-31 22:33+0800\n"
-"PO-Revision-Date: 2023-07-19 20:53+0300\n"
+"POT-Creation-Date: 2024-05-29 17:41+0300\n"
+"PO-Revision-Date: 2024-02-15 17:26+0200\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
"Language: uk\n"
@@ -16,146 +19,174 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Lokalize 20.12.0\n"
+"X-Generator: Lokalize 23.04.1\n"
-#: src/xz/args.c:77
+#: src/xz/args.c
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr "%s: некоректний аргумент --block-list"
-#: src/xz/args.c:87
+#: src/xz/args.c
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s: забагато аргументів --block-list"
-#: src/xz/args.c:116
+#: src/xz/args.c
+#, c-format
+msgid "In --block-list, block size is missing after filter chain number '%c:'"
+msgstr "У --block-list пропущено розмір блоку після номера ланцюжка фільтрів «%c:»"
+
+#: src/xz/args.c
msgid "0 can only be used as the last element in --block-list"
msgstr "0 можна використовувати лише як останній елемент у --block-list"
-#: src/xz/args.c:451
+#: src/xz/args.c
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s: невідомий тип формату файлів"
-#: src/xz/args.c:474 src/xz/args.c:482
+#: src/xz/args.c
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s: непідтримуваний тип перевірки цілісності"
-#: src/xz/args.c:518
-msgid "Only one file can be specified with `--files' or `--files0'."
+#: src/xz/args.c
+msgid "Only one file can be specified with '--files' or '--files0'."
msgstr "Разом із параметрами --files або --files0 можна вказувати лише один файл."
#. TRANSLATORS: This is a translatable
#. string because French needs a space
#. before the colon ("%s : %s").
-#: src/xz/args.c:533 src/xz/coder.c:692 src/xz/coder.c:708 src/xz/coder.c:968
-#: src/xz/coder.c:971 src/xz/file_io.c:605 src/xz/file_io.c:679
-#: src/xz/file_io.c:769 src/xz/file_io.c:940 src/xz/list.c:369
-#: src/xz/list.c:415 src/xz/list.c:477 src/xz/list.c:581 src/xz/list.c:590
+#: src/xz/args.c src/xz/coder.c src/xz/file_io.c src/xz/list.c
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: src/xz/args.c:589
+#: src/xz/args.c
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "У змінній середовища %s міститься надто багато аргументів"
-#: src/xz/args.c:691
+#: src/xz/args.c
msgid "Compression support was disabled at build time"
msgstr "Підтримку стискання було вимкнено під час збирання програми"
-#: src/xz/args.c:698
+#: src/xz/args.c
msgid "Decompression support was disabled at build time"
msgstr "Підтримку розпаковування було вимкнено під час збирання програми"
-#: src/xz/args.c:704
+#: src/xz/args.c
msgid "Compression of lzip files (.lz) is not supported"
msgstr "Підтримки стискання файлів lzip (.lz) не передбачено"
-#: src/xz/args.c:735
+#: src/xz/args.c
+msgid "--block-list is ignored unless compressing to the .xz format"
+msgstr "--block-list буде проігноровано, якщо дані не стискаються до формату .xz"
+
+#: src/xz/args.c
msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr ""
"Якщо вказано --format=raw, слід вказати і --suffix=.SUF, якщо дані\n"
"виводяться не до стандартного виведення"
-#: src/xz/coder.c:115
+#: src/xz/coder.c
msgid "Maximum number of filters is four"
msgstr "Максимальна кількість фільтрів — чотири"
-#: src/xz/coder.c:135
+#: src/xz/coder.c
+#, c-format
+msgid "Error in --filters%s=FILTERS option:"
+msgstr "Помилка у параметрі --filters%s=ФІЛЬТРИ:"
+
+#: src/xz/coder.c
msgid "Memory usage limit is too low for the given filter setup."
msgstr "Обмеження на використання пам'яті є надто жорстким для вказаного налаштування фільтрів."
-#: src/xz/coder.c:170
+#: src/xz/coder.c
+#, c-format
+msgid "filter chain %u used by --block-list but not specified with --filters%u="
+msgstr "у --block-list використано ланцюжок фільтрів %u, але його не вказано за допомогою --filters%u="
+
+#: src/xz/coder.c
msgid "Using a preset in raw mode is discouraged."
msgstr "Не варто користуватися визначенням рівня у режимі без обробки."
-#: src/xz/coder.c:172
+#: src/xz/coder.c
msgid "The exact options of the presets may vary between software versions."
msgstr "Точний перелік параметрів рівнів може залежати від версій програмного забезпечення."
-#: src/xz/coder.c:195
+#: src/xz/coder.c
msgid "The .lzma format supports only the LZMA1 filter"
msgstr "У форматі .lzma передбачено підтримку лише фільтра LZMA1"
-#: src/xz/coder.c:203
+#: src/xz/coder.c
msgid "LZMA1 cannot be used with the .xz format"
msgstr "LZMA1 не можна використовувати разом із визначенням формату .xz"
-#: src/xz/coder.c:220
-msgid "The filter chain is incompatible with --flush-timeout"
-msgstr "Ланцюжок фільтрування є несумісним із параметром --flush-timeout"
+#: src/xz/coder.c
+#, c-format
+msgid "Filter chain %u is incompatible with --flush-timeout"
+msgstr "Ланцюжок фільтрування %u є несумісним із параметром --flush-timeout"
-#: src/xz/coder.c:226
+#: src/xz/coder.c
msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr "Перемикаємося на однопотоковий режим через використання --flush-timeout"
-#: src/xz/coder.c:250
+#: src/xz/coder.c
+#, c-format
+msgid "Unsupported options in filter chain %u"
+msgstr "Непідтримувані параметри у ланцюжку фільтрів %u"
+
+#: src/xz/coder.c
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "Використовуємо до %<PRIu32> потоків обробки."
-#: src/xz/coder.c:266
+#: src/xz/coder.c
msgid "Unsupported filter chain or filter options"
msgstr "Непідтримуваний ланцюжок фільтрування або непідтримувані параметри фільтрування"
-#: src/xz/coder.c:278
+#: src/xz/coder.c
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "Для розпаковування знадобляться %s МіБ пам'яті."
-#: src/xz/coder.c:310
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgstr "Зменшено кількість потоків обробки з %s до %s, щоб не перевищувати обмеження щодо використання пам'яті у %s МіБ"
-#: src/xz/coder.c:330
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway."
msgstr "Кількість потоків обробки зменшено з %s до одного. Автоматичне обмеження використання пам'яті у %s МіБ усе ще перевищено. Потрібно %s МіБ пам'яті. Продовжуємо роботу попри це."
-#: src/xz/coder.c:357
+#: src/xz/coder.c
#, c-format
msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB"
msgstr "Перемикаємося на однопотоковий режим, щоб не перевищувати обмеження щодо використання пам'яті у %s МіБ"
-#: src/xz/coder.c:412
+#: src/xz/coder.c
#, c-format
msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
msgstr "Скориговано розмір словника LZMA%c з %s МіБ до %s МіБ, щоб не перевищувати обмеження на використання пам'яті у %s МіБ"
-#: src/xz/file_io.c:110 src/xz/file_io.c:118
+#: src/xz/coder.c
+#, c-format
+msgid "Adjusted LZMA%c dictionary size for --filters%u from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgstr "Скориговано розмір словника LZMA%c для --filters%u з %s МіБ до %s МіБ, щоб не перевищувати обмеження на використання пам'яті у %s МіБ"
+
+#: src/xz/coder.c
+#, c-format
+msgid "Error changing to filter chain %u: %s"
+msgstr "Помилка під час спроби перейти до ланцюжка фільтрів %u: %s"
+
+#: src/xz/file_io.c
#, c-format
msgid "Error creating a pipe: %s"
msgstr "Помилка під час створення каналу: %s"
-#: src/xz/file_io.c:252
-msgid "Failed to enable the sandbox"
-msgstr "Не вдалося увімкнути пісочницю"
-
-#: src/xz/file_io.c:294
+#: src/xz/file_io.c
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s: помилка poll(): %s"
@@ -170,252 +201,252 @@ msgstr "%s: помилка poll(): %s"
#. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously
#. shouldn't be removed.
-#: src/xz/file_io.c:361
+#: src/xz/file_io.c
#, c-format
msgid "%s: File seems to have been moved, not removing"
msgstr "%s: здається, файл пересунуто; не вилучаємо"
-#: src/xz/file_io.c:368 src/xz/file_io.c:924
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: не вдалося вилучити: %s"
-#: src/xz/file_io.c:394
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s: не вдалося встановити власника файла: %s"
-#: src/xz/file_io.c:407
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s: не вдалося встановити групу власника файла: %s"
-#: src/xz/file_io.c:426
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s: не вдалося встановити права доступу до файла: %s"
-#: src/xz/file_io.c:552
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "Помилка під час спроби отримання прапорців стану файла зі стандартного джерела вхідних даних: %s"
-#: src/xz/file_io.c:610 src/xz/file_io.c:672
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s: є символічним посиланням; пропускаємо"
-#: src/xz/file_io.c:701
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s: є каталогом; пропускаємо"
-#: src/xz/file_io.c:707
+#: src/xz/file_io.c
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s: не є звичайним файлом; пропускаємо"
-#: src/xz/file_io.c:724
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s: для файла встановлено біт setuid або setgid; пропускаємо"
-#: src/xz/file_io.c:731
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s: для файла встановлено липкий біт; пропускаємо"
-#: src/xz/file_io.c:738
+#: src/xz/file_io.c
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s: виявлено декілька жорстких посилань на файл із вхідними даними; пропускаємо"
-#: src/xz/file_io.c:780
+#: src/xz/file_io.c
msgid "Empty filename, skipping"
msgstr "Порожня назва файла; пропускаємо"
-#: src/xz/file_io.c:834
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "Помилка під час спроби відновлення прапорців стану для стандартного джерела вхідних даних: %s"
-#: src/xz/file_io.c:882
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "Помилка під час спроби отримання прапорців стану файла зі стандартного виведення: %s"
-#: src/xz/file_io.c:1081
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "Помилка під час спроби відновлення прапорця O_APPEND для стандартного виведення: %s"
-#: src/xz/file_io.c:1093
+#: src/xz/file_io.c
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s: не вдалося закрити файл: %s"
-#: src/xz/file_io.c:1129 src/xz/file_io.c:1391
+#: src/xz/file_io.c
#, c-format
msgid "%s: Seeking failed when trying to create a sparse file: %s"
msgstr "%s: помилка позиціювання під час спроби створити розріджений файл: %s"
-#: src/xz/file_io.c:1229
+#: src/xz/file_io.c
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: помилка читання: %s"
-#: src/xz/file_io.c:1259
+#: src/xz/file_io.c
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s: помилка позиціювання у файлі: %s"
-#: src/xz/file_io.c:1283
+#: src/xz/file_io.c
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s: неочікуваний кінець файла"
-#: src/xz/file_io.c:1342
+#: src/xz/file_io.c
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: помилка під час спроби запису: %s"
-#: src/xz/hardware.c:238
+#: src/xz/hardware.c
msgid "Disabled"
msgstr "Вимкнено"
-#: src/xz/hardware.c:269
+#: src/xz/hardware.c
msgid "Amount of physical memory (RAM):"
msgstr "Обсяг фізичної пам'яті (RAM): "
-#: src/xz/hardware.c:270
+#: src/xz/hardware.c
msgid "Number of processor threads:"
msgstr "Кількість потоків обробки процесором:"
-#: src/xz/hardware.c:271
+#: src/xz/hardware.c
msgid "Compression:"
msgstr "Стискання:"
-#: src/xz/hardware.c:272
+#: src/xz/hardware.c
msgid "Decompression:"
msgstr "Розпакування:"
-#: src/xz/hardware.c:273
+#: src/xz/hardware.c
msgid "Multi-threaded decompression:"
msgstr "Багатопотокове розпаковування:"
-#: src/xz/hardware.c:274
+#: src/xz/hardware.c
msgid "Default for -T0:"
msgstr "Типове для -T0:"
-#: src/xz/hardware.c:292
+#: src/xz/hardware.c
msgid "Hardware information:"
msgstr "Дані щодо обладнання:"
-#: src/xz/hardware.c:299
+#: src/xz/hardware.c
msgid "Memory usage limits:"
msgstr "Обмеження на використання пам'яті:"
-#: src/xz/list.c:68
+#: src/xz/list.c
msgid "Streams:"
msgstr "Потоки:"
-#: src/xz/list.c:69
+#: src/xz/list.c
msgid "Blocks:"
msgstr "Блоки:"
-#: src/xz/list.c:70
+#: src/xz/list.c
msgid "Compressed size:"
msgstr "Стиснутий розмір:"
-#: src/xz/list.c:71
+#: src/xz/list.c
msgid "Uncompressed size:"
msgstr "Нестиснутий розмір:"
-#: src/xz/list.c:72
+#: src/xz/list.c
msgid "Ratio:"
msgstr "Пропорція:"
-#: src/xz/list.c:73
+#: src/xz/list.c
msgid "Check:"
msgstr "Перевірка:"
-#: src/xz/list.c:74
+#: src/xz/list.c
msgid "Stream Padding:"
msgstr "Доповнення потоку:"
-#: src/xz/list.c:75
+#: src/xz/list.c
msgid "Memory needed:"
msgstr "Потрібний об'єм пам'яті:"
-#: src/xz/list.c:76
+#: src/xz/list.c
msgid "Sizes in headers:"
msgstr "Розмір у заголовках:"
-#: src/xz/list.c:79
+#: src/xz/list.c
msgid "Number of files:"
msgstr "Кількість файлів:"
-#: src/xz/list.c:122
+#: src/xz/list.c
msgid "Stream"
msgstr "Потік"
-#: src/xz/list.c:123
+#: src/xz/list.c
msgid "Block"
msgstr "Блок"
-#: src/xz/list.c:124
+#: src/xz/list.c
msgid "Blocks"
msgstr "Блоки"
-#: src/xz/list.c:125
+#: src/xz/list.c
msgid "CompOffset"
msgstr "СтисЗсув"
-#: src/xz/list.c:126
+#: src/xz/list.c
msgid "UncompOffset"
msgstr "НестисЗсув"
-#: src/xz/list.c:127
+#: src/xz/list.c
msgid "CompSize"
msgstr "СтисРозмір"
-#: src/xz/list.c:128
+#: src/xz/list.c
msgid "UncompSize"
msgstr "НестисРозмір"
-#: src/xz/list.c:129
+#: src/xz/list.c
msgid "TotalSize"
msgstr "Загальний розмір"
-#: src/xz/list.c:130
+#: src/xz/list.c
msgid "Ratio"
msgstr "Пропорція"
-#: src/xz/list.c:131
+#: src/xz/list.c
msgid "Check"
msgstr "Перевірка"
-#: src/xz/list.c:132
+#: src/xz/list.c
msgid "CheckVal"
msgstr "ЗначПерев"
-#: src/xz/list.c:133
+#: src/xz/list.c
msgid "Padding"
msgstr "Заповн"
-#: src/xz/list.c:134
+#: src/xz/list.c
msgid "Header"
msgstr "Заголов"
-#: src/xz/list.c:135
+#: src/xz/list.c
msgid "Flags"
msgstr "Прапор"
-#: src/xz/list.c:136
+#: src/xz/list.c
msgid "MemUsage"
msgstr "ВикПам"
-#: src/xz/list.c:137
+#: src/xz/list.c
msgid "Filters"
msgstr "Фільтри"
@@ -423,7 +454,7 @@ msgstr "Фільтри"
#. This string is used in tables. In older xz version this
#. string was limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:169
+#: src/xz/list.c
msgid "None"
msgstr "Немає"
@@ -431,60 +462,60 @@ msgstr "Немає"
#. but the Check ID is known (here 2). In older xz version these
#. strings were limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:175
+#: src/xz/list.c
msgid "Unknown-2"
msgstr "Невідомо-2"
-#: src/xz/list.c:176
+#: src/xz/list.c
msgid "Unknown-3"
msgstr "Невідомо-3"
-#: src/xz/list.c:178
+#: src/xz/list.c
msgid "Unknown-5"
msgstr "Невідомо-5"
-#: src/xz/list.c:179
+#: src/xz/list.c
msgid "Unknown-6"
msgstr "Невідомо-6"
-#: src/xz/list.c:180
+#: src/xz/list.c
msgid "Unknown-7"
msgstr "Невідомо-7"
-#: src/xz/list.c:181
+#: src/xz/list.c
msgid "Unknown-8"
msgstr "Невідомо-8"
-#: src/xz/list.c:182
+#: src/xz/list.c
msgid "Unknown-9"
msgstr "Невідомо-9"
-#: src/xz/list.c:184
+#: src/xz/list.c
msgid "Unknown-11"
msgstr "Невідом-11"
-#: src/xz/list.c:185
+#: src/xz/list.c
msgid "Unknown-12"
msgstr "Невідом-12"
-#: src/xz/list.c:186
+#: src/xz/list.c
msgid "Unknown-13"
msgstr "Невідом-13"
-#: src/xz/list.c:187
+#: src/xz/list.c
msgid "Unknown-14"
msgstr "Невідом-14"
-#: src/xz/list.c:188
+#: src/xz/list.c
msgid "Unknown-15"
msgstr "Невідом-15"
-#: src/xz/list.c:351
+#: src/xz/list.c
#, c-format
msgid "%s: File is empty"
msgstr "%s: файл порожній"
-#: src/xz/list.c:356
+#: src/xz/list.c
#, c-format
msgid "%s: Too small to be a valid .xz file"
msgstr "%s: є надто малим для коректного файла .xz"
@@ -493,26 +524,26 @@ msgstr "%s: є надто малим для коректного файла .xz"
#. to Ratio, the columns are right aligned. Check and Filename
#. are left aligned. If you need longer words, it's OK to
#. use two lines here. Test with "xz -l foo.xz".
-#: src/xz/list.c:731
+#: src/xz/list.c
msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename"
msgstr "Потоки Блоки Стиснуті Нестиснуті Коеф. Перев. Назва файла"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "Yes"
msgstr "Так"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "No"
msgstr "Ні"
-#: src/xz/list.c:1028 src/xz/list.c:1206
+#: src/xz/list.c
#, c-format
msgid " Minimum XZ Utils version: %s\n"
msgstr " Мінімальна версія програм XZ: %s\n"
#. TRANSLATORS: %s is an integer. Only the plural form of this
#. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz".
-#: src/xz/list.c:1179
+#: src/xz/list.c
#, c-format
msgid "%s file\n"
msgid_plural "%s files\n"
@@ -520,38 +551,42 @@ msgstr[0] "%s файл\n"
msgstr[1] "%s файли\n"
msgstr[2] "%s файлів\n"
-#: src/xz/list.c:1192
+#: src/xz/list.c
msgid "Totals:"
msgstr "Загалом:"
-#: src/xz/list.c:1270
+#: src/xz/list.c
msgid "--list works only on .xz files (--format=xz or --format=auto)"
msgstr "--list працює лише для файлів .xz (--format=xz або --format=auto)"
-#: src/xz/list.c:1276
+#: src/xz/list.c
+msgid "Try 'lzmainfo' with .lzma files."
+msgstr "Спробуйте «lzmainfo» із файлами .lzma."
+
+#: src/xz/list.c
msgid "--list does not support reading from standard input"
msgstr "Використання --list скасовує підтримку читання зі стандартного джерела вхідних даних"
-#: src/xz/main.c:89
+#: src/xz/main.c
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s: помилка під час читання назв файлів: %s"
-#: src/xz/main.c:96
+#: src/xz/main.c
#, c-format
msgid "%s: Unexpected end of input when reading filenames"
msgstr "%s: неочікуваний кінець вхідних даних під час читання назв файлів"
-#: src/xz/main.c:120
+#: src/xz/main.c
#, c-format
-msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
+msgid "%s: Null character found when reading filenames; maybe you meant to use '--files0' instead of '--files'?"
msgstr "%s: під час читання назв файлів виявлено нуль-символ; можливо, ви хотіли скористатися --files0, а не --files?"
-#: src/xz/main.c:188
+#: src/xz/main.c
msgid "Compression and decompression with --robot are not supported yet."
msgstr "У поточній версії ще не передбачено підтримки стискання або розпаковування з параметром --robot."
-#: src/xz/main.c:266
+#: src/xz/main.c
msgid "Cannot read data from standard input when reading filenames from standard input"
msgstr "Читання даних зі стандартного джерела вхідних даних неможливе, якщо зі стандартного джерела даних виконується читання назв файлів standard input"
@@ -559,68 +594,68 @@ msgstr "Читання даних зі стандартного джерела
#. 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:670 src/xz/message.c:725
+#: src/xz/message.c
#, c-format
msgid "%s: "
msgstr "%s: "
-#: src/xz/message.c:797 src/xz/message.c:856
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
msgid "Internal error (bug)"
msgstr "Внутрішня помилка (вада)"
-#: src/xz/message.c:804
+#: src/xz/message.c
msgid "Cannot establish signal handlers"
msgstr "Не вдалося встановити обробники сигналів"
-#: src/xz/message.c:813
+#: src/xz/message.c
msgid "No integrity check; not verifying file integrity"
msgstr "Немає перевірки цілісності; цілісність файлів перевірено не буде"
-#: src/xz/message.c:816
+#: src/xz/message.c
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "Непідтримуваний тип перевірки цілісності; перевірки цілісності виконано не буде"
-#: src/xz/message.c:823
+#: src/xz/message.c
msgid "Memory usage limit reached"
msgstr "Перевищено обмеження на використання пам'яті"
-#: src/xz/message.c:826
+#: src/xz/message.c
msgid "File format not recognized"
msgstr "Формат файла не розпізнано"
-#: src/xz/message.c:829
+#: src/xz/message.c
msgid "Unsupported options"
msgstr "Непідтримувані параметри"
-#: src/xz/message.c:832
+#: src/xz/message.c
msgid "Compressed data is corrupt"
msgstr "Стиснені дані пошкоджено"
-#: src/xz/message.c:835
+#: src/xz/message.c
msgid "Unexpected end of input"
msgstr "Несподіваний кінець вхідних даних"
-#: src/xz/message.c:877
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "Потрібно %s МіБ пам'яті. Обмеження вимкнено."
-#: src/xz/message.c:905
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr "Потрібно %s МіБ пам'яті. Маємо обмеження у %s."
-#: src/xz/message.c:924
+#: src/xz/message.c
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: ланцюжок фільтрування: %s\n"
-#: src/xz/message.c:935
+#: src/xz/message.c
#, c-format
-msgid "Try `%s --help' for more information."
+msgid "Try '%s --help' for more information."
msgstr "Спробуйте «%s --help» для отримання докладнішого опису."
-#: src/xz/message.c:961
+#: src/xz/message.c
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
@@ -631,17 +666,17 @@ msgstr ""
"Стиснути або розпакувати файли у форматі .xz.\n"
"\n"
-#: src/xz/message.c:968
+#: src/xz/message.c
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr ""
"Обов’язкові аргументи для довгих форм запису параметрів є обов’язковими і для\n"
"скорочених форм.\n"
-#: src/xz/message.c:972
+#: src/xz/message.c
msgid " Operation mode:\n"
msgstr " Режим роботи:\n"
-#: src/xz/message.c:975
+#: src/xz/message.c
msgid ""
" -z, --compress force compression\n"
" -d, --decompress force decompression\n"
@@ -653,7 +688,7 @@ msgstr ""
" -t, --test перевірити цілісність стиснених файлів\n"
" -l, --list вивести дані щодо файлів .xz"
-#: src/xz/message.c:981
+#: src/xz/message.c
msgid ""
"\n"
" Operation modifiers:\n"
@@ -661,7 +696,7 @@ msgstr ""
"\n"
" Модифікатори дій:\n"
-#: src/xz/message.c:984
+#: src/xz/message.c
msgid ""
" -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\n"
@@ -673,7 +708,7 @@ msgstr ""
" -c, --stdout записувати дані до стандартного виведення і не вилучати\n"
" вхідні файли"
-#: src/xz/message.c:993
+#: src/xz/message.c
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
@@ -681,10 +716,10 @@ msgstr ""
" --single-stream розпакувати лише перший потік і без запитань\n"
" ігнорувати решту вхідних даних"
-#: src/xz/message.c:996
+#: src/xz/message.c
msgid ""
" --no-sparse do not create sparse files when decompressing\n"
-" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
+" -S, --suffix=.SUF use the suffix '.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n"
" omitted, filenames are read from the standard input;\n"
" filenames must be terminated with the newline character\n"
@@ -699,7 +734,7 @@ msgstr ""
" --files0[=ФАЙЛ] подібний до --files, але список файлів завершується\n"
" нуль-символом"
-#: src/xz/message.c:1005
+#: src/xz/message.c
msgid ""
"\n"
" Basic file format and compression options:\n"
@@ -707,23 +742,23 @@ msgstr ""
"\n"
" Базові параметри формату файлів і стискання:\n"
-#: src/xz/message.c:1007
+#: src/xz/message.c
msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n"
-" `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
-" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-" `crc32', `crc64' (default), or `sha256'"
+" 'auto' (default), 'xz', 'lzma', 'lzip', and 'raw'\n"
+" -C, --check=CHECK integrity check type: 'none' (use with caution),\n"
+" 'crc32', 'crc64' (default), or 'sha256'"
msgstr ""
" -F, --format=ФОРМАТ формат файлів для кодування або декодування; можливими\n"
" є значення auto (типове), xz, lzma, lzip та raw\n"
" -C, --check=ТИП тип перевірки цілісності: none («немає», будьте обережні),\n"
" crc32, crc64 (типовий) або sha256"
-#: src/xz/message.c:1012
+#: src/xz/message.c
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr " --ignore-check не виконувати перевірку цілісності при розпаковуванні"
-#: src/xz/message.c:1016
+#: src/xz/message.c
msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!"
@@ -732,7 +767,7 @@ msgstr ""
" параметри використання пам'яті для пакування і\n"
" розпакування, перш ніж використовувати рівні 7-9!"
-#: src/xz/message.c:1020
+#: src/xz/message.c
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
@@ -741,17 +776,16 @@ msgstr ""
" процесора; не впливає на вимоги щодо пам'яті для\n"
" розпаковування"
-#: src/xz/message.c:1024
+#: src/xz/message.c
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"
+" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
+" as many threads as there are processor cores"
msgstr ""
" -T, --threads=N використовувати не більше N потоків; типовим є\n"
-" значення 1; встановіть значення 0, щоб програма\n"
-" використовувала стільки потоків, скільки є ядер\n"
-" у процесора"
+" значення 0, за якого програма використовує стільки\n"
+" потоків, скільки є ядер у процесора"
-#: src/xz/message.c:1029
+#: src/xz/message.c
msgid ""
" --block-size=SIZE\n"
" start a new .xz block after every SIZE bytes of input;\n"
@@ -763,17 +797,21 @@ msgstr ""
" встановлення розміру блоку для пакування у декілька\n"
" потоків"
-#: src/xz/message.c:1033
+#: src/xz/message.c
msgid ""
-" --block-list=SIZES\n"
+" --block-list=BLOCKS\n"
" start a new .xz block after the given comma-separated\n"
-" intervals of uncompressed data"
+" intervals of uncompressed data; optionally, specify a\n"
+" filter chain number (0-9) followed by a ':' before the\n"
+" uncompressed data size"
msgstr ""
-" --block-list=РОЗМІРИ\n"
+" --block-list=БЛОКИ\n"
" розпочинати нові блоки .xz після вказаних інтервалів\n"
-" нестиснених даних; записи відокремлюються комами"
+" нестиснених даних; записи відокремлюються комами;\n"
+" можна вказати номер ланцюжка фільтрів (0-9) із\n"
+" завершальною «:» до розміру нестиснених даних"
-#: src/xz/message.c:1037
+#: src/xz/message.c
msgid ""
" --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n"
@@ -786,7 +824,7 @@ msgstr ""
" минуло більше за ЧАС_ОЧІКУВАННЯ мілісекунд, витерти\n"
" усі дані у черзі"
-#: src/xz/message.c:1043
+#: src/xz/message.c
#, no-c-format
msgid ""
" --memlimit-compress=LIMIT\n"
@@ -805,7 +843,7 @@ msgstr ""
" або усіх режимів; ОБМЕЖЕННЯ слід вказувати у байтах,\n"
" % RAM або вказати 0 (типове значення)"
-#: src/xz/message.c:1052
+#: src/xz/message.c
msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards"
@@ -814,7 +852,7 @@ msgstr ""
" обмежень на пам'ять, вивести помилку і не коригувати\n"
" параметри"
-#: src/xz/message.c:1058
+#: src/xz/message.c
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
@@ -823,7 +861,37 @@ msgstr ""
" Нетиповий ланцюжок фільтрування для стискання (альтернатива використання\n"
" рівнів):"
-#: src/xz/message.c:1067
+#: src/xz/message.c
+msgid ""
+"\n"
+" --filters=FILTERS set the filter chain using the liblzma filter string\n"
+" syntax; use --filters-help for more information"
+msgstr ""
+"\n"
+" --filters=ФІЛЬТРИ встановити ланцюжок фільтрів за допомогою синтаксису\n"
+" рядків фільтрів liblzma; скористайтеся --filters-help,\n"
+" щоб дізнатися більше"
+
+#: src/xz/message.c
+msgid ""
+" --filters1=FILTERS ... --filters9=FILTERS\n"
+" set additional filter chains using the liblzma filter\n"
+" string syntax to use with --block-list"
+msgstr ""
+" --filters1=ФІЛЬТРИ ... --filters9=ФІЛЬТРИ\n"
+" встановити додаткові ланцюжки фільтрів за допомогою\n"
+" синтаксису рядків ланцюжка фільтрів liblzma для\n"
+" використання з --block-list"
+
+#: src/xz/message.c
+msgid ""
+" --filters-help display more information about the liblzma filter string\n"
+" syntax and exit."
+msgstr ""
+" --filters-help вивести докладніші відомості щодо синтаксису рядків\n"
+" liblzma і завершити роботу."
+
+#: src/xz/message.c
msgid ""
"\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
@@ -854,7 +922,7 @@ msgstr ""
" bt4; bt4)\n"
" depth=N макс. глибина пошуку; 0=авто (типова)"
-#: src/xz/message.c:1082
+#: src/xz/message.c
msgid ""
"\n"
" --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
@@ -864,6 +932,7 @@ msgid ""
" --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
" --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
" --sparc[=OPTS] SPARC BCJ filter\n"
+" --riscv[=OPTS] RISC-V BCJ filter\n"
" Valid OPTS for all BCJ filters:\n"
" start=NUM start offset for conversions (default=0)"
msgstr ""
@@ -875,10 +944,11 @@ msgstr ""
" --powerpc[=ПАРАМ] фільтр BCJ PowerPC (лише зворотний порядок байтів)\n"
" --ia64[=ПАРАМ] фільтр BCJ IA-64 (Itanium)\n"
" --sparc[=ПАРАМ] фільтр BCJ SPARC\n"
+" --riscv[=ПАРАМ] фільтр BCJ RISC-V\n"
" Коректні значення ПАРАМЕТРИ для усіх фільтрів BCJ:\n"
" start=N початковий зсув для перетворень (типовий=0)"
-#: src/xz/message.c:1095
+#: src/xz/message.c
msgid ""
"\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n"
@@ -890,7 +960,7 @@ msgstr ""
" dist=N відстань між байтами, які віднімаються\n"
" один від одного (1-256; 1)"
-#: src/xz/message.c:1103
+#: src/xz/message.c
msgid ""
"\n"
" Other options:\n"
@@ -898,7 +968,7 @@ msgstr ""
"\n"
" Інші параметри:\n"
-#: src/xz/message.c:1106
+#: src/xz/message.c
msgid ""
" -q, --quiet suppress warnings; specify twice to suppress errors too\n"
" -v, --verbose be verbose; specify twice for even more verbose"
@@ -908,17 +978,17 @@ msgstr ""
" -v, --verbose режим докладних повідомлень; вкажіть двічі, щоб підвищити\n"
" докладність"
-#: src/xz/message.c:1111
+#: src/xz/message.c
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr " -Q, --no-warn попередження не впливають на стан виходу"
-#: src/xz/message.c:1113
+#: src/xz/message.c
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr ""
" --robot використовувати повідомлення для обробки комп'ютером\n"
" (корисно для створення сценаріїв)"
-#: src/xz/message.c:1116
+#: src/xz/message.c
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
@@ -926,7 +996,7 @@ msgstr ""
" --info-memory вивести загальні дані щодо оперативної пам'яті і поточних\n"
" обмежень щодо її використання, потім завершити роботу"
-#: src/xz/message.c:1119
+#: src/xz/message.c
msgid ""
" -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit"
@@ -936,7 +1006,7 @@ msgstr ""
" -H, --long-help вивести це розширене довідкове повідомлення і завершити\n"
" роботу"
-#: src/xz/message.c:1123
+#: src/xz/message.c
msgid ""
" -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)"
@@ -945,11 +1015,12 @@ msgstr ""
" -H, --long-help показати розгорнуту довідку (із усіма додатковими\n"
" параметрами)"
-#: src/xz/message.c:1128
+#: src/xz/message.c
msgid " -V, --version display the version number and exit"
msgstr " -V, --version вивести дані щодо версії програми і завершити роботу"
-#: src/xz/message.c:1130
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
+#, c-format
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
@@ -962,133 +1033,128 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks.
-#: src/xz/message.c:1136
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr ""
"Сповіщайте розробників про вади за адресою <%s>\n"
"(англійською і фінською).\n"
-#: src/xz/message.c:1138
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Домашня сторінка %s: <%s>\n"
-#: src/xz/message.c:1142
+#: src/xz/message.c
msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
msgstr "ЦЕ ТЕСТОВА ВЕРСІЯ, ЯКУ НЕ ПРИЗНАЧЕНО ДЛЯ ПРОМИСЛОВОГО ВИКОРИСТАННЯ."
-#: src/xz/options.c:86
+#: src/xz/message.c
+msgid ""
+"Filter chains are set using the --filters=FILTERS or\n"
+"--filters1=FILTERS ... --filters9=FILTERS options. Each filter in the chain\n"
+"can be separated by spaces or '--'. Alternatively a preset <0-9>[e] can be\n"
+"specified instead of a filter chain.\n"
+msgstr ""
+"Ланцюжки фільтрування встановлюються за допомогою параметрів --filters=ФІЛЬТРИ\n"
+"або --filters1=ФІЛЬТРИ ... --filters9=ФІЛЬТРИ. Кожен фільтр у ланцюжку\n"
+"можна відокремлювати від інших пробілами або «--». Крім того, можна вказати\n"
+"шаблон <0-9>[e] замість ланцюжка фільтрів.\n"
+
+#: src/xz/message.c
+msgid "The supported filters and their options are:"
+msgstr "Підтримувані фільтри та їхні параметри:"
+
+#: src/xz/options.c
#, c-format
-msgid "%s: Options must be `name=value' pairs separated with commas"
+msgid "%s: Options must be 'name=value' pairs separated with commas"
msgstr "%s: параметри -- пари «назва=значення», відокремлені комами"
-#: src/xz/options.c:93
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option name"
msgstr "%s: некоректна назва параметра"
-#: src/xz/options.c:113
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option value"
msgstr "%s: некоректне значення параметра"
-#: src/xz/options.c:248
+#: src/xz/options.c
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "Непідтримуваний рівень стискання LZMA1/LZMA2: %s"
-#: src/xz/options.c:356
+#: src/xz/options.c
msgid "The sum of lc and lp must not exceed 4"
msgstr "Сума lc і lp не повинна перевищувати 4"
-#: src/xz/suffix.c:160
+#: src/xz/suffix.c
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s: назва файла має невідомий суфікс; пропускаємо"
-#: src/xz/suffix.c:181
+#: src/xz/suffix.c
#, c-format
-msgid "%s: File already has `%s' suffix, skipping"
+msgid "%s: File already has '%s' suffix, skipping"
msgstr "%s: файл вже має суфікс назви %s; пропускаємо"
-#: src/xz/suffix.c:388
+#: src/xz/suffix.c
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s: некоректний суфікс назви файла"
-#: src/xz/util.c:107
+#: src/xz/util.c
#, c-format
msgid "%s: Value is not a non-negative decimal integer"
msgstr "%s: значення не є невід'ємним десятковим цілим"
-#: src/xz/util.c:149
+#: src/xz/util.c
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s: некоректний суфікс множника"
-#: src/xz/util.c:151
-msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+#: src/xz/util.c
+msgid "Valid suffixes are 'KiB' (2^10), 'MiB' (2^20), and 'GiB' (2^30)."
msgstr "Коректними є суфікси «KiB» (2^10), «MiB» (2^20) та «GiB» (2^30)."
-#: src/xz/util.c:168
+#: src/xz/util.c
#, c-format
-msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+msgid "Value of the option '%s' must be in the range [%<PRIu64>, %<PRIu64>]"
msgstr "Значення параметра «%s» має належати до діапазону [%<PRIu64>, %<PRIu64>]"
-#: src/xz/util.c:270
+#: src/xz/util.c
msgid "Compressed data cannot be read from a terminal"
msgstr "Стиснені дані неможливо прочитати з термінала"
-#: src/xz/util.c:283
+#: src/xz/util.c
msgid "Compressed data cannot be written to a terminal"
msgstr "Стиснені дані неможливо записати до термінала"
-#: src/common/tuklib_exit.c:40
+#: src/lzmainfo/lzmainfo.c
+#, c-format
+msgid ""
+"Usage: %s [--help] [--version] [FILE]...\n"
+"Show information stored in the .lzma file header"
+msgstr ""
+"Користування: %s [--help] [--version] [ФАЙЛ]...\n"
+"Показати відомості, що зберігаються у заголовку файла .lzma"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "File is too small to be a .lzma file"
+msgstr "Файл є надто малим, щоб бути файлом .lzma"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "Not a .lzma file"
+msgstr "Не є файлом .lzma"
+
+#: src/common/tuklib_exit.c
msgid "Writing to standard output failed"
msgstr "Не вдалося записати дані до стандартного виведення"
-#: src/common/tuklib_exit.c:43
+#: src/common/tuklib_exit.c
msgid "Unknown error"
msgstr "Невідома помилка"
-#~ msgid "The selected match finder requires at least nice=%<PRIu32>"
-#~ msgstr "Вибраний засіб пошуку відповідності потребує принаймні nice=%<PRIu32>"
-
-#~ msgid "Memory usage limit for compression: "
-#~ msgstr "Обмеження пам'яті для пакування: "
-
-#~ msgid " Streams: %s\n"
-#~ msgstr " Потоки: %s\n"
-
-#~ msgid " Blocks: %s\n"
-#~ msgstr " Блоки: %s\n"
-
-#~ msgid " Ratio: %s\n"
-#~ msgstr " Коефіцієнт: %s\n"
-
-#~ msgid " Check: %s\n"
-#~ msgstr " Перевірка: %s\n"
-
-#~ msgid ""
-#~ " Streams:\n"
-#~ " Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding"
-#~ msgstr ""
-#~ " Потоки:\n"
-#~ " Потік Блоки ЗсувСтисн. ЗсувНестисн. РозмСтисн. РозмНестисн Коеф. Перевірка Доповнення"
-
-#~ msgid ""
-#~ " Blocks:\n"
-#~ " Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check"
-#~ msgstr ""
-#~ " Блоки:\n"
-#~ " Потік Блок ЗсувСтисн. ЗсувНестисн. ЗагРозм. РозмНестисн Коеф. Перевірка"
-
-#~ msgid " CheckVal %*s Header Flags CompSize MemUsage Filters"
-#~ msgstr " ЗначПер %*s Загол. Прапорці РозмСтисн ВикПам Фільтри"
-
-#~ msgid "Sandbox is disabled due to incompatible command line arguments"
-#~ msgstr "Пісочницю вимкнено через несумісні параметри у рядку команди"
-
-#~ msgid "Sandbox was successfully enabled"
-#~ msgstr "Пісочницю успішно увімкнено"
+#~ msgid "Failed to enable the sandbox"
+#~ msgstr "Не вдалося увімкнути пісочницю"
diff --git a/po/vi.gmo b/po/vi.gmo
index 9f2543c..40fabad 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index 5f0ee03..2cda72f 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -1,14 +1,16 @@
+# SPDX-License-Identifier: 0BSD
+#
# 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 <vnwildman@gmail.com>, 2014, 2023.
+# This file is published under the BSD Zero Clause License.
+# Trần Ngọc Quân <vnwildman@gmail.com>, 2014-2024.
#
msgid ""
msgstr ""
-"Project-Id-Version: xz 5.4.4-pre1\n"
+"Project-Id-Version: xz 5.6.0-pre2\n"
"Report-Msgid-Bugs-To: xz@tukaani.org\n"
-"POT-Creation-Date: 2023-10-31 22:33+0800\n"
-"PO-Revision-Date: 2023-07-22 10:00+0700\n"
+"POT-Creation-Date: 2024-05-29 17:41+0300\n"
+"PO-Revision-Date: 2024-02-24 10:23+0700\n"
"Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
"Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
"Language: vi\n"
@@ -17,143 +19,172 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Gtranslator 42.0\n"
-#: src/xz/args.c:77
+#: src/xz/args.c
#, 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:87
+#: src/xz/args.c
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s: Quá nhiều đối số cho --block-list"
-#: src/xz/args.c:116
+#: src/xz/args.c
+#, c-format
+msgid "In --block-list, block size is missing after filter chain number '%c:'"
+msgstr "Trong --block-list, cỡ khối thiếu sau số mắt xích bộ lọc '%c:'"
+
+#: src/xz/args.c
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:451
+#: src/xz/args.c
#, 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:474 src/xz/args.c:482
+#: src/xz/args.c
#, 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:518
-msgid "Only one file can be specified with `--files' or `--files0'."
+#: src/xz/args.c
+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”."
#. TRANSLATORS: This is a translatable
#. string because French needs a space
#. before the colon ("%s : %s").
-#: src/xz/args.c:533 src/xz/coder.c:692 src/xz/coder.c:708 src/xz/coder.c:968
-#: src/xz/coder.c:971 src/xz/file_io.c:605 src/xz/file_io.c:679
-#: src/xz/file_io.c:769 src/xz/file_io.c:940 src/xz/list.c:369
-#: src/xz/list.c:415 src/xz/list.c:477 src/xz/list.c:581 src/xz/list.c:590
+#: src/xz/args.c src/xz/coder.c src/xz/file_io.c src/xz/list.c
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: src/xz/args.c:589
+#: src/xz/args.c
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "Biến môi trường %s chứa quá nhiều đối số"
-#: src/xz/args.c:691
+#: src/xz/args.c
msgid "Compression support was disabled at build time"
msgstr "Hỗ trợ nén đã bị vô hiệu hóa tại thời điểm biên dịch"
-#: src/xz/args.c:698
+#: src/xz/args.c
msgid "Decompression support was disabled at build time"
msgstr "Hỗ trợ giải nén đã bị vô hiệu hóa tại thời điểm biên dịch"
-#: src/xz/args.c:704
+#: src/xz/args.c
msgid "Compression of lzip files (.lz) is not supported"
msgstr "Nén tệp lzip (.lz) không được hỗ trợ"
-#: src/xz/args.c:735
+#: src/xz/args.c
+msgid "--block-list is ignored unless compressing to the .xz format"
+msgstr "--block-list bị bỏ qua trừ khi nén theo định dạng .xz"
+
+#: src/xz/args.c
msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "Với --format=raw, --suffix=.SUF được yêu cầu trừ trường hợp ghi ra đầu ra tiêu chuẩn"
-#: src/xz/coder.c:115
+#: src/xz/coder.c
msgid "Maximum number of filters is four"
msgstr "Số lượng bộ lọc tối đa là bốn"
-#: src/xz/coder.c:135
+#: src/xz/coder.c
+#, c-format
+msgid "Error in --filters%s=FILTERS option:"
+msgstr "Có lỗi trong tùy chọn --filters%s=FILTERS:"
+
+#: src/xz/coder.c
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:170
+#: src/xz/coder.c
+#, c-format
+msgid "filter chain %u used by --block-list but not specified with --filters%u="
+msgstr "móc xích lọc %u được sử dụng bởi --block-list nhưng lại chưa đưa ra gì với --filters%u="
+
+#: src/xz/coder.c
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:172
+#: src/xz/coder.c
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:195
+#: src/xz/coder.c
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:203
+#: src/xz/coder.c
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:220
-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
+#, c-format
+msgid "Filter chain %u is incompatible with --flush-timeout"
+msgstr "Móc xích lọc %u là không tương thích với --flush-timeout"
-#: src/xz/coder.c:226
+#: src/xz/coder.c
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:250
+#: src/xz/coder.c
+#, c-format
+msgid "Unsupported options in filter chain %u"
+msgstr "Các tùy chọn không được hỗ trợ trong chuỗi móc xích %u"
+
+#: src/xz/coder.c
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "Dùng đến %<PRIu32> tuyến trình."
-#: src/xz/coder.c:266
+#: src/xz/coder.c
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:278
+#: src/xz/coder.c
#, 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:310
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgstr "Đã giảm số lượng tuyến trình từ %s xuống %s để không vượt quá giới hạn sử dụng bộ nhớ là %s MiB"
-#: src/xz/coder.c:330
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway."
msgstr "Đã giảm số lượng tuyến trình từ %s xuống còn một. Giới hạn sử dụng bộ nhớ tự động %s MiB vẫn đang bị vượt quá. Cần có %s MiB bộ nhớ. Vẫn tiếp tục."
-#: src/xz/coder.c:357
+#: src/xz/coder.c
#, c-format
msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB"
msgstr "Chuyển sang chế độ đơn tuyến trình để không vượt quá giới hạn sử dụng bộ nhớ là %sMiB"
-#: src/xz/coder.c:412
+#: src/xz/coder.c
#, 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:110 src/xz/file_io.c:118
+#: src/xz/coder.c
+#, c-format
+msgid "Adjusted LZMA%c dictionary size for --filters%u 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 cho --filters%u 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/coder.c
+#, c-format
+msgid "Error changing to filter chain %u: %s"
+msgstr "Gặp lỗi thay đổi chuỗi móc xích lọc %u: %s"
+
+#: src/xz/file_io.c
#, 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:252
-msgid "Failed to enable the sandbox"
-msgstr "Không bật được sandbox"
-
-#: src/xz/file_io.c:294
+#: src/xz/file_io.c
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s: hàm poll() bị lỗi: %s"
@@ -168,252 +199,252 @@ msgstr "%s: hàm poll() bị lỗi: %s"
#. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously
#. shouldn't be removed.
-#: src/xz/file_io.c:361
+#: src/xz/file_io.c
#, 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:368 src/xz/file_io.c:924
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s: Không thể gỡ bỏ: %s"
-#: src/xz/file_io.c:394
+#: src/xz/file_io.c
#, 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:407
+#: src/xz/file_io.c
#, 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:426
+#: src/xz/file_io.c
#, 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:552
+#: src/xz/file_io.c
#, 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:610 src/xz/file_io.c:672
+#: src/xz/file_io.c
#, 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:701
+#: src/xz/file_io.c
#, 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:707
+#: src/xz/file_io.c
#, 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:724
+#: src/xz/file_io.c
#, 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:731
+#: src/xz/file_io.c
#, 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:738
+#: src/xz/file_io.c
#, 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:780
+#: src/xz/file_io.c
msgid "Empty filename, skipping"
msgstr "Tên tập tin trống rỗng nên bỏ qua"
-#: src/xz/file_io.c:834
+#: src/xz/file_io.c
#, 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:882
+#: src/xz/file_io.c
#, 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:1081
+#: src/xz/file_io.c
#, 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:1093
+#: src/xz/file_io.c
#, 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:1129 src/xz/file_io.c:1391
+#: src/xz/file_io.c
#, 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:1229
+#: src/xz/file_io.c
#, c-format
msgid "%s: Read error: %s"
msgstr "%s: Lỗi đọc: %s"
-#: src/xz/file_io.c:1259
+#: src/xz/file_io.c
#, 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:1283
+#: src/xz/file_io.c
#, 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:1342
+#: src/xz/file_io.c
#, c-format
msgid "%s: Write error: %s"
msgstr "%s: Lỗi ghi: %s"
-#: src/xz/hardware.c:238
+#: src/xz/hardware.c
msgid "Disabled"
msgstr "Bị tắt"
-#: src/xz/hardware.c:269
+#: src/xz/hardware.c
msgid "Amount of physical memory (RAM):"
msgstr "Tổng dung lượng bộ nhớ vật lý (RAM):"
-#: src/xz/hardware.c:270
+#: src/xz/hardware.c
msgid "Number of processor threads:"
msgstr "Số luồng bộ xử lý:"
-#: src/xz/hardware.c:271
+#: src/xz/hardware.c
msgid "Compression:"
msgstr "Nén:"
-#: src/xz/hardware.c:272
+#: src/xz/hardware.c
msgid "Decompression:"
msgstr "Giải nén:"
-#: src/xz/hardware.c:273
+#: src/xz/hardware.c
msgid "Multi-threaded decompression:"
msgstr "Giải nén đa luồng:"
-#: src/xz/hardware.c:274
+#: src/xz/hardware.c
msgid "Default for -T0:"
msgstr "Mặc định cho -T0:"
-#: src/xz/hardware.c:292
+#: src/xz/hardware.c
msgid "Hardware information:"
msgstr "Thông tin phần cứng:"
-#: src/xz/hardware.c:299
+#: src/xz/hardware.c
msgid "Memory usage limits:"
msgstr "Đã chạm mốc giới hạn sử dụng bộ nhớ:"
-#: src/xz/list.c:68
+#: src/xz/list.c
msgid "Streams:"
msgstr "Các luồng dữ liệu:"
-#: src/xz/list.c:69
+#: src/xz/list.c
msgid "Blocks:"
msgstr "Khối:"
-#: src/xz/list.c:70
+#: src/xz/list.c
msgid "Compressed size:"
msgstr "Kích cỡ đã nén:"
-#: src/xz/list.c:71
+#: src/xz/list.c
msgid "Uncompressed size:"
msgstr "Kích cỡ đã giải nén:"
-#: src/xz/list.c:72
+#: src/xz/list.c
msgid "Ratio:"
msgstr "Tỉ lệ:"
-#: src/xz/list.c:73
+#: src/xz/list.c
msgid "Check:"
msgstr "Kiểm tra:"
-#: src/xz/list.c:74
+#: src/xz/list.c
msgid "Stream Padding:"
msgstr "Đệm luồng dữ liệu:"
-#: src/xz/list.c:75
+#: src/xz/list.c
msgid "Memory needed:"
msgstr "Bộ nhớ cần:"
-#: src/xz/list.c:76
+#: src/xz/list.c
msgid "Sizes in headers:"
msgstr "Kích cỡ phần đầu:"
-#: src/xz/list.c:79
+#: src/xz/list.c
msgid "Number of files:"
msgstr "Số lượng tập tin:"
-#: src/xz/list.c:122
+#: src/xz/list.c
msgid "Stream"
msgstr "Luồng dữ liệu"
-#: src/xz/list.c:123
+#: src/xz/list.c
msgid "Block"
msgstr "Khối"
-#: src/xz/list.c:124
+#: src/xz/list.c
msgid "Blocks"
msgstr "Khối"
-#: src/xz/list.c:125
+#: src/xz/list.c
msgid "CompOffset"
msgstr "BùNén"
-#: src/xz/list.c:126
+#: src/xz/list.c
msgid "UncompOffset"
msgstr "BùGiảiNén"
-#: src/xz/list.c:127
+#: src/xz/list.c
msgid "CompSize"
msgstr "CỡNén"
-#: src/xz/list.c:128
+#: src/xz/list.c
msgid "UncompSize"
msgstr "CỡGiảiNén"
-#: src/xz/list.c:129
+#: src/xz/list.c
msgid "TotalSize"
msgstr "CỡTổng"
-#: src/xz/list.c:130
+#: src/xz/list.c
msgid "Ratio"
msgstr "Tỷ lệ"
-#: src/xz/list.c:131
+#: src/xz/list.c
msgid "Check"
msgstr "Kiểm tra"
-#: src/xz/list.c:132
+#: src/xz/list.c
msgid "CheckVal"
msgstr "Gtr.Kiểm"
-#: src/xz/list.c:133
+#: src/xz/list.c
msgid "Padding"
msgstr "Đệm"
-#: src/xz/list.c:134
+#: src/xz/list.c
msgid "Header"
msgstr "Phần đầu"
-#: src/xz/list.c:135
+#: src/xz/list.c
msgid "Flags"
msgstr "Cờ"
-#: src/xz/list.c:136
+#: src/xz/list.c
msgid "MemUsage"
msgstr "DùngBộNhớ"
-#: src/xz/list.c:137
+#: src/xz/list.c
msgid "Filters"
msgstr "Bộ lọc"
@@ -421,7 +452,7 @@ msgstr "Bộ lọc"
#. This string is used in tables. In older xz version this
#. string was limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:169
+#: src/xz/list.c
msgid "None"
msgstr "Không"
@@ -429,60 +460,60 @@ msgstr "Không"
#. but the Check ID is known (here 2). In older xz version these
#. strings were limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:175
+#: src/xz/list.c
msgid "Unknown-2"
-msgstr "Chưa_biết2"
+msgstr "ChưaBiết2"
-#: src/xz/list.c:176
+#: src/xz/list.c
msgid "Unknown-3"
-msgstr "Chưa_biết3"
+msgstr "ChưaBiết3"
-#: src/xz/list.c:178
+#: src/xz/list.c
msgid "Unknown-5"
-msgstr "Chưa_biết5"
+msgstr "ChưaBiết5"
-#: src/xz/list.c:179
+#: src/xz/list.c
msgid "Unknown-6"
-msgstr "Chưa_biết6"
+msgstr "ChưaBiết6"
-#: src/xz/list.c:180
+#: src/xz/list.c
msgid "Unknown-7"
-msgstr "Chưa_biết7"
+msgstr "ChưaBiết7"
-#: src/xz/list.c:181
+#: src/xz/list.c
msgid "Unknown-8"
-msgstr "Chưa_biết8"
+msgstr "ChưaBiết8"
-#: src/xz/list.c:182
+#: src/xz/list.c
msgid "Unknown-9"
-msgstr "Chưa_biết9"
+msgstr "ChưaBiết9"
-#: src/xz/list.c:184
+#: src/xz/list.c
msgid "Unknown-11"
msgstr "ChưaBiết11"
-#: src/xz/list.c:185
+#: src/xz/list.c
msgid "Unknown-12"
msgstr "ChưaBiết12"
-#: src/xz/list.c:186
+#: src/xz/list.c
msgid "Unknown-13"
msgstr "ChưaBiết13"
-#: src/xz/list.c:187
+#: src/xz/list.c
msgid "Unknown-14"
msgstr "ChưaBiết14"
-#: src/xz/list.c:188
+#: src/xz/list.c
msgid "Unknown-15"
msgstr "ChưaBiết15"
-#: src/xz/list.c:351
+#: src/xz/list.c
#, c-format
msgid "%s: File is empty"
msgstr "%s: Tập tin trống rỗng"
-#: src/xz/list.c:356
+#: src/xz/list.c
#, 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ệ"
@@ -491,63 +522,67 @@ msgstr "%s: Là quá nhỏ đối với tập tin .xz hợp lệ"
#. to Ratio, the columns are right aligned. Check and Filename
#. are left aligned. If you need longer words, it's OK to
#. use two lines here. Test with "xz -l foo.xz".
-#: src/xz/list.c:731
+#: src/xz/list.c
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:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "Yes"
msgstr "Có"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "No"
msgstr "Không"
-#: src/xz/list.c:1028 src/xz/list.c:1206
+#: src/xz/list.c
#, 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:1179
+#: src/xz/list.c
#, c-format
msgid "%s file\n"
msgid_plural "%s files\n"
msgstr[0] "%s tập tin\n"
-#: src/xz/list.c:1192
+#: src/xz/list.c
msgid "Totals:"
msgstr "Tổng cộng:"
-#: src/xz/list.c:1270
+#: src/xz/list.c
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:1276
+#: src/xz/list.c
+msgid "Try 'lzmainfo' with .lzma files."
+msgstr "Thử 'lzmainfo' với các tập tin .lzma."
+
+#: src/xz/list.c
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
+#: src/xz/main.c
#, 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
+#: src/xz/main.c
#, 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
+#: src/xz/main.c
#, c-format
-msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
-msgstr "%s: Gặp ký hiệu Null khi đọc tên tập tin; có lẽ ý bạn muốn là dùng “--files0” chứ không phải “--files'?"
+msgid "%s: Null character found when reading filenames; maybe you meant to use '--files0' instead of '--files'?"
+msgstr "%s: Gặp ký hiệu null khi đọc tên tập tin; có lẽ ý bạn muốn là dùng “--files0” chứ không phải “--files'?"
-#: src/xz/main.c:188
+#: src/xz/main.c
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:266
+#: src/xz/main.c
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"
@@ -555,68 +590,68 @@ msgstr "Không thể đọc dữ liệu từ đầu vào tiêu chuẩn khi đọ
#. 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:670 src/xz/message.c:725
+#: src/xz/message.c
#, c-format
msgid "%s: "
msgstr "%s: "
-#: src/xz/message.c:797 src/xz/message.c:856
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
msgid "Internal error (bug)"
msgstr "Lỗi nội bộ (lỗi)"
-#: src/xz/message.c:804
+#: src/xz/message.c
msgid "Cannot establish signal handlers"
msgstr "Không thể thiết lập bộ xử lý tín hiệu"
-#: src/xz/message.c:813
+#: src/xz/message.c
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:816
+#: src/xz/message.c
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:823
+#: src/xz/message.c
msgid "Memory usage limit reached"
msgstr "Đã chạm mốc giới hạn sử dụng bộ nhớ"
-#: src/xz/message.c:826
+#: src/xz/message.c
msgid "File format not recognized"
msgstr "Không nhận ra định dạng tập tin"
-#: src/xz/message.c:829
+#: src/xz/message.c
msgid "Unsupported options"
msgstr "Tùy chọn không được hỗ trợ"
-#: src/xz/message.c:832
+#: src/xz/message.c
msgid "Compressed data is corrupt"
msgstr "Dữ liệu đã nén bị hỏng"
-#: src/xz/message.c:835
+#: src/xz/message.c
msgid "Unexpected end of input"
msgstr "Gặp kết thúc đầu vào bất ngờ"
-#: src/xz/message.c:877
+#: src/xz/message.c
#, 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:905
+#: src/xz/message.c
#, 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:924
+#: src/xz/message.c
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s: Móc xích lọc: %s\n"
-#: src/xz/message.c:935
+#: src/xz/message.c
#, c-format
-msgid "Try `%s --help' for more information."
+msgid "Try '%s --help' for more information."
msgstr "Hãy chạy lệnh “%s --help” để xem thông tin thêm."
-#: src/xz/message.c:961
+#: src/xz/message.c
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
@@ -627,15 +662,15 @@ msgstr ""
"Nén hoặc giải nén các TẬP TIN có định dạng .xz.\n"
"\n"
-#: src/xz/message.c:968
+#: src/xz/message.c
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:972
+#: src/xz/message.c
msgid " Operation mode:\n"
msgstr " Chế độ thao tác:\n"
-#: src/xz/message.c:975
+#: src/xz/message.c
msgid ""
" -z, --compress force compression\n"
" -d, --decompress force decompression\n"
@@ -647,7 +682,7 @@ msgstr ""
" -t, --test kiểm tra tính toàn vẹn của tập tin nén\n"
" -l, --list liệt kê các thông tin về tập tin .xz"
-#: src/xz/message.c:981
+#: src/xz/message.c
msgid ""
"\n"
" Operation modifiers:\n"
@@ -655,7 +690,7 @@ msgstr ""
"\n"
" Bộ chỉnh sửa thao tác:\n"
-#: src/xz/message.c:984
+#: src/xz/message.c
msgid ""
" -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\n"
@@ -665,7 +700,7 @@ msgstr ""
" -f, --force buộc ghi đè tập tin đầu ra và (giải) nén các liên kết\n"
" -c, --stdout ghi ra đầu ra tiêu chuẩn và không xóa tập tin đầu vào"
-#: src/xz/message.c:993
+#: src/xz/message.c
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
@@ -673,10 +708,10 @@ 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:996
+#: src/xz/message.c
msgid ""
" --no-sparse do not create sparse files when decompressing\n"
-" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
+" -S, --suffix=.SUF use the suffix '.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n"
" omitted, filenames are read from the standard input;\n"
" filenames must be terminated with the newline character\n"
@@ -689,7 +724,7 @@ msgstr ""
" 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:1005
+#: src/xz/message.c
msgid ""
"\n"
" Basic file format and compression options:\n"
@@ -697,23 +732,23 @@ msgstr ""
"\n"
" Các tùy chọn về định dạng và nén cơ bản:\n"
-#: src/xz/message.c:1007
+#: src/xz/message.c
msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n"
-" `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
-" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-" `crc32', `crc64' (default), or `sha256'"
+" 'auto' (default), 'xz', 'lzma', 'lzip', and 'raw'\n"
+" -C, --check=CHECK integrity check type: 'none' (use with caution),\n"
+" 'crc32', 'crc64' (default), or 'sha256'"
msgstr ""
" -F, --format=Đ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”, “lzip”, 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:1012
+#: src/xz/message.c
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:1016
+#: src/xz/message.c
msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!"
@@ -721,7 +756,7 @@ 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:1020
+#: src/xz/message.c
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
@@ -729,15 +764,15 @@ 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:1024
+#: src/xz/message.c
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"
+" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
+" 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ý"
+" -T, --threads=SỐ dùng tối đa là SỐ tuyến trình; mặc định là 0 ý là\n"
+" dùng số lượng bằng số lõi vi xử lý"
-#: src/xz/message.c:1029
+#: src/xz/message.c
msgid ""
" --block-size=SIZE\n"
" start a new .xz block after every SIZE bytes of input;\n"
@@ -747,17 +782,21 @@ msgstr ""
" 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:1033
+#: src/xz/message.c
msgid ""
-" --block-list=SIZES\n"
+" --block-list=BLOCKS\n"
" start a new .xz block after the given comma-separated\n"
-" intervals of uncompressed data"
+" intervals of uncompressed data; optionally, specify a\n"
+" filter chain number (0-9) followed by a ':' before the\n"
+" uncompressed data size"
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"
+" cách bằng dấu phẩy nhịp dữ của dữ liệu chưa nén; tùy chọn\n"
+" chỉ định số móc xích bộ lọc (0-9) theo sau là ':' trước\n"
+" kích cỡ dữ liệu chưa nén"
-#: src/xz/message.c:1037
+#: src/xz/message.c
msgid ""
" --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n"
@@ -769,7 +808,7 @@ msgstr ""
" 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:1043
+#: src/xz/message.c
#, no-c-format
msgid ""
" --memlimit-compress=LIMIT\n"
@@ -788,7 +827,7 @@ msgstr ""
" giải nén tuyến trình, hoặc tất cả; GIỚI_HẠN có đơn vị là\n"
" byte, % của RAM, hay 0 cho mặc định"
-#: src/xz/message.c:1052
+#: src/xz/message.c
msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards"
@@ -796,7 +835,7 @@ 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:1058
+#: src/xz/message.c
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
@@ -804,7 +843,35 @@ 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:1067
+#: src/xz/message.c
+msgid ""
+"\n"
+" --filters=FILTERS set the filter chain using the liblzma filter string\n"
+" syntax; use --filters-help for more information"
+msgstr ""
+"\n"
+" --filters=CÁC_BỘ_LỌC đặt móc xích bộ lọc sử dụng cú pháp chuỗi bộ lọc\n"
+" liblzma dùng để biết thêm chi tiết"
+
+#: src/xz/message.c
+msgid ""
+" --filters1=FILTERS ... --filters9=FILTERS\n"
+" set additional filter chains using the liblzma filter\n"
+" string syntax to use with --block-list"
+msgstr ""
+" --filters1=CÁC_BỘ_LỌC ... --filters9=CÁC_BỘ_LỌC\n"
+" đặt móc xích lọc thêm sử dụng cú pháp chuỗi bộ lọc\n"
+" liblzma để dùng với --block-list"
+
+#: src/xz/message.c
+msgid ""
+" --filters-help display more information about the liblzma filter string\n"
+" syntax and exit."
+msgstr ""
+" --filters-help hiển thị thêm thông tin về cú pháp bộ lọc liblzma\n"
+" rồi thoát."
+
+#: src/xz/message.c
msgid ""
"\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
@@ -832,7 +899,7 @@ msgstr ""
" 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:1082
+#: src/xz/message.c
msgid ""
"\n"
" --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
@@ -842,6 +909,7 @@ msgid ""
" --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
" --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
" --sparc[=OPTS] SPARC BCJ filter\n"
+" --riscv[=OPTS] RISC-V BCJ filter\n"
" Valid OPTS for all BCJ filters:\n"
" start=NUM start offset for conversions (default=0)"
msgstr ""
@@ -853,10 +921,11 @@ msgstr ""
" --powerpc[=OPTS] bộ lọc PowerPC BCJ (chỉ big endian)\n"
" --ia64[=OPTS] bộ lọc IA-64 (Itanium) BCJ\n"
" --sparc[=OPTS] bộ lọc SPARC BCJ\n"
+" --riscv[=OPTS] bộ lọc RISC-V 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:1095
+#: src/xz/message.c
msgid ""
"\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n"
@@ -869,7 +938,7 @@ msgstr ""
" dist=SỐ khoảng cách giữa các byte được trừ từ\n"
" những cái khác (1-256; 1)"
-#: src/xz/message.c:1103
+#: src/xz/message.c
msgid ""
"\n"
" Other options:\n"
@@ -877,56 +946,59 @@ msgstr ""
"\n"
" Tùy chọn khác:\n"
-#: src/xz/message.c:1106
+#: src/xz/message.c
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"
+" 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:1111
+#: src/xz/message.c
msgid " -Q, --no-warn make warnings not affect the exit status"
-msgstr " -Q, --no-warn làm cho các cảnh báo không ảnh hưởng đến trạng thái thoát"
+msgstr ""
+" -Q, --no-warn làm cho các cảnh báo không ảnh hưởng đến\n"
+" trạng thái thoát"
-#: src/xz/message.c:1113
+#: src/xz/message.c
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)"
+" --robot dùng các thông báo mà máy có thể phân tích\n"
+" (hữu dụng với scripts)"
-#: src/xz/message.c:1116
+#: src/xz/message.c
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"
+" bộ nhớ hiện tại, rồi thoát"
-#: src/xz/message.c:1119
+#: src/xz/message.c
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"
+" (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:1123
+#: src/xz/message.c
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)"
+" (liệt kê cả những tùy chọn cấp cao)"
-#: src/xz/message.c:1128
+#: src/xz/message.c
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:1130
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
+#, c-format
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
@@ -938,96 +1010,132 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks.
-#: src/xz/message.c:1136
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, 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"
+"Thông báo lỗi dịch cho: <https://translationproject.org/team/vi.html>.\n"
-#: src/xz/message.c:1138
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Trang chủ %s: <%s>.\n"
-#: src/xz/message.c:1142
+#: src/xz/message.c
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
+#: src/xz/message.c
+msgid ""
+"Filter chains are set using the --filters=FILTERS or\n"
+"--filters1=FILTERS ... --filters9=FILTERS options. Each filter in the chain\n"
+"can be separated by spaces or '--'. Alternatively a preset <0-9>[e] can be\n"
+"specified instead of a filter chain.\n"
+msgstr ""
+"Các móc xích lọc được đặt bằng --filters=CÁC_BỘ_LỌC hoặc các tùy chọn\n"
+"--filters1=CÁC_BỘ_LỌC ... --filters9=CÁC_BỘ_LỌC. Mỗi bộ lọc trong chuỗi\n"
+"có thể được ngăn cách bằng khoảng trắng hoặc '--'. Cách khác là dùng <0-9>[e]\n"
+"để chỉ định thay thay cho móc xích lọc.\n"
+
+#: src/xz/message.c
+msgid "The supported filters and their options are:"
+msgstr "Các bộ lọc và các tùy chọn của chúng được hỗ trợ là:"
+
+#: src/xz/options.c
#, 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"
+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 “tên=giá_trị” ngăn cách nhau bằng dấu phẩy"
-#: src/xz/options.c:93
+#: src/xz/options.c
#, 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
+#: src/xz/options.c
#, 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:248
+#: src/xz/options.c
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "Hiện nay chưa hỗ trợ LZMA1/LZMA2: %s"
-#: src/xz/options.c:356
+#: src/xz/options.c
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/suffix.c:160
+#: src/xz/suffix.c
#, 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:181
+#: src/xz/suffix.c
#, c-format
-msgid "%s: File already has `%s' suffix, skipping"
+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:388
+#: src/xz/suffix.c
#, 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:107
+#: src/xz/util.c
#, 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:149
+#: src/xz/util.c
#, c-format
msgid "%s: Invalid multiplier suffix"
-msgstr "%s: Hậu tố nhân tố không hợp lệ"
+msgstr "%s: Hậu tố (đơn vị) nhân tố không hợp lệ"
-#: src/xz/util.c:151
-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
+msgid "Valid suffixes are 'KiB' (2^10), 'MiB' (2^20), and 'GiB' (2^30)."
+msgstr "Các hậu tố (đơn vị) hợp lệ là “KiB” (2^10), “MiB” (2^20), và “GiB” (2^30)."
-#: src/xz/util.c:168
+#: src/xz/util.c
#, 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>]"
+msgid "Value of the option '%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+msgstr "Giá trị của tùy chọn “%s” phải nằm trong vùng [%<PRIu64>, %<PRIu64>]"
-#: src/xz/util.c:270
+#: src/xz/util.c
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:283
+#: src/xz/util.c
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:40
+#: src/lzmainfo/lzmainfo.c
+#, c-format
+msgid ""
+"Usage: %s [--help] [--version] [FILE]...\n"
+"Show information stored in the .lzma file header"
+msgstr ""
+"Cách dùng: %s [--help] [--version] [TẬP TIN]...\n"
+"Hiển thị thông tin được lưu trong phần đầu của tập tin .lzma"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "File is too small to be a .lzma file"
+msgstr "Tập tin quá nhỏ để có thể là một tin .lzma"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "Not a .lzma file"
+msgstr "Không phải là một tập tin .lzma"
+
+#: src/common/tuklib_exit.c
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:43
+#: src/common/tuklib_exit.c
msgid "Unknown error"
msgstr "Lỗi chưa biết"
+#~ msgid "Failed to enable the sandbox"
+#~ msgstr "Không bật được sandbox"
+
#~ msgid "Memory usage limit for compression: "
#~ msgstr "Mức giới hạn dùng bộ nhớ cho nén: "
diff --git a/po/xz.pot b/po/xz.pot
index f9dc5a8..14cf4d9 100644
--- a/po/xz.pot
+++ b/po/xz.pot
@@ -1,13 +1,16 @@
+# SPDX-License-Identifier: 0BSD
+#
# SOME DESCRIPTIVE TITLE.
-# This file is put in the public domain.
+# Copyright (C) The XZ Utils authors and contributors
+# This file is published under the BSD Zero Clause License.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: xz 5.4.5\n"
+"Project-Id-Version: xz 5.6.2\n"
"Report-Msgid-Bugs-To: xz@tukaani.org\n"
-"POT-Creation-Date: 2023-10-31 22:33+0800\n"
+"POT-Creation-Date: 2024-05-29 18:17+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,142 +20,170 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-#: src/xz/args.c:77
+#: src/xz/args.c
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr ""
-#: src/xz/args.c:87
+#: src/xz/args.c
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr ""
-#: src/xz/args.c:116
+#: src/xz/args.c
+#, c-format
+msgid "In --block-list, block size is missing after filter chain number '%c:'"
+msgstr ""
+
+#: src/xz/args.c
msgid "0 can only be used as the last element in --block-list"
msgstr ""
-#: src/xz/args.c:451
+#: src/xz/args.c
#, c-format
msgid "%s: Unknown file format type"
msgstr ""
-#: src/xz/args.c:474 src/xz/args.c:482
+#: src/xz/args.c
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr ""
-#: src/xz/args.c:518
-msgid "Only one file can be specified with `--files' or `--files0'."
+#: src/xz/args.c
+msgid "Only one file can be specified with '--files' or '--files0'."
msgstr ""
#. TRANSLATORS: This is a translatable
#. string because French needs a space
#. before the colon ("%s : %s").
-#: src/xz/args.c:533 src/xz/coder.c:692 src/xz/coder.c:708 src/xz/coder.c:968
-#: src/xz/coder.c:971 src/xz/file_io.c:605 src/xz/file_io.c:679
-#: src/xz/file_io.c:769 src/xz/file_io.c:940 src/xz/list.c:369
-#: src/xz/list.c:415 src/xz/list.c:477 src/xz/list.c:581 src/xz/list.c:590
+#: src/xz/args.c src/xz/coder.c src/xz/file_io.c src/xz/list.c
#, c-format
msgid "%s: %s"
msgstr ""
-#: src/xz/args.c:589
+#: src/xz/args.c
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr ""
-#: src/xz/args.c:691
+#: src/xz/args.c
msgid "Compression support was disabled at build time"
msgstr ""
-#: src/xz/args.c:698
+#: src/xz/args.c
msgid "Decompression support was disabled at build time"
msgstr ""
-#: src/xz/args.c:704
+#: src/xz/args.c
msgid "Compression of lzip files (.lz) is not supported"
msgstr ""
-#: src/xz/args.c:735
+#: src/xz/args.c
+msgid "--block-list is ignored unless compressing to the .xz format"
+msgstr ""
+
+#: src/xz/args.c
msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr ""
-#: src/xz/coder.c:115
+#: src/xz/coder.c
msgid "Maximum number of filters is four"
msgstr ""
-#: src/xz/coder.c:135
+#: src/xz/coder.c
+#, c-format
+msgid "Error in --filters%s=FILTERS option:"
+msgstr ""
+
+#: src/xz/coder.c
msgid "Memory usage limit is too low for the given filter setup."
msgstr ""
-#: src/xz/coder.c:170
+#: src/xz/coder.c
+#, c-format
+msgid "filter chain %u used by --block-list but not specified with --filters%u="
+msgstr ""
+
+#: src/xz/coder.c
msgid "Using a preset in raw mode is discouraged."
msgstr ""
-#: src/xz/coder.c:172
+#: src/xz/coder.c
msgid "The exact options of the presets may vary between software versions."
msgstr ""
-#: src/xz/coder.c:195
+#: src/xz/coder.c
msgid "The .lzma format supports only the LZMA1 filter"
msgstr ""
-#: src/xz/coder.c:203
+#: src/xz/coder.c
msgid "LZMA1 cannot be used with the .xz format"
msgstr ""
-#: src/xz/coder.c:220
-msgid "The filter chain is incompatible with --flush-timeout"
+#: src/xz/coder.c
+#, c-format
+msgid "Filter chain %u is incompatible with --flush-timeout"
msgstr ""
-#: src/xz/coder.c:226
+#: src/xz/coder.c
msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr ""
-#: src/xz/coder.c:250
+#: src/xz/coder.c
+#, c-format
+msgid "Unsupported options in filter chain %u"
+msgstr ""
+
+#: src/xz/coder.c
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr ""
-#: src/xz/coder.c:266
+#: src/xz/coder.c
msgid "Unsupported filter chain or filter options"
msgstr ""
-#: src/xz/coder.c:278
+#: src/xz/coder.c
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr ""
-#: src/xz/coder.c:310
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgstr ""
-#: src/xz/coder.c:330
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway."
msgstr ""
-#: src/xz/coder.c:357
+#: src/xz/coder.c
#, c-format
msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB"
msgstr ""
-#: src/xz/coder.c:412
+#: src/xz/coder.c
#, 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 ""
-#: src/xz/file_io.c:110 src/xz/file_io.c:118
+#: src/xz/coder.c
#, c-format
-msgid "Error creating a pipe: %s"
+msgid "Adjusted LZMA%c dictionary size for --filters%u from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgstr ""
+
+#: src/xz/coder.c
+#, c-format
+msgid "Error changing to filter chain %u: %s"
msgstr ""
-#: src/xz/file_io.c:252
-msgid "Failed to enable the sandbox"
+#: src/xz/file_io.c
+#, c-format
+msgid "Error creating a pipe: %s"
msgstr ""
-#: src/xz/file_io.c:294
+#: src/xz/file_io.c
#, c-format
msgid "%s: poll() failed: %s"
msgstr ""
@@ -167,252 +198,252 @@ msgstr ""
#. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously
#. shouldn't be removed.
-#: src/xz/file_io.c:361
+#: src/xz/file_io.c
#, c-format
msgid "%s: File seems to have been moved, not removing"
msgstr ""
-#: src/xz/file_io.c:368 src/xz/file_io.c:924
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot remove: %s"
msgstr ""
-#: src/xz/file_io.c:394
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr ""
-#: src/xz/file_io.c:407
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr ""
-#: src/xz/file_io.c:426
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr ""
-#: src/xz/file_io.c:552
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr ""
-#: src/xz/file_io.c:610 src/xz/file_io.c:672
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr ""
-#: src/xz/file_io.c:701
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a directory, skipping"
msgstr ""
-#: src/xz/file_io.c:707
+#: src/xz/file_io.c
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr ""
-#: src/xz/file_io.c:724
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr ""
-#: src/xz/file_io.c:731
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr ""
-#: src/xz/file_io.c:738
+#: src/xz/file_io.c
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr ""
-#: src/xz/file_io.c:780
+#: src/xz/file_io.c
msgid "Empty filename, skipping"
msgstr ""
-#: src/xz/file_io.c:834
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr ""
-#: src/xz/file_io.c:882
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr ""
-#: src/xz/file_io.c:1081
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr ""
-#: src/xz/file_io.c:1093
+#: src/xz/file_io.c
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr ""
-#: src/xz/file_io.c:1129 src/xz/file_io.c:1391
+#: src/xz/file_io.c
#, c-format
msgid "%s: Seeking failed when trying to create a sparse file: %s"
msgstr ""
-#: src/xz/file_io.c:1229
+#: src/xz/file_io.c
#, c-format
msgid "%s: Read error: %s"
msgstr ""
-#: src/xz/file_io.c:1259
+#: src/xz/file_io.c
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr ""
-#: src/xz/file_io.c:1283
+#: src/xz/file_io.c
#, c-format
msgid "%s: Unexpected end of file"
msgstr ""
-#: src/xz/file_io.c:1342
+#: src/xz/file_io.c
#, c-format
msgid "%s: Write error: %s"
msgstr ""
-#: src/xz/hardware.c:238
+#: src/xz/hardware.c
msgid "Disabled"
msgstr ""
-#: src/xz/hardware.c:269
+#: src/xz/hardware.c
msgid "Amount of physical memory (RAM):"
msgstr ""
-#: src/xz/hardware.c:270
+#: src/xz/hardware.c
msgid "Number of processor threads:"
msgstr ""
-#: src/xz/hardware.c:271
+#: src/xz/hardware.c
msgid "Compression:"
msgstr ""
-#: src/xz/hardware.c:272
+#: src/xz/hardware.c
msgid "Decompression:"
msgstr ""
-#: src/xz/hardware.c:273
+#: src/xz/hardware.c
msgid "Multi-threaded decompression:"
msgstr ""
-#: src/xz/hardware.c:274
+#: src/xz/hardware.c
msgid "Default for -T0:"
msgstr ""
-#: src/xz/hardware.c:292
+#: src/xz/hardware.c
msgid "Hardware information:"
msgstr ""
-#: src/xz/hardware.c:299
+#: src/xz/hardware.c
msgid "Memory usage limits:"
msgstr ""
-#: src/xz/list.c:68
+#: src/xz/list.c
msgid "Streams:"
msgstr ""
-#: src/xz/list.c:69
+#: src/xz/list.c
msgid "Blocks:"
msgstr ""
-#: src/xz/list.c:70
+#: src/xz/list.c
msgid "Compressed size:"
msgstr ""
-#: src/xz/list.c:71
+#: src/xz/list.c
msgid "Uncompressed size:"
msgstr ""
-#: src/xz/list.c:72
+#: src/xz/list.c
msgid "Ratio:"
msgstr ""
-#: src/xz/list.c:73
+#: src/xz/list.c
msgid "Check:"
msgstr ""
-#: src/xz/list.c:74
+#: src/xz/list.c
msgid "Stream Padding:"
msgstr ""
-#: src/xz/list.c:75
+#: src/xz/list.c
msgid "Memory needed:"
msgstr ""
-#: src/xz/list.c:76
+#: src/xz/list.c
msgid "Sizes in headers:"
msgstr ""
-#: src/xz/list.c:79
+#: src/xz/list.c
msgid "Number of files:"
msgstr ""
-#: src/xz/list.c:122
+#: src/xz/list.c
msgid "Stream"
msgstr ""
-#: src/xz/list.c:123
+#: src/xz/list.c
msgid "Block"
msgstr ""
-#: src/xz/list.c:124
+#: src/xz/list.c
msgid "Blocks"
msgstr ""
-#: src/xz/list.c:125
+#: src/xz/list.c
msgid "CompOffset"
msgstr ""
-#: src/xz/list.c:126
+#: src/xz/list.c
msgid "UncompOffset"
msgstr ""
-#: src/xz/list.c:127
+#: src/xz/list.c
msgid "CompSize"
msgstr ""
-#: src/xz/list.c:128
+#: src/xz/list.c
msgid "UncompSize"
msgstr ""
-#: src/xz/list.c:129
+#: src/xz/list.c
msgid "TotalSize"
msgstr ""
-#: src/xz/list.c:130
+#: src/xz/list.c
msgid "Ratio"
msgstr ""
-#: src/xz/list.c:131
+#: src/xz/list.c
msgid "Check"
msgstr ""
-#: src/xz/list.c:132
+#: src/xz/list.c
msgid "CheckVal"
msgstr ""
-#: src/xz/list.c:133
+#: src/xz/list.c
msgid "Padding"
msgstr ""
-#: src/xz/list.c:134
+#: src/xz/list.c
msgid "Header"
msgstr ""
-#: src/xz/list.c:135
+#: src/xz/list.c
msgid "Flags"
msgstr ""
-#: src/xz/list.c:136
+#: src/xz/list.c
msgid "MemUsage"
msgstr ""
-#: src/xz/list.c:137
+#: src/xz/list.c
msgid "Filters"
msgstr ""
@@ -420,7 +451,7 @@ msgstr ""
#. This string is used in tables. In older xz version this
#. string was limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:169
+#: src/xz/list.c
msgid "None"
msgstr ""
@@ -428,60 +459,60 @@ msgstr ""
#. but the Check ID is known (here 2). In older xz version these
#. strings were limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:175
+#: src/xz/list.c
msgid "Unknown-2"
msgstr ""
-#: src/xz/list.c:176
+#: src/xz/list.c
msgid "Unknown-3"
msgstr ""
-#: src/xz/list.c:178
+#: src/xz/list.c
msgid "Unknown-5"
msgstr ""
-#: src/xz/list.c:179
+#: src/xz/list.c
msgid "Unknown-6"
msgstr ""
-#: src/xz/list.c:180
+#: src/xz/list.c
msgid "Unknown-7"
msgstr ""
-#: src/xz/list.c:181
+#: src/xz/list.c
msgid "Unknown-8"
msgstr ""
-#: src/xz/list.c:182
+#: src/xz/list.c
msgid "Unknown-9"
msgstr ""
-#: src/xz/list.c:184
+#: src/xz/list.c
msgid "Unknown-11"
msgstr ""
-#: src/xz/list.c:185
+#: src/xz/list.c
msgid "Unknown-12"
msgstr ""
-#: src/xz/list.c:186
+#: src/xz/list.c
msgid "Unknown-13"
msgstr ""
-#: src/xz/list.c:187
+#: src/xz/list.c
msgid "Unknown-14"
msgstr ""
-#: src/xz/list.c:188
+#: src/xz/list.c
msgid "Unknown-15"
msgstr ""
-#: src/xz/list.c:351
+#: src/xz/list.c
#, c-format
msgid "%s: File is empty"
msgstr ""
-#: src/xz/list.c:356
+#: src/xz/list.c
#, c-format
msgid "%s: Too small to be a valid .xz file"
msgstr ""
@@ -490,64 +521,68 @@ msgstr ""
#. 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:731
+#: src/xz/list.c
msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename"
msgstr ""
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "Yes"
msgstr ""
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "No"
msgstr ""
-#: src/xz/list.c:1028 src/xz/list.c:1206
+#: src/xz/list.c
#, c-format
msgid " Minimum XZ Utils version: %s\n"
msgstr ""
#. TRANSLATORS: %s is an integer. Only the plural form of this
#. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz".
-#: src/xz/list.c:1179
+#: src/xz/list.c
#, c-format
msgid "%s file\n"
msgid_plural "%s files\n"
msgstr[0] ""
msgstr[1] ""
-#: src/xz/list.c:1192
+#: src/xz/list.c
msgid "Totals:"
msgstr ""
-#: src/xz/list.c:1270
+#: src/xz/list.c
msgid "--list works only on .xz files (--format=xz or --format=auto)"
msgstr ""
-#: src/xz/list.c:1276
+#: src/xz/list.c
+msgid "Try 'lzmainfo' with .lzma files."
+msgstr ""
+
+#: src/xz/list.c
msgid "--list does not support reading from standard input"
msgstr ""
-#: src/xz/main.c:89
+#: src/xz/main.c
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr ""
-#: src/xz/main.c:96
+#: src/xz/main.c
#, c-format
msgid "%s: Unexpected end of input when reading filenames"
msgstr ""
-#: src/xz/main.c:120
+#: src/xz/main.c
#, c-format
-msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
+msgid "%s: Null character found when reading filenames; maybe you meant to use '--files0' instead of '--files'?"
msgstr ""
-#: src/xz/main.c:188
+#: src/xz/main.c
msgid "Compression and decompression with --robot are not supported yet."
msgstr ""
-#: src/xz/main.c:266
+#: src/xz/main.c
msgid "Cannot read data from standard input when reading filenames from standard input"
msgstr ""
@@ -555,68 +590,68 @@ msgstr ""
#. 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:670 src/xz/message.c:725
+#: src/xz/message.c
#, c-format
msgid "%s: "
msgstr ""
-#: src/xz/message.c:797 src/xz/message.c:856
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
msgid "Internal error (bug)"
msgstr ""
-#: src/xz/message.c:804
+#: src/xz/message.c
msgid "Cannot establish signal handlers"
msgstr ""
-#: src/xz/message.c:813
+#: src/xz/message.c
msgid "No integrity check; not verifying file integrity"
msgstr ""
-#: src/xz/message.c:816
+#: src/xz/message.c
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr ""
-#: src/xz/message.c:823
+#: src/xz/message.c
msgid "Memory usage limit reached"
msgstr ""
-#: src/xz/message.c:826
+#: src/xz/message.c
msgid "File format not recognized"
msgstr ""
-#: src/xz/message.c:829
+#: src/xz/message.c
msgid "Unsupported options"
msgstr ""
-#: src/xz/message.c:832
+#: src/xz/message.c
msgid "Compressed data is corrupt"
msgstr ""
-#: src/xz/message.c:835
+#: src/xz/message.c
msgid "Unexpected end of input"
msgstr ""
-#: src/xz/message.c:877
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr ""
-#: src/xz/message.c:905
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr ""
-#: src/xz/message.c:924
+#: src/xz/message.c
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr ""
-#: src/xz/message.c:935
+#: src/xz/message.c
#, c-format
-msgid "Try `%s --help' for more information."
+msgid "Try '%s --help' for more information."
msgstr ""
-#: src/xz/message.c:961
+#: src/xz/message.c
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
@@ -624,15 +659,15 @@ msgid ""
"\n"
msgstr ""
-#: src/xz/message.c:968
+#: src/xz/message.c
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr ""
-#: src/xz/message.c:972
+#: src/xz/message.c
msgid " Operation mode:\n"
msgstr ""
-#: src/xz/message.c:975
+#: src/xz/message.c
msgid ""
" -z, --compress force compression\n"
" -d, --decompress force decompression\n"
@@ -640,86 +675,88 @@ msgid ""
" -l, --list list information about .xz files"
msgstr ""
-#: src/xz/message.c:981
+#: src/xz/message.c
msgid ""
"\n"
" Operation modifiers:\n"
msgstr ""
-#: src/xz/message.c:984
+#: src/xz/message.c
msgid ""
" -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\n"
" -c, --stdout write to standard output and don't delete input files"
msgstr ""
-#: src/xz/message.c:993
+#: src/xz/message.c
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
msgstr ""
-#: src/xz/message.c:996
+#: src/xz/message.c
msgid ""
" --no-sparse do not create sparse files when decompressing\n"
-" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
+" -S, --suffix=.SUF use the suffix '.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n"
" omitted, filenames are read from the standard input;\n"
" filenames must be terminated with the newline character\n"
" --files0[=FILE] like --files but use the null character as terminator"
msgstr ""
-#: src/xz/message.c:1005
+#: src/xz/message.c
msgid ""
"\n"
" Basic file format and compression options:\n"
msgstr ""
-#: src/xz/message.c:1007
+#: src/xz/message.c
msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n"
-" `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
-" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-" `crc32', `crc64' (default), or `sha256'"
+" 'auto' (default), 'xz', 'lzma', 'lzip', and 'raw'\n"
+" -C, --check=CHECK integrity check type: 'none' (use with caution),\n"
+" 'crc32', 'crc64' (default), or 'sha256'"
msgstr ""
-#: src/xz/message.c:1012
+#: src/xz/message.c
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr ""
-#: src/xz/message.c:1016
+#: src/xz/message.c
msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!"
msgstr ""
-#: src/xz/message.c:1020
+#: src/xz/message.c
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
msgstr ""
-#: src/xz/message.c:1024
+#: src/xz/message.c
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"
+" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
+" as many threads as there are processor cores"
msgstr ""
-#: src/xz/message.c:1029
+#: src/xz/message.c
msgid ""
" --block-size=SIZE\n"
" start a new .xz block after every SIZE bytes of input;\n"
" use this to set the block size for threaded compression"
msgstr ""
-#: src/xz/message.c:1033
+#: src/xz/message.c
msgid ""
-" --block-list=SIZES\n"
+" --block-list=BLOCKS\n"
" start a new .xz block after the given comma-separated\n"
-" intervals of uncompressed data"
+" intervals of uncompressed data; optionally, specify a\n"
+" filter chain number (0-9) followed by a ':' before the\n"
+" uncompressed data size"
msgstr ""
-#: src/xz/message.c:1037
+#: src/xz/message.c
msgid ""
" --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n"
@@ -727,7 +764,7 @@ msgid ""
" would block, all pending data is flushed out"
msgstr ""
-#: src/xz/message.c:1043
+#: src/xz/message.c
#, no-c-format
msgid ""
" --memlimit-compress=LIMIT\n"
@@ -739,19 +776,39 @@ msgid ""
" bytes, % of RAM, or 0 for defaults"
msgstr ""
-#: src/xz/message.c:1052
+#: src/xz/message.c
msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards"
msgstr ""
-#: src/xz/message.c:1058
+#: src/xz/message.c
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
msgstr ""
-#: src/xz/message.c:1067
+#: src/xz/message.c
+msgid ""
+"\n"
+" --filters=FILTERS set the filter chain using the liblzma filter string\n"
+" syntax; use --filters-help for more information"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters1=FILTERS ... --filters9=FILTERS\n"
+" set additional filter chains using the liblzma filter\n"
+" string syntax to use with --block-list"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters-help display more information about the liblzma filter string\n"
+" syntax and exit."
+msgstr ""
+
+#: src/xz/message.c
msgid ""
"\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
@@ -767,7 +824,7 @@ msgid ""
" depth=NUM maximum search depth; 0=automatic (default)"
msgstr ""
-#: src/xz/message.c:1082
+#: src/xz/message.c
msgid ""
"\n"
" --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
@@ -777,11 +834,12 @@ msgid ""
" --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
" --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
" --sparc[=OPTS] SPARC BCJ filter\n"
+" --riscv[=OPTS] RISC-V BCJ filter\n"
" Valid OPTS for all BCJ filters:\n"
" start=NUM start offset for conversions (default=0)"
msgstr ""
-#: src/xz/message.c:1095
+#: src/xz/message.c
msgid ""
"\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n"
@@ -789,49 +847,50 @@ msgid ""
" from each other (1-256; 1)"
msgstr ""
-#: src/xz/message.c:1103
+#: src/xz/message.c
msgid ""
"\n"
" Other options:\n"
msgstr ""
-#: src/xz/message.c:1106
+#: src/xz/message.c
msgid ""
" -q, --quiet suppress warnings; specify twice to suppress errors too\n"
" -v, --verbose be verbose; specify twice for even more verbose"
msgstr ""
-#: src/xz/message.c:1111
+#: src/xz/message.c
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr ""
-#: src/xz/message.c:1113
+#: src/xz/message.c
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr ""
-#: src/xz/message.c:1116
+#: src/xz/message.c
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
msgstr ""
-#: src/xz/message.c:1119
+#: src/xz/message.c
msgid ""
" -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit"
msgstr ""
-#: src/xz/message.c:1123
+#: src/xz/message.c
msgid ""
" -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)"
msgstr ""
-#: src/xz/message.c:1128
+#: src/xz/message.c
msgid " -V, --version display the version number and exit"
msgstr ""
-#: src/xz/message.c:1130
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
+#, c-format
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
@@ -841,90 +900,117 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks.
-#: src/xz/message.c:1136
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr ""
-#: src/xz/message.c:1138
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "%s home page: <%s>\n"
msgstr ""
-#: src/xz/message.c:1142
+#: src/xz/message.c
msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
msgstr ""
-#: src/xz/options.c:86
+#: src/xz/message.c
+msgid ""
+"Filter chains are set using the --filters=FILTERS or\n"
+"--filters1=FILTERS ... --filters9=FILTERS options. Each filter in the chain\n"
+"can be separated by spaces or '--'. Alternatively a preset <0-9>[e] can be\n"
+"specified instead of a filter chain.\n"
+msgstr ""
+
+#: src/xz/message.c
+msgid "The supported filters and their options are:"
+msgstr ""
+
+#: src/xz/options.c
#, c-format
-msgid "%s: Options must be `name=value' pairs separated with commas"
+msgid "%s: Options must be 'name=value' pairs separated with commas"
msgstr ""
-#: src/xz/options.c:93
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option name"
msgstr ""
-#: src/xz/options.c:113
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option value"
msgstr ""
-#: src/xz/options.c:248
+#: src/xz/options.c
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr ""
-#: src/xz/options.c:356
+#: src/xz/options.c
msgid "The sum of lc and lp must not exceed 4"
msgstr ""
-#: src/xz/suffix.c:160
+#: src/xz/suffix.c
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr ""
-#: src/xz/suffix.c:181
+#: src/xz/suffix.c
#, c-format
-msgid "%s: File already has `%s' suffix, skipping"
+msgid "%s: File already has '%s' suffix, skipping"
msgstr ""
-#: src/xz/suffix.c:388
+#: src/xz/suffix.c
#, c-format
msgid "%s: Invalid filename suffix"
msgstr ""
-#: src/xz/util.c:107
+#: src/xz/util.c
#, c-format
msgid "%s: Value is not a non-negative decimal integer"
msgstr ""
-#: src/xz/util.c:149
+#: src/xz/util.c
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr ""
-#: src/xz/util.c:151
-msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+#: src/xz/util.c
+msgid "Valid suffixes are 'KiB' (2^10), 'MiB' (2^20), and 'GiB' (2^30)."
msgstr ""
-#: src/xz/util.c:168
+#: src/xz/util.c
#, c-format
-msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+msgid "Value of the option '%s' must be in the range [%<PRIu64>, %<PRIu64>]"
msgstr ""
-#: src/xz/util.c:270
+#: src/xz/util.c
msgid "Compressed data cannot be read from a terminal"
msgstr ""
-#: src/xz/util.c:283
+#: src/xz/util.c
msgid "Compressed data cannot be written to a terminal"
msgstr ""
-#: src/common/tuklib_exit.c:40
+#: src/lzmainfo/lzmainfo.c
+#, c-format
+msgid ""
+"Usage: %s [--help] [--version] [FILE]...\n"
+"Show information stored in the .lzma file header"
+msgstr ""
+
+#: src/lzmainfo/lzmainfo.c
+msgid "File is too small to be a .lzma file"
+msgstr ""
+
+#: src/lzmainfo/lzmainfo.c
+msgid "Not a .lzma file"
+msgstr ""
+
+#: src/common/tuklib_exit.c
msgid "Writing to standard output failed"
msgstr ""
-#: src/common/tuklib_exit.c:43
+#: src/common/tuklib_exit.c
msgid "Unknown error"
msgstr ""
diff --git a/po/xz.pot-header b/po/xz.pot-header
new file mode 100644
index 0000000..6d277c9
--- /dev/null
+++ b/po/xz.pot-header
@@ -0,0 +1,7 @@
+# SPDX-License-Identifier: 0BSD
+#
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) The XZ Utils authors and contributors
+# This file is published under the BSD Zero Clause License.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
index 60b4f90..49d044b 100644
--- a/po/zh_CN.gmo
+++ b/po/zh_CN.gmo
Binary files differ
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 7b49c02..d3e0892 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -1,14 +1,14 @@
# Chinese translations for xz package
# xz 软件包的简体中文翻译。
# This file is put in the public domain.
-# Boyuan Yang <073plan@gmail.com>, 2019, 2022, 2023.
+# Boyuan Yang <073plan@gmail.com>, 2019, 2022, 2023, 2024.
#
msgid ""
msgstr ""
-"Project-Id-Version: xz 5.4.4-pre1\n"
+"Project-Id-Version: xz 5.6.0-pre1\n"
"Report-Msgid-Bugs-To: xz@tukaani.org\n"
-"POT-Creation-Date: 2023-10-31 22:33+0800\n"
-"PO-Revision-Date: 2023-07-19 14:24-0400\n"
+"POT-Creation-Date: 2024-05-29 17:41+0300\n"
+"PO-Revision-Date: 2024-02-05 15:15-0500\n"
"Last-Translator: Boyuan Yang <073plan@gmail.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
"Language: zh_CN\n"
@@ -17,144 +17,173 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-"X-Generator: Poedit 3.2.2\n"
+"X-Generator: Poedit 3.4.2\n"
-#: src/xz/args.c:77
+#: src/xz/args.c
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr "%s:--block-list 的无效参数"
-#: src/xz/args.c:87
+#: src/xz/args.c
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s:--block-list 得到过多参数"
-#: src/xz/args.c:116
+#: src/xz/args.c
+#, c-format
+msgid "In --block-list, block size is missing after filter chain number '%c:'"
+msgstr "在 --block-list 中,块大小在过滤器链编号 '%c:' 之后缺失"
+
+#: src/xz/args.c
msgid "0 can only be used as the last element in --block-list"
msgstr "0 仅可用于 --block-list 的最后一个元素"
-#: src/xz/args.c:451
+#: src/xz/args.c
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s:未知文件格式类型"
-#: src/xz/args.c:474 src/xz/args.c:482
+#: src/xz/args.c
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s:不支持的完整性检查类型"
-#: src/xz/args.c:518
-msgid "Only one file can be specified with `--files' or `--files0'."
-msgstr "仅可使用“--files”或“--files0”指定一个文件。"
+#: src/xz/args.c
+msgid "Only one file can be specified with '--files' or '--files0'."
+msgstr "仅可使用 '--files' 或 '--files0' 指定单个文件。"
#. TRANSLATORS: This is a translatable
#. string because French needs a space
#. before the colon ("%s : %s").
-#: src/xz/args.c:533 src/xz/coder.c:692 src/xz/coder.c:708 src/xz/coder.c:968
-#: src/xz/coder.c:971 src/xz/file_io.c:605 src/xz/file_io.c:679
-#: src/xz/file_io.c:769 src/xz/file_io.c:940 src/xz/list.c:369
-#: src/xz/list.c:415 src/xz/list.c:477 src/xz/list.c:581 src/xz/list.c:590
+#: src/xz/args.c src/xz/coder.c src/xz/file_io.c src/xz/list.c
#, c-format
msgid "%s: %s"
msgstr "%s:%s"
-#: src/xz/args.c:589
+#: src/xz/args.c
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "环境变量 %s 包含过多参数"
-#: src/xz/args.c:691
+#: src/xz/args.c
msgid "Compression support was disabled at build time"
msgstr "压缩支持已在构建时禁用"
-#: src/xz/args.c:698
+#: src/xz/args.c
msgid "Decompression support was disabled at build time"
msgstr "解压支持已在构建时禁用"
-#: src/xz/args.c:704
+#: src/xz/args.c
msgid "Compression of lzip files (.lz) is not supported"
msgstr "不支持对 lzip 文件 (.lz) 的压缩"
-#: src/xz/args.c:735
+#: src/xz/args.c
+msgid "--block-list is ignored unless compressing to the .xz format"
+msgstr "除非压缩为 .xz 格式,--block-list 将被忽略"
+
+#: src/xz/args.c
msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "启用 --format-raw 选项时,必须指定 --suffix=.SUF 获知写入至标准输出"
-#: src/xz/coder.c:115
+#: src/xz/coder.c
msgid "Maximum number of filters is four"
msgstr "过滤器最多数量为四"
-#: src/xz/coder.c:135
+#: src/xz/coder.c
+#, c-format
+msgid "Error in --filters%s=FILTERS option:"
+msgstr "在 --filters%s=过滤器 选项中出现错误:"
+
+#: src/xz/coder.c
msgid "Memory usage limit is too low for the given filter setup."
msgstr "内存用量限制对指定过滤器设置过低。"
-#: src/xz/coder.c:170
+#: src/xz/coder.c
+#, c-format
+msgid "filter chain %u used by --block-list but not specified with --filters%u="
+msgstr "--block-list 使用了过滤器链 %u,但未经由 --filters%u= 指定"
+
+#: src/xz/coder.c
msgid "Using a preset in raw mode is discouraged."
msgstr "不推荐在 raw 模式使用预设等级。"
-#: src/xz/coder.c:172
+#: src/xz/coder.c
msgid "The exact options of the presets may vary between software versions."
msgstr "各个预设等级所使用的准确选项列表在不同软件版本之间可能不同。"
-#: src/xz/coder.c:195
+#: src/xz/coder.c
msgid "The .lzma format supports only the LZMA1 filter"
msgstr ".lzma 格式只支持 LZMA1 过滤器"
-#: src/xz/coder.c:203
+#: src/xz/coder.c
msgid "LZMA1 cannot be used with the .xz format"
msgstr "LZMA1 无法用于 .xz 格式"
-#: src/xz/coder.c:220
-msgid "The filter chain is incompatible with --flush-timeout"
-msgstr "过滤器链和 --flush-timeout 不兼容"
+#: src/xz/coder.c
+#, c-format
+msgid "Filter chain %u is incompatible with --flush-timeout"
+msgstr "过滤器链 %u 和 --flush-timeout 不兼容"
-#: src/xz/coder.c:226
+#: src/xz/coder.c
msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr "因 --flush-timeout 而切换至单线程模式"
-#: src/xz/coder.c:250
+#: src/xz/coder.c
+#, c-format
+msgid "Unsupported options in filter chain %u"
+msgstr "过滤器链 %u 中存在不支持的选项"
+
+#: src/xz/coder.c
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "使用最多 %<PRIu32> 个线程。"
-#: src/xz/coder.c:266
+#: src/xz/coder.c
msgid "Unsupported filter chain or filter options"
msgstr "不支持的过滤器链或过滤器选项"
-#: src/xz/coder.c:278
+#: src/xz/coder.c
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "解压缩需要 %s MiB 的内存。"
-#: src/xz/coder.c:310
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgstr "已将所使用的线程数从 %s 减小为 %s,以不超出 %s MiB 的内存用量限制"
-#: src/xz/coder.c:330
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway."
msgstr "已将所使用的线程数从 %s 减小为 1。这仍然超出了自动的内存使用限制 %s MiB。需要 %s MiB 的内存。继续操作。"
-#: src/xz/coder.c:357
+#: src/xz/coder.c
#, c-format
msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB"
msgstr "正在切换到单线程模式以不超出 %s MiB 的内存用量限制"
-#: src/xz/coder.c:412
+#: src/xz/coder.c
#, c-format
msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
msgstr "已调整 LZMA%c 字典大小(从 %s MiB 调整为 %s MiB),以不超出 %s MiB 的内存用量限制"
-#: src/xz/file_io.c:110 src/xz/file_io.c:118
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgid "Adjusted LZMA%c dictionary size for --filters%u from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgstr "已调整 LZMA%c 字典大小(从 %s MiB 调整为 %s MiB),以不超出 %s MiB 的内存用量限制"
+
+#: src/xz/coder.c
+#, c-format
+msgid "Error changing to filter chain %u: %s"
+msgstr "更改为过滤器链 %u 时出错:%s"
+
+#: src/xz/file_io.c
#, c-format
msgid "Error creating a pipe: %s"
msgstr "创建管道时出错:%s"
-#: src/xz/file_io.c:252
-msgid "Failed to enable the sandbox"
-msgstr "沙盒启用失败"
-
-#: src/xz/file_io.c:294
+#: src/xz/file_io.c
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s:poll() 失败:%s"
@@ -169,252 +198,252 @@ msgstr "%s:poll() 失败:%s"
#. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously
#. shouldn't be removed.
-#: src/xz/file_io.c:361
+#: src/xz/file_io.c
#, c-format
msgid "%s: File seems to have been moved, not removing"
msgstr "%s:文件似乎已移动,不再进行删除操作"
-#: src/xz/file_io.c:368 src/xz/file_io.c:924
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s:无法删除:%s"
-#: src/xz/file_io.c:394
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s:无法设置文件所有者:%s"
-#: src/xz/file_io.c:407
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s:无法设置文件所有组:%s"
-#: src/xz/file_io.c:426
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s:无法设置文件权限:%s"
-#: src/xz/file_io.c:552
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "从标准输入获取文件状态标志出错:%s"
-#: src/xz/file_io.c:610 src/xz/file_io.c:672
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s:是符号链接,跳过"
-#: src/xz/file_io.c:701
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s:是目录,跳过"
-#: src/xz/file_io.c:707
+#: src/xz/file_io.c
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s:不是标准文件,跳过"
-#: src/xz/file_io.c:724
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s:文件有设置用户ID或设置组ID标识,跳过"
-#: src/xz/file_io.c:731
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s:文件有粘滞位标识,跳过"
-#: src/xz/file_io.c:738
+#: src/xz/file_io.c
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s:输入文件有多于一个硬链接,跳过"
-#: src/xz/file_io.c:780
+#: src/xz/file_io.c
msgid "Empty filename, skipping"
msgstr "空文件名,跳过"
-#: src/xz/file_io.c:834
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "回复标准输入的状态标志时出错:%s"
-#: src/xz/file_io.c:882
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "获取标准输出的文件状态标志时出错:%s"
-#: src/xz/file_io.c:1081
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "恢复标准输出的 O_APPEND 标志时出错:%s"
-#: src/xz/file_io.c:1093
+#: src/xz/file_io.c
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s:关闭文件失败:%s"
-#: src/xz/file_io.c:1129 src/xz/file_io.c:1391
+#: src/xz/file_io.c
#, c-format
msgid "%s: Seeking failed when trying to create a sparse file: %s"
msgstr "%s:尝试创建稀疏文件时 seek 失败:%s"
-#: src/xz/file_io.c:1229
+#: src/xz/file_io.c
#, c-format
msgid "%s: Read error: %s"
msgstr "%s:读取错误:%s"
-#: src/xz/file_io.c:1259
+#: src/xz/file_io.c
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s:seek 文件时出错:%s"
-#: src/xz/file_io.c:1283
+#: src/xz/file_io.c
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s:未预期的文件结束"
-#: src/xz/file_io.c:1342
+#: src/xz/file_io.c
#, c-format
msgid "%s: Write error: %s"
msgstr "%s:写入错误:%s"
-#: src/xz/hardware.c:238
+#: src/xz/hardware.c
msgid "Disabled"
msgstr "已禁用"
-#: src/xz/hardware.c:269
+#: src/xz/hardware.c
msgid "Amount of physical memory (RAM):"
msgstr "物理内存(RAM)用量:"
-#: src/xz/hardware.c:270
+#: src/xz/hardware.c
msgid "Number of processor threads:"
msgstr "处理器线程数:"
-#: src/xz/hardware.c:271
+#: src/xz/hardware.c
msgid "Compression:"
msgstr "压缩:"
-#: src/xz/hardware.c:272
+#: src/xz/hardware.c
msgid "Decompression:"
msgstr "解压缩:"
-#: src/xz/hardware.c:273
+#: src/xz/hardware.c
msgid "Multi-threaded decompression:"
msgstr "多线程解压缩:"
-#: src/xz/hardware.c:274
+#: src/xz/hardware.c
msgid "Default for -T0:"
msgstr "-T0 的默认值:"
-#: src/xz/hardware.c:292
+#: src/xz/hardware.c
msgid "Hardware information:"
msgstr "硬件信息:"
-#: src/xz/hardware.c:299
+#: src/xz/hardware.c
msgid "Memory usage limits:"
msgstr "内存使用限制:"
-#: src/xz/list.c:68
+#: src/xz/list.c
msgid "Streams:"
msgstr "流:"
-#: src/xz/list.c:69
+#: src/xz/list.c
msgid "Blocks:"
msgstr "块:"
-#: src/xz/list.c:70
+#: src/xz/list.c
msgid "Compressed size:"
msgstr "压缩后大小:"
-#: src/xz/list.c:71
+#: src/xz/list.c
msgid "Uncompressed size:"
msgstr "解压缩大小:"
-#: src/xz/list.c:72
+#: src/xz/list.c
msgid "Ratio:"
msgstr "比例:"
-#: src/xz/list.c:73
+#: src/xz/list.c
msgid "Check:"
msgstr "校验:"
-#: src/xz/list.c:74
+#: src/xz/list.c
msgid "Stream Padding:"
msgstr "流填充大小:"
-#: src/xz/list.c:75
+#: src/xz/list.c
msgid "Memory needed:"
msgstr "所需内存:"
-#: src/xz/list.c:76
+#: src/xz/list.c
msgid "Sizes in headers:"
msgstr "头部存放大小:"
-#: src/xz/list.c:79
+#: src/xz/list.c
msgid "Number of files:"
msgstr "文件数量:"
-#: src/xz/list.c:122
+#: src/xz/list.c
msgid "Stream"
msgstr "流"
-#: src/xz/list.c:123
+#: src/xz/list.c
msgid "Block"
msgstr "块"
-#: src/xz/list.c:124
+#: src/xz/list.c
msgid "Blocks"
msgstr "块"
-#: src/xz/list.c:125
+#: src/xz/list.c
msgid "CompOffset"
msgstr "压缩偏移量"
-#: src/xz/list.c:126
+#: src/xz/list.c
msgid "UncompOffset"
msgstr "解压偏移量"
-#: src/xz/list.c:127
+#: src/xz/list.c
msgid "CompSize"
msgstr "压缩后大小"
-#: src/xz/list.c:128
+#: src/xz/list.c
msgid "UncompSize"
msgstr "解压缩大小"
-#: src/xz/list.c:129
+#: src/xz/list.c
msgid "TotalSize"
msgstr "总大小"
-#: src/xz/list.c:130
+#: src/xz/list.c
msgid "Ratio"
msgstr "比例"
-#: src/xz/list.c:131
+#: src/xz/list.c
msgid "Check"
msgstr "校验"
-#: src/xz/list.c:132
+#: src/xz/list.c
msgid "CheckVal"
msgstr "校验值"
-#: src/xz/list.c:133
+#: src/xz/list.c
msgid "Padding"
msgstr "填充"
-#: src/xz/list.c:134
+#: src/xz/list.c
msgid "Header"
msgstr "头部"
-#: src/xz/list.c:135
+#: src/xz/list.c
msgid "Flags"
msgstr "标志"
-#: src/xz/list.c:136
+#: src/xz/list.c
msgid "MemUsage"
msgstr "内存用量"
-#: src/xz/list.c:137
+#: src/xz/list.c
msgid "Filters"
msgstr "过滤器"
@@ -422,7 +451,7 @@ msgstr "过滤器"
#. This string is used in tables. In older xz version this
#. string was limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:169
+#: src/xz/list.c
msgid "None"
msgstr "无"
@@ -430,60 +459,60 @@ msgstr "无"
#. but the Check ID is known (here 2). In older xz version these
#. strings were limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:175
+#: src/xz/list.c
msgid "Unknown-2"
msgstr "未知-2"
-#: src/xz/list.c:176
+#: src/xz/list.c
msgid "Unknown-3"
msgstr "未知-3"
-#: src/xz/list.c:178
+#: src/xz/list.c
msgid "Unknown-5"
msgstr "未知-5"
-#: src/xz/list.c:179
+#: src/xz/list.c
msgid "Unknown-6"
msgstr "未知-6"
-#: src/xz/list.c:180
+#: src/xz/list.c
msgid "Unknown-7"
msgstr "未知-7"
-#: src/xz/list.c:181
+#: src/xz/list.c
msgid "Unknown-8"
msgstr "未知-8"
-#: src/xz/list.c:182
+#: src/xz/list.c
msgid "Unknown-9"
msgstr "未知-9"
-#: src/xz/list.c:184
+#: src/xz/list.c
msgid "Unknown-11"
msgstr "未知-11"
-#: src/xz/list.c:185
+#: src/xz/list.c
msgid "Unknown-12"
msgstr "未知-12"
-#: src/xz/list.c:186
+#: src/xz/list.c
msgid "Unknown-13"
msgstr "未知-13"
-#: src/xz/list.c:187
+#: src/xz/list.c
msgid "Unknown-14"
msgstr "未知-14"
-#: src/xz/list.c:188
+#: src/xz/list.c
msgid "Unknown-15"
msgstr "未知-15"
-#: src/xz/list.c:351
+#: src/xz/list.c
#, c-format
msgid "%s: File is empty"
msgstr "%s:文件为空"
-#: src/xz/list.c:356
+#: src/xz/list.c
#, c-format
msgid "%s: Too small to be a valid .xz file"
msgstr "%s:过小而不是有效的 .xz 文件"
@@ -492,63 +521,67 @@ msgstr "%s:过小而不是有效的 .xz 文件"
#. to Ratio, the columns are right aligned. Check and Filename
#. are left aligned. If you need longer words, it's OK to
#. use two lines here. Test with "xz -l foo.xz".
-#: src/xz/list.c:731
+#: src/xz/list.c
msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename"
msgstr " 流 块 压缩大小 解压大小 比例 校验 文件名"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "Yes"
msgstr "是"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "No"
msgstr "否"
-#: src/xz/list.c:1028 src/xz/list.c:1206
+#: src/xz/list.c
#, c-format
msgid " Minimum XZ Utils version: %s\n"
msgstr " 最低 XZ Utils 版本:%s\n"
#. TRANSLATORS: %s is an integer. Only the plural form of this
#. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz".
-#: src/xz/list.c:1179
+#: src/xz/list.c
#, c-format
msgid "%s file\n"
msgid_plural "%s files\n"
msgstr[0] "%s 文件\n"
-#: src/xz/list.c:1192
+#: src/xz/list.c
msgid "Totals:"
msgstr "总计:"
-#: src/xz/list.c:1270
+#: src/xz/list.c
msgid "--list works only on .xz files (--format=xz or --format=auto)"
msgstr "--list 仅适用于 .xz 文件(--format=xz 或 --format=auto)"
-#: src/xz/list.c:1276
+#: src/xz/list.c
+msgid "Try 'lzmainfo' with .lzma files."
+msgstr ""
+
+#: src/xz/list.c
msgid "--list does not support reading from standard input"
msgstr "--list 不支持从标准输入读取"
-#: src/xz/main.c:89
+#: src/xz/main.c
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s:读取文件名列表时出错:%s"
-#: src/xz/main.c:96
+#: src/xz/main.c
#, c-format
msgid "%s: Unexpected end of input when reading filenames"
msgstr "%s:读取文件名列表时遇到未预期的输入结束"
-#: src/xz/main.c:120
+#: src/xz/main.c
#, c-format
-msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
-msgstr "%s:读取文件名列表时获得了空字符;您可能想要使用“--files0”而非“--files”?"
+msgid "%s: Null character found when reading filenames; maybe you meant to use '--files0' instead of '--files'?"
+msgstr "%s:读取文件名列表时获得了空字符;您可能想要使用 '--files0' 而非 '--files'?"
-#: src/xz/main.c:188
+#: src/xz/main.c
msgid "Compression and decompression with --robot are not supported yet."
msgstr "尚不支持带 --robot 的压缩和解压缩。"
-#: src/xz/main.c:266
+#: src/xz/main.c
msgid "Cannot read data from standard input when reading filenames from standard input"
msgstr "无法同时从标准输入读取数据和文件名列表"
@@ -556,68 +589,68 @@ msgstr "无法同时从标准输入读取数据和文件名列表"
#. 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:670 src/xz/message.c:725
+#: src/xz/message.c
#, c-format
msgid "%s: "
msgstr "%s:"
-#: src/xz/message.c:797 src/xz/message.c:856
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
msgid "Internal error (bug)"
msgstr "内部错误(bug)"
-#: src/xz/message.c:804
+#: src/xz/message.c
msgid "Cannot establish signal handlers"
msgstr "无法建立信号处理器"
-#: src/xz/message.c:813
+#: src/xz/message.c
msgid "No integrity check; not verifying file integrity"
msgstr "无完整性检查;将不验证文件完整性"
-#: src/xz/message.c:816
+#: src/xz/message.c
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "不支持的完整性检查类型;将不验证文件完整性"
-#: src/xz/message.c:823
+#: src/xz/message.c
msgid "Memory usage limit reached"
msgstr "达到内存使用限制"
-#: src/xz/message.c:826
+#: src/xz/message.c
msgid "File format not recognized"
msgstr "无法识别文件格式"
-#: src/xz/message.c:829
+#: src/xz/message.c
msgid "Unsupported options"
msgstr "不支持的选项"
-#: src/xz/message.c:832
+#: src/xz/message.c
msgid "Compressed data is corrupt"
msgstr "压缩数据已损坏"
-#: src/xz/message.c:835
+#: src/xz/message.c
msgid "Unexpected end of input"
msgstr "输入意外结束"
-#: src/xz/message.c:877
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "需要 %s MiB 的内存空间。限制已禁用。"
-#: src/xz/message.c:905
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr "需要 %s MiB 的内存空间。限制为 %s。"
-#: src/xz/message.c:924
+#: src/xz/message.c
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s:过滤器链:%s\n"
-#: src/xz/message.c:935
+#: src/xz/message.c
#, c-format
-msgid "Try `%s --help' for more information."
-msgstr "请尝试执行“%s --help”来获取更多信息。"
+msgid "Try '%s --help' for more information."
+msgstr "请尝试执行 '%s --help' 来获取更多信息。"
-#: src/xz/message.c:961
+#: src/xz/message.c
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
@@ -628,15 +661,15 @@ msgstr ""
"使用 .xz 格式压缩或解压缩文件。\n"
"\n"
-#: src/xz/message.c:968
+#: src/xz/message.c
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr "必选参数对长短选项同时适用。\n"
-#: src/xz/message.c:972
+#: src/xz/message.c
msgid " Operation mode:\n"
msgstr " 操作模式:\n"
-#: src/xz/message.c:975
+#: src/xz/message.c
msgid ""
" -z, --compress force compression\n"
" -d, --decompress force decompression\n"
@@ -648,7 +681,7 @@ msgstr ""
" -t, --test 测试压缩文件完整性\n"
" -l, --list 列出 .xz 文件的信息"
-#: src/xz/message.c:981
+#: src/xz/message.c
msgid ""
"\n"
" Operation modifiers:\n"
@@ -656,7 +689,7 @@ msgstr ""
"\n"
" 操作修饰符:\n"
-#: src/xz/message.c:984
+#: src/xz/message.c
msgid ""
" -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\n"
@@ -666,16 +699,24 @@ msgstr ""
" -f, --force 强制覆写输出文件和(解)压缩链接\n"
" -c, --stdout 向标准输出写入,同时不要删除输入文件"
-#: src/xz/message.c:993
+#: src/xz/message.c
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
msgstr " --single-stream 仅解压缩第一个流,忽略其后可能继续出现的输入数据"
-#: src/xz/message.c:996
+#: src/xz/message.c
+#, fuzzy
+#| 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"
msgid ""
" --no-sparse do not create sparse files when decompressing\n"
-" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
+" -S, --suffix=.SUF use the suffix '.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n"
" omitted, filenames are read from the standard input;\n"
" filenames must be terminated with the newline character\n"
@@ -687,7 +728,7 @@ msgstr ""
" 将从标准输入读取文件名列表;文件名必须使用换行符分隔\n"
" --files0[=文件] 类似 --files,但使用空字符进行分隔"
-#: src/xz/message.c:1005
+#: src/xz/message.c
msgid ""
"\n"
" Basic file format and compression options:\n"
@@ -695,12 +736,18 @@ msgstr ""
"\n"
" 基本文件格式和压缩选项:\n"
-#: src/xz/message.c:1007
+#: src/xz/message.c
+#, fuzzy
+#| msgid ""
+#| " -F, --format=FMT file format to encode or decode; possible values are\n"
+#| " `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
+#| " -C, --check=CHECK integrity check type: `none' (use with caution),\n"
+#| " `crc32', `crc64' (default), or `sha256'"
msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n"
-" `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
-" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-" `crc32', `crc64' (default), or `sha256'"
+" 'auto' (default), 'xz', 'lzma', 'lzip', and 'raw'\n"
+" -C, --check=CHECK integrity check type: 'none' (use with caution),\n"
+" 'crc32', 'crc64' (default), or 'sha256'"
msgstr ""
" -F, --format=格式 要编码或解码的文件格式;可能的值包括\n"
" “auto”(默认)、“xz”、“lzma”、\n"
@@ -708,11 +755,11 @@ msgstr ""
" -C, --check=类型 完整性检查类型:“none”(请谨慎使用)、\n"
" “crc32”、“crc64”(默认)或“sha256”"
-#: src/xz/message.c:1012
+#: src/xz/message.c
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr " --ignore-check 解压缩时不要进行完整性检查验证"
-#: src/xz/message.c:1016
+#: src/xz/message.c
msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!"
@@ -720,7 +767,7 @@ msgstr ""
" -0 ... -9 压缩预设等级;默认为 6;使用 7-9 的等级之前,请先考虑\n"
" 压缩和解压缩所需的内存用量!(会占用大量内存空间)"
-#: src/xz/message.c:1020
+#: src/xz/message.c
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
@@ -728,15 +775,19 @@ msgstr ""
" -e, --extreme 尝试使用更多 CPU 时间来改进压缩比率;\n"
" 不会影响解压缩的内存需求量"
-#: src/xz/message.c:1024
+#: src/xz/message.c
+#, fuzzy
+#| 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"
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"
+" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
+" as many threads as there are processor cores"
msgstr ""
" -T, --threads=数量 使用最多指定数量的线程;默认值为 1;设置为 0\n"
" 可以使用与处理器内核数量相同的线程数"
-#: src/xz/message.c:1029
+#: src/xz/message.c
msgid ""
" --block-size=SIZE\n"
" start a new .xz block after every SIZE bytes of input;\n"
@@ -746,17 +797,24 @@ msgstr ""
" 输入每读取指定块大小的数据后即开始一个新的 .xz 块;\n"
" 使用该选项可以设置多线程压缩中的块大小"
-#: src/xz/message.c:1033
+#: src/xz/message.c
+#, fuzzy
+#| msgid ""
+#| " --block-list=SIZES\n"
+#| " start a new .xz block after the given comma-separated\n"
+#| " intervals of uncompressed data"
msgid ""
-" --block-list=SIZES\n"
+" --block-list=BLOCKS\n"
" start a new .xz block after the given comma-separated\n"
-" intervals of uncompressed data"
+" intervals of uncompressed data; optionally, specify a\n"
+" filter chain number (0-9) followed by a ':' before the\n"
+" uncompressed data size"
msgstr ""
" --block-list=块大小列表\n"
" 在所给出的未压缩数据间隔大小的数据之后开始一个新的\n"
" .xz 块(使用逗号分隔)"
-#: src/xz/message.c:1037
+#: src/xz/message.c
msgid ""
" --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n"
@@ -767,7 +825,7 @@ msgstr ""
" 进行压缩时,如果从上次刷洗输出之后经过了指定的超时时间\n"
" 且读取更多数据会被阻塞,则刷洗输出所有缓冲数据"
-#: src/xz/message.c:1043
+#: src/xz/message.c
#, no-c-format
msgid ""
" --memlimit-compress=LIMIT\n"
@@ -786,13 +844,13 @@ msgstr ""
" 所指定限制量单位为字节,或以百分号 % 结尾表示内存比例,\n"
" 或者指定 0 取软件默认值"
-#: src/xz/message.c:1052
+#: src/xz/message.c
msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards"
msgstr " --no-adjust 如果压缩设置超出内存用量限制,不调整设置而直接报错"
-#: src/xz/message.c:1058
+#: src/xz/message.c
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
@@ -800,7 +858,27 @@ msgstr ""
"\n"
" 用于压缩的自定义过滤器链(不使用预设等级时的备选用法):"
-#: src/xz/message.c:1067
+#: src/xz/message.c
+msgid ""
+"\n"
+" --filters=FILTERS set the filter chain using the liblzma filter string\n"
+" syntax; use --filters-help for more information"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters1=FILTERS ... --filters9=FILTERS\n"
+" set additional filter chains using the liblzma filter\n"
+" string syntax to use with --block-list"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters-help display more information about the liblzma filter string\n"
+" syntax and exit."
+msgstr ""
+
+#: src/xz/message.c
msgid ""
"\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
@@ -829,7 +907,19 @@ msgstr ""
" (hc3, hc4, bt2, bt3, bt4; bt4)\n"
" depth=数字 最大搜索深度; 0=自动(默认)"
-#: src/xz/message.c:1082
+#: src/xz/message.c
+#, fuzzy
+#| msgid ""
+#| "\n"
+#| " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
+#| " --arm[=OPTS] ARM BCJ filter\n"
+#| " --armthumb[=OPTS] ARM-Thumb BCJ filter\n"
+#| " --arm64[=OPTS] ARM64 BCJ filter\n"
+#| " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
+#| " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
+#| " --sparc[=OPTS] SPARC BCJ filter\n"
+#| " Valid OPTS for all BCJ filters:\n"
+#| " start=NUM start offset for conversions (default=0)"
msgid ""
"\n"
" --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
@@ -839,6 +929,7 @@ msgid ""
" --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
" --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
" --sparc[=OPTS] SPARC BCJ filter\n"
+" --riscv[=OPTS] RISC-V BCJ filter\n"
" Valid OPTS for all BCJ filters:\n"
" start=NUM start offset for conversions (default=0)"
msgstr ""
@@ -853,7 +944,7 @@ msgstr ""
" 所有过滤器可用选项:\n"
" start=数字 转换的起始偏移量(默认=0)"
-#: src/xz/message.c:1095
+#: src/xz/message.c
msgid ""
"\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n"
@@ -864,7 +955,7 @@ msgstr ""
" --delta[=选项] 增量过滤器;有效选项(有效值;默认值):\n"
" dist=NUM 相减的字节之间的距离 (1-256; 1)"
-#: src/xz/message.c:1103
+#: src/xz/message.c
msgid ""
"\n"
" Other options:\n"
@@ -872,7 +963,7 @@ msgstr ""
"\n"
" 其它选项:\n"
-#: src/xz/message.c:1106
+#: src/xz/message.c
msgid ""
" -q, --quiet suppress warnings; specify twice to suppress errors too\n"
" -v, --verbose be verbose; specify twice for even more verbose"
@@ -880,21 +971,21 @@ msgstr ""
" -q, --quiet 不显示警告信息;指定两次可不显示错误信息\n"
" -v, --verbose 输出详细信息;指定两次可以输出更详细的信息"
-#: src/xz/message.c:1111
+#: src/xz/message.c
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr " -Q, --no-warn 使得警告信息不影响程序退出返回值"
-#: src/xz/message.c:1113
+#: src/xz/message.c
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr " --robot 使用机器可解析的信息(对于脚本有用)"
-#: src/xz/message.c:1116
+#: src/xz/message.c
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
msgstr " --info-memory 显示 RAM 总量和当前配置的内存用量限制,然后退出"
-#: src/xz/message.c:1119
+#: src/xz/message.c
msgid ""
" -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit"
@@ -902,7 +993,7 @@ msgstr ""
" -h, --help 显示短帮助信息(仅列出基本选项)\n"
" -H, --long-help 显示本长帮助信息"
-#: src/xz/message.c:1123
+#: src/xz/message.c
msgid ""
" -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)"
@@ -910,11 +1001,12 @@ msgstr ""
" -h, --help 显示本短帮助信息并退出\n"
" -H, --long-help 显示长帮助信息(同时列出高级选项)"
-#: src/xz/message.c:1128
+#: src/xz/message.c
msgid " -V, --version display the version number and exit"
msgstr " -V, --version 显示软件版本号并退出"
-#: src/xz/message.c:1130
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
+#, c-format
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
@@ -926,7 +1018,7 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks.
-#: src/xz/message.c:1136
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr ""
@@ -934,89 +1026,126 @@ msgstr ""
"请使用中文向 TP 简体中文翻译团队 <i18n-zh@googlegroups.com>\n"
"报告软件的简体中文翻译错误。\n"
-#: src/xz/message.c:1138
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "%s home page: <%s>\n"
msgstr "%s 主页:<%s>\n"
-#: src/xz/message.c:1142
+#: src/xz/message.c
msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE."
msgstr "这是开发版本,不适用于生产环境使用。"
-#: src/xz/options.c:86
+#: src/xz/message.c
+msgid ""
+"Filter chains are set using the --filters=FILTERS or\n"
+"--filters1=FILTERS ... --filters9=FILTERS options. Each filter in the chain\n"
+"can be separated by spaces or '--'. Alternatively a preset <0-9>[e] can be\n"
+"specified instead of a filter chain.\n"
+msgstr ""
+
+#: src/xz/message.c
+#, fuzzy
+#| msgid "Unsupported filter chain or filter options"
+msgid "The supported filters and their options are:"
+msgstr "不支持的过滤器链或过滤器选项"
+
+#: src/xz/options.c
#, c-format
-msgid "%s: Options must be `name=value' pairs separated with commas"
-msgstr "%s:选项必须按照“名称=值”的格式成对出现,使用半角逗号分隔"
+msgid "%s: Options must be 'name=value' pairs separated with commas"
+msgstr "%s:选项必须按照 '名称=值' 的格式成对出现,使用半角逗号分隔"
-#: src/xz/options.c:93
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option name"
msgstr "%s:无效的选项名称"
-#: src/xz/options.c:113
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option value"
msgstr "%s:无效的选项值"
-#: src/xz/options.c:248
+#: src/xz/options.c
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "不支持的 LZMA1/LZMA2 预设等级:%s"
-#: src/xz/options.c:356
+#: src/xz/options.c
msgid "The sum of lc and lp must not exceed 4"
msgstr "lc 和 lp 的和必须不大于 4"
-#: src/xz/suffix.c:160
+#: src/xz/suffix.c
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s:文件名有未知后缀,跳过"
-#: src/xz/suffix.c:181
+#: src/xz/suffix.c
#, c-format
-msgid "%s: File already has `%s' suffix, skipping"
-msgstr "%s:文件已有“%s”后缀名,跳过"
+msgid "%s: File already has '%s' suffix, skipping"
+msgstr "%s:文件已有 '%s' 后缀名,跳过"
-#: src/xz/suffix.c:388
+#: src/xz/suffix.c
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s:无效的文件名后缀"
-#: src/xz/util.c:107
+#: src/xz/util.c
#, c-format
msgid "%s: Value is not a non-negative decimal integer"
msgstr "%s:值不是非负十进制整数"
-#: src/xz/util.c:149
+#: src/xz/util.c
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s:无效的乘数后缀"
-#: src/xz/util.c:151
-msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+#: src/xz/util.c
+#, fuzzy
+#| msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+msgid "Valid suffixes are 'KiB' (2^10), 'MiB' (2^20), and 'GiB' (2^30)."
msgstr "有效的后缀包括“KiB”(2^10)、“MiB”(2^20)和“GiB”(2^30)。"
-#: src/xz/util.c:168
-#, c-format
-msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+#: src/xz/util.c
+#, fuzzy, c-format
+#| msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+msgid "Value of the option '%s' must be in the range [%<PRIu64>, %<PRIu64>]"
msgstr "选项“%s”的值必须位于 [%<PRIu64>, %<PRIu64>] 范围内"
-#: src/xz/util.c:270
+#: src/xz/util.c
msgid "Compressed data cannot be read from a terminal"
msgstr "压缩数据不能从终端读取"
-#: src/xz/util.c:283
+#: src/xz/util.c
msgid "Compressed data cannot be written to a terminal"
msgstr "压缩数据不能向终端写入"
-#: src/common/tuklib_exit.c:40
+#: src/lzmainfo/lzmainfo.c
+#, c-format
+msgid ""
+"Usage: %s [--help] [--version] [FILE]...\n"
+"Show information stored in the .lzma file header"
+msgstr ""
+
+#: src/lzmainfo/lzmainfo.c
+#, fuzzy
+#| msgid "%s: Too small to be a valid .xz file"
+msgid "File is too small to be a .lzma file"
+msgstr "%s:过小而不是有效的 .xz 文件"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "Not a .lzma file"
+msgstr ""
+
+#: src/common/tuklib_exit.c
msgid "Writing to standard output failed"
msgstr "写入标准输出失败"
-#: src/common/tuklib_exit.c:43
+#: src/common/tuklib_exit.c
msgid "Unknown error"
msgstr "未知错误"
+#~ msgid "Failed to enable the sandbox"
+#~ msgstr "沙盒启用失败"
+
#~ msgid "The selected match finder requires at least nice=%<PRIu32>"
#~ msgstr "所选中的匹配搜索器(match finder)至少需要 nice=%<PRIu32>"
diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo
index b3d5bd3..a54e682 100644
--- a/po/zh_TW.gmo
+++ b/po/zh_TW.gmo
Binary files differ
diff --git a/po/zh_TW.po b/po/zh_TW.po
index 98d969f..f7a2bc6 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: xz 5.4.3\n"
"Report-Msgid-Bugs-To: xz@tukaani.org\n"
-"POT-Creation-Date: 2023-10-31 22:33+0800\n"
+"POT-Creation-Date: 2024-05-29 17:41+0300\n"
"PO-Revision-Date: 2023-07-08 23:05+0800\n"
"Last-Translator: Yi-Jyun Pan <pan93412@gmail.com>\n"
"Language-Team: Chinese (traditional) <zh-l10n@lists.linux.org.tw>\n"
@@ -19,143 +19,177 @@ msgstr ""
"X-Generator: Poedit 3.3.2\n"
"X-Poedit-SourceCharset: UTF-8\n"
-#: src/xz/args.c:77
+#: src/xz/args.c
#, c-format
msgid "%s: Invalid argument to --block-list"
msgstr "%s:傳入 --block-list 的參數無效"
-#: src/xz/args.c:87
+#: src/xz/args.c
#, c-format
msgid "%s: Too many arguments to --block-list"
msgstr "%s:傳入 --block-list 的參數過多"
-#: src/xz/args.c:116
+#: src/xz/args.c
+#, c-format
+msgid "In --block-list, block size is missing after filter chain number '%c:'"
+msgstr ""
+
+#: src/xz/args.c
msgid "0 can only be used as the last element in --block-list"
msgstr "0 只能作為 --block-list 的最後一個元素"
-#: src/xz/args.c:451
+#: src/xz/args.c
#, c-format
msgid "%s: Unknown file format type"
msgstr "%s:未知檔案格式類型"
-#: src/xz/args.c:474 src/xz/args.c:482
+#: src/xz/args.c
#, c-format
msgid "%s: Unsupported integrity check type"
msgstr "%s:不支援的完整性檢查類型"
-#: src/xz/args.c:518
-msgid "Only one file can be specified with `--files' or `--files0'."
+#: src/xz/args.c
+#, fuzzy
+#| msgid "Only one file can be specified with `--files' or `--files0'."
+msgid "Only one file can be specified with '--files' or '--files0'."
msgstr "「--files」或「--files0」只能指定一個檔案。"
#. TRANSLATORS: This is a translatable
#. string because French needs a space
#. before the colon ("%s : %s").
-#: src/xz/args.c:533 src/xz/coder.c:692 src/xz/coder.c:708 src/xz/coder.c:968
-#: src/xz/coder.c:971 src/xz/file_io.c:605 src/xz/file_io.c:679
-#: src/xz/file_io.c:769 src/xz/file_io.c:940 src/xz/list.c:369
-#: src/xz/list.c:415 src/xz/list.c:477 src/xz/list.c:581 src/xz/list.c:590
+#: src/xz/args.c src/xz/coder.c src/xz/file_io.c src/xz/list.c
#, fuzzy, c-format
#| msgid "%s: "
msgid "%s: %s"
msgstr "%s:"
-#: src/xz/args.c:589
+#: src/xz/args.c
#, c-format
msgid "The environment variable %s contains too many arguments"
msgstr "%s 環境變數包含過多參數"
-#: src/xz/args.c:691
+#: src/xz/args.c
msgid "Compression support was disabled at build time"
msgstr "已在編譯時停用壓縮支援"
-#: src/xz/args.c:698
+#: src/xz/args.c
msgid "Decompression support was disabled at build time"
msgstr "已在編譯時停用解壓縮支援"
-#: src/xz/args.c:704
+#: src/xz/args.c
msgid "Compression of lzip files (.lz) is not supported"
msgstr "不支援壓縮為 lzip 檔案 (.lz)"
-#: src/xz/args.c:735
+#: src/xz/args.c
+msgid "--block-list is ignored unless compressing to the .xz format"
+msgstr ""
+
+#: src/xz/args.c
msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout"
msgstr "搭配 --format=raw 時,除非寫入標準輸出,否則需要傳入 --suffix=.SUF"
-#: src/xz/coder.c:115
+#: src/xz/coder.c
msgid "Maximum number of filters is four"
msgstr "最多只能指定 4 個篩選器"
-#: src/xz/coder.c:135
+#: src/xz/coder.c
+#, c-format
+msgid "Error in --filters%s=FILTERS option:"
+msgstr ""
+
+#: src/xz/coder.c
msgid "Memory usage limit is too low for the given filter setup."
msgstr "記憶體用量限制過低,不足以設定指定的篩選器。"
-#: src/xz/coder.c:170
+#: src/xz/coder.c
+#, c-format
+msgid "filter chain %u used by --block-list but not specified with --filters%u="
+msgstr ""
+
+#: src/xz/coder.c
msgid "Using a preset in raw mode is discouraged."
msgstr "不建議在 Raw 模式使用設定檔。"
-#: src/xz/coder.c:172
+#: src/xz/coder.c
msgid "The exact options of the presets may vary between software versions."
msgstr "設定檔的選項可能因軟體版本而有異。"
-#: src/xz/coder.c:195
+#: src/xz/coder.c
msgid "The .lzma format supports only the LZMA1 filter"
msgstr ".lzma 格式僅支援 LZMA1 篩選器"
-#: src/xz/coder.c:203
+#: src/xz/coder.c
msgid "LZMA1 cannot be used with the .xz format"
msgstr "LZMA1 不能與 .xz 格式一同使用"
-#: src/xz/coder.c:220
-msgid "The filter chain is incompatible with --flush-timeout"
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "The filter chain is incompatible with --flush-timeout"
+msgid "Filter chain %u is incompatible with --flush-timeout"
msgstr "篩選鏈不相容 --flush-timeout"
-#: src/xz/coder.c:226
+#: src/xz/coder.c
msgid "Switching to single-threaded mode due to --flush-timeout"
msgstr "因指定 --flush-timeout,因此切換到單執行緒模式"
-#: src/xz/coder.c:250
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Unsupported options"
+msgid "Unsupported options in filter chain %u"
+msgstr "不支援的選項"
+
+#: src/xz/coder.c
#, c-format
msgid "Using up to %<PRIu32> threads."
msgstr "使用最多 %<PRIu32> 個執行緒。"
-#: src/xz/coder.c:266
+#: src/xz/coder.c
msgid "Unsupported filter chain or filter options"
msgstr "不支援的篩選鏈或篩選器選項"
-#: src/xz/coder.c:278
+#: src/xz/coder.c
#, c-format
msgid "Decompression will need %s MiB of memory."
msgstr "解壓縮將需要 %s MiB 的記憶體。"
-#: src/xz/coder.c:310
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB"
msgstr "已將執行緒數量從 %s 個減少至 %s 個,以不超過記憶體用量的 %s MiB 限制"
-#: src/xz/coder.c:330
+#: src/xz/coder.c
#, c-format
msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway."
msgstr "已將執行緒數量從 %s 減少至一個,但依然超出 %s MiB 的自動記憶體用量限制。需要 %s MiB 的記憶體。依然繼續執行。"
-#: src/xz/coder.c:357
+#: src/xz/coder.c
#, c-format
msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB"
msgstr "正在切換至單執行緒模式,以免超出 %s MiB 的記憶體用量限制"
-#: src/xz/coder.c:412
+#: src/xz/coder.c
#, c-format
msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
msgstr "已將 LZMA%c 的字典大小從 %s MiB 調整至 %s MiB,以不超過記憶體用量的 %s MiB 限制"
-#: src/xz/file_io.c:110 src/xz/file_io.c:118
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgid "Adjusted LZMA%c dictionary size for --filters%u from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB"
+msgstr "已將 LZMA%c 的字典大小從 %s MiB 調整至 %s MiB,以不超過記憶體用量的 %s MiB 限制"
+
+#: src/xz/coder.c
+#, fuzzy, c-format
+#| msgid "Error creating a pipe: %s"
+msgid "Error changing to filter chain %u: %s"
+msgstr "建立管線時發生錯誤:%s"
+
+#: src/xz/file_io.c
#, c-format
msgid "Error creating a pipe: %s"
msgstr "建立管線時發生錯誤:%s"
-#: src/xz/file_io.c:252
-msgid "Failed to enable the sandbox"
-msgstr "無法啟用沙盒"
-
-#: src/xz/file_io.c:294
+#: src/xz/file_io.c
#, c-format
msgid "%s: poll() failed: %s"
msgstr "%s:poll() 失敗:%s"
@@ -170,252 +204,252 @@ msgstr "%s:poll() 失敗:%s"
#. it is possible that the user has put a new file in place
#. of the original file, and in that case it obviously
#. shouldn't be removed.
-#: src/xz/file_io.c:361
+#: src/xz/file_io.c
#, c-format
msgid "%s: File seems to have been moved, not removing"
msgstr "%s:檔案似乎已經遷移,不移除"
-#: src/xz/file_io.c:368 src/xz/file_io.c:924
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot remove: %s"
msgstr "%s:無法移除:%s"
-#: src/xz/file_io.c:394
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file owner: %s"
msgstr "%s:無法設定檔案所有者:%s"
-#: src/xz/file_io.c:407
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file group: %s"
msgstr "%s:無法設定檔案群組:%s"
-#: src/xz/file_io.c:426
+#: src/xz/file_io.c
#, c-format
msgid "%s: Cannot set the file permissions: %s"
msgstr "%s:無法設定檔案權限:%s"
-#: src/xz/file_io.c:552
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard input: %s"
msgstr "從標準輸入取得檔案狀態旗標時發生錯誤:%s"
-#: src/xz/file_io.c:610 src/xz/file_io.c:672
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a symbolic link, skipping"
msgstr "%s:是個符號連結,跳過"
-#: src/xz/file_io.c:701
+#: src/xz/file_io.c
#, c-format
msgid "%s: Is a directory, skipping"
msgstr "%s:是個目錄,跳過"
-#: src/xz/file_io.c:707
+#: src/xz/file_io.c
#, c-format
msgid "%s: Not a regular file, skipping"
msgstr "%s:不是一般檔案,跳過"
-#: src/xz/file_io.c:724
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has setuid or setgid bit set, skipping"
msgstr "%s:檔案已設定 setuid 或 setgid 位元,跳過"
-#: src/xz/file_io.c:731
+#: src/xz/file_io.c
#, c-format
msgid "%s: File has sticky bit set, skipping"
msgstr "%s:檔案已設定黏性位元(sticky bit),跳過"
-#: src/xz/file_io.c:738
+#: src/xz/file_io.c
#, c-format
msgid "%s: Input file has more than one hard link, skipping"
msgstr "%s:輸入檔有超過一個實際連結 (hard link),跳過"
-#: src/xz/file_io.c:780
+#: src/xz/file_io.c
msgid "Empty filename, skipping"
msgstr "空檔名,跳過"
-#: src/xz/file_io.c:834
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the status flags to standard input: %s"
msgstr "將狀態旗標還原到標準輸入時發生錯誤:%s"
-#: src/xz/file_io.c:882
+#: src/xz/file_io.c
#, c-format
msgid "Error getting the file status flags from standard output: %s"
msgstr "從標準輸出取得檔案狀態旗標時發生錯誤:%s"
-#: src/xz/file_io.c:1081
+#: src/xz/file_io.c
#, c-format
msgid "Error restoring the O_APPEND flag to standard output: %s"
msgstr "將 O_APPEND 旗標還原到標準輸出時發生錯誤:%s"
-#: src/xz/file_io.c:1093
+#: src/xz/file_io.c
#, c-format
msgid "%s: Closing the file failed: %s"
msgstr "%s:關閉檔案失敗:%s"
-#: src/xz/file_io.c:1129 src/xz/file_io.c:1391
+#: src/xz/file_io.c
#, c-format
msgid "%s: Seeking failed when trying to create a sparse file: %s"
msgstr "%s:嘗試建立疏鬆檔案時發生搜尋失敗:%s"
-#: src/xz/file_io.c:1229
+#: src/xz/file_io.c
#, c-format
msgid "%s: Read error: %s"
msgstr "%s:讀取時發生錯誤:%s"
-#: src/xz/file_io.c:1259
+#: src/xz/file_io.c
#, c-format
msgid "%s: Error seeking the file: %s"
msgstr "%s:搜尋檔案時發生錯誤:%s"
-#: src/xz/file_io.c:1283
+#: src/xz/file_io.c
#, c-format
msgid "%s: Unexpected end of file"
msgstr "%s:非期望的檔案結尾"
-#: src/xz/file_io.c:1342
+#: src/xz/file_io.c
#, c-format
msgid "%s: Write error: %s"
msgstr "%s:寫入時發生錯誤:%s"
-#: src/xz/hardware.c:238
+#: src/xz/hardware.c
msgid "Disabled"
msgstr "已停用"
-#: src/xz/hardware.c:269
+#: src/xz/hardware.c
msgid "Amount of physical memory (RAM):"
msgstr "實體記憶體 (RAM) 數量:"
-#: src/xz/hardware.c:270
+#: src/xz/hardware.c
msgid "Number of processor threads:"
msgstr "處理器執行緒的數量:"
-#: src/xz/hardware.c:271
+#: src/xz/hardware.c
msgid "Compression:"
msgstr "壓縮:"
-#: src/xz/hardware.c:272
+#: src/xz/hardware.c
msgid "Decompression:"
msgstr "解壓縮:"
-#: src/xz/hardware.c:273
+#: src/xz/hardware.c
msgid "Multi-threaded decompression:"
msgstr "多執行緒解壓縮:"
-#: src/xz/hardware.c:274
+#: src/xz/hardware.c
msgid "Default for -T0:"
msgstr "-T0 的預設值:"
-#: src/xz/hardware.c:292
+#: src/xz/hardware.c
msgid "Hardware information:"
msgstr "硬體資訊:"
-#: src/xz/hardware.c:299
+#: src/xz/hardware.c
msgid "Memory usage limits:"
msgstr "記憶體用量上限:"
-#: src/xz/list.c:68
+#: src/xz/list.c
msgid "Streams:"
msgstr "串流:"
-#: src/xz/list.c:69
+#: src/xz/list.c
msgid "Blocks:"
msgstr "區塊:"
-#: src/xz/list.c:70
+#: src/xz/list.c
msgid "Compressed size:"
msgstr "壓縮後大小:"
-#: src/xz/list.c:71
+#: src/xz/list.c
msgid "Uncompressed size:"
msgstr "壓縮前大小:"
-#: src/xz/list.c:72
+#: src/xz/list.c
msgid "Ratio:"
msgstr "壓縮比:"
-#: src/xz/list.c:73
+#: src/xz/list.c
msgid "Check:"
msgstr "檢查:"
-#: src/xz/list.c:74
+#: src/xz/list.c
msgid "Stream Padding:"
msgstr "串流填充:"
-#: src/xz/list.c:75
+#: src/xz/list.c
msgid "Memory needed:"
msgstr "所需記憶體:"
-#: src/xz/list.c:76
+#: src/xz/list.c
msgid "Sizes in headers:"
msgstr "檔頭中標示大小:"
-#: src/xz/list.c:79
+#: src/xz/list.c
msgid "Number of files:"
msgstr "檔案數:"
-#: src/xz/list.c:122
+#: src/xz/list.c
msgid "Stream"
msgstr "串流"
-#: src/xz/list.c:123
+#: src/xz/list.c
msgid "Block"
msgstr "區塊"
-#: src/xz/list.c:124
+#: src/xz/list.c
msgid "Blocks"
msgstr "區塊"
-#: src/xz/list.c:125
+#: src/xz/list.c
msgid "CompOffset"
msgstr "壓縮偏移"
-#: src/xz/list.c:126
+#: src/xz/list.c
msgid "UncompOffset"
msgstr "未壓縮偏移"
-#: src/xz/list.c:127
+#: src/xz/list.c
msgid "CompSize"
msgstr "壓縮大小"
-#: src/xz/list.c:128
+#: src/xz/list.c
msgid "UncompSize"
msgstr "未壓縮大小"
-#: src/xz/list.c:129
+#: src/xz/list.c
msgid "TotalSize"
msgstr "總計大小"
-#: src/xz/list.c:130
+#: src/xz/list.c
msgid "Ratio"
msgstr "比率"
-#: src/xz/list.c:131
+#: src/xz/list.c
msgid "Check"
msgstr "檢查"
-#: src/xz/list.c:132
+#: src/xz/list.c
msgid "CheckVal"
msgstr "檢查值"
-#: src/xz/list.c:133
+#: src/xz/list.c
msgid "Padding"
msgstr "填充"
-#: src/xz/list.c:134
+#: src/xz/list.c
msgid "Header"
msgstr "檔頭"
-#: src/xz/list.c:135
+#: src/xz/list.c
msgid "Flags"
msgstr "旗標"
-#: src/xz/list.c:136
+#: src/xz/list.c
msgid "MemUsage"
msgstr "Mem用量"
-#: src/xz/list.c:137
+#: src/xz/list.c
msgid "Filters"
msgstr "篩選器"
@@ -423,7 +457,7 @@ msgstr "篩選器"
#. This string is used in tables. In older xz version this
#. string was limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:169
+#: src/xz/list.c
msgid "None"
msgstr "無"
@@ -431,60 +465,60 @@ msgstr "無"
#. but the Check ID is known (here 2). In older xz version these
#. strings were limited to ten columns in a fixed-width font, but
#. nowadays there is no strict length restriction anymore.
-#: src/xz/list.c:175
+#: src/xz/list.c
msgid "Unknown-2"
msgstr "未知-2"
-#: src/xz/list.c:176
+#: src/xz/list.c
msgid "Unknown-3"
msgstr "未知-3"
-#: src/xz/list.c:178
+#: src/xz/list.c
msgid "Unknown-5"
msgstr "未知-5"
-#: src/xz/list.c:179
+#: src/xz/list.c
msgid "Unknown-6"
msgstr "未知-6"
-#: src/xz/list.c:180
+#: src/xz/list.c
msgid "Unknown-7"
msgstr "未知-7"
-#: src/xz/list.c:181
+#: src/xz/list.c
msgid "Unknown-8"
msgstr "未知-8"
-#: src/xz/list.c:182
+#: src/xz/list.c
msgid "Unknown-9"
msgstr "未知-9"
-#: src/xz/list.c:184
+#: src/xz/list.c
msgid "Unknown-11"
msgstr "未知-11"
-#: src/xz/list.c:185
+#: src/xz/list.c
msgid "Unknown-12"
msgstr "未知-12"
-#: src/xz/list.c:186
+#: src/xz/list.c
msgid "Unknown-13"
msgstr "未知-13"
-#: src/xz/list.c:187
+#: src/xz/list.c
msgid "Unknown-14"
msgstr "未知-14"
-#: src/xz/list.c:188
+#: src/xz/list.c
msgid "Unknown-15"
msgstr "未知-15"
-#: src/xz/list.c:351
+#: src/xz/list.c
#, c-format
msgid "%s: File is empty"
msgstr "%s:檔案是空的"
-#: src/xz/list.c:356
+#: src/xz/list.c
#, c-format
msgid "%s: Too small to be a valid .xz file"
msgstr "%s:因過小而不認為是個有效 .xz 檔"
@@ -493,63 +527,68 @@ msgstr "%s:因過小而不認為是個有效 .xz 檔"
#. to Ratio, the columns are right aligned. Check and Filename
#. are left aligned. If you need longer words, it's OK to
#. use two lines here. Test with "xz -l foo.xz".
-#: src/xz/list.c:731
+#: src/xz/list.c
msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename"
msgstr " 串流 區塊 已壓縮 未壓縮 比例 檢驗碼 檔名"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "Yes"
msgstr "是"
-#: src/xz/list.c:1026 src/xz/list.c:1204
+#: src/xz/list.c
msgid "No"
msgstr "否"
-#: src/xz/list.c:1028 src/xz/list.c:1206
+#: src/xz/list.c
#, c-format
msgid " Minimum XZ Utils version: %s\n"
msgstr " 最小 XZ 工具程式版本: %s\n"
#. TRANSLATORS: %s is an integer. Only the plural form of this
#. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz".
-#: src/xz/list.c:1179
+#: src/xz/list.c
#, c-format
msgid "%s file\n"
msgid_plural "%s files\n"
msgstr[0] "%s 個檔案\n"
-#: src/xz/list.c:1192
+#: src/xz/list.c
msgid "Totals:"
msgstr "總計:"
-#: src/xz/list.c:1270
+#: src/xz/list.c
msgid "--list works only on .xz files (--format=xz or --format=auto)"
msgstr "--list 只能在 .xz 檔使用(--format=xz 或 --format=auto)"
-#: src/xz/list.c:1276
+#: src/xz/list.c
+msgid "Try 'lzmainfo' with .lzma files."
+msgstr ""
+
+#: src/xz/list.c
msgid "--list does not support reading from standard input"
msgstr "--list 不支援從標準輸入讀取"
-#: src/xz/main.c:89
+#: src/xz/main.c
#, c-format
msgid "%s: Error reading filenames: %s"
msgstr "%s:讀取檔名時發生錯誤:%s"
-#: src/xz/main.c:96
+#: src/xz/main.c
#, c-format
msgid "%s: Unexpected end of input when reading filenames"
msgstr "%s:讀取檔名時遇到非預期的輸入結尾"
-#: src/xz/main.c:120
-#, c-format
-msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
+#: src/xz/main.c
+#, fuzzy, c-format
+#| msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?"
+msgid "%s: Null character found when reading filenames; maybe you meant to use '--files0' instead of '--files'?"
msgstr "%s:讀取檔名時發現空字元;或許您想使用「--files0」而非「--files」?"
-#: src/xz/main.c:188
+#: src/xz/main.c
msgid "Compression and decompression with --robot are not supported yet."
msgstr "尚未支援搭配 --robot 壓縮和解壓縮。"
-#: src/xz/main.c:266
+#: src/xz/main.c
msgid "Cannot read data from standard input when reading filenames from standard input"
msgstr "從標準輸入讀取檔名時,無法從標準輸入讀取資料"
@@ -557,68 +596,69 @@ msgstr "從標準輸入讀取檔名時,無法從標準輸入讀取資料"
#. 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:670 src/xz/message.c:725
+#: src/xz/message.c
#, c-format
msgid "%s: "
msgstr "%s:"
-#: src/xz/message.c:797 src/xz/message.c:856
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
msgid "Internal error (bug)"
msgstr "內部錯誤(臭蟲)"
-#: src/xz/message.c:804
+#: src/xz/message.c
msgid "Cannot establish signal handlers"
msgstr "無法確立信號處理器"
-#: src/xz/message.c:813
+#: src/xz/message.c
msgid "No integrity check; not verifying file integrity"
msgstr "沒有完整性檢查;不驗證檔案完整性"
-#: src/xz/message.c:816
+#: src/xz/message.c
msgid "Unsupported type of integrity check; not verifying file integrity"
msgstr "未知完整性檢查類型;不驗證檔案完整性"
-#: src/xz/message.c:823
+#: src/xz/message.c
msgid "Memory usage limit reached"
msgstr "達到記憶體用量上限"
-#: src/xz/message.c:826
+#: src/xz/message.c
msgid "File format not recognized"
msgstr "無法識別檔案格式"
-#: src/xz/message.c:829
+#: src/xz/message.c
msgid "Unsupported options"
msgstr "不支援的選項"
-#: src/xz/message.c:832
+#: src/xz/message.c
msgid "Compressed data is corrupt"
msgstr "壓縮資料是損壞的"
-#: src/xz/message.c:835
+#: src/xz/message.c
msgid "Unexpected end of input"
msgstr "遇到非預期輸入結尾"
-#: src/xz/message.c:877
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limiter is disabled."
msgstr "需要 %s MiB 的記憶體。已停用記憶體限制器。"
-#: src/xz/message.c:905
+#: src/xz/message.c
#, c-format
msgid "%s MiB of memory is required. The limit is %s."
msgstr "需要 %s MiB 的記憶體。記憶體限制為 %s。"
-#: src/xz/message.c:924
+#: src/xz/message.c
#, c-format
msgid "%s: Filter chain: %s\n"
msgstr "%s:篩選鏈:%s\n"
-#: src/xz/message.c:935
-#, c-format
-msgid "Try `%s --help' for more information."
+#: src/xz/message.c
+#, fuzzy, c-format
+#| msgid "Try `%s --help' for more information."
+msgid "Try '%s --help' for more information."
msgstr "嘗試「%s --help」取得更多資訊。"
-#: src/xz/message.c:961
+#: src/xz/message.c
#, c-format
msgid ""
"Usage: %s [OPTION]... [FILE]...\n"
@@ -629,15 +669,15 @@ msgstr ""
"用 .xz 格式壓縮,或解壓縮 .xz 格式中的 <檔案>。\n"
"\n"
-#: src/xz/message.c:968
+#: src/xz/message.c
msgid "Mandatory arguments to long options are mandatory for short options too.\n"
msgstr "長選項的必填參數,對短選項也是必填。\n"
-#: src/xz/message.c:972
+#: src/xz/message.c
msgid " Operation mode:\n"
msgstr " 操作模式:\n"
-#: src/xz/message.c:975
+#: src/xz/message.c
msgid ""
" -z, --compress force compression\n"
" -d, --decompress force decompression\n"
@@ -649,7 +689,7 @@ msgstr ""
" -t, --test 測試壓縮檔完整性\n"
" -l, --list 列出 .xz 檔的資訊"
-#: src/xz/message.c:981
+#: src/xz/message.c
msgid ""
"\n"
" Operation modifiers:\n"
@@ -657,7 +697,7 @@ msgstr ""
"\n"
" 操作修飾詞:\n"
-#: src/xz/message.c:984
+#: src/xz/message.c
msgid ""
" -k, --keep keep (don't delete) input files\n"
" -f, --force force overwrite of output file and (de)compress links\n"
@@ -667,7 +707,7 @@ msgstr ""
" -f, --force 強制覆寫輸出檔並(解)壓縮連結\n"
" -c, --stdout 寫入標準輸出並不刪除輸入檔"
-#: src/xz/message.c:993
+#: src/xz/message.c
msgid ""
" --single-stream decompress only the first stream, and silently\n"
" ignore possible remaining input data"
@@ -675,10 +715,18 @@ msgstr ""
" --single-stream 僅解壓縮第一個串流,再\n"
" 安靜地忽略可能剩餘的輸入檔"
-#: src/xz/message.c:996
+#: src/xz/message.c
+#, fuzzy
+#| 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"
msgid ""
" --no-sparse do not create sparse files when decompressing\n"
-" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
+" -S, --suffix=.SUF use the suffix '.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n"
" omitted, filenames are read from the standard input;\n"
" filenames must be terminated with the newline character\n"
@@ -690,7 +738,7 @@ msgstr ""
" 則從標準輸入讀取檔名;檔名必須以換行字元作為結尾\n"
" --files0[=檔案] 類似 --files 但是以 null 空字元作結尾"
-#: src/xz/message.c:1005
+#: src/xz/message.c
msgid ""
"\n"
" Basic file format and compression options:\n"
@@ -698,23 +746,29 @@ msgstr ""
"\n"
" 基本檔案格式與壓縮選項:\n"
-#: src/xz/message.c:1007
+#: src/xz/message.c
+#, fuzzy
+#| msgid ""
+#| " -F, --format=FMT file format to encode or decode; possible values are\n"
+#| " `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
+#| " -C, --check=CHECK integrity check type: `none' (use with caution),\n"
+#| " `crc32', `crc64' (default), or `sha256'"
msgid ""
" -F, --format=FMT file format to encode or decode; possible values are\n"
-" `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
-" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-" `crc32', `crc64' (default), or `sha256'"
+" 'auto' (default), 'xz', 'lzma', 'lzip', and 'raw'\n"
+" -C, --check=CHECK integrity check type: 'none' (use with caution),\n"
+" 'crc32', 'crc64' (default), or 'sha256'"
msgstr ""
" -F, --format=格式 用於編碼或解碼的檔案格式;可用的值有:\n"
" “auto”(預設)、“xz”、“lzma”、“lzip” 及 “raw”\n"
" -C, --check=檢查碼 完整性檢查類型:“none”(謹慎使用)、“crc32”、\n"
" “crc64”(預設值)或“sha256”"
-#: src/xz/message.c:1012
+#: src/xz/message.c
msgid " --ignore-check don't verify the integrity check when decompressing"
msgstr " --ignore-check 不在解壓縮時驗證完整性"
-#: src/xz/message.c:1016
+#: src/xz/message.c
msgid ""
" -0 ... -9 compression preset; default is 6; take compressor *and*\n"
" decompressor memory usage into account before using 7-9!"
@@ -722,7 +776,7 @@ msgstr ""
" -0 ... -9 壓縮設定檔;預設值為 6;使用 7-9 前請考慮\n"
" 壓縮和解壓縮所使用的記憶體!"
-#: src/xz/message.c:1020
+#: src/xz/message.c
msgid ""
" -e, --extreme try to improve compression ratio by using more CPU time;\n"
" does not affect decompressor memory requirements"
@@ -730,15 +784,19 @@ msgstr ""
" -e, --extreme 使用更多 CPU 時間以嘗試改善壓縮比;\n"
" 不影響解壓縮器的記憶體需求"
-#: src/xz/message.c:1024
+#: src/xz/message.c
+#, fuzzy
+#| 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"
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"
+" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
+" as many threads as there are processor cores"
msgstr ""
" -T, --threads=NUM 使用最多 NUM 個執行緒;預設為 1;設成 0 則使用所有的\n"
" 處理機核心"
-#: src/xz/message.c:1029
+#: src/xz/message.c
msgid ""
" --block-size=SIZE\n"
" start a new .xz block after every SIZE bytes of input;\n"
@@ -748,17 +806,24 @@ msgstr ""
" 輸入每 SIZE 位元組後,開始一個新 .xz 區塊;\n"
" 使用此功能以設定多執行緒壓縮的區塊大小"
-#: src/xz/message.c:1033
+#: src/xz/message.c
+#, fuzzy
+#| msgid ""
+#| " --block-list=SIZES\n"
+#| " start a new .xz block after the given comma-separated\n"
+#| " intervals of uncompressed data"
msgid ""
-" --block-list=SIZES\n"
+" --block-list=BLOCKS\n"
" start a new .xz block after the given comma-separated\n"
-" intervals of uncompressed data"
+" intervals of uncompressed data; optionally, specify a\n"
+" filter chain number (0-9) followed by a ':' before the\n"
+" uncompressed data size"
msgstr ""
" --block-list=SIZES\n"
" 在指定以逗號隔開的未壓縮資料間隔之後\n"
" 開始新的 .xz 區塊"
-#: src/xz/message.c:1037
+#: src/xz/message.c
msgid ""
" --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n"
@@ -769,7 +834,7 @@ msgstr ""
" 壓縮時,倘若繼上次排清 (flush) 已經超過 TIMEOUT 毫秒\n"
" 而且讀入更多輸入會阻塞,則所有待排清的資料都將排清"
-#: src/xz/message.c:1043
+#: src/xz/message.c
#, no-c-format
msgid ""
" --memlimit-compress=LIMIT\n"
@@ -788,7 +853,7 @@ msgstr ""
" 用量上限。LIMIT 得是位元組、記憶體百分比 (%),或 0\n"
" (預設值)"
-#: src/xz/message.c:1052
+#: src/xz/message.c
msgid ""
" --no-adjust if compression settings exceed the memory usage limit,\n"
" give an error instead of adjusting the settings downwards"
@@ -796,7 +861,7 @@ msgstr ""
" --no-adjust 若壓縮設定超過記憶體用量上限,請給出\n"
" 錯誤而非下調設定"
-#: src/xz/message.c:1058
+#: src/xz/message.c
msgid ""
"\n"
" Custom filter chain for compression (alternative for using presets):"
@@ -804,7 +869,27 @@ msgstr ""
"\n"
" 自訂壓縮篩選鏈(使用設定檔時選用):"
-#: src/xz/message.c:1067
+#: src/xz/message.c
+msgid ""
+"\n"
+" --filters=FILTERS set the filter chain using the liblzma filter string\n"
+" syntax; use --filters-help for more information"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters1=FILTERS ... --filters9=FILTERS\n"
+" set additional filter chains using the liblzma filter\n"
+" string syntax to use with --block-list"
+msgstr ""
+
+#: src/xz/message.c
+msgid ""
+" --filters-help display more information about the liblzma filter string\n"
+" syntax and exit."
+msgstr ""
+
+#: src/xz/message.c
msgid ""
"\n"
" --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n"
@@ -832,7 +917,19 @@ msgstr ""
" mf=名稱 尋找符合搜尋器 (hc3, hc4, bt2, bt3, bt4; bt4)\n"
" depth=NUM 最大搜尋深度;0=自動(預設)"
-#: src/xz/message.c:1082
+#: src/xz/message.c
+#, fuzzy
+#| msgid ""
+#| "\n"
+#| " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
+#| " --arm[=OPTS] ARM BCJ filter\n"
+#| " --armthumb[=OPTS] ARM-Thumb BCJ filter\n"
+#| " --arm64[=OPTS] ARM64 BCJ filter\n"
+#| " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
+#| " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
+#| " --sparc[=OPTS] SPARC BCJ filter\n"
+#| " Valid OPTS for all BCJ filters:\n"
+#| " start=NUM start offset for conversions (default=0)"
msgid ""
"\n"
" --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n"
@@ -842,6 +939,7 @@ msgid ""
" --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
" --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
" --sparc[=OPTS] SPARC BCJ filter\n"
+" --riscv[=OPTS] RISC-V BCJ filter\n"
" Valid OPTS for all BCJ filters:\n"
" start=NUM start offset for conversions (default=0)"
msgstr ""
@@ -856,7 +954,7 @@ msgstr ""
" 所有 BCJ 篩選器可用的 OPTS:\n"
" start=NUM 轉換起始位移(預設值=0)"
-#: src/xz/message.c:1095
+#: src/xz/message.c
msgid ""
"\n"
" --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n"
@@ -868,7 +966,7 @@ msgstr ""
" dist=NUM 相減的位元組之間的距離\n"
" (1-256; 1)"
-#: src/xz/message.c:1103
+#: src/xz/message.c
msgid ""
"\n"
" Other options:\n"
@@ -876,7 +974,7 @@ msgstr ""
"\n"
" 其他選項:\n"
-#: src/xz/message.c:1106
+#: src/xz/message.c
msgid ""
" -q, --quiet suppress warnings; specify twice to suppress errors too\n"
" -v, --verbose be verbose; specify twice for even more verbose"
@@ -884,21 +982,21 @@ msgstr ""
" -q, --quiet 隱藏警告訊息;指定兩次也一併隱藏錯誤訊息\n"
" -v, --verbose 輸出較詳細內容;指定兩次更詳細輸出"
-#: src/xz/message.c:1111
+#: src/xz/message.c
msgid " -Q, --no-warn make warnings not affect the exit status"
msgstr " -Q, --no-warn 即使有警告,退出狀態碼仍不變"
-#: src/xz/message.c:1113
+#: src/xz/message.c
msgid " --robot use machine-parsable messages (useful for scripts)"
msgstr " --robot 使用機器可解析訊息(適合用於指令稿)"
-#: src/xz/message.c:1116
+#: src/xz/message.c
msgid ""
" --info-memory display the total amount of RAM and the currently active\n"
" memory usage limits, and exit"
msgstr " --info-memory 顯示記憶體總量和使用中的記憶體用量限制後退出"
-#: src/xz/message.c:1119
+#: src/xz/message.c
msgid ""
" -h, --help display the short help (lists only the basic options)\n"
" -H, --long-help display this long help and exit"
@@ -906,7 +1004,7 @@ msgstr ""
" -h, --help 顯示較短說明(僅列出基本選項)\n"
" -H, --long-help 顯示較長說明後退出"
-#: src/xz/message.c:1123
+#: src/xz/message.c
msgid ""
" -h, --help display this short help and exit\n"
" -H, --long-help display the long help (lists also the advanced options)"
@@ -914,11 +1012,12 @@ msgstr ""
" -h, --help 顯示較短說明後退出\n"
" -H, --long-help 顯示較長說明(也列出進階選項)"
-#: src/xz/message.c:1128
+#: src/xz/message.c
msgid " -V, --version display the version number and exit"
msgstr " -V, --version 顯示版本號碼後退出"
-#: src/xz/message.c:1130
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
+#, c-format
msgid ""
"\n"
"With no FILE, or when FILE is -, read standard input.\n"
@@ -930,94 +1029,133 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the email or WWW
#. address for translation bugs. Thanks.
-#: src/xz/message.c:1136
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "Report bugs to <%s> (in English or Finnish).\n"
msgstr "請回報臭蟲至 <%s>(使用英文或芬蘭語)。\n"
-#: src/xz/message.c:1138
+#: src/xz/message.c src/lzmainfo/lzmainfo.c
#, c-format
msgid "%s home page: <%s>\n"
msgstr "%s 首頁:<%s>\n"
-#: src/xz/message.c:1142
+#: src/xz/message.c
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"
+#: src/xz/message.c
+msgid ""
+"Filter chains are set using the --filters=FILTERS or\n"
+"--filters1=FILTERS ... --filters9=FILTERS options. Each filter in the chain\n"
+"can be separated by spaces or '--'. Alternatively a preset <0-9>[e] can be\n"
+"specified instead of a filter chain.\n"
+msgstr ""
+
+#: src/xz/message.c
+#, fuzzy
+#| msgid "Unsupported filter chain or filter options"
+msgid "The supported filters and their options are:"
+msgstr "不支援的篩選鏈或篩選器選項"
+
+#: src/xz/options.c
+#, fuzzy, c-format
+#| msgid "%s: Options must be `name=value' pairs separated with commas"
+msgid "%s: Options must be 'name=value' pairs separated with commas"
msgstr "%s:選項形式必須為以逗號分隔的「name=value」值對"
-#: src/xz/options.c:93
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option name"
msgstr "%s:選項名稱無效"
-#: src/xz/options.c:113
+#: src/xz/options.c
#, c-format
msgid "%s: Invalid option value"
msgstr "%s:選項值無效"
-#: src/xz/options.c:248
+#: src/xz/options.c
#, c-format
msgid "Unsupported LZMA1/LZMA2 preset: %s"
msgstr "不支援的 LZMA1/LZMA2 設定檔:%s"
-#: src/xz/options.c:356
+#: src/xz/options.c
msgid "The sum of lc and lp must not exceed 4"
msgstr "lc 和 lp 的總和不能超過 4"
-#: src/xz/suffix.c:160
+#: src/xz/suffix.c
#, c-format
msgid "%s: Filename has an unknown suffix, skipping"
msgstr "%s:檔名有未知後綴,跳過"
-#: src/xz/suffix.c:181
-#, c-format
-msgid "%s: File already has `%s' suffix, skipping"
+#: src/xz/suffix.c
+#, fuzzy, c-format
+#| msgid "%s: File already has `%s' suffix, skipping"
+msgid "%s: File already has '%s' suffix, skipping"
msgstr "%s:檔案已有「%s」後綴,跳過"
-#: src/xz/suffix.c:388
+#: src/xz/suffix.c
#, c-format
msgid "%s: Invalid filename suffix"
msgstr "%s:檔名後綴無效"
-#: src/xz/util.c:107
+#: src/xz/util.c
#, c-format
msgid "%s: Value is not a non-negative decimal integer"
msgstr "%s:數值不是非負數十進位整數"
-#: src/xz/util.c:149
+#: src/xz/util.c
#, c-format
msgid "%s: Invalid multiplier suffix"
msgstr "%s:乘數後綴無效"
-#: src/xz/util.c:151
-msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+#: src/xz/util.c
+#, fuzzy
+#| msgid "Valid suffixes are `KiB' (2^10), `MiB' (2^20), and `GiB' (2^30)."
+msgid "Valid suffixes are 'KiB' (2^10), 'MiB' (2^20), and 'GiB' (2^30)."
msgstr "有效的後綴有「KiB」(2^10)、「MiB」(2^20) 及「GiB」(2^30)。"
-#: src/xz/util.c:168
-#, c-format
-msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+#: src/xz/util.c
+#, fuzzy, c-format
+#| msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]"
+msgid "Value of the option '%s' must be in the range [%<PRIu64>, %<PRIu64>]"
msgstr "選項「%s」的數值必須在 [%<PRIu64>, %<PRIu64>] 範圍內"
-#: src/xz/util.c:270
+#: src/xz/util.c
msgid "Compressed data cannot be read from a terminal"
msgstr "不能從終端機讀入已壓縮資料"
-#: src/xz/util.c:283
+#: src/xz/util.c
msgid "Compressed data cannot be written to a terminal"
msgstr "不能將已壓縮資料寫入終端機"
-#: src/common/tuklib_exit.c:40
+#: src/lzmainfo/lzmainfo.c
+#, c-format
+msgid ""
+"Usage: %s [--help] [--version] [FILE]...\n"
+"Show information stored in the .lzma file header"
+msgstr ""
+
+#: src/lzmainfo/lzmainfo.c
+#, fuzzy
+#| msgid "%s: Too small to be a valid .xz file"
+msgid "File is too small to be a .lzma file"
+msgstr "%s:因過小而不認為是個有效 .xz 檔"
+
+#: src/lzmainfo/lzmainfo.c
+msgid "Not a .lzma file"
+msgstr ""
+
+#: src/common/tuklib_exit.c
msgid "Writing to standard output failed"
msgstr "寫入標準輸出失敗"
-#: src/common/tuklib_exit.c:43
+#: src/common/tuklib_exit.c
msgid "Unknown error"
msgstr "未知錯誤"
+#~ msgid "Failed to enable the sandbox"
+#~ msgstr "無法啟用沙盒"
+
#~ msgid "Sandbox is disabled due to incompatible command line arguments"
#~ msgstr "由於指定不相容的指令列參數,已停用沙盒"
diff --git a/po4a/.gitignore b/po4a/.gitignore
deleted file mode 100644
index 5bcfa04..0000000
--- a/po4a/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/man
-/xz-man.pot
diff --git a/po4a/de.po b/po4a/de.po
index b0635d0..20c3c1d 100644
--- a/po4a/de.po
+++ b/po4a/de.po
@@ -1,13 +1,15 @@
-# XZ Utils man pages German translation
-# This file is put in the public domain.
+# SPDX-License-Identifier: 0BSD
+# German translation for xz-man.
+# This file is published under the BSD Zero Clause License.
+# Copyright (C) The XZ Utils authors and contributors
#
-# Mario Blättermann <mario.blaettermann@gmail.com>, 2015, 2019-2020, 2022-2023.
+# Mario Blättermann <mario.blaettermann@gmail.com>, 2015, 2019-2020, 2022-2024.
msgid ""
msgstr ""
-"Project-Id-Version: xz-man 5.4.4-pre1\n"
+"Project-Id-Version: xz-man 5.6.0-pre2\n"
"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n"
-"POT-Creation-Date: 2023-11-01 20:27+0800\n"
-"PO-Revision-Date: 2023-07-19 20:47+0200\n"
+"POT-Creation-Date: 2024-05-29 17:45+0300\n"
+"PO-Revision-Date: 2024-02-15 19:18+0100\n"
"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
"Language: de\n"
@@ -16,4892 +18,3224 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Lokalize 23.04.3\n"
+"X-Generator: Lokalize 23.08.4\n"
#. type: TH
-#: ../src/xz/xz.1:9
+#: ../src/xz/xz.1
#, no-wrap
msgid "XZ"
msgstr "XZ"
#. type: TH
-#: ../src/xz/xz.1:9
-#, no-wrap
-msgid "2023-07-17"
-msgstr "17. Juli 2023"
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
+#, fuzzy, no-wrap
+#| msgid "2024-02-25"
+msgid "2024-04-08"
+msgstr "25. Februar 2024"
#. type: TH
-#: ../src/xz/xz.1:9 ../src/xzdec/xzdec.1:7 ../src/lzmainfo/lzmainfo.1:7
-#: ../src/scripts/xzdiff.1:9 ../src/scripts/xzgrep.1:9
-#: ../src/scripts/xzless.1:10 ../src/scripts/xzmore.1:7
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "Tukaani"
msgstr "Tukaani"
#. type: TH
-#: ../src/xz/xz.1:9 ../src/xzdec/xzdec.1:7 ../src/lzmainfo/lzmainfo.1:7
-#: ../src/scripts/xzdiff.1:9 ../src/scripts/xzgrep.1:9
-#: ../src/scripts/xzless.1:10 ../src/scripts/xzmore.1:7
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "XZ Utils"
msgstr "XZ-Dienstprogramme"
#. type: SH
-#: ../src/xz/xz.1:11 ../src/xzdec/xzdec.1:8 ../src/lzmainfo/lzmainfo.1:8
-#: ../src/scripts/xzdiff.1:10 ../src/scripts/xzgrep.1:10
-#: ../src/scripts/xzless.1:11 ../src/scripts/xzmore.1:8
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "NAME"
msgstr "BEZEICHNUNG"
#. type: Plain text
-#: ../src/xz/xz.1:13
-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"
+#: ../src/xz/xz.1
+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:14 ../src/xzdec/xzdec.1:10 ../src/lzmainfo/lzmainfo.1:10
-#: ../src/scripts/xzdiff.1:12 ../src/scripts/xzgrep.1:12
-#: ../src/scripts/xzless.1:13 ../src/scripts/xzmore.1:10
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "SYNOPSIS"
msgstr "ÜBERSICHT"
#. type: Plain text
-#: ../src/xz/xz.1:18
+#: ../src/xz/xz.1
msgid "B<xz> [I<option...>] [I<file...>]"
msgstr "B<xz> [I<Option…>] [I<Datei…>]"
#. type: SH
-#: ../src/xz/xz.1:19
+#: ../src/xz/xz.1
#, no-wrap
msgid "COMMAND ALIASES"
msgstr "BEFEHLSALIASE"
#. type: Plain text
-#: ../src/xz/xz.1:23
+#: ../src/xz/xz.1
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:27
+#: ../src/xz/xz.1
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:31
+#: ../src/xz/xz.1
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:35
+#: ../src/xz/xz.1
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:39
+#: ../src/xz/xz.1
msgid "B<lzcat> is equivalent to B<xz --format=lzma --decompress --stdout>."
-msgstr ""
-"B<lzcat> ist gleichbedeutend mit 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:51
-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."
+#: ../src/xz/xz.1
+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:52 ../src/xzdec/xzdec.1:18 ../src/lzmainfo/lzmainfo.1:15
-#: ../src/scripts/xzdiff.1:24 ../src/scripts/xzgrep.1:33
-#: ../src/scripts/xzless.1:19 ../src/scripts/xzmore.1:16
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "DESCRIPTION"
msgstr "BESCHREIBUNG"
#. type: Plain text
-#: ../src/xz/xz.1:71
-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. In "
-"addition, decompression of the B<.lz> format used by B<lzip> is supported."
-msgstr ""
-"B<xz> ist ein Allzweckwerkzeug zur Datenkompression, dessen "
-"Befehlszeilensyntax denen von B<gzip>(1) und B<bzip2>(1) ähnelt. Das native "
-"Dateiformat ist das B<.xz>-Format, aber das veraltete, von den LZMA-"
-"Dienstprogrammen verwendete Format sowie komprimierte Rohdatenströme ohne "
-"Containerformat-Header werden ebenfalls unterstützt. Außerdem wird die "
-"Dekompression des von B<lzip> verwendeten B<.lz>-Formats unterstützt."
+#: ../src/xz/xz.1
+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. In addition, decompression of the B<.lz> format used by B<lzip> is supported."
+msgstr "B<xz> ist ein Allzweckwerkzeug zur Datenkompression, dessen Befehlszeilensyntax denen von B<gzip>(1) und B<bzip2>(1) ähnelt. Das native Dateiformat ist das B<.xz>-Format, aber das veraltete, von den LZMA-Dienstprogrammen verwendete Format sowie komprimierte Rohdatenströme ohne Containerformat-Header werden ebenfalls unterstützt. Außerdem wird die Dekompression des von B<lzip> verwendeten B<.lz>-Formats unterstützt."
#. type: Plain text
-#: ../src/xz/xz.1:93
-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 dekomprimiert 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."
+#: ../src/xz/xz.1
+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 dekomprimiert 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:103
-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 dem Namen der Quell-I<Datei> abgeleitet wird "
-"(außer wenn B<--stdout> angegeben ist):"
+#: ../src/xz/xz.1
+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 dem Namen der Quell-I<Datei> abgeleitet wird (außer wenn B<--stdout> angegeben ist):"
#. type: IP
-#: ../src/xz/xz.1:103 ../src/xz/xz.1:109 ../src/xz/xz.1:134 ../src/xz/xz.1:139
-#: ../src/xz/xz.1:142 ../src/xz/xz.1:145 ../src/xz/xz.1:161 ../src/xz/xz.1:422
-#: ../src/xz/xz.1:425 ../src/xz/xz.1:432 ../src/xz/xz.1:677 ../src/xz/xz.1:679
-#: ../src/xz/xz.1:778 ../src/xz/xz.1:789 ../src/xz/xz.1:798 ../src/xz/xz.1:806
-#: ../src/xz/xz.1:1034 ../src/xz/xz.1:1043 ../src/xz/xz.1:1055
-#: ../src/xz/xz.1:1729 ../src/xz/xz.1:1735 ../src/xz/xz.1:1853
-#: ../src/xz/xz.1:1857 ../src/xz/xz.1:1860 ../src/xz/xz.1:1863
-#: ../src/xz/xz.1:1867 ../src/xz/xz.1:1874 ../src/xz/xz.1:1876
+#: ../src/xz/xz.1
#, no-wrap
msgid "\\(bu"
msgstr "\\(bu"
#. type: Plain text
-#: ../src/xz/xz.1:109
-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."
+#: ../src/xz/xz.1
+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:124
-msgid ""
-"When decompressing, the B<.xz>, B<.lzma>, or B<.lz> suffix is removed from "
-"the filename to get the target filename. B<xz> also recognizes the suffixes "
-"B<.txz> and B<.tlz>, and replaces them with the B<.tar> suffix."
-msgstr ""
-"Bei der Dekompression wird das Suffix B<.xz>, B<.lzma> oder B<.lz> vom "
-"Dateinamen entfernt und so der Name der Zieldatei gebildet. Außerdem erkennt "
-"B<xz> die Suffixe B<.txz> und B<.tlz> und ersetzt diese durch B<.tar>."
+#: ../src/xz/xz.1
+msgid "When decompressing, the B<.xz>, B<.lzma>, or B<.lz> suffix is removed from the filename to get the target filename. B<xz> also recognizes the suffixes B<.txz> and B<.tlz>, and replaces them with the B<.tar> suffix."
+msgstr "Bei der Dekompression wird das Suffix B<.xz>, B<.lzma> oder B<.lz> vom Dateinamen entfernt und so der Name der Zieldatei gebildet. Außerdem erkennt B<xz> die Suffixe B<.txz> und B<.tlz> und ersetzt diese durch B<.tar>."
#. type: Plain text
-#: ../src/xz/xz.1:128
-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."
+#: ../src/xz/xz.1
+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:134
-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:"
+#: ../src/xz/xz.1
+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:139
-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 diese daher nicht zu den regulären Dateien gezählt."
+#: ../src/xz/xz.1
+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 diese daher nicht zu den regulären Dateien gezählt."
#. type: Plain text
-#: ../src/xz/xz.1:142
+#: ../src/xz/xz.1
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:145
+#: ../src/xz/xz.1
msgid "I<File> has setuid, setgid, or sticky bit set."
-msgstr ""
-"Für die I<Datei> ist das »setuid«-, »setgid«- oder »sticky«-Bit gesetzt."
+msgstr "Für die I<Datei> ist das »setuid«-, »setgid«- oder »sticky«-Bit gesetzt."
#. type: Plain text
-#: ../src/xz/xz.1:161
-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)."
+#: ../src/xz/xz.1
+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:171
-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>, B<."
-"tlz>, or B<.lz>)."
-msgstr ""
-"Der Aktionsmodus wird auf Dekompression gesetzt und die I<Datei> hat nicht "
-"das Suffix eines der unterstützten Zieldateiformate (B<.xz>, B<.txz>, B<."
-"lzma>, B<.tlz> oder B<.lz>)."
+#: ../src/xz/xz.1
+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>, B<.tlz>, or B<.lz>)."
+msgstr "Der Aktionsmodus wird auf Dekompression gesetzt und die I<Datei> hat nicht das Suffix eines der unterstützten Zieldateiformate (B<.xz>, B<.txz>, B<.lzma>, B<.tlz> oder B<.lz>)."
#. type: Plain text
-#: ../src/xz/xz.1:186
-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."
+#: ../src/xz/xz.1
+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:196
-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 or if an error occurs."
-msgstr ""
-"Sobald die Zieldatei erfolgreich geschlossen wurde, wird die Ursprungs-"
-"I<Datei> entfernt. Dies wird durch die Option B<--keep> verhindert. Die "
-"Ursprungs-I<Datei> wird niemals entfernt, wenn die Ausgabe in die "
-"Standardausgabe geschrieben wird oder falls ein Fehler auftritt."
+#: ../src/xz/xz.1
+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 or if an error occurs."
+msgstr "Sobald die Zieldatei erfolgreich geschlossen wurde, wird die Ursprungs-I<Datei> entfernt. Dies wird durch die Option B<--keep> verhindert. Die Ursprungs-I<Datei> wird niemals entfernt, wenn die Ausgabe in die Standardausgabe geschrieben wird oder falls ein Fehler auftritt."
#. type: Plain text
-#: ../src/xz/xz.1:208
-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."
+#: ../src/xz/xz.1
+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:209
+#: ../src/xz/xz.1
#, no-wrap
msgid "Memory usage"
msgstr "Speicherbedarf"
#. type: Plain text
-#: ../src/xz/xz.1:225
-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 mehreren Gigabyte. "
-"Die Einstellungen bei der Kompression einer Datei bestimmen dabei den "
-"Speicherbedarf bei der Dekompression. Die Dekompression benötigt "
-"üblicherweise zwischen 5\\ % und 20\\ % des Speichers, der bei der "
-"Kompression 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."
+#: ../src/xz/xz.1
+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 mehreren Gigabyte. Die Einstellungen bei der Kompression einer Datei bestimmen dabei den Speicherbedarf bei der Dekompression. Die Dekompression benötigt üblicherweise zwischen 5\\ % und 20\\ % des Speichers, der bei der Kompression 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:237
-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 (for example, using "
-"B<ulimit>(1) to limit virtual memory tends to cripple B<mmap>(2))."
-msgstr ""
-"Insbesondere für Benutzer älterer Systeme wird eventuell ein sehr großer "
-"Speicherbedarf ärgerlich sein. Um unangenehme Überraschungen zu vermeiden, "
-"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)."
+#: ../src/xz/xz.1
+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 (for example, using B<ulimit>(1) to limit virtual memory tends to cripple B<mmap>(2))."
+msgstr "Insbesondere für Benutzer älterer Systeme wird eventuell ein sehr großer Speicherbedarf ärgerlich sein. Um unangenehme Überraschungen zu vermeiden, 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:259
-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>, for example, "
-"B<XZ_DEFAULTS=--memlimit=150MiB>. It is possible to set the limits "
-"separately for compression and decompression by using B<--memlimit-"
-"compress=>I<limit> and B<--memlimit-decompress=>I<limit>. Using these two "
-"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:278
-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, for example, if the limit is only slightly less "
-"than the amount required for B<xz -9>, the settings will be scaled down only "
-"a little, not all the way down to B<xz -8>."
-msgstr ""
-"Wenn die angegebene Speicherbegrenzung bei der Dekompression überschritten "
-"wird, schlägt der Vorgang fehl und B<xz> zeigt eine Fehlermeldung an. Wird "
-"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>"
+#: ../src/xz/xz.1
+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>, for example, B<XZ_DEFAULTS=--memlimit=150MiB>. It is possible to set the limits separately for compression and decompression by using B<--memlimit-compress=>I<limit> and B<--memlimit-decompress=>I<limit>. Using these two 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
+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, for example, if the limit is only slightly less than the amount required for B<xz -9>, the settings will be scaled down only a little, not all the way down to B<xz -8>."
+msgstr "Wenn die angegebene Speicherbegrenzung bei der Dekompression überschritten wird, schlägt der Vorgang fehl und B<xz> zeigt eine Fehlermeldung an. Wird 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:279
+#: ../src/xz/xz.1
#, no-wrap
msgid "Concatenation and padding with .xz files"
msgstr "Verkettung und Auffüllung von .xz-Dateien"
#. type: Plain text
-#: ../src/xz/xz.1:287
-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."
+#: ../src/xz/xz.1
+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:296
-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, for example, "
-"if the B<.xz> file is stored on a medium that measures file sizes in 512-"
-"byte blocks."
-msgstr ""
-"Es ist weiterhin möglich, eine Auffüllung zwischen den verketteten Teilen "
-"oder nach dem letzten Teil einzufügen. Die Auffüllung muss aus Null-Bytes "
-"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."
+#: ../src/xz/xz.1
+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, for example, if the B<.xz> file is stored on a medium that measures file sizes in 512-byte blocks."
+msgstr "Es ist weiterhin möglich, eine Auffüllung zwischen den verketteten Teilen oder nach dem letzten Teil einzufügen. Die Auffüllung muss aus Null-Bytes 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:300
-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."
+#: ../src/xz/xz.1
+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:301 ../src/xzdec/xzdec.1:61
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "OPTIONS"
msgstr "OPTIONEN"
#. type: SS
-#: ../src/xz/xz.1:303
+#: ../src/xz/xz.1
#, no-wrap
msgid "Integer suffixes and special values"
msgstr "Ganzzahlige Suffixe und spezielle Werte"
#. type: Plain text
-#: ../src/xz/xz.1:307
-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."
+#: ../src/xz/xz.1
+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:307
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<KiB>"
msgstr "B<KiB>"
#. type: Plain text
-#: ../src/xz/xz.1:318
-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."
+#: ../src/xz/xz.1
+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:318
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<MiB>"
msgstr "B<MiB>"
#. type: Plain text
-#: ../src/xz/xz.1:328
-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."
+#: ../src/xz/xz.1
+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:328
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<GiB>"
msgstr "B<GiB>"
#. type: Plain text
-#: ../src/xz/xz.1:338
-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."
+#: ../src/xz/xz.1
+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:343
-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."
+#: ../src/xz/xz.1
+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:344
+#: ../src/xz/xz.1
#, no-wrap
msgid "Operation mode"
msgstr "Aktionsmodus"
#. type: Plain text
-#: ../src/xz/xz.1:347
-msgid ""
-"If multiple operation mode options are given, the last one takes effect."
-msgstr ""
-"Falls mehrere Aktionsmodi angegeben sind, wird der zuletzt angegebene "
-"verwendet."
+#: ../src/xz/xz.1
+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:347
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-z>, B<--compress>"
msgstr "B<-z>, B<--compress>"
#. type: Plain text
-#: ../src/xz/xz.1:356
-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>)."
+#: ../src/xz/xz.1
+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:356 ../src/xzdec/xzdec.1:62
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-d>, B<--decompress>, B<--uncompress>"
msgstr "B<-d>, B<--decompress>, B<--uncompress>"
#. type: Plain text
-#: ../src/xz/xz.1:359
+#: ../src/xz/xz.1
msgid "Decompress."
msgstr "dekomprimpiert."
#. type: TP
-#: ../src/xz/xz.1:359
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-t>, B<--test>"
msgstr "B<-t>, B<--test>"
#. type: Plain text
-#: ../src/xz/xz.1:368
-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."
+#: ../src/xz/xz.1
+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:368
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-l>, B<--list>"
msgstr "B<-l>, B<--list>"
#. type: Plain text
-#: ../src/xz/xz.1:377
-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."
+#: ../src/xz/xz.1
+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:392
-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, for "
-"example, B<less\\ -S> may be convenient if the terminal isn't wide enough."
-msgstr ""
-"Die Liste zeigt in der Standardeinstellung grundlegende Informationen zu den "
-"I<Dateien> an, zeilenweise pro Datei. Detailliertere Informationen erhalten "
-"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 übersteigt 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:399
-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."
+#: ../src/xz/xz.1
+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, for example, B<less\\ -S> may be convenient if the terminal isn't wide enough."
+msgstr "Die Liste zeigt in der Standardeinstellung grundlegende Informationen zu den I<Dateien> an, zeilenweise pro Datei. Detailliertere Informationen erhalten 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 übersteigt 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
+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:400
+#: ../src/xz/xz.1
#, no-wrap
msgid "Operation modifiers"
msgstr "Aktionsattribute"
#. type: TP
-#: ../src/xz/xz.1:401 ../src/xzdec/xzdec.1:69
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-k>, B<--keep>"
msgstr "B<-k>, B<--keep>"
#. type: Plain text
-#: ../src/xz/xz.1:404
+#: ../src/xz/xz.1
msgid "Don't delete the input files."
msgstr "verhindert das Löschen der Eingabedateien."
#. type: Plain text
-#: ../src/xz/xz.1:418
-msgid ""
-"Since B<xz> 5.2.6, this option also makes B<xz> compress or decompress even "
-"if the input is a symbolic link to a regular file, has more than one hard "
-"link, or has the setuid, setgid, or sticky bit set. The setuid, setgid, and "
-"sticky bits are not copied to the target file. In earlier versions this was "
-"only done with B<--force>."
-msgstr ""
-"Seit der B<xz>-Version 5.2.6 wird die Kompression oder Dekompression auch "
-"dann ausgeführt, wenn die Eingabe ein symbolischer Link zu einer regulären "
-"Datei ist, mehr als einen harten Link hat oder das »setuid«-, »setgid«- oder "
-"»sticky«-Bit gesetzt ist. Die genannten Bits werden nicht in die Zieldatei "
-"kopiert. In früheren Versionen geschah dies nur mit B<--force>."
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.2.6, this option also makes B<xz> compress or decompress even if the input is a symbolic link to a regular file, has more than one hard link, or has the setuid, setgid, or sticky bit set. The setuid, setgid, and sticky bits are not copied to the target file. In earlier versions this was only done with B<--force>."
+msgstr "Seit der B<xz>-Version 5.2.6 wird die Kompression oder Dekompression auch dann ausgeführt, wenn die Eingabe ein symbolischer Link zu einer regulären Datei ist, mehr als einen harten Link hat oder das »setuid«-, »setgid«- oder »sticky«-Bit gesetzt ist. Die genannten Bits werden nicht in die Zieldatei kopiert. In früheren Versionen geschah dies nur mit B<--force>."
#. type: TP
-#: ../src/xz/xz.1:418
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-f>, B<--force>"
msgstr "B<-f>, B<--force>"
#. type: Plain text
-#: ../src/xz/xz.1:421
+#: ../src/xz/xz.1
msgid "This option has several effects:"
msgstr "Diese Option hat verschiedene Auswirkungen:"
#. type: Plain text
-#: ../src/xz/xz.1:425
-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."
+#: ../src/xz/xz.1
+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:432
-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."
+#: ../src/xz/xz.1
+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:457
-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."
+#: ../src/xz/xz.1
+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:458 ../src/xzdec/xzdec.1:76
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, 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:464
-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>."
+#: ../src/xz/xz.1
+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:464
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--single-stream>"
msgstr "B<--single-stream>"
#. type: Plain text
-#: ../src/xz/xz.1:473
-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."
+#: ../src/xz/xz.1
+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:482
-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."
+#: ../src/xz/xz.1
+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:487
-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."
+#: ../src/xz/xz.1
+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:487
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--no-sparse>"
msgstr "B<--no-sparse>"
#. type: Plain text
-#: ../src/xz/xz.1:499
-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."
+#: ../src/xz/xz.1
+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:499
+#: ../src/xz/xz.1
#, 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:511
-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."
+#: ../src/xz/xz.1
+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:525
-msgid ""
-"When decompressing, recognize files with the suffix I<.suf> in addition to "
-"files with the B<.xz>, B<.txz>, B<.lzma>, B<.tlz>, or B<.lz> suffix. If the "
-"source file has the suffix I<.suf>, the suffix is removed to get the target "
-"filename."
-msgstr ""
-"berücksichtigt bei der Dekompression zusätzlich zu Dateien mit den Suffixen "
-"B<.xz>, B<.txz>, B<.lzma>, B<.tlz> oder B<.lz> auch jene mit dem Suffix I<."
-"suf>. Falls die Quelldatei das Suffix I<.suf> hat, wird dieses entfernt und "
-"so der Name der Zieldatei abgeleitet."
+#: ../src/xz/xz.1
+msgid "When decompressing, recognize files with the suffix I<.suf> in addition to files with the B<.xz>, B<.txz>, B<.lzma>, B<.tlz>, or B<.lz> suffix. If the source file has the suffix I<.suf>, the suffix is removed to get the target filename."
+msgstr "berücksichtigt bei der Dekompression zusätzlich zu Dateien mit den Suffixen B<.xz>, B<.txz>, B<.lzma>, B<.tlz> oder B<.lz> auch jene mit dem Suffix I<.suf>. Falls die Quelldatei das Suffix I<.suf> hat, wird dieses entfernt und so der Name der Zieldatei abgeleitet."
#. type: Plain text
-#: ../src/xz/xz.1:531
-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."
+#: ../src/xz/xz.1
+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:531
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--files>[B<=>I<file>]"
msgstr "B<--files>[B<=>I<Datei>]"
#. type: Plain text
-#: ../src/xz/xz.1:545
-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."
+#: ../src/xz/xz.1
+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:545
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--files0>[B<=>I<file>]"
msgstr "B<--files0>[B<=>I<Datei>]"
#. type: Plain text
-#: ../src/xz/xz.1:549
-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."
+#: ../src/xz/xz.1
+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:550
+#: ../src/xz/xz.1
#, no-wrap
msgid "Basic file format and compression options"
msgstr "Grundlegende Dateiformat- und Kompressionsoptionen"
#. type: TP
-#: ../src/xz/xz.1:551
+#: ../src/xz/xz.1
#, 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:556
+#: ../src/xz/xz.1
msgid "Specify the file I<format> to compress or decompress:"
-msgstr ""
-"gibt das I<Format> der zu komprimierenden oder dekomprimierenden Datei an:"
+msgstr "gibt das I<Format> der zu komprimierenden oder dekomprimierenden Datei an:"
#. type: TP
-#: ../src/xz/xz.1:557
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<auto>"
msgstr "B<auto>"
#. type: Plain text
-#: ../src/xz/xz.1:569
-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."
+#: ../src/xz/xz.1
+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:569
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<xz>"
msgstr "B<xz>"
#. type: Plain text
-#: ../src/xz/xz.1:576
-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."
+#: ../src/xz/xz.1
+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:576
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lzma>, B<alone>"
msgstr "B<lzma>, B<alone>"
#. type: Plain text
-#: ../src/xz/xz.1:586
-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."
+#: ../src/xz/xz.1
+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:586
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lzip>"
msgstr "B<lzip>"
#. type: Plain text
-#: ../src/xz/xz.1:592
-msgid ""
-"Accept only B<.lz> files when decompressing. Compression is not supported."
-msgstr ""
-"Akzeptiert nur B<.lz>-Dateien bei der Dekompression. Kompression wird nicht "
-"unterstützt."
+#: ../src/xz/xz.1
+msgid "Accept only B<.lz> files when decompressing. Compression is not supported."
+msgstr "Akzeptiert nur B<.lz>-Dateien bei der Dekompression. Kompression wird nicht unterstützt."
#. type: Plain text
-#: ../src/xz/xz.1:605
-msgid ""
-"The B<.lz> format version 0 and the unextended version 1 are supported. "
-"Version 0 files were produced by B<lzip> 1.3 and older. Such files aren't "
-"common but may be found from file archives as a few source packages were "
-"released in this format. People might have old personal files in this "
-"format too. Decompression support for the format version 0 was removed in "
-"B<lzip> 1.18."
-msgstr ""
-"Das B<.lz>-Format wird in Version 0 und der unerweiterten Version 1 "
-"unterstützt. Dateien der Version 0 wurden von B<lzip> 1.3 und älter "
-"erstellt. Solche Dateien sind nicht sehr weit verbreitet, können aber in "
-"Dateiarchiven gefunden werden, da einige Quellpakete in diesem Format "
-"veröffentlicht wurden. Es ist auch möglich, dass Benutzer alte persönliche "
-"Dateien in diesem Format haben. Die Dekompressionsunterstützung für das "
-"Format der Version 0 wurde mit der Version 1.18 aus B<lzip> entfernt."
+#: ../src/xz/xz.1
+msgid "The B<.lz> format version 0 and the unextended version 1 are supported. Version 0 files were produced by B<lzip> 1.3 and older. Such files aren't common but may be found from file archives as a few source packages were released in this format. People might have old personal files in this format too. Decompression support for the format version 0 was removed in B<lzip> 1.18."
+msgstr "Das B<.lz>-Format wird in Version 0 und der unerweiterten Version 1 unterstützt. Dateien der Version 0 wurden von B<lzip> 1.3 und älter erstellt. Solche Dateien sind nicht sehr weit verbreitet, können aber in Dateiarchiven gefunden werden, da einige Quellpakete in diesem Format veröffentlicht wurden. Es ist auch möglich, dass Benutzer alte persönliche Dateien in diesem Format haben. Die Dekompressionsunterstützung für das Format der Version 0 wurde mit der Version 1.18 aus B<lzip> entfernt."
#. type: Plain text
-#: ../src/xz/xz.1:614
-msgid ""
-"B<lzip> 1.4 and later create files in the format version 1. The sync flush "
-"marker extension to the format version 1 was added in B<lzip> 1.6. This "
-"extension is rarely used and isn't supported by B<xz> (diagnosed as corrupt "
-"input)."
-msgstr ""
-"B<lzip>-Versionen ab 1.4 erstellen Dateien im Format der Version 0. Die "
-"Erweiterung »Sync Flush Marker« zur Formatversion 1 wurde in B<lzip> 1.6 "
-"hinzugefügt. Diese Erweiterung wird sehr selten verwendet und wird von B<xz> "
-"nicht unterstützt (die Eingabe wird als beschädigt erkannt)."
+#: ../src/xz/xz.1
+msgid "B<lzip> 1.4 and later create files in the format version 1. The sync flush marker extension to the format version 1 was added in B<lzip> 1.6. This extension is rarely used and isn't supported by B<xz> (diagnosed as corrupt input)."
+msgstr "B<lzip>-Versionen ab 1.4 erstellen Dateien im Format der Version 0. Die Erweiterung »Sync Flush Marker« zur Formatversion 1 wurde in B<lzip> 1.6 hinzugefügt. Diese Erweiterung wird sehr selten verwendet und wird von B<xz> nicht unterstützt (die Eingabe wird als beschädigt erkannt)."
#. type: TP
-#: ../src/xz/xz.1:614
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<raw>"
msgstr "B<raw>"
#. type: Plain text
-#: ../src/xz/xz.1:622
-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."
+#: ../src/xz/xz.1
+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:623
+#: ../src/xz/xz.1
#, 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:638
-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."
+#: ../src/xz/xz.1
+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:642
+#: ../src/xz/xz.1
msgid "Supported I<check> types:"
msgstr "Folgende Typen von I<Prüfungen> werden unterstützt:"
#. type: TP
-#: ../src/xz/xz.1:643
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<none>"
msgstr "B<none>"
#. type: Plain text
-#: ../src/xz/xz.1:649
-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."
+#: ../src/xz/xz.1
+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:649
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<crc32>"
msgstr "B<crc32>"
#. type: Plain text
-#: ../src/xz/xz.1:652
+#: ../src/xz/xz.1
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)."
+msgstr "berechnet die CRC32-Prüfsumme anhand des Polynoms aus IEEE-802.3 (Ethernet)."
#. type: TP
-#: ../src/xz/xz.1:652
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<crc64>"
msgstr "B<crc64>"
#. type: Plain text
-#: ../src/xz/xz.1:657
-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."
+#: ../src/xz/xz.1
+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:657
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<sha256>"
msgstr "B<sha256>"
#. type: Plain text
-#: ../src/xz/xz.1:661
+#: ../src/xz/xz.1
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."
+msgstr "berechnet die SHA-256-Prüfsumme. Dies ist etwas langsamer als CRC32 und CRC64."
#. type: Plain text
-#: ../src/xz/xz.1:667
-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."
+#: ../src/xz/xz.1
+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:667
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--ignore-check>"
msgstr "B<--ignore-check>"
#. type: Plain text
-#: ../src/xz/xz.1:673
-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."
+#: ../src/xz/xz.1
+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:676
-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:"
+#: ../src/xz/xz.1
+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:679
+#: ../src/xz/xz.1
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:685
-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."
+#: ../src/xz/xz.1
+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:686
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-0> ... B<-9>"
msgstr "B<-0> … B<-9>"
#. type: Plain text
-#: ../src/xz/xz.1:695
-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."
+#: ../src/xz/xz.1
+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:710
-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."
+#: ../src/xz/xz.1
+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:711
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-0> ... B<-3>"
msgstr "B<-0> … B<-3>"
#. type: Plain text
-#: ../src/xz/xz.1:723
-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."
+#: ../src/xz/xz.1
+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:723
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-4> ... B<-6>"
msgstr "B<-4> … B<-6>"
#. type: Plain text
-#: ../src/xz/xz.1:737
-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 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 für die Verteilung von "
-"Dateien ist, die selbst noch auf Systemen mit nur 16\\ MiB Arbeitsspeicher "
-"dekomprimiert werden müssen (B<-5e> oder B<-6e> sind ebenfalls eine "
-"Überlegung wert. Siehe B<--extreme>)."
+#: ../src/xz/xz.1
+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 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 für die Verteilung von Dateien ist, die selbst noch auf Systemen mit nur 16\\ MiB Arbeitsspeicher dekomprimiert werden müssen (B<-5e> oder B<-6e> sind ebenfalls eine Überlegung wert. Siehe B<--extreme>)."
#. type: TP
-#: ../src/xz/xz.1:737
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-7 ... -9>"
msgstr "B<-7 … -9>"
#. type: Plain text
-#: ../src/xz/xz.1:744
-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."
+#: ../src/xz/xz.1
+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:752
-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."
+#: ../src/xz/xz.1
+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:754
+#: ../src/xz/xz.1
msgid "The following table summarises the features of the presets:"
-msgstr ""
-"Die folgende Tabelle fasst die Eigenschaften der Voreinstellungen zusammen:"
+msgstr "Die folgende Tabelle fasst die Eigenschaften der Voreinstellungen zusammen:"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842 ../src/xz/xz.1:2839
+#: ../src/xz/xz.1
#, no-wrap
msgid "Preset"
msgstr "Voreinst."
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842
+#: ../src/xz/xz.1
#, no-wrap
msgid "DictSize"
msgstr "Wörtb.Gr"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842 ../src/xz/xz.1:2839
+#: ../src/xz/xz.1
#, no-wrap
msgid "CompCPU"
msgstr "KomprCPU"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842
+#: ../src/xz/xz.1
#, no-wrap
msgid "CompMem"
msgstr "KompSpeich"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842
+#: ../src/xz/xz.1
#, no-wrap
msgid "DecMem"
msgstr "DekompSpeich"
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:2450 ../src/xz/xz.1:2475
-#: ../src/xz/xz.1:2840
+#: ../src/xz/xz.1
#, no-wrap
msgid "-0"
msgstr "-0"
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:843 ../src/xz/xz.1:2450
+#: ../src/xz/xz.1
#, no-wrap
msgid "256 KiB"
msgstr "256 KiB"
#. type: TP
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:2840 ../src/scripts/xzgrep.1:82
+#: ../src/xz/xz.1 ../src/scripts/xzgrep.1
#, no-wrap
msgid "0"
msgstr "0"
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:764 ../src/xz/xz.1:845 ../src/xz/xz.1:2475
+#: ../src/xz/xz.1
#, no-wrap
msgid "3 MiB"
msgstr "3 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:763 ../src/xz/xz.1:843 ../src/xz/xz.1:844
-#: ../src/xz/xz.1:2451 ../src/xz/xz.1:2452 ../src/xz/xz.1:2454
+#: ../src/xz/xz.1
#, no-wrap
msgid "1 MiB"
msgstr "1 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:2451 ../src/xz/xz.1:2476
-#: ../src/xz/xz.1:2841
+#: ../src/xz/xz.1
#, no-wrap
msgid "-1"
msgstr "-1"
#. type: TP
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:1758 ../src/xz/xz.1:2841
-#: ../src/scripts/xzgrep.1:86
+#: ../src/xz/xz.1 ../src/scripts/xzgrep.1
#, no-wrap
msgid "1"
msgstr "1"
#. type: tbl table
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:767 ../src/xz/xz.1:768 ../src/xz/xz.1:848
-#: ../src/xz/xz.1:849 ../src/xz/xz.1:2476
+#: ../src/xz/xz.1
#, no-wrap
msgid "9 MiB"
msgstr "9 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:764 ../src/xz/xz.1:844 ../src/xz/xz.1:845
-#: ../src/xz/xz.1:2452 ../src/xz/xz.1:2455 ../src/xz/xz.1:2476
+#: ../src/xz/xz.1
#, no-wrap
msgid "2 MiB"
msgstr "2 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:764 ../src/xz/xz.1:2452 ../src/xz/xz.1:2477
-#: ../src/xz/xz.1:2842
+#: ../src/xz/xz.1
#, no-wrap
msgid "-2"
msgstr "-2"
#. type: tbl table
-#: ../src/xz/xz.1:764 ../src/xz/xz.1:1760 ../src/xz/xz.1:2842
+#: ../src/xz/xz.1
#, no-wrap
msgid "2"
msgstr "2"
#. type: tbl table
-#: ../src/xz/xz.1:764 ../src/xz/xz.1:769 ../src/xz/xz.1:850 ../src/xz/xz.1:2477
+#: ../src/xz/xz.1
#, no-wrap
msgid "17 MiB"
msgstr "17 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:2453 ../src/xz/xz.1:2478
-#: ../src/xz/xz.1:2843
+#: ../src/xz/xz.1
#, no-wrap
msgid "-3"
msgstr "-3"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:766 ../src/xz/xz.1:843 ../src/xz/xz.1:846
-#: ../src/xz/xz.1:847 ../src/xz/xz.1:2453 ../src/xz/xz.1:2454
-#: ../src/xz/xz.1:2456
+#: ../src/xz/xz.1
#, no-wrap
msgid "4 MiB"
msgstr "4 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:2843
+#: ../src/xz/xz.1
#, no-wrap
msgid "3"
msgstr "3"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:770 ../src/xz/xz.1:851 ../src/xz/xz.1:2458
-#: ../src/xz/xz.1:2459 ../src/xz/xz.1:2478
+#: ../src/xz/xz.1
#, no-wrap
msgid "32 MiB"
msgstr "32 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:766 ../src/xz/xz.1:846 ../src/xz/xz.1:847
+#: ../src/xz/xz.1
#, no-wrap
msgid "5 MiB"
msgstr "5 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:766 ../src/xz/xz.1:2454 ../src/xz/xz.1:2479
-#: ../src/xz/xz.1:2844
+#: ../src/xz/xz.1
#, no-wrap
msgid "-4"
msgstr "-4"
#. type: tbl table
-#: ../src/xz/xz.1:766 ../src/xz/xz.1:1759 ../src/xz/xz.1:1761
-#: ../src/xz/xz.1:1762 ../src/xz/xz.1:1764 ../src/xz/xz.1:2844
+#: ../src/xz/xz.1
#, no-wrap
msgid "4"
msgstr "4"
#. type: tbl table
-#: ../src/xz/xz.1:766 ../src/xz/xz.1:846 ../src/xz/xz.1:847 ../src/xz/xz.1:2479
+#: ../src/xz/xz.1
#, no-wrap
msgid "48 MiB"
msgstr "48 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:2455 ../src/xz/xz.1:2480
-#: ../src/xz/xz.1:2845
+#: ../src/xz/xz.1
#, no-wrap
msgid "-5"
msgstr "-5"
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:768 ../src/xz/xz.1:848 ../src/xz/xz.1:849
-#: ../src/xz/xz.1:2455 ../src/xz/xz.1:2456 ../src/xz/xz.1:2457
+#: ../src/xz/xz.1
#, no-wrap
msgid "8 MiB"
msgstr "8 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:2845
+#: ../src/xz/xz.1
#, no-wrap
msgid "5"
msgstr "5"
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:768 ../src/xz/xz.1:848 ../src/xz/xz.1:849
-#: ../src/xz/xz.1:2480 ../src/xz/xz.1:2481
+#: ../src/xz/xz.1
#, no-wrap
msgid "94 MiB"
msgstr "94 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:768 ../src/xz/xz.1:2456 ../src/xz/xz.1:2481
-#: ../src/xz/xz.1:2846
+#: ../src/xz/xz.1
#, no-wrap
msgid "-6"
msgstr "-6"
#. type: tbl table
-#: ../src/xz/xz.1:768 ../src/xz/xz.1:769 ../src/xz/xz.1:770 ../src/xz/xz.1:771
-#: ../src/xz/xz.1:2846
+#: ../src/xz/xz.1
#, no-wrap
msgid "6"
msgstr "6"
#. type: tbl table
-#: ../src/xz/xz.1:769 ../src/xz/xz.1:2457 ../src/xz/xz.1:2482
+#: ../src/xz/xz.1
#, no-wrap
msgid "-7"
msgstr "-7"
#. type: tbl table
-#: ../src/xz/xz.1:769 ../src/xz/xz.1:850 ../src/xz/xz.1:2457
-#: ../src/xz/xz.1:2458 ../src/xz/xz.1:2479
+#: ../src/xz/xz.1
#, no-wrap
msgid "16 MiB"
msgstr "16 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:769 ../src/xz/xz.1:850 ../src/xz/xz.1:2482
+#: ../src/xz/xz.1
#, no-wrap
msgid "186 MiB"
msgstr "186 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:770 ../src/xz/xz.1:2458 ../src/xz/xz.1:2483
+#: ../src/xz/xz.1
#, no-wrap
msgid "-8"
msgstr "-8"
#. type: tbl table
-#: ../src/xz/xz.1:770 ../src/xz/xz.1:851 ../src/xz/xz.1:2483
+#: ../src/xz/xz.1
#, no-wrap
msgid "370 MiB"
msgstr "370 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:770 ../src/xz/xz.1:851
+#: ../src/xz/xz.1
#, no-wrap
msgid "33 MiB"
msgstr "33 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:2459 ../src/xz/xz.1:2484
+#: ../src/xz/xz.1
#, no-wrap
msgid "-9"
msgstr "-9"
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:852 ../src/xz/xz.1:2459
+#: ../src/xz/xz.1
#, no-wrap
msgid "64 MiB"
msgstr "64 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:852 ../src/xz/xz.1:2484
+#: ../src/xz/xz.1
#, no-wrap
msgid "674 MiB"
msgstr "674 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:852
+#: ../src/xz/xz.1
#, no-wrap
msgid "65 MiB"
msgstr "65 MiB"
#. type: Plain text
-#: ../src/xz/xz.1:777
+#: ../src/xz/xz.1
msgid "Column descriptions:"
msgstr "Spaltenbeschreibungen:"
#. type: Plain text
-#: ../src/xz/xz.1:789
-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 ""
-"Wörtb.Größe ist die Größe des LZMA2-Wörterbuchs. Es ist "
-"Speicherverschwendung, ein Wörterbuch zu verwenden, das größer als die "
-"unkomprimierte Datei ist. Daher ist es besser, die Voreinstellungen B<-7> … "
-"B<-9> zu vermeiden, falls es keinen wirklichen Bedarf dafür gibt. Mit B<-6> "
-"und weniger wird üblicherweise so wenig Speicher verschwendet, dass dies "
-"nicht ins Gewicht fällt."
+#: ../src/xz/xz.1
+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 "Wörtb.Größe ist die Größe des LZMA2-Wörterbuchs. Es ist Speicherverschwendung, ein Wörterbuch zu verwenden, das größer als die unkomprimierte Datei ist. Daher ist es besser, die Voreinstellungen B<-7> … B<-9> zu vermeiden, falls es keinen wirklichen Bedarf dafür gibt. Mit B<-6> und weniger wird üblicherweise so wenig Speicher verschwendet, dass dies nicht ins Gewicht fällt."
#. type: Plain text
-#: ../src/xz/xz.1:798
-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 ""
-"KomprCPU ist eine vereinfachte Repräsentation der LZMA2-Einstellungen, "
-"welche die Kompressionsgeschwindigkeit beeinflussen. Die Wörterbuchgröße "
-"wirkt sich ebenfalls auf die Geschwindigkeit aus. Während KompCPU für die "
-"Stufen B<-6> bis B<-9> gleich ist, tendieren höhere Stufen dazu, etwas "
-"langsamer zu sein. Um eine noch langsamere, aber möglicherweise bessere "
-"Kompression zu erhalten, siehe B<--extreme>."
+#: ../src/xz/xz.1
+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 "KomprCPU ist eine vereinfachte Repräsentation der LZMA2-Einstellungen, welche die Kompressionsgeschwindigkeit beeinflussen. Die Wörterbuchgröße wirkt sich ebenfalls auf die Geschwindigkeit aus. Während KompCPU für die Stufen B<-6> bis B<-9> gleich ist, tendieren höhere Stufen dazu, etwas langsamer zu sein. Um eine noch langsamere, aber möglicherweise bessere Kompression zu erhalten, siehe B<--extreme>."
#. type: Plain text
-#: ../src/xz/xz.1:806
-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 ""
-"KompSpeich enthält den Speicherbedarf des Kompressors im Einzel-Thread-"
-"Modus. Dieser kann zwischen den B<xz>-Versionen leicht variieren. Der "
-"Speicherbedarf einiger der zukünftigen Multithread-Modi kann dramatisch "
-"höher sein als im Einzel-Thread-Modus."
+#: ../src/xz/xz.1
+msgid "CompMem contains the compressor memory requirements in the single-threaded mode. It may vary slightly between B<xz> versions."
+msgstr "KompSpeich enthält den Speicherbedarf des Kompressors im Einzel-Thread-Modus. Dieser kann zwischen den B<xz>-Versionen leicht variieren."
#. type: Plain text
-#: ../src/xz/xz.1:813
-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 ""
-"DekompSpeich enthält den Speicherbedarf für die Dekompression. Das bedeutet, "
-"dass die Kompressionseinstellungen den Speicherbedarf bei der Dekompression "
-"bestimmen. Der exakte Speicherbedarf bei der Dekompression ist geringfügig "
-"größer als die Größe des LZMA2-Wörterbuchs, aber die Werte in der Tabelle "
-"wurden auf ganze MiB aufgerundet."
+#: ../src/xz/xz.1
+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 "DekompSpeich enthält den Speicherbedarf für die Dekompression. Das bedeutet, dass die Kompressionseinstellungen den Speicherbedarf bei der Dekompression bestimmen. Der exakte Speicherbedarf bei der Dekompression ist geringfügig größer als die Größe des LZMA2-Wörterbuchs, aber die Werte in der Tabelle wurden auf ganze MiB aufgerundet."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Memory requirements of the multi-threaded mode are significantly higher than that of the single-threaded mode. With the default value of B<--block-size>, each thread needs 3*3*DictSize plus CompMem or DecMem. For example, four threads with preset B<-6> needs 660\\(en670\\ MiB of memory."
+msgstr " Der Speicherbedarf einiger der zukünftigen Multithread-Modi kann dramatisch höher sein als im Einzel-Thread-Modus. Mit dem Standardwert von B<--block-size> benötigt jeder Thread 3*3*Wörtb.Gr plus KompSpeich oder DekompSpeich. Beispielsweise benötigen vier Threads mit der Voreinstellung B<-6> etwa 660 bis 670 MiB Speicher."
#. type: TP
-#: ../src/xz/xz.1:814
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-e>, B<--extreme>"
msgstr "B<-e>, B<--extreme>"
#. type: Plain text
-#: ../src/xz/xz.1:823
-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 den Voreinstellungsstufen B<-0> bis B<-3> geringfügig an."
+#: ../src/xz/xz.1
+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 den Voreinstellungsstufen B<-0> bis B<-3> geringfügig an."
#. type: Plain text
-#: ../src/xz/xz.1:835
-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."
+#: ../src/xz/xz.1
+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:843
+#: ../src/xz/xz.1
#, no-wrap
msgid "-0e"
msgstr "-0e"
#. type: tbl table
-#: ../src/xz/xz.1:843 ../src/xz/xz.1:844 ../src/xz/xz.1:845 ../src/xz/xz.1:847
-#: ../src/xz/xz.1:849 ../src/xz/xz.1:850 ../src/xz/xz.1:851 ../src/xz/xz.1:852
-#: ../src/xz/xz.1:2848
+#: ../src/xz/xz.1
#, no-wrap
msgid "8"
msgstr "8"
#. type: tbl table
-#: ../src/xz/xz.1:844
+#: ../src/xz/xz.1
#, no-wrap
msgid "-1e"
msgstr "-1e"
#. type: tbl table
-#: ../src/xz/xz.1:844
+#: ../src/xz/xz.1
#, no-wrap
msgid "13 MiB"
msgstr "13 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:845
+#: ../src/xz/xz.1
#, no-wrap
msgid "-2e"
msgstr "-2e"
#. type: tbl table
-#: ../src/xz/xz.1:845
+#: ../src/xz/xz.1
#, no-wrap
msgid "25 MiB"
msgstr "25 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:846
+#: ../src/xz/xz.1
#, no-wrap
msgid "-3e"
msgstr "-3e"
#. type: tbl table
-#: ../src/xz/xz.1:846 ../src/xz/xz.1:848 ../src/xz/xz.1:2847
+#: ../src/xz/xz.1
#, no-wrap
msgid "7"
msgstr "7"
#. type: tbl table
-#: ../src/xz/xz.1:847
+#: ../src/xz/xz.1
#, no-wrap
msgid "-4e"
msgstr "-4e"
#. type: tbl table
-#: ../src/xz/xz.1:848 ../src/xz/xz.1:2847
+#: ../src/xz/xz.1
#, no-wrap
msgid "-5e"
msgstr "-5e"
#. type: tbl table
-#: ../src/xz/xz.1:849 ../src/xz/xz.1:2848
+#: ../src/xz/xz.1
#, no-wrap
msgid "-6e"
msgstr "-6e"
#. type: tbl table
-#: ../src/xz/xz.1:850
+#: ../src/xz/xz.1
#, no-wrap
msgid "-7e"
msgstr "-7e"
#. type: tbl table
-#: ../src/xz/xz.1:851
+#: ../src/xz/xz.1
#, no-wrap
msgid "-8e"
msgstr "-8e"
#. type: tbl table
-#: ../src/xz/xz.1:852
+#: ../src/xz/xz.1
#, no-wrap
msgid "-9e"
msgstr "-9e"
#. type: Plain text
-#: ../src/xz/xz.1:864
-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."
+#: ../src/xz/xz.1
+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:864
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--fast>"
msgstr "B<--fast>"
#. type: TP
-#: ../src/xz/xz.1:867
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--best>"
msgstr "B<--best>"
#. type: Plain text
-#: ../src/xz/xz.1:878
-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."
+#: ../src/xz/xz.1
+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:878
+#: ../src/xz/xz.1
#, 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:891
-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."
+#: ../src/xz/xz.1
+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:909
-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\\(en4 times the size of the LZMA2 dictionary or at least 1 "
-"MiB. Using I<size> less than the LZMA2 dictionary size is waste of RAM "
-"because then the LZMA2 dictionary buffer will never get fully used. The "
-"sizes of the blocks are stored in the block headers, which a future version "
-"of B<xz> will use for multi-threaded decompression."
-msgstr ""
-"Im Multi-Thread-Modus wird etwa die dreifache I<Größe> in jedem Thread zur "
-"Pufferung der Ein- und Ausgabe belegt. Die vorgegebene I<Größe> ist das "
-"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:918
-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."
+#: ../src/xz/xz.1
+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\\(en4 times the size of the LZMA2 dictionary or at least 1 MiB. Using I<size> less than the LZMA2 dictionary size is waste of RAM because then the LZMA2 dictionary buffer will never get fully used. In multi-threaded mode, the sizes of the blocks are stored in the block headers. This size information is required 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. Im Multi-Thread-Modus wird die Größe der Blöcke wird in den Block-Headern gespeichert. Die Größeninformation wird für eine Multi-Thread-Dekompression genutzt."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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 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 B<xz> nicht in der Lage sein wird, die Dateien im Multi-Thread-Modus zu dekomprimieren."
#. type: TP
-#: ../src/xz/xz.1:918
+#: ../src/xz/xz.1
#, no-wrap
-msgid "B<--block-list=>I<sizes>"
-msgstr "B<--block-list=>I<Größen>"
+msgid "B<--block-list=>I<items>"
+msgstr "B<--block-list=>I<Blöcke>"
#. type: Plain text
-#: ../src/xz/xz.1:924
-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."
+#: ../src/xz/xz.1
+msgid "When compressing to the B<.xz> format, start a new block with an optional custom filter chain 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, optional mit einer benutzerdefinierten Filterkette."
#. type: Plain text
-#: ../src/xz/xz.1:930
-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."
+#: ../src/xz/xz.1
+msgid "The I<items> are a comma-separated list. Each item consists of an optional filter chain number between 0 and 9 followed by a colon (B<:>) and a required size of uncompressed data. Omitting an item (two or more consecutive commas) is a shorthand to use the size and filters of the previous item."
+msgstr "Die I<Blöcke> werden in einer durch Kommata getrennten Liste angegeben. Jeder Block besteht aus einer optionalen Filterkettennummer zwischen 0 und 9, gefolgt von einem Doppelpunkt (B<:>) und der Größe der unkomprimierten Daten (diese Angabe ist erforderlich). Überspringen eines Blocks (zwei oder mehr aufeinander folgende Kommata) ist ein Kürzel dafür, die Größe und die Filter des vorherigen Blocks zu verwenden."
#. type: Plain text
-#: ../src/xz/xz.1:940
-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."
+#: ../src/xz/xz.1
+msgid "If the input file is bigger than the sum of the sizes in I<items>, the last item is repeated until the end of the file. A special value of B<0> may be used as the last size 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<Blöcke>, dann wird der letzte in I<VBlöcke> 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."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "An alternative filter chain for each block can be specified in combination with the B<--filters1=>I<filters> \\&...\\& B<--filters9=>I<filters> options. These options define filter chains with an identifier between 1\\(en9. Filter chain 0 can be used to refer to the default filter chain, which is the same as not specifying a filter chain. The filter chain identifier can be used before the uncompressed size, followed by a colon (B<:>). For example, if one specifies B<--block-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB> then blocks will be created using:"
+msgstr "Eine alternative Filterkette für jeden Block kann in Kombination mit den Optionen B<--filters1=>I<Filter> \\&…\\& B<--filters9=>I<Filter> angegeben werden. Diese Optionen definieren Filterketten mit einem Bezeichner zwischen 1 und 9. Die Filterkette 0 bezeichnet hierbei die voreingestellte Filterkette, was dem Nichtangeben einer Filterkette gleichkommt. Der Filterkettenbezeichner kann vor der unkomprimierten Größe verwendet werden, gefolgt von einem Doppelpunkt (B<:>). Falls Sie beispielsweise B<--block-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB> angeben, werden die Blöcke folgendermaßen erstellt:"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The filter chain specified by B<--filters1> and 2 MiB input"
+msgstr "Die durch B<--filters1> angegebene Filterkette und 2 MiB Eingabe"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The filter chain specified by B<--filters3> and 2 MiB input"
+msgstr "Die durch B<--filters3> angegebene Filterkette und 2 MiB Eingabe"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The filter chain specified by B<--filters2> and 4 MiB input"
+msgstr "Die durch B<--filters2> angegebene Filterkette und 4 MiB Eingabe"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The default filter chain and 2 MiB input"
+msgstr "Die vorgegebene Filterkette und 2 MiB Eingabe"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The default filter chain and 4 MiB input for every block until end of input."
+msgstr "Die vorgegebene Filterkette und 4 MiB Eingabe für jeden Block bis zum Ende der Eingabe."
# FIXME encoder → compressor
#. type: Plain text
-#: ../src/xz/xz.1:955
-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."
+#: ../src/xz/xz.1
+msgid "If one specifies a size that exceeds 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<items>. 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 eine Größe 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<Blöcke> 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:961
-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."
+#: ../src/xz/xz.1
+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:961
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--flush-timeout=>I<timeout>"
msgstr "B<--flush-timeout=>I<Zeit>"
#. type: Plain text
-#: ../src/xz/xz.1:978
-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."
+#: ../src/xz/xz.1
+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:986
-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."
+#: ../src/xz/xz.1
+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:988
+#: ../src/xz/xz.1
msgid "This feature is not available on non-POSIX systems."
-msgstr ""
-"Dieses Funktionsmerkmal ist außerhalb von POSIX-Systemen nicht verfügbar."
+msgstr "Dieses Funktionsmerkmal ist außerhalb von POSIX-Systemen nicht verfügbar."
#. FIXME
#. type: Plain text
-#: ../src/xz/xz.1:996
-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."
+#: ../src/xz/xz.1
+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:996
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--memlimit-compress=>I<limit>"
msgstr "B<--memlimit-compress=>I<Grenze>"
#. type: Plain text
-#: ../src/xz/xz.1:1001
-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."
+#: ../src/xz/xz.1
+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:1014
-msgid ""
-"If the compression settings exceed the I<limit>, B<xz> will attempt to "
-"adjust the settings downwards so that the limit is no longer exceeded and "
-"display a notice that automatic adjustment was done. The adjustments are "
-"done in this order: reducing the number of threads, switching to single-"
-"threaded mode if even one thread in multi-threaded mode exceeds the "
-"I<limit>, and finally reducing the LZMA2 dictionary size."
-msgstr ""
-"Falls die Kompressionseinstellungen die I<Grenze> überschreiten, versucht "
-"B<xz>, die Einstellungen nach unten anzupassen, so dass die Grenze nicht "
-"mehr überschritten wird und zeigt einen Hinweis an, dass eine automatische "
-"Anpassung vorgenommen wurde. Die Anpassungen werden in folgender Reihenfolge "
-"angewendet: Reduzierung der Anzahl der Threads, Wechsel in den Einzelthread-"
-"Modus, falls sogar ein einziger Thread im Multithread-Modus die I<Grenze> "
-"überschreitet, und schlussendlich die Reduzierung der Größe des LZMA2-"
-"Wörterbuchs."
+#: ../src/xz/xz.1
+msgid "If the compression settings exceed the I<limit>, B<xz> will attempt to adjust the settings downwards so that the limit is no longer exceeded and display a notice that automatic adjustment was done. The adjustments are done in this order: reducing the number of threads, switching to single-threaded mode if even one thread in multi-threaded mode exceeds the I<limit>, and finally reducing the LZMA2 dictionary size."
+msgstr "Falls die Kompressionseinstellungen die I<Grenze> überschreiten, versucht B<xz>, die Einstellungen nach unten anzupassen, so dass die Grenze nicht mehr überschritten wird und zeigt einen Hinweis an, dass eine automatische Anpassung vorgenommen wurde. Die Anpassungen werden in folgender Reihenfolge angewendet: Reduzierung der Anzahl der Threads, Wechsel in den Einzelthread-Modus, falls sogar ein einziger Thread im Multithread-Modus die I<Grenze> überschreitet, und schlussendlich die Reduzierung der Größe des LZMA2-Wörterbuchs."
#. type: Plain text
-#: ../src/xz/xz.1:1022
-msgid ""
-"When compressing with B<--format=raw> or if B<--no-adjust> has been "
-"specified, only the number of threads may be reduced since it can be done "
-"without affecting the compressed output."
-msgstr ""
-"Beim Komprimieren mit B<--format=raw> oder falls B<--no-adjust> angegeben "
-"wurde, wird nur die Anzahl der Threads reduziert, da nur so die komprimierte "
-"Ausgabe nicht beeinflusst wird."
+#: ../src/xz/xz.1
+msgid "When compressing with B<--format=raw> or if B<--no-adjust> has been specified, only the number of threads may be reduced since it can be done without affecting the compressed output."
+msgstr "Beim Komprimieren mit B<--format=raw> oder falls B<--no-adjust> angegeben wurde, wird nur die Anzahl der Threads reduziert, da nur so die komprimierte Ausgabe nicht beeinflusst wird."
#. type: Plain text
-#: ../src/xz/xz.1:1029
-msgid ""
-"If the I<limit> cannot be met even with the adjustments described above, an "
-"error is displayed and B<xz> will exit with exit status 1."
-msgstr ""
-"Falls die I<Grenze> nicht anhand der vorstehend beschriebenen Anpassungen "
-"gesetzt werden kann, wird ein Fehler angezeigt und B<xz> wird mit dem Exit-"
-"Status 1 beendet."
+#: ../src/xz/xz.1
+msgid "If the I<limit> cannot be met even with the adjustments described above, an error is displayed and B<xz> will exit with exit status 1."
+msgstr "Falls die I<Grenze> nicht anhand der vorstehend beschriebenen Anpassungen gesetzt werden kann, wird ein Fehler angezeigt und B<xz> wird mit dem Exit-Status 1 beendet."
#. type: Plain text
-#: ../src/xz/xz.1:1033
+#: ../src/xz/xz.1
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:1043
-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>."
+#: ../src/xz/xz.1
+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:1055
-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%>"
+#: ../src/xz/xz.1
+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:1065
-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)."
-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)."
+#: ../src/xz/xz.1
+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)."
+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)."
#. type: Plain text
-#: ../src/xz/xz.1:1089
-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>. On MIPS32 B<2000\\ "
-"MiB> is used instead. (The values B<0> and B<max> aren't affected by this. "
-"A similar feature doesn't exist for decompression.) This can be helpful "
-"when a 32-bit executable has access to 4\\ GiB address space (2 GiB on "
-"MIPS32) while hopefully doing no harm in other situations."
-msgstr ""
-"Für die 32-Bit-Version von B<xz> gibt es einen Spezialfall: Falls die Grenze "
-"über B<4020\\ MiB> liegt, wird die I<Grenze> auf B<4020\\ MiB> gesetzt. Auf "
-"MIPS32 wird stattdessen B<2000\\ MB> verwendet (die Werte B<0> und B<max> "
-"werden hiervon nicht beeinflusst; für die Dekompression gibt es keine "
-"vergleichbare Funktion). Dies kann hilfreich sein, wenn ein 32-Bit-"
-"Executable auf einen 4\\ GiB großen Adressraum (2 GiB auf MIPS32) zugreifen "
-"kann, wobei wir hoffen wollen, dass es in anderen Situationen keine "
-"negativen Effekte hat."
+#: ../src/xz/xz.1
+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>. On MIPS32 B<2000\\ MiB> is used instead. (The values B<0> and B<max> aren't affected by this. A similar feature doesn't exist for decompression.) This can be helpful when a 32-bit executable has access to 4\\ GiB address space (2 GiB on MIPS32) while hopefully doing no harm in other situations."
+msgstr "Für die 32-Bit-Version von B<xz> gibt es einen Spezialfall: Falls die Grenze über B<4020\\ MiB> liegt, wird die I<Grenze> auf B<4020\\ MiB> gesetzt. Auf MIPS32 wird stattdessen B<2000\\ MB> verwendet (die Werte B<0> und B<max> werden hiervon nicht beeinflusst; für die Dekompression gibt es keine vergleichbare Funktion). Dies kann hilfreich sein, wenn ein 32-Bit-Executable auf einen 4\\ GiB großen Adressraum (2 GiB auf MIPS32) zugreifen kann, wobei wir hoffen wollen, dass es in anderen Situationen keine negativen Effekte hat."
#. type: Plain text
-#: ../src/xz/xz.1:1092
+#: ../src/xz/xz.1
msgid "See also the section B<Memory usage>."
msgstr "Siehe auch den Abschnitt B<Speicherbedarf>."
#. type: TP
-#: ../src/xz/xz.1:1092
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--memlimit-decompress=>I<limit>"
msgstr "B<--memlimit-decompress=>I<Grenze>"
#. type: Plain text
-#: ../src/xz/xz.1:1106
-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."
+#: ../src/xz/xz.1
+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:1106
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--memlimit-mt-decompress=>I<limit>"
msgstr "B<--memlimit-mt-decompress=>I<Grenze>"
#. type: Plain text
-#: ../src/xz/xz.1:1128
-msgid ""
-"Set a memory usage limit for multi-threaded decompression. This can only "
-"affect the number of threads; this will never make B<xz> refuse to "
-"decompress a file. If I<limit> is too low to allow any multi-threading, the "
-"I<limit> is ignored and B<xz> will continue in single-threaded mode. Note "
-"that if also B<--memlimit-decompress> is used, it will always apply to both "
-"single-threaded and multi-threaded modes, and so the effective I<limit> for "
-"multi-threading will never be higher than the limit set with B<--memlimit-"
-"decompress>."
-msgstr ""
-"legt eine Begrenzung des Speicherverbrauchs für Multithread-Dekompression "
-"fest. Dies beeinflusst lediglich die Anzahl der Threads; B<xz> wird dadurch "
-"niemals die Dekompression einer Datei verweigern. Falls die I<Grenze> für "
-"jegliches Multithreading zu niedrig ist, wird sie ignoriert und B<xz> setzt "
-"im Einzelthread-modus fort. Beachten Sie auch, dass bei der Verwendung von "
-"B<--memlimit-decompress> dies stets sowohl auf den Einzelthread-als auch auf "
-"den Multithread-Modus angewendet wird und so die effektive I<Grenze> für den "
-"Multithread-Modus niemals höher sein wird als die mit B<--memlimit-"
-"decompress> gesetzte Grenze."
-
-#. type: Plain text
-#: ../src/xz/xz.1:1135
-msgid ""
-"In contrast to the other memory usage limit options, B<--memlimit-mt-"
-"decompress=>I<limit> has a system-specific default I<limit>. B<xz --info-"
-"memory> can be used to see the current value."
-msgstr ""
-"Im Gegensatz zu anderen Optionen zur Begrenzung des Speicherverbrauchs hat "
-"B<--memlimit-mt-decompress=>I<Grenze> eine systemspezifisch vorgegebene "
-"I<Grenze>. Mit B<xz --info-memory> können Sie deren aktuellen Wert anzeigen "
-"lassen."
+#: ../src/xz/xz.1
+msgid "Set a memory usage limit for multi-threaded decompression. This can only affect the number of threads; this will never make B<xz> refuse to decompress a file. If I<limit> is too low to allow any multi-threading, the I<limit> is ignored and B<xz> will continue in single-threaded mode. Note that if also B<--memlimit-decompress> is used, it will always apply to both single-threaded and multi-threaded modes, and so the effective I<limit> for multi-threading will never be higher than the limit set with B<--memlimit-decompress>."
+msgstr "legt eine Begrenzung des Speicherverbrauchs für Multithread-Dekompression fest. Dies beeinflusst lediglich die Anzahl der Threads; B<xz> wird dadurch niemals die Dekompression einer Datei verweigern. Falls die I<Grenze> für jegliches Multithreading zu niedrig ist, wird sie ignoriert und B<xz> setzt im Einzelthread-modus fort. Beachten Sie auch, dass bei der Verwendung von B<--memlimit-decompress> dies stets sowohl auf den Einzelthread-als auch auf den Multithread-Modus angewendet wird und so die effektive I<Grenze> für den Multithread-Modus niemals höher sein wird als die mit B<--memlimit-decompress> gesetzte Grenze."
#. type: Plain text
-#: ../src/xz/xz.1:1151
-msgid ""
-"This option and its default value exist because without any limit the "
-"threaded decompressor could end up allocating an insane amount of memory "
-"with some input files. If the default I<limit> is too low on your system, "
-"feel free to increase the I<limit> but never set it to a value larger than "
-"the amount of usable RAM as with appropriate input files B<xz> will attempt "
-"to use that amount of memory even with a low number of threads. Running out "
-"of memory or swapping will not improve decompression performance."
-msgstr ""
-"Diese Option und ihr Standardwert existieren, weil die unbegrenzte "
-"threadbezogene Dekompression bei einigen Eingabedateien zu unglaublich "
-"großem Speicherverbrauch führen würde. Falls die vorgegebene I<Grenze> auf "
-"Ihrem System zu niedrig ist, können Sie die I<Grenze> durchaus erhöhen, aber "
-"setzen Sie sie niemals auf einen Wert größer als die Menge des nutzbaren "
-"Speichers, da B<xz> bei entsprechenden Eingabedateien versuchen wird, diese "
-"Menge an Speicher auch bei einer geringen Anzahl von Threads zu verwnden. "
-"Speichermangel oder Auslagerung verbessern die Dekomprimierungsleistung "
-"nicht."
-
-#. type: Plain text
-#: ../src/xz/xz.1:1163
-msgid ""
-"See B<--memlimit-compress=>I<limit> for possible ways to specify the "
-"I<limit>. Setting I<limit> to B<0> resets the I<limit> to the default "
-"system-specific value."
-msgstr ""
-"Siehe B<--memlimit-compress=>I<Grenze> für mögliche Wege zur Angabe der "
-"I<Grenze>. Sezen der I<Grenze> auf B<0> setzt die I<Grenze> auf den "
-"vorgegebenen systemspezifischen Wert zurück."
+#: ../src/xz/xz.1
+msgid "In contrast to the other memory usage limit options, B<--memlimit-mt-decompress=>I<limit> has a system-specific default I<limit>. B<xz --info-memory> can be used to see the current value."
+msgstr "Im Gegensatz zu anderen Optionen zur Begrenzung des Speicherverbrauchs hat B<--memlimit-mt-decompress=>I<Grenze> eine systemspezifisch vorgegebene I<Grenze>. Mit B<xz --info-memory> können Sie deren aktuellen Wert anzeigen lassen."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "This option and its default value exist because without any limit the threaded decompressor could end up allocating an insane amount of memory with some input files. If the default I<limit> is too low on your system, feel free to increase the I<limit> but never set it to a value larger than the amount of usable RAM as with appropriate input files B<xz> will attempt to use that amount of memory even with a low number of threads. Running out of memory or swapping will not improve decompression performance."
+msgstr "Diese Option und ihr Standardwert existieren, weil die unbegrenzte threadbezogene Dekompression bei einigen Eingabedateien zu unglaublich großem Speicherverbrauch führen würde. Falls die vorgegebene I<Grenze> auf Ihrem System zu niedrig ist, können Sie die I<Grenze> durchaus erhöhen, aber setzen Sie sie niemals auf einen Wert größer als die Menge des nutzbaren Speichers, da B<xz> bei entsprechenden Eingabedateien versuchen wird, diese Menge an Speicher auch bei einer geringen Anzahl von Threads zu verwnden. Speichermangel oder Auslagerung verbessern die Dekomprimierungsleistung nicht."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "See B<--memlimit-compress=>I<limit> for possible ways to specify the I<limit>. Setting I<limit> to B<0> resets the I<limit> to the default system-specific value."
+msgstr "Siehe B<--memlimit-compress=>I<Grenze> für mögliche Wege zur Angabe der I<Grenze>. Sezen der I<Grenze> auf B<0> setzt die I<Grenze> auf den vorgegebenen systemspezifischen Wert zurück."
#. type: TP
-#: ../src/xz/xz.1:1163
+#: ../src/xz/xz.1
#, 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:1169
-msgid ""
-"This is equivalent to specifying B<--memlimit-compress=>I<limit> B<--"
-"memlimit-decompress=>I<limit> B<--memlimit-mt-decompress=>I<limit>."
-msgstr ""
-"Dies ist gleichbedeutend mit B<--memlimit-compress=>I<Grenze> B<--memlimit-"
-"decompress=>I<Grenze> B<--memlimit-mt-decompress=>I<Grenze>."
+#: ../src/xz/xz.1
+msgid "This is equivalent to specifying B<--memlimit-compress=>I<limit> B<--memlimit-decompress=>I<limit> B<--memlimit-mt-decompress=>I<limit>."
+msgstr "Dies ist gleichbedeutend mit B<--memlimit-compress=>I<Grenze> B<--memlimit-decompress=>I<Grenze> B<--memlimit-mt-decompress=>I<Grenze>."
#. type: TP
-#: ../src/xz/xz.1:1169
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--no-adjust>"
msgstr "B<--no-adjust>"
#. type: Plain text
-#: ../src/xz/xz.1:1179
-msgid ""
-"Display an error and exit if the memory usage limit cannot be met without "
-"adjusting settings that affect the compressed output. That is, this "
-"prevents B<xz> from switching the encoder from multi-threaded mode to single-"
-"threaded mode and from reducing the LZMA2 dictionary size. Even when this "
-"option is used the number of threads may be reduced to meet the memory usage "
-"limit as that won't affect the compressed output."
-msgstr ""
-"zeigt einen Fehler an und beendet, falls die Grenze der Speichernutzung "
-"nicht ohne Änderung der Einstellungen, welche die komprimierte Ausgabe "
-"beeinflussen, berücksichtigt werden kann. Das bedeutet, dass B<xz> daran "
-"gehindert wird, den Encoder vom Multithread-Modus in den Einzelthread-Modus "
-"zu versetzen und die Größe des LZMA2-Wörterbuchs zu reduzieren. Allerdings "
-"kann bei Verwendung dieser Option dennoch die Anzahl der Threads reduziert "
-"werden, um die Grenze der Speichernutzung zu halten, sofern dies die "
-"komprimierte Ausgabe nicht beeinflusst."
+#: ../src/xz/xz.1
+msgid "Display an error and exit if the memory usage limit cannot be met without adjusting settings that affect the compressed output. That is, this prevents B<xz> from switching the encoder from multi-threaded mode to single-threaded mode and from reducing the LZMA2 dictionary size. Even when this option is used the number of threads may be reduced to meet the memory usage limit as that won't affect the compressed output."
+msgstr "zeigt einen Fehler an und beendet, falls die Grenze der Speichernutzung nicht ohne Änderung der Einstellungen, welche die komprimierte Ausgabe beeinflussen, berücksichtigt werden kann. Das bedeutet, dass B<xz> daran gehindert wird, den Encoder vom Multithread-Modus in den Einzelthread-Modus zu versetzen und die Größe des LZMA2-Wörterbuchs zu reduzieren. Allerdings kann bei Verwendung dieser Option dennoch die Anzahl der Threads reduziert werden, um die Grenze der Speichernutzung zu halten, sofern dies die komprimierte Ausgabe nicht beeinflusst."
#. type: Plain text
-#: ../src/xz/xz.1:1182
-msgid ""
-"Automatic adjusting is always disabled when creating raw streams (B<--"
-"format=raw>)."
-msgstr ""
-"Die automatische Anpassung ist beim Erzeugen von Rohdatenströmen (B<--"
-"format=raw>) immer deaktiviert."
+#: ../src/xz/xz.1
+msgid "Automatic adjusting is always disabled when creating raw streams (B<--format=raw>)."
+msgstr "Die automatische Anpassung ist beim Erzeugen von Rohdatenströmen (B<--format=raw>) immer deaktiviert."
#. type: TP
-#: ../src/xz/xz.1:1182
+#: ../src/xz/xz.1
#, 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:1197
-msgid ""
-"Specify the number of worker threads to use. Setting I<threads> to a "
-"special value B<0> makes B<xz> use up to as many threads as the processor(s) "
-"on the system support. The actual number of threads can be fewer than "
-"I<threads> if the input file is not big enough for threading with the given "
-"settings or if using more threads would exceed the memory usage limit."
-msgstr ""
-"gibt die Anzahl der zu verwendenden Arbeits-Threads an. Wenn Sie I<Threads> "
-"auf einen speziellen Wert B<0> setzen, verwendet B<xz> maximal so viele "
-"Threads, wie der/die Prozessor(en) im System untestützen. Die tatsächliche "
-"Anzahl kann geringer sein als die angegebenen I<Threads>, wenn die "
-"Eingabedatei nicht groß genug für Threading mit den gegebenen Einstellungen "
-"ist oder wenn mehr Threads die Speicherbegrenzung übersteigen würden."
+#: ../src/xz/xz.1
+msgid "Specify the number of worker threads to use. Setting I<threads> to a special value B<0> makes B<xz> use up to as many threads as the processor(s) on the system support. The actual number of threads can be fewer than I<threads> if the input file is not big enough for threading with the given settings or if using more threads would exceed the memory usage limit."
+msgstr "gibt die Anzahl der zu verwendenden Arbeits-Threads an. Wenn Sie I<Threads> auf einen speziellen Wert B<0> setzen, verwendet B<xz> maximal so viele Threads, wie der/die Prozessor(en) im System untestützen. Die tatsächliche Anzahl kann geringer sein als die angegebenen I<Threads>, wenn die Eingabedatei nicht groß genug für Threading mit den gegebenen Einstellungen ist oder wenn mehr Threads die Speicherbegrenzung übersteigen würden."
#. type: Plain text
-#: ../src/xz/xz.1:1216
-msgid ""
-"The single-threaded and multi-threaded compressors produce different "
-"output. Single-threaded compressor will give the smallest file size but "
-"only the output from the multi-threaded compressor can be decompressed using "
-"multiple threads. Setting I<threads> to B<1> will use the single-threaded "
-"mode. Setting I<threads> to any other value, including B<0>, will use the "
-"multi-threaded compressor even if the system supports only one hardware "
-"thread. (B<xz> 5.2.x used single-threaded mode in this situation.)"
-msgstr ""
-"Die Multithread- bzw. Einzelthread-Kompressoren erzeugen unterschiedliche "
-"Ausgaben. Der Einzelthread-Kompressor erzeugt die geringste Dateigröße, aber "
-"nur die Ausgabe des Multithread-Kompressors kann mit mehreren Threads wieder "
-"dekomprimiert werden. Das Setzen der Anzahl der I<Threads> auf B<1> wird den "
-"Einzelthread-Modus verwenden. Das Setzen der Anzahl der I<Threads> auf "
-"einen anderen Wert einschließlich B<0> verwendet den Multithread-Kompressor, "
-"und zwar sogar dann, wenn das System nur einen einzigen Hardware-Thread "
-"unterstützt (B<xz> 5.2.x verwendete in diesem Fall noch den Einzelthread-"
-"Modus)."
-
-#. type: Plain text
-#: ../src/xz/xz.1:1235
-msgid ""
-"To use multi-threaded mode with only one thread, set I<threads> to B<+1>. "
-"The B<+> prefix has no effect with values other than B<1>. A memory usage "
-"limit can still make B<xz> switch to single-threaded mode unless B<--no-"
-"adjust> is used. Support for the B<+> prefix was added in B<xz> 5.4.0."
-msgstr ""
-"Um den Multithread-Modus mit nur einem einzigen Thread zu verwenden, setzen "
-"Sie die Anzahl der I<Threads> auf B<+1>. Das Präfix B<+> hat mit Werten "
-"verschieden von B<1> keinen Effekt. Eine Begrenzung des Speicherverbrauchs "
-"kann B<xz> dennoch veranlassen, den Einzelthread-Modus zu verwenden, außer "
-"wenn B<--no-adjust> verwendet wird. Die Unterstützung für das Präfix B<+> "
-"wurde in B<xz> 5.4.0 hinzugefügt."
+#: ../src/xz/xz.1
+msgid "The single-threaded and multi-threaded compressors produce different output. Single-threaded compressor will give the smallest file size but only the output from the multi-threaded compressor can be decompressed using multiple threads. Setting I<threads> to B<1> will use the single-threaded mode. Setting I<threads> to any other value, including B<0>, will use the multi-threaded compressor even if the system supports only one hardware thread. (B<xz> 5.2.x used single-threaded mode in this situation.)"
+msgstr "Die Multithread- bzw. Einzelthread-Kompressoren erzeugen unterschiedliche Ausgaben. Der Einzelthread-Kompressor erzeugt die geringste Dateigröße, aber nur die Ausgabe des Multithread-Kompressors kann mit mehreren Threads wieder dekomprimiert werden. Das Setzen der Anzahl der I<Threads> auf B<1> wird den Einzelthread-Modus verwenden. Das Setzen der Anzahl der I<Threads> auf einen anderen Wert einschließlich B<0> verwendet den Multithread-Kompressor, und zwar sogar dann, wenn das System nur einen einzigen Hardware-Thread unterstützt (B<xz> 5.2.x verwendete in diesem Fall noch den Einzelthread-Modus)."
#. type: Plain text
-#: ../src/xz/xz.1:1250
-msgid ""
-"If an automatic number of threads has been requested and no memory usage "
-"limit has been specified, then a system-specific default soft limit will be "
-"used to possibly limit the number of threads. It is a soft limit in sense "
-"that it is ignored if the number of threads becomes one, thus a soft limit "
-"will never stop B<xz> from compressing or decompressing. This default soft "
-"limit will not make B<xz> switch from multi-threaded mode to single-threaded "
-"mode. The active limits can be seen with B<xz --info-memory>."
-msgstr ""
-"Falls das automatische Setzen der Anzahl der Threads angefordert und keine "
-"Speicherbegrenzung angegeben wurde, dann wird eine systemspezifisch "
-"vorgegebene weiche Grenze verwendet, um eventuell die Anzahl der Threads zu "
-"begrenzen. Es ist eine weiche Grenze im Sinne davon, dass sie ignoriert "
-"wird, falls die Anzahl der Threads 1 ist; daher wird eine weiche Grenze "
-"B<xz> niemals an der Kompression oder Dekompression hindern. Diese "
-"vorgegebene weiche Grenze veranlasst B<xz> nicht, vom Multithread-Modus in "
-"den Einzelthread-Modus zu wechseln. Die aktiven Grenzen können Sie mit dem "
-"Befehl B<xz --info-memory> anzeigen lassen."
-
-#. type: Plain text
-#: ../src/xz/xz.1:1257
-msgid ""
-"Currently the only threading method is to split the input into blocks and "
-"compress them independently from each other. The default block size depends "
-"on the compression level and can be overridden with the B<--block-"
-"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."
+#: ../src/xz/xz.1
+msgid "To use multi-threaded mode with only one thread, set I<threads> to B<+1>. The B<+> prefix has no effect with values other than B<1>. A memory usage limit can still make B<xz> switch to single-threaded mode unless B<--no-adjust> is used. Support for the B<+> prefix was added in B<xz> 5.4.0."
+msgstr "Um den Multithread-Modus mit nur einem einzigen Thread zu verwenden, setzen Sie die Anzahl der I<Threads> auf B<+1>. Das Präfix B<+> hat mit Werten verschieden von B<1> keinen Effekt. Eine Begrenzung des Speicherverbrauchs kann B<xz> dennoch veranlassen, den Einzelthread-Modus zu verwenden, außer wenn B<--no-adjust> verwendet wird. Die Unterstützung für das Präfix B<+> wurde in B<xz> 5.4.0 hinzugefügt."
#. type: Plain text
-#: ../src/xz/xz.1:1265
-msgid ""
-"Threaded decompression only works on files that contain multiple blocks with "
-"size information in block headers. All large enough files compressed in "
-"multi-threaded mode meet this condition, but files compressed in single-"
-"threaded mode don't even if B<--block-size=>I<size> has been used."
-msgstr ""
-"Eine thread-basierte Dekompression wird nur bei Dateien funktionieren, die "
-"mehrere Blöcke mit Größeninformationen in deren Headern enthalten. Alle im "
-"Multi-Thread-Modus komprimierten Dateien, die groß genug sind, erfüllen "
-"diese Bedingung, im Einzel-Thread-Modus komprimierte Dateien dagegen nicht, "
-"selbst wenn B<--block-size=>I<Größe> verwendet wurde."
+#: ../src/xz/xz.1
+msgid "If an automatic number of threads has been requested and no memory usage limit has been specified, then a system-specific default soft limit will be used to possibly limit the number of threads. It is a soft limit in sense that it is ignored if the number of threads becomes one, thus a soft limit will never stop B<xz> from compressing or decompressing. This default soft limit will not make B<xz> switch from multi-threaded mode to single-threaded mode. The active limits can be seen with B<xz --info-memory>."
+msgstr "Falls das automatische Setzen der Anzahl der Threads angefordert und keine Speicherbegrenzung angegeben wurde, dann wird eine systemspezifisch vorgegebene weiche Grenze verwendet, um eventuell die Anzahl der Threads zu begrenzen. Es ist eine weiche Grenze im Sinne davon, dass sie ignoriert wird, falls die Anzahl der Threads 1 ist; daher wird eine weiche Grenze B<xz> niemals an der Kompression oder Dekompression hindern. Diese vorgegebene weiche Grenze veranlasst B<xz> nicht, vom Multithread-Modus in den Einzelthread-Modus zu wechseln. Die aktiven Grenzen können Sie mit dem Befehl B<xz --info-memory> anzeigen lassen."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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
+msgid "Threaded decompression only works on files that contain multiple blocks with size information in block headers. All large enough files compressed in multi-threaded mode meet this condition, but files compressed in single-threaded mode don't even if B<--block-size=>I<size> has been used."
+msgstr "Eine thread-basierte Dekompression wird nur bei Dateien funktionieren, die mehrere Blöcke mit Größeninformationen in deren Headern enthalten. Alle im Multi-Thread-Modus komprimierten Dateien, die groß genug sind, erfüllen diese Bedingung, im Einzel-Thread-Modus komprimierte Dateien dagegen nicht, selbst wenn B<--block-size=>I<Größe> verwendet wurde."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The default value for I<threads> is B<0>. In B<xz> 5.4.x and older the default is B<1>."
+msgstr "Der Vorgabewert für I<Threads> is B<0>. In B<xz> 5.4.x und älteren Versionen ist der Vorgabewert B<1>."
#. type: SS
-#: ../src/xz/xz.1:1266 ../src/xz/xz.1:2819
+#: ../src/xz/xz.1
#, no-wrap
msgid "Custom compressor filter chains"
msgstr "Benutzerdefinierte Filterketten für die Kompression"
#. type: Plain text
-#: ../src/xz/xz.1:1282
-msgid ""
-"A custom filter chain allows specifying the compression settings in detail "
-"instead of relying on the settings associated to the presets. When a custom "
-"filter chain is specified, preset options (B<-0> \\&...\\& B<-9> and B<--"
-"extreme>) earlier on the command line are forgotten. If a preset option is "
-"specified after one or more custom filter chain options, the new preset "
-"takes effect and the custom filter chain options specified earlier are "
-"forgotten."
-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."
+#: ../src/xz/xz.1
+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:1289
-msgid ""
-"A filter chain is comparable to piping on the command line. When "
-"compressing, the uncompressed input goes to the first filter, whose output "
-"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."
+#: ../src/xz/xz.1
+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:1297
-msgid ""
-"Many filters have limitations on where they can be in the filter chain: some "
-"filters can work only as the last filter in the chain, some only as a non-"
-"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."
+#: ../src/xz/xz.1
+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:1305
-msgid ""
-"A custom filter chain is specified by using one or more filter options in "
-"the order they are wanted in the filter chain. That is, the order of filter "
-"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."
+#: ../src/xz/xz.1
+msgid "A custom filter chain can be specified in two different ways. The options B<--filters=>I<filters> and B<--filters1=>I<filters> \\&...\\& B<--filters9=>I<filters> allow specifying an entire filter chain in one option using the liblzma filter string syntax. Alternatively, a filter chain can be specified by using one or more individual filter options in the order they are wanted in the filter chain. That is, the order of the individual filter options is significant! When decoding raw streams (B<--format=raw>), the filter chain must be specified in the same order as it was specified when compressing. Any individual filter or preset options specified before the full chain option (B<--filters=>I<filters>) will be forgotten. Individual filters specified after the full chain option will reset the filter chain."
+msgstr "Eine benutzerdefinierte Filterkette kann auf zwei verschiedene Arten angegeben werden. Die Optionen B<--filters=>I<Filter> und B<--filters1=>I<Filter> \\&…\\& B<--filters9=>I<Filter> ermöglichen die Angabe einer ganzen Filterkette in einer einzelnen Option gemäß der Liblzma-Filterzeichenkettensyntax. Alternativ können Sie eine Filterkette mit einer oder mehreren individuellen Filteroptionen in der Reihenfolge angeben, in der sie in der Filterkette verwendet werden sollen. Daher ist die Reihenfolge der individuellen Filteroptionen wichtig! Beim Dekodieren von Rohdatenströmen (B<--format=raw>) muss die Filterkette in der gleichen Reihenfolge wie bei der Komprimierung angegeben werden. Alle individuellen Filter- oder Voreinstellungsoptionen, die I<vor> der vollen Filterkettenoption (B<--filters=>I<Filter>) angegeben werden, werden verworfen. Individuelle Filter, die I<nach> der vollen Filterkettenoption angegeben werden, setzen die Filterkette zurück"
#. type: Plain text
-#: ../src/xz/xz.1:1314
-msgid ""
-"Filters take filter-specific I<options> as a comma-separated list. Extra "
-"commas in I<options> are ignored. Every option has a default value, so you "
-"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."
+#: ../src/xz/xz.1
+msgid "Both the full and individual filter options take filter-specific I<options> as a comma-separated list. Extra commas in I<options> are ignored. Every option has a default value, so specify those you want to change."
+msgstr "Sowohl vollständige als auch individuelle Filteroptionen 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:1323
-msgid ""
-"To see the whole filter chain and I<options>, use B<xz -vv> (that is, use "
-"B<--verbose> twice). This works also for viewing the filter chain options "
-"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."
+#: ../src/xz/xz.1
+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
+#, no-wrap
+msgid "B<--filters=>I<filters>"
+msgstr "B<--filters=>I<Filter>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Specify the full filter chain or a preset in a single option. Each filter can be separated by spaces or two dashes (B<-->). I<filters> may need to be quoted on the shell command line so it is parsed as a single option. To denote I<options>, use B<:> or B<=>. A preset can be prefixed with a B<-> and followed with zero or more flags. The only supported flag is B<e> to apply the same options as B<--extreme>."
+msgstr "gibt die vollständige Filterkette oder eine Voreinstellung in einer einzelnen Option an. Mehrere Filter können durch Leerzeichen oder zwei Minuszeichen (B<-->) voneinander getrennt werden. Es kann notwendig sein, die I<Filter> in der Shell-Befehlszeile zu maskieren, so dass diese als einzelne Option ausgewertet werden. Um Optionen Werte zuzuordnen, verwenden Sie B<:> oder B<=>. Einer Voreinstellung kann ein B<-> vorangestellt werden, dem keiner oder mehrere Schalter folgen. Der einzige unterstützte Schalter ist B<e> zum Anwenden der gleichen Optionen wie B<--extreme>."
#. type: TP
-#: ../src/xz/xz.1:1323
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "B<--filters1>=I<filters> ... B<--filters9>=I<filters>"
+msgstr "B<--filters1>=I<Filter> … B<--filters9>=I<Filter>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Specify up to nine additional filter chains that can be used with B<--block-list>."
+msgstr "gibt bis zu neun optionale Filterketten an, die mit B<--block-list> verwendet werden können."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "For example, when compressing an archive with executable files followed by text files, the executable part could use a filter chain with a BCJ filter and the text part only the LZMA2 filter."
+msgstr "Wenn Sie beispielsweise ein Archiv mit ausführbaren Dateien gefolgt von Textdateien komprimieren, könnte der Teil mit den ausführbaren Dateien eine Filterkette mit einem BCJ-Filter und der Textdateiteil lediglich den LZMA2-Filter verwenden."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "B<--filters-help>"
+msgstr "B<--filters-help>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Display a help message describing how to specify presets and custom filter chains in the B<--filters> and B<--filters1=>I<filters> \\&...\\& B<--filters9=>I<filters> options, and exit successfully."
+msgstr "zeigt eine Hilfemeldung an, welche beschreibt, wie Voreinstellungen und benutzerdefinierte Filterketten in den Optionen B<--filters> und B<--filters1=>I<Filter> \\&… \\& B<--filters9=>I<Filter> angegeben werden und beendet das Programm."
+
+#. type: TP
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--lzma1>[B<=>I<options>]"
msgstr "B<--lzma1>[B<=>I<Optionen>]"
#. type: TP
-#: ../src/xz/xz.1:1326
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--lzma2>[B<=>I<options>]"
msgstr "B<--lzma2>[B<=>I<Optionen>]"
#. type: Plain text
-#: ../src/xz/xz.1:1331
-msgid ""
-"Add LZMA1 or LZMA2 filter to the filter chain. These filters can be used "
-"only as the last filter in the chain."
-msgstr ""
-"fügt LZMA1- oder LZMA2-Filter zur Filterkette hinzu. Diese Filter können nur "
-"als letzte Filter in der Kette verwendet werden."
+#: ../src/xz/xz.1
+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:1343
-msgid ""
-"LZMA1 is a legacy filter, which is supported almost solely due to the legacy "
-"B<.lzma> file format, which supports only LZMA1. LZMA2 is an updated "
-"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."
+#: ../src/xz/xz.1
+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:1346
+#: ../src/xz/xz.1
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:1347
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<preset=>I<preset>"
msgstr "B<preset=>I<Voreinstellung>"
#. type: Plain text
-#: ../src/xz/xz.1:1374
-msgid ""
-"Reset all LZMA1 or LZMA2 I<options> to I<preset>. I<Preset> consist of an "
-"integer, which may be followed by single-letter preset modifiers. The "
-"integer can be from B<0> to B<9>, matching the command line options B<-0> "
-"\\&...\\& B<-9>. The only supported modifier is currently B<e>, which "
-"matches B<--extreme>. If no B<preset> is specified, the default values of "
-"LZMA1 or LZMA2 I<options> are taken from the preset B<6>."
-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."
+#: ../src/xz/xz.1
+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:1374
+#: ../src/xz/xz.1
#, 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:1389
-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:1398
-msgid ""
-"Typical dictionary I<size> is from 64\\ KiB to 64\\ MiB. The minimum is 4\\ "
-"KiB. The maximum for compression is currently 1.5\\ GiB (1536\\ MiB). The "
-"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."
+#: ../src/xz/xz.1
+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:1425
-msgid ""
-"Dictionary I<size> and match finder (I<mf>) together determine the memory "
-"usage of the LZMA1 or LZMA2 encoder. The same (or bigger) dictionary "
-"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."
+#: ../src/xz/xz.1
+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
+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:1425
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lc=>I<lc>"
msgstr "B<lc=>I<lc>"
#. type: Plain text
-#: ../src/xz/xz.1:1434
-msgid ""
-"Specify the number of literal context bits. The minimum is 0 and the "
-"maximum is 4; the default is 3. In addition, the sum of I<lc> and I<lp> "
-"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."
+#: ../src/xz/xz.1
+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:1439
-msgid ""
-"All bytes that cannot be encoded as matches are encoded as literals. That "
-"is, literals are simply 8-bit bytes that are encoded one at a time."
-msgstr ""
-"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."
+#: ../src/xz/xz.1
+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:1453
-msgid ""
-"The literal coding makes an assumption that the highest I<lc> bits of the "
-"previous uncompressed byte correlate with the next byte. For example, in "
-"typical English text, an upper-case letter is often followed by a lower-case "
-"letter, and a lower-case letter is usually followed by another lower-case "
-"letter. In the US-ASCII character set, the highest three bits are 010 for "
-"upper-case letters and 011 for lower-case letters. When I<lc> is at least "
-"3, the literal coding can take advantage of this property in the "
-"uncompressed data."
-msgstr ""
-"Bei der Literalkodierung wird angenommen, dass die höchsten I<lc>-Bits des "
-"zuvor unkomprimierten Bytes mit dem nächsten Byte in Beziehung stehen. Zum "
-"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."
+#: ../src/xz/xz.1
+msgid "The literal coding makes an assumption that the highest I<lc> bits of the previous uncompressed byte correlate with the next byte. For example, in typical English text, an upper-case letter is often followed by a lower-case letter, and a lower-case letter is usually followed by another lower-case letter. In the US-ASCII character set, the highest three bits are 010 for upper-case letters and 011 for lower-case letters. When I<lc> is at least 3, the literal coding can take advantage of this property in the uncompressed data."
+msgstr "Bei der Literalkodierung wird angenommen, dass die höchsten I<lc>-Bits des zuvor unkomprimierten Bytes mit dem nächsten Byte in Beziehung stehen. Zum 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:1462
-msgid ""
-"The default value (3) is usually good. If you want maximum compression, "
-"test B<lc=4>. Sometimes it helps a little, and sometimes it makes "
-"compression worse. If it makes it worse, test 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>."
+#: ../src/xz/xz.1
+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 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:1462
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lp=>I<lp>"
msgstr "B<lp=>I<lp>"
#. type: Plain text
-#: ../src/xz/xz.1:1466
-msgid ""
-"Specify the number of literal position bits. The minimum is 0 and the "
-"maximum is 4; the default is 0."
-msgstr ""
-"gibt die Anzahl der literalen Positionsbits an. Das Minimum ist 0 und das "
-"Maximum 4; die Vorgabe ist 0."
+#: ../src/xz/xz.1
+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:1473
-msgid ""
-"I<Lp> affects what kind of alignment in the uncompressed data is assumed "
-"when encoding literals. See I<pb> below for more information about "
-"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."
+#: ../src/xz/xz.1
+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:1473
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<pb=>I<pb>"
msgstr "B<pb=>I<Anzahl>"
#. type: Plain text
-#: ../src/xz/xz.1:1477
-msgid ""
-"Specify the number of position bits. The minimum is 0 and the maximum is 4; "
-"the default is 2."
-msgstr ""
-"legt die Anzahl der Positions-Bits fest. Das Minimum ist 0 und das Maximum "
-"4; Standard ist 2."
+#: ../src/xz/xz.1
+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:1484
-msgid ""
-"I<Pb> affects what kind of alignment in the uncompressed data is assumed in "
-"general. The default means four-byte alignment (2^I<pb>=2^2=4), which is "
-"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."
+#: ../src/xz/xz.1
+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:1498
-msgid ""
-"When the alignment is known, setting I<pb> accordingly may reduce the file "
-"size a little. For example, with text files having one-byte alignment (US-"
-"ASCII, ISO-8859-*, UTF-8), setting B<pb=0> can improve compression "
-"slightly. For UTF-16 text, B<pb=1> is a good choice. If the alignment is "
-"an odd number like 3 bytes, B<pb=0> might be the best choice."
-msgstr ""
-"Wenn die Ausrichtung bekannt ist, kann das entsprechende Setzen von I<pb> "
-"die Dateigröße ein wenig verringern. Wenn Textdateien zum Beispiel eine Ein-"
-"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."
+#: ../src/xz/xz.1
+msgid "When the alignment is known, setting I<pb> accordingly may reduce the file size a little. For example, with text files having one-byte alignment (US-ASCII, ISO-8859-*, UTF-8), setting B<pb=0> can improve compression slightly. For UTF-16 text, B<pb=1> is a good choice. If the alignment is an odd number like 3 bytes, B<pb=0> might be the best choice."
+msgstr "Wenn die Ausrichtung bekannt ist, kann das entsprechende Setzen von I<pb> die Dateigröße ein wenig verringern. Wenn Textdateien zum Beispiel eine Ein-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:1506
-msgid ""
-"Even though the assumed alignment can be adjusted with I<pb> and I<lp>, "
-"LZMA1 and LZMA2 still slightly favor 16-byte alignment. It might be worth "
-"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."
+#: ../src/xz/xz.1
+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:1506
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<mf=>I<mf>"
msgstr "B<mf=>I<Üf>"
#. type: Plain text
-#: ../src/xz/xz.1:1521
-msgid ""
-"Match finder has a major effect on encoder speed, memory usage, and "
-"compression ratio. Usually Hash Chain match finders are faster than Binary "
-"Tree match finders. The default depends on the I<preset>: 0 uses B<hc3>, "
-"1\\(en3 use B<hc4>, and the rest use B<bt4>."
-msgstr ""
-"Der Übereinstimmungsfinder hat einen großen Einfluss auf die Geschwindigkeit "
-"des Kodierers, den Speicherbedarf und das Kompressionsverhältnis. "
-"Ü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>."
+#: ../src/xz/xz.1
+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\\(en3 use B<hc4>, and the rest use B<bt4>."
+msgstr "Der Übereinstimmungsfinder hat einen großen Einfluss auf die Geschwindigkeit des Kodierers, den Speicherbedarf und das Kompressionsverhältnis. Ü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:1527
-msgid ""
-"The following match finders are supported. The memory usage formulas below "
-"are rough approximations, which are closest to the reality when I<dict> is a "
-"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."
+#: ../src/xz/xz.1
+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:1528
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<hc3>"
msgstr "B<hc3>"
#. type: Plain text
-#: ../src/xz/xz.1:1531
+#: ../src/xz/xz.1
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:1535 ../src/xz/xz.1:1584
+#: ../src/xz/xz.1
msgid "Minimum value for I<nice>: 3"
msgstr "Minimalwert für I<nice>: 3"
#. type: Plain text
-#: ../src/xz/xz.1:1537 ../src/xz/xz.1:1556 ../src/xz/xz.1:1586
-#: ../src/xz/xz.1:1605
+#: ../src/xz/xz.1
msgid "Memory usage:"
msgstr "Speicherbedarf:"
#. type: Plain text
-#: ../src/xz/xz.1:1542
+#: ../src/xz/xz.1
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:1547
+#: ../src/xz/xz.1
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:1547
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<hc4>"
msgstr "B<hc4>"
#. type: Plain text
-#: ../src/xz/xz.1:1550
+#: ../src/xz/xz.1
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:1554 ../src/xz/xz.1:1603
+#: ../src/xz/xz.1
msgid "Minimum value for I<nice>: 4"
msgstr "Minimaler Wert für I<nice>: 4"
#. type: Plain text
-#: ../src/xz/xz.1:1561
+#: ../src/xz/xz.1
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:1566
+#: ../src/xz/xz.1
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:1566
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<bt2>"
msgstr "B<bt2>"
#. type: Plain text
-#: ../src/xz/xz.1:1569
+#: ../src/xz/xz.1
msgid "Binary Tree with 2-byte hashing"
msgstr "Binärbaum mit 2-Byte-Hashing"
#. type: Plain text
-#: ../src/xz/xz.1:1573
+#: ../src/xz/xz.1
msgid "Minimum value for I<nice>: 2"
msgstr "Minimaler Wert für I<nice>: 2"
#. type: Plain text
-#: ../src/xz/xz.1:1577
+#: ../src/xz/xz.1
msgid "Memory usage: I<dict> * 9.5"
msgstr "Speicherverbrauch: I<dict> * 9.5"
#. type: TP
-#: ../src/xz/xz.1:1577
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<bt3>"
msgstr "B<bt3>"
#. type: Plain text
-#: ../src/xz/xz.1:1580
+#: ../src/xz/xz.1
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:1591
+#: ../src/xz/xz.1
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:1596
+#: ../src/xz/xz.1
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:1596
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<bt4>"
msgstr "B<bt4>"
#. type: Plain text
-#: ../src/xz/xz.1:1599
+#: ../src/xz/xz.1
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:1610
+#: ../src/xz/xz.1
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:1615
+#: ../src/xz/xz.1
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:1616
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<mode=>I<mode>"
msgstr "B<mode=>I<Modus>"
#. type: Plain text
-#: ../src/xz/xz.1:1637
-msgid ""
-"Compression I<mode> specifies the method to analyze the data produced by the "
-"match finder. Supported I<modes> are B<fast> and B<normal>. The default is "
-"B<fast> for I<presets> 0\\(en3 and B<normal> for I<presets> 4\\(en9."
-msgstr ""
-"gibt die Methode zum Analysieren der vom Übereinstimmungsfinder gelieferten "
-"Daten an. Als I<Modi> werden B<fast> und B<normal> unterstützt. Die Vorgabe "
-"ist B<fast> für die I<Voreinstellungsstufen> 0-3 und B<normal> für die "
-"I<Voreinstellungsstufen> 4-9."
+#: ../src/xz/xz.1
+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\\(en3 and B<normal> for I<presets> 4\\(en9."
+msgstr "gibt die Methode zum Analysieren der vom Übereinstimmungsfinder gelieferten Daten an. Als I<Modi> werden B<fast> und B<normal> unterstützt. Die Vorgabe 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:1646
-msgid ""
-"Usually B<fast> is used with Hash Chain match finders and B<normal> with "
-"Binary Tree match finders. This is also what the I<presets> do."
-msgstr ""
-"Üblicherweise wird B<fast> mit Hashketten-basierten Übereinstimmungsfindern "
-"und B<normal> mit Binärbaum-basierten Übereinstimmungsfindern verwendet. So "
-"machen es auch die I<Voreinstellungsstufen>."
+#: ../src/xz/xz.1
+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:1646
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<nice=>I<nice>"
msgstr "B<nice=>I<nice>"
#. type: Plain text
-#: ../src/xz/xz.1:1653
-msgid ""
-"Specify what is considered to be a nice length for a match. Once a match of "
-"at least I<nice> bytes is found, the algorithm stops looking for possibly "
-"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."
+#: ../src/xz/xz.1
+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:1660
-msgid ""
-"I<Nice> can be 2\\(en273 bytes. Higher values tend to give better "
-"compression ratio at the expense of speed. The default depends on the "
-"I<preset>."
-msgstr ""
-"Der I<nice>-Wert kann 2-273 Byte sein. Höhere Werte tendieren zu einem "
-"besseren Kompressionsverhältnis, aber auf Kosten der Geschwindigkeit. Die "
-"Vorgabe hängt von der I<Voreinstellungsstufe> ab."
+#: ../src/xz/xz.1
+msgid "I<Nice> can be 2\\(en273 bytes. Higher values tend to give better compression ratio at the expense of speed. The default depends on the I<preset>."
+msgstr "Der I<nice>-Wert kann 2-273 Byte sein. Höhere Werte tendieren zu einem besseren Kompressionsverhältnis, aber auf Kosten der Geschwindigkeit. Die Vorgabe hängt von der I<Voreinstellungsstufe> ab."
#. type: TP
-#: ../src/xz/xz.1:1660
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<depth=>I<depth>"
msgstr "B<depth=>I<Tiefe>"
#. type: Plain text
-#: ../src/xz/xz.1:1670
-msgid ""
-"Specify the maximum search depth in the match finder. The default is the "
-"special value of 0, which makes the compressor determine a reasonable "
-"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."
+#: ../src/xz/xz.1
+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:1681
-msgid ""
-"Reasonable I<depth> for Hash Chains is 4\\(en100 and 16\\(en1000 for Binary "
-"Trees. Using very high values for I<depth> can make the encoder extremely "
-"slow with some files. Avoid setting the I<depth> over 1000 unless you are "
-"prepared to interrupt the compression in case it is taking far too long."
-msgstr ""
-"Die angemessene I<Tiefe> für Hash-Ketten ist 4-100 und 16-1000 für "
-"Binärbäume. Hohe Werte für die I<Tiefe> können den Kodierer bei einigen "
-"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."
+#: ../src/xz/xz.1
+msgid "Reasonable I<depth> for Hash Chains is 4\\(en100 and 16\\(en1000 for Binary Trees. Using very high values for I<depth> can make the encoder extremely slow with some files. Avoid setting the I<depth> over 1000 unless you are prepared to interrupt the compression in case it is taking far too long."
+msgstr "Die angemessene I<Tiefe> für Hash-Ketten ist 4-100 und 16-1000 für Binärbäume. Hohe Werte für die I<Tiefe> können den Kodierer bei einigen 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:1692
-msgid ""
-"When decoding raw streams (B<--format=raw>), LZMA2 needs only the dictionary "
-"I<size>. LZMA1 needs also I<lc>, I<lp>, and I<pb>."
-msgstr ""
-"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>."
+#: ../src/xz/xz.1
+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:1692
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--x86>[B<=>I<options>]"
msgstr "B<--x86>[B<=>I<Optionen>]"
#. type: TP
-#: ../src/xz/xz.1:1695
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--arm>[B<=>I<options>]"
msgstr "B<--arm>[B<=>I<Optionen>]"
#. type: TP
-#: ../src/xz/xz.1:1697
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--armthumb>[B<=>I<options>]"
msgstr "B<--armthumb>[B<=>I<Optionen>]"
#. type: TP
-#: ../src/xz/xz.1:1699
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--arm64>[B<=>I<options>]"
msgstr "B<--arm64>[B<=>I<Optionen>]"
#. type: TP
-#: ../src/xz/xz.1:1701
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--powerpc>[B<=>I<options>]"
msgstr "B<--powerpc>[B<=>I<Optionen>]"
#. type: TP
-#: ../src/xz/xz.1:1703
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--ia64>[B<=>I<options>]"
msgstr "B<--ia64>[B<=>I<Optionen>]"
#. type: TP
-#: ../src/xz/xz.1:1705
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--sparc>[B<=>I<options>]"
msgstr "B<--sparc>[B<=>I<Optionen>]"
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "B<--riscv>[B<=>I<options>]"
+msgstr "B<--riscv>[B<=>I<Optionen>]"
+
#. type: Plain text
-#: ../src/xz/xz.1:1711
-msgid ""
-"Add a branch/call/jump (BCJ) filter to the filter chain. These filters can "
-"be used only as a non-last filter in the filter chain."
-msgstr ""
-"fügt ein »Branch/Call/Jump«-(BCJ-)Filter zur Filterkette hinzu. Diese Filter "
-"können nicht als letzter Filter in der Filterkette verwendet werden."
+#: ../src/xz/xz.1
+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:1725
-msgid ""
-"A BCJ filter converts relative addresses in the machine code to their "
-"absolute counterparts. This doesn't change the size of the data but it "
-"increases redundancy, which can help LZMA2 to produce 0\\(en15\\ % smaller "
-"B<.xz> file. The BCJ filters are always reversible, so using a BCJ filter "
-"for wrong type of data doesn't cause any data loss, although it may make the "
-"compression ratio slightly worse. The BCJ filters are very fast and use an "
-"insignificant amount of memory."
-msgstr ""
-"Ein BCJ-Filter wandelt relative Adressen im Maschinencode in deren absolute "
-"Gegenstücke um. Die Datengröße wird dadurch nicht geändert, aber die "
-"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. Die BCJ-Filter sind sehr schnell und verbrauchen nur wenig mehr "
-"Speicher."
+#: ../src/xz/xz.1
+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\\(en15\\ % smaller B<.xz> file. The BCJ filters are always reversible, so using a BCJ filter for wrong type of data doesn't cause any data loss, although it may make the compression ratio slightly worse. The BCJ filters are very fast and use an insignificant amount of memory."
+msgstr "Ein BCJ-Filter wandelt relative Adressen im Maschinencode in deren absolute Gegenstücke um. Die Datengröße wird dadurch nicht geändert, aber die 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. Die BCJ-Filter sind sehr schnell und verbrauchen nur wenig mehr Speicher."
#. type: Plain text
-#: ../src/xz/xz.1:1728
+#: ../src/xz/xz.1
msgid "These BCJ filters have known problems related to the compression ratio:"
-msgstr ""
-"Diese BCJ-Filter haben bekannte Probleme mit dem Kompressionsverhältnis:"
+msgstr "Diese BCJ-Filter haben bekannte Probleme mit dem Kompressionsverhältnis:"
#. type: Plain text
-#: ../src/xz/xz.1:1735
-msgid ""
-"Some types of files containing executable code (for example, object files, "
-"static libraries, and Linux kernel modules) have the addresses in the "
-"instructions filled with filler values. These BCJ filters will still do the "
-"address conversion, which will make the compression worse with these files."
-msgstr ""
-"In einigen Dateitypen, die ausführbaren Code enthalten (zum Beispiel "
-"Objektdateien, statische Bibliotheken und Linux-Kernelmodule), sind die "
-"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."
+#: ../src/xz/xz.1
+msgid "Some types of files containing executable code (for example, object files, static libraries, and Linux kernel modules) have the addresses in the instructions filled with filler values. These BCJ filters will still do the address conversion, which will make the compression worse with these files."
+msgstr "In einigen Dateitypen, die ausführbaren Code enthalten (zum Beispiel Objektdateien, statische Bibliotheken und Linux-Kernelmodule), sind die 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:1745
-msgid ""
-"If a BCJ filter is applied on an archive, it is possible that it makes the "
-"compression ratio worse than not using a BCJ filter. For example, if there "
-"are similar or even identical executables then filtering will likely make "
-"the files less similar and thus compression is worse. The contents of non-"
-"executable files in the same archive can matter too. In practice one has to "
-"try with and without a BCJ filter to see which is better in each situation."
-msgstr ""
-"Falls ein BCJ-Filter auf ein Archiv angewendet wird, ist es möglich, dass "
-"das Kompressionsverhältnis schlechter als ohne Filter wird. Falls es "
-"beispielsweise ähnliche oder sogar identische ausführbare Dateien gibt, dann "
-"werden diese durch die Filterung wahrscheinlich »unähnlicher« und "
-"verschlechtern dadurch das Kompressionsverhältnis. Der Inhalt nicht-"
-"ausführbarer Dateien im gleichen Archiv kann sich ebenfalls darauf "
-"auswirken. In der Praxis werden Sie durch Versuche mit oder ohne BCJ-Filter "
-"selbst herausfinden müssen, was situationsbezogen besser ist."
+#: ../src/xz/xz.1
+msgid "If a BCJ filter is applied on an archive, it is possible that it makes the compression ratio worse than not using a BCJ filter. For example, if there are similar or even identical executables then filtering will likely make the files less similar and thus compression is worse. The contents of non-executable files in the same archive can matter too. In practice one has to try with and without a BCJ filter to see which is better in each situation."
+msgstr "Falls ein BCJ-Filter auf ein Archiv angewendet wird, ist es möglich, dass das Kompressionsverhältnis schlechter als ohne Filter wird. Falls es beispielsweise ähnliche oder sogar identische ausführbare Dateien gibt, dann werden diese durch die Filterung wahrscheinlich »unähnlicher« und verschlechtern dadurch das Kompressionsverhältnis. Der Inhalt nicht-ausführbarer Dateien im gleichen Archiv kann sich ebenfalls darauf auswirken. In der Praxis werden Sie durch Versuche mit oder ohne BCJ-Filter selbst herausfinden müssen, was situationsbezogen besser ist."
#. type: Plain text
-#: ../src/xz/xz.1:1750
-msgid ""
-"Different instruction sets have different alignment: the executable file "
-"must be aligned to a multiple of this value in the input data to make the "
-"filter work."
-msgstr ""
-"Verschiedene Befehlssätze haben unterschiedliche Ausrichtungen: Die "
-"ausführbare Datei muss in den Eingabedateien einem Vielfachen dieses Wertes "
-"entsprechen, damit dieser Filter funktioniert."
+#: ../src/xz/xz.1
+msgid "Different instruction sets have different alignment: the executable file must be aligned to a multiple of this value in the input data to make the filter work."
+msgstr "Verschiedene Befehlssätze haben unterschiedliche Ausrichtungen: Die ausführbare Datei muss in den Eingabedateien einem Vielfachen dieses Wertes entsprechen, damit dieser Filter funktioniert."
#. type: tbl table
-#: ../src/xz/xz.1:1757
+#: ../src/xz/xz.1
#, no-wrap
msgid "Filter"
msgstr "Filter"
#. type: tbl table
-#: ../src/xz/xz.1:1757
+#: ../src/xz/xz.1
#, no-wrap
msgid "Alignment"
msgstr "Ausrichtung"
#. type: tbl table
-#: ../src/xz/xz.1:1757
+#: ../src/xz/xz.1
#, no-wrap
msgid "Notes"
msgstr "Hinweise"
#. type: tbl table
-#: ../src/xz/xz.1:1758
+#: ../src/xz/xz.1
#, no-wrap
msgid "x86"
msgstr "x86"
#. type: tbl table
-#: ../src/xz/xz.1:1758
+#: ../src/xz/xz.1
#, no-wrap
msgid "32-bit or 64-bit x86"
msgstr "32-Bit oder 64-Bit x86"
#. type: tbl table
-#: ../src/xz/xz.1:1759
+#: ../src/xz/xz.1
#, no-wrap
msgid "ARM"
msgstr "ARM"
#. type: tbl table
-#: ../src/xz/xz.1:1760
+#: ../src/xz/xz.1
#, no-wrap
msgid "ARM-Thumb"
msgstr "ARM-Thumb"
#. type: tbl table
-#: ../src/xz/xz.1:1761
+#: ../src/xz/xz.1
#, no-wrap
msgid "ARM64"
msgstr "ARM64"
#. type: tbl table
-#: ../src/xz/xz.1:1761
+#: ../src/xz/xz.1
#, no-wrap
msgid "4096-byte alignment is best"
msgstr "4096-Byte-Ausrichtung ist optimal"
#. type: tbl table
-#: ../src/xz/xz.1:1762
+#: ../src/xz/xz.1
#, no-wrap
msgid "PowerPC"
msgstr "PowerPC"
#. type: tbl table
-#: ../src/xz/xz.1:1762
+#: ../src/xz/xz.1
#, no-wrap
msgid "Big endian only"
msgstr "Nur Big Endian"
#. type: tbl table
-#: ../src/xz/xz.1:1763
+#: ../src/xz/xz.1
#, no-wrap
msgid "IA-64"
msgstr "IA-64"
#. type: tbl table
-#: ../src/xz/xz.1:1763
+#: ../src/xz/xz.1
#, no-wrap
msgid "16"
msgstr "16"
#. type: tbl table
-#: ../src/xz/xz.1:1763
+#: ../src/xz/xz.1
#, no-wrap
msgid "Itanium"
msgstr "Itanium"
#. type: tbl table
-#: ../src/xz/xz.1:1764
+#: ../src/xz/xz.1
#, no-wrap
msgid "SPARC"
msgstr "SPARC"
+#. type: tbl table
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "RISC-V"
+msgstr "RISC-V"
+
#. type: Plain text
-#: ../src/xz/xz.1:1781
-msgid ""
-"Since the BCJ-filtered data is usually compressed with LZMA2, the "
-"compression ratio may be improved slightly if the LZMA2 options are set to "
-"match the alignment of the selected BCJ filter. For example, with the IA-64 "
-"filter, it's good to set B<pb=4> or even B<pb=4,lp=4,lc=0> with LZMA2 "
-"(2^4=16). The x86 filter is an exception; it's usually good to stick to "
-"LZMA2's default four-byte alignment when compressing x86 executables."
-msgstr ""
-"Da die BCJ-gefilterten Daten üblicherweise mit LZMA2 komprimiert sind, kann "
-"das Kompressionsverhältnis dadurch etwas verbessert werden, dass die LZMA2-"
-"Optionen so gesetzt werden, dass sie der Ausrichtung des gewählten BCJ-"
-"Filters entsprechen. Zum Beispiel ist es beim IA-64-Filter eine gute Wahl, "
-"B<pb=4> oder sogar B<pb=4,lp=4,lc=0> mit LZMA2 zu setzen (2^4=16). Der x86-"
-"Filter bildet dabei eine Ausnahme; Sie sollten bei der für LZMA2 "
-"voreingestellten 4-Byte-Ausrichtung bleiben, wenn Sie x86-Binärdateien "
-"komprimieren."
+#: ../src/xz/xz.1
+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. Examples:"
+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. Beispiele:"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "IA-64 filter has 16-byte alignment so B<pb=4,lp=4,lc=0> is good with LZMA2 (2^4=16)."
+msgstr "Der IA-64-Filter hat eine 16-Byte-Ausrichtung, daher ist B<pb=4,lp=4,lc=0> für LZMA2 passend (2^4=16)."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "RISC-V code has 2-byte or 4-byte alignment depending on whether the file contains 16-bit compressed instructions (the C extension). When 16-bit instructions are used, B<pb=2,lp=1,lc=3> or B<pb=1,lp=1,lc=3> is good. When 16-bit instructions aren't present, B<pb=2,lp=2,lc=2> is the best. B<readelf -h> can be used to check if \"RVC\" appears on the \"Flags\" line."
+msgstr "RISC-V-Code hat eine 2-Byte- oder 4-Byte-Ausrichtung, abhängig davon, ob die Datei 16-bit-komprimierte Instruktionen enthält (die C-Erweiterung). Wenn 16-bit-Instruktionen verwendet werden, ist B<pb=2,lp=1,lc=3> oder B<pb=1,lp=1,lc=3> passend. Wenn keine 16-bit-Instruktionen vorhanden sind, ist B<pb=2,lp=2,lc=2> am besten. Mit B<readelf -h> können Sie überprüfen, ob »RVC« in der »Flags«-Zeile auftritt."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "ARM64 is always 4-byte aligned so B<pb=2,lp=2,lc=2> is the best."
+msgstr "ARM64 hat stets eine 4-Byte-Ausrichtung, daher ist B<pb=2,lp=2,lc=2> am besten."
#. type: Plain text
-#: ../src/xz/xz.1:1784
+#: ../src/xz/xz.1
+msgid "The x86 filter is an exception. It's usually good to stick to LZMA2's defaults (B<pb=2,lp=0,lc=3>) when compressing x86 executables."
+msgstr "Der x86-Filter stellt eine Ausnahme dar. Es ist üblicherweise eine gute Wahl, bei den Voreinstellungen von LZMA2 (B<pb=2,lp=0,lc=3>) zu bleiben, wenn Sie ausführbare x86-Dateien komprimieren"
+
+#. type: Plain text
+#: ../src/xz/xz.1
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:1785
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<start=>I<offset>"
msgstr "B<start=>I<Versatz>"
#. type: Plain text
-#: ../src/xz/xz.1:1799
-msgid ""
-"Specify the start I<offset> that is used when converting between relative "
-"and absolute addresses. The I<offset> must be a multiple of the alignment "
-"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."
+#: ../src/xz/xz.1
+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:1800
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--delta>[B<=>I<options>]"
msgstr "B<--delta>[B<=>I<Optionen>]"
#. type: Plain text
-#: ../src/xz/xz.1:1805
-msgid ""
-"Add the Delta filter to the filter chain. The Delta filter can be only used "
-"as a non-last filter in the filter chain."
-msgstr ""
-"fügt den Delta-Filter zur Filterkette hinzu. Der Delta-Filter kann nicht als "
-"letzter Filter in der Filterkette verwendet werden."
+#: ../src/xz/xz.1
+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:1814
-msgid ""
-"Currently only simple byte-wise delta calculation is supported. It can be "
-"useful when compressing, for example, uncompressed bitmap images or "
-"uncompressed PCM audio. However, special purpose algorithms may give "
-"significantly better results than Delta + LZMA2. This is true especially "
-"with audio, which compresses faster and better, for example, with B<flac>(1)."
-msgstr ""
-"Gegenwärtig wird nur eine einfache, Byte-bezogene Delta-Berechnung "
-"unterstützt. Beim Komprimieren von zum Beispiel unkomprimierten Bitmap-"
-"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."
+#: ../src/xz/xz.1
+msgid "Currently only simple byte-wise delta calculation is supported. It can be useful when compressing, for example, uncompressed bitmap images or uncompressed PCM audio. However, special purpose algorithms may give significantly better results than Delta + LZMA2. This is true especially with audio, which compresses faster and better, for example, with B<flac>(1)."
+msgstr "Gegenwärtig wird nur eine einfache, Byte-bezogene Delta-Berechnung unterstützt. Beim Komprimieren von zum Beispiel unkomprimierten Bitmap-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:1817
+#: ../src/xz/xz.1
msgid "Supported I<options>:"
msgstr "Unterstützte I<Optionen>:"
#. type: TP
-#: ../src/xz/xz.1:1818
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<dist=>I<distance>"
msgstr "B<dist=>I<Abstand>"
#. type: Plain text
-#: ../src/xz/xz.1:1826
-msgid ""
-"Specify the I<distance> of the delta calculation in bytes. I<distance> must "
-"be 1\\(en256. The default is 1."
-msgstr ""
-"gibt den I<Abstand> der Delta-Berechnung in Byte an. Zulässige Werte für den "
-"I<Abstand> sind 1 bis 256. Der Vorgabewert ist 1."
+#: ../src/xz/xz.1
+msgid "Specify the I<distance> of the delta calculation in bytes. I<distance> must be 1\\(en256. The default is 1."
+msgstr "gibt den I<Abstand> der Delta-Berechnung in Byte an. Zulässige Werte für den I<Abstand> sind 1 bis 256. Der Vorgabewert ist 1."
#. type: Plain text
-#: ../src/xz/xz.1:1831
-msgid ""
-"For example, with B<dist=2> and eight-byte input A1 B1 A2 B3 A3 B5 A4 B7, "
-"the output will be A1 B1 01 02 01 02 01 02."
-msgstr ""
-"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."
+#: ../src/xz/xz.1
+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:1833
+#: ../src/xz/xz.1
#, no-wrap
msgid "Other options"
msgstr "Andere Optionen"
#. type: TP
-#: ../src/xz/xz.1:1834 ../src/xzdec/xzdec.1:83
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-q>, B<--quiet>"
msgstr "B<-q>, B<--quiet>"
#. type: Plain text
-#: ../src/xz/xz.1:1841
-msgid ""
-"Suppress warnings and notices. Specify this twice to suppress errors too. "
-"This option has no effect on the exit status. That is, even if a warning "
-"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."
+#: ../src/xz/xz.1
+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:1841
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-v>, B<--verbose>"
msgstr "B<-v>, B<--verbose>"
#. type: Plain text
-#: ../src/xz/xz.1:1850
-msgid ""
-"Be verbose. If standard error is connected to a terminal, B<xz> will "
-"display a progress indicator. Specifying B<--verbose> twice will give even "
-"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."
+#: ../src/xz/xz.1
+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:1852
+#: ../src/xz/xz.1
msgid "The progress indicator shows the following information:"
msgstr "Der Fortschrittsanzeiger stellt die folgenden Informationen dar:"
#. type: Plain text
-#: ../src/xz/xz.1:1857
-msgid ""
-"Completion percentage is shown if the size of the input file is known. That "
-"is, the percentage cannot be shown in pipes."
-msgstr ""
-"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."
+#: ../src/xz/xz.1
+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:1860
-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)."
+#: ../src/xz/xz.1
+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:1863
-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)."
+#: ../src/xz/xz.1
+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:1867
-msgid ""
-"Compression ratio, which is calculated by dividing the amount of compressed "
-"data processed so far by the amount of uncompressed data processed so far."
-msgstr ""
-"Kompressionsverhältnis, das mittels Dividieren der Menge der bisher "
-"komprimierten Daten durch die Menge der bisher verarbeiteten unkomprimierten "
-"Daten ermittelt wird."
+#: ../src/xz/xz.1
+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:1874
-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."
+#: ../src/xz/xz.1
+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:1876
+#: ../src/xz/xz.1
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:1884
-msgid ""
-"Estimated remaining time is shown only when the size of the input file is "
-"known and a couple of seconds have already passed since B<xz> started "
-"processing the file. The time is shown in a less precise format which never "
-"has any colons, for example, 2 min 30 s."
-msgstr ""
-"Die geschätzte verbleibende Zeit wird nur angezeigt, wenn die Größe der "
-"Eingabedatei bekannt ist und bereits einige Sekunden vergangen sind, nachdem "
-"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."
+#: ../src/xz/xz.1
+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, for example, 2 min 30 s."
+msgstr "Die geschätzte verbleibende Zeit wird nur angezeigt, wenn die Größe der Eingabedatei bekannt ist und bereits einige Sekunden vergangen sind, nachdem 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:1899
-msgid ""
-"When standard error is not a terminal, B<--verbose> will make B<xz> print "
-"the filename, compressed size, uncompressed size, compression ratio, and "
-"possibly also the speed and elapsed time on a single line to standard error "
-"after compressing or decompressing the file. The speed and elapsed time are "
-"included only when the operation took at least a few seconds. If the "
-"operation didn't finish, for example, due to user interruption, also the "
-"completion percentage is printed if the size of the input file is known."
-msgstr ""
-"Wenn die Standardfehlerausgabe kein Terminal ist, schreibt B<xz> mit B<--"
-"verbose> nach dem Komprimieren oder Dekomprimieren der Datei in einer "
-"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."
+#: ../src/xz/xz.1
+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, for example, due to user interruption, also the completion percentage is printed if the size of the input file is known."
+msgstr "Wenn die Standardfehlerausgabe kein Terminal ist, schreibt B<xz> mit B<--verbose> nach dem Komprimieren oder Dekomprimieren der Datei in einer 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:1899 ../src/xzdec/xzdec.1:89
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-Q>, B<--no-warn>"
msgstr "B<-Q>, B<--no-warn>"
#. type: Plain text
-#: ../src/xz/xz.1:1909
-msgid ""
-"Don't set the exit status to 2 even if a condition worth a warning was "
-"detected. This option doesn't affect the verbosity level, thus both B<--"
-"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."
+#: ../src/xz/xz.1
+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:1909
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--robot>"
msgstr "B<--robot>"
#. type: Plain text
-#: ../src/xz/xz.1:1921
-msgid ""
-"Print messages in a machine-parsable format. This is intended to ease "
-"writing frontends that want to use B<xz> instead of liblzma, which may be "
-"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>."
+#: ../src/xz/xz.1
+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:1921
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--info-memory>"
msgstr "B<--info-memory>"
#. type: Plain text
-#: ../src/xz/xz.1:1928
-msgid ""
-"Display, in human-readable format, how much physical memory (RAM) and how "
-"many processor threads B<xz> thinks the system has and the memory usage "
-"limits for compression and decompression, and exit successfully."
-msgstr ""
-"zeigt in einem menschenlesbaren Format an, wieviel physischen Speicher (RAM) "
-"und wie viele Prozessor-Threads das System nach Annahme von B<xz> hat, sowie "
-"die Speicherbedarfsbegrenzung für Kompression und Dekompression, und beendet "
-"das Programm erfolgreich."
+#: ../src/xz/xz.1
+msgid "Display, in human-readable format, how much physical memory (RAM) and how many processor threads B<xz> thinks the system has and the memory usage limits for compression and decompression, and exit successfully."
+msgstr "zeigt in einem menschenlesbaren Format an, wieviel physischen Speicher (RAM) und wie viele Prozessor-Threads das System nach Annahme von B<xz> hat, sowie die Speicherbedarfsbegrenzung für Kompression und Dekompression, und beendet das Programm erfolgreich."
#. type: TP
-#: ../src/xz/xz.1:1928 ../src/xzdec/xzdec.1:96
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-h>, B<--help>"
msgstr "B<-h>, B<--help>"
#. type: Plain text
-#: ../src/xz/xz.1:1932
-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."
+#: ../src/xz/xz.1
+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:1932
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-H>, B<--long-help>"
msgstr "B<-H>, B<--long-help>"
# FIXME Satzpunkt fehlt
#. type: Plain text
-#: ../src/xz/xz.1:1937
-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."
+#: ../src/xz/xz.1
+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:1937 ../src/xzdec/xzdec.1:99
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-V>, B<--version>"
msgstr "B<-V>, B<--version>"
#. type: Plain text
-#: ../src/xz/xz.1:1946
-msgid ""
-"Display the version number of B<xz> and liblzma in human readable format. "
-"To get machine-parsable output, specify B<--robot> before B<--version>."
-msgstr ""
-"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."
+#: ../src/xz/xz.1
+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:1947
+#: ../src/xz/xz.1
#, no-wrap
msgid "ROBOT MODE"
msgstr "ROBOTER-MODUS"
#. type: Plain text
-#: ../src/xz/xz.1:1963
-msgid ""
-"The robot mode is activated with the B<--robot> option. It makes the output "
-"of B<xz> easier to parse by other programs. Currently B<--robot> is "
-"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."
+#: ../src/xz/xz.1
+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<--list>, B<--filters-help>, B<--info-memory>, and B<--version>. 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<--list>, B<--filters-help>, B<--info-memory> und B<--version> unterstützt. In der Zukunft wird dieser Modus auch für Kompression und Dekompression unterstützt."
#. type: SS
-#: ../src/xz/xz.1:1964
-#, no-wrap
-msgid "Version"
-msgstr "Version"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1969
-msgid ""
-"B<xz --robot --version> prints 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:1971
-msgid "B<XZ_VERSION=>I<XYYYZZZS>"
-msgstr "B<XZ_VERSION=>I<XYYYZZZS>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1973
-msgid "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
-msgstr "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
-
-#. type: TP
-#: ../src/xz/xz.1:1973
-#, no-wrap
-msgid "I<X>"
-msgstr "I<X>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1976
-msgid "Major version."
-msgstr "Hauptversion."
-
-#. type: TP
-#: ../src/xz/xz.1:1976
-#, no-wrap
-msgid "I<YYY>"
-msgstr "I<YYY>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1981
-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:1981
-#, no-wrap
-msgid "I<ZZZ>"
-msgstr "I<ZZZ>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1985
-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:1985
-#, no-wrap
-msgid "I<S>"
-msgstr "I<S>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1993
-msgid ""
-"Stability. 0 is alpha, 1 is beta, and 2 is stable. I<S> should be always 2 "
-"when I<YYY> is even."
-msgstr ""
-"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:1998
-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:2004
-msgid "Examples: 4.999.9beta is B<49990091> and 5.0.0 is B<50000002>."
-msgstr "Beispiele: 4.999.9beta ist B<49990091> und 5.0.0 is B<50000002>."
-
-#. type: SS
-#: ../src/xz/xz.1:2005
-#, no-wrap
-msgid "Memory limit information"
-msgstr "Informationen zur Speicherbedarfsbegrenzung"
-
-#. type: Plain text
-#: ../src/xz/xz.1:2008
-msgid ""
-"B<xz --robot --info-memory> prints a single line with multiple tab-separated "
-"columns:"
-msgstr ""
-"B<xz --robot --info-memory> gibt eine einzelne Zeile mit mehreren durch "
-"Tabulatoren getrennten Spalten aus:"
-
-#. type: IP
-#: ../src/xz/xz.1:2008
-#, no-wrap
-msgid "1."
-msgstr "1."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2010
-msgid "Total amount of physical memory (RAM) in bytes."
-msgstr "Gesamter physischer Speicher (RAM) in Byte."
-
-#. type: IP
-#: ../src/xz/xz.1:2010 ../src/xz/xz.1:2125 ../src/xz/xz.1:2162
-#: ../src/xz/xz.1:2188 ../src/xz/xz.1:2258 ../src/xz/xz.1:2285
-#, no-wrap
-msgid "2."
-msgstr "2."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2017
-msgid ""
-"Memory usage limit for compression in bytes (B<--memlimit-compress>). A "
-"special value of B<0> indicates the default setting which for single-"
-"threaded mode is the same as no limit."
-msgstr ""
-"Speicherbedarfsbegrenzung für die Kompression in Byte (B<--memlimit-"
-"compress>). Ein spezieller Wert von B<0> bezeichnet die Standardeinstellung, "
-"die im Einzelthread-Modus bedeutet, dass keine Begrenzung vorhanden ist."
-
-#. type: IP
-#: ../src/xz/xz.1:2017 ../src/xz/xz.1:2127 ../src/xz/xz.1:2164
-#: ../src/xz/xz.1:2190 ../src/xz/xz.1:2263 ../src/xz/xz.1:2287
-#, no-wrap
-msgid "3."
-msgstr "3."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2024
-msgid ""
-"Memory usage limit for decompression in bytes (B<--memlimit-decompress>). A "
-"special value of B<0> indicates the default setting which for single-"
-"threaded mode is the same as no limit."
-msgstr ""
-"Speicherbedarfsbegrenzung für die Dekompression in Byte (B<--memlimit-"
-"decompress>). Ein spezieller Wert von B<0> bezeichnet die "
-"Standardeinstellung, die im Einzelthread-Modus bedeutet, dass keine "
-"Begrenzung vorhanden ist."
-
-#. type: IP
-#: ../src/xz/xz.1:2024 ../src/xz/xz.1:2129 ../src/xz/xz.1:2166
-#: ../src/xz/xz.1:2193 ../src/xz/xz.1:2273 ../src/xz/xz.1:2289
-#, no-wrap
-msgid "4."
-msgstr "4."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2036
-msgid ""
-"Since B<xz> 5.3.4alpha: Memory usage for multi-threaded decompression in "
-"bytes (B<--memlimit-mt-decompress>). This is never zero because a system-"
-"specific default value shown in the column 5 is used if no limit has been "
-"specified explicitly. This is also never greater than the value in the "
-"column 3 even if a larger value has been specified with B<--memlimit-mt-"
-"decompress>."
-msgstr ""
-"Seit B<xz> 5.3.4alpha: Die Speichernutzung für Multithread-Dekompression in "
-"Byte (B<--memlimit-mt-decompress>). Dies ist niemals B<0>, da ein "
-"systemspezifischer Vorgabewert (gezeigt in Spalte 5) verwendet wird, falls "
-"keine Grenze ausdrücklich angegeben wurde. Dies ist außerdem niemals größer "
-"als der Wert in in Spalte 3, selbst wenn mit B<--memlimit-mt-decompress> ein "
-"größerer Wert angegeben wurde."
-
-#. type: IP
-#: ../src/xz/xz.1:2036 ../src/xz/xz.1:2131 ../src/xz/xz.1:2168
-#: ../src/xz/xz.1:2195 ../src/xz/xz.1:2291
-#, no-wrap
-msgid "5."
-msgstr "5."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2048
-msgid ""
-"Since B<xz> 5.3.4alpha: A system-specific default memory usage limit that is "
-"used to limit the number of threads when compressing with an automatic "
-"number of threads (B<--threads=0>) and no memory usage limit has been "
-"specified (B<--memlimit-compress>). This is also used as the default value "
-"for B<--memlimit-mt-decompress>."
-msgstr ""
-"Seit B<xz> 5.3.4alpha: Eine systemspezifisch vorgegebene Begrenzung des "
-"Speicherverbrauchs, die zur Begrenzung der Anzahl der Threads beim "
-"Komprimieren mit automatischer Anzahl der Threads (B<--threads=0>) und wenn "
-"keine Speicherbedarfsbegrenzung angegeben wurde (B<--memlimit-compress>) "
-"verwendet wird. Dies wird auch als Standardwert für B<--memlimit-mt-"
-"decompress> verwendet."
-
-#. type: IP
-#: ../src/xz/xz.1:2048 ../src/xz/xz.1:2133 ../src/xz/xz.1:2170
-#: ../src/xz/xz.1:2197 ../src/xz/xz.1:2293
-#, no-wrap
-msgid "6."
-msgstr "6."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2053
-msgid "Since B<xz> 5.3.4alpha: Number of available processor threads."
-msgstr "Seit B<xz> 5.3.4alpha: Anzahl der verfügbaren Prozessorthreads."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2057
-msgid ""
-"In the future, the output of B<xz --robot --info-memory> may have more "
-"columns, but never more than a single line."
-msgstr ""
-"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:2058
+#: ../src/xz/xz.1
#, no-wrap
msgid "List mode"
msgstr "Listenmodus"
#. type: Plain text
-#: ../src/xz/xz.1:2063
-msgid ""
-"B<xz --robot --list> uses tab-separated output. The first column of every "
-"line has a string that indicates the type of the information found on that "
-"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:"
+#: ../src/xz/xz.1
+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:2063
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<name>"
msgstr "B<name>"
#. type: Plain text
-#: ../src/xz/xz.1:2067
-msgid ""
-"This is always the first line when starting to list a file. The second "
-"column on the line is the filename."
-msgstr ""
-"Dies ist stets die erste Zeile, wenn eine Datei aufgelistet wird. Die zweite "
-"Spalte in der Zeile enthält den Dateinamen."
+#: ../src/xz/xz.1
+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:2067
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<file>"
msgstr "B<file>"
# CHECK overall
#. type: Plain text
-#: ../src/xz/xz.1:2075
-msgid ""
-"This line contains overall information about the B<.xz> file. This line is "
-"always printed after the B<name> line."
-msgstr ""
-"Diese Zeile enthält allgemeine Informationen zur B<.xz>-Datei. Diese Zeile "
-"wird stets nach der B<name>-Zeile ausgegeben."
+#: ../src/xz/xz.1
+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:2075
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<stream>"
msgstr "B<stream>"
#. type: Plain text
-#: ../src/xz/xz.1:2085
-msgid ""
-"This line type is used only when B<--verbose> was specified. There are as "
-"many B<stream> lines as there are streams in the B<.xz> file."
-msgstr ""
-"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."
+#: ../src/xz/xz.1
+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:2085
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<block>"
msgstr "B<block>"
#. type: Plain text
-#: ../src/xz/xz.1:2100
-msgid ""
-"This line type is used only when B<--verbose> was specified. There are as "
-"many B<block> lines as there are blocks in the B<.xz> file. The B<block> "
-"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."
+#: ../src/xz/xz.1
+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:2100
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<summary>"
msgstr "B<summary>"
#. type: Plain text
-#: ../src/xz/xz.1:2115
-msgid ""
-"This line type is used only when B<--verbose> was specified twice. This "
-"line is printed after all B<block> lines. Like the B<file> line, the "
-"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."
+#: ../src/xz/xz.1
+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:2115
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<totals>"
msgstr "B<totals>"
#. type: Plain text
-#: ../src/xz/xz.1:2119
-msgid ""
-"This line is always the very last line of the list output. It shows the "
-"total counts and sizes."
-msgstr ""
-"Diese Zeile ist immer die letzte der Listenausgabe. Sie zeigt die "
-"Gesamtanzahlen und -größen an."
+#: ../src/xz/xz.1
+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:2123
+#: ../src/xz/xz.1
msgid "The columns of the B<file> lines:"
msgstr "Die Spalten der B<file>-Zeilen:"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "2."
+msgstr "2."
+
#. type: Plain text
-#: ../src/xz/xz.1:2127
+#: ../src/xz/xz.1
msgid "Number of streams in the file"
msgstr "Anzahl der Datenströme in der Datei"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "3."
+msgstr "3."
+
#. type: Plain text
-#: ../src/xz/xz.1:2129
+#: ../src/xz/xz.1
msgid "Total number of blocks in the stream(s)"
msgstr "Gesamtanzahl der Blöcke in den Datenströmen"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "4."
+msgstr "4."
+
#. type: Plain text
-#: ../src/xz/xz.1:2131
+#: ../src/xz/xz.1
msgid "Compressed size of the file"
msgstr "Komprimierte Größe der Datei"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "5."
+msgstr "5."
+
#. type: Plain text
-#: ../src/xz/xz.1:2133
+#: ../src/xz/xz.1
msgid "Uncompressed size of the file"
msgstr "Unkomprimierte Größe der Datei"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "6."
+msgstr "6."
+
#. type: Plain text
-#: ../src/xz/xz.1:2139
-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."
+#: ../src/xz/xz.1
+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:2139 ../src/xz/xz.1:2172 ../src/xz/xz.1:2199
-#: ../src/xz/xz.1:2295
+#: ../src/xz/xz.1
#, no-wrap
msgid "7."
msgstr "7."
#. type: Plain text
-#: ../src/xz/xz.1:2152
-msgid ""
-"Comma-separated list of integrity check names. The following strings are "
-"used for the known check types: B<None>, B<CRC32>, B<CRC64>, and "
-"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)."
+#: ../src/xz/xz.1
+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:2152 ../src/xz/xz.1:2174 ../src/xz/xz.1:2201
-#: ../src/xz/xz.1:2298
+#: ../src/xz/xz.1
#, no-wrap
msgid "8."
msgstr "8."
#. type: Plain text
-#: ../src/xz/xz.1:2154
+#: ../src/xz/xz.1
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:2160
+#: ../src/xz/xz.1
msgid "The columns of the B<stream> lines:"
msgstr "Die Spalten der B<stream>-Zeilen:"
#. type: Plain text
-#: ../src/xz/xz.1:2164
+#: ../src/xz/xz.1
msgid "Stream number (the first stream is 1)"
msgstr "Datenstromnummer (der erste Datenstrom ist 1)"
#. type: Plain text
-#: ../src/xz/xz.1:2166
+#: ../src/xz/xz.1
msgid "Number of blocks in the stream"
msgstr "Anzahl der Blöcke im Datenstrom"
#. type: Plain text
-#: ../src/xz/xz.1:2168
+#: ../src/xz/xz.1
msgid "Compressed start offset"
msgstr "Komprimierte Startposition"
#. type: Plain text
-#: ../src/xz/xz.1:2170
+#: ../src/xz/xz.1
msgid "Uncompressed start offset"
msgstr "Unkomprimierte Startposition"
#. type: Plain text
-#: ../src/xz/xz.1:2172
+#: ../src/xz/xz.1
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:2174 ../src/xz/xz.1:2203 ../src/xz/xz.1:2293
+#: ../src/xz/xz.1
msgid "Uncompressed size"
msgstr "Unkomprimierte Größe"
#. type: Plain text
-#: ../src/xz/xz.1:2176 ../src/xz/xz.1:2205
+#: ../src/xz/xz.1
msgid "Compression ratio"
msgstr "Kompressionsverhältnis"
#. type: IP
-#: ../src/xz/xz.1:2176 ../src/xz/xz.1:2203 ../src/xz/xz.1:2300
+#: ../src/xz/xz.1
#, no-wrap
msgid "9."
msgstr "9."
#. type: Plain text
-#: ../src/xz/xz.1:2178 ../src/xz/xz.1:2207
+#: ../src/xz/xz.1
msgid "Name of the integrity check"
msgstr "Name der Integritätsprüfung"
#. type: IP
-#: ../src/xz/xz.1:2178 ../src/xz/xz.1:2205 ../src/xz/xz.1:2316
+#: ../src/xz/xz.1
#, no-wrap
msgid "10."
msgstr "10."
#. type: Plain text
-#: ../src/xz/xz.1:2180
+#: ../src/xz/xz.1
msgid "Size of stream padding"
msgstr "Größe der Datenstromauffüllung"
#. type: Plain text
-#: ../src/xz/xz.1:2186
+#: ../src/xz/xz.1
msgid "The columns of the B<block> lines:"
msgstr "Die Spalten der B<block>-Zeilen:"
#. type: Plain text
-#: ../src/xz/xz.1:2190
+#: ../src/xz/xz.1
msgid "Number of the stream containing this block"
msgstr "Anzahl der in diesem Block enthaltenen Datenströme"
#. type: Plain text
-#: ../src/xz/xz.1:2193
-msgid ""
-"Block number relative to the beginning of the stream (the first block is 1)"
+#: ../src/xz/xz.1
+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:2195
+#: ../src/xz/xz.1
msgid "Block number relative to the beginning of the file"
msgstr "Blocknummer relativ zum Anfang der Datei"
#. type: Plain text
-#: ../src/xz/xz.1:2197
+#: ../src/xz/xz.1
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:2199
+#: ../src/xz/xz.1
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:2201
+#: ../src/xz/xz.1
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:2219
-msgid ""
-"If B<--verbose> was specified twice, additional columns are included on the "
-"B<block> lines. These are not displayed with a single B<--verbose>, because "
-"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:"
+#: ../src/xz/xz.1
+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:2221 ../src/xz/xz.1:2321
+#: ../src/xz/xz.1
#, no-wrap
msgid "11."
msgstr "11."
#. type: Plain text
-#: ../src/xz/xz.1:2223
+#: ../src/xz/xz.1
msgid "Value of the integrity check in hexadecimal"
msgstr "Wert der Integritätsprüfung in hexadezimaler Notation"
#. type: IP
-#: ../src/xz/xz.1:2223 ../src/xz/xz.1:2331
+#: ../src/xz/xz.1
#, no-wrap
msgid "12."
msgstr "12."
#. type: Plain text
-#: ../src/xz/xz.1:2225
+#: ../src/xz/xz.1
msgid "Block header size"
msgstr "Block-Header-Größe"
#. type: IP
-#: ../src/xz/xz.1:2225
+#: ../src/xz/xz.1
#, no-wrap
msgid "13."
msgstr "13."
#. type: Plain text
-#: ../src/xz/xz.1:2235
-msgid ""
-"Block flags: B<c> indicates that compressed size is present, and B<u> "
-"indicates that uncompressed size is present. If the flag is not set, a dash "
-"(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."
+#: ../src/xz/xz.1
+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:2235
+#: ../src/xz/xz.1
#, no-wrap
msgid "14."
msgstr "14."
#. type: Plain text
-#: ../src/xz/xz.1:2238
-msgid ""
-"Size of the actual compressed data in the block (this excludes the block "
-"header, block padding, and check fields)"
-msgstr ""
-"Größe der tatsächlichen komprimierten Daten im Block. Ausgeschlossen sind "
-"hierbei die Block-Header, die Blockauffüllung und die Prüffelder."
+#: ../src/xz/xz.1
+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:2238
+#: ../src/xz/xz.1
#, no-wrap
msgid "15."
msgstr "15."
#. type: Plain text
-#: ../src/xz/xz.1:2243
-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."
+#: ../src/xz/xz.1
+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:2243
+#: ../src/xz/xz.1
#, no-wrap
msgid "16."
msgstr "16."
#. type: Plain text
-#: ../src/xz/xz.1:2250
-msgid ""
-"Filter chain. Note that most of the options used at compression time cannot "
-"be known, because only the options that are needed for decompression are "
-"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."
+#: ../src/xz/xz.1
+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:2256
+#: ../src/xz/xz.1
msgid "The columns of the B<summary> lines:"
msgstr "Die Spalten der B<summary>-Zeilen:"
#. type: Plain text
-#: ../src/xz/xz.1:2263
-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."
+#: ../src/xz/xz.1
+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:2269 ../src/xz/xz.1:2327
-msgid ""
-"B<yes> or B<no> indicating if all block headers have both compressed size "
-"and uncompressed size stored in them"
-msgstr ""
-"B<yes> oder B<no> geben an, ob in allen Block-Headern sowohl die "
-"komprimierte als auch die unkomprimierte Größe gespeichert ist."
+#: ../src/xz/xz.1
+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:2273 ../src/xz/xz.1:2331
+#: ../src/xz/xz.1
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:2277 ../src/xz/xz.1:2335
+#: ../src/xz/xz.1
msgid "Minimum B<xz> version required to decompress the file"
-msgstr ""
-"Minimale B<xz>-Version, die zur Dekompression der Datei erforderlich ist"
+msgstr "Minimale B<xz>-Version, die zur Dekompression der Datei erforderlich ist"
#. type: Plain text
-#: ../src/xz/xz.1:2283
+#: ../src/xz/xz.1
msgid "The columns of the B<totals> line:"
msgstr "Die Spalten der B<totals>-Zeile:"
#. type: Plain text
-#: ../src/xz/xz.1:2287
+#: ../src/xz/xz.1
msgid "Number of streams"
msgstr "Anzahl der Datenströme"
#. type: Plain text
-#: ../src/xz/xz.1:2289
+#: ../src/xz/xz.1
msgid "Number of blocks"
msgstr "Anzahl der Blöcke"
#. type: Plain text
-#: ../src/xz/xz.1:2291
+#: ../src/xz/xz.1
msgid "Compressed size"
msgstr "Komprimierte Größe"
#. type: Plain text
-#: ../src/xz/xz.1:2295
+#: ../src/xz/xz.1
msgid "Average compression ratio"
msgstr "Durchschnittliches Kompressionsverhältnis"
#. type: Plain text
-#: ../src/xz/xz.1:2298
-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."
+#: ../src/xz/xz.1
+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:2300
+#: ../src/xz/xz.1
msgid "Stream padding size"
msgstr "Größe der Datenstromauffüllung"
#. type: Plain text
-#: ../src/xz/xz.1:2306
-msgid ""
-"Number of files. This is here to keep the order of the earlier columns the "
-"same as on B<file> lines."
-msgstr ""
-"Anzahl der Dateien. Dies dient dazu, die Reihenfolge der vorigen Spalten an "
-"die in den B<file>-Zeilen anzugleichen."
+#: ../src/xz/xz.1
+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:2314
-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:"
+#: ../src/xz/xz.1
+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:2321
-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."
+#: ../src/xz/xz.1
+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:2341
-msgid ""
-"Future versions may add new line types and new columns can be added to the "
-"existing line types, but the existing columns won't be changed."
-msgstr ""
-"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."
+#: ../src/xz/xz.1
+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: SS
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "Filters help"
+msgstr "Filterhilfe"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<xz --robot --filters-help> prints the supported filters in the following format:"
+msgstr "B<xz --robot --filters-help> gibt die unterstützten Filter im folgenden Format aus:"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "I<filter>B<:>I<option>B<=E<lt>>I<value>B<E<gt>,>I<option>B<=E<lt>>I<value>B<E<gt>>..."
+msgstr "I<Filter>B<:>I<Option>B<=E<lt>>I<Wert>B<E<gt>,>I<Option>B<=E<lt>>I<Wert>B<E<gt>> …"
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<filter>"
+msgstr "I<Filter>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Name of the filter"
+msgstr "Name des Filters"
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<option>"
+msgstr "I<Option>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Name of a filter specific option"
+msgstr "Name der filterspezifischen Option"
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<value>"
+msgstr "I<Wert>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Numeric I<value> ranges appear as B<E<lt>>I<min>B<->I<max>B<E<gt>>. String I<value> choices are shown within B<E<lt> E<gt>> and separated by a B<|> character."
+msgstr "Der numerische I<Wert> erscheint als Bereich B<E<lt>>I<Minimum>B<->I<Maximum>B<E<gt>>. Die Auswahl des Zeichenketten-I<Wert>s wird in B<E<lt> E<gt>> eingeschlossen und durch B<|> getrennt."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Each filter is printed on its own line."
+msgstr "Jeder Filter wird in einer separaten Zeile ausgegeben."
+
+#. type: SS
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "Memory limit information"
+msgstr "Informationen zur Speicherbedarfsbegrenzung"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<xz --robot --info-memory> prints a single line with multiple tab-separated columns:"
+msgstr "B<xz --robot --info-memory> gibt eine einzelne Zeile mit mehreren durch Tabulatoren getrennten Spalten aus:"
+
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "1."
+msgstr "1."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Total amount of physical memory (RAM) in bytes."
+msgstr "Gesamter physischer Speicher (RAM) in Byte."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Memory usage limit for compression in bytes (B<--memlimit-compress>). A special value of B<0> indicates the default setting which for single-threaded mode is the same as no limit."
+msgstr "Speicherbedarfsbegrenzung für die Kompression in Byte (B<--memlimit-compress>). Ein spezieller Wert von B<0> bezeichnet die Standardeinstellung, die im Einzelthread-Modus bedeutet, dass keine Begrenzung vorhanden ist."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Memory usage limit for decompression in bytes (B<--memlimit-decompress>). A special value of B<0> indicates the default setting which for single-threaded mode is the same as no limit."
+msgstr "Speicherbedarfsbegrenzung für die Dekompression in Byte (B<--memlimit-decompress>). Ein spezieller Wert von B<0> bezeichnet die Standardeinstellung, die im Einzelthread-Modus bedeutet, dass keine Begrenzung vorhanden ist."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.3.4alpha: Memory usage for multi-threaded decompression in bytes (B<--memlimit-mt-decompress>). This is never zero because a system-specific default value shown in the column 5 is used if no limit has been specified explicitly. This is also never greater than the value in the column 3 even if a larger value has been specified with B<--memlimit-mt-decompress>."
+msgstr "Seit B<xz> 5.3.4alpha: Die Speichernutzung für Multithread-Dekompression in Byte (B<--memlimit-mt-decompress>). Dies ist niemals B<0>, da ein systemspezifischer Vorgabewert (gezeigt in Spalte 5) verwendet wird, falls keine Grenze ausdrücklich angegeben wurde. Dies ist außerdem niemals größer als der Wert in in Spalte 3, selbst wenn mit B<--memlimit-mt-decompress> ein größerer Wert angegeben wurde."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.3.4alpha: A system-specific default memory usage limit that is used to limit the number of threads when compressing with an automatic number of threads (B<--threads=0>) and no memory usage limit has been specified (B<--memlimit-compress>). This is also used as the default value for B<--memlimit-mt-decompress>."
+msgstr "Seit B<xz> 5.3.4alpha: Eine systemspezifisch vorgegebene Begrenzung des Speicherverbrauchs, die zur Begrenzung der Anzahl der Threads beim Komprimieren mit automatischer Anzahl der Threads (B<--threads=0>) und wenn keine Speicherbedarfsbegrenzung angegeben wurde (B<--memlimit-compress>) verwendet wird. Dies wird auch als Standardwert für B<--memlimit-mt-decompress> verwendet."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.3.4alpha: Number of available processor threads."
+msgstr "Seit B<xz> 5.3.4alpha: Anzahl der verfügbaren Prozessorthreads."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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
+#, no-wrap
+msgid "Version"
+msgstr "Version"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<xz --robot --version> prints 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
+msgid "B<XZ_VERSION=>I<XYYYZZZS>"
+msgstr "B<XZ_VERSION=>I<XYYYZZZS>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
+msgstr "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<X>"
+msgstr "I<X>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Major version."
+msgstr "Hauptversion."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<YYY>"
+msgstr "I<YYY>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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
+#, no-wrap
+msgid "I<ZZZ>"
+msgstr "I<ZZZ>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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
+#, no-wrap
+msgid "I<S>"
+msgstr "I<S>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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
+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
+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: SH
-#: ../src/xz/xz.1:2342 ../src/xzdec/xzdec.1:104 ../src/lzmainfo/lzmainfo.1:44
-#: ../src/scripts/xzgrep.1:81
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1
#, no-wrap
msgid "EXIT STATUS"
msgstr "EXIT-STATUS"
#. type: TP
-#: ../src/xz/xz.1:2343 ../src/xzdec/xzdec.1:105 ../src/lzmainfo/lzmainfo.1:45
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "B<0>"
msgstr "B<0>"
#. type: Plain text
-#: ../src/xz/xz.1:2346 ../src/lzmainfo/lzmainfo.1:48
+#: ../src/xz/xz.1 ../src/lzmainfo/lzmainfo.1
msgid "All is good."
msgstr "Alles ist in Ordnung."
#. type: TP
-#: ../src/xz/xz.1:2346 ../src/xzdec/xzdec.1:108 ../src/lzmainfo/lzmainfo.1:48
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "B<1>"
msgstr "B<1>"
#. type: Plain text
-#: ../src/xz/xz.1:2349 ../src/xzdec/xzdec.1:111 ../src/lzmainfo/lzmainfo.1:51
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
msgid "An error occurred."
msgstr "Ein Fehler ist aufgetreten."
#. type: TP
-#: ../src/xz/xz.1:2349
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<2>"
msgstr "B<2>"
#. type: Plain text
-#: ../src/xz/xz.1:2353
+#: ../src/xz/xz.1
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."
+msgstr "Es ist etwas passiert, das eine Warnung rechtfertigt, aber es sind keine tatsächlichen Fehler aufgetreten."
#. type: Plain text
-#: ../src/xz/xz.1:2356
-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."
+#: ../src/xz/xz.1
+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:2357 ../src/scripts/xzgrep.1:94 ../src/scripts/xzless.1:52
+#: ../src/xz/xz.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "ENVIRONMENT"
msgstr "UMGEBUNGSVARIABLEN"
#. type: Plain text
-#: ../src/xz/xz.1:2370
-msgid ""
-"B<xz> parses space-separated lists of options from the environment variables "
-"B<XZ_DEFAULTS> and B<XZ_OPT>, in this order, before parsing the options from "
-"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."
+#: ../src/xz/xz.1
+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:2370
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<XZ_DEFAULTS>"
msgstr "B<XZ_DEFAULTS>"
#. type: Plain text
-#: ../src/xz/xz.1:2379
-msgid ""
-"User-specific or system-wide default options. Typically this is set in a "
-"shell initialization script to enable B<xz>'s memory usage limiter by "
-"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."
+#: ../src/xz/xz.1
+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:2379
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<XZ_OPT>"
msgstr "B<XZ_OPT>"
#. type: Plain text
-#: ../src/xz/xz.1:2390
-msgid ""
-"This is for passing options to B<xz> when it is not possible to set the "
-"options directly on the B<xz> command line. This is the case when B<xz> is "
-"run by a script or tool, for example, GNU B<tar>(1):"
-msgstr ""
-"Dies dient der Übergabe von Optionen an B<xz>, wenn es nicht möglich ist, "
-"die Optionen direkt in der Befehlszeile von B<xz> zu übergeben. Dies ist der "
-"Fall, wenn B<xz> von einem Skript oder Dienstprogramm ausgeführt wird, zum "
-"Beispiel GNU B<tar>(1):"
+#: ../src/xz/xz.1
+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 when B<xz> is run by a script or tool, for example, GNU B<tar>(1):"
+msgstr "Dies dient der Übergabe von Optionen an B<xz>, wenn es nicht möglich ist, die Optionen direkt in der Befehlszeile von B<xz> zu übergeben. Dies ist 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:2396
-#, no-wrap
-msgid "CW<XZ_OPT=-2v tar caf foo.tar.xz foo>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<XZ_OPT=-2v tar caf foo.tar.xz foo>\n"
+msgid "\\f(CRXZ_OPT=-2v tar caf foo.tar.xz foo\\fR\n"
msgstr "CW<XZ_OPT=-2v tar caf foo.tar.xz foo>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2410
-msgid ""
-"Scripts may use B<XZ_OPT>, for example, to set script-specific default "
-"compression options. It is still recommended to allow users to override "
-"B<XZ_OPT> if that is reasonable. For example, in B<sh>(1) scripts one may "
-"use something like this:"
-msgstr ""
-"Skripte können B<XZ_OPT> zum Beispiel zum Setzen skriptspezifischer Standard-"
-"Kompressionsoptionen verwenden. Es ist weiterhin empfehlenswert, Benutzern "
-"die Außerkraftsetzung von B<XZ_OPT> zu erlauben, falls dies angemessen ist. "
-"Zum Beispiel könnte in B<sh>(1)-Skripten Folgendes stehen:"
+#: ../src/xz/xz.1
+msgid "Scripts may use B<XZ_OPT>, for example, to set script-specific default compression options. It is still recommended to allow users to override B<XZ_OPT> if that is reasonable. For example, in B<sh>(1) scripts one may use something like this:"
+msgstr "Skripte können B<XZ_OPT> zum Beispiel zum Setzen skriptspezifischer Standard-Kompressionsoptionen verwenden. Es ist weiterhin empfehlenswert, Benutzern 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:2417
-#, no-wrap
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid ""
+#| "CW<XZ_OPT=${XZ_OPT-\"-7e\"}\n"
+#| "export XZ_OPT>\n"
msgid ""
-"CW<XZ_OPT=${XZ_OPT-\"-7e\"}\n"
-"export XZ_OPT>\n"
+"\\f(CRXZ_OPT=${XZ_OPT-\"-7e\"}\n"
+"export XZ_OPT\\fR\n"
msgstr ""
"CW<XZ_OPT=${XZ_OPT-\"-7e\"}\n"
"export XZ_OPT>\n"
#. type: SH
-#: ../src/xz/xz.1:2422
+#: ../src/xz/xz.1
#, no-wrap
msgid "LZMA UTILS COMPATIBILITY"
msgstr "KOMPATIBILITÄT ZU DEN LZMA-UTILS"
#. type: Plain text
-#: ../src/xz/xz.1:2435
-msgid ""
-"The command line syntax of B<xz> is practically a superset of B<lzma>, "
-"B<unlzma>, and B<lzcat> as found from LZMA Utils 4.32.x. In most cases, it "
-"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."
+#: ../src/xz/xz.1
+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:2436
+#: ../src/xz/xz.1
#, no-wrap
msgid "Compression preset levels"
msgstr "Voreinstellungsstufen zur Kompression"
#. type: Plain text
-#: ../src/xz/xz.1:2443
-msgid ""
-"The numbering of the compression level presets is not identical in B<xz> and "
-"LZMA Utils. The most important difference is how dictionary sizes are "
-"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."
+#: ../src/xz/xz.1
+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:2449 ../src/xz/xz.1:2474
+#: ../src/xz/xz.1
#, no-wrap
msgid "Level"
msgstr "Stufe"
#. type: tbl table
-#: ../src/xz/xz.1:2449 ../src/xz/xz.1:2474
+#: ../src/xz/xz.1
#, no-wrap
msgid "xz"
msgstr "xz"
#. type: tbl table
-#: ../src/xz/xz.1:2449
+#: ../src/xz/xz.1
#, no-wrap
msgid "LZMA Utils"
msgstr "LZMA-Utils"
#. type: tbl table
-#: ../src/xz/xz.1:2450 ../src/xz/xz.1:2475
+#: ../src/xz/xz.1
#, no-wrap
msgid "N/A"
msgstr "nicht verfügbar"
#. type: tbl table
-#: ../src/xz/xz.1:2451
+#: ../src/xz/xz.1
#, no-wrap
msgid "64 KiB"
msgstr "64 KiB"
#. type: tbl table
-#: ../src/xz/xz.1:2453
+#: ../src/xz/xz.1
#, no-wrap
msgid "512 KiB"
msgstr "512 KiB"
#. type: Plain text
-#: ../src/xz/xz.1:2468
-msgid ""
-"The dictionary size differences affect the compressor memory usage too, but "
-"there are some other differences between LZMA Utils and XZ Utils, which make "
-"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:"
+#: ../src/xz/xz.1
+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:2474
+#: ../src/xz/xz.1
#, no-wrap
msgid "LZMA Utils 4.32.x"
msgstr "LZMA-Utils 4.32.x"
#. type: tbl table
-#: ../src/xz/xz.1:2477 ../src/xz/xz.1:2478
+#: ../src/xz/xz.1
#, no-wrap
msgid "12 MiB"
msgstr "12 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:2480
+#: ../src/xz/xz.1
#, no-wrap
msgid "26 MiB"
msgstr "26 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:2481
+#: ../src/xz/xz.1
#, no-wrap
msgid "45 MiB"
msgstr "45 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:2482
+#: ../src/xz/xz.1
#, no-wrap
msgid "83 MiB"
msgstr "83 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:2483
+#: ../src/xz/xz.1
#, no-wrap
msgid "159 MiB"
msgstr "159 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:2484
+#: ../src/xz/xz.1
#, no-wrap
msgid "311 MiB"
msgstr "311 MiB"
#. type: Plain text
-#: ../src/xz/xz.1:2493
-msgid ""
-"The default preset level in LZMA Utils is B<-7> while in XZ Utils it is "
-"B<-6>, so both use an 8 MiB dictionary by default."
-msgstr ""
-"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."
+#: ../src/xz/xz.1
+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:2494
+#: ../src/xz/xz.1
#, 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:2504
-msgid ""
-"The uncompressed size of the file can be stored in the B<.lzma> header. "
-"LZMA Utils does that when compressing regular files. The alternative is to "
-"mark that uncompressed size is unknown and use end-of-payload marker to "
-"indicate where the decompressor should stop. LZMA Utils uses this method "
-"when uncompressed size isn't known, which is the case, for example, in pipes."
-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."
+#: ../src/xz/xz.1
+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:2525
-msgid ""
-"B<xz> supports decompressing B<.lzma> files with or without end-of-payload "
-"marker, but all B<.lzma> files created by B<xz> will use end-of-payload "
-"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."
+#: ../src/xz/xz.1
+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:2526
+#: ../src/xz/xz.1
#, no-wrap
msgid "Unsupported .lzma files"
msgstr "Nicht unterstützte .lzma-Dateien"
#. type: Plain text
-#: ../src/xz/xz.1:2549
-msgid ""
-"The B<.lzma> format allows I<lc> values up to 8, and I<lp> values up to 4. "
-"LZMA Utils can decompress files with any I<lc> and I<lp>, but always creates "
-"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."
+#: ../src/xz/xz.1
+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:2560
-msgid ""
-"The implementation of the LZMA1 filter in liblzma requires that the sum of "
-"I<lc> and I<lp> must not exceed 4. Thus, B<.lzma> files, which exceed this "
-"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."
+#: ../src/xz/xz.1
+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:2575
-msgid ""
-"LZMA Utils creates only B<.lzma> files which have a dictionary size of "
-"2^I<n> (a power of 2) but accepts files with any dictionary size. liblzma "
-"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."
+#: ../src/xz/xz.1
+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:2580
-msgid ""
-"These limitations shouldn't be a problem in practice, since practically all "
-"B<.lzma> files have been compressed with settings that liblzma will accept."
-msgstr ""
-"Diese Einschränkungen sollten in der Praxis kein Problem sein, da praktisch "
-"alle B<.lzma>-Dateien mit Einstellungen komprimiert wurden, die Liblzma "
-"akzeptieren wird."
+#: ../src/xz/xz.1
+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:2581
+#: ../src/xz/xz.1
#, no-wrap
msgid "Trailing garbage"
msgstr "Angehängter Datenmüll"
#. type: Plain text
-#: ../src/xz/xz.1:2591
-msgid ""
-"When decompressing, LZMA Utils silently ignore everything after the first B<."
-"lzma> stream. In most situations, this is a bug. This also means that LZMA "
-"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."
+#: ../src/xz/xz.1
+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:2601
-msgid ""
-"If there is data left after the first B<.lzma> stream, B<xz> considers the "
-"file to be corrupt unless B<--single-stream> was used. This may break "
-"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."
+#: ../src/xz/xz.1
+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:2602 ../src/xzdec/xzdec.1:117
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "NOTES"
msgstr "ANMERKUNGEN"
#. type: SS
-#: ../src/xz/xz.1:2604
+#: ../src/xz/xz.1
#, no-wrap
msgid "Compressed output may vary"
msgstr "Die komprimierte Ausgabe kann variieren"
#. type: Plain text
-#: ../src/xz/xz.1:2615
-msgid ""
-"The exact compressed output produced from the same uncompressed input file "
-"may vary between XZ Utils versions even if compression options are "
-"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."
+#: ../src/xz/xz.1
+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:2625
-msgid ""
-"The above means that once B<--rsyncable> has been implemented, the resulting "
-"files won't necessarily be rsyncable unless both old and new files have been "
-"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."
+#: ../src/xz/xz.1
+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:2626
+#: ../src/xz/xz.1
#, no-wrap
msgid "Embedded .xz decompressors"
msgstr "Eingebettete .xz-Dekompressoren"
#. type: Plain text
-#: ../src/xz/xz.1:2643
-msgid ""
-"Embedded B<.xz> decompressor implementations like XZ Embedded don't "
-"necessarily support files created with integrity I<check> types other than "
-"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."
+#: ../src/xz/xz.1
+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:2653
-msgid ""
-"Outside embedded systems, all B<.xz> format decompressors support all the "
-"I<check> types, or at least are able to decompress the file without "
-"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."
+#: ../src/xz/xz.1
+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:2656
-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."
+#: ../src/xz/xz.1
+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:2657
+#: ../src/xz/xz.1
#, no-wrap
msgid "EXAMPLES"
msgstr "BEISPIELE"
#. type: SS
-#: ../src/xz/xz.1:2659
+#: ../src/xz/xz.1
#, no-wrap
msgid "Basics"
msgstr "Grundlagen"
#. type: Plain text
-#: ../src/xz/xz.1:2669
-msgid ""
-"Compress the file I<foo> into I<foo.xz> using the default compression level "
-"(B<-6>), and remove I<foo> if compression is successful:"
-msgstr ""
-"Komprimiert die Datei I<foo> mit der Standard-Kompressionsstufe (B<-6>) zu "
-"I<foo.xz> und entfernt I<foo> nach erfolgreicher Kompression:"
+#: ../src/xz/xz.1
+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:2674
-#, no-wrap
-msgid "CW<xz foo>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz foo>\n"
+msgid "\\f(CRxz foo\\fR\n"
msgstr "CW<xz foo>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2685
-msgid ""
-"Decompress I<bar.xz> into I<bar> and don't remove I<bar.xz> even if "
-"decompression is successful:"
-msgstr ""
-"I<bar.xz> in I<bar> dekomprimieren und I<bar.xz> selbst dann nicht löschen, "
-"wenn die Dekompression erfolgreich war:"
+#: ../src/xz/xz.1
+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:2690
-#, no-wrap
-msgid "CW<xz -dk bar.xz>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz -dk bar.xz>\n"
+msgid "\\f(CRxz -dk bar.xz\\fR\n"
msgstr "CW<xz -dk bar.xz>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2703
-msgid ""
-"Create I<baz.tar.xz> with the preset B<-4e> (B<-4 --extreme>), which is "
-"slower than the default B<-6>, but needs less memory for compression and "
-"decompression (48\\ MiB and 5\\ MiB, respectively):"
-msgstr ""
-"I<baz.tar.xz> mit der Voreinstellung B<-4e> (B<-4 --extreme>) erzeugen, was "
-"langsamer ist als die Vorgabe B<-6>, aber weniger Speicher für Kompression "
-"und Dekompression benötigt (48\\ MiB beziehungsweise 5\\ MiB):"
+#: ../src/xz/xz.1
+msgid "Create I<baz.tar.xz> with the preset B<-4e> (B<-4 --extreme>), which is slower than the default B<-6>, but needs less memory for compression and decompression (48\\ MiB and 5\\ MiB, respectively):"
+msgstr "I<baz.tar.xz> mit der Voreinstellung B<-4e> (B<-4 --extreme>) erzeugen, was langsamer ist als 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:2708
-#, no-wrap
-msgid "CW<tar cf - baz | xz -4e E<gt> baz.tar.xz>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<tar cf - baz | xz -4e E<gt> baz.tar.xz>\n"
+msgid "\\f(CRtar cf - baz | xz -4e E<gt> baz.tar.xz\\fR\n"
msgstr "CW<tar cf - baz | xz -4e E<gt> baz.tar.xz>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2714
-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:"
+#: ../src/xz/xz.1
+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:2719
-#, no-wrap
-msgid "CW<xz -dcf a.txt b.txt.xz c.txt d.txt.lzma E<gt> abcd.txt>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz -dcf a.txt b.txt.xz c.txt d.txt.lzma E<gt> abcd.txt>\n"
+msgid "\\f(CRxz -dcf a.txt b.txt.xz c.txt d.txt.lzma E<gt> abcd.txt\\fR\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:2723
+#: ../src/xz/xz.1
#, no-wrap
msgid "Parallel compression of many files"
msgstr "Parallele Kompression von vielen Dateien"
#. type: Plain text
-#: ../src/xz/xz.1:2729
-msgid ""
-"On GNU and *BSD, B<find>(1) and B<xargs>(1) can be used to parallelize "
-"compression of many files:"
-msgstr ""
-"Auf GNU- und *BSD-Systemen können B<find>(1) und B<xargs>(1) zum "
-"Parallelisieren der Kompression vieler Dateien verwendet werden:"
+#: ../src/xz/xz.1
+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:2735
-#, no-wrap
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid ""
+#| "CW<find . -type f \\e! -name '*.xz' -print0 \\e\n"
+#| " | xargs -0r -P4 -n16 xz -T1>\n"
msgid ""
-"CW<find . -type f \\e! -name '*.xz' -print0 \\e\n"
-" | xargs -0r -P4 -n16 xz -T1>\n"
+"\\f(CRfind . -type f \\e! -name '*.xz' -print0 \\e\n"
+" | xargs -0r -P4 -n16 xz -T1\\fR\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:2757
-msgid ""
-"The B<-P> option to B<xargs>(1) sets the number of parallel B<xz> "
-"processes. The best value for the B<-n> option depends on how many files "
-"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."
+#: ../src/xz/xz.1
+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:2765
-msgid ""
-"The option B<-T1> for B<xz> is there to force it to single-threaded mode, "
-"because B<xargs>(1) is used to control the amount of parallelization."
-msgstr ""
-"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."
+#: ../src/xz/xz.1
+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:2766
+#: ../src/xz/xz.1
#, no-wrap
msgid "Robot mode"
msgstr "Roboter-Modus"
#. type: Plain text
-#: ../src/xz/xz.1:2769
-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:"
+#: ../src/xz/xz.1
+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:2774
-#, no-wrap
-msgid "CW<xz --robot --list *.xz | awk '/^totals/{print $5-$4}'>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --robot --list *.xz | awk '/^totals/{print $5-$4}'>\n"
+msgid "\\f(CRxz --robot --list *.xz | awk '/^totals/{print $5-$4}'\\fR\n"
msgstr "CW<xz --robot --list *.xz | awk '/^totals/{print $5-$4}'>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2789
-msgid ""
-"A script may want to know that it is using new enough B<xz>. The following "
-"B<sh>(1) script checks that the version number of the B<xz> tool is at "
-"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:"
+#: ../src/xz/xz.1
+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:2798
-#, no-wrap
+#: ../src/xz/xz.1
+#, fuzzy, 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"
msgid ""
-"CW<if ! eval \"$(xz --robot --version 2E<gt> /dev/null)\" ||\n"
+"\\f(CRif ! 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"
+"unset XZ_VERSION LIBLZMA_VERSION\\fR\n"
msgstr ""
"CW<if ! eval \"$(xz --robot --version 2E<gt> /dev/null)\" ||\n"
" [ \"$XZ_VERSION\" -lt 50000002 ]; then\n"
@@ -4910,24 +3244,27 @@ msgstr ""
"unset XZ_VERSION LIBLZMA_VERSION>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2805
-msgid ""
-"Set a memory usage limit for decompression using B<XZ_OPT>, but if a limit "
-"has already been set, don't increase it:"
-msgstr ""
-"Eine Speicherbedarfsbegrenzung für die Dekompression mit B<XZ_OPT> setzen, "
-"aber eine bereits gesetzte Begrenzung nicht erhöhen:"
+#: ../src/xz/xz.1
+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:2815
-#, no-wrap
+#: ../src/xz/xz.1
+#, fuzzy, 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"
msgid ""
-"CW<NEWLIM=$((123 E<lt>E<lt> 20))\\ \\ # 123 MiB\n"
+"\\f(CRNEWLIM=$((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"
+"fi\\fR\n"
msgstr ""
"CW<NEWLIM=$((123 E<lt>E<lt> 20))\\ \\ # 123 MiB\n"
"OLDLIM=$(xz --robot --info-memory | cut -f3)\n"
@@ -4937,914 +3274,615 @@ msgstr ""
"fi>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2825
-msgid ""
-"The simplest use for custom filter chains is customizing a LZMA2 preset. "
-"This can be useful, because the presets cover only a subset of the "
-"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."
+#: ../src/xz/xz.1
+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:2833
-msgid ""
-"The CompCPU columns of the tables from the descriptions of the options "
-"B<-0> ... B<-9> and B<--extreme> are useful when customizing LZMA2 presets. "
-"Here 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:"
+#: ../src/xz/xz.1
+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:2858
-msgid ""
-"If you know that a file requires somewhat big dictionary (for example, 32\\ "
-"MiB) to compress well, but you want to compress it quicker than B<xz -8> "
-"would do, a preset with a low CompCPU value (for example, 1) can be "
-"modified to use a bigger dictionary:"
-msgstr ""
-"Wenn Sie wissen, dass eine Datei für eine gute Kompression ein etwas "
-"größeres Wörterbuch benötigt (zum Beispiel 32 MiB), aber Sie sie schneller "
-"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:"
+#: ../src/xz/xz.1
+msgid "If you know that a file requires somewhat big dictionary (for example, 32\\ MiB) to compress well, but you want to compress it quicker than B<xz -8> would do, a preset with a low CompCPU value (for example, 1) can be modified to use a bigger dictionary:"
+msgstr "Wenn Sie wissen, dass eine Datei für eine gute Kompression ein etwas größeres Wörterbuch benötigt (zum Beispiel 32 MiB), aber Sie sie schneller 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:2863
-#, no-wrap
-msgid "CW<xz --lzma2=preset=1,dict=32MiB foo.tar>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --lzma2=preset=1,dict=32MiB foo.tar>\n"
+msgid "\\f(CRxz --lzma2=preset=1,dict=32MiB foo.tar\\fR\n"
msgstr "CW<xz --lzma2=preset=1,dict=32MiB foo.tar>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2879
-msgid ""
-"With certain files, the above command may be faster than B<xz -6> while "
-"compressing significantly better. However, it must be emphasized that only "
-"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:2886
-msgid ""
-"If very high compressor and decompressor memory usage is fine, and the file "
-"being compressed is at least several hundred megabytes, it may be useful to "
-"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:"
+#: ../src/xz/xz.1
+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:2891
-#, no-wrap
-msgid "CW<xz -vv --lzma2=dict=192MiB big_foo.tar>\n"
+#: ../src/xz/xz.1
+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
+#, fuzzy, no-wrap
+#| msgid "CW<xz -vv --lzma2=dict=192MiB big_foo.tar>\n"
+msgid "\\f(CRxz -vv --lzma2=dict=192MiB big_foo.tar\\fR\n"
msgstr "CW<xz -vv --lzma2=dict=192MiB big_foo.tar>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2904
-msgid ""
-"Using B<-vv> (B<--verbose --verbose>) like in the above example can be "
-"useful to see the memory requirements of the compressor and decompressor. "
-"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."
+#: ../src/xz/xz.1
+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:2916
-msgid ""
-"Sometimes the compression time doesn't matter, but the decompressor memory "
-"usage has to be kept low, for example, to make it possible to decompress the "
-"file on an embedded system. The following command uses B<-6e> (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."
+#: ../src/xz/xz.1
+msgid "Sometimes the compression time doesn't matter, but the decompressor memory usage has to be kept low, for example, to make it possible to decompress the file on an embedded system. The following command uses B<-6e> (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:2921
-#, no-wrap
-msgid "CW<xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo>\n"
+msgid "\\f(CRxz --check=crc32 --lzma2=preset=6e,dict=64KiB foo\\fR\n"
msgstr "CW<xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2944
-msgid ""
-"If you want to squeeze out as many bytes as possible, adjusting the number "
-"of literal context bits (I<lc>) and number of position bits (I<pb>) can "
-"sometimes help. Adjusting the number of literal position bits (I<lp>) "
-"might help too, but usually I<lc> and I<pb> are more important. For "
-"example, a source code archive contains mostly US-ASCII text, so something "
-"like the following might give slightly (like 0.1\\ %) smaller file than B<xz "
-"-6e> (try also without B<lc=4>):"
-msgstr ""
-"Wenn Sie so viele Byte wie möglich herausquetschen wollen, kann die "
-"Anpassung der Anzahl der literalen Kontextbits (I<lc>) und der Anzahl der "
-"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>):"
+#: ../src/xz/xz.1
+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. For example, a source code archive contains mostly US-ASCII text, so something like the following might give slightly (like 0.1\\ %) smaller file than B<xz -6e> (try also without B<lc=4>):"
+msgstr "Wenn Sie so viele Byte wie möglich herausquetschen wollen, kann die Anpassung der Anzahl der literalen Kontextbits (I<lc>) und der Anzahl der 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:2949
-#, no-wrap
-msgid "CW<xz --lzma2=preset=6e,pb=0,lc=4 source_code.tar>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --lzma2=preset=6e,pb=0,lc=4 source_code.tar>\n"
+msgid "\\f(CRxz --lzma2=preset=6e,pb=0,lc=4 source_code.tar\\fR\n"
msgstr "CW<xz --lzma2=preset=6e,pb=0,lc=4 Quellcode.tar>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2957
-msgid ""
-"Using another filter together with LZMA2 can improve compression with "
-"certain file types. For example, to compress a x86-32 or x86-64 shared "
-"library using the x86 BCJ filter:"
-msgstr ""
-"Die Verwendung eines anderen Filters mit LZMA2 kann die Kompression bei "
-"verschiedenen Dateitypen verbessern. So könnten Sie eine gemeinsam genutzte "
-"Bibliothek der Architekturen x86-32 oder x86-64 mit dem BCJ-Filter für x86 "
-"komprimieren:"
+#: ../src/xz/xz.1
+msgid "Using another filter together with LZMA2 can improve compression with certain file types. For example, to compress a x86-32 or x86-64 shared library using the x86 BCJ filter:"
+msgstr "Die Verwendung eines anderen Filters mit LZMA2 kann die Kompression bei verschiedenen Dateitypen verbessern. So könnten Sie eine gemeinsam genutzte Bibliothek der Architekturen x86-32 oder x86-64 mit dem BCJ-Filter für x86 komprimieren:"
#. type: Plain text
-#: ../src/xz/xz.1:2962
-#, no-wrap
-msgid "CW<xz --x86 --lzma2 libfoo.so>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --x86 --lzma2 libfoo.so>\n"
+msgid "\\f(CRxz --x86 --lzma2 libfoo.so\\fR\n"
msgstr "CW<xz --x86 --lzma2 libfoo.so>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2976
-msgid ""
-"Note that the order of the filter options is significant. If B<--x86> is "
-"specified after B<--lzma2>, B<xz> will give an error, because there cannot "
-"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."
+#: ../src/xz/xz.1
+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:2982
-msgid ""
-"The Delta filter together with LZMA2 can give good results with bitmap "
-"images. It should usually beat PNG, which has a few more advanced filters "
-"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."
+#: ../src/xz/xz.1
+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:2992
-msgid ""
-"The image has to be saved in uncompressed format, for example, as "
-"uncompressed TIFF. The distance parameter of the Delta filter is set to "
-"match the number of bytes per pixel in the image. For example, 24-bit RGB "
-"bitmap needs B<dist=3>, and it is also good to pass B<pb=0> to LZMA2 to "
-"accommodate the three-byte alignment:"
-msgstr ""
-"Das Bild muss in einem unkomprimierten Format gespeichert werden, zum "
-"Beispiel als unkomprimiertes TIFF. Der Abstandsparameter des Delta-Filters "
-"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:"
+#: ../src/xz/xz.1
+msgid "The image has to be saved in uncompressed format, for example, as uncompressed TIFF. The distance parameter of the Delta filter is set to match the number of bytes per pixel in the image. For example, 24-bit RGB bitmap needs B<dist=3>, and it is also good to pass B<pb=0> to LZMA2 to accommodate the three-byte alignment:"
+msgstr "Das Bild muss in einem unkomprimierten Format gespeichert werden, zum Beispiel als unkomprimiertes TIFF. Der Abstandsparameter des Delta-Filters 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:2997
-#, no-wrap
-msgid "CW<xz --delta=dist=3 --lzma2=pb=0 foo.tiff>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --delta=dist=3 --lzma2=pb=0 foo.tiff>\n"
+msgid "\\f(CRxz --delta=dist=3 --lzma2=pb=0 foo.tiff\\fR\n"
msgstr "CW<xz --delta=dist=3 --lzma2=pb=0 foo.tiff>\n"
#. type: Plain text
-#: ../src/xz/xz.1:3005
-msgid ""
-"If multiple images have been put into a single archive (for example, B<."
-"tar>), the Delta filter will work on that too as long as all images have the "
-"same number of bytes per pixel."
-msgstr ""
-"Wenn sich mehrere Bilder in einem einzelnen Archiv befinden (zum Beispiel\\& "
-"B<.tar>), funktioniert der Delta-Filter damit auch, sofern alle Bilder im "
-"Archiv die gleiche Anzahl Bytes pro Pixel haben."
+#: ../src/xz/xz.1
+msgid "If multiple images have been put into a single archive (for example, B<.tar>), the Delta filter will work on that too as long as all images have the same number of bytes per pixel."
+msgstr "Wenn sich mehrere Bilder in einem einzelnen Archiv befinden (zum Beispiel\\& B<.tar>), funktioniert der Delta-Filter damit auch, sofern alle Bilder im Archiv die gleiche Anzahl Bytes pro Pixel haben."
#. type: SH
-#: ../src/xz/xz.1:3006 ../src/xzdec/xzdec.1:143 ../src/lzmainfo/lzmainfo.1:59
-#: ../src/scripts/xzdiff.1:65 ../src/scripts/xzgrep.1:106
-#: ../src/scripts/xzless.1:65 ../src/scripts/xzmore.1:51
+#: ../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
#, no-wrap
msgid "SEE ALSO"
msgstr "SIEHE AUCH"
#. type: Plain text
-#: ../src/xz/xz.1:3015
-msgid ""
-"B<xzdec>(1), B<xzdiff>(1), B<xzgrep>(1), B<xzless>(1), B<xzmore>(1), "
-"B<gzip>(1), B<bzip2>(1), B<7z>(1)"
-msgstr ""
-"B<xzdec>(1), B<xzdiff>(1), B<xzgrep>(1), B<xzless>(1), B<xzmore>(1), "
-"B<gzip>(1), B<bzip2>(1), B<7z>(1)"
+#: ../src/xz/xz.1
+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:3017
+#: ../src/xz/xz.1
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:3019 ../src/xzdec/xzdec.1:146
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
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:3020
+#: ../src/xz/xz.1
msgid "LZMA SDK: E<lt>https://7-zip.org/sdk.htmlE<gt>"
msgstr "LZMA-SDK: E<lt>https://7-zip.org/sdk.htmlE<gt>"
#. type: TH
-#: ../src/xzdec/xzdec.1:7
+#: ../src/xzdec/xzdec.1
#, 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
+#: ../src/xzdec/xzdec.1
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
+#: ../src/xzdec/xzdec.1
msgid "B<xzdec> [I<option...>] [I<file...>]"
msgstr "B<xzdec> [I<Option…>] [I<Datei…>]"
#. type: Plain text
-#: ../src/xzdec/xzdec.1:18
+#: ../src/xzdec/xzdec.1
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."
+#: ../src/xzdec/xzdec.1
+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."
+#: ../src/xzdec/xzdec.1
+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."
+#: ../src/xzdec/xzdec.1
+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."
+#: ../src/xzdec/xzdec.1
+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."
+#: ../src/xzdec/xzdec.1
+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."
+#: ../src/xzdec/xzdec.1
+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."
+#: ../src/xzdec/xzdec.1
+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
+#: ../src/xzdec/xzdec.1
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
+#: ../src/xzdec/xzdec.1
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
+#: ../src/xzdec/xzdec.1
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."
+#: ../src/xzdec/xzdec.1
+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."
+#: ../src/xzdec/xzdec.1
+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."
+#: ../src/xzdec/xzdec.1
+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
+#: ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
msgid "B<xz>(1)"
msgstr "B<xz>(1)"
#. type: TH
-#: ../src/lzmainfo/lzmainfo.1:7
+#: ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "LZMAINFO"
msgstr "LZMAINFO"
#. type: TH
-#: ../src/lzmainfo/lzmainfo.1:7 ../src/scripts/xzmore.1:7
+#: ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "2013-06-30"
msgstr "30. Juni 2013"
#. type: Plain text
-#: ../src/lzmainfo/lzmainfo.1:10
+#: ../src/lzmainfo/lzmainfo.1
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
+#: ../src/lzmainfo/lzmainfo.1
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."
+#: ../src/lzmainfo/lzmainfo.1
+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."
+#: ../src/lzmainfo/lzmainfo.1
+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."
+#: ../src/lzmainfo/lzmainfo.1
+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:74
+#: ../src/lzmainfo/lzmainfo.1
#, 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."
+#: ../src/lzmainfo/lzmainfo.1
+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
+#: ../src/scripts/xzdiff.1
#, no-wrap
msgid "XZDIFF"
msgstr "XZDIFF"
#. type: TH
-#: ../src/scripts/xzdiff.1:9
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1
#, no-wrap
-msgid "2021-06-04"
-msgstr "4. Juni 2021"
+msgid "2024-02-13"
+msgstr "13. Februar 2024"
#. type: Plain text
-#: ../src/scripts/xzdiff.1:12
+#: ../src/scripts/xzdiff.1
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>]"
+#: ../src/scripts/xzdiff.1
+msgid "B<xzcmp> [I<option...>] I<file1> [I<file2>]"
+msgstr "B<xzcmp> [I<Option …>] 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>]"
+#: ../src/scripts/xzdiff.1
+msgid "B<xzdiff> \\&..."
+msgstr "B<xzdiff> \\&…"
#. 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>]"
+#: ../src/scripts/xzdiff.1
+msgid "B<lzcmp> \\&..."
+msgstr "B<lzcmp> \\&…"
#. 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>]"
+#: ../src/scripts/xzdiff.1
+msgid "B<lzdiff> \\&..."
+msgstr "B<lzdiff> \\&…"
#. type: Plain text
-#: ../src/scripts/xzdiff.1:59
-msgid ""
-"B<xzcmp> and B<xzdiff> invoke B<cmp>(1) or B<diff>(1) on files compressed "
-"with B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), or "
-"B<zstd>(1). All options specified are passed directly to B<cmp>(1) or "
-"B<diff>(1). If only one file is specified, then the files compared are "
-"I<file1> (which must have a suffix of a supported compression format) and "
-"I<file1> from which the compression format suffix has been stripped. If two "
-"files are specified, then they are uncompressed if necessary and fed to "
-"B<cmp>(1) or B<diff>(1). The exit status from B<cmp>(1) or B<diff>(1) is "
-"preserved unless a decompression error occurs; then exit status is 2."
-msgstr ""
-"Die Dienstprogramme B<xzcmp> und B<xzdiff> führen die Programme B<cmp>(1) "
-"beziehungsweise B<diff>(1) mit Dateien aus, die mittels B<xz>(1), "
-"B<lzma>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1) oder B<zstd> komprimiert "
-"wurden. Alle angegebenen Optionen werden direkt an B<cmp>(1) oder B<diff>(1) "
-"übergeben. Wird nur eine Datei angegeben, wird diese I<Datei1> (die eine "
-"Endung entsprechend eines der unterstützten Kompressionsformate haben muss) "
-"mit der I<Datei1> verglichen, von der die Kompressionsformat-Endung entfernt "
-"wird. Werden zwei Dateien angegeben, dann werden deren Inhalte (falls nötig, "
-"unkomprimiert) an B<cmp>(1) oder B<diff>(1) weitergeleitet. Der Exit-Status "
-"von B<cmp>(1) oder B<diff>(1) wird dabei bewahrt (sofern kein "
-"Dekompressionsfehler auftrat; in diesem Fall ist der Exit-Status 2)."
-
-#. type: Plain text
-#: ../src/scripts/xzdiff.1:65
-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."
+#: ../src/scripts/xzdiff.1
+msgid "B<xzcmp> and B<xzdiff> compare uncompressed contents of two files. Uncompressed data and options are passed to B<cmp>(1) or B<diff>(1) unless B<--help> or B<--version> is specified."
+msgstr "B<xzcmp> und B<xzdiff> vergleichen den unkomprimierten Inhalt zweier Dateien. Die unkomprimierten Daten und Optionen werden an B<cmp>(1) oder B<diff>(1) übergeben, sofern weder B<--help> noch B<--version> angegeben wird."
#. type: Plain text
-#: ../src/scripts/xzdiff.1:74
-msgid ""
-"B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), "
-"B<zstd>(1), B<zdiff>(1)"
-msgstr ""
-"B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), "
-"B<zstd>(1), B<zdiff>(1)"
+#: ../src/scripts/xzdiff.1
+msgid "If both I<file1> and I<file2> are specified, they can be uncompressed files or files in formats that B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), or B<lz4>(1) can decompress. The required decompression commands are determined from the filename suffixes of I<file1> and I<file2>. A file with an unknown suffix is assumed to be either uncompressed or in a format that B<xz>(1) can decompress."
+msgstr "Wenn sowohl I<Datei1> als auch I<Datei2> angegeben sind, können diese unkomprimierte Dateien oder Dateien in Formaten sein, die B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1) oder B<lz4>(1) dekomprimieren können. Die erforderlichen Dekomprimierungsbefehle werden aus den Dateiendungen von I<Datei1> und I<Datei2> abgeleitet. Für eine Datei mit einer unbekannten Endung wird angenommen, dass sie entweder unkomprimiert ist oder von B<xz>(1) dekomprimiert werden kann."
#. type: Plain text
-#: ../src/scripts/xzdiff.1:79
-msgid ""
-"Messages from the B<cmp>(1) or B<diff>(1) programs refer to temporary "
-"filenames instead of those specified."
-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."
+#: ../src/scripts/xzdiff.1
+msgid "If only one filename is provided, I<file1> must have a suffix of a supported compression format and the name for I<file2> is assumed to be I<file1> with the compression format suffix removed."
+msgstr "Falls nur ein Dateiname angegeben wird, muss I<Datei1> eine Endung eines unterstützten Kompressionsformat haben und der Name von I<Datei2> wird aus I<Datei1> abgeleitet, indem die Endung des Kompressionsformats entfernt wird."
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1
+msgid "The commands B<lzcmp> and B<lzdiff> are provided for backward compatibility with LZMA Utils."
+msgstr "Die Befehle B<lzcmp> und B<lzdiff> dienen der Abwärtskompatibilität zu den LZMA-Dienstprogrammen."
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1
+msgid "If a decompression error occurs, the exit status is B<2>. Otherwise the exit status of B<cmp>(1) or B<diff>(1) is used."
+msgstr "Falls ein Dekompressionsfehler auftritt, ist der Exit-Status B<2>. Anderenfalls wird der Exit-Status von B<cmp>(1) oder B<diff>(1) verwendet."
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1
+msgid "B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), B<lz4>(1)"
+msgstr "B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), B<lz4>(1)"
#. type: TH
-#: ../src/scripts/xzgrep.1:9
+#: ../src/scripts/xzgrep.1
#, no-wrap
msgid "XZGREP"
msgstr "XZGREP"
-#. type: TH
-#: ../src/scripts/xzgrep.1:9
-#, no-wrap
-msgid "2022-07-19"
-msgstr "19. Juli 2022"
-
#. type: Plain text
-#: ../src/scripts/xzgrep.1:12
-msgid "xzgrep - search compressed files for a regular expression"
-msgstr ""
-"xzgrep - komprimierte Dateien nach einem regulären Ausdruck durchsuchen"
+#: ../src/scripts/xzgrep.1
+msgid "xzgrep - search possibly-compressed files for patterns"
+msgstr "xzgrep - möglicherweise komprimierte Dateien nach Mustern 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<Datei …>]"
+#: ../src/scripts/xzgrep.1
+msgid "B<xzgrep> [I<option...>] [I<pattern_list>] [I<file...>]"
+msgstr "B<xzgrep> [I<Option …>] [I<Musterliste>] [I<Datei …>]"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:21
+#: ../src/scripts/xzgrep.1
msgid "B<xzegrep> \\&..."
msgstr "B<xzegrep> …"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:24
+#: ../src/scripts/xzgrep.1
msgid "B<xzfgrep> \\&..."
msgstr "B<xzfgrep> …"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:27
+#: ../src/scripts/xzgrep.1
msgid "B<lzgrep> \\&..."
msgstr "B<lzgrep> …"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:30
+#: ../src/scripts/xzgrep.1
msgid "B<lzegrep> \\&..."
msgstr "B<lzegrep> …"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:33
+#: ../src/scripts/xzgrep.1
msgid "B<lzfgrep> \\&..."
msgstr "B<lzfgrep> …"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:49
-msgid ""
-"B<xzgrep> invokes B<grep>(1) on I<files> which may be either uncompressed "
-"or compressed with B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), "
-"B<lzop>(1), or B<zstd>(1). All options specified are passed directly to "
-"B<grep>(1)."
-msgstr ""
-"B<xzgrep> wendet B<grep>(1) auf I<Dateien> an, die entweder unkomprimiert "
-"oder mit B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1) oder "
-"B<zstd> komprimiert sein können. Alle angegebenen Optionen werden direkt an "
-"B<grep>(1) übergeben."
+#: ../src/scripts/xzgrep.1
+msgid "B<xzgrep> invokes B<grep>(1) on uncompressed contents of files. The formats of the I<files> are determined from the filename suffixes. Any I<file> with a suffix supported by B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), or B<lz4>(1) will be decompressed; all other files are assumed to be uncompressed."
+msgstr "B<xzgrep> ruft B<grep>(1) mit dem unkomprimierten Inhalt von Dateien auf. Die Formate der I<Dateien> werden aus den Dateiendungen abgeleitet. Jede I<Datei> mit einer Endung, die von B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1) oder B<lz4>(1) unterstützt wird, wird dekomprimiert; für andere Dateien wird angenommen, dass sie bereits in unkomprimierter Form vorliegen."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:62
-msgid ""
-"If no I<file> is specified, then standard input is decompressed if necessary "
-"and fed to B<grep>(1). When reading from standard input, B<gzip>(1), "
-"B<bzip2>(1), B<lzop>(1), and B<zstd>(1) compressed files are not supported."
-msgstr ""
-"Wenn keine I<Datei> angegeben ist, wird die Standardeingabe dekomprimiert "
-"(falls nötig) und an B<grep> übergeben. Beim Lesen aus der Standardeingabe "
-"keine Dateien unterstützt, die mit B<gzip>(1), B<bzip2>(1), B<lzop>(1) oder "
-"B<zstd> komprimiert sind."
+#: ../src/scripts/xzgrep.1
+msgid "If no I<files> are specified or I<file> is B<-> then standard input is read. When reading from standard input, only files supported by B<xz>(1) are decompressed. Other files are assumed to be in uncompressed form already."
+msgstr "Wenn keine I<Dateien> angegeben werden oder I<Datei> als B<-> angegeben wird, wird aus der Standardeingabe gelesen. Beim Lesen aus der Standardeingabe werden nur die von B<xz>(1) unterstützten Dateien dekomprimiert. Für andere Dateien wird angenommen, dass sie bereits in unkomprimierter Form vorliegen."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:81
-msgid ""
-"If B<xzgrep> is invoked as B<xzegrep> or B<xzfgrep> then B<grep -E> or "
-"B<grep -F> is used instead of B<grep>(1). The same applies to names "
-"B<lzgrep>, B<lzegrep>, and B<lzfgrep>, which are provided for backward "
-"compatibility with LZMA Utils."
-msgstr ""
-"Wenn B<xzgrep> als B<xzegrep> oder B<xzfgrep> aufgerufen wird, dann wird "
-"B<grep -E> oder B<grep -F> anstelle von B<grep>(1) verwendet. Genauso "
-"verhalten sich die Befehle B<lzgrep>, B<lzegrep> und B<lzfgrep>, die die "
-"Abwärtskompatibilität zu den LZMA-Dienstprogrammen gewährleisten."
+#: ../src/scripts/xzgrep.1
+msgid "Most I<options> of B<grep>(1) are supported. However, the following options are not supported:"
+msgstr "Die meisten I<Optionen> von B<grep>(1) werden unterstützt, die folgenden jedoch nicht:"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:86
-msgid ""
-"At least one match was found from at least one of the input files. No "
-"errors occurred."
-msgstr ""
-"In mindestens einer der Eingabedateien wurde mindestens ein Treffer "
-"gefunden. Es sind keine Fehler aufgetreten."
+#: ../src/scripts/xzgrep.1
+msgid "B<-r>, B<--recursive>"
+msgstr "B<-r>, B<--recursive>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<-R>, B<--dereference-recursive>"
+msgstr "B<-R>, B<--dereference-recursive>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<-d>, B<--directories=>I<action>"
+msgstr "B<-d>, B<--directories=>I<Aktion>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<-Z>, B<--null>"
+msgstr "B<-Z>, B<--null>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<-z>, B<--null-data>"
+msgstr "B<-z>, B<--null-data>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<--include=>I<glob>"
+msgstr "B<--include=>I<Glob>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<--exclude=>I<glob>"
+msgstr "B<--exclude=>I<Glob>"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:90
+#: ../src/scripts/xzgrep.1
+msgid "B<--exclude-from=>I<file>"
+msgstr "B<--exclude-from=>I<Datei>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<--exclude-dir=>I<glob>"
+msgstr "B<--exclude-dir=>I<Glob>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<xzegrep> is an alias for B<xzgrep -E>. B<xzfgrep> is an alias for B<xzgrep -F>."
+msgstr "B<xzegrep> ist ein Alias für B<xzgrep -E>. B<xzfgrep> ist ein Alias für B<xzgrep -F>."
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "The commands B<lzgrep>, B<lzegrep>, and B<lzfgrep> are provided for backward compatibility with LZMA Utils."
+msgstr "Die Befehle B<lzgrep>, B<lzegrep> und B<lzfgrep> dienen der Abwärtskompatibilität zu den LZMA-Dienstprogrammen."
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "At least one match was found from at least one of the input files. No errors occurred."
+msgstr "In mindestens einer der Eingabedateien wurde mindestens ein Treffer gefunden. Es sind keine Fehler aufgetreten."
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
msgid "No matches were found from any of the input files. No errors occurred."
-msgstr ""
-"In keiner der Eingabedateien wurde ein Treffer gefunden. Es sind keine "
-"Fehler aufgetreten."
+msgstr "In keiner der Eingabedateien wurde ein Treffer gefunden. Es sind keine Fehler aufgetreten."
#. type: TP
-#: ../src/scripts/xzgrep.1:90
+#: ../src/scripts/xzgrep.1
#, no-wrap
msgid "E<gt>1"
msgstr "E<gt>1"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:94
+#: ../src/scripts/xzgrep.1
msgid "One or more errors occurred. It is unknown if matches were found."
-msgstr ""
-"Ein oder mehrere Fehler sind aufgetreten. Es ist unbekannt, ob Treffer "
-"gefunden wurden."
+msgstr "Ein oder mehrere Fehler sind aufgetreten. Es ist unbekannt, ob Treffer gefunden wurden."
#. type: TP
-#: ../src/scripts/xzgrep.1:95
+#: ../src/scripts/xzgrep.1
#, no-wrap
msgid "B<GREP>"
msgstr "B<GREP>"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:106
-msgid ""
-"If the B<GREP> environment variable is set, B<xzgrep> uses it instead of "
-"B<grep>(1), B<grep -E>, or B<grep -F>."
-msgstr ""
-"Wenn die Umgebungsvariable B<GREP> gesetzt ist, verwendet B<xzgrep> deren "
-"Inhalt anstelle von B<grep>(1), B<grep -E> oder B<grep -F>."
+#: ../src/scripts/xzgrep.1
+msgid "If B<GREP> is set to a non-empty value, it is used instead of B<grep>, B<grep -E>, or B<grep -F>."
+msgstr "Wenn die Umgebungsvariable B<GREP> auf einen nicht-leeren Wert gesetzt ist, wird diese anstelle von B<grep>(1), B<grep -E> oder B<grep -F> verwendet."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:113
-msgid ""
-"B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), "
-"B<zgrep>(1)"
-msgstr ""
-"B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), "
-"B<zgrep>(1)"
+#: ../src/scripts/xzgrep.1
+msgid "B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), B<lz4>(1), B<zgrep>(1)"
+msgstr "B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), B<lz4>(1), B<zgrep>(1)"
#. type: TH
-#: ../src/scripts/xzless.1:10
+#: ../src/scripts/xzless.1
#, no-wrap
msgid "XZLESS"
msgstr "XZLESS"
#. type: TH
-#: ../src/scripts/xzless.1:10
+#: ../src/scripts/xzless.1 ../src/scripts/xzmore.1
#, no-wrap
-msgid "2010-09-27"
-msgstr "27. September 2010"
+msgid "2024-02-12"
+msgstr "12. Februar 2024"
#. type: Plain text
-#: ../src/scripts/xzless.1:13
+#: ../src/scripts/xzless.1
msgid "xzless, lzless - view xz or lzma compressed (text) files"
-msgstr ""
-"xzless, lzless - mit xz oder lzma komprimierte (Text-)Dateien betrachten"
+msgstr "xzless, lzless - mit xz oder lzma komprimierte (Text-)Dateien betrachten"
#. type: Plain text
-#: ../src/scripts/xzless.1:16
+#: ../src/scripts/xzless.1
msgid "B<xzless> [I<file>...]"
msgstr "B<xzless> [I<Datei> …]"
#. type: Plain text
-#: ../src/scripts/xzless.1:19
+#: ../src/scripts/xzless.1
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."
+#: ../src/scripts/xzless.1
+msgid "B<xzless> is a filter that displays text from compressed files to a terminal. Files supported by B<xz>(1) are decompressed; other files are assumed to be in uncompressed form already. 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. Von B<xz>(1) unterstützte Dateien werden dekomprimiert; für andere Dateien wird angenommen, dass sie bereits in unkomprimierter Form vorliegen. Wenn keine I<Dateien> angegeben werden, 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."
+#: ../src/scripts/xzless.1
+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."
+#: ../src/scripts/xzless.1
+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
+#: ../src/scripts/xzless.1
#, 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."
+#: ../src/scripts/xzless.1
+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
+#: ../src/scripts/xzless.1
#, 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."
+#: ../src/scripts/xzless.1
+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
+#: ../src/scripts/xzless.1
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
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "XZMORE"
msgstr "XZMORE"
#. type: Plain text
-#: ../src/scripts/xzmore.1:10
+#: ../src/scripts/xzmore.1
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 …>]"
+#: ../src/scripts/xzmore.1
+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 …>]"
+#: ../src/scripts/xzmore.1
+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."
+#: ../src/scripts/xzmore.1
+msgid "B<xzmore> displays text from compressed files to a terminal using B<more>(1). Files supported by B<xz>(1) are decompressed; other files are assumed to be in uncompressed form already. If no I<files> are given, B<xzmore> reads from standard input. See the B<more>(1) manual for the keyboard commands."
+msgstr "B<xzmore> zeigt Text aus komprimierten Dateien mit Hilfe des Pagers (Textanzeigeprogramms) B<more>(1) in einem Terminal an. Von B<xz>(1) unterstützte Dateien werden dekomprimiert; für andere Dateien wird angenommen, dass sie bereits in unkomprimierter Form vorliegen. Wenn keine I<Dateien> angegeben werden, liest B<xzmore> aus der Standardeingabe. Im B<more>(1)-Handbuch finden Sie Informationen zu den Tastaturbefehlen."
#. 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>"
+#: ../src/scripts/xzmore.1
+msgid "Note that scrolling backwards might not be possible depending on the implementation of B<more>(1). This is because B<xzmore> uses a pipe to pass the decompressed data to B<more>(1). B<xzless>(1) uses B<less>(1) which provides more advanced features."
+msgstr "Beachten Sie, dass Zurückrollen nicht möglich sein könnte, abhängig von der Implementierung von B<more>(1). Das kommt daher, dass B<xzmore> eine Pipe verwendet, um die dekomprimierten Daten an B<more>(1) zu übergeben. B<xzless>(1) verwendet B<less>(1), welches fortgeschrittenere Funktionen bietet."
#. 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."
+#: ../src/scripts/xzmore.1
+msgid "The command B<lzmore> is provided for backward compatibility with LZMA Utils."
+msgstr "Der Befehl B<lzmore> dient der Abwärtskompatibilität zu den LZMA-Dienstprogrammen."
#. type: TP
-#: ../src/scripts/xzmore.1:40
+#: ../src/scripts/xzmore.1
#, no-wrap
-msgid "B<s>"
-msgstr "B<s>"
+msgid "B<PAGER>"
+msgstr "B<PAGER>"
#. 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."
+#: ../src/scripts/xzmore.1
+msgid "If B<PAGER> is set, its value is used as the pager instead of B<more>(1)."
+msgstr "Falls die Umgebungsvariable B<PAGER> gesetzt ist, wird diese als Pager (Textanzeigeprogramm) anstelle von B<more>(1) verwendet."
#. 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
+#: ../src/scripts/xzmore.1
msgid "B<more>(1), B<xz>(1), B<xzless>(1), B<zmore>(1)"
msgstr "B<more>(1), B<xz>(1), B<xzless>(1), B<zmore>(1)"
-#~ msgid "2022-12-01"
-#~ msgstr "1. Dezember 2022"
+#, no-wrap
+#~ msgid "2024-01-19"
+#~ msgstr "19. Januar 2024"
diff --git a/po4a/fr.po b/po4a/fr.po
index d235599..a92c7ce 100644
--- a/po4a/fr.po
+++ b/po4a/fr.po
@@ -9,7 +9,7 @@
msgid ""
msgstr ""
"Project-Id-Version: XZ Utils 5.2.5\n"
-"POT-Creation-Date: 2023-11-01 20:27+0800\n"
+"POT-Creation-Date: 2024-05-29 17:45+0300\n"
"PO-Revision-Date: 2021-12-01 15:17+0100\n"
"Last-Translator: bubu <bubub@no-log.org> \n"
"Language-Team: French <debian-l10n-french@lists.debian.org> \n"
@@ -21,5069 +21,3226 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. type: TH
-#: ../src/xz/xz.1:9
+#: ../src/xz/xz.1
#, no-wrap
msgid "XZ"
msgstr "XZ"
#. type: TH
-#: ../src/xz/xz.1:9
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
-msgid "2023-07-17"
+msgid "2024-04-08"
msgstr ""
#. type: TH
-#: ../src/xz/xz.1:9 ../src/xzdec/xzdec.1:7 ../src/lzmainfo/lzmainfo.1:7
-#: ../src/scripts/xzdiff.1:9 ../src/scripts/xzgrep.1:9
-#: ../src/scripts/xzless.1:10 ../src/scripts/xzmore.1:7
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "Tukaani"
msgstr "Tukaani"
#. type: TH
-#: ../src/xz/xz.1:9 ../src/xzdec/xzdec.1:7 ../src/lzmainfo/lzmainfo.1:7
-#: ../src/scripts/xzdiff.1:9 ../src/scripts/xzgrep.1:9
-#: ../src/scripts/xzless.1:10 ../src/scripts/xzmore.1:7
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "XZ Utils"
msgstr "Utilitaires XZ"
#. type: SH
-#: ../src/xz/xz.1:11 ../src/xzdec/xzdec.1:8 ../src/lzmainfo/lzmainfo.1:8
-#: ../src/scripts/xzdiff.1:10 ../src/scripts/xzgrep.1:10
-#: ../src/scripts/xzless.1:11 ../src/scripts/xzmore.1:8
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "NAME"
msgstr "NOM"
#. type: Plain text
-#: ../src/xz/xz.1:13
-msgid ""
-"xz, unxz, xzcat, lzma, unlzma, lzcat - Compress or decompress .xz and .lzma "
-"files"
-msgstr ""
-"xz, unxz, xzcat, lzma, unlzma, lzcat - Compresser ou décompresser des "
-"fichiers .xz et .lzma"
+#: ../src/xz/xz.1
+msgid "xz, unxz, xzcat, lzma, unlzma, lzcat - Compress or decompress .xz and .lzma files"
+msgstr "xz, unxz, xzcat, lzma, unlzma, lzcat - Compresser ou décompresser des fichiers .xz et .lzma"
#. type: SH
-#: ../src/xz/xz.1:14 ../src/xzdec/xzdec.1:10 ../src/lzmainfo/lzmainfo.1:10
-#: ../src/scripts/xzdiff.1:12 ../src/scripts/xzgrep.1:12
-#: ../src/scripts/xzless.1:13 ../src/scripts/xzmore.1:10
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "SYNOPSIS"
msgstr "SYNOPSIS"
#. type: Plain text
-#: ../src/xz/xz.1:18
+#: ../src/xz/xz.1
msgid "B<xz> [I<option...>] [I<file...>]"
msgstr "B<xz> [I<option...>] [I<fichier...>]"
#. type: SH
-#: ../src/xz/xz.1:19
+#: ../src/xz/xz.1
#, no-wrap
msgid "COMMAND ALIASES"
msgstr "ALIAS DES COMMANDES"
#. type: Plain text
-#: ../src/xz/xz.1:23
+#: ../src/xz/xz.1
msgid "B<unxz> is equivalent to B<xz --decompress>."
msgstr "B<unxz> est équivalent à B<xz --decompress>."
#. type: Plain text
-#: ../src/xz/xz.1:27
+#: ../src/xz/xz.1
msgid "B<xzcat> is equivalent to B<xz --decompress --stdout>."
msgstr "B<xzcat> est équivalent à B<xz --decompress --stdout>"
#. type: Plain text
-#: ../src/xz/xz.1:31
+#: ../src/xz/xz.1
msgid "B<lzma> is equivalent to B<xz --format=lzma>."
msgstr "B<lzma> est équivalent à B<xz --format=lzma>"
#. type: Plain text
-#: ../src/xz/xz.1:35
+#: ../src/xz/xz.1
msgid "B<unlzma> is equivalent to B<xz --format=lzma --decompress>."
msgstr "B<unlzma> est équivalent à B<xz --format=lzma --decompress>"
#. type: Plain text
-#: ../src/xz/xz.1:39
+#: ../src/xz/xz.1
msgid "B<lzcat> is equivalent to B<xz --format=lzma --decompress --stdout>."
msgstr "B<lzcat> est équivalent à B<xz --format=lzma --decompress -- stdout>"
#. type: Plain text
-#: ../src/xz/xz.1:51
-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 ""
-"Lors de l'écriture de scripts qui nécessitent de décompresser des fichiers, "
-"il est recommandé de toujours utiliser la commande B<xz> avec les arguments "
-"appropriés (B<xz -d> ou B<xz -dc>) au lieu des commandes B<unxz> et B<xzcat>."
+#: ../src/xz/xz.1
+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 "Lors de l'écriture de scripts qui nécessitent de décompresser des fichiers, il est recommandé de toujours utiliser la commande B<xz> avec les arguments appropriés (B<xz -d> ou B<xz -dc>) au lieu des commandes B<unxz> et B<xzcat>."
#. type: SH
-#: ../src/xz/xz.1:52 ../src/xzdec/xzdec.1:18 ../src/lzmainfo/lzmainfo.1:15
-#: ../src/scripts/xzdiff.1:24 ../src/scripts/xzgrep.1:33
-#: ../src/scripts/xzless.1:19 ../src/scripts/xzmore.1:16
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "DESCRIPTION"
msgstr "DESCRIPTION"
#. type: Plain text
-#: ../src/xz/xz.1:71
-#, fuzzy
-#| 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."
-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. In "
-"addition, decompression of the B<.lz> format used by B<lzip> is supported."
+#: ../src/xz/xz.1
+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. In addition, decompression of the B<.lz> format used by B<lzip> is supported."
msgstr ""
-"B<xz> est un outil de compression de données polyvalent avec une syntaxe de "
-"ligne de commandes similaire à B<gzip>(1) et B<bzip2>(1). Le format de "
-"fichier natif est le format B<.xz>, mais le format historique B<.lzma> "
-"utilisé par les outils LZMA et les flux bruts compressés sans conteneur d'en-"
-"têtes de format sont aussi pris en charge. "
#. type: Plain text
-#: ../src/xz/xz.1:93
-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> compresse ou décompresse chaque I<fichier> en fonction du mode "
-"d'opération choisi. Si aucun I<fichier> n'est donné ou I<fichier> est B<->, "
-"B<xz> lit depuis l'entrée standard et écrit les données traitées sur la "
-"sortie standard. B<xz> refusera (affichera une erreur et ignorera le "
-"I<fichier>) d'écrire les données compressées sur la sortie standard si c'est "
-"un terminal. De même, B<xz> refusera de lire des données compressées depuis "
-"l'entrée standard si c'est un terminal."
-
-#. type: Plain text
-#: ../src/xz/xz.1:103
-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 ""
-"A moins que B<--sdout> ne soit indiqué, les I<fichiers> autres que B<-> sont "
-"écrits dans un nouveau fichier dont le nom est dérivé du nom de I<fichier> "
-"source :"
+#: ../src/xz/xz.1
+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> compresse ou décompresse chaque I<fichier> en fonction du mode d'opération choisi. Si aucun I<fichier> n'est donné ou I<fichier> est B<->, B<xz> lit depuis l'entrée standard et écrit les données traitées sur la sortie standard. B<xz> refusera (affichera une erreur et ignorera le I<fichier>) d'écrire les données compressées sur la sortie standard si c'est un terminal. De même, B<xz> refusera de lire des données compressées depuis l'entrée standard si c'est un terminal."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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 "A moins que B<--sdout> ne soit indiqué, les I<fichiers> autres que B<-> sont écrits dans un nouveau fichier dont le nom est dérivé du nom de I<fichier> source :"
#. type: IP
-#: ../src/xz/xz.1:103 ../src/xz/xz.1:109 ../src/xz/xz.1:134 ../src/xz/xz.1:139
-#: ../src/xz/xz.1:142 ../src/xz/xz.1:145 ../src/xz/xz.1:161 ../src/xz/xz.1:422
-#: ../src/xz/xz.1:425 ../src/xz/xz.1:432 ../src/xz/xz.1:677 ../src/xz/xz.1:679
-#: ../src/xz/xz.1:778 ../src/xz/xz.1:789 ../src/xz/xz.1:798 ../src/xz/xz.1:806
-#: ../src/xz/xz.1:1034 ../src/xz/xz.1:1043 ../src/xz/xz.1:1055
-#: ../src/xz/xz.1:1729 ../src/xz/xz.1:1735 ../src/xz/xz.1:1853
-#: ../src/xz/xz.1:1857 ../src/xz/xz.1:1860 ../src/xz/xz.1:1863
-#: ../src/xz/xz.1:1867 ../src/xz/xz.1:1874 ../src/xz/xz.1:1876
+#: ../src/xz/xz.1
#, no-wrap
msgid "\\(bu"
msgstr "\\(bu"
#. type: Plain text
-#: ../src/xz/xz.1:109
-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 ""
-"Lors de la compression, le suffixe du format de fichier cible (B<.xz> ou B<."
-"lzma>) est ajouté au nom de fichier source pour obtenir le nom de fichier "
-"cible."
+#: ../src/xz/xz.1
+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 "Lors de la compression, le suffixe du format de fichier cible (B<.xz> ou B<.lzma>) est ajouté au nom de fichier source pour obtenir le nom de fichier cible."
#. type: Plain text
-#: ../src/xz/xz.1:124
-#, fuzzy
-#| 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."
-msgid ""
-"When decompressing, the B<.xz>, B<.lzma>, or B<.lz> suffix is removed from "
-"the filename to get the target filename. B<xz> also recognizes the suffixes "
-"B<.txz> and B<.tlz>, and replaces them with the B<.tar> suffix."
+#: ../src/xz/xz.1
+msgid "When decompressing, the B<.xz>, B<.lzma>, or B<.lz> suffix is removed from the filename to get the target filename. B<xz> also recognizes the suffixes B<.txz> and B<.tlz>, and replaces them with the B<.tar> suffix."
msgstr ""
-"Lors de la décompression, le suffixe B<.xz> ou B<.lzma> est enlevé du nom de "
-"fichier pour obtenir le nom de fichier cible. B<xz> reconnaît aussi les "
-"suffixes B<.txz> et B<.tlz> et les remplace par le suffixe B<.tar>."
#. type: Plain text
-#: ../src/xz/xz.1:128
-msgid ""
-"If the target file already exists, an error is displayed and the I<file> is "
-"skipped."
-msgstr ""
-"Si le fichier cible existe déjà, une erreur est affichée et le I<fichier> "
-"est ignoré."
+#: ../src/xz/xz.1
+msgid "If the target file already exists, an error is displayed and the I<file> is skipped."
+msgstr "Si le fichier cible existe déjà, une erreur est affichée et le I<fichier> est ignoré."
#. type: Plain text
-#: ../src/xz/xz.1:134
-msgid ""
-"Unless writing to standard output, B<xz> will display a warning and skip the "
-"I<file> if any of the following applies:"
-msgstr ""
-"Sauf s'il écrit dans la sortie standard, B<xz> affichera un avertissement et "
-"ignorera le I<fichier> dans les cas suivants :"
+#: ../src/xz/xz.1
+msgid "Unless writing to standard output, B<xz> will display a warning and skip the I<file> if any of the following applies:"
+msgstr "Sauf s'il écrit dans la sortie standard, B<xz> affichera un avertissement et ignorera le I<fichier> dans les cas suivants :"
#. type: Plain text
-#: ../src/xz/xz.1:139
-msgid ""
-"I<File> is not a regular file. Symbolic links are not followed, and thus "
-"they are not considered to be regular files."
-msgstr ""
-"I<fichier> n'est pas un fichier normal. Les liens symboliques ne sont pas "
-"suivis et donc ne sont pas considérés comme des fichiers normaux."
+#: ../src/xz/xz.1
+msgid "I<File> is not a regular file. Symbolic links are not followed, and thus they are not considered to be regular files."
+msgstr "I<fichier> n'est pas un fichier normal. Les liens symboliques ne sont pas suivis et donc ne sont pas considérés comme des fichiers normaux."
#. type: Plain text
-#: ../src/xz/xz.1:142
+#: ../src/xz/xz.1
msgid "I<File> has more than one hard link."
msgstr "I<fichier> a plusieurs liens physiques."
#. type: Plain text
-#: ../src/xz/xz.1:145
+#: ../src/xz/xz.1
msgid "I<File> has setuid, setgid, or sticky bit set."
msgstr "I<fichier> a un setuid, setgid ou sticky bit positionné."
#. type: Plain text
-#: ../src/xz/xz.1:161
-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 ""
-"Le mode d'opération est défini pour compresser et le I<fichier> a déjà un "
-"suffixe du format de fichier cible (B<.xz> ou B<.txz> lors d'une compression "
-"en format B<.xz>, et B<.lzma> ou B<.tlz> lors d'une compression en format B<."
-"lzma>)."
+#: ../src/xz/xz.1
+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 "Le mode d'opération est défini pour compresser et le I<fichier> a déjà un suffixe du format de fichier cible (B<.xz> ou B<.txz> lors d'une compression en format B<.xz>, et B<.lzma> ou B<.tlz> lors d'une compression en format B<.lzma>)."
#. type: Plain text
-#: ../src/xz/xz.1:171
+#: ../src/xz/xz.1
#, fuzzy
-#| 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>)."
-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>, B<."
-"tlz>, or B<.lz>)."
-msgstr ""
-"Le mode d'opération est défini pour décompresser et le I<fichier> n'a pas de "
-"suffixe correspondant aux formats de fichier pris en charge (B<.xz>, B<."
-"txz>, B<.lzma>, ou B<.tlz>)."
+#| 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)."
+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>, B<.tlz>, or B<.lz>)."
+msgstr "Le mode d'opération est défini pour compresser et le I<fichier> a déjà un suffixe du format de fichier cible (B<.xz> ou B<.txz> lors d'une compression en format B<.xz>, et B<.lzma> ou B<.tlz> lors d'une compression en format B<.lzma>)."
#. type: Plain text
-#: ../src/xz/xz.1:186
-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 ""
-"Après la compression ou la décompression réussie du I<fichier>, B<xz> copie "
-"les permissions du propriétaire, du groupe, la date d'accès, et les "
-"modifications d'heure depuis le I<fichier> source du fichier cible. Si la "
-"copie du groupe échoue, les permissions sont modifiées pour que le fichier "
-"cible ne soit pas accessible aux utilisateurs qui n'ont pas les droits "
-"d'accès au I<fichier> source. B<xz> ne prend actuellement pas en charge la "
-"copie d'autres métadonnées telles que les listes de contrôle d'accès ou les "
-"attributs étendus."
-
-#. type: Plain text
-#: ../src/xz/xz.1:196
-#, fuzzy
-#| 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."
-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 or if an error occurs."
-msgstr ""
-"Une fois que le fichier cible a été fermé avec succès, le I<fichier> source "
-"est supprimé à moins que B<--keep> n'ait été spécifié. Le I<fichier> source "
-"n'est jamais supprimé si la sortie est écrite sur la sortie standard."
+#: ../src/xz/xz.1
+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 "Après la compression ou la décompression réussie du I<fichier>, B<xz> copie les permissions du propriétaire, du groupe, la date d'accès, et les modifications d'heure depuis le I<fichier> source du fichier cible. Si la copie du groupe échoue, les permissions sont modifiées pour que le fichier cible ne soit pas accessible aux utilisateurs qui n'ont pas les droits d'accès au I<fichier> source. B<xz> ne prend actuellement pas en charge la copie d'autres métadonnées telles que les listes de contrôle d'accès ou les attributs étendus."
#. type: Plain text
-#: ../src/xz/xz.1:208
-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."
+#: ../src/xz/xz.1
+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 or if an error occurs."
msgstr ""
-"Envoyer B<SIGINFO> ou B<SIGURSR1> au processus B<xz>, lui fait afficher "
-"l'information de progression sur l'erreur standard. Cela a un intérêt limité "
-"car lorsque l'erreur standard est un terminal, utiliser B<--verbose> "
-"affichera automatiquement un indicateur de progression du processus."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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 "Envoyer B<SIGINFO> ou B<SIGURSR1> au processus B<xz>, lui fait afficher l'information de progression sur l'erreur standard. Cela a un intérêt limité car lorsque l'erreur standard est un terminal, utiliser B<--verbose> affichera automatiquement un indicateur de progression du processus."
#. type: SS
-#: ../src/xz/xz.1:209
+#: ../src/xz/xz.1
#, no-wrap
msgid "Memory usage"
msgstr "Utilisation de la mémoire"
#. type: Plain text
-#: ../src/xz/xz.1:225
-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 ""
-"L'utilisation de la mémoire par B<xz> varie de quelques centaines de kilo-"
-"octets à plusieurs gigaoctects en fonction des paramètres de compression. "
-"Les réglages utilisés lors de la compression d'un fichier déterminent les "
-"besoins en mémoire pour la décompression. Habituellement la décompression "
-"nécessite 5\\% à 20\\% de la quantité de mémoire utilisée pour la "
-"compression du fichier. Par exemple, décompresser un fichier créé avec "
-"B<xz-9> recquiert habituellement 65\\ Mio de mémoire. Bien qu'il soit "
-"possible d'avoir des fichiers B<.xz> nécessitant plusieurs gigaoctets de "
-"mémoire pour être décompressés."
-
-#. type: Plain text
-#: ../src/xz/xz.1:237
-#, fuzzy
-#| 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))."
-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 (for example, using "
-"B<ulimit>(1) to limit virtual memory tends to cripple B<mmap>(2))."
-msgstr ""
-"En particulier, les utilisateurs de vieux systèmes peuvent trouver ennuyeux "
-"l'utilisation de beaucoup de mémoire. Pour éviter les mauvaises surprises, "
-"B<xz> a un limiteur d'utilisation mémoire intégré qui est désactivé par "
-"défaut. Bien que quelques systèmes d'exploitation fournissent des moyens "
-"pour limiter l'utilisation de la mémoire par les processus, leur utilisation "
-"s'est avérée insuffisament flexible (par ex. en utilisant B<ulimit>(1) pour "
-"limiter les tendances de la mémoire virtuelle à handicaper B<mmap>(2))."
-
-#. type: Plain text
-#: ../src/xz/xz.1:259
-#, fuzzy
-#| 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."
-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>, for example, "
-"B<XZ_DEFAULTS=--memlimit=150MiB>. It is possible to set the limits "
-"separately for compression and decompression by using B<--memlimit-"
-"compress=>I<limit> and B<--memlimit-decompress=>I<limit>. Using these two "
-"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 ""
-"Le limiteur d'utilisation de la mémoire peut être activé avec l'option B<--"
-"memlimit=>I<limite>. Généralement il est plus pratique d'activer le limiteur "
-"par défaut en réglant la variable d'environnement B<XZ_DEFAULTS>, par "
-"exemple \\&B<XZ_DEFAULTS=--memlimit=150MiB>. Il est possible de régler les "
-"limites indépendamment pour la compression et la décompression en utilisant "
-"B<--memlimit-compress=>I<limite> et B<--memlimit-decompress=>I<limite>. "
-"Utiliser ces deux options hors de B<XZ_DEFAULTS> est rarement utile car une "
-"simple exécution de B<xz> ne peut pas à la fois compresser et décompresser "
-"et B<--memlimit=>I<limite> (ou B<M> I<limite>) est moins long à taper sur la "
-"ligne de commandes."
-
-#. type: Plain text
-#: ../src/xz/xz.1:278
-#, fuzzy
-#| 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>."
-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, for example, if the limit is only slightly less "
-"than the amount required for B<xz -9>, the settings will be scaled down only "
-"a little, not all the way down to B<xz -8>."
-msgstr ""
-"Si la limite d'utilisation de la mémoire est dépassée lors de la "
-"décompression, B<xz> affichera une erreur et la décompression échouera. Si "
-"la limite est dépassée lors de la compression, B<xz> essaiera d'adapter les "
-"réglages pour que la limite ne soit plus dépassée (sauf lors de "
-"l'utilisation de B<--format=raw> ou de B<--no-adjust>). De cette façon, "
-"l'opération n'échouera pas sauf si la limite est très petite. L'adaptation "
-"des réglages est faite par paliers et n'aboutira pas forcément aux réglages "
-"prédéfinis du niveau de compression, par ex. si la limite est seulement "
-"légèrement plus petite que la quantité requise par B<xz-9>, les réglages "
-"seront réduits un tout petit peu, mais pas jusqu'à B<xz-8>."
+#: ../src/xz/xz.1
+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 "L'utilisation de la mémoire par B<xz> varie de quelques centaines de kilo-octets à plusieurs gigaoctects en fonction des paramètres de compression. Les réglages utilisés lors de la compression d'un fichier déterminent les besoins en mémoire pour la décompression. Habituellement la décompression nécessite 5\\% à 20\\% de la quantité de mémoire utilisée pour la compression du fichier. Par exemple, décompresser un fichier créé avec B<xz-9> recquiert habituellement 65\\ Mio de mémoire. Bien qu'il soit possible d'avoir des fichiers B<.xz> nécessitant plusieurs gigaoctets de mémoire pour être décompressés."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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 (for example, using B<ulimit>(1) to limit virtual memory tends to cripple B<mmap>(2))."
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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>, for example, B<XZ_DEFAULTS=--memlimit=150MiB>. It is possible to set the limits separately for compression and decompression by using B<--memlimit-compress=>I<limit> and B<--memlimit-decompress=>I<limit>. Using these two 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 ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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, for example, if the limit is only slightly less than the amount required for B<xz -9>, the settings will be scaled down only a little, not all the way down to B<xz -8>."
+msgstr ""
#. type: SS
-#: ../src/xz/xz.1:279
+#: ../src/xz/xz.1
#, no-wrap
msgid "Concatenation and padding with .xz files"
msgstr "Concaténation et remplissage avec des fichiers .xz"
#. type: Plain text
-#: ../src/xz/xz.1:287
-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 ""
-"Il est possible de concaténer les fichiers B<.xz> tels quel. B<xz> "
-"décompressera de tels fichiers comme s'ils étaient un unique fichier B<.xz>."
+#: ../src/xz/xz.1
+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 "Il est possible de concaténer les fichiers B<.xz> tels quel. B<xz> décompressera de tels fichiers comme s'ils étaient un unique fichier B<.xz>."
#. type: Plain text
-#: ../src/xz/xz.1:296
-#, fuzzy
-#| 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."
-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, for example, "
-"if the B<.xz> file is stored on a medium that measures file sizes in 512-"
-"byte blocks."
+#: ../src/xz/xz.1
+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, for example, if the B<.xz> file is stored on a medium that measures file sizes in 512-byte blocks."
msgstr ""
-"Il est possible d'insérer du remplissage entre les parties concaténées ou "
-"après la dernière partie. Le remplissage doit se composer d'octets nuls et "
-"la taille du remplissage doit être un multiple de quatre octets. Cela peut "
-"être utile par exemple si le fichier <.xz> est stocké sur un média qui "
-"mesure la taille des fichiers en blocs de 512 octets."
#. type: Plain text
-#: ../src/xz/xz.1:300
-msgid ""
-"Concatenation and padding are not allowed with B<.lzma> files or raw streams."
-msgstr ""
-"La concaténation et le remplissage ne sont pas autorisés avec les fichiers "
-"B<.lzma> ou les flux bruts."
+#: ../src/xz/xz.1
+msgid "Concatenation and padding are not allowed with B<.lzma> files or raw streams."
+msgstr "La concaténation et le remplissage ne sont pas autorisés avec les fichiers B<.lzma> ou les flux bruts."
#. type: SH
-#: ../src/xz/xz.1:301 ../src/xzdec/xzdec.1:61
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "OPTIONS"
msgstr "OPTIONS"
#. type: SS
-#: ../src/xz/xz.1:303
+#: ../src/xz/xz.1
#, no-wrap
msgid "Integer suffixes and special values"
msgstr "Suffixes entiers et valeurs spéciales."
#. type: Plain text
-#: ../src/xz/xz.1:307
-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 ""
-"Dans la plupart des endroits où un argument entier est attendu, un suffixe "
-"optionel permet d'indiquer facilement les grands entiers. Il ne doit pas y "
-"avoir d'espace entre l'entier et le suffixe."
+#: ../src/xz/xz.1
+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 "Dans la plupart des endroits où un argument entier est attendu, un suffixe optionel permet d'indiquer facilement les grands entiers. Il ne doit pas y avoir d'espace entre l'entier et le suffixe."
#. type: TP
-#: ../src/xz/xz.1:307
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<KiB>"
msgstr "B<KiB>"
#. type: Plain text
-#: ../src/xz/xz.1:318
-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 ""
-"Multiplier l'entier par 1024 (2^10). B<Ki>, B<k>, B<kB>, B<K> et B<KB> sont "
-"acceptés comme synonymes de B<KiB>."
+#: ../src/xz/xz.1
+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 "Multiplier l'entier par 1024 (2^10). B<Ki>, B<k>, B<kB>, B<K> et B<KB> sont acceptés comme synonymes de B<KiB>."
#. type: TP
-#: ../src/xz/xz.1:318
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<MiB>"
msgstr "B<MiB>"
#. type: Plain text
-#: ../src/xz/xz.1:328
-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 ""
-"Multiplier l'entier par 1 048 576 (2^20). B<Mi>, B<m>, B<M> et B<MB> sont "
-"acceptés comme synonymes de B<MiB>."
+#: ../src/xz/xz.1
+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 "Multiplier l'entier par 1 048 576 (2^20). B<Mi>, B<m>, B<M> et B<MB> sont acceptés comme synonymes de B<MiB>."
#. type: TP
-#: ../src/xz/xz.1:328
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<GiB>"
msgstr "B<GiB>"
#. type: Plain text
-#: ../src/xz/xz.1:338
-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 ""
-"Multiplier l'entier par 1 073 741 824 (2^30). B<Gi>, B<g>, B<G> et B<GB> "
-"sont acceptés comme synonymes de B<GiB>."
+#: ../src/xz/xz.1
+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 "Multiplier l'entier par 1 073 741 824 (2^30). B<Gi>, B<g>, B<G> et B<GB> sont acceptés comme synonymes de B<GiB>."
#. type: Plain text
-#: ../src/xz/xz.1:343
-msgid ""
-"The special value B<max> can be used to indicate the maximum integer value "
-"supported by the option."
-msgstr ""
-"La valeur spéciale B<max> peut être utilisée pour indiquer la valeur "
-"maximale de l'entier prise en charge par l'option."
+#: ../src/xz/xz.1
+msgid "The special value B<max> can be used to indicate the maximum integer value supported by the option."
+msgstr "La valeur spéciale B<max> peut être utilisée pour indiquer la valeur maximale de l'entier prise en charge par l'option."
#. type: SS
-#: ../src/xz/xz.1:344
+#: ../src/xz/xz.1
#, no-wrap
msgid "Operation mode"
msgstr "Mode d'opération"
#. type: Plain text
-#: ../src/xz/xz.1:347
-msgid ""
-"If multiple operation mode options are given, the last one takes effect."
-msgstr ""
-"Si plusieurs options de mode d'opération sont données, la dernière prend "
-"effet."
+#: ../src/xz/xz.1
+msgid "If multiple operation mode options are given, the last one takes effect."
+msgstr "Si plusieurs options de mode d'opération sont données, la dernière prend effet."
#. type: TP
-#: ../src/xz/xz.1:347
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-z>, B<--compress>"
msgstr "B<-z>, B<--compress>"
#. type: Plain text
-#: ../src/xz/xz.1:356
-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 ""
-"Compresser. C'est le mode d'opération par défaut lorsque aucune option de "
-"mode opératoire n'est spécifiée ou qu'aucun autre mode d'opération n'est "
-"sous-entendu par le nom de la commande (par exemple B<unxz> sous-entend B<--"
-"decompress>)."
+#: ../src/xz/xz.1
+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 "Compresser. C'est le mode d'opération par défaut lorsque aucune option de mode opératoire n'est spécifiée ou qu'aucun autre mode d'opération n'est sous-entendu par le nom de la commande (par exemple B<unxz> sous-entend B<--decompress>)."
#. type: TP
-#: ../src/xz/xz.1:356 ../src/xzdec/xzdec.1:62
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-d>, B<--decompress>, B<--uncompress>"
msgstr "B<-d>, B<--decompress>, B<--uncompress>"
#. type: Plain text
-#: ../src/xz/xz.1:359
+#: ../src/xz/xz.1
msgid "Decompress."
msgstr "Décompresser."
#. type: TP
-#: ../src/xz/xz.1:359
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-t>, B<--test>"
msgstr "B<-t>, B<--test>"
#. type: Plain text
-#: ../src/xz/xz.1:368
-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 ""
-"Tester l'intégrité des I<fichiers> compressés. Cette option est équivalente "
-"à B<--decompress --stdout> sauf que les données décompressées sont rejetées "
-"au lieu d'être écrites sur la sortie standard. Aucun fichier n'est créé ou "
-"supprimé."
+#: ../src/xz/xz.1
+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 "Tester l'intégrité des I<fichiers> compressés. Cette option est équivalente à B<--decompress --stdout> sauf que les données décompressées sont rejetées au lieu d'être écrites sur la sortie standard. Aucun fichier n'est créé ou supprimé."
#. type: TP
-#: ../src/xz/xz.1:368
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-l>, B<--list>"
msgstr "B<-l>, B<--list>"
#. type: Plain text
-#: ../src/xz/xz.1:377
-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 ""
-"Afficher l'information sur les I<fichiers> compressés. Aucune sortie non-"
-"compressée n'est produite et aucun fichier n'est créé ou supprimé. En mode "
-"liste, le programme ne peut pas lire les données compressées depuis l'entrée "
-"standard ou depuis d'autres sources non adressables."
+#: ../src/xz/xz.1
+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 "Afficher l'information sur les I<fichiers> compressés. Aucune sortie non-compressée n'est produite et aucun fichier n'est créé ou supprimé. En mode liste, le programme ne peut pas lire les données compressées depuis l'entrée standard ou depuis d'autres sources non adressables."
#. type: Plain text
-#: ../src/xz/xz.1:392
-#, fuzzy
-#| 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."
-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, for "
-"example, B<less\\ -S> may be convenient if the terminal isn't wide enough."
-msgstr ""
-"Le listing par défaut montre les informations basiques des I<fichiers>, un "
-"fichier par ligne. Pour des informations plus détaillées, utilisez aussi "
-"l'option B<--verbose>. Pour encore plus d'informations, utilisez B<--"
-"verbose> deux fois, mais prenez en compte que cela peut être lent, car "
-"obtenir des informations supplémentaires nécessite de nombreuses recherches. "
-"La largeur de la sortie «bavarde» dépasse 80 caractères, alors canaliser la "
-"sortie (par exemple vers \\&B<less\\-S>) peut être pratique si le terminal "
-"n'est pas assez large."
-
-#. type: Plain text
-#: ../src/xz/xz.1:399
-msgid ""
-"The exact output may vary between B<xz> versions and different locales. For "
-"machine-readable output, B<--robot --list> should be used."
+#: ../src/xz/xz.1
+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, for example, B<less\\ -S> may be convenient if the terminal isn't wide enough."
msgstr ""
-"La sortie exacte peut varier suivant les versions de B<xz> et les différents "
-"paramètres régionaux. Pour une sortie lisible par la machine, utiliser B<--"
-"robot --list>."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The exact output may vary between B<xz> versions and different locales. For machine-readable output, B<--robot --list> should be used."
+msgstr "La sortie exacte peut varier suivant les versions de B<xz> et les différents paramètres régionaux. Pour une sortie lisible par la machine, utiliser B<--robot --list>."
#. type: SS
-#: ../src/xz/xz.1:400
+#: ../src/xz/xz.1
#, no-wrap
msgid "Operation modifiers"
msgstr "Modificateurs d'opération"
#. type: TP
-#: ../src/xz/xz.1:401 ../src/xzdec/xzdec.1:69
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-k>, B<--keep>"
msgstr "B<-k>, B<--keep>"
#. type: Plain text
-#: ../src/xz/xz.1:404
+#: ../src/xz/xz.1
msgid "Don't delete the input files."
msgstr "Ne pas effacer les fichiers d'entrée."
#. type: Plain text
-#: ../src/xz/xz.1:418
+#: ../src/xz/xz.1
#, fuzzy
-#| 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."
-msgid ""
-"Since B<xz> 5.2.6, this option also makes B<xz> compress or decompress even "
-"if the input is a symbolic link to a regular file, has more than one hard "
-"link, or has the setuid, setgid, or sticky bit set. The setuid, setgid, and "
-"sticky bits are not copied to the target file. In earlier versions this was "
-"only done with B<--force>."
-msgstr ""
-"Compresser ou décompresser même si l'entrée est un lien symbolique vers un "
-"fichier normal, a plus qu'un lien physique, ou a le bit setuid, setgid ou "
-"sticky défini. Les bits setuid, setgid et sticky bits ne sont pas copiés "
-"dans le fichier cible."
+#| 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."
+msgid "Since B<xz> 5.2.6, this option also makes B<xz> compress or decompress even if the input is a symbolic link to a regular file, has more than one hard link, or has the setuid, setgid, or sticky bit set. The setuid, setgid, and sticky bits are not copied to the target file. In earlier versions this was only done with B<--force>."
+msgstr "Compresser ou décompresser même si l'entrée est un lien symbolique vers un fichier normal, a plus qu'un lien physique, ou a le bit setuid, setgid ou sticky défini. Les bits setuid, setgid et sticky bits ne sont pas copiés dans le fichier cible."
#. type: TP
-#: ../src/xz/xz.1:418
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-f>, B<--force>"
msgstr "B<-f>, B<--force>"
#. type: Plain text
-#: ../src/xz/xz.1:421
+#: ../src/xz/xz.1
msgid "This option has several effects:"
msgstr "Cette option a plusieurs effets :"
#. type: Plain text
-#: ../src/xz/xz.1:425
-msgid ""
-"If the target file already exists, delete it before compressing or "
-"decompressing."
-msgstr ""
-"Si le fichier cible existe déjà, l'effacer avant de compresser ou "
-"décompresser."
+#: ../src/xz/xz.1
+msgid "If the target file already exists, delete it before compressing or decompressing."
+msgstr "Si le fichier cible existe déjà, l'effacer avant de compresser ou décompresser."
#. type: Plain text
-#: ../src/xz/xz.1:432
-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 ""
-"Compresser ou décompresser même si l'entrée est un lien symbolique vers un "
-"fichier normal, a plus qu'un lien physique, ou a le bit setuid, setgid ou "
-"sticky défini. Les bits setuid, setgid et sticky bits ne sont pas copiés "
-"dans le fichier cible."
+#: ../src/xz/xz.1
+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 "Compresser ou décompresser même si l'entrée est un lien symbolique vers un fichier normal, a plus qu'un lien physique, ou a le bit setuid, setgid ou sticky défini. Les bits setuid, setgid et sticky bits ne sont pas copiés dans le fichier cible."
#. type: Plain text
-#: ../src/xz/xz.1:457
-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 ""
-"Lorsque B<xz> est utilisé avec B<--decompress> B<--stdout> et qu'il ne peut "
-"pas reconnaitre le type du fichier source, copier le fichier source tel quel "
-"dans la sortie standard. Celà permet à B<xzcat> B<--force> d'être utilisé "
-"comme B<cat>(1) pour les fichiers qui n'ont pas été compressé avec B<xz>. "
-"Remarquez que dans le futur, B<xz> devrait prendre en charge de nouveaux "
-"formats de fichiers compressés, ce qui permettra à B<xz> de décompresser "
-"plus de types de fichiers au lieu de les copier tels quels dans la sortie "
-"standard. B<--format=>I<format> peut être utilisé pour contraindre B<xz> à "
-"décompresser seulement un format de fichier."
+#: ../src/xz/xz.1
+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 "Lorsque B<xz> est utilisé avec B<--decompress> B<--stdout> et qu'il ne peut pas reconnaitre le type du fichier source, copier le fichier source tel quel dans la sortie standard. Celà permet à B<xzcat> B<--force> d'être utilisé comme B<cat>(1) pour les fichiers qui n'ont pas été compressé avec B<xz>. Remarquez que dans le futur, B<xz> devrait prendre en charge de nouveaux formats de fichiers compressés, ce qui permettra à B<xz> de décompresser plus de types de fichiers au lieu de les copier tels quels dans la sortie standard. B<--format=>I<format> peut être utilisé pour contraindre B<xz> à décompresser seulement un format de fichier."
#. type: TP
-#: ../src/xz/xz.1:458 ../src/xzdec/xzdec.1:76
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, 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:464
-msgid ""
-"Write the compressed or decompressed data to standard output instead of a "
-"file. This implies B<--keep>."
-msgstr ""
-"Écrire les données compressées ou décompressées sur la sortie standard "
-"plutôt que dans un fichier. Cela necessite B<--keep>."
+#: ../src/xz/xz.1
+msgid "Write the compressed or decompressed data to standard output instead of a file. This implies B<--keep>."
+msgstr "Écrire les données compressées ou décompressées sur la sortie standard plutôt que dans un fichier. Cela necessite B<--keep>."
#. type: TP
-#: ../src/xz/xz.1:464
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--single-stream>"
msgstr "B<--single-stream>"
#. type: Plain text
-#: ../src/xz/xz.1:473
-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 ""
-"Décompresser seulement le premier flux B<.xz> et ignorer silencieusement les "
-"possibles données d'entrée résiduelles qui suivent le flux. Normalement ces "
-"déchets excédentaires provoquent l'affichage d'une erreur par B<xz>."
+#: ../src/xz/xz.1
+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 "Décompresser seulement le premier flux B<.xz> et ignorer silencieusement les possibles données d'entrée résiduelles qui suivent le flux. Normalement ces déchets excédentaires provoquent l'affichage d'une erreur par B<xz>."
#. type: Plain text
-#: ../src/xz/xz.1:482
-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> ne décompresse jamais plus d'un flux à partir de fichiers B<.lzma> ou "
-"de flux bruts, mais cette option fait aussi que B<xz> ignorera les données "
-"résiduelles après le fichier B<.lzma> ou le flux brut."
+#: ../src/xz/xz.1
+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> ne décompresse jamais plus d'un flux à partir de fichiers B<.lzma> ou de flux bruts, mais cette option fait aussi que B<xz> ignorera les données résiduelles après le fichier B<.lzma> ou le flux brut."
#. type: Plain text
-#: ../src/xz/xz.1:487
-msgid ""
-"This option has no effect if the operation mode is not B<--decompress> or "
-"B<--test>."
-msgstr ""
-"Cette option n'a aucun effet si le mode d'opération n'est pas B<--"
-"decompress> ou B<--test>."
+#: ../src/xz/xz.1
+msgid "This option has no effect if the operation mode is not B<--decompress> or B<--test>."
+msgstr "Cette option n'a aucun effet si le mode d'opération n'est pas B<--decompress> ou B<--test>."
#. type: TP
-#: ../src/xz/xz.1:487
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--no-sparse>"
msgstr "B<--no-sparse>"
#. type: Plain text
-#: ../src/xz/xz.1:499
-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 ""
-"Désactiver la création de fichiers peu denses. Par défaut, lors de la "
-"décompression en un fichier normal, B<xz> essaie d'en faire un fichier creux "
-"si les données décompressées contiennent de longues séquences de zéros "
-"binaires. Cela fonctionne aussi lors de l'écriture sur la sortie standard "
-"aussi longtemps que la sortie standard est connectée à un fichier normal et "
-"que certaines conditions supplémentaires sont satisfaites pour le faire de "
-"manière sécurisée. Créer des fichiers creux peut épargner de l'espace disque "
-"et accélérer la décompression en réduisant la quantité d'entrées/sorties sur "
-"le disque."
+#: ../src/xz/xz.1
+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 "Désactiver la création de fichiers peu denses. Par défaut, lors de la décompression en un fichier normal, B<xz> essaie d'en faire un fichier creux si les données décompressées contiennent de longues séquences de zéros binaires. Cela fonctionne aussi lors de l'écriture sur la sortie standard aussi longtemps que la sortie standard est connectée à un fichier normal et que certaines conditions supplémentaires sont satisfaites pour le faire de manière sécurisée. Créer des fichiers creux peut épargner de l'espace disque et accélérer la décompression en réduisant la quantité d'entrées/sorties sur le disque."
#. type: TP
-#: ../src/xz/xz.1:499
+#: ../src/xz/xz.1
#, 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:511
-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 ""
-"Lors de la compression, utiliser B<.suf> comme suffixe du fichier cible au "
-"lieu de B<.xz> ou B<.lzma>. Si B<xz> n'écrit pas sur la sortie standard et "
-"si le fichier source a déja le suffixe B<.suf>, un avertissement est affiché "
-"et le fichier est ignoré."
+#: ../src/xz/xz.1
+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 "Lors de la compression, utiliser B<.suf> comme suffixe du fichier cible au lieu de B<.xz> ou B<.lzma>. Si B<xz> n'écrit pas sur la sortie standard et si le fichier source a déja le suffixe B<.suf>, un avertissement est affiché et le fichier est ignoré."
#. type: Plain text
-#: ../src/xz/xz.1:525
-#, fuzzy
-#| 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."
-msgid ""
-"When decompressing, recognize files with the suffix I<.suf> in addition to "
-"files with the B<.xz>, B<.txz>, B<.lzma>, B<.tlz>, or B<.lz> suffix. If the "
-"source file has the suffix I<.suf>, the suffix is removed to get the target "
-"filename."
+#: ../src/xz/xz.1
+msgid "When decompressing, recognize files with the suffix I<.suf> in addition to files with the B<.xz>, B<.txz>, B<.lzma>, B<.tlz>, or B<.lz> suffix. If the source file has the suffix I<.suf>, the suffix is removed to get the target filename."
msgstr ""
-"Lors de la décompression, reconnaître les fichiers avec le suffixe B<.suf> "
-"en complément des fichiers avec le suffixe B<.xz>, B<.txz>, B<.lzma> ou B<."
-"tlz>. Si le fichier source a le suffixe B<.suf>, le suffixe est enlevé pour "
-"obtenir le nom de fichier cible."
#. type: Plain text
-#: ../src/xz/xz.1:531
-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 ""
-"Lors de la compression ou décompression de flux bruts (B<--fomat=raw>), le "
-"suffixe doit toujours être spécifié à moins d'écrire sur la sortie standard, "
-"car il n'y a pas de suffixe par défaut pour les flux bruts."
+#: ../src/xz/xz.1
+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 "Lors de la compression ou décompression de flux bruts (B<--fomat=raw>), le suffixe doit toujours être spécifié à moins d'écrire sur la sortie standard, car il n'y a pas de suffixe par défaut pour les flux bruts."
#. type: TP
-#: ../src/xz/xz.1:531
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--files>[B<=>I<file>]"
msgstr "B<--files>[B<=>I<fichier>]"
#. type: Plain text
-#: ../src/xz/xz.1:545
-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 ""
-"Lire les noms de fichier à traiter depuis I<fichier> ; si I<fichier> est "
-"omis , les noms de fichier sont lus sur l'entrée standard. Les noms de "
-"fichier doivent se terminer avec le caractère de nouvelle ligne. Un tiret "
-"(B<->) est considéré comme un nom de fichier normal ; ce qui ne signifie pas "
-"entrée standard. Si les noms de fichier sont aussi donnés comme arguments de "
-"ligne de commande, ils sont traités avant les noms de fichier lus depuis "
-"I<fichier>."
+#: ../src/xz/xz.1
+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 "Lire les noms de fichier à traiter depuis I<fichier> ; si I<fichier> est omis , les noms de fichier sont lus sur l'entrée standard. Les noms de fichier doivent se terminer avec le caractère de nouvelle ligne. Un tiret (B<->) est considéré comme un nom de fichier normal ; ce qui ne signifie pas entrée standard. Si les noms de fichier sont aussi donnés comme arguments de ligne de commande, ils sont traités avant les noms de fichier lus depuis I<fichier>."
#. type: TP
-#: ../src/xz/xz.1:545
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--files0>[B<=>I<file>]"
msgstr "B<--files0>[B<=>I<fichier>]"
#. type: Plain text
-#: ../src/xz/xz.1:549
-msgid ""
-"This is identical to B<--files>[B<=>I<file>] except that each filename must "
-"be terminated with the null character."
-msgstr ""
-"Cela est identique à B<--files>[B<=>I<fichier>] sauf que chaque nom de "
-"fichier doit se terminer par le caractère null."
+#: ../src/xz/xz.1
+msgid "This is identical to B<--files>[B<=>I<file>] except that each filename must be terminated with the null character."
+msgstr "Cela est identique à B<--files>[B<=>I<fichier>] sauf que chaque nom de fichier doit se terminer par le caractère null."
#. type: SS
-#: ../src/xz/xz.1:550
+#: ../src/xz/xz.1
#, no-wrap
msgid "Basic file format and compression options"
msgstr "Format de fichier basique et options de compression"
#. type: TP
-#: ../src/xz/xz.1:551
+#: ../src/xz/xz.1
#, 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:556
+#: ../src/xz/xz.1
msgid "Specify the file I<format> to compress or decompress:"
msgstr "Indiquer le I<format> de fichier à compresser ou décompresser :"
#. type: TP
-#: ../src/xz/xz.1:557
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<auto>"
msgstr "B<auto>"
#. type: Plain text
-#: ../src/xz/xz.1:569
-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 ""
-"C'est celui par défaut. Lors de la compression, B<auto> est équivalent à "
-"B<xz>. Lors de la décompression, le format du fichier en entrée est détecté "
-"automatiquement. Notez que les flux bruts (créés avec B<--format=raw>) ne "
-"peuvent pas être détectés automatiquement."
+#: ../src/xz/xz.1
+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 "C'est celui par défaut. Lors de la compression, B<auto> est équivalent à B<xz>. Lors de la décompression, le format du fichier en entrée est détecté automatiquement. Notez que les flux bruts (créés avec B<--format=raw>) ne peuvent pas être détectés automatiquement."
#. type: TP
-#: ../src/xz/xz.1:569
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<xz>"
msgstr "B<xz>"
#. type: Plain text
-#: ../src/xz/xz.1:576
-msgid ""
-"Compress to the B<.xz> file format, or accept only B<.xz> files when "
-"decompressing."
-msgstr ""
-"Compresser dans le format de fichier B<.xz> ou n'accepter que les fichiers "
-"B<.xz> à décompresser."
+#: ../src/xz/xz.1
+msgid "Compress to the B<.xz> file format, or accept only B<.xz> files when decompressing."
+msgstr "Compresser dans le format de fichier B<.xz> ou n'accepter que les fichiers B<.xz> à décompresser."
#. type: TP
-#: ../src/xz/xz.1:576
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lzma>, B<alone>"
msgstr "B<lzma>, B<alone>"
#. type: Plain text
-#: ../src/xz/xz.1:586
-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 ""
-"Compresser au format de fichier B<.lzma> historique, ou n'accepter que les "
-"fichiers B<.lzma> lors de la décompression. Le nom alternatif B<alone> est "
-"fourni pour la rétrocompatibilité avec les utilitaires LZMA."
+#: ../src/xz/xz.1
+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 "Compresser au format de fichier B<.lzma> historique, ou n'accepter que les fichiers B<.lzma> lors de la décompression. Le nom alternatif B<alone> est fourni pour la rétrocompatibilité avec les utilitaires LZMA."
#. type: TP
-#: ../src/xz/xz.1:586
-#, fuzzy, no-wrap
-#| msgid "B<lzgrep> ..."
+#: ../src/xz/xz.1
+#, no-wrap
msgid "B<lzip>"
-msgstr "B<lzgrep> ..."
+msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:592
-msgid ""
-"Accept only B<.lz> files when decompressing. Compression is not supported."
+#: ../src/xz/xz.1
+msgid "Accept only B<.lz> files when decompressing. Compression is not supported."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:605
-msgid ""
-"The B<.lz> format version 0 and the unextended version 1 are supported. "
-"Version 0 files were produced by B<lzip> 1.3 and older. Such files aren't "
-"common but may be found from file archives as a few source packages were "
-"released in this format. People might have old personal files in this "
-"format too. Decompression support for the format version 0 was removed in "
-"B<lzip> 1.18."
+#: ../src/xz/xz.1
+msgid "The B<.lz> format version 0 and the unextended version 1 are supported. Version 0 files were produced by B<lzip> 1.3 and older. Such files aren't common but may be found from file archives as a few source packages were released in this format. People might have old personal files in this format too. Decompression support for the format version 0 was removed in B<lzip> 1.18."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:614
-msgid ""
-"B<lzip> 1.4 and later create files in the format version 1. The sync flush "
-"marker extension to the format version 1 was added in B<lzip> 1.6. This "
-"extension is rarely used and isn't supported by B<xz> (diagnosed as corrupt "
-"input)."
+#: ../src/xz/xz.1
+msgid "B<lzip> 1.4 and later create files in the format version 1. The sync flush marker extension to the format version 1 was added in B<lzip> 1.6. This extension is rarely used and isn't supported by B<xz> (diagnosed as corrupt input)."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:614
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<raw>"
msgstr "B<raw>"
#. type: Plain text
-#: ../src/xz/xz.1:622
-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 ""
-"Compresser ou décompresser un flux brut (sans en-têtes). Cela est réservé "
-"seulement aux utilisateurs aguerris. Pour décoder des flux bruts, vous devez "
-"utiliser B<--format=raw> et spécifier explicitement la chaîne de filtre, qui "
-"normalement aurait du être stockée dans les en-têtes du conteneur."
+#: ../src/xz/xz.1
+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 "Compresser ou décompresser un flux brut (sans en-têtes). Cela est réservé seulement aux utilisateurs aguerris. Pour décoder des flux bruts, vous devez utiliser B<--format=raw> et spécifier explicitement la chaîne de filtre, qui normalement aurait du être stockée dans les en-têtes du conteneur."
#. type: TP
-#: ../src/xz/xz.1:623
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-C> I<check>, B<--check=>I<check>"
msgstr "B<-C> I<vérif.>, B<--check=>I<vérif.>"
#. type: Plain text
-#: ../src/xz/xz.1:638
-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 ""
-"Spécifier le type d'intégrité à vérifier. La vérification est calculée à "
-"partir des données non-compressées et stockées dans le fichier B<.xz>. Cette "
-"option n'a effet que si la compression a été faite dans le format B<.xz> ; "
-"le format B<.lzma> ne gère pas les vérifications d'intégrité. Le contrôle "
-"d'intégrité (s'il y en a) est vérifié lorsque le fichier B<.xz> est "
-"décompressé."
+#: ../src/xz/xz.1
+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 "Spécifier le type d'intégrité à vérifier. La vérification est calculée à partir des données non-compressées et stockées dans le fichier B<.xz>. Cette option n'a effet que si la compression a été faite dans le format B<.xz> ; le format B<.lzma> ne gère pas les vérifications d'intégrité. Le contrôle d'intégrité (s'il y en a) est vérifié lorsque le fichier B<.xz> est décompressé."
#. type: Plain text
-#: ../src/xz/xz.1:642
+#: ../src/xz/xz.1
msgid "Supported I<check> types:"
msgstr "Types de I<vérification> pris en charge :"
#. type: TP
-#: ../src/xz/xz.1:643
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<none>"
msgstr "B<none>"
#. type: Plain text
-#: ../src/xz/xz.1:649
-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 ""
-"Ne pas calculer de vérification d'intégrité du tout. C'est généralement une "
-"mauvaise idée. Cela peut être utile lorsque l'intégrité des données est "
-"vérifiée de toute façon par d'autres manières."
+#: ../src/xz/xz.1
+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 "Ne pas calculer de vérification d'intégrité du tout. C'est généralement une mauvaise idée. Cela peut être utile lorsque l'intégrité des données est vérifiée de toute façon par d'autres manières."
#. type: TP
-#: ../src/xz/xz.1:649
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<crc32>"
msgstr "B<crc32>"
#. type: Plain text
-#: ../src/xz/xz.1:652
+#: ../src/xz/xz.1
msgid "Calculate CRC32 using the polynomial from IEEE-802.3 (Ethernet)."
msgstr "Calculer CRC32 en utilisant le polynôme de IEEE-802.3 (Ethernet)."
#. type: TP
-#: ../src/xz/xz.1:652
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<crc64>"
msgstr "B<crc64>"
#. type: Plain text
-#: ../src/xz/xz.1:657
-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 ""
-"Calculer CRC64 en utilisant le polynôme de ECMA-182. C'est la manière "
-"utilisée par défaut, car c'est légèrement mieux que CRC32 pour détecter les "
-"fichiers endommagés et la différence de vitesse est négligeable."
+#: ../src/xz/xz.1
+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 "Calculer CRC64 en utilisant le polynôme de ECMA-182. C'est la manière utilisée par défaut, car c'est légèrement mieux que CRC32 pour détecter les fichiers endommagés et la différence de vitesse est négligeable."
#. type: TP
-#: ../src/xz/xz.1:657
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<sha256>"
msgstr "B<sha256>"
#. type: Plain text
-#: ../src/xz/xz.1:661
+#: ../src/xz/xz.1
msgid "Calculate SHA-256. This is somewhat slower than CRC32 and CRC64."
msgstr "Calculer SHA-256. C'est quelque peu plus lent que CRC32 et CRC64."
#. type: Plain text
-#: ../src/xz/xz.1:667
-msgid ""
-"Integrity of the B<.xz> headers is always verified with CRC32. It is not "
-"possible to change or disable it."
-msgstr ""
-"L'intégrité des en-têtes B<.xz> est toujours vérifiée avec CRC32. Il n'est "
-"pas possible de le changer ou de le désactiver."
+#: ../src/xz/xz.1
+msgid "Integrity of the B<.xz> headers is always verified with CRC32. It is not possible to change or disable it."
+msgstr "L'intégrité des en-têtes B<.xz> est toujours vérifiée avec CRC32. Il n'est pas possible de le changer ou de le désactiver."
#. type: TP
-#: ../src/xz/xz.1:667
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--ignore-check>"
msgstr "B<--ignore-check>"
#. type: Plain text
-#: ../src/xz/xz.1:673
-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 ""
-"Ne pas contrôler la vérification d'intégrité des données lors de la "
-"décompression. Les valeurs CRC32 dans les en-têtes B<.xz> seront normalement "
-"toujours vérifiées."
+#: ../src/xz/xz.1
+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 "Ne pas contrôler la vérification d'intégrité des données lors de la décompression. Les valeurs CRC32 dans les en-têtes B<.xz> seront normalement toujours vérifiées."
#. type: Plain text
-#: ../src/xz/xz.1:676
-msgid ""
-"B<Do not use this option unless you know what you are doing.> Possible "
-"reasons to use this option:"
-msgstr ""
-"B<N'utilisez pas cette option à moins de savoir ce que vous faites.> Les "
-"raisons possibles pour utiliser cette option :"
+#: ../src/xz/xz.1
+msgid "B<Do not use this option unless you know what you are doing.> Possible reasons to use this option:"
+msgstr "B<N'utilisez pas cette option à moins de savoir ce que vous faites.> Les raisons possibles pour utiliser cette option :"
#. type: Plain text
-#: ../src/xz/xz.1:679
+#: ../src/xz/xz.1
msgid "Trying to recover data from a corrupt .xz file."
msgstr "Essayer de récupérer des données d'un fichier .xz corrompu."
#. type: Plain text
-#: ../src/xz/xz.1:685
-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 ""
-"Accélérer la décompression. Cela importe surtout avec SHA-256 ou avec les "
-"fichiers qui ont été compressés extrêmement bien. Il est recommandé de ne "
-"pas utiliser cette option dans ce but à moins que l'intégrité du fichier ne "
-"soit vérifiée extérieurement d'une autre manière."
+#: ../src/xz/xz.1
+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 "Accélérer la décompression. Cela importe surtout avec SHA-256 ou avec les fichiers qui ont été compressés extrêmement bien. Il est recommandé de ne pas utiliser cette option dans ce but à moins que l'intégrité du fichier ne soit vérifiée extérieurement d'une autre manière."
#. type: TP
-#: ../src/xz/xz.1:686
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-0> ... B<-9>"
msgstr "B<-0> ... B<-9>"
#. type: Plain text
-#: ../src/xz/xz.1:695
-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 ""
-"Choisir un niveau de compression prédéfini. La valeur par défaut est B<6>. "
-"Si plusieurs niveaux de préréglage sont spécifiés, c'est le dernier qui sera "
-"pris en compte. Si une chaîne de filtres personnalisée a déjà été choisie, "
-"définir un niveau de compression préréglé efface la chaîne de filtres "
-"personnalisée."
+#: ../src/xz/xz.1
+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 "Choisir un niveau de compression prédéfini. La valeur par défaut est B<6>. Si plusieurs niveaux de préréglage sont spécifiés, c'est le dernier qui sera pris en compte. Si une chaîne de filtres personnalisée a déjà été choisie, définir un niveau de compression préréglé efface la chaîne de filtres personnalisée."
#. type: Plain text
-#: ../src/xz/xz.1:710
-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 ""
-"Les différences entre les préréglages sont plus significatives qu'avec "
-"B<gzip>(1) et B<bzip2>(1). les réglages de compression sélectionnés "
-"déterminent les exigences en mémoire pour la décompression, ainsi, utiliser "
-"un niveau de préréglage trop élevé peut rendre difficile à décompresser un "
-"fichier sur un vieux système avec peu de RAM. Clairement, B<ce n'est pas une "
-"bonne idée d'utiliser -9 aveuglément pour tout> comme ça l'est souvent avec "
-"B<gzip>(1) et B<bzip2>(1)."
+#: ../src/xz/xz.1
+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 "Les différences entre les préréglages sont plus significatives qu'avec B<gzip>(1) et B<bzip2>(1). les réglages de compression sélectionnés déterminent les exigences en mémoire pour la décompression, ainsi, utiliser un niveau de préréglage trop élevé peut rendre difficile à décompresser un fichier sur un vieux système avec peu de RAM. Clairement, B<ce n'est pas une bonne idée d'utiliser -9 aveuglément pour tout> comme ça l'est souvent avec B<gzip>(1) et B<bzip2>(1)."
#. type: TP
-#: ../src/xz/xz.1:711
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-0> ... B<-3>"
msgstr "B<-0> ... B<-3>"
#. type: Plain text
-#: ../src/xz/xz.1:723
-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 ""
-"Ce sont des préréglages relativement rapides. B<0> est parfois plus rapide "
-"que B<gzip -9> tout en compressant bien mieux. Les réglages plus élevés ont "
-"souvent une rapidité comparable à celle de B<bzip2>(1) avec un taux de "
-"compression comparable ou meilleur, même si les résultats dépendent beaucoup "
-"du genre de données compressées."
+#: ../src/xz/xz.1
+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 "Ce sont des préréglages relativement rapides. B<0> est parfois plus rapide que B<gzip -9> tout en compressant bien mieux. Les réglages plus élevés ont souvent une rapidité comparable à celle de B<bzip2>(1) avec un taux de compression comparable ou meilleur, même si les résultats dépendent beaucoup du genre de données compressées."
#. type: TP
-#: ../src/xz/xz.1:723
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-4> ... B<-6>"
msgstr "B<-4> ... B<-6>"
#. type: Plain text
-#: ../src/xz/xz.1:737
-#, fuzzy
-#| 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>.)"
-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 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 ""
-"Bonne à très bonne compression tout en gardant un usage raisonnable de la "
-"mémoire lors de la décompression même pour de vieux systèmes. La valeur par "
-"défaut est B<-6>, ce qui est habituellement un bon choix (par exemple pour "
-"distribuer des fichiers nécessitants d'être décompressibles même sur de "
-"vieux systèmes avec seulement 16\\Mio de RAM). (Il peut aussi être "
-"intéressant d'utiliser B<-5e> ou B<-6e>. Voir B<--extreme>.)"
+#: ../src/xz/xz.1
+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 for distributing files that need to be decompressible even on systems with only 16\\ MiB RAM. (B<-5e> or B<-6e> may be worth considering too. See B<--extreme>.)"
+msgstr ""
#. type: TP
-#: ../src/xz/xz.1:737
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-7 ... -9>"
msgstr "B<-7 ... -9>"
#. type: Plain text
-#: ../src/xz/xz.1:744
-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 ""
-"C'est comme B<-6> mais avec des besoins en mémoire plus élevés pour la "
-"compression et la décompression. Ce n'est utile que lorsque les fichiers "
-"sont plus gros que 8\\ Mio, 16\\ Mio et 32\\ Mio respectivement."
+#: ../src/xz/xz.1
+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 "C'est comme B<-6> mais avec des besoins en mémoire plus élevés pour la compression et la décompression. Ce n'est utile que lorsque les fichiers sont plus gros que 8\\ Mio, 16\\ Mio et 32\\ Mio respectivement."
#. type: Plain text
-#: ../src/xz/xz.1:752
-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 ""
-"Sur le même matériel, la vitesse de décompression est sensiblement un nombre "
-"constant d'octets de données compressées par seconde. En d'autres termes, "
-"meilleure est la compression, plus rapide sera en général la décompression. "
-"Cela signifie aussi que la quantité de sortie non compressée produite par "
-"seconde peut varier beaucoup."
+#: ../src/xz/xz.1
+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 "Sur le même matériel, la vitesse de décompression est sensiblement un nombre constant d'octets de données compressées par seconde. En d'autres termes, meilleure est la compression, plus rapide sera en général la décompression. Cela signifie aussi que la quantité de sortie non compressée produite par seconde peut varier beaucoup."
#. type: Plain text
-#: ../src/xz/xz.1:754
+#: ../src/xz/xz.1
msgid "The following table summarises the features of the presets:"
msgstr "Le tableau suivant résume les caractéristiques des préréglages :"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842 ../src/xz/xz.1:2839
+#: ../src/xz/xz.1
#, no-wrap
msgid "Preset"
msgstr "Préréglage"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842
+#: ../src/xz/xz.1
#, no-wrap
msgid "DictSize"
msgstr "DictSize"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842 ../src/xz/xz.1:2839
+#: ../src/xz/xz.1
#, no-wrap
msgid "CompCPU"
msgstr "CompCPU"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842
+#: ../src/xz/xz.1
#, no-wrap
msgid "CompMem"
msgstr "CompMem"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842
+#: ../src/xz/xz.1
#, no-wrap
msgid "DecMem"
msgstr "DecMem"
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:2450 ../src/xz/xz.1:2475
-#: ../src/xz/xz.1:2840
+#: ../src/xz/xz.1
#, no-wrap
msgid "-0"
msgstr "-0"
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:843 ../src/xz/xz.1:2450
+#: ../src/xz/xz.1
#, no-wrap
msgid "256 KiB"
msgstr "256 KiB"
#. type: TP
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:2840 ../src/scripts/xzgrep.1:82
+#: ../src/xz/xz.1 ../src/scripts/xzgrep.1
#, no-wrap
msgid "0"
msgstr "0"
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:764 ../src/xz/xz.1:845 ../src/xz/xz.1:2475
+#: ../src/xz/xz.1
#, no-wrap
msgid "3 MiB"
msgstr "3 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:763 ../src/xz/xz.1:843 ../src/xz/xz.1:844
-#: ../src/xz/xz.1:2451 ../src/xz/xz.1:2452 ../src/xz/xz.1:2454
+#: ../src/xz/xz.1
#, no-wrap
msgid "1 MiB"
msgstr "1 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:2451 ../src/xz/xz.1:2476
-#: ../src/xz/xz.1:2841
+#: ../src/xz/xz.1
#, no-wrap
msgid "-1"
msgstr "-1"
#. type: TP
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:1758 ../src/xz/xz.1:2841
-#: ../src/scripts/xzgrep.1:86
+#: ../src/xz/xz.1 ../src/scripts/xzgrep.1
#, no-wrap
msgid "1"
msgstr "1"
#. type: tbl table
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:767 ../src/xz/xz.1:768 ../src/xz/xz.1:848
-#: ../src/xz/xz.1:849 ../src/xz/xz.1:2476
+#: ../src/xz/xz.1
#, no-wrap
msgid "9 MiB"
msgstr "9 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:764 ../src/xz/xz.1:844 ../src/xz/xz.1:845
-#: ../src/xz/xz.1:2452 ../src/xz/xz.1:2455 ../src/xz/xz.1:2476
+#: ../src/xz/xz.1
#, no-wrap
msgid "2 MiB"
msgstr "2 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:764 ../src/xz/xz.1:2452 ../src/xz/xz.1:2477
-#: ../src/xz/xz.1:2842
+#: ../src/xz/xz.1
#, no-wrap
msgid "-2"
msgstr "-2"
#. type: tbl table
-#: ../src/xz/xz.1:764 ../src/xz/xz.1:1760 ../src/xz/xz.1:2842
+#: ../src/xz/xz.1
#, no-wrap
msgid "2"
msgstr "2"
#. type: tbl table
-#: ../src/xz/xz.1:764 ../src/xz/xz.1:769 ../src/xz/xz.1:850 ../src/xz/xz.1:2477
+#: ../src/xz/xz.1
#, no-wrap
msgid "17 MiB"
msgstr "17 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:2453 ../src/xz/xz.1:2478
-#: ../src/xz/xz.1:2843
+#: ../src/xz/xz.1
#, no-wrap
msgid "-3"
msgstr "-3"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:766 ../src/xz/xz.1:843 ../src/xz/xz.1:846
-#: ../src/xz/xz.1:847 ../src/xz/xz.1:2453 ../src/xz/xz.1:2454
-#: ../src/xz/xz.1:2456
+#: ../src/xz/xz.1
#, no-wrap
msgid "4 MiB"
msgstr "4 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:2843
+#: ../src/xz/xz.1
#, no-wrap
msgid "3"
msgstr "3"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:770 ../src/xz/xz.1:851 ../src/xz/xz.1:2458
-#: ../src/xz/xz.1:2459 ../src/xz/xz.1:2478
+#: ../src/xz/xz.1
#, no-wrap
msgid "32 MiB"
msgstr "32 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:766 ../src/xz/xz.1:846 ../src/xz/xz.1:847
+#: ../src/xz/xz.1
#, no-wrap
msgid "5 MiB"
msgstr "5 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:766 ../src/xz/xz.1:2454 ../src/xz/xz.1:2479
-#: ../src/xz/xz.1:2844
+#: ../src/xz/xz.1
#, no-wrap
msgid "-4"
msgstr "-4"
#. type: tbl table
-#: ../src/xz/xz.1:766 ../src/xz/xz.1:1759 ../src/xz/xz.1:1761
-#: ../src/xz/xz.1:1762 ../src/xz/xz.1:1764 ../src/xz/xz.1:2844
+#: ../src/xz/xz.1
#, no-wrap
msgid "4"
msgstr "4"
#. type: tbl table
-#: ../src/xz/xz.1:766 ../src/xz/xz.1:846 ../src/xz/xz.1:847 ../src/xz/xz.1:2479
+#: ../src/xz/xz.1
#, no-wrap
msgid "48 MiB"
msgstr "48 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:2455 ../src/xz/xz.1:2480
-#: ../src/xz/xz.1:2845
+#: ../src/xz/xz.1
#, no-wrap
msgid "-5"
msgstr "-5"
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:768 ../src/xz/xz.1:848 ../src/xz/xz.1:849
-#: ../src/xz/xz.1:2455 ../src/xz/xz.1:2456 ../src/xz/xz.1:2457
+#: ../src/xz/xz.1
#, no-wrap
msgid "8 MiB"
msgstr "8 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:2845
+#: ../src/xz/xz.1
#, no-wrap
msgid "5"
msgstr "5"
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:768 ../src/xz/xz.1:848 ../src/xz/xz.1:849
-#: ../src/xz/xz.1:2480 ../src/xz/xz.1:2481
+#: ../src/xz/xz.1
#, no-wrap
msgid "94 MiB"
msgstr "94 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:768 ../src/xz/xz.1:2456 ../src/xz/xz.1:2481
-#: ../src/xz/xz.1:2846
+#: ../src/xz/xz.1
#, no-wrap
msgid "-6"
msgstr "-6"
#. type: tbl table
-#: ../src/xz/xz.1:768 ../src/xz/xz.1:769 ../src/xz/xz.1:770 ../src/xz/xz.1:771
-#: ../src/xz/xz.1:2846
+#: ../src/xz/xz.1
#, no-wrap
msgid "6"
msgstr "6"
#. type: tbl table
-#: ../src/xz/xz.1:769 ../src/xz/xz.1:2457 ../src/xz/xz.1:2482
+#: ../src/xz/xz.1
#, no-wrap
msgid "-7"
msgstr "-7"
#. type: tbl table
-#: ../src/xz/xz.1:769 ../src/xz/xz.1:850 ../src/xz/xz.1:2457
-#: ../src/xz/xz.1:2458 ../src/xz/xz.1:2479
+#: ../src/xz/xz.1
#, no-wrap
msgid "16 MiB"
msgstr "16 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:769 ../src/xz/xz.1:850 ../src/xz/xz.1:2482
+#: ../src/xz/xz.1
#, no-wrap
msgid "186 MiB"
msgstr "186 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:770 ../src/xz/xz.1:2458 ../src/xz/xz.1:2483
+#: ../src/xz/xz.1
#, no-wrap
msgid "-8"
msgstr "-8"
#. type: tbl table
-#: ../src/xz/xz.1:770 ../src/xz/xz.1:851 ../src/xz/xz.1:2483
+#: ../src/xz/xz.1
#, no-wrap
msgid "370 MiB"
msgstr "370 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:770 ../src/xz/xz.1:851
+#: ../src/xz/xz.1
#, no-wrap
msgid "33 MiB"
msgstr "33 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:2459 ../src/xz/xz.1:2484
+#: ../src/xz/xz.1
#, no-wrap
msgid "-9"
msgstr "-9"
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:852 ../src/xz/xz.1:2459
+#: ../src/xz/xz.1
#, no-wrap
msgid "64 MiB"
msgstr "64 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:852 ../src/xz/xz.1:2484
+#: ../src/xz/xz.1
#, no-wrap
msgid "674 MiB"
msgstr "674 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:852
+#: ../src/xz/xz.1
#, no-wrap
msgid "65 MiB"
msgstr "65 MiB"
#. type: Plain text
-#: ../src/xz/xz.1:777
+#: ../src/xz/xz.1
msgid "Column descriptions:"
msgstr "Descriptions des colonnes :"
#. type: Plain text
-#: ../src/xz/xz.1:789
-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 ""
-"DictSize est la taille du dictionnaire de LZMA2. Utiliser un dictionnaire "
-"plus gros que la taille du fichier non compressé est un gaspillage de "
-"mémoire. C'est pourquoi il est bon d'éviter d'utiliser les préréglages de "
-"B<-7> à B<-9> lorsqu'il n'y en a pas vraiment besoin. A B<-6> et plus bas, "
-"la quantité de mémoire gaspillée est généralement assez basse pour ne pas "
-"être un problème."
+#: ../src/xz/xz.1
+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 "DictSize est la taille du dictionnaire de LZMA2. Utiliser un dictionnaire plus gros que la taille du fichier non compressé est un gaspillage de mémoire. C'est pourquoi il est bon d'éviter d'utiliser les préréglages de B<-7> à B<-9> lorsqu'il n'y en a pas vraiment besoin. A B<-6> et plus bas, la quantité de mémoire gaspillée est généralement assez basse pour ne pas être un problème."
#. type: Plain text
-#: ../src/xz/xz.1:798
-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 ""
-"CompCPU est une représentation des préréglages de LZMA2 qui affectent la "
-"vitesse de compression. La taille du dictionnaire aussi affecte la vitesse, "
-"alors comme CompCPU est le même pour les niveaux de B<-6> à B<-9>, les plus "
-"haut niveaux tendent à être un peu moins rapides. Pour être encore moins "
-"rapide et du coup obtenir peut être une meilleure compression, consultez B<--"
-"extreme>."
+#: ../src/xz/xz.1
+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 "CompCPU est une représentation des préréglages de LZMA2 qui affectent la vitesse de compression. La taille du dictionnaire aussi affecte la vitesse, alors comme CompCPU est le même pour les niveaux de B<-6> à B<-9>, les plus haut niveaux tendent à être un peu moins rapides. Pour être encore moins rapide et du coup obtenir peut être une meilleure compression, consultez B<--extreme>."
#. type: Plain text
-#: ../src/xz/xz.1:806
-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."
+#: ../src/xz/xz.1
+msgid "CompMem contains the compressor memory requirements in the single-threaded mode. It may vary slightly between B<xz> versions."
msgstr ""
-"CompMem contient les besoins en mémoire du compresseur en mode mono-thread . "
-"Cela devrait à peine varier entre les versions de B<xz>. Les besoins en "
-"mémoire de quelques uns des futurs modes multi-thread devraient sensiblement "
-"augmenter par rapport au mode mono-thread."
#. type: Plain text
-#: ../src/xz/xz.1:813
-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 ""
-"DecMem contient les besoins en mémoire du décompresseur. Ce sont les "
-"réglages de la compression qui déterminent les besoins en mémoire de la "
-"décompression. L'exacte utilisation de la mémoire est légèrement supérieure "
-"à la taille du dictionnaire LZMA2, mais les valeurs dans la table ont été "
-"arrondies au prochain Mio supérieur."
+#: ../src/xz/xz.1
+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 "DecMem contient les besoins en mémoire du décompresseur. Ce sont les réglages de la compression qui déterminent les besoins en mémoire de la décompression. L'exacte utilisation de la mémoire est légèrement supérieure à la taille du dictionnaire LZMA2, mais les valeurs dans la table ont été arrondies au prochain Mio supérieur."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Memory requirements of the multi-threaded mode are significantly higher than that of the single-threaded mode. With the default value of B<--block-size>, each thread needs 3*3*DictSize plus CompMem or DecMem. For example, four threads with preset B<-6> needs 660\\(en670\\ MiB of memory."
+msgstr ""
#. type: TP
-#: ../src/xz/xz.1:814
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-e>, B<--extreme>"
msgstr "B<-e>, B<--extreme>"
#. type: Plain text
-#: ../src/xz/xz.1:823
-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 ""
-"Utilisez un variant plus lent que les préréglages (B<-0> à B<-9>) pour "
-"espérer avoir un taux de compression légèrement meilleur, mais en cas de "
-"malchance cela peut être pire. L'utilisation mémoire du décompresseur n'est "
-"pas affectée, mais l'utilisation mémoire du compresseur augmente un peu aux "
-"niveaux de préréglages de B<-0> à B<-3>."
+#: ../src/xz/xz.1
+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 "Utilisez un variant plus lent que les préréglages (B<-0> à B<-9>) pour espérer avoir un taux de compression légèrement meilleur, mais en cas de malchance cela peut être pire. L'utilisation mémoire du décompresseur n'est pas affectée, mais l'utilisation mémoire du compresseur augmente un peu aux niveaux de préréglages de B<-0> à B<-3>."
#. type: Plain text
-#: ../src/xz/xz.1:835
-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 ""
-"Depuis qu'il y a deux préréglages avec des tailles de dictionnaire de 4\\ "
-"Mio et 8 \\Mio, les préréglages B<-3e> et B<-5e> utilisent des réglages "
-"légèrement plus rapides que B<-4e> et B<-6e>, respectivement. De cette "
-"manière, il n'y a pas deux préréglages identiques."
+#: ../src/xz/xz.1
+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 "Depuis qu'il y a deux préréglages avec des tailles de dictionnaire de 4\\ Mio et 8 \\Mio, les préréglages B<-3e> et B<-5e> utilisent des réglages légèrement plus rapides que B<-4e> et B<-6e>, respectivement. De cette manière, il n'y a pas deux préréglages identiques."
#. type: tbl table
-#: ../src/xz/xz.1:843
+#: ../src/xz/xz.1
#, no-wrap
msgid "-0e"
msgstr "-0e"
#. type: tbl table
-#: ../src/xz/xz.1:843 ../src/xz/xz.1:844 ../src/xz/xz.1:845 ../src/xz/xz.1:847
-#: ../src/xz/xz.1:849 ../src/xz/xz.1:850 ../src/xz/xz.1:851 ../src/xz/xz.1:852
-#: ../src/xz/xz.1:2848
+#: ../src/xz/xz.1
#, no-wrap
msgid "8"
msgstr "8"
#. type: tbl table
-#: ../src/xz/xz.1:844
+#: ../src/xz/xz.1
#, no-wrap
msgid "-1e"
msgstr "-1e"
#. type: tbl table
-#: ../src/xz/xz.1:844
+#: ../src/xz/xz.1
#, no-wrap
msgid "13 MiB"
msgstr "13 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:845
+#: ../src/xz/xz.1
#, no-wrap
msgid "-2e"
msgstr "-2e"
#. type: tbl table
-#: ../src/xz/xz.1:845
+#: ../src/xz/xz.1
#, no-wrap
msgid "25 MiB"
msgstr "25 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:846
+#: ../src/xz/xz.1
#, no-wrap
msgid "-3e"
msgstr "-3e"
#. type: tbl table
-#: ../src/xz/xz.1:846 ../src/xz/xz.1:848 ../src/xz/xz.1:2847
+#: ../src/xz/xz.1
#, no-wrap
msgid "7"
msgstr "7"
#. type: tbl table
-#: ../src/xz/xz.1:847
+#: ../src/xz/xz.1
#, no-wrap
msgid "-4e"
msgstr "-4e"
#. type: tbl table
-#: ../src/xz/xz.1:848 ../src/xz/xz.1:2847
+#: ../src/xz/xz.1
#, no-wrap
msgid "-5e"
msgstr "-5e"
#. type: tbl table
-#: ../src/xz/xz.1:849 ../src/xz/xz.1:2848
+#: ../src/xz/xz.1
#, no-wrap
msgid "-6e"
msgstr "-6e"
#. type: tbl table
-#: ../src/xz/xz.1:850
+#: ../src/xz/xz.1
#, no-wrap
msgid "-7e"
msgstr "-7e"
#. type: tbl table
-#: ../src/xz/xz.1:851
+#: ../src/xz/xz.1
#, no-wrap
msgid "-8e"
msgstr "-8e"
#. type: tbl table
-#: ../src/xz/xz.1:852
+#: ../src/xz/xz.1
#, no-wrap
msgid "-9e"
msgstr "-9e"
#. type: Plain text
-#: ../src/xz/xz.1:864
-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 ""
-"Par exemple, il y a un total de quatre préréglages qui utilisent un "
-"dictionnaire de 8 Mio et qui sont dans l'ordre du plus rapide au plus lent : "
-"B<-5>, B<-6>, B<-5e> et B<-6e>."
+#: ../src/xz/xz.1
+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 "Par exemple, il y a un total de quatre préréglages qui utilisent un dictionnaire de 8 Mio et qui sont dans l'ordre du plus rapide au plus lent : B<-5>, B<-6>, B<-5e> et B<-6e>."
#. type: TP
-#: ../src/xz/xz.1:864
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--fast>"
msgstr "B<--fast>"
#. type: TP
-#: ../src/xz/xz.1:867
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--best>"
msgstr "B<--best>"
#. type: Plain text
-#: ../src/xz/xz.1:878
-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 ""
-"Il y a néanmoins des alias trompeurs pour B<-0> et B<-9>, respectivement. "
-"Ils ne sont fournis que pour des besoins de rétro-compatibilité avec les "
-"utilitaires LZMA. Evitez d'utiliser ces options."
+#: ../src/xz/xz.1
+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 "Il y a néanmoins des alias trompeurs pour B<-0> et B<-9>, respectivement. Ils ne sont fournis que pour des besoins de rétro-compatibilité avec les utilitaires LZMA. Evitez d'utiliser ces options."
#. type: TP
-#: ../src/xz/xz.1:878
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--block-size=>I<size>"
msgstr "B<--block-size=>I<taille>"
#. type: Plain text
-#: ../src/xz/xz.1:891
-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 ""
-"Lors de la compression dans le format B<.xz>, les données de l'entrée sont "
-"réparties en blocs de I<taille> octets. Les blocs sont compressés "
-"indépendamment les un des autres, ce qui aide avec le mode multithread "
-"(multi-threading) et rend possible la décompression à accès aléatoire "
-"limité. Cette option est typiquement utilisée pour outrepasser la taille de "
-"bloc en mode multithread, mais cette option peut aussi être utilisée en mode "
-"single-thread."
-
-#. type: Plain text
-#: ../src/xz/xz.1:909
-#, fuzzy
-#| 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."
-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\\(en4 times the size of the LZMA2 dictionary or at least 1 "
-"MiB. Using I<size> less than the LZMA2 dictionary size is waste of RAM "
-"because then the LZMA2 dictionary buffer will never get fully used. The "
-"sizes of the blocks are stored in the block headers, which a future version "
-"of B<xz> will use for multi-threaded decompression."
-msgstr ""
-"En mode multithread, environ trois fois la I<taille> octets seront alloués à "
-"chaque thread pour mettre en mémoire tampon les entrées et sorties. Par "
-"défaut, la I<taille> est trois fois la taille du dictionnaire LZMA2 ou 1 "
-"Mio, en fonction de ce qui convient le mieux. Habituellement, une bonne "
-"valeur est deux à quatre fois la taille du dictionnaire LZMA2 ou au moins 1 "
-"Mio. Utiliser une I<taille> moindre que celle du dictionnaire LZMA2 est un "
-"gaspillage de RAM car alors la mémoire tampon du dictionnaire LZMA2 ne sera "
-"jamais entièrement utilisée. Les tailles des blocs sont stockées dans les en-"
-"têtes de blocs, qui seront utilisés dans une future version de B<xz> pour la "
-"décompression multithreadée."
-
-#. type: Plain text
-#: ../src/xz/xz.1:918
-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 ""
-"Par défaut, il n'y a pas de répartition de bloc en mode mono-thread. Régler "
-"cette option n'affecte pas l'utilisation de la mémoire. Aucune information "
-"de taille n'est stockée dans l'en-tête de bloc, par conséquent les fichiers "
-"créés en mode single-thread ne seront pas identiques aux fichiers créés en "
-"mode multi-thread. Le manque d'information de taille signifie aussi qu'une "
-"future version de B<xz> ne sera pas capable de décompresser les fichiers en "
-"mode multi-thread."
+#: ../src/xz/xz.1
+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 "Lors de la compression dans le format B<.xz>, les données de l'entrée sont réparties en blocs de I<taille> octets. Les blocs sont compressés indépendamment les un des autres, ce qui aide avec le mode multithread (multi-threading) et rend possible la décompression à accès aléatoire limité. Cette option est typiquement utilisée pour outrepasser la taille de bloc en mode multithread, mais cette option peut aussi être utilisée en mode single-thread."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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\\(en4 times the size of the LZMA2 dictionary or at least 1 MiB. Using I<size> less than the LZMA2 dictionary size is waste of RAM because then the LZMA2 dictionary buffer will never get fully used. In multi-threaded mode, the sizes of the blocks are stored in the block headers. This size information is required for multi-threaded decompression."
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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 B<xz> won't be able decompress the files in multi-threaded mode."
+msgstr ""
#. type: TP
-#: ../src/xz/xz.1:918
-#, no-wrap
-msgid "B<--block-list=>I<sizes>"
-msgstr "B<--block-list=>I<tailles>"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "B<--block-size=>I<size>"
+msgid "B<--block-list=>I<items>"
+msgstr "B<--block-size=>I<taille>"
#. type: Plain text
-#: ../src/xz/xz.1:924
-msgid ""
-"When compressing to the B<.xz> format, start a new block after the given "
-"intervals of uncompressed data."
+#: ../src/xz/xz.1
+msgid "When compressing to the B<.xz> format, start a new block with an optional custom filter chain after the given intervals of uncompressed data."
msgstr ""
-"Lors de la compression dans le format B<.xz>, commencer un nouveau bloc "
-"après les intervalles donnés des données non compressées."
#. type: Plain text
-#: ../src/xz/xz.1:930
-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."
+#: ../src/xz/xz.1
+msgid "The I<items> are a comma-separated list. Each item consists of an optional filter chain number between 0 and 9 followed by a colon (B<:>) and a required size of uncompressed data. Omitting an item (two or more consecutive commas) is a shorthand to use the size and filters of the previous item."
msgstr ""
-"Les I<tailles> non-compressées des blocs sont spécifiées sous forme de liste "
-"séparée par des virgules. Omettre une taille (deux ou plus virgules "
-"consécutives) est un raccourci pour utiliser la taille du bloc précédent."
#. type: Plain text
-#: ../src/xz/xz.1:940
-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."
+#: ../src/xz/xz.1
+msgid "If the input file is bigger than the sum of the sizes in I<items>, the last item is repeated until the end of the file. A special value of B<0> may be used as the last size to indicate that the rest of the file should be encoded as a single block."
msgstr ""
-"Si le fichier en entrée est plus grand que la somme des I<tailles>, la "
-"dernière valeur est répétée jusqu'à la fin du fichier. Une valeur spéciale "
-"de B<0> peut être utilisée comme étant la dernière valeur pour indiquer que "
-"le reste du fichier devrait être encodé comme un simple bloc."
#. type: Plain text
-#: ../src/xz/xz.1:955
-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 ""
-"Si on spécifie des I<tailles> qui excèdent la taille du bloc de l'encodeur "
-"(soit la valeur en mode threadé, soit la valeur spécifiée avec B<--block-"
-"size=>I<taille>), l'encodeur créera des blocs supplémentaires tout en "
-"gardant les limites indiquées dans I<tailles>. Par exemple, si on indique "
-"B<--block-size=10MiB>B<--block-list=5MiB,10MiB,8MiB,12MiB,24MiB> et que le "
-"fichier fait 80Mio, on aura 11 blocs de 5, 10, 8, 2, 10, 10, 4, 10, 10, et "
-"1 Mio."
-
-#. type: Plain text
-#: ../src/xz/xz.1:961
-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."
+#: ../src/xz/xz.1
+msgid "An alternative filter chain for each block can be specified in combination with the B<--filters1=>I<filters> \\&...\\& B<--filters9=>I<filters> options. These options define filter chains with an identifier between 1\\(en9. Filter chain 0 can be used to refer to the default filter chain, which is the same as not specifying a filter chain. The filter chain identifier can be used before the uncompressed size, followed by a colon (B<:>). For example, if one specifies B<--block-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB> then blocks will be created using:"
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The filter chain specified by B<--filters1> and 2 MiB input"
msgstr ""
-"En mode multi-threadé les tailles de blocs sont stockées dans les en-têtes "
-"du bloc. Cela ne se fait pas en mode mono-threadé, la sortie encodée ne sera "
-"donc pas identique à celle faite en mode multi-threadé."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The filter chain specified by B<--filters3> and 2 MiB input"
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The filter chain specified by B<--filters2> and 4 MiB input"
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The default filter chain and 2 MiB input"
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The default filter chain and 4 MiB input for every block until end of input."
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "If one specifies a size that exceeds 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<items>. 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 ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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 "En mode multi-threadé les tailles de blocs sont stockées dans les en-têtes du bloc. Cela ne se fait pas en mode mono-threadé, la sortie encodée ne sera donc pas identique à celle faite en mode multi-threadé."
#. type: TP
-#: ../src/xz/xz.1:961
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--flush-timeout=>I<timeout>"
msgstr "B<--flush-timeout=>I<temps_d'attente>"
#. type: Plain text
-#: ../src/xz/xz.1:978
-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 ""
-"Lors de la compression, si plus que I<temps_d'attente> millisecondes (un "
-"entier positif) se sont écoulées depuis le précédent vidage et que lire plus "
-"de données bloquerait, toutes les données d'entrée en attente sont vidées de "
-"l'encodeur et mises à disposition dans le flux de sortie. Cela peut être "
-"utile si B<xz> est utilisé pour compresser les données qui sont diffusées "
-"sur un réseau. Des petites valeurs de I<temps_d'attente> rendent les données "
-"disponibles à l'extrémité réceptrice avec un léger retard, mais les grandes "
-"valeurs de I<temps_d'attente> donnent un meilleur taux de compression."
-
-#. type: Plain text
-#: ../src/xz/xz.1:986
-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 ""
-"Cette option est désactivée par défaut. Si cette option est indiquée plus "
-"d'une fois, la dernière prend effet. La valeur spéciale de "
-"I<temps_d'attente> de B<0> peut être utilisée pour explicitement désactiver "
-"cette option."
+#: ../src/xz/xz.1
+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 "Lors de la compression, si plus que I<temps_d'attente> millisecondes (un entier positif) se sont écoulées depuis le précédent vidage et que lire plus de données bloquerait, toutes les données d'entrée en attente sont vidées de l'encodeur et mises à disposition dans le flux de sortie. Cela peut être utile si B<xz> est utilisé pour compresser les données qui sont diffusées sur un réseau. Des petites valeurs de I<temps_d'attente> rendent les données disponibles à l'extrémité réceptrice avec un léger retard, mais les grandes valeurs de I<temps_d'attente> donnent un meilleur taux de compression."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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 "Cette option est désactivée par défaut. Si cette option est indiquée plus d'une fois, la dernière prend effet. La valeur spéciale de I<temps_d'attente> de B<0> peut être utilisée pour explicitement désactiver cette option."
#. type: Plain text
-#: ../src/xz/xz.1:988
+#: ../src/xz/xz.1
msgid "This feature is not available on non-POSIX systems."
-msgstr ""
-"Cette option n'est pas disponible sur les systèmes qui ne sont pas POSIX."
+msgstr "Cette option n'est pas disponible sur les systèmes qui ne sont pas POSIX."
#. FIXME
#. type: Plain text
-#: ../src/xz/xz.1:996
-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<Cette option est encore expérimentale.> Actuellement, B<xz> ne convient "
-"pas pour décompresser le flux en temps réel en raison de la façon dont B<xz> "
-"effectue la mise en mémoire tampon."
+#: ../src/xz/xz.1
+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<Cette option est encore expérimentale.> Actuellement, B<xz> ne convient pas pour décompresser le flux en temps réel en raison de la façon dont B<xz> effectue la mise en mémoire tampon."
#. type: TP
-#: ../src/xz/xz.1:996
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--memlimit-compress=>I<limit>"
msgstr "B<--memlimit-compress=>I<limite>"
#. type: Plain text
-#: ../src/xz/xz.1:1001
-msgid ""
-"Set a memory usage limit for compression. If this option is specified "
-"multiple times, the last one takes effect."
+#: ../src/xz/xz.1
+msgid "Set a memory usage limit for compression. If this option is specified multiple times, the last one takes effect."
+msgstr "Indiquer une limite d'utilisation de la mémoire pour la compression. Si cette option est indiquée plusieurs fois, c'est la dernière qui est prise en compte."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "If the compression settings exceed the I<limit>, B<xz> will attempt to adjust the settings downwards so that the limit is no longer exceeded and display a notice that automatic adjustment was done. The adjustments are done in this order: reducing the number of threads, switching to single-threaded mode if even one thread in multi-threaded mode exceeds the I<limit>, and finally reducing the LZMA2 dictionary size."
msgstr ""
-"Indiquer une limite d'utilisation de la mémoire pour la compression. Si "
-"cette option est indiquée plusieurs fois, c'est la dernière qui est prise en "
-"compte."
#. type: Plain text
-#: ../src/xz/xz.1:1014
-#, fuzzy
-#| 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."
-msgid ""
-"If the compression settings exceed the I<limit>, B<xz> will attempt to "
-"adjust the settings downwards so that the limit is no longer exceeded and "
-"display a notice that automatic adjustment was done. The adjustments are "
-"done in this order: reducing the number of threads, switching to single-"
-"threaded mode if even one thread in multi-threaded mode exceeds the "
-"I<limit>, and finally reducing the LZMA2 dictionary size."
-msgstr ""
-"Si les paramètres de compression dépassent la I<limite>, B<xz> ajustera les "
-"paramètres à la baisse pour que la limite ne soit plus dépassée et affichera "
-"un avis indiquant que l'ajustement automatique a été effectué. De tels "
-"ajustements ne sont pas effectués lors de la compression avec B<--"
-"format=raw> ou si B<--no-adjust> a été spécifié. Dans ces cas, une erreur "
-"est affichée et B<xz> se termine avec l'état de sortie B<1>."
-
-#. type: Plain text
-#: ../src/xz/xz.1:1022
-msgid ""
-"When compressing with B<--format=raw> or if B<--no-adjust> has been "
-"specified, only the number of threads may be reduced since it can be done "
-"without affecting the compressed output."
+#: ../src/xz/xz.1
+msgid "When compressing with B<--format=raw> or if B<--no-adjust> has been specified, only the number of threads may be reduced since it can be done without affecting the compressed output."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1029
-msgid ""
-"If the I<limit> cannot be met even with the adjustments described above, an "
-"error is displayed and B<xz> will exit with exit status 1."
+#: ../src/xz/xz.1
+msgid "If the I<limit> cannot be met even with the adjustments described above, an error is displayed and B<xz> will exit with exit status 1."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1033
+#: ../src/xz/xz.1
msgid "The I<limit> can be specified in multiple ways:"
msgstr "La I<limite> peut être indiquée de plusieurs façons :"
#. type: Plain text
-#: ../src/xz/xz.1:1043
-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 ""
-"La I<limite> peut être une valeur absolue en octets. Utiliser un suffixe "
-"d'entier comme B<MiB> peut être utile. Exemple : B<--memlimit-compress=80MiB>"
+#: ../src/xz/xz.1
+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 "La I<limite> peut être une valeur absolue en octets. Utiliser un suffixe d'entier comme B<MiB> peut être utile. Exemple : B<--memlimit-compress=80MiB>"
#. type: Plain text
-#: ../src/xz/xz.1:1055
-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%>"
+#: ../src/xz/xz.1
+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 "La I<limite> peut être indiquée sous forme d'un pourcentage de la mémoire physique totale (RAM). Cela peut être particulièrement utile quand la variable d'environnement B<XZ_DEFAULTS> est indiquée dans un script d'initialisation de l'interpréteur partagé entre différents ordinateurs. De cette façon la limite est automatiquement plus grande sur les systèmes avec plus de mémoire. Exemple : B<--memlimit=70%>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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)."
msgstr ""
-"La I<limite> peut être indiquée sous forme d'un pourcentage de la mémoire "
-"physique totale (RAM). Cela peut être particulièrement utile quand la "
-"variable d'environnement B<XZ_DEFAULTS> est indiquée dans un script "
-"d'initialisation de l'interpréteur partagé entre différents ordinateurs. De "
-"cette façon la limite est automatiquement plus grande sur les systèmes avec "
-"plus de mémoire. Exemple : B<--memlimit=70%>"
#. type: Plain text
-#: ../src/xz/xz.1:1065
-#, fuzzy
-#| 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."
-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)."
+#: ../src/xz/xz.1
+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>. On MIPS32 B<2000\\ MiB> is used instead. (The values B<0> and B<max> aren't affected by this. A similar feature doesn't exist for decompression.) This can be helpful when a 32-bit executable has access to 4\\ GiB address space (2 GiB on MIPS32) while hopefully doing no harm in other situations."
msgstr ""
-"La I<limite> peut être réinitialisée à sa valeur par défaut en la réglant "
-"sur B<0>. Cela équivaut actuellement à régler la I<limite> sur B<max> "
-"(aucune limite d'utilisation de la mémoire). Quand la prise en charge du "
-"mode multi-thread (multi-threading) sera implémentée, il devrait y avoir une "
-"différence entre B<0> et B<max> en mode multithreadé, il est donc recommandé "
-"d'utiliser B<0> au lieu de B<max> tant que les détails n'ont pas été décidés."
#. type: Plain text
-#: ../src/xz/xz.1:1089
-#, fuzzy
-#| 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."
-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>. On MIPS32 B<2000\\ "
-"MiB> is used instead. (The values B<0> and B<max> aren't affected by this. "
-"A similar feature doesn't exist for decompression.) This can be helpful "
-"when a 32-bit executable has access to 4\\ GiB address space (2 GiB on "
-"MIPS32) while hopefully doing no harm in other situations."
-msgstr ""
-"Pour le B<xz> en 32 bits, il y a un cas particulier : si la I<limite> est "
-"supérieure à B<4020\\Mio>, elle est rabaissée à B<4020\\Mio>. (Les valeurs "
-"B<0> et B<max> ne sont pas affectées par cela. Il n'y a pas d'option "
-"similaire pour la décompression). Celà peut s'avérer utile lorsqu'un "
-"exécutable 32-bits a accès à un espace d'adresse de 4\\ Gio sans s'avérer "
-"néfaste dans les autres situations. "
-
-#. type: Plain text
-#: ../src/xz/xz.1:1092
+#: ../src/xz/xz.1
msgid "See also the section B<Memory usage>."
msgstr "Voir aussi la section B<utilisation de la mémoire>."
#. type: TP
-#: ../src/xz/xz.1:1092
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--memlimit-decompress=>I<limit>"
msgstr "B<--memlimit-decompress=>I<limite>"
#. type: Plain text
-#: ../src/xz/xz.1:1106
-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 ""
-"Régler une limite d'utilisation de la mémoire pour la décompression. Cela a "
-"un effet sur le mode B<--list>. Si l'opération n'est pas possible sans "
-"dépasser la I<limite>, B<xz> affichera une erreur et la décompression "
-"échouera. Voir B<--memlimit-compress=>I<limite> pour les manières possibles "
-"d'indiquer la I<limite>."
+#: ../src/xz/xz.1
+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 "Régler une limite d'utilisation de la mémoire pour la décompression. Cela a un effet sur le mode B<--list>. Si l'opération n'est pas possible sans dépasser la I<limite>, B<xz> affichera une erreur et la décompression échouera. Voir B<--memlimit-compress=>I<limite> pour les manières possibles d'indiquer la I<limite>."
#. type: TP
-#: ../src/xz/xz.1:1106
+#: ../src/xz/xz.1
#, fuzzy, no-wrap
#| msgid "B<--memlimit-decompress=>I<limit>"
msgid "B<--memlimit-mt-decompress=>I<limit>"
msgstr "B<--memlimit-decompress=>I<limite>"
#. type: Plain text
-#: ../src/xz/xz.1:1128
-msgid ""
-"Set a memory usage limit for multi-threaded decompression. This can only "
-"affect the number of threads; this will never make B<xz> refuse to "
-"decompress a file. If I<limit> is too low to allow any multi-threading, the "
-"I<limit> is ignored and B<xz> will continue in single-threaded mode. Note "
-"that if also B<--memlimit-decompress> is used, it will always apply to both "
-"single-threaded and multi-threaded modes, and so the effective I<limit> for "
-"multi-threading will never be higher than the limit set with B<--memlimit-"
-"decompress>."
+#: ../src/xz/xz.1
+msgid "Set a memory usage limit for multi-threaded decompression. This can only affect the number of threads; this will never make B<xz> refuse to decompress a file. If I<limit> is too low to allow any multi-threading, the I<limit> is ignored and B<xz> will continue in single-threaded mode. Note that if also B<--memlimit-decompress> is used, it will always apply to both single-threaded and multi-threaded modes, and so the effective I<limit> for multi-threading will never be higher than the limit set with B<--memlimit-decompress>."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1135
-msgid ""
-"In contrast to the other memory usage limit options, B<--memlimit-mt-"
-"decompress=>I<limit> has a system-specific default I<limit>. B<xz --info-"
-"memory> can be used to see the current value."
+#: ../src/xz/xz.1
+msgid "In contrast to the other memory usage limit options, B<--memlimit-mt-decompress=>I<limit> has a system-specific default I<limit>. B<xz --info-memory> can be used to see the current value."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1151
-msgid ""
-"This option and its default value exist because without any limit the "
-"threaded decompressor could end up allocating an insane amount of memory "
-"with some input files. If the default I<limit> is too low on your system, "
-"feel free to increase the I<limit> but never set it to a value larger than "
-"the amount of usable RAM as with appropriate input files B<xz> will attempt "
-"to use that amount of memory even with a low number of threads. Running out "
-"of memory or swapping will not improve decompression performance."
+#: ../src/xz/xz.1
+msgid "This option and its default value exist because without any limit the threaded decompressor could end up allocating an insane amount of memory with some input files. If the default I<limit> is too low on your system, feel free to increase the I<limit> but never set it to a value larger than the amount of usable RAM as with appropriate input files B<xz> will attempt to use that amount of memory even with a low number of threads. Running out of memory or swapping will not improve decompression performance."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1163
-msgid ""
-"See B<--memlimit-compress=>I<limit> for possible ways to specify the "
-"I<limit>. Setting I<limit> to B<0> resets the I<limit> to the default "
-"system-specific value."
+#: ../src/xz/xz.1
+msgid "See B<--memlimit-compress=>I<limit> for possible ways to specify the I<limit>. Setting I<limit> to B<0> resets the I<limit> to the default system-specific value."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1163
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-M> I<limit>, B<--memlimit=>I<limit>, B<--memory=>I<limit>"
msgstr "B<-M> I<limite>, B<--memlimit=>I<limite>, B<--memory=>I<limite>"
#. type: Plain text
-#: ../src/xz/xz.1:1169
-#, fuzzy
-#| msgid ""
-#| "This is equivalent to specifying B<--memlimit-compress=>I<limit >B<--"
-#| "memlimit-decompress=>I<limit>."
-msgid ""
-"This is equivalent to specifying B<--memlimit-compress=>I<limit> B<--"
-"memlimit-decompress=>I<limit> B<--memlimit-mt-decompress=>I<limit>."
+#: ../src/xz/xz.1
+msgid "This is equivalent to specifying B<--memlimit-compress=>I<limit> B<--memlimit-decompress=>I<limit> B<--memlimit-mt-decompress=>I<limit>."
msgstr ""
-"C'est équivalent à indiquer B<--memlimit-compress=>I<limite>B<--memlimit-"
-"decompress=>I<limite>."
#. type: TP
-#: ../src/xz/xz.1:1169
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--no-adjust>"
msgstr "B<--no-adjust>"
#. type: Plain text
-#: ../src/xz/xz.1:1179
-msgid ""
-"Display an error and exit if the memory usage limit cannot be met without "
-"adjusting settings that affect the compressed output. That is, this "
-"prevents B<xz> from switching the encoder from multi-threaded mode to single-"
-"threaded mode and from reducing the LZMA2 dictionary size. Even when this "
-"option is used the number of threads may be reduced to meet the memory usage "
-"limit as that won't affect the compressed output."
+#: ../src/xz/xz.1
+msgid "Display an error and exit if the memory usage limit cannot be met without adjusting settings that affect the compressed output. That is, this prevents B<xz> from switching the encoder from multi-threaded mode to single-threaded mode and from reducing the LZMA2 dictionary size. Even when this option is used the number of threads may be reduced to meet the memory usage limit as that won't affect the compressed output."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1182
-msgid ""
-"Automatic adjusting is always disabled when creating raw streams (B<--"
-"format=raw>)."
+#: ../src/xz/xz.1
+msgid "Automatic adjusting is always disabled when creating raw streams (B<--format=raw>)."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1182
+#: ../src/xz/xz.1
#, 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:1197
-#, fuzzy
-#| 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."
-msgid ""
-"Specify the number of worker threads to use. Setting I<threads> to a "
-"special value B<0> makes B<xz> use up to as many threads as the processor(s) "
-"on the system support. The actual number of threads can be fewer than "
-"I<threads> if the input file is not big enough for threading with the given "
-"settings or if using more threads would exceed the memory usage limit."
+#: ../src/xz/xz.1
+msgid "Specify the number of worker threads to use. Setting I<threads> to a special value B<0> makes B<xz> use up to as many threads as the processor(s) on the system support. The actual number of threads can be fewer than I<threads> if the input file is not big enough for threading with the given settings or if using more threads would exceed the memory usage limit."
msgstr ""
-"Indiquer le nombre de threads à utiliser. Régler I<threads> à la valeur "
-"spéciale B<0> fait que B<xz> utilisera autant de threads qu'il y a de cœurs "
-"de CPU sur le système. Le nombre effectif de threads peut être moins que "
-"I<threads> si le fichier en entrée n'est pas assez gros pour la threading "
-"avec les réglages donnés ou si l'utilisation de plusieurs threads "
-"dépasserait la limite d'utilisation mémoire."
#. type: Plain text
-#: ../src/xz/xz.1:1216
-msgid ""
-"The single-threaded and multi-threaded compressors produce different "
-"output. Single-threaded compressor will give the smallest file size but "
-"only the output from the multi-threaded compressor can be decompressed using "
-"multiple threads. Setting I<threads> to B<1> will use the single-threaded "
-"mode. Setting I<threads> to any other value, including B<0>, will use the "
-"multi-threaded compressor even if the system supports only one hardware "
-"thread. (B<xz> 5.2.x used single-threaded mode in this situation.)"
+#: ../src/xz/xz.1
+msgid "The single-threaded and multi-threaded compressors produce different output. Single-threaded compressor will give the smallest file size but only the output from the multi-threaded compressor can be decompressed using multiple threads. Setting I<threads> to B<1> will use the single-threaded mode. Setting I<threads> to any other value, including B<0>, will use the multi-threaded compressor even if the system supports only one hardware thread. (B<xz> 5.2.x used single-threaded mode in this situation.)"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1235
-msgid ""
-"To use multi-threaded mode with only one thread, set I<threads> to B<+1>. "
-"The B<+> prefix has no effect with values other than B<1>. A memory usage "
-"limit can still make B<xz> switch to single-threaded mode unless B<--no-"
-"adjust> is used. Support for the B<+> prefix was added in B<xz> 5.4.0."
+#: ../src/xz/xz.1
+msgid "To use multi-threaded mode with only one thread, set I<threads> to B<+1>. The B<+> prefix has no effect with values other than B<1>. A memory usage limit can still make B<xz> switch to single-threaded mode unless B<--no-adjust> is used. Support for the B<+> prefix was added in B<xz> 5.4.0."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1250
-msgid ""
-"If an automatic number of threads has been requested and no memory usage "
-"limit has been specified, then a system-specific default soft limit will be "
-"used to possibly limit the number of threads. It is a soft limit in sense "
-"that it is ignored if the number of threads becomes one, thus a soft limit "
-"will never stop B<xz> from compressing or decompressing. This default soft "
-"limit will not make B<xz> switch from multi-threaded mode to single-threaded "
-"mode. The active limits can be seen with B<xz --info-memory>."
+#: ../src/xz/xz.1
+msgid "If an automatic number of threads has been requested and no memory usage limit has been specified, then a system-specific default soft limit will be used to possibly limit the number of threads. It is a soft limit in sense that it is ignored if the number of threads becomes one, thus a soft limit will never stop B<xz> from compressing or decompressing. This default soft limit will not make B<xz> switch from multi-threaded mode to single-threaded mode. The active limits can be seen with B<xz --info-memory>."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1257
-msgid ""
-"Currently the only threading method is to split the input into blocks and "
-"compress them independently from each other. The default block size depends "
-"on the compression level and can be overridden with the B<--block-"
-"size=>I<size> option."
+#: ../src/xz/xz.1
+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 "Actuellement, la seule méthode de gestion avec des threads consiste à séparer l'entrée en blocs et de les compresser indépendamment les uns des autres. La taille par défaut des blocs dépend du niveau de compression et peut-être remplacée avec l'option B<--block-size=>I<taille>."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Threaded decompression only works on files that contain multiple blocks with size information in block headers. All large enough files compressed in multi-threaded mode meet this condition, but files compressed in single-threaded mode don't even if B<--block-size=>I<size> has been used."
msgstr ""
-"Actuellement, la seule méthode de gestion avec des threads consiste à "
-"séparer l'entrée en blocs et de les compresser indépendamment les uns des "
-"autres. La taille par défaut des blocs dépend du niveau de compression et "
-"peut-être remplacée avec l'option B<--block-size=>I<taille>."
#. type: Plain text
-#: ../src/xz/xz.1:1265
-#, fuzzy
-#| 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."
-msgid ""
-"Threaded decompression only works on files that contain multiple blocks with "
-"size information in block headers. All large enough files compressed in "
-"multi-threaded mode meet this condition, but files compressed in single-"
-"threaded mode don't even if B<--block-size=>I<size> has been used."
-msgstr ""
-"La décompression threadée n'a pas encore été implémentée. Cela ne "
-"fonctionnera qu'avec des fichiers contenant de multiples blocs avec une "
-"information sur la taille dans les en-têtes de bloc. Tous les fichiers "
-"compressés en mode multithread sattisfont cette condition, mais pas les "
-"fichiers compressés en mode single-thread même si l'option B<--block-"
-"size=>I<taille> est utilisée."
+#: ../src/xz/xz.1
+msgid "The default value for I<threads> is B<0>. In B<xz> 5.4.x and older the default is B<1>."
+msgstr ""
#. type: SS
-#: ../src/xz/xz.1:1266 ../src/xz/xz.1:2819
+#: ../src/xz/xz.1
#, no-wrap
msgid "Custom compressor filter chains"
msgstr "Chaînes de filtres de compresseur personnalisées"
#. type: Plain text
-#: ../src/xz/xz.1:1282
-#, fuzzy
-#| 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."
-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 ""
-"Une chaîne de filtres personnalisée permet d'indiquer les réglages de la "
-"compression en détail au lieu de recourir aux préréglages. Lorsque une "
-"chaîne de filtres personnalisée est indiquée, les options préréglées (B<0> à "
-"B<9> et B<--extreme>) précédement sur la ligne de commande sont oubliées. Si "
-"une option de préréglage est indiquée après une ou plusieurs options de "
-"chaîne de filtre personnalisée, le nouveau préréglage prend effet et les "
-"options de la chaîne de filtres personnalisée précédement indiquée sont "
-"oubliées."
-
-#. type: Plain text
-#: ../src/xz/xz.1:1289
-msgid ""
-"A filter chain is comparable to piping on the command line. When "
-"compressing, the uncompressed input goes to the first filter, whose output "
-"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."
+#: ../src/xz/xz.1
+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 ""
-"Une chaîne de filtre est comparable à une redirection (pipe) sur la ligne de "
-"commande. Lors de la compression, les entrées non compressées vont au "
-"premier filtre, dont la sortie va au prochain filtre (s'il y en a). La "
-"sortie du dernier filtre est écrite sur le fichier compressé. Le nombre "
-"maximal de filtres dans la chaîne est quatre, mais habituellement, un chaîne "
-"de filtre n'a qu'un ou deux filtres."
#. type: Plain text
-#: ../src/xz/xz.1:1297
-msgid ""
-"Many filters have limitations on where they can be in the filter chain: some "
-"filters can work only as the last filter in the chain, some only as a non-"
-"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."
+#: ../src/xz/xz.1
+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 "Une chaîne de filtre est comparable à une redirection (pipe) sur la ligne de commande. Lors de la compression, les entrées non compressées vont au premier filtre, dont la sortie va au prochain filtre (s'il y en a). La sortie du dernier filtre est écrite sur le fichier compressé. Le nombre maximal de filtres dans la chaîne est quatre, mais habituellement, un chaîne de filtre n'a qu'un ou deux filtres."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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 "Beaucoup de filtres ont des limitations sur l'endroit où ils peuvent se placer dans la chaîne de filtre : quelques filtres ne peuvent fonctionner qu'en tant que dernier filtre dans la chaîne, quelques uns en tant que non dernier filtre, et d'autres à n'importe quelle position dans la chaîne. Suivant le filtre, cette limitation est soit inhérente au profil du filtre, soit existe pour des raisons de sécurité. "
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "A custom filter chain can be specified in two different ways. The options B<--filters=>I<filters> and B<--filters1=>I<filters> \\&...\\& B<--filters9=>I<filters> allow specifying an entire filter chain in one option using the liblzma filter string syntax. Alternatively, a filter chain can be specified by using one or more individual filter options in the order they are wanted in the filter chain. That is, the order of the individual filter options is significant! When decoding raw streams (B<--format=raw>), the filter chain must be specified in the same order as it was specified when compressing. Any individual filter or preset options specified before the full chain option (B<--filters=>I<filters>) will be forgotten. Individual filters specified after the full chain option will reset the filter chain."
msgstr ""
-"Beaucoup de filtres ont des limitations sur l'endroit où ils peuvent se "
-"placer dans la chaîne de filtre : quelques filtres ne peuvent fonctionner "
-"qu'en tant que dernier filtre dans la chaîne, quelques uns en tant que non "
-"dernier filtre, et d'autres à n'importe quelle position dans la chaîne. "
-"Suivant le filtre, cette limitation est soit inhérente au profil du filtre, "
-"soit existe pour des raisons de sécurité. "
#. type: Plain text
-#: ../src/xz/xz.1:1305
-msgid ""
-"A custom filter chain is specified by using one or more filter options in "
-"the order they are wanted in the filter chain. That is, the order of filter "
-"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."
+#: ../src/xz/xz.1
+msgid "Both the full and individual filter options take filter-specific I<options> as a comma-separated list. Extra commas in I<options> are ignored. Every option has a default value, so specify those you want to change."
msgstr ""
-"Une chaîne de filtres personnalisée est indiquée en utilisant une ou "
-"plusieurs options de filtre dans l'ordre où elles sont souhaitées dans la "
-"chaîne de filtres. Cela fait, l'ordre des options de filtre est "
-"significatif! Lors du décodage des flux bruts (B<--format=raw>), le filtre "
-"de chaîne est indiqué dans le même ordre qu'il fût indiqué lors de la "
-"compression."
#. type: Plain text
-#: ../src/xz/xz.1:1314
-msgid ""
-"Filters take filter-specific I<options> as a comma-separated list. Extra "
-"commas in I<options> are ignored. Every option has a default value, so you "
-"need to specify only those you want to change."
+#: ../src/xz/xz.1
+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 "Pour voir l'entièreté de la chaîne de filtres et ses I<options>, utilisez B<xz -vv> (ce qui est comme utiliser B<--verbose> deux fois). Cela fonctionne aussi pour voir les options de chaîne de filtres utilisées par les préréglages."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "B<--files>[B<=>I<file>]"
+msgid "B<--filters=>I<filters>"
+msgstr "B<--files>[B<=>I<fichier>]"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Specify the full filter chain or a preset in a single option. Each filter can be separated by spaces or two dashes (B<-->). I<filters> may need to be quoted on the shell command line so it is parsed as a single option. To denote I<options>, use B<:> or B<=>. A preset can be prefixed with a B<-> and followed with zero or more flags. The only supported flag is B<e> to apply the same options as B<--extreme>."
+msgstr ""
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "B<--filters1>=I<filters> ... B<--filters9>=I<filters>"
msgstr ""
-"Les filtres prennent des I<options> spécifiques aux filtres sous la forme "
-"d'une liste séparée par des virgules. Les virgules supplémentaires dans les "
-"I<options> sont ignorées. Toutes les options ont une valeur par défaut, donc "
-"vous ne devez indiquer que celles que vous voulez changer."
#. type: Plain text
-#: ../src/xz/xz.1:1323
-msgid ""
-"To see the whole filter chain and I<options>, use B<xz -vv> (that is, use "
-"B<--verbose> twice). This works also for viewing the filter chain options "
-"used by presets."
+#: ../src/xz/xz.1
+msgid "Specify up to nine additional filter chains that can be used with B<--block-list>."
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "For example, when compressing an archive with executable files followed by text files, the executable part could use a filter chain with a BCJ filter and the text part only the LZMA2 filter."
+msgstr ""
+
+#. type: TP
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "B<-h>, B<--help>"
+msgid "B<--filters-help>"
+msgstr "B<-h>, B<--help>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Display a help message describing how to specify presets and custom filter chains in the B<--filters> and B<--filters1=>I<filters> \\&...\\& B<--filters9=>I<filters> options, and exit successfully."
msgstr ""
-"Pour voir l'entièreté de la chaîne de filtres et ses I<options>, utilisez "
-"B<xz -vv> (ce qui est comme utiliser B<--verbose> deux fois). Cela "
-"fonctionne aussi pour voir les options de chaîne de filtres utilisées par "
-"les préréglages."
#. type: TP
-#: ../src/xz/xz.1:1323
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--lzma1>[B<=>I<options>]"
msgstr "B<--lzma1>[B<=>I<options>]"
#. type: TP
-#: ../src/xz/xz.1:1326
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--lzma2>[B<=>I<options>]"
msgstr "B<--lzma2>[B<=>I<options>]"
#. type: Plain text
-#: ../src/xz/xz.1:1331
-msgid ""
-"Add LZMA1 or LZMA2 filter to the filter chain. These filters can be used "
-"only as the last filter in the chain."
-msgstr ""
-"Ajouter le filtre LZMA1 ou LZMA2 à la chaîne de filtres. Ces filtres ne "
-"peuvent être utilisés que comme dernier filtre dans la chaîne."
+#: ../src/xz/xz.1
+msgid "Add LZMA1 or LZMA2 filter to the filter chain. These filters can be used only as the last filter in the chain."
+msgstr "Ajouter le filtre LZMA1 ou LZMA2 à la chaîne de filtres. Ces filtres ne peuvent être utilisés que comme dernier filtre dans la chaîne."
#. type: Plain text
-#: ../src/xz/xz.1:1343
-msgid ""
-"LZMA1 is a legacy filter, which is supported almost solely due to the legacy "
-"B<.lzma> file format, which supports only LZMA1. LZMA2 is an updated "
-"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 est un filtre historique, qui n'est pris en charge presque uniquement "
-"à cause de l'ancien format de fichier B<.lzma>, qui ne prend en charge que "
-"LZMA1. LZMA2 est une version mise à jour de LZMA1 pour régler certains "
-"problèmes pratiques de LZMA1. Le format B<xz> utilise LZMA2 et ne prend pas "
-"du tout en charge LZMA1. Les taux et vitesses de compression de LZMA1 et "
-"LZMA2 sont pratiquement identiques."
+#: ../src/xz/xz.1
+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 est un filtre historique, qui n'est pris en charge presque uniquement à cause de l'ancien format de fichier B<.lzma>, qui ne prend en charge que LZMA1. LZMA2 est une version mise à jour de LZMA1 pour régler certains problèmes pratiques de LZMA1. Le format B<xz> utilise LZMA2 et ne prend pas du tout en charge LZMA1. Les taux et vitesses de compression de LZMA1 et LZMA2 sont pratiquement identiques."
#. type: Plain text
-#: ../src/xz/xz.1:1346
+#: ../src/xz/xz.1
msgid "LZMA1 and LZMA2 share the same set of I<options>:"
msgstr "LZMA1 et LZMA2 partagent le même ensemble d'I<options> :"
#. type: TP
-#: ../src/xz/xz.1:1347
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<preset=>I<preset>"
msgstr "B<preset=>I<préréglage>"
#. type: Plain text
-#: ../src/xz/xz.1:1374
-#, fuzzy
-#| 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>."
-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 ""
-"Réinitialiser toutes les I<options> de LZMA1 ou de LZMA2 à I<préréglage>. "
-"I<préréglage> consiste en un entier, qui peut être suivi de modificateurs de "
-"préréglage à une lettre. L'entier peut être de B<0> à B<9>, correspondant "
-"aux options B<-0> à B<-9> de la ligne de commandes. Le seul modificateur "
-"pris en charge est actuellement B<e>, qui correspond à B<--extreme>. Si "
-"B<preset> n'est pas indiqué, Les valeurs par défaut des I<options> LZMA1 ou "
-"LZMA2 sont prises du préréglage B<6>."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:1374
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<dict=>I<size>"
msgstr "B<dict=>I<taille>"
#. type: Plain text
-#: ../src/xz/xz.1:1389
-msgid ""
-"Dictionary (history buffer) I<size> indicates how many bytes of the "
-"recently processed uncompressed data is kept in memory. The algorithm tries "
-"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 ""
-"La I<taille> du dictionnaire (historique du tampon) indique combien d'octets "
-"des données récement décompressées sont gardés en mémoire. L'algorithme "
-"essaie de trouver les séquences d'octets répétées (identiques) dans les "
-"données décompressées et les remplace par les données actuellement dans le "
-"dictionnaire. Plus gros est le dictionnaire, plus grande est la chance de "
-"trouver une correspondance. Ainsi, l'augmentation de la I<taille> du "
-"dictionnaire augmente habituellement le taux de compression, mais un "
-"dictionnaire plus gros que le fichier non compressé est un gachis de mémoire."
-
-#. type: Plain text
-#: ../src/xz/xz.1:1398
-msgid ""
-"Typical dictionary I<size> is from 64\\ KiB to 64\\ MiB. The minimum is 4\\ "
-"KiB. The maximum for compression is currently 1.5\\ GiB (1536\\ MiB). The "
-"decompressor already supports dictionaries up to one byte less than 4\\ GiB, "
-"which is the maximum for the LZMA1 and LZMA2 stream formats."
-msgstr ""
-"Généralement la I<taille> du dictionnaire est entre 64\\ Kio et 64\\ Mio. Le "
-"minimum étant 4\\ Kio. La I<taille> maximale pour la compression est "
-"habituellement 1,5\\ Gio (1536\\ Mio). Le décompresseur prend en charge les "
-"dictionnaires jusqu'à un octet de moins que 4\\ Gio, ce qui est le maximum "
-"pour les formats de flux LZMA1 et LZMA2."
+#: ../src/xz/xz.1
+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 "La I<taille> du dictionnaire (historique du tampon) indique combien d'octets des données récement décompressées sont gardés en mémoire. L'algorithme essaie de trouver les séquences d'octets répétées (identiques) dans les données décompressées et les remplace par les données actuellement dans le dictionnaire. Plus gros est le dictionnaire, plus grande est la chance de trouver une correspondance. Ainsi, l'augmentation de la I<taille> du dictionnaire augmente habituellement le taux de compression, mais un dictionnaire plus gros que le fichier non compressé est un gachis de mémoire."
#. type: Plain text
-#: ../src/xz/xz.1:1425
-msgid ""
-"Dictionary I<size> and match finder (I<mf>) together determine the memory "
-"usage of the LZMA1 or LZMA2 encoder. The same (or bigger) dictionary "
-"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 ""
-"La I<taille> du dictionnaire et le chercheur de correspondance (match "
-"finder) (I<mf>) déterminent ensemble l'utilisation de la mémoire de "
-"l'encodeur LZMA1 ou LZMA2. La même (ou une plus grosse) I<taille> de "
-"dictionnaire est requise pour décompresser que ce qui a été utilisé pour la "
-"compression, ainsi l'utilisation de la mémoire du décodeur est déterminée "
-"par la taille du dictionnaire utilisée lors de la compression. Les en-têtes "
-"de B<.xz> stockent la I<taille> de dictionnaire sous la forme 2^I<n> ou "
-"2^I<n> + 2^(I<n>-1), de sorte que ces I<tailles> sont quelque peu préférées "
-"pour la compression. Les autres I<tailles> seront arrondies à la hausse "
-"lorsque stockées dans les en-têtes de B<.xz>."
+#: ../src/xz/xz.1
+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 "Généralement la I<taille> du dictionnaire est entre 64\\ Kio et 64\\ Mio. Le minimum étant 4\\ Kio. La I<taille> maximale pour la compression est habituellement 1,5\\ Gio (1536\\ Mio). Le décompresseur prend en charge les dictionnaires jusqu'à un octet de moins que 4\\ Gio, ce qui est le maximum pour les formats de flux LZMA1 et LZMA2."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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 "La I<taille> du dictionnaire et le chercheur de correspondance (match finder) (I<mf>) déterminent ensemble l'utilisation de la mémoire de l'encodeur LZMA1 ou LZMA2. La même (ou une plus grosse) I<taille> de dictionnaire est requise pour décompresser que ce qui a été utilisé pour la compression, ainsi l'utilisation de la mémoire du décodeur est déterminée par la taille du dictionnaire utilisée lors de la compression. Les en-têtes de B<.xz> stockent la I<taille> de dictionnaire sous la forme 2^I<n> ou 2^I<n> + 2^(I<n>-1), de sorte que ces I<tailles> sont quelque peu préférées pour la compression. Les autres I<tailles> seront arrondies à la hausse lorsque stockées dans les en-têtes de B<.xz>."
#. type: TP
-#: ../src/xz/xz.1:1425
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lc=>I<lc>"
msgstr "B<lc=>I<lc>"
#. type: Plain text
-#: ../src/xz/xz.1:1434
-msgid ""
-"Specify the number of literal context bits. The minimum is 0 and the "
-"maximum is 4; the default is 3. In addition, the sum of I<lc> and I<lp> "
-"must not exceed 4."
-msgstr ""
-"Spécifiez le nombre d'octets de contexte littéraux. Le minimum est B<0> et "
-"le maximum est B<4>. La valeur par défaut est B<3>. En plus, la somme de "
-"I<lc> et I<lp> ne doit pas excéder B<4>."
+#: ../src/xz/xz.1
+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 "Spécifiez le nombre d'octets de contexte littéraux. Le minimum est B<0> et le maximum est B<4>. La valeur par défaut est B<3>. En plus, la somme de I<lc> et I<lp> ne doit pas excéder B<4>."
#. type: Plain text
-#: ../src/xz/xz.1:1439
-msgid ""
-"All bytes that cannot be encoded as matches are encoded as literals. That "
-"is, literals are simply 8-bit bytes that are encoded one at a time."
+#: ../src/xz/xz.1
+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 "Tous les octets qui ne peuvent pas être codés comme des correspondances sont codés comme des littéraux. C'est à dire que les littéraux sont simplement des octets 8 bits encodés un à la fois."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The literal coding makes an assumption that the highest I<lc> bits of the previous uncompressed byte correlate with the next byte. For example, in typical English text, an upper-case letter is often followed by a lower-case letter, and a lower-case letter is usually followed by another lower-case letter. In the US-ASCII character set, the highest three bits are 010 for upper-case letters and 011 for lower-case letters. When I<lc> is at least 3, the literal coding can take advantage of this property in the uncompressed data."
msgstr ""
-"Tous les octets qui ne peuvent pas être codés comme des correspondances sont "
-"codés comme des littéraux. C'est à dire que les littéraux sont simplement "
-"des octets 8 bits encodés un à la fois."
#. type: Plain text
-#: ../src/xz/xz.1:1453
-#, fuzzy
-#| 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."
-msgid ""
-"The literal coding makes an assumption that the highest I<lc> bits of the "
-"previous uncompressed byte correlate with the next byte. For example, in "
-"typical English text, an upper-case letter is often followed by a lower-case "
-"letter, and a lower-case letter is usually followed by another lower-case "
-"letter. In the US-ASCII character set, the highest three bits are 010 for "
-"upper-case letters and 011 for lower-case letters. When I<lc> is at least "
-"3, the literal coding can take advantage of this property in the "
-"uncompressed data."
-msgstr ""
-"Le codage littéral part du principe que les bits I<lc> les plus élevés de "
-"l'octet décompressé précédent sont en corrélation avec l'octet suivant. Par "
-"exemple dans un texte anglais typique, une lettre majuscule est souvent "
-"suivie d'une lettre minuscule, et une lettre minuscule est généralement "
-"suivie d'une autre lettre minuscule. Dans le jeu de caractères US-ASCII, les "
-"trois bits les plus haut sont 010 pour les lettres majuscules et 011 pour "
-"les minuscules. Lorsque I<lc> est au final B<3>, le codage littéral peut "
-"tirer avantage de cette propriété dans les données décompressées."
-
-#. type: Plain text
-#: ../src/xz/xz.1:1462
-#, fuzzy
-#| 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."
-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 B<lc=2> too."
+#: ../src/xz/xz.1
+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 B<lc=2> too."
msgstr ""
-"La valeur par défaut (3) est généralement la bonne. Si vous voulez une "
-"compression maximale, essayez B<lc=4>. Cela aide parfois un petit peu, et "
-"parfois cela empire la compression. Si cela l'empire, essayez par exemple\\& "
-"B<lc=2> aussi."
#. type: TP
-#: ../src/xz/xz.1:1462
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lp=>I<lp>"
msgstr "B<lp=>I<lp>"
#. type: Plain text
-#: ../src/xz/xz.1:1466
-msgid ""
-"Specify the number of literal position bits. The minimum is 0 and the "
-"maximum is 4; the default is 0."
-msgstr ""
-"Indiquer le nombre de bits de position littérale. Le minimum est B<0> et le "
-"maximum B<4>; par défaut c'est B<0>."
+#: ../src/xz/xz.1
+msgid "Specify the number of literal position bits. The minimum is 0 and the maximum is 4; the default is 0."
+msgstr "Indiquer le nombre de bits de position littérale. Le minimum est B<0> et le maximum B<4>; par défaut c'est B<0>."
#. type: Plain text
-#: ../src/xz/xz.1:1473
-msgid ""
-"I<Lp> affects what kind of alignment in the uncompressed data is assumed "
-"when encoding literals. See I<pb> below for more information about "
-"alignment."
-msgstr ""
-"I<Lp> affecte le type d'alignement dans les données décompressées qui est "
-"présumé lors de l'encodage des littéraux. Voir I<pb> ci dessous pour plus "
-"d'information sur l'alignement."
+#: ../src/xz/xz.1
+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> affecte le type d'alignement dans les données décompressées qui est présumé lors de l'encodage des littéraux. Voir I<pb> ci dessous pour plus d'information sur l'alignement."
#. type: TP
-#: ../src/xz/xz.1:1473
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<pb=>I<pb>"
msgstr "B<pb=>I<pb>"
#. type: Plain text
-#: ../src/xz/xz.1:1477
-msgid ""
-"Specify the number of position bits. The minimum is 0 and the maximum is 4; "
-"the default is 2."
-msgstr ""
-"Indiquer le nombre de bits de position. Le minimum est B<0> et le maximum "
-"B<4>; par défaut B<2>."
+#: ../src/xz/xz.1
+msgid "Specify the number of position bits. The minimum is 0 and the maximum is 4; the default is 2."
+msgstr "Indiquer le nombre de bits de position. Le minimum est B<0> et le maximum B<4>; par défaut B<2>."
#. type: Plain text
-#: ../src/xz/xz.1:1484
-msgid ""
-"I<Pb> affects what kind of alignment in the uncompressed data is assumed in "
-"general. The default means four-byte alignment (2^I<pb>=2^2=4), which is "
-"often a good choice when there's no better guess."
-msgstr ""
-"I<Pb> affecte quel genre d'alignement est présumé en général dans les "
-"données non compressées. Par défaut c'est un alignement de quatre octets "
-"(2^I<pb>=2^2=4), ce qui est généralement un bon choix lorsqu'il n'y a pas de "
-"meilleure estimation."
+#: ../src/xz/xz.1
+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> affecte quel genre d'alignement est présumé en général dans les données non compressées. Par défaut c'est un alignement de quatre octets (2^I<pb>=2^2=4), ce qui est généralement un bon choix lorsqu'il n'y a pas de meilleure estimation."
#. type: Plain text
-#: ../src/xz/xz.1:1498
-#, fuzzy
-#| 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."
-msgid ""
-"When the alignment is known, setting I<pb> accordingly may reduce the file "
-"size a little. For example, with text files having one-byte alignment (US-"
-"ASCII, ISO-8859-*, UTF-8), setting B<pb=0> can improve compression "
-"slightly. For UTF-16 text, B<pb=1> is a good choice. If the alignment is "
-"an odd number like 3 bytes, B<pb=0> might be the best choice."
+#: ../src/xz/xz.1
+msgid "When the alignment is known, setting I<pb> accordingly may reduce the file size a little. For example, with text files having one-byte alignment (US-ASCII, ISO-8859-*, UTF-8), setting B<pb=0> can improve compression slightly. For UTF-16 text, B<pb=1> is a good choice. If the alignment is an odd number like 3 bytes, B<pb=0> might be the best choice."
msgstr ""
-"Quand l'alignement est connu, régler en conséquence I<pb> pourrait réduire "
-"un peu la taille du fichier. Par ex. avec les fichiers texte ayant un "
-"alignement d'un octet (US-ASCII, ISO-8859-*, UTF-8), indiquer B<pb=0> peut "
-"légèrement améliorer la compression. Pour les textes UTF-16, B<pb=1> est un "
-"bon choix. Si l'alignement est un nombre impair comme 3 octets, B<pb=0> "
-"pourrait être le meilleur choix."
#. type: Plain text
-#: ../src/xz/xz.1:1506
-msgid ""
-"Even though the assumed alignment can be adjusted with I<pb> and I<lp>, "
-"LZMA1 and LZMA2 still slightly favor 16-byte alignment. It might be worth "
-"taking into account when designing file formats that are likely to be often "
-"compressed with LZMA1 or LZMA2."
-msgstr ""
-"Même si l'alignement présumé peut être ajusté avec I<pb> et I<lp>, LZMA1 et "
-"LZMA2 favorisent toujours légèrement l'alignement sur 16 octets. Il peut "
-"être utile d'en tenir compte lors de la conception de formats de fichiers "
-"susceptibles d'être souvent compressés avec LZMA1 ou LZMA2."
+#: ../src/xz/xz.1
+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 "Même si l'alignement présumé peut être ajusté avec I<pb> et I<lp>, LZMA1 et LZMA2 favorisent toujours légèrement l'alignement sur 16 octets. Il peut être utile d'en tenir compte lors de la conception de formats de fichiers susceptibles d'être souvent compressés avec LZMA1 ou LZMA2."
#. type: TP
-#: ../src/xz/xz.1:1506
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<mf=>I<mf>"
msgstr "B<mf=>I<mf>"
#. type: Plain text
-#: ../src/xz/xz.1:1521
-#, fuzzy
-#| 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>."
-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\\(en3 use B<hc4>, and the rest use B<bt4>."
+#: ../src/xz/xz.1
+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\\(en3 use B<hc4>, and the rest use B<bt4>."
msgstr ""
-"La recherche de correspondance a un effet important sur la vitesse de "
-"l'encodeur, l'utilisation de la mémoire et le taux de compression. En "
-"général, les chercheurs de correspondance de chaîne de hachage sont plus "
-"rapides que les chercheurs de correspondance d'un arbre binaire. Par défaut, "
-"cela dépend du I<préréglage> : B<0> utilise B<hc3>, B<1-3> utilise B<hc4>, "
-"et le reste utilise B<bt4>."
#. type: Plain text
-#: ../src/xz/xz.1:1527
-msgid ""
-"The following match finders are supported. The memory usage formulas below "
-"are rough approximations, which are closest to the reality when I<dict> is a "
-"power of two."
-msgstr ""
-"Les chercheurs de correspondance suivants sont pris en charge. Les formules "
-"d'utilisation de la mémoire ci-dessous sont des approximations grossières "
-"qui sont les plus proches de la réalité lorsque I<dict> est une puissance de "
-"deux."
+#: ../src/xz/xz.1
+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 "Les chercheurs de correspondance suivants sont pris en charge. Les formules d'utilisation de la mémoire ci-dessous sont des approximations grossières qui sont les plus proches de la réalité lorsque I<dict> est une puissance de deux."
#. type: TP
-#: ../src/xz/xz.1:1528
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<hc3>"
msgstr "B<hc3>"
#. type: Plain text
-#: ../src/xz/xz.1:1531
+#: ../src/xz/xz.1
msgid "Hash Chain with 2- and 3-byte hashing"
msgstr "Chaîne de hachage avec hachage de 2 et 3 octets"
#. type: Plain text
-#: ../src/xz/xz.1:1535 ../src/xz/xz.1:1584
+#: ../src/xz/xz.1
msgid "Minimum value for I<nice>: 3"
msgstr "Valeur minimale pour I<nice> : B<3>"
#. type: Plain text
-#: ../src/xz/xz.1:1537 ../src/xz/xz.1:1556 ../src/xz/xz.1:1586
-#: ../src/xz/xz.1:1605
+#: ../src/xz/xz.1
msgid "Memory usage:"
msgstr "Utilisation de la mémoire :"
#. type: Plain text
-#: ../src/xz/xz.1:1542
+#: ../src/xz/xz.1
msgid "I<dict> * 7.5 (if I<dict> E<lt>= 16 MiB);"
msgstr "I<dict> * 7.5 (if I<dict> E<lt>= 16 Mio);"
#. type: Plain text
-#: ../src/xz/xz.1:1547
+#: ../src/xz/xz.1
msgid "I<dict> * 5.5 + 64 MiB (if I<dict> E<gt> 16 MiB)"
msgstr "I<dict> * 5.5 + 64 MiB (si I<dict> E<gt> 16 Mio)"
#. type: TP
-#: ../src/xz/xz.1:1547
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<hc4>"
msgstr "B<hc4>"
#. type: Plain text
-#: ../src/xz/xz.1:1550
+#: ../src/xz/xz.1
msgid "Hash Chain with 2-, 3-, and 4-byte hashing"
msgstr "Chaîne de hachage avec hachage de 2, 3 et 4 octets"
#. type: Plain text
-#: ../src/xz/xz.1:1554 ../src/xz/xz.1:1603
+#: ../src/xz/xz.1
msgid "Minimum value for I<nice>: 4"
msgstr "Valeur minimale pour I<nice> : B<4>"
#. type: Plain text
-#: ../src/xz/xz.1:1561
+#: ../src/xz/xz.1
msgid "I<dict> * 7.5 (if I<dict> E<lt>= 32 MiB);"
msgstr "I<dict> * 7.5 (si I<dict> E<lt>= 32 Mio);"
#. type: Plain text
-#: ../src/xz/xz.1:1566
+#: ../src/xz/xz.1
msgid "I<dict> * 6.5 (if I<dict> E<gt> 32 MiB)"
msgstr "I<dict> * 6.5 (si I<dict> E<gt> 32 Mio)"
#. type: TP
-#: ../src/xz/xz.1:1566
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<bt2>"
msgstr "B<bt2>"
#. type: Plain text
-#: ../src/xz/xz.1:1569
+#: ../src/xz/xz.1
msgid "Binary Tree with 2-byte hashing"
msgstr "Arbre binaire avec hachage de 2 octets"
#. type: Plain text
-#: ../src/xz/xz.1:1573
+#: ../src/xz/xz.1
msgid "Minimum value for I<nice>: 2"
msgstr "Valeur minimale pour I<nice> : B<2>"
#. type: Plain text
-#: ../src/xz/xz.1:1577
+#: ../src/xz/xz.1
msgid "Memory usage: I<dict> * 9.5"
msgstr "Utilisation de la mémoire : I<dict> * 9.5"
#. type: TP
-#: ../src/xz/xz.1:1577
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<bt3>"
msgstr "B<bt3>"
#. type: Plain text
-#: ../src/xz/xz.1:1580
+#: ../src/xz/xz.1
msgid "Binary Tree with 2- and 3-byte hashing"
msgstr "Arbre binaire avec hachage de 2 et 3 octets"
#. type: Plain text
-#: ../src/xz/xz.1:1591
+#: ../src/xz/xz.1
msgid "I<dict> * 11.5 (if I<dict> E<lt>= 16 MiB);"
msgstr "I<dict> * 11.5 (si I<dict> E<lt>= 16 Mio);"
#. type: Plain text
-#: ../src/xz/xz.1:1596
+#: ../src/xz/xz.1
msgid "I<dict> * 9.5 + 64 MiB (if I<dict> E<gt> 16 MiB)"
msgstr "I<dict> * 9.5 + 64 MiB (si I<dict> E<gt> 16 Mio)"
#. type: TP
-#: ../src/xz/xz.1:1596
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<bt4>"
msgstr "B<bt4>"
#. type: Plain text
-#: ../src/xz/xz.1:1599
+#: ../src/xz/xz.1
msgid "Binary Tree with 2-, 3-, and 4-byte hashing"
msgstr "Arbre binaire avec hachage 2, 3 et 4 octets"
#. type: Plain text
-#: ../src/xz/xz.1:1610
+#: ../src/xz/xz.1
msgid "I<dict> * 11.5 (if I<dict> E<lt>= 32 MiB);"
msgstr "I<dict> * 11.5 (si I<dict> E<lt>= 32 Mio);"
#. type: Plain text
-#: ../src/xz/xz.1:1615
+#: ../src/xz/xz.1
msgid "I<dict> * 10.5 (if I<dict> E<gt> 32 MiB)"
msgstr "I<dict> * 10.5 (si I<dict> E<gt> 32 Mio)"
#. type: TP
-#: ../src/xz/xz.1:1616
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<mode=>I<mode>"
msgstr "B<mode=>I<mode>"
#. type: Plain text
-#: ../src/xz/xz.1:1637
-#, fuzzy
-#| 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."
-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\\(en3 and B<normal> for I<presets> 4\\(en9."
+#: ../src/xz/xz.1
+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\\(en3 and B<normal> for I<presets> 4\\(en9."
msgstr ""
-"Le I<mode> de compression indique la méthode pour analyser les données "
-"produites par le chercheur de correspondance. Les I<modes> pris en charge "
-"sont B<fast> et B<normal>. Par défaut c'est B<fast> pour les I<préréglages> "
-"de B<0> à B<3> et B<normal> pour les préréglages de B<4> à B<9>."
#. type: Plain text
-#: ../src/xz/xz.1:1646
-msgid ""
-"Usually B<fast> is used with Hash Chain match finders and B<normal> with "
-"Binary Tree match finders. This is also what the I<presets> do."
-msgstr ""
-"Habituellement, B<fast> est utilisé avec les chercheurs de correspondance de "
-"chaîne de hachage et B<normal> avec les chercheurs de correspondance d'arbre "
-"binaire. C'est aussi ce que font les I<préréglages>."
+#: ../src/xz/xz.1
+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 "Habituellement, B<fast> est utilisé avec les chercheurs de correspondance de chaîne de hachage et B<normal> avec les chercheurs de correspondance d'arbre binaire. C'est aussi ce que font les I<préréglages>."
#. type: TP
-#: ../src/xz/xz.1:1646
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<nice=>I<nice>"
msgstr "B<nice=>I<nice>"
#. type: Plain text
-#: ../src/xz/xz.1:1653
-msgid ""
-"Specify what is considered to be a nice length for a match. Once a match of "
-"at least I<nice> bytes is found, the algorithm stops looking for possibly "
-"better matches."
-msgstr ""
-"Spécifier ce qui est considéré comme une bonne longueur pour une "
-"correspondance. Une fois que la correspondance d'au moins I<nice> octets est "
-"trouvée, l'algorithme arrête de chercher de meilleures correspondances "
-"possibles."
+#: ../src/xz/xz.1
+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 "Spécifier ce qui est considéré comme une bonne longueur pour une correspondance. Une fois que la correspondance d'au moins I<nice> octets est trouvée, l'algorithme arrête de chercher de meilleures correspondances possibles."
#. type: Plain text
-#: ../src/xz/xz.1:1660
-#, fuzzy
-#| 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>."
-msgid ""
-"I<Nice> can be 2\\(en273 bytes. Higher values tend to give better "
-"compression ratio at the expense of speed. The default depends on the "
-"I<preset>."
+#: ../src/xz/xz.1
+msgid "I<Nice> can be 2\\(en273 bytes. Higher values tend to give better compression ratio at the expense of speed. The default depends on the I<preset>."
msgstr ""
-"I<nice> peut être 2 273 octets. Des valeurs plus élevées ont tendance à "
-"donner un meilleur taux de compression au détriment de la vitesse. La valeur "
-"par défaut dépend du I<préréglage>."
#. type: TP
-#: ../src/xz/xz.1:1660
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<depth=>I<depth>"
msgstr "B<depth=>I<profondeur>"
#. type: Plain text
-#: ../src/xz/xz.1:1670
-msgid ""
-"Specify the maximum search depth in the match finder. The default is the "
-"special value of 0, which makes the compressor determine a reasonable "
-"I<depth> from I<mf> and I<nice>."
-msgstr ""
-"Spécifier la profondeur de recherche maximale dans l'outil de recherche de "
-"correspondances. La valeur par défaut est B<0>, ce qui fait que le "
-"compresseur détermine une I<profondeur> raisonnable en fonction de I<mf> et "
-"I<nice>."
+#: ../src/xz/xz.1
+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 "Spécifier la profondeur de recherche maximale dans l'outil de recherche de correspondances. La valeur par défaut est B<0>, ce qui fait que le compresseur détermine une I<profondeur> raisonnable en fonction de I<mf> et I<nice>."
#. type: Plain text
-#: ../src/xz/xz.1:1681
-#, fuzzy
-#| 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."
-msgid ""
-"Reasonable I<depth> for Hash Chains is 4\\(en100 and 16\\(en1000 for Binary "
-"Trees. Using very high values for I<depth> can make the encoder extremely "
-"slow with some files. Avoid setting the I<depth> over 1000 unless you are "
-"prepared to interrupt the compression in case it is taking far too long."
+#: ../src/xz/xz.1
+msgid "Reasonable I<depth> for Hash Chains is 4\\(en100 and 16\\(en1000 for Binary Trees. Using very high values for I<depth> can make the encoder extremely slow with some files. Avoid setting the I<depth> over 1000 unless you are prepared to interrupt the compression in case it is taking far too long."
msgstr ""
-"Une I<profondeur> raisonnable pour les chaînes de hachage est 4-100 et "
-"16-1000 pour les arbres binaires. Utiliser des valeurs beaucoup plus grandes "
-"pour I<depth> peut rendre l'encodeur extrèmement lent avec quelques "
-"fichiers. Évitez de fixer la I<profondeur> à plus de 1000, sauf si vous êtes "
-"prêt à interrompre la compression au cas où elle prendrait beaucoup trop de "
-"temps."
#. type: Plain text
-#: ../src/xz/xz.1:1692
-msgid ""
-"When decoding raw streams (B<--format=raw>), LZMA2 needs only the dictionary "
-"I<size>. LZMA1 needs also I<lc>, I<lp>, and I<pb>."
-msgstr ""
-"Lors du décodage des flux bruts (B<--format=raw>), LZMA2 nécessite seulement "
-"la I<taille> du dictionnaire. LZMA1 nécessite aussi I<lc>, I<lp> et I<pb>."
+#: ../src/xz/xz.1
+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 "Lors du décodage des flux bruts (B<--format=raw>), LZMA2 nécessite seulement la I<taille> du dictionnaire. LZMA1 nécessite aussi I<lc>, I<lp> et I<pb>."
#. type: TP
-#: ../src/xz/xz.1:1692
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--x86>[B<=>I<options>]"
msgstr "B<--x86>[B<=>I<options>]"
#. type: TP
-#: ../src/xz/xz.1:1695
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--arm>[B<=>I<options>]"
msgstr "B<--arm>[B<=>I<options>]"
#. type: TP
-#: ../src/xz/xz.1:1697
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--armthumb>[B<=>I<options>]"
msgstr "B<--armthumb>[B<=>I<options>]"
#. type: TP
-#: ../src/xz/xz.1:1699
+#: ../src/xz/xz.1
#, fuzzy, no-wrap
#| msgid "B<--arm>[B<=>I<options>]"
msgid "B<--arm64>[B<=>I<options>]"
msgstr "B<--arm>[B<=>I<options>]"
#. type: TP
-#: ../src/xz/xz.1:1701
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--powerpc>[B<=>I<options>]"
msgstr "B<--powerpc>[B<=>I<options>]"
#. type: TP
-#: ../src/xz/xz.1:1703
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--ia64>[B<=>I<options>]"
msgstr "B<--ia64>[B<=>I<options>]"
#. type: TP
-#: ../src/xz/xz.1:1705
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--sparc>[B<=>I<options>]"
msgstr "B<--sparc>[B<=>I<options>]"
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "B<--riscv>[B<=>I<options>]"
+msgstr "B<--riscv>[B<=>I<options>]"
+
#. type: Plain text
-#: ../src/xz/xz.1:1711
-msgid ""
-"Add a branch/call/jump (BCJ) filter to the filter chain. These filters can "
-"be used only as a non-last filter in the filter chain."
+#: ../src/xz/xz.1
+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 "Ajouter un filtre branch/call/jump (BCJ) à la chaîne de filtres. Ces filtres ne peuvent être utilisés que s'ils ne sont pas le dernier filtre de la chaîne de filtrage."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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\\(en15\\ % smaller B<.xz> file. The BCJ filters are always reversible, so using a BCJ filter for wrong type of data doesn't cause any data loss, although it may make the compression ratio slightly worse. The BCJ filters are very fast and use an insignificant amount of memory."
msgstr ""
-"Ajouter un filtre branch/call/jump (BCJ) à la chaîne de filtres. Ces filtres "
-"ne peuvent être utilisés que s'ils ne sont pas le dernier filtre de la "
-"chaîne de filtrage."
#. type: Plain text
-#: ../src/xz/xz.1:1725
-#, fuzzy
-#| 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."
-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\\(en15\\ % smaller "
-"B<.xz> file. The BCJ filters are always reversible, so using a BCJ filter "
-"for wrong type of data doesn't cause any data loss, although it may make the "
-"compression ratio slightly worse. The BCJ filters are very fast and use an "
-"insignificant amount of memory."
-msgstr ""
-"Un filtre BCJ convertit les adresses relatives du code machine en leurs "
-"équivalents absolus. Cela ne change pas la taille des données, mais évite "
-"les redondances, ce qui peut aider LZMA2 à produire un fichier B<.xz> 0 à "
-"15\\ % plus petit. Les filtres BCJ sont toujours réversibles, ce qui fait "
-"qu'utiliser un filtre BCJ pour le mauvais type de données n'occasionne pas "
-"de perte de données, même si ça pourrait empirer légèrement le taux de "
-"compression."
-
-#. type: Plain text
-#: ../src/xz/xz.1:1728
+#: ../src/xz/xz.1
msgid "These BCJ filters have known problems related to the compression ratio:"
-msgstr ""
-"Ces filtres BCJ présentent des problèmes connus liés au taux de compression :"
+msgstr "Ces filtres BCJ présentent des problèmes connus liés au taux de compression :"
#. type: Plain text
-#: ../src/xz/xz.1:1735
-#, fuzzy
-#| 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."
-msgid ""
-"Some types of files containing executable code (for example, object files, "
-"static libraries, and Linux kernel modules) have the addresses in the "
-"instructions filled with filler values. These BCJ filters will still do the "
-"address conversion, which will make the compression worse with these files."
+#: ../src/xz/xz.1
+msgid "Some types of files containing executable code (for example, object files, static libraries, and Linux kernel modules) have the addresses in the instructions filled with filler values. These BCJ filters will still do the address conversion, which will make the compression worse with these files."
msgstr ""
-"Quelques types de fichier contiennent du code exécutable (par exemple les "
-"fichiers objet, les bibliothèques statiques et les modules du noyau Linux) "
-"ont rempli les adresses dans les instructions avec des valeurs de "
-"remplissage. Ces filtres BCJ feront toujours la conversion d'adresse, ce qui "
-"pourrait péjorer la compression avec ces fichiers."
#. type: Plain text
-#: ../src/xz/xz.1:1745
-msgid ""
-"If a BCJ filter is applied on an archive, it is possible that it makes the "
-"compression ratio worse than not using a BCJ filter. For example, if there "
-"are similar or even identical executables then filtering will likely make "
-"the files less similar and thus compression is worse. The contents of non-"
-"executable files in the same archive can matter too. In practice one has to "
-"try with and without a BCJ filter to see which is better in each situation."
+#: ../src/xz/xz.1
+msgid "If a BCJ filter is applied on an archive, it is possible that it makes the compression ratio worse than not using a BCJ filter. For example, if there are similar or even identical executables then filtering will likely make the files less similar and thus compression is worse. The contents of non-executable files in the same archive can matter too. In practice one has to try with and without a BCJ filter to see which is better in each situation."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1750
-msgid ""
-"Different instruction sets have different alignment: the executable file "
-"must be aligned to a multiple of this value in the input data to make the "
-"filter work."
+#: ../src/xz/xz.1
+msgid "Different instruction sets have different alignment: the executable file must be aligned to a multiple of this value in the input data to make the filter work."
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:1757
+#: ../src/xz/xz.1
#, no-wrap
msgid "Filter"
msgstr "Filtre"
#. type: tbl table
-#: ../src/xz/xz.1:1757
+#: ../src/xz/xz.1
#, no-wrap
msgid "Alignment"
msgstr "Alignement"
#. type: tbl table
-#: ../src/xz/xz.1:1757
+#: ../src/xz/xz.1
#, no-wrap
msgid "Notes"
msgstr "Notes"
#. type: tbl table
-#: ../src/xz/xz.1:1758
+#: ../src/xz/xz.1
#, no-wrap
msgid "x86"
msgstr "x86"
#. type: tbl table
-#: ../src/xz/xz.1:1758
+#: ../src/xz/xz.1
#, no-wrap
msgid "32-bit or 64-bit x86"
msgstr "32 bits ou 64 bits x86"
#. type: tbl table
-#: ../src/xz/xz.1:1759
+#: ../src/xz/xz.1
#, no-wrap
msgid "ARM"
msgstr "ARM"
#. type: tbl table
-#: ../src/xz/xz.1:1760
+#: ../src/xz/xz.1
#, no-wrap
msgid "ARM-Thumb"
msgstr "ARM-Thumb"
#. type: tbl table
-#: ../src/xz/xz.1:1761
+#: ../src/xz/xz.1
#, no-wrap
msgid "ARM64"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:1761
+#: ../src/xz/xz.1
#, no-wrap
msgid "4096-byte alignment is best"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:1762
+#: ../src/xz/xz.1
#, no-wrap
msgid "PowerPC"
msgstr "PowerPC"
#. type: tbl table
-#: ../src/xz/xz.1:1762
+#: ../src/xz/xz.1
#, no-wrap
msgid "Big endian only"
msgstr "Grand boutiste seulement"
#. type: tbl table
-#: ../src/xz/xz.1:1763
+#: ../src/xz/xz.1
#, no-wrap
msgid "IA-64"
msgstr "IA-64"
#. type: tbl table
-#: ../src/xz/xz.1:1763
+#: ../src/xz/xz.1
#, no-wrap
msgid "16"
msgstr "16"
#. type: tbl table
-#: ../src/xz/xz.1:1763
+#: ../src/xz/xz.1
#, no-wrap
msgid "Itanium"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:1764
+#: ../src/xz/xz.1
#, no-wrap
msgid "SPARC"
msgstr "SPARC"
+#. type: tbl table
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "RISC-V"
+msgstr ""
+
#. type: Plain text
-#: ../src/xz/xz.1:1781
-#, fuzzy
-#| 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."
-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> or even B<pb=4,lp=4,lc=0> with LZMA2 "
-"(2^4=16). The x86 filter is an exception; it's usually good to stick to "
-"LZMA2's default four-byte alignment when compressing x86 executables."
-msgstr ""
-"Dans la mesure où les données filtrées par BCJ sont généralement compressées "
-"avec LZMA2, le taux de compression peut être légèrement amélioré si les "
-"options de LZMA2 sont indiquées pour la correspondance d'alignement du "
-"filtre BCJ sélectionné. Par exemple, avec le filtre IA-64, il est bon "
-"d'indiquer B<pb=4> avec LZMA2 (2^4=16). Le filtre x86 est une exception ; il "
-"est généralement approprié de coller à l'alignement quatre octets par défaut "
-"de LZMA2 lors de la compression d'exécutables x86. "
-
-#. type: Plain text
-#: ../src/xz/xz.1:1784
+#: ../src/xz/xz.1
+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. Examples:"
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "IA-64 filter has 16-byte alignment so B<pb=4,lp=4,lc=0> is good with LZMA2 (2^4=16)."
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "RISC-V code has 2-byte or 4-byte alignment depending on whether the file contains 16-bit compressed instructions (the C extension). When 16-bit instructions are used, B<pb=2,lp=1,lc=3> or B<pb=1,lp=1,lc=3> is good. When 16-bit instructions aren't present, B<pb=2,lp=2,lc=2> is the best. B<readelf -h> can be used to check if \"RVC\" appears on the \"Flags\" line."
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "ARM64 is always 4-byte aligned so B<pb=2,lp=2,lc=2> is the best."
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The x86 filter is an exception. It's usually good to stick to LZMA2's defaults (B<pb=2,lp=0,lc=3>) when compressing x86 executables."
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
msgid "All BCJ filters support the same I<options>:"
msgstr "Tous les filtres BCJ prennent en charge les mêmes I<options> :"
#. type: TP
-#: ../src/xz/xz.1:1785
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<start=>I<offset>"
msgstr "B<start=>I<décalage>"
#. type: Plain text
-#: ../src/xz/xz.1:1799
-msgid ""
-"Specify the start I<offset> that is used when converting between relative "
-"and absolute addresses. The I<offset> must be a multiple of the alignment "
-"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 ""
-"Spécifier le I<décalage> de départ qui est utilisé lors de la conversion "
-"entre les adresses relatives et absolues. Le I<décalage> doit être un "
-"multiple de l'alignement du filtre (voir la table ci-dessus). Sa valeur par "
-"défaut est zéro. En pratique, cette dernière convient ; indiquer un "
-"I<décalage> personnalisé est la plupart du temps inutile."
+#: ../src/xz/xz.1
+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 "Spécifier le I<décalage> de départ qui est utilisé lors de la conversion entre les adresses relatives et absolues. Le I<décalage> doit être un multiple de l'alignement du filtre (voir la table ci-dessus). Sa valeur par défaut est zéro. En pratique, cette dernière convient ; indiquer un I<décalage> personnalisé est la plupart du temps inutile."
#. type: TP
-#: ../src/xz/xz.1:1800
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--delta>[B<=>I<options>]"
msgstr "B<--delta>[B<=>I<options>]"
#. type: Plain text
-#: ../src/xz/xz.1:1805
-msgid ""
-"Add the Delta filter to the filter chain. The Delta filter can be only used "
-"as a non-last filter in the filter chain."
-msgstr ""
-"Ajouter le filtre Delta à la chaîne de filtres. Le filtre Delta ne peut être "
-"utilisé que s'il n'est pas le dernier filtre dans la chaîne."
+#: ../src/xz/xz.1
+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 "Ajouter le filtre Delta à la chaîne de filtres. Le filtre Delta ne peut être utilisé que s'il n'est pas le dernier filtre dans la chaîne."
#. type: Plain text
-#: ../src/xz/xz.1:1814
-#, fuzzy
-#| 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)."
-msgid ""
-"Currently only simple byte-wise delta calculation is supported. It can be "
-"useful when compressing, for example, uncompressed bitmap images or "
-"uncompressed PCM audio. However, special purpose algorithms may give "
-"significantly better results than Delta + LZMA2. This is true especially "
-"with audio, which compresses faster and better, for example, with B<flac>(1)."
+#: ../src/xz/xz.1
+msgid "Currently only simple byte-wise delta calculation is supported. It can be useful when compressing, for example, uncompressed bitmap images or uncompressed PCM audio. However, special purpose algorithms may give significantly better results than Delta + LZMA2. This is true especially with audio, which compresses faster and better, for example, with B<flac>(1)."
msgstr ""
-"Actuellement, seul le calcul simple du delta par octet est pris en charge. "
-"Il peut être utile lors de la compression, par exemple, des images bitmap "
-"non compressées ou de l'audio PCM non compressé. Toutefois, des algorithmes "
-"spécialisés peuvent donner des résultats nettement supérieurs à ceux de "
-"Delta + de LZMA2. Cela est spécialement vrai avec le son qui est compressé "
-"plus vite et mieux par exemple avec B<flac>(1)."
#. type: Plain text
-#: ../src/xz/xz.1:1817
+#: ../src/xz/xz.1
msgid "Supported I<options>:"
msgstr "I<options> prises en charge :"
#. type: TP
-#: ../src/xz/xz.1:1818
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<dist=>I<distance>"
msgstr "B<dist=>I<distance>"
#. type: Plain text
-#: ../src/xz/xz.1:1826
-#, fuzzy
-#| msgid ""
-#| "Specify the I<distance> of the delta calculation in bytes. I<distance> "
-#| "must be 1-256. The default is 1."
-msgid ""
-"Specify the I<distance> of the delta calculation in bytes. I<distance> must "
-"be 1\\(en256. The default is 1."
+#: ../src/xz/xz.1
+msgid "Specify the I<distance> of the delta calculation in bytes. I<distance> must be 1\\(en256. The default is 1."
msgstr ""
-"Indiquer la I<distance> du calcul delta en octets. La I<distance> doit être "
-"comprise entre 1 et 256. La valeur par défaut est 1."
#. type: Plain text
-#: ../src/xz/xz.1:1831
-msgid ""
-"For example, with B<dist=2> and eight-byte input A1 B1 A2 B3 A3 B5 A4 B7, "
-"the output will be A1 B1 01 02 01 02 01 02."
-msgstr ""
-"Par exemple, avec B<dist=2> et une entrée huit octets A1 B1 A2 B3 A3 B5 A4 "
-"B7, la sortie sera A1 B1 01 02 01 02 01 02."
+#: ../src/xz/xz.1
+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 "Par exemple, avec B<dist=2> et une entrée huit octets A1 B1 A2 B3 A3 B5 A4 B7, la sortie sera A1 B1 01 02 01 02 01 02."
#. type: SS
-#: ../src/xz/xz.1:1833
+#: ../src/xz/xz.1
#, no-wrap
msgid "Other options"
msgstr "Autres options"
#. type: TP
-#: ../src/xz/xz.1:1834 ../src/xzdec/xzdec.1:83
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-q>, B<--quiet>"
msgstr "B<-q>, B<--quiet>"
#. type: Plain text
-#: ../src/xz/xz.1:1841
-msgid ""
-"Suppress warnings and notices. Specify this twice to suppress errors too. "
-"This option has no effect on the exit status. That is, even if a warning "
-"was suppressed, the exit status to indicate a warning is still used."
-msgstr ""
-"Supprimer les avertissements et les notifications. Indiquer cela deux fois "
-"supprimera aussi les erreurs. Cette option n'a aucun effet sur le statut de "
-"sortie. Cela dit, même si un avertissement était supprimé, le statut de "
-"sortie indiquant un avertissement sera encore utilisé."
+#: ../src/xz/xz.1
+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 "Supprimer les avertissements et les notifications. Indiquer cela deux fois supprimera aussi les erreurs. Cette option n'a aucun effet sur le statut de sortie. Cela dit, même si un avertissement était supprimé, le statut de sortie indiquant un avertissement sera encore utilisé."
#. type: TP
-#: ../src/xz/xz.1:1841
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-v>, B<--verbose>"
msgstr "B<-v>, B<--verbose>"
#. type: Plain text
-#: ../src/xz/xz.1:1850
-msgid ""
-"Be verbose. If standard error is connected to a terminal, B<xz> will "
-"display a progress indicator. Specifying B<--verbose> twice will give even "
-"more verbose output."
-msgstr ""
-"Être bavard. Si l'erreur standard est connectée à un terminal, B<xz> "
-"affichera une barre de progression. Indiquer B<--verbose> deux fois donnera "
-"une sortie encore plus bavarde."
+#: ../src/xz/xz.1
+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 "Être bavard. Si l'erreur standard est connectée à un terminal, B<xz> affichera une barre de progression. Indiquer B<--verbose> deux fois donnera une sortie encore plus bavarde."
#. type: Plain text
-#: ../src/xz/xz.1:1852
+#: ../src/xz/xz.1
msgid "The progress indicator shows the following information:"
msgstr "La barre de progression montre l'information suivante :"
#. type: Plain text
-#: ../src/xz/xz.1:1857
-msgid ""
-"Completion percentage is shown if the size of the input file is known. That "
-"is, the percentage cannot be shown in pipes."
-msgstr ""
-"Le pourcentage de complétion est montré si la taille du fichier en entrée "
-"est connue. Néanmoins, le pourcentage ne peut pas être montré en cas de "
-"redirection."
+#: ../src/xz/xz.1
+msgid "Completion percentage is shown if the size of the input file is known. That is, the percentage cannot be shown in pipes."
+msgstr "Le pourcentage de complétion est montré si la taille du fichier en entrée est connue. Néanmoins, le pourcentage ne peut pas être montré en cas de redirection."
#. type: Plain text
-#: ../src/xz/xz.1:1860
-msgid ""
-"Amount of compressed data produced (compressing) or consumed "
-"(decompressing)."
-msgstr ""
-"Quantité de données compressées produites (compression) ou consommées "
-"(décompression)."
+#: ../src/xz/xz.1
+msgid "Amount of compressed data produced (compressing) or consumed (decompressing)."
+msgstr "Quantité de données compressées produites (compression) ou consommées (décompression)."
#. type: Plain text
-#: ../src/xz/xz.1:1863
-msgid ""
-"Amount of uncompressed data consumed (compressing) or produced "
-"(decompressing)."
-msgstr ""
-"Quantité de données non compressées consommées (compression) ou produites "
-"(décompression)."
+#: ../src/xz/xz.1
+msgid "Amount of uncompressed data consumed (compressing) or produced (decompressing)."
+msgstr "Quantité de données non compressées consommées (compression) ou produites (décompression)."
#. type: Plain text
-#: ../src/xz/xz.1:1867
-msgid ""
-"Compression ratio, which is calculated by dividing the amount of compressed "
-"data processed so far by the amount of uncompressed data processed so far."
-msgstr ""
-"Le taux de compression, calculé en divisant la quantité de données "
-"compréssées déjà traitées par la quantité de données décompressées déjà "
-"traitées."
+#: ../src/xz/xz.1
+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 "Le taux de compression, calculé en divisant la quantité de données compréssées déjà traitées par la quantité de données décompressées déjà traitées."
#. type: Plain text
-#: ../src/xz/xz.1:1874
-msgid ""
-"Compression or decompression speed. This is measured as the amount of "
-"uncompressed data consumed (compression) or produced (decompression) per "
-"second. It is shown after a few seconds have passed since B<xz> started "
-"processing the file."
-msgstr ""
-"Vitesse de compression ou de décompression. Elle correspond à la quantité de "
-"données non compressées consommées (compression) ou produites "
-"(décompression) par seconde. Elle apparait quelques secondes après le début "
-"du traitement du fichier par B<xz>."
+#: ../src/xz/xz.1
+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 "Vitesse de compression ou de décompression. Elle correspond à la quantité de données non compressées consommées (compression) ou produites (décompression) par seconde. Elle apparait quelques secondes après le début du traitement du fichier par B<xz>."
#. type: Plain text
-#: ../src/xz/xz.1:1876
+#: ../src/xz/xz.1
msgid "Elapsed time in the format M:SS or H:MM:SS."
msgstr "Temps écoulé dans le format M:SS ou H:MM:SS."
#. type: Plain text
-#: ../src/xz/xz.1:1884
-#, fuzzy
-#| 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."
-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, for example, 2 min 30 s."
+#: ../src/xz/xz.1
+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, for example, 2 min 30 s."
msgstr ""
-"Le temps estimé restant n'est montré que lorsque la taille du fichier en "
-"entrée est connu et que quelques secondes se sont écoulées depuis que B<xz> "
-"a commencé à traiter le fichier. Le temps est montré dans un format moins "
-"précis qui n'a jamais de deux-point(B<:>), par exemple 2 min 30 s."
#. type: Plain text
-#: ../src/xz/xz.1:1899
-#, fuzzy
-#| 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."
-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, for example, due to user interruption, also the "
-"completion percentage is printed if the size of the input file is known."
-msgstr ""
-"Lorsque l'erreur standard n'est pas un terminal, B<--verbose> fera écrire à "
-"B<xz> le nom de fichier, la taille compressée, la taille décompressée, le "
-"taux de compression, et éventuellement aussi la vitesse et le temps écoulé "
-"sur une seule ligne de l'erreur standard après avoir compressé ou "
-"décompressé le fichier. La vitesse et le temps écoulé sont inclus seulement "
-"lorsque l'opération ne prend pas plus que quelques secondes. Si l'opération "
-"n'a pas fini, par exemple à cause d'une interruption faite par "
-"l'utilisateur, le pourcentage de complétion aussi est écrit si la taille du "
-"fichier en entrée est connue. "
+#: ../src/xz/xz.1
+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, for example, due to user interruption, also the completion percentage is printed if the size of the input file is known."
+msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1899 ../src/xzdec/xzdec.1:89
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-Q>, B<--no-warn>"
msgstr "B<-Q>, B<--no-warn>"
#. type: Plain text
-#: ../src/xz/xz.1:1909
-msgid ""
-"Don't set the exit status to 2 even if a condition worth a warning was "
-"detected. This option doesn't affect the verbosity level, thus both B<--"
-"quiet> and B<--no-warn> have to be used to not display warnings and to not "
-"alter the exit status."
-msgstr ""
-"Ne pas mettre l'état de sortie à B<2> même si une condition méritant un "
-"avertissement a été détectée. Cette option n'affecte pas le niveau de "
-"verbosité, néanmoins, les deux options B<--quiet> et B<--no-warn> doivent "
-"être utilisées pour ne pas afficher d'avertissements, ni altérer le statut "
-"de sortie."
+#: ../src/xz/xz.1
+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 "Ne pas mettre l'état de sortie à B<2> même si une condition méritant un avertissement a été détectée. Cette option n'affecte pas le niveau de verbosité, néanmoins, les deux options B<--quiet> et B<--no-warn> doivent être utilisées pour ne pas afficher d'avertissements, ni altérer le statut de sortie."
#. type: TP
-#: ../src/xz/xz.1:1909
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--robot>"
msgstr "B<--robot>"
#. type: Plain text
-#: ../src/xz/xz.1:1921
-msgid ""
-"Print messages in a machine-parsable format. This is intended to ease "
-"writing frontends that want to use B<xz> instead of liblzma, which may be "
-"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 ""
-"Afficher les messages dans un format analysable par une machine. Ceci est "
-"destiné à faciliter l'écriture des frontaux qui voudraient utiliser B<xz> "
-"plutôt que liblzma, ce qui pourrait être le cas pour différents scripts. La "
-"sortie avec cette option activée est destinée à rester stable sur les "
-"différentes versions de B<xz>. Consulter le paragraphe B<ROBOT MODE> pour "
-"les détails."
+#: ../src/xz/xz.1
+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 "Afficher les messages dans un format analysable par une machine. Ceci est destiné à faciliter l'écriture des frontaux qui voudraient utiliser B<xz> plutôt que liblzma, ce qui pourrait être le cas pour différents scripts. La sortie avec cette option activée est destinée à rester stable sur les différentes versions de B<xz>. Consulter le paragraphe B<ROBOT MODE> pour les détails."
#. type: TP
-#: ../src/xz/xz.1:1921
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--info-memory>"
msgstr "B<--info-memory>"
#. type: Plain text
-#: ../src/xz/xz.1:1928
-#, fuzzy
-#| 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."
-msgid ""
-"Display, in human-readable format, how much physical memory (RAM) and how "
-"many processor threads B<xz> thinks the system has and the memory usage "
-"limits for compression and decompression, and exit successfully."
+#: ../src/xz/xz.1
+msgid "Display, in human-readable format, how much physical memory (RAM) and how many processor threads B<xz> thinks the system has and the memory usage limits for compression and decompression, and exit successfully."
msgstr ""
-"Afficher, dans un format lisible par l'humain, de combien de mémoire "
-"physique (RAM) dispose le système selon B<xz> et les limites d'utilisation "
-"de la mémoire pour la compression et décompression, et quitter."
#. type: TP
-#: ../src/xz/xz.1:1928 ../src/xzdec/xzdec.1:96
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-h>, B<--help>"
msgstr "B<-h>, B<--help>"
#. type: Plain text
-#: ../src/xz/xz.1:1932
-msgid ""
-"Display a help message describing the most commonly used options, and exit "
-"successfully."
-msgstr ""
-"Afficher un message d'aide décrivant les options les plus couramment "
-"utilisées et quitter."
+#: ../src/xz/xz.1
+msgid "Display a help message describing the most commonly used options, and exit successfully."
+msgstr "Afficher un message d'aide décrivant les options les plus couramment utilisées et quitter."
#. type: TP
-#: ../src/xz/xz.1:1932
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-H>, B<--long-help>"
msgstr "B<-H>, B<--long-help>"
#. type: Plain text
-#: ../src/xz/xz.1:1937
-msgid ""
-"Display a help message describing all features of B<xz>, and exit "
-"successfully"
-msgstr ""
-"Afficher un message d'aide décrivant toutes les options de B<xz> et quitter."
+#: ../src/xz/xz.1
+msgid "Display a help message describing all features of B<xz>, and exit successfully"
+msgstr "Afficher un message d'aide décrivant toutes les options de B<xz> et quitter."
#. type: TP
-#: ../src/xz/xz.1:1937 ../src/xzdec/xzdec.1:99
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-V>, B<--version>"
msgstr "B<-V>, B<--version>"
#. type: Plain text
-#: ../src/xz/xz.1:1946
-msgid ""
-"Display the version number of B<xz> and liblzma in human readable format. "
-"To get machine-parsable output, specify B<--robot> before B<--version>."
-msgstr ""
-"Afficher le numéro de version de B<xz> et de liblzma dans un format lisible "
-"par un humain. Pour obtenir une sortie analysable par la machine, spécifiez "
-"B<--robot> avant B<--version>."
+#: ../src/xz/xz.1
+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 "Afficher le numéro de version de B<xz> et de liblzma dans un format lisible par un humain. Pour obtenir une sortie analysable par la machine, spécifiez B<--robot> avant B<--version>."
#. type: SH
-#: ../src/xz/xz.1:1947
+#: ../src/xz/xz.1
#, no-wrap
msgid "ROBOT MODE"
msgstr "MODE ROBOT"
#. type: Plain text
-#: ../src/xz/xz.1:1963
-msgid ""
-"The robot mode is activated with the B<--robot> option. It makes the output "
-"of B<xz> easier to parse by other programs. Currently B<--robot> is "
-"supported only together with B<--version>, B<--info-memory>, and B<--list>. "
-"It will be supported for compression and decompression in the future."
-msgstr ""
-"Le mode robot est activé avec l'option B<--robot>. Cela rend la sortie de "
-"B<xz> plus facile à analyser par d'autres programmes. Actuellement, B<--"
-"robot> n'est seulement pris en charge qu'avec B<--version>, B<--info-memory> "
-"et B<--list>. Il sera pris en charge pour la compression et la décompression "
-"dans le futur."
-
-#. type: SS
-#: ../src/xz/xz.1:1964
-#, no-wrap
-msgid "Version"
-msgstr "Version"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1969
-#, fuzzy
-#| msgid ""
-#| "B<xz --robot --version> will print the version number of B<xz> and "
-#| "liblzma in the following format:"
-msgid ""
-"B<xz --robot --version> prints the version number of B<xz> and liblzma in "
-"the following format:"
-msgstr ""
-"B<xz --robot --version> affichera le numéro de version de B<xz> et liblzma "
-"dans le format suivant :"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1971
-msgid "B<XZ_VERSION=>I<XYYYZZZS>"
-msgstr "B<XZ_VERSION=>I<XYYYZZZS>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1973
-msgid "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
-msgstr "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
-
-#. type: TP
-#: ../src/xz/xz.1:1973
-#, no-wrap
-msgid "I<X>"
-msgstr "I<X>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1976
-msgid "Major version."
-msgstr "Version majeure."
-
-#. type: TP
-#: ../src/xz/xz.1:1976
-#, no-wrap
-msgid "I<YYY>"
-msgstr "I<YYY>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1981
-msgid ""
-"Minor version. Even numbers are stable. Odd numbers are alpha or beta "
-"versions."
-msgstr ""
-"Version mineure. Les numéros pairs sont stables. Les numéros impairs sont "
-"des versions alpha ou beta."
-
-#. type: TP
-#: ../src/xz/xz.1:1981
-#, no-wrap
-msgid "I<ZZZ>"
-msgstr "I<ZZZ>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1985
-msgid ""
-"Patch level for stable releases or just a counter for development releases."
-msgstr ""
-"Niveau de correctif pour les options stables ou juste un compteur pour les "
-"options de développement."
-
-#. type: TP
-#: ../src/xz/xz.1:1985
-#, no-wrap
-msgid "I<S>"
-msgstr "I<S>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1993
-msgid ""
-"Stability. 0 is alpha, 1 is beta, and 2 is stable. I<S> should be always 2 "
-"when I<YYY> is even."
-msgstr ""
-"Stabilité. 0 est alpha, 1 est bêta et 2 est stable. I<S> devrait toujours "
-"être 2 quand I<YYY> est pair."
-
-#. type: Plain text
-#: ../src/xz/xz.1:1998
-msgid ""
-"I<XYYYZZZS> are the same on both lines if B<xz> and liblzma are from the "
-"same XZ Utils release."
-msgstr ""
-"I<XYYYZZZS> sont identiques sur les deux lignes si B<xz> et liblzma sont "
-"issus de la même version d'utilitaires XZ."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2004
-msgid "Examples: 4.999.9beta is B<49990091> and 5.0.0 is B<50000002>."
-msgstr "Exemples : 4.999.9beta est B<49990091> et 5.0.0 est B<50000002>."
-
-#. type: SS
-#: ../src/xz/xz.1:2005
-#, no-wrap
-msgid "Memory limit information"
-msgstr "Information de limite de mémoire"
-
-#. type: Plain text
-#: ../src/xz/xz.1:2008
-#, fuzzy
-#| msgid ""
-#| "B<xz --robot --info-memory> prints a single line with three tab-separated "
-#| "columns:"
-msgid ""
-"B<xz --robot --info-memory> prints a single line with multiple tab-separated "
-"columns:"
-msgstr ""
-"B<xz --robot --info-memory> affiche une seule ligne avec trois colonnes "
-"séparées par des tabulations :"
-
-#. type: IP
-#: ../src/xz/xz.1:2008
-#, no-wrap
-msgid "1."
-msgstr "1."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2010
-#, fuzzy
-#| msgid "Total amount of physical memory (RAM) in bytes"
-msgid "Total amount of physical memory (RAM) in bytes."
-msgstr "Quantité totale de mémoire physique (RAM) en octets"
-
-#. type: IP
-#: ../src/xz/xz.1:2010 ../src/xz/xz.1:2125 ../src/xz/xz.1:2162
-#: ../src/xz/xz.1:2188 ../src/xz/xz.1:2258 ../src/xz/xz.1:2285
-#, no-wrap
-msgid "2."
-msgstr "2."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2017
-#, fuzzy
-#| 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."
-msgid ""
-"Memory usage limit for compression in bytes (B<--memlimit-compress>). A "
-"special value of B<0> indicates the default setting which for single-"
-"threaded mode is the same as no limit."
-msgstr ""
-"Limite d'utilisation de la mémoire pour la compression en octets. Une valeur "
-"spéciale de zéro indique le réglage par défaut, lequel en mode mono-thread "
-"indique qu'il n'y a pas de limite."
-
-#. type: IP
-#: ../src/xz/xz.1:2017 ../src/xz/xz.1:2127 ../src/xz/xz.1:2164
-#: ../src/xz/xz.1:2190 ../src/xz/xz.1:2263 ../src/xz/xz.1:2287
-#, no-wrap
-msgid "3."
-msgstr "3."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2024
-#, fuzzy
-#| 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."
-msgid ""
-"Memory usage limit for decompression in bytes (B<--memlimit-decompress>). A "
-"special value of B<0> indicates the default setting which for single-"
-"threaded mode is the same as no limit."
-msgstr ""
-"Limite d'utilisation de la mémoire pour la décompression en octets. Une "
-"valeur spéciale de zéro indique le réglage par défaut, ce qui est équivalent "
-"à sans limite en mode mono-thread."
-
-#. type: IP
-#: ../src/xz/xz.1:2024 ../src/xz/xz.1:2129 ../src/xz/xz.1:2166
-#: ../src/xz/xz.1:2193 ../src/xz/xz.1:2273 ../src/xz/xz.1:2289
-#, no-wrap
-msgid "4."
-msgstr "4."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2036
-msgid ""
-"Since B<xz> 5.3.4alpha: Memory usage for multi-threaded decompression in "
-"bytes (B<--memlimit-mt-decompress>). This is never zero because a system-"
-"specific default value shown in the column 5 is used if no limit has been "
-"specified explicitly. This is also never greater than the value in the "
-"column 3 even if a larger value has been specified with B<--memlimit-mt-"
-"decompress>."
-msgstr ""
-
-#. type: IP
-#: ../src/xz/xz.1:2036 ../src/xz/xz.1:2131 ../src/xz/xz.1:2168
-#: ../src/xz/xz.1:2195 ../src/xz/xz.1:2291
-#, no-wrap
-msgid "5."
-msgstr "5."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2048
-msgid ""
-"Since B<xz> 5.3.4alpha: A system-specific default memory usage limit that is "
-"used to limit the number of threads when compressing with an automatic "
-"number of threads (B<--threads=0>) and no memory usage limit has been "
-"specified (B<--memlimit-compress>). This is also used as the default value "
-"for B<--memlimit-mt-decompress>."
+#: ../src/xz/xz.1
+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<--list>, B<--filters-help>, B<--info-memory>, and B<--version>. It will be supported for compression and decompression in the future."
msgstr ""
-#. type: IP
-#: ../src/xz/xz.1:2048 ../src/xz/xz.1:2133 ../src/xz/xz.1:2170
-#: ../src/xz/xz.1:2197 ../src/xz/xz.1:2293
-#, no-wrap
-msgid "6."
-msgstr "6."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2053
-msgid "Since B<xz> 5.3.4alpha: Number of available processor threads."
-msgstr ""
-
-#. type: Plain text
-#: ../src/xz/xz.1:2057
-msgid ""
-"In the future, the output of B<xz --robot --info-memory> may have more "
-"columns, but never more than a single line."
-msgstr ""
-"Dans le futur, la sortie de B<xz --robot --info-memory> pourrait avoir plus "
-"de colonnes, mais jamais plus qu'une ligne unique."
-
#. type: SS
-#: ../src/xz/xz.1:2058
+#: ../src/xz/xz.1
#, no-wrap
msgid "List mode"
msgstr "Mode liste"
#. type: Plain text
-#: ../src/xz/xz.1:2063
-msgid ""
-"B<xz --robot --list> uses tab-separated output. The first column of every "
-"line has a string that indicates the type of the information found on that "
-"line:"
-msgstr ""
-"B<xz --robot --list> utilise une sortie séparée par des tabulations. La "
-"première colonne de toutes les lignes possède une chaîne qui indique le type "
-"d'information trouvée sur cette ligne :"
+#: ../src/xz/xz.1
+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> utilise une sortie séparée par des tabulations. La première colonne de toutes les lignes possède une chaîne qui indique le type d'information trouvée sur cette ligne :"
#. type: TP
-#: ../src/xz/xz.1:2063
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<name>"
msgstr "B<name>"
#. type: Plain text
-#: ../src/xz/xz.1:2067
-msgid ""
-"This is always the first line when starting to list a file. The second "
-"column on the line is the filename."
-msgstr ""
-"C'est toujours la première ligne au début de la liste d'un fichier. La "
-"seconde colonne de la ligne est le nom de fichier."
+#: ../src/xz/xz.1
+msgid "This is always the first line when starting to list a file. The second column on the line is the filename."
+msgstr "C'est toujours la première ligne au début de la liste d'un fichier. La seconde colonne de la ligne est le nom de fichier."
#. type: TP
-#: ../src/xz/xz.1:2067
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<file>"
msgstr "B<file>"
#. type: Plain text
-#: ../src/xz/xz.1:2075
-msgid ""
-"This line contains overall information about the B<.xz> file. This line is "
-"always printed after the B<name> line."
-msgstr ""
-"Cette ligne contient l'information globale sur le fichier B<.xz>. Cette "
-"ligne est toujours écrite après la ligne B<name>."
+#: ../src/xz/xz.1
+msgid "This line contains overall information about the B<.xz> file. This line is always printed after the B<name> line."
+msgstr "Cette ligne contient l'information globale sur le fichier B<.xz>. Cette ligne est toujours écrite après la ligne B<name>."
#. type: TP
-#: ../src/xz/xz.1:2075
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<stream>"
msgstr "B<stream>"
#. type: Plain text
-#: ../src/xz/xz.1:2085
-msgid ""
-"This line type is used only when B<--verbose> was specified. There are as "
-"many B<stream> lines as there are streams in the B<.xz> file."
-msgstr ""
-"Ce type de ligne n'est utilisée que lorsque B< --verbose> a été indiquée. Il "
-"y a autant de lignes B<stream> qu'il y a de flux dans le fichier B<.xz>."
+#: ../src/xz/xz.1
+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 "Ce type de ligne n'est utilisée que lorsque B< --verbose> a été indiquée. Il y a autant de lignes B<stream> qu'il y a de flux dans le fichier B<.xz>."
#. type: TP
-#: ../src/xz/xz.1:2085
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<block>"
msgstr "B<block>"
#. type: Plain text
-#: ../src/xz/xz.1:2100
-msgid ""
-"This line type is used only when B<--verbose> was specified. There are as "
-"many B<block> lines as there are blocks in the B<.xz> file. The B<block> "
-"lines are shown after all the B<stream> lines; different line types are not "
-"interleaved."
-msgstr ""
-"Ce type de ligne n'est utilisé seulement lorsque B<--verbose> a été "
-"indiquée. Il y a autant de lignes B<block> qu'il y a de blocs dans le "
-"fichier B<.xz>. Les lignes B<block> sont affichées après toutes les lignes "
-"B<stream> ; les différents types de lignes ne sont pas imbriqués."
+#: ../src/xz/xz.1
+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 "Ce type de ligne n'est utilisé seulement lorsque B<--verbose> a été indiquée. Il y a autant de lignes B<block> qu'il y a de blocs dans le fichier B<.xz>. Les lignes B<block> sont affichées après toutes les lignes B<stream> ; les différents types de lignes ne sont pas imbriqués."
#. type: TP
-#: ../src/xz/xz.1:2100
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<summary>"
msgstr "B<summary>"
#. type: Plain text
-#: ../src/xz/xz.1:2115
-msgid ""
-"This line type is used only when B<--verbose> was specified twice. This "
-"line is printed after all B<block> lines. Like the B<file> line, the "
-"B<summary> line contains overall information about the B<.xz> file."
-msgstr ""
-"Ce type de ligne n'est utilisé que lorsque B<--verbose> a été indiqué deux "
-"fois. Cette ligne est affichée après toutes les lignes B<block>. Comme la "
-"ligne B<file>, la ligne B<summary> contient l'information globale sur le "
-"fichier B<.xz>."
+#: ../src/xz/xz.1
+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 "Ce type de ligne n'est utilisé que lorsque B<--verbose> a été indiqué deux fois. Cette ligne est affichée après toutes les lignes B<block>. Comme la ligne B<file>, la ligne B<summary> contient l'information globale sur le fichier B<.xz>."
#. type: TP
-#: ../src/xz/xz.1:2115
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<totals>"
msgstr "B<totals>"
#. type: Plain text
-#: ../src/xz/xz.1:2119
-msgid ""
-"This line is always the very last line of the list output. It shows the "
-"total counts and sizes."
-msgstr ""
-"Cette ligne est toujours la toute dernière ligne de la sortie. Elle affiche "
-"les comptes et les tailles totaux."
+#: ../src/xz/xz.1
+msgid "This line is always the very last line of the list output. It shows the total counts and sizes."
+msgstr "Cette ligne est toujours la toute dernière ligne de la sortie. Elle affiche les comptes et les tailles totaux."
#. type: Plain text
-#: ../src/xz/xz.1:2123
+#: ../src/xz/xz.1
msgid "The columns of the B<file> lines:"
msgstr "Les colonnes des lignes B<file> :"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "2."
+msgstr "2."
+
#. type: Plain text
-#: ../src/xz/xz.1:2127
+#: ../src/xz/xz.1
msgid "Number of streams in the file"
msgstr "Nombre de flux dans le fichier"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "3."
+msgstr "3."
+
#. type: Plain text
-#: ../src/xz/xz.1:2129
+#: ../src/xz/xz.1
msgid "Total number of blocks in the stream(s)"
msgstr "Nombre total de blocs dans le ou les flux."
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "4."
+msgstr "4."
+
#. type: Plain text
-#: ../src/xz/xz.1:2131
+#: ../src/xz/xz.1
msgid "Compressed size of the file"
msgstr "Taille compressée du fichier"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "5."
+msgstr "5."
+
#. type: Plain text
-#: ../src/xz/xz.1:2133
+#: ../src/xz/xz.1
msgid "Uncompressed size of the file"
msgstr "Taille décompressée du fichier"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "6."
+msgstr "6."
+
#. type: Plain text
-#: ../src/xz/xz.1:2139
-#, fuzzy
-#| msgid ""
-#| "Compression ratio, for example B<0.123.> If ratio is over 9.999, three "
-#| "dashes (B<--->) are displayed instead of the ratio."
-msgid ""
-"Compression ratio, for example, B<0.123>. If ratio is over 9.999, three "
-"dashes (B<--->) are displayed instead of the ratio."
+#: ../src/xz/xz.1
+msgid "Compression ratio, for example, B<0.123>. If ratio is over 9.999, three dashes (B<--->) are displayed instead of the ratio."
msgstr ""
-"Taux de compression, par exemple B<0.123>. Si le taux est supérieur à 9 999, "
-"trois tirets (B<--->) sont affichés au lieu du taux."
#. type: IP
-#: ../src/xz/xz.1:2139 ../src/xz/xz.1:2172 ../src/xz/xz.1:2199
-#: ../src/xz/xz.1:2295
+#: ../src/xz/xz.1
#, no-wrap
msgid "7."
msgstr "7."
#. type: Plain text
-#: ../src/xz/xz.1:2152
-msgid ""
-"Comma-separated list of integrity check names. The following strings are "
-"used for the known check types: B<None>, B<CRC32>, B<CRC64>, and "
-"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 ""
-"Liste de noms de contrôles d'intégrité séparés par des virgules. Les chaînes "
-"suivantes sont utilisées pour les types de vérification connus : B<None>, "
-"B<CRC32>, B<CRC64> et B<SHA256>. Pour le types de vérification inconnus, "
-"B<Unknown->I<N> est utilisé, où I<N> est un identifiant de vérification sous "
-"la forme d'un nombre décimal (un ou deux chiffres)."
+#: ../src/xz/xz.1
+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 "Liste de noms de contrôles d'intégrité séparés par des virgules. Les chaînes suivantes sont utilisées pour les types de vérification connus : B<None>, B<CRC32>, B<CRC64> et B<SHA256>. Pour le types de vérification inconnus, B<Unknown->I<N> est utilisé, où I<N> est un identifiant de vérification sous la forme d'un nombre décimal (un ou deux chiffres)."
#. type: IP
-#: ../src/xz/xz.1:2152 ../src/xz/xz.1:2174 ../src/xz/xz.1:2201
-#: ../src/xz/xz.1:2298
+#: ../src/xz/xz.1
#, no-wrap
msgid "8."
msgstr "8."
#. type: Plain text
-#: ../src/xz/xz.1:2154
+#: ../src/xz/xz.1
msgid "Total size of stream padding in the file"
msgstr "Taille totale du remplissage du flux dans le fichier"
#. type: Plain text
-#: ../src/xz/xz.1:2160
+#: ../src/xz/xz.1
msgid "The columns of the B<stream> lines:"
msgstr "Les colonnes des lignes B<stream> :"
#. type: Plain text
-#: ../src/xz/xz.1:2164
+#: ../src/xz/xz.1
msgid "Stream number (the first stream is 1)"
msgstr "Numéro de flux (le premier flux a le numéro 1)"
#. type: Plain text
-#: ../src/xz/xz.1:2166
+#: ../src/xz/xz.1
msgid "Number of blocks in the stream"
msgstr "Nombre de blocs dans le flux"
#. type: Plain text
-#: ../src/xz/xz.1:2168
+#: ../src/xz/xz.1
msgid "Compressed start offset"
msgstr "Décalage de départ compressé"
#. type: Plain text
-#: ../src/xz/xz.1:2170
+#: ../src/xz/xz.1
msgid "Uncompressed start offset"
msgstr "Décalage de départ décompressé"
#. type: Plain text
-#: ../src/xz/xz.1:2172
+#: ../src/xz/xz.1
msgid "Compressed size (does not include stream padding)"
msgstr "Taille compressée (ne comprend pas le remplissage du flux)"
#. type: Plain text
-#: ../src/xz/xz.1:2174 ../src/xz/xz.1:2203 ../src/xz/xz.1:2293
+#: ../src/xz/xz.1
msgid "Uncompressed size"
msgstr "Taille décompressée"
#. type: Plain text
-#: ../src/xz/xz.1:2176 ../src/xz/xz.1:2205
+#: ../src/xz/xz.1
msgid "Compression ratio"
msgstr "Taux de compression"
#. type: IP
-#: ../src/xz/xz.1:2176 ../src/xz/xz.1:2203 ../src/xz/xz.1:2300
+#: ../src/xz/xz.1
#, no-wrap
msgid "9."
msgstr "9."
#. type: Plain text
-#: ../src/xz/xz.1:2178 ../src/xz/xz.1:2207
+#: ../src/xz/xz.1
msgid "Name of the integrity check"
msgstr "Nom de la vérification d'intégrité"
#. type: IP
-#: ../src/xz/xz.1:2178 ../src/xz/xz.1:2205 ../src/xz/xz.1:2316
+#: ../src/xz/xz.1
#, no-wrap
msgid "10."
msgstr "10."
#. type: Plain text
-#: ../src/xz/xz.1:2180
+#: ../src/xz/xz.1
msgid "Size of stream padding"
msgstr "Taille du remplissage de flux"
#. type: Plain text
-#: ../src/xz/xz.1:2186
+#: ../src/xz/xz.1
msgid "The columns of the B<block> lines:"
msgstr "Les colonnes des lignes B<block> :"
#. type: Plain text
-#: ../src/xz/xz.1:2190
+#: ../src/xz/xz.1
msgid "Number of the stream containing this block"
msgstr "Numéro du flux qui contient ce bloc"
#. type: Plain text
-#: ../src/xz/xz.1:2193
-msgid ""
-"Block number relative to the beginning of the stream (the first block is 1)"
-msgstr ""
-"Numéro du bloc relatif au commencement du flux (le premier bloc a pour "
-"numéro 1)"
+#: ../src/xz/xz.1
+msgid "Block number relative to the beginning of the stream (the first block is 1)"
+msgstr "Numéro du bloc relatif au commencement du flux (le premier bloc a pour numéro 1)"
#. type: Plain text
-#: ../src/xz/xz.1:2195
+#: ../src/xz/xz.1
msgid "Block number relative to the beginning of the file"
msgstr "Numéro du bloc relatif au début du fichier"
#. type: Plain text
-#: ../src/xz/xz.1:2197
+#: ../src/xz/xz.1
msgid "Compressed start offset relative to the beginning of the file"
msgstr "Décalage de départ compressé relatif au début du fichier"
#. type: Plain text
-#: ../src/xz/xz.1:2199
+#: ../src/xz/xz.1
msgid "Uncompressed start offset relative to the beginning of the file"
msgstr "Décalage de départ décompressé relatif au début du fichier"
#. type: Plain text
-#: ../src/xz/xz.1:2201
+#: ../src/xz/xz.1
msgid "Total compressed size of the block (includes headers)"
msgstr "Taille compressée totale du bloc (en-têtes inclus)"
#. type: Plain text
-#: ../src/xz/xz.1:2219
-msgid ""
-"If B<--verbose> was specified twice, additional columns are included on the "
-"B<block> lines. These are not displayed with a single B<--verbose>, because "
-"getting this information requires many seeks and can thus be slow:"
-msgstr ""
-"Si B<--verbose> a été indiqué deux fois, les colonnes additionnelles sont "
-"inclues sur les lignes B<block>. Elles ne sont pas affichées avec un seul "
-"B<--verbose>, car l'obtention de ces informations nécessite de nombreuses "
-"recherches et peut donc être lente :"
+#: ../src/xz/xz.1
+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 "Si B<--verbose> a été indiqué deux fois, les colonnes additionnelles sont inclues sur les lignes B<block>. Elles ne sont pas affichées avec un seul B<--verbose>, car l'obtention de ces informations nécessite de nombreuses recherches et peut donc être lente :"
#. type: IP
-#: ../src/xz/xz.1:2221 ../src/xz/xz.1:2321
+#: ../src/xz/xz.1
#, no-wrap
msgid "11."
msgstr "11."
#. type: Plain text
-#: ../src/xz/xz.1:2223
+#: ../src/xz/xz.1
msgid "Value of the integrity check in hexadecimal"
msgstr "Valeur de la vérification d'intégrité en hexadécimal"
#. type: IP
-#: ../src/xz/xz.1:2223 ../src/xz/xz.1:2331
+#: ../src/xz/xz.1
#, no-wrap
msgid "12."
msgstr "12."
#. type: Plain text
-#: ../src/xz/xz.1:2225
+#: ../src/xz/xz.1
msgid "Block header size"
msgstr "Taille d'en-tête de bloc"
#. type: IP
-#: ../src/xz/xz.1:2225
+#: ../src/xz/xz.1
#, no-wrap
msgid "13."
msgstr "13."
#. type: Plain text
-#: ../src/xz/xz.1:2235
-msgid ""
-"Block flags: B<c> indicates that compressed size is present, and B<u> "
-"indicates that uncompressed size is present. If the flag is not set, a dash "
-"(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 ""
-"Drapeaux du bloc : B<c> indique que la taille compressée est présente, et "
-"B<u> indique que la taille décompréssée est présente. Si le drapeau n'est "
-"pas indiqué, un tiret (B<->) est affiché à la place pour que la longueur de "
-"la chaîne reste fixe. De nouveaux drapeaux pourraient être ajoutés à la fin "
-"de la chaîne dans le futur."
+#: ../src/xz/xz.1
+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 "Drapeaux du bloc : B<c> indique que la taille compressée est présente, et B<u> indique que la taille décompréssée est présente. Si le drapeau n'est pas indiqué, un tiret (B<->) est affiché à la place pour que la longueur de la chaîne reste fixe. De nouveaux drapeaux pourraient être ajoutés à la fin de la chaîne dans le futur."
#. type: IP
-#: ../src/xz/xz.1:2235
+#: ../src/xz/xz.1
#, no-wrap
msgid "14."
msgstr "14."
#. type: Plain text
-#: ../src/xz/xz.1:2238
-msgid ""
-"Size of the actual compressed data in the block (this excludes the block "
-"header, block padding, and check fields)"
-msgstr ""
-"Taille des données effectivement compressées dans le bloc (en excluant l'en-"
-"tête de bloc, le remplissage de bloc et les champs de vérification)."
+#: ../src/xz/xz.1
+msgid "Size of the actual compressed data in the block (this excludes the block header, block padding, and check fields)"
+msgstr "Taille des données effectivement compressées dans le bloc (en excluant l'en-tête de bloc, le remplissage de bloc et les champs de vérification)."
#. type: IP
-#: ../src/xz/xz.1:2238
+#: ../src/xz/xz.1
#, no-wrap
msgid "15."
msgstr "15."
#. type: Plain text
-#: ../src/xz/xz.1:2243
-msgid ""
-"Amount of memory (in bytes) required to decompress this block with this "
-"B<xz> version"
-msgstr ""
-"Quantité de mémoire (en octets) nécessaire pour décompresser ce bloc avec "
-"cette version de B<xz>."
+#: ../src/xz/xz.1
+msgid "Amount of memory (in bytes) required to decompress this block with this B<xz> version"
+msgstr "Quantité de mémoire (en octets) nécessaire pour décompresser ce bloc avec cette version de B<xz>."
#. type: IP
-#: ../src/xz/xz.1:2243
+#: ../src/xz/xz.1
#, no-wrap
msgid "16."
msgstr "16."
#. type: Plain text
-#: ../src/xz/xz.1:2250
-msgid ""
-"Filter chain. Note that most of the options used at compression time cannot "
-"be known, because only the options that are needed for decompression are "
-"stored in the B<.xz> headers."
-msgstr ""
-"Chaîne de filtrage. Remarquez que la plupart des options utilisées au moment "
-"de la compression ne peuvent pas être connues, car seules les options "
-"nécessaires pour la décompression sont stockées dans les en-têtes B<.xz>."
+#: ../src/xz/xz.1
+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 "Chaîne de filtrage. Remarquez que la plupart des options utilisées au moment de la compression ne peuvent pas être connues, car seules les options nécessaires pour la décompression sont stockées dans les en-têtes B<.xz>."
#. type: Plain text
-#: ../src/xz/xz.1:2256
+#: ../src/xz/xz.1
msgid "The columns of the B<summary> lines:"
msgstr "Les colonnes des lignes B<summary> :"
#. type: Plain text
-#: ../src/xz/xz.1:2263
-msgid ""
-"Amount of memory (in bytes) required to decompress this file with this B<xz> "
-"version"
-msgstr ""
-"Quantité de mémoire (en octets) nécessaire pour décompresser ce fichier avec "
-"cette version de B<xz>."
+#: ../src/xz/xz.1
+msgid "Amount of memory (in bytes) required to decompress this file with this B<xz> version"
+msgstr "Quantité de mémoire (en octets) nécessaire pour décompresser ce fichier avec cette version de B<xz>."
#. type: Plain text
-#: ../src/xz/xz.1:2269 ../src/xz/xz.1:2327
-msgid ""
-"B<yes> or B<no> indicating if all block headers have both compressed size "
-"and uncompressed size stored in them"
-msgstr ""
-"B<yes> ou B<no> indique si tous les en-têtes de bloc stockent à la fois la "
-"taille compressée et la taille décompressée."
+#: ../src/xz/xz.1
+msgid "B<yes> or B<no> indicating if all block headers have both compressed size and uncompressed size stored in them"
+msgstr "B<yes> ou B<no> indique si tous les en-têtes de bloc stockent à la fois la taille compressée et la taille décompressée."
#. type: Plain text
-#: ../src/xz/xz.1:2273 ../src/xz/xz.1:2331
+#: ../src/xz/xz.1
msgid "I<Since> B<xz> I<5.1.2alpha:>"
msgstr "I<Depuis> B<xz> I<5.1.2alpha:>"
#. type: Plain text
-#: ../src/xz/xz.1:2277 ../src/xz/xz.1:2335
+#: ../src/xz/xz.1
msgid "Minimum B<xz> version required to decompress the file"
msgstr "Version minimale de B<xz> nécessaire pour décompresser le fichier."
#. type: Plain text
-#: ../src/xz/xz.1:2283
+#: ../src/xz/xz.1
msgid "The columns of the B<totals> line:"
msgstr "Les colonnes de la ligne B<totals> :"
#. type: Plain text
-#: ../src/xz/xz.1:2287
+#: ../src/xz/xz.1
msgid "Number of streams"
msgstr "Nombre de flux"
#. type: Plain text
-#: ../src/xz/xz.1:2289
+#: ../src/xz/xz.1
msgid "Number of blocks"
msgstr "Nombre de blocs"
#. type: Plain text
-#: ../src/xz/xz.1:2291
+#: ../src/xz/xz.1
msgid "Compressed size"
msgstr "Taille compressée"
#. type: Plain text
-#: ../src/xz/xz.1:2295
+#: ../src/xz/xz.1
msgid "Average compression ratio"
msgstr "Taux de compression moyen"
#. type: Plain text
-#: ../src/xz/xz.1:2298
-msgid ""
-"Comma-separated list of integrity check names that were present in the files"
-msgstr ""
-"Liste séparée par des virgules des noms de vérification d'intégrité qui "
-"étaient présents dans les fichiers"
+#: ../src/xz/xz.1
+msgid "Comma-separated list of integrity check names that were present in the files"
+msgstr "Liste séparée par des virgules des noms de vérification d'intégrité qui étaient présents dans les fichiers"
#. type: Plain text
-#: ../src/xz/xz.1:2300
+#: ../src/xz/xz.1
msgid "Stream padding size"
msgstr "Taille de remplissage de flux"
#. type: Plain text
-#: ../src/xz/xz.1:2306
-msgid ""
-"Number of files. This is here to keep the order of the earlier columns the "
-"same as on B<file> lines."
+#: ../src/xz/xz.1
+msgid "Number of files. This is here to keep the order of the earlier columns the same as on B<file> lines."
+msgstr "Nombre de fichiers. Permet de garder l'ordre des colonnes précédentes comme sur les lignes B<file>."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "If B<--verbose> was specified twice, additional columns are included on the B<totals> line:"
+msgstr "Si B<--verbose> a été indiqué deux fois, des colonnes supplémentaires sont incluses sur la ligne B<totals> :"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Maximum amount of memory (in bytes) required to decompress the files with this B<xz> version"
+msgstr "Quantité maximale de mémoire (en octets) nécessaire pour décompresser les fichiers avec cette version de B<xz>."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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 "Les versions futures pourront ajouter de nouveaux types de lignes et de nouvelles colonnes pourront être ajoutées aux types de lignes existants, mais les colonnes existantes ne seront pas modifiées."
+
+#. type: SS
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "Filter"
+msgid "Filters help"
+msgstr "Filtre"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<xz --robot --filters-help> prints the supported filters in the following format:"
msgstr ""
-"Nombre de fichiers. Permet de garder l'ordre des colonnes précédentes comme "
-"sur les lignes B<file>."
#. type: Plain text
-#: ../src/xz/xz.1:2314
-msgid ""
-"If B<--verbose> was specified twice, additional columns are included on the "
-"B<totals> line:"
+#: ../src/xz/xz.1
+msgid "I<filter>B<:>I<option>B<=E<lt>>I<value>B<E<gt>,>I<option>B<=E<lt>>I<value>B<E<gt>>..."
msgstr ""
-"Si B<--verbose> a été indiqué deux fois, des colonnes supplémentaires sont "
-"incluses sur la ligne B<totals> :"
+
+#. type: TP
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "B<file>"
+msgid "I<filter>"
+msgstr "B<file>"
#. type: Plain text
-#: ../src/xz/xz.1:2321
-msgid ""
-"Maximum amount of memory (in bytes) required to decompress the files with "
-"this B<xz> version"
+#: ../src/xz/xz.1
+#, fuzzy
+#| msgid "Name of the integrity check"
+msgid "Name of the filter"
+msgstr "Nom de la vérification d'intégrité"
+
+#. type: TP
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "Supported I<options>:"
+msgid "I<option>"
+msgstr "I<options> prises en charge :"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Name of a filter specific option"
+msgstr ""
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<value>"
msgstr ""
-"Quantité maximale de mémoire (en octets) nécessaire pour décompresser les "
-"fichiers avec cette version de B<xz>."
#. type: Plain text
-#: ../src/xz/xz.1:2341
-msgid ""
-"Future versions may add new line types and new columns can be added to the "
-"existing line types, but the existing columns won't be changed."
+#: ../src/xz/xz.1
+msgid "Numeric I<value> ranges appear as B<E<lt>>I<min>B<->I<max>B<E<gt>>. String I<value> choices are shown within B<E<lt> E<gt>> and separated by a B<|> character."
msgstr ""
-"Les versions futures pourront ajouter de nouveaux types de lignes et de "
-"nouvelles colonnes pourront être ajoutées aux types de lignes existants, "
-"mais les colonnes existantes ne seront pas modifiées."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Each filter is printed on its own line."
+msgstr ""
+
+#. type: SS
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "Memory limit information"
+msgstr "Information de limite de mémoire"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<xz --robot --info-memory> prints a single line with multiple tab-separated columns:"
+msgstr ""
+
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "1."
+msgstr "1."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Total amount of physical memory (RAM) in bytes."
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Memory usage limit for compression in bytes (B<--memlimit-compress>). A special value of B<0> indicates the default setting which for single-threaded mode is the same as no limit."
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Memory usage limit for decompression in bytes (B<--memlimit-decompress>). A special value of B<0> indicates the default setting which for single-threaded mode is the same as no limit."
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.3.4alpha: Memory usage for multi-threaded decompression in bytes (B<--memlimit-mt-decompress>). This is never zero because a system-specific default value shown in the column 5 is used if no limit has been specified explicitly. This is also never greater than the value in the column 3 even if a larger value has been specified with B<--memlimit-mt-decompress>."
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.3.4alpha: A system-specific default memory usage limit that is used to limit the number of threads when compressing with an automatic number of threads (B<--threads=0>) and no memory usage limit has been specified (B<--memlimit-compress>). This is also used as the default value for B<--memlimit-mt-decompress>."
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.3.4alpha: Number of available processor threads."
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "In the future, the output of B<xz --robot --info-memory> may have more columns, but never more than a single line."
+msgstr "Dans le futur, la sortie de B<xz --robot --info-memory> pourrait avoir plus de colonnes, mais jamais plus qu'une ligne unique."
+
+#. type: SS
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "Version"
+msgstr "Version"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<xz --robot --version> prints the version number of B<xz> and liblzma in the following format:"
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<XZ_VERSION=>I<XYYYZZZS>"
+msgstr "B<XZ_VERSION=>I<XYYYZZZS>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
+msgstr "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<X>"
+msgstr "I<X>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Major version."
+msgstr "Version majeure."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<YYY>"
+msgstr "I<YYY>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Minor version. Even numbers are stable. Odd numbers are alpha or beta versions."
+msgstr "Version mineure. Les numéros pairs sont stables. Les numéros impairs sont des versions alpha ou beta."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<ZZZ>"
+msgstr "I<ZZZ>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Patch level for stable releases or just a counter for development releases."
+msgstr "Niveau de correctif pour les options stables ou juste un compteur pour les options de développement."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<S>"
+msgstr "I<S>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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é. 0 est alpha, 1 est bêta et 2 est stable. I<S> devrait toujours être 2 quand I<YYY> est pair."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "I<XYYYZZZS> are the same on both lines if B<xz> and liblzma are from the same XZ Utils release."
+msgstr "I<XYYYZZZS> sont identiques sur les deux lignes si B<xz> et liblzma sont issus de la même version d'utilitaires XZ."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Examples: 4.999.9beta is B<49990091> and 5.0.0 is B<50000002>."
+msgstr "Exemples : 4.999.9beta est B<49990091> et 5.0.0 est B<50000002>."
#. type: SH
-#: ../src/xz/xz.1:2342 ../src/xzdec/xzdec.1:104 ../src/lzmainfo/lzmainfo.1:44
-#: ../src/scripts/xzgrep.1:81
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1
#, no-wrap
msgid "EXIT STATUS"
msgstr "STATUT DE SORTIE"
#. type: TP
-#: ../src/xz/xz.1:2343 ../src/xzdec/xzdec.1:105 ../src/lzmainfo/lzmainfo.1:45
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "B<0>"
msgstr "B<0>"
#. type: Plain text
-#: ../src/xz/xz.1:2346 ../src/lzmainfo/lzmainfo.1:48
+#: ../src/xz/xz.1 ../src/lzmainfo/lzmainfo.1
msgid "All is good."
msgstr "Tout est bon."
#. type: TP
-#: ../src/xz/xz.1:2346 ../src/xzdec/xzdec.1:108 ../src/lzmainfo/lzmainfo.1:48
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "B<1>"
msgstr "B<1>"
#. type: Plain text
-#: ../src/xz/xz.1:2349 ../src/xzdec/xzdec.1:111 ../src/lzmainfo/lzmainfo.1:51
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
msgid "An error occurred."
msgstr "Une erreur est survenue."
#. type: TP
-#: ../src/xz/xz.1:2349
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<2>"
msgstr "B<2>"
#. type: Plain text
-#: ../src/xz/xz.1:2353
+#: ../src/xz/xz.1
msgid "Something worth a warning occurred, but no actual errors occurred."
-msgstr ""
-"Quelquechose méritant un avertissement s'est produit, mais aucune erreur "
-"véritable n'est survenue."
+msgstr "Quelquechose méritant un avertissement s'est produit, mais aucune erreur véritable n'est survenue."
#. type: Plain text
-#: ../src/xz/xz.1:2356
-msgid ""
-"Notices (not warnings or errors) printed on standard error don't affect the "
-"exit status."
-msgstr ""
-"Les notifications (pas les avertissements ou les erreurs) affichées sur "
-"l'erreur standard n'affectent pas le statut de sortie."
+#: ../src/xz/xz.1
+msgid "Notices (not warnings or errors) printed on standard error don't affect the exit status."
+msgstr "Les notifications (pas les avertissements ou les erreurs) affichées sur l'erreur standard n'affectent pas le statut de sortie."
#. type: SH
-#: ../src/xz/xz.1:2357 ../src/scripts/xzgrep.1:94 ../src/scripts/xzless.1:52
+#: ../src/xz/xz.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "ENVIRONMENT"
msgstr "ENVIRONNEMENT"
#. type: Plain text
-#: ../src/xz/xz.1:2370
-msgid ""
-"B<xz> parses space-separated lists of options from the environment variables "
-"B<XZ_DEFAULTS> and B<XZ_OPT>, in this order, before parsing the options from "
-"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> analyse les listes d'options séparées par des espaces à partir des "
-"variables d'environnement B<XZ_DEFAULTS> et B<XZ_OPT>, dans cet ordre, avant "
-"d'analyser les options de la ligne de commandes. Remarquez que seules les "
-"options sont analysées depuis l'environnement des variables ; toutes les non-"
-"options sont ignorées silencieusement. L'analyse est faite avec "
-"B<getopt_long>(3) qui est aussi utilisé pour les arguments de la ligne de "
-"commandes."
+#: ../src/xz/xz.1
+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> analyse les listes d'options séparées par des espaces à partir des variables d'environnement B<XZ_DEFAULTS> et B<XZ_OPT>, dans cet ordre, avant d'analyser les options de la ligne de commandes. Remarquez que seules les options sont analysées depuis l'environnement des variables ; toutes les non-options sont ignorées silencieusement. L'analyse est faite avec B<getopt_long>(3) qui est aussi utilisé pour les arguments de la ligne de commandes."
#. type: TP
-#: ../src/xz/xz.1:2370
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<XZ_DEFAULTS>"
msgstr "B<XZ_DEFAULTS>"
#. type: Plain text
-#: ../src/xz/xz.1:2379
-msgid ""
-"User-specific or system-wide default options. Typically this is set in a "
-"shell initialization script to enable B<xz>'s memory usage limiter by "
-"default. Excluding shell initialization scripts and similar special cases, "
-"scripts must never set or unset B<XZ_DEFAULTS>."
-msgstr ""
-"Options par défaut propres à l'utilisateur ou pour tout le système. Elles "
-"sont le plus souvent définies dans un script d'initialisation de "
-"l'interpréteur pour activer le limiteur d'utilisation de la mémoire de B<xz> "
-"par défaut. A part pour les scripts d'initialisation de l'interpréteur ou "
-"des cas similaires, les sripts ne doivent jamais définir ou désactiver "
-"B<XZ_DEFAULTS>."
+#: ../src/xz/xz.1
+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 "Options par défaut propres à l'utilisateur ou pour tout le système. Elles sont le plus souvent définies dans un script d'initialisation de l'interpréteur pour activer le limiteur d'utilisation de la mémoire de B<xz> par défaut. A part pour les scripts d'initialisation de l'interpréteur ou des cas similaires, les sripts ne doivent jamais définir ou désactiver B<XZ_DEFAULTS>."
#. type: TP
-#: ../src/xz/xz.1:2379
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<XZ_OPT>"
msgstr "B<XZ_OPT>"
#. type: Plain text
-#: ../src/xz/xz.1:2390
-#, fuzzy
-#| 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):"
-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 when B<xz> is "
-"run by a script or tool, for example, GNU B<tar>(1):"
+#: ../src/xz/xz.1
+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 when B<xz> is run by a script or tool, for example, GNU B<tar>(1):"
msgstr ""
-"Cela permet de passer des options à B<xz> lorsqu'il n'est pas possible de "
-"définir ces options directement sur la ligne de commande B<xz>. C'est le "
-"cas, par exemple, lorsque B<xz> est lancé par un script ou un outil, par "
-"exemple B<tar>(1) de GNU :"
#. type: Plain text
-#: ../src/xz/xz.1:2396
-#, no-wrap
-msgid "CW<XZ_OPT=-2v tar caf foo.tar.xz foo>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<XZ_OPT=-2v tar caf foo.tar.xz foo>\n"
+msgid "\\f(CRXZ_OPT=-2v tar caf foo.tar.xz foo\\fR\n"
msgstr "CW<XZ_OPT=-2v tar caf foo.tar.xz foo>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2410
-#, fuzzy
-#| 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:"
-msgid ""
-"Scripts may use B<XZ_OPT>, for example, to set script-specific default "
-"compression options. It is still recommended to allow users to override "
-"B<XZ_OPT> if that is reasonable. For example, in B<sh>(1) scripts one may "
-"use something like this:"
+#: ../src/xz/xz.1
+msgid "Scripts may use B<XZ_OPT>, for example, to set script-specific default compression options. It is still recommended to allow users to override B<XZ_OPT> if that is reasonable. For example, in B<sh>(1) scripts one may use something like this:"
msgstr ""
-"Les scripts peuvent utiliser B<XZ_OPT>, par exemple pour définir des options "
-"de compression par défaut spécifiques au script. Il est toujours recommandé "
-"d'autoriser les utilisateurs à outrepasser B<XZ_OPT> si cela est "
-"raisonnable, comme par exemple dans les scripts B<sh>(1) quelquechose comme "
-"ceci devrait être utilisé :"
#. type: Plain text
-#: ../src/xz/xz.1:2417
-#, no-wrap
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid ""
+#| "CW<XZ_OPT=${XZ_OPT-\"-7e\"}\n"
+#| "export XZ_OPT>\n"
msgid ""
-"CW<XZ_OPT=${XZ_OPT-\"-7e\"}\n"
-"export XZ_OPT>\n"
+"\\f(CRXZ_OPT=${XZ_OPT-\"-7e\"}\n"
+"export XZ_OPT\\fR\n"
msgstr ""
"CW<XZ_OPT=${XZ_OPT-\"-7e\"}\n"
"export XZ_OPT>\n"
#. type: SH
-#: ../src/xz/xz.1:2422
+#: ../src/xz/xz.1
#, no-wrap
msgid "LZMA UTILS COMPATIBILITY"
msgstr "Compatibilité des utilitaires LZMA"
#. type: Plain text
-#: ../src/xz/xz.1:2435
-msgid ""
-"The command line syntax of B<xz> is practically a superset of B<lzma>, "
-"B<unlzma>, and B<lzcat> as found from LZMA Utils 4.32.x. In most cases, it "
-"is possible to replace LZMA Utils with XZ Utils without breaking existing "
-"scripts. There are some incompatibilities though, which may sometimes cause "
-"problems."
-msgstr ""
-"La syntaxe de la ligne de commande de B<xz> est quasimment un sur-ensemble "
-"de B<lzma>, B<unlzma> et B<lzcat> comme ils sont trouvés dans les "
-"utilitaires LZMA 4.32.x . Dans la pluspart des cas, il est possible de "
-"remplacer les outils LZMA par les outils XZ sans casser les scripts "
-"existants. Il existe cependant certaines incompatibilités qui peuvent "
-"parfois poser des problèmes."
+#: ../src/xz/xz.1
+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 "La syntaxe de la ligne de commande de B<xz> est quasimment un sur-ensemble de B<lzma>, B<unlzma> et B<lzcat> comme ils sont trouvés dans les utilitaires LZMA 4.32.x . Dans la pluspart des cas, il est possible de remplacer les outils LZMA par les outils XZ sans casser les scripts existants. Il existe cependant certaines incompatibilités qui peuvent parfois poser des problèmes."
#. type: SS
-#: ../src/xz/xz.1:2436
+#: ../src/xz/xz.1
#, no-wrap
msgid "Compression preset levels"
msgstr "Niveaux de préréglage de la compression"
#. type: Plain text
-#: ../src/xz/xz.1:2443
-msgid ""
-"The numbering of the compression level presets is not identical in B<xz> and "
-"LZMA Utils. The most important difference is how dictionary sizes are "
-"mapped to different presets. Dictionary size is roughly equal to the "
-"decompressor memory usage."
-msgstr ""
-"La numérotation des préréglages de niveau de compression est différente "
-"entre les outils B<xz> et LZMA. La différence la plus importante est la "
-"manière dont les tailles de dictionnaire sont affectées aux différents "
-"préréglages. La taille de dictionnaire est à peu près égale à celle "
-"d'utilisation de la mémoire de la décompression."
+#: ../src/xz/xz.1
+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 "La numérotation des préréglages de niveau de compression est différente entre les outils B<xz> et LZMA. La différence la plus importante est la manière dont les tailles de dictionnaire sont affectées aux différents préréglages. La taille de dictionnaire est à peu près égale à celle d'utilisation de la mémoire de la décompression."
#. type: tbl table
-#: ../src/xz/xz.1:2449 ../src/xz/xz.1:2474
+#: ../src/xz/xz.1
#, no-wrap
msgid "Level"
msgstr "Niveau"
#. type: tbl table
-#: ../src/xz/xz.1:2449 ../src/xz/xz.1:2474
+#: ../src/xz/xz.1
#, no-wrap
msgid "xz"
msgstr "xz"
#. type: tbl table
-#: ../src/xz/xz.1:2449
+#: ../src/xz/xz.1
#, no-wrap
msgid "LZMA Utils"
msgstr "Utilitaires LZMA"
#. type: tbl table
-#: ../src/xz/xz.1:2450 ../src/xz/xz.1:2475
+#: ../src/xz/xz.1
#, no-wrap
msgid "N/A"
msgstr "N/A"
#. type: tbl table
-#: ../src/xz/xz.1:2451
+#: ../src/xz/xz.1
#, no-wrap
msgid "64 KiB"
msgstr "64 KiB"
#. type: tbl table
-#: ../src/xz/xz.1:2453
+#: ../src/xz/xz.1
#, no-wrap
msgid "512 KiB"
msgstr "512 KiB"
#. type: Plain text
-#: ../src/xz/xz.1:2468
-msgid ""
-"The dictionary size differences affect the compressor memory usage too, but "
-"there are some other differences between LZMA Utils and XZ Utils, which make "
-"the difference even bigger:"
-msgstr ""
-"Les différences de tailles des dictionnaires affectent aussi l'utilisation "
-"de la mémoire du compresseur, mais il y a quelques autres différences entre "
-"les outils LZMA et les outils XZ, qui rendent la différence encore plus "
-"grande :"
+#: ../src/xz/xz.1
+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 "Les différences de tailles des dictionnaires affectent aussi l'utilisation de la mémoire du compresseur, mais il y a quelques autres différences entre les outils LZMA et les outils XZ, qui rendent la différence encore plus grande :"
#. type: tbl table
-#: ../src/xz/xz.1:2474
+#: ../src/xz/xz.1
#, no-wrap
msgid "LZMA Utils 4.32.x"
msgstr "Utilitaires LZMA 4.32.x"
#. type: tbl table
-#: ../src/xz/xz.1:2477 ../src/xz/xz.1:2478
+#: ../src/xz/xz.1
#, no-wrap
msgid "12 MiB"
msgstr "12 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:2480
+#: ../src/xz/xz.1
#, no-wrap
msgid "26 MiB"
msgstr "26 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:2481
+#: ../src/xz/xz.1
#, no-wrap
msgid "45 MiB"
msgstr "45 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:2482
+#: ../src/xz/xz.1
#, no-wrap
msgid "83 MiB"
msgstr "83 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:2483
+#: ../src/xz/xz.1
#, no-wrap
msgid "159 MiB"
msgstr "159 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:2484
+#: ../src/xz/xz.1
#, no-wrap
msgid "311 MiB"
msgstr "311 MiB"
#. type: Plain text
-#: ../src/xz/xz.1:2493
-msgid ""
-"The default preset level in LZMA Utils is B<-7> while in XZ Utils it is "
-"B<-6>, so both use an 8 MiB dictionary by default."
-msgstr ""
-"Le niveau de préréglage par défaut dans les outils LZMA est B<-7> alors que "
-"pour les outils XZ c'est B<-6>, les deux utilisent ainsi un dictionnaire de "
-"8 Mio par défaut."
+#: ../src/xz/xz.1
+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 "Le niveau de préréglage par défaut dans les outils LZMA est B<-7> alors que pour les outils XZ c'est B<-6>, les deux utilisent ainsi un dictionnaire de 8 Mio par défaut."
#. type: SS
-#: ../src/xz/xz.1:2494
+#: ../src/xz/xz.1
#, no-wrap
msgid "Streamed vs. non-streamed .lzma files"
msgstr "Fichiers .lzma en flux ou non"
#. type: Plain text
-#: ../src/xz/xz.1:2504
-#, fuzzy
-#| 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."
-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 ""
-"La taille non compressée du fichier peut être stockée dans l'en-tête B<."
-"lzma>. C'est ainsi que font les outils LZMA avec les fichiers normaux. "
-"L'alternative est d'indiquer que la taille décompressée est inconnue et "
-"utiliser un marqueur de fin de charge pour indiquer où le décompresseur doit "
-"s'arrêter. Les outils LZMA utilisent cette méthode quand la taille "
-"décompressée n'est pas connue, ce qui est le cas par exemple dans les "
-"redirections."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2525
-msgid ""
-"B<xz> supports decompressing B<.lzma> files with or without end-of-payload "
-"marker, but all B<.lzma> files created by B<xz> will use end-of-payload "
-"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> prend en charge la décompression des fichiers B<.lzma> avec ou sans "
-"marqueur de fin de charge utile, mais tous les fichiers B<.lzma> créés par "
-"B<xz> utiliseront un marqueur de fin de charge utile et ont la taille non "
-"compréssée marquée comme inconnue dans l'en-tête B<.lzma>. Cela peut être un "
-"problème dans quelques situations inhabituelles. Par exemple, un "
-"décompresseur B<.lzma> dans un périphérique embarqué pourrait ne fonctionner "
-"qu'avec des fichiers dont la taille non comprimée est connue. Si vous vous "
-"heurtez à ce problème, vous devez utiliser les utilitaires LZMA ou LZMA SDK "
-"pour créer des fichiers B<.lzma> avec une taille non compressée connue."
+#: ../src/xz/xz.1
+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 ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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> prend en charge la décompression des fichiers B<.lzma> avec ou sans marqueur de fin de charge utile, mais tous les fichiers B<.lzma> créés par B<xz> utiliseront un marqueur de fin de charge utile et ont la taille non compréssée marquée comme inconnue dans l'en-tête B<.lzma>. Cela peut être un problème dans quelques situations inhabituelles. Par exemple, un décompresseur B<.lzma> dans un périphérique embarqué pourrait ne fonctionner qu'avec des fichiers dont la taille non comprimée est connue. Si vous vous heurtez à ce problème, vous devez utiliser les utilitaires LZMA ou LZMA SDK pour créer des fichiers B<.lzma> avec une taille non compressée connue."
#. type: SS
-#: ../src/xz/xz.1:2526
+#: ../src/xz/xz.1
#, no-wrap
msgid "Unsupported .lzma files"
msgstr "Fichiers .lzma non pris en charge"
#. type: Plain text
-#: ../src/xz/xz.1:2549
-msgid ""
-"The B<.lzma> format allows I<lc> values up to 8, and I<lp> values up to 4. "
-"LZMA Utils can decompress files with any I<lc> and I<lp>, but always creates "
-"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 ""
-"Le format B<.lzma> autorise des valeurs I<lc> jusqu'à 8, et des valeurs "
-"I<lp> jusqu'à 4. Les outils LZMA peuvent décompresser des fichiers avec tous "
-"les I<lc> et I<lp>, mais créez toujours les fichiers avec B<lc=3> et "
-"B<lp=0>. Créer des fichiers avec d'autres valeurs I<lc> et I<lp> est "
-"possible avec B<xz> et avec LZMA SDK."
+#: ../src/xz/xz.1
+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 "Le format B<.lzma> autorise des valeurs I<lc> jusqu'à 8, et des valeurs I<lp> jusqu'à 4. Les outils LZMA peuvent décompresser des fichiers avec tous les I<lc> et I<lp>, mais créez toujours les fichiers avec B<lc=3> et B<lp=0>. Créer des fichiers avec d'autres valeurs I<lc> et I<lp> est possible avec B<xz> et avec LZMA SDK."
#. type: Plain text
-#: ../src/xz/xz.1:2560
-msgid ""
-"The implementation of the LZMA1 filter in liblzma requires that the sum of "
-"I<lc> and I<lp> must not exceed 4. Thus, B<.lzma> files, which exceed this "
-"limitation, cannot be decompressed with B<xz>."
-msgstr ""
-"L'implémentation du filtre LZMA1 dans liblzma nécessite que la somme de "
-"I<lc> et I<lp> soit inférieure ou égale à 4. Ainsi, les fichiers B<.lzma> "
-"qui excèdent cette limitation ne peuvent pas être décompressés avec B<xz>."
+#: ../src/xz/xz.1
+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 "L'implémentation du filtre LZMA1 dans liblzma nécessite que la somme de I<lc> et I<lp> soit inférieure ou égale à 4. Ainsi, les fichiers B<.lzma> qui excèdent cette limitation ne peuvent pas être décompressés avec B<xz>."
#. type: Plain text
-#: ../src/xz/xz.1:2575
-msgid ""
-"LZMA Utils creates only B<.lzma> files which have a dictionary size of "
-"2^I<n> (a power of 2) but accepts files with any dictionary size. liblzma "
-"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 ""
-"Les outils LZMA créent seulement des fichiers B<.lzma> qui ont une taille de "
-"dictionnaire de 2^I<n> (une puissance de 2) mais acceptent les fichiers avec "
-"toutes les tailles de dictionnaire. Libzlma n'accepte que les fichiers B<."
-"lzma> qui ont une taille dictionnaire de 2^I<n> ou 2^I<n> + 2^(I<n>-1). Cela "
-"afin de diminuer les faux positifs lors de la détection des fichiers B<."
-"lzma>."
+#: ../src/xz/xz.1
+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 "Les outils LZMA créent seulement des fichiers B<.lzma> qui ont une taille de dictionnaire de 2^I<n> (une puissance de 2) mais acceptent les fichiers avec toutes les tailles de dictionnaire. Libzlma n'accepte que les fichiers B<.lzma> qui ont une taille dictionnaire de 2^I<n> ou 2^I<n> + 2^(I<n>-1). Cela afin de diminuer les faux positifs lors de la détection des fichiers B<.lzma>."
#. type: Plain text
-#: ../src/xz/xz.1:2580
-msgid ""
-"These limitations shouldn't be a problem in practice, since practically all "
-"B<.lzma> files have been compressed with settings that liblzma will accept."
-msgstr ""
-"Ces limitations ne devraient pas poser problème en pratique, car "
-"pratiquement tous les fichiers B<.lzma> ont été compressés avec des réglages "
-"que liblzma accepte."
+#: ../src/xz/xz.1
+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 "Ces limitations ne devraient pas poser problème en pratique, car pratiquement tous les fichiers B<.lzma> ont été compressés avec des réglages que liblzma accepte."
#. type: SS
-#: ../src/xz/xz.1:2581
+#: ../src/xz/xz.1
#, no-wrap
msgid "Trailing garbage"
msgstr "Déchets excédentaires"
#. type: Plain text
-#: ../src/xz/xz.1:2591
-msgid ""
-"When decompressing, LZMA Utils silently ignore everything after the first B<."
-"lzma> stream. In most situations, this is a bug. This also means that LZMA "
-"Utils don't support decompressing concatenated B<.lzma> files."
-msgstr ""
-"Lors de la décompession, l'utilitaire LZMA ignore silencieusement tout ce "
-"qui est après le premier flux B<.lzma>. Dans la majorité des situations, "
-"c'est un bogue. Cela veut dire aussi que les outils LZMA ne gèrent pas la "
-"décompression de fichiers B<.lzma> concaténés."
+#: ../src/xz/xz.1
+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 "Lors de la décompession, l'utilitaire LZMA ignore silencieusement tout ce qui est après le premier flux B<.lzma>. Dans la majorité des situations, c'est un bogue. Cela veut dire aussi que les outils LZMA ne gèrent pas la décompression de fichiers B<.lzma> concaténés."
#. type: Plain text
-#: ../src/xz/xz.1:2601
-msgid ""
-"If there is data left after the first B<.lzma> stream, B<xz> considers the "
-"file to be corrupt unless B<--single-stream> was used. This may break "
-"obscure scripts which have assumed that trailing garbage is ignored."
-msgstr ""
-"S'il reste des données après le premier flux B<.lzma>, B<xz> considère que "
-"le fichier est corrompu sauf si B<--single-stream> a été utilisé. Cela peut "
-"casser des scripts obscurs qui ont supposé que les déchets de fin de ligne "
-"sont ignorés."
+#: ../src/xz/xz.1
+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 "S'il reste des données après le premier flux B<.lzma>, B<xz> considère que le fichier est corrompu sauf si B<--single-stream> a été utilisé. Cela peut casser des scripts obscurs qui ont supposé que les déchets de fin de ligne sont ignorés."
#. type: SH
-#: ../src/xz/xz.1:2602 ../src/xzdec/xzdec.1:117
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "NOTES"
msgstr "NOTES"
#. type: SS
-#: ../src/xz/xz.1:2604
+#: ../src/xz/xz.1
#, no-wrap
msgid "Compressed output may vary"
msgstr "La sortie compressée peut varier"
#. type: Plain text
-#: ../src/xz/xz.1:2615
-msgid ""
-"The exact compressed output produced from the same uncompressed input file "
-"may vary between XZ Utils versions even if compression options are "
-"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 ""
-"La sortie compressée exacte produite par les même fichiers non compressés en "
-"entrée peut varier en fonction des différentes versions de l'utilitaire XZ, "
-"même si les options de compression sont identiques. En effet, il est "
-"possible d'améliorer l'encodeur (compression plus rapide ou meilleure) sans "
-"affecter le format du fichier. La sortie peut même varier entre différentes "
-"compilations de la même version d'utilitaire XZ, si des options de "
-"construction différentes sont utilisées."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2625
-msgid ""
-"The above means that once B<--rsyncable> has been implemented, the resulting "
-"files won't necessarily be rsyncable unless both old and new files have been "
-"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 ""
-"Cela signifie qu'une fois que B<--rsyncable> a été implémenté, les fichiers "
-"résultants ne seront pas nécessairement synchronisables avec rsync à moins "
-"que les nouveaux et anciens fichiers n'aient été compressés avec la même "
-"version de xz. Ce problème peut être résolu si une partie de "
-"l'implémentation est gelée pour garantir la stabilité de la sortie rsyncable "
-"à travers les versions de xz."
+#: ../src/xz/xz.1
+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 "La sortie compressée exacte produite par les même fichiers non compressés en entrée peut varier en fonction des différentes versions de l'utilitaire XZ, même si les options de compression sont identiques. En effet, il est possible d'améliorer l'encodeur (compression plus rapide ou meilleure) sans affecter le format du fichier. La sortie peut même varier entre différentes compilations de la même version d'utilitaire XZ, si des options de construction différentes sont utilisées."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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 "Cela signifie qu'une fois que B<--rsyncable> a été implémenté, les fichiers résultants ne seront pas nécessairement synchronisables avec rsync à moins que les nouveaux et anciens fichiers n'aient été compressés avec la même version de xz. Ce problème peut être résolu si une partie de l'implémentation est gelée pour garantir la stabilité de la sortie rsyncable à travers les versions de xz."
#. type: SS
-#: ../src/xz/xz.1:2626
+#: ../src/xz/xz.1
#, no-wrap
msgid "Embedded .xz decompressors"
msgstr "Décompresseurs .xz embarqués"
#. type: Plain text
-#: ../src/xz/xz.1:2643
-msgid ""
-"Embedded B<.xz> decompressor implementations like XZ Embedded don't "
-"necessarily support files created with integrity I<check> types other than "
-"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 ""
-"Les implémentations de décompresseur embarqué comme XZ Embedded ne gèrent "
-"pas nécessairement les fichiers créés avec d'autres types de I<vérification> "
-"d'intégrité que B<none> et B<CRC32>. Comme la valeur par défaut est B<--"
-"check=crc64>, vous devez utiliser B<--check=none> ou B<--check=crc32> lors "
-"de la création de fichiers pour les systèmes embarqués."
+#: ../src/xz/xz.1
+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 "Les implémentations de décompresseur embarqué comme XZ Embedded ne gèrent pas nécessairement les fichiers créés avec d'autres types de I<vérification> d'intégrité que B<none> et B<CRC32>. Comme la valeur par défaut est B<--check=crc64>, vous devez utiliser B<--check=none> ou B<--check=crc32> lors de la création de fichiers pour les systèmes embarqués."
#. type: Plain text
-#: ../src/xz/xz.1:2653
-msgid ""
-"Outside embedded systems, all B<.xz> format decompressors support all the "
-"I<check> types, or at least are able to decompress the file without "
-"verifying the integrity check if the particular I<check> is not supported."
-msgstr ""
-"En dehors des systèmes embarqués, tous les décompresseurs de format B<.xz> "
-"gèrent tous les types de I<vérification> ou sont au moins capables de "
-"décompresser le fichier sans effectuer la vérification d'intégrité si ce "
-"type de I<vérification> particulière n'est pas pris en charge."
+#: ../src/xz/xz.1
+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 "En dehors des systèmes embarqués, tous les décompresseurs de format B<.xz> gèrent tous les types de I<vérification> ou sont au moins capables de décompresser le fichier sans effectuer la vérification d'intégrité si ce type de I<vérification> particulière n'est pas pris en charge."
#. type: Plain text
-#: ../src/xz/xz.1:2656
-msgid ""
-"XZ Embedded supports BCJ filters, but only with the default start offset."
-msgstr ""
-"XZ Embedded prend en charge les filtres BCJ, mais seulement avec le décalage "
-"de départ par défaut."
+#: ../src/xz/xz.1
+msgid "XZ Embedded supports BCJ filters, but only with the default start offset."
+msgstr "XZ Embedded prend en charge les filtres BCJ, mais seulement avec le décalage de départ par défaut."
#. type: SH
-#: ../src/xz/xz.1:2657
+#: ../src/xz/xz.1
#, no-wrap
msgid "EXAMPLES"
msgstr "EXEMPLES"
#. type: SS
-#: ../src/xz/xz.1:2659
+#: ../src/xz/xz.1
#, no-wrap
msgid "Basics"
msgstr "Bases"
#. type: Plain text
-#: ../src/xz/xz.1:2669
-msgid ""
-"Compress the file I<foo> into I<foo.xz> using the default compression level "
-"(B<-6>), and remove I<foo> if compression is successful:"
-msgstr ""
-"Compresser le fichier I<toto> en I<toto.xz> en utilisant le niveau de "
-"compression par défaut (B<-6>) et supprimer I<toto> si la compression "
-"réussit :"
+#: ../src/xz/xz.1
+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 "Compresser le fichier I<toto> en I<toto.xz> en utilisant le niveau de compression par défaut (B<-6>) et supprimer I<toto> si la compression réussit :"
#. type: Plain text
-#: ../src/xz/xz.1:2674
-#, no-wrap
-msgid "CW<xz foo>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz foo>\n"
+msgid "\\f(CRxz foo\\fR\n"
msgstr "CW<xz toto>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2685
-msgid ""
-"Decompress I<bar.xz> into I<bar> and don't remove I<bar.xz> even if "
-"decompression is successful:"
-msgstr ""
-"Décompresser I<bidule.xz> en I<bidule> et ne pas supprimer I<bidule.xz> même "
-"si la compression réussit :"
+#: ../src/xz/xz.1
+msgid "Decompress I<bar.xz> into I<bar> and don't remove I<bar.xz> even if decompression is successful:"
+msgstr "Décompresser I<bidule.xz> en I<bidule> et ne pas supprimer I<bidule.xz> même si la compression réussit :"
#. type: Plain text
-#: ../src/xz/xz.1:2690
-#, no-wrap
-msgid "CW<xz -dk bar.xz>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz -dk bar.xz>\n"
+msgid "\\f(CRxz -dk bar.xz\\fR\n"
msgstr "CW<xz -dk bidule.xz>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2703
-#, fuzzy
-#| 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):"
-msgid ""
-"Create I<baz.tar.xz> with the preset B<-4e> (B<-4 --extreme>), which is "
-"slower than the default B<-6>, but needs less memory for compression and "
-"decompression (48\\ MiB and 5\\ MiB, respectively):"
+#: ../src/xz/xz.1
+msgid "Create I<baz.tar.xz> with the preset B<-4e> (B<-4 --extreme>), which is slower than the default B<-6>, but needs less memory for compression and decompression (48\\ MiB and 5\\ MiB, respectively):"
msgstr ""
-"Créer I<truc.tar.xz> avec le préréglage B<-4e> (B<-4--extreme>), lequel est "
-"plus lent que par exemle B<-6> (par défaut), mais nécessite moins de mémoire "
-"pour la compression et la décompression (48\\ Mio et 5\\ Mio, "
-"respectivement) :"
#. type: Plain text
-#: ../src/xz/xz.1:2708
-#, no-wrap
-msgid "CW<tar cf - baz | xz -4e E<gt> baz.tar.xz>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<tar cf - baz | xz -4e E<gt> baz.tar.xz>\n"
+msgid "\\f(CRtar cf - baz | xz -4e E<gt> baz.tar.xz\\fR\n"
msgstr "CW<tar cf - truc | xz -4e E<gt> truc.tar.xz>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2714
-msgid ""
-"A mix of compressed and uncompressed files can be decompressed to standard "
-"output with a single command:"
-msgstr ""
-"Un mélange de fichiers compressés et non compressés peuvent être "
-"décompressés vers la sortie standard avec une simple commande :"
+#: ../src/xz/xz.1
+msgid "A mix of compressed and uncompressed files can be decompressed to standard output with a single command:"
+msgstr "Un mélange de fichiers compressés et non compressés peuvent être décompressés vers la sortie standard avec une simple commande :"
#. type: Plain text
-#: ../src/xz/xz.1:2719
-#, no-wrap
-msgid "CW<xz -dcf a.txt b.txt.xz c.txt d.txt.lzma E<gt> abcd.txt>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz -dcf a.txt b.txt.xz c.txt d.txt.lzma E<gt> abcd.txt>\n"
+msgid "\\f(CRxz -dcf a.txt b.txt.xz c.txt d.txt.lzma E<gt> abcd.txt\\fR\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:2723
+#: ../src/xz/xz.1
#, no-wrap
msgid "Parallel compression of many files"
msgstr "Compression en parallèle de plusieurs fichiers"
#. type: Plain text
-#: ../src/xz/xz.1:2729
-msgid ""
-"On GNU and *BSD, B<find>(1) and B<xargs>(1) can be used to parallelize "
-"compression of many files:"
-msgstr ""
-"Sur GNU et *BSD, B<find>(1) et B<xargs>(1) peuvent être utilisés pour mettre "
-"en parallèle la compression de plusieurs fichiers :"
+#: ../src/xz/xz.1
+msgid "On GNU and *BSD, B<find>(1) and B<xargs>(1) can be used to parallelize compression of many files:"
+msgstr "Sur GNU et *BSD, B<find>(1) et B<xargs>(1) peuvent être utilisés pour mettre en parallèle la compression de plusieurs fichiers :"
#. type: Plain text
-#: ../src/xz/xz.1:2735
-#, no-wrap
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid ""
+#| "CW<find . -type f \\e! -name '*.xz' -print0 \\e\n"
+#| " | xargs -0r -P4 -n16 xz -T1>\n"
msgid ""
-"CW<find . -type f \\e! -name '*.xz' -print0 \\e\n"
-" | xargs -0r -P4 -n16 xz -T1>\n"
+"\\f(CRfind . -type f \\e! -name '*.xz' -print0 \\e\n"
+" | xargs -0r -P4 -n16 xz -T1\\fR\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:2757
-msgid ""
-"The B<-P> option to B<xargs>(1) sets the number of parallel B<xz> "
-"processes. The best value for the B<-n> option depends on how many files "
-"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 ""
-"L'option B<P> passée à B<xargs>(1) fixe le nombre de processus B<xz> en "
-"parallèles. La meilleure valeur pour l'option B<n> dépend du nombre de "
-"fichiers à compresser. S-il n'y a que quelques fichiers, la valeur sera "
-"probablement 1 ; avec des dizaines de milliers de fichiers, 100 ou même plus "
-"serait approprié pour réduire le nombre de processus B<xz> que B<xargs>(1) "
-"créera éventuellement."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2765
-msgid ""
-"The option B<-T1> for B<xz> is there to force it to single-threaded mode, "
-"because B<xargs>(1) is used to control the amount of parallelization."
-msgstr ""
-"L'option B<-T1> de B<xz> est là pour le forcer en mode mono-thread, car "
-"B<xargs>(1) est utilisé pour contrôler la quantité de mise en parallèle."
+#: ../src/xz/xz.1
+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 "L'option B<P> passée à B<xargs>(1) fixe le nombre de processus B<xz> en parallèles. La meilleure valeur pour l'option B<n> dépend du nombre de fichiers à compresser. S-il n'y a que quelques fichiers, la valeur sera probablement 1 ; avec des dizaines de milliers de fichiers, 100 ou même plus serait approprié pour réduire le nombre de processus B<xz> que B<xargs>(1) créera éventuellement."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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 "L'option B<-T1> de B<xz> est là pour le forcer en mode mono-thread, car B<xargs>(1) est utilisé pour contrôler la quantité de mise en parallèle."
#. type: SS
-#: ../src/xz/xz.1:2766
+#: ../src/xz/xz.1
#, no-wrap
msgid "Robot mode"
msgstr "Mode robot"
#. type: Plain text
-#: ../src/xz/xz.1:2769
-msgid ""
-"Calculate how many bytes have been saved in total after compressing multiple "
-"files:"
-msgstr ""
-"Calculer combien d'octets ont été économisés au total après avoir compressé "
-"plusieurs fichiers :"
+#: ../src/xz/xz.1
+msgid "Calculate how many bytes have been saved in total after compressing multiple files:"
+msgstr "Calculer combien d'octets ont été économisés au total après avoir compressé plusieurs fichiers :"
#. type: Plain text
-#: ../src/xz/xz.1:2774
-#, no-wrap
-msgid "CW<xz --robot --list *.xz | awk '/^totals/{print $5-$4}'>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --robot --list *.xz | awk '/^totals/{print $5-$4}'>\n"
+msgid "\\f(CRxz --robot --list *.xz | awk '/^totals/{print $5-$4}'\\fR\n"
msgstr "CW<xz --robot --list *.xz | awk '/^totals/{print $5-$4}'>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2789
-msgid ""
-"A script may want to know that it is using new enough B<xz>. The following "
-"B<sh>(1) script checks that the version number of the B<xz> tool is at "
-"least 5.0.0. This method is compatible with old beta versions, which didn't "
-"support the B<--robot> option:"
-msgstr ""
-"Un script peut vouloir savoir qu'il utilise une version suffisamment récente "
-"de B<xz>. Le script B<sh>(1) suivant vérifie que le numéro de version de "
-"l'outil B<xz> soit au minimum 5.0.0. Cette méthode est compatible avec les "
-"vieilles versions bêta, qui ne gèrent pas l'option B<--robot> :"
+#: ../src/xz/xz.1
+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 "Un script peut vouloir savoir qu'il utilise une version suffisamment récente de B<xz>. Le script B<sh>(1) suivant vérifie que le numéro de version de l'outil B<xz> soit au minimum 5.0.0. Cette méthode est compatible avec les vieilles versions bêta, qui ne gèrent pas l'option B<--robot> :"
#. type: Plain text
-#: ../src/xz/xz.1:2798
-#, no-wrap
+#: ../src/xz/xz.1
+#, fuzzy, 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"
msgid ""
-"CW<if ! eval \"$(xz --robot --version 2E<gt> /dev/null)\" ||\n"
+"\\f(CRif ! 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"
+"unset XZ_VERSION LIBLZMA_VERSION\\fR\n"
msgstr ""
"CW<if ! eval \"$(xz --robot --version 2E<gt> /dev/null)\" ||\n"
" [ \"$XZ_VERSION\" -lt 50000002 ]; then\n"
@@ -5092,1113 +3249,660 @@ msgstr ""
"unset XZ_VERSION LIBLZMA_VERSION>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2805
-msgid ""
-"Set a memory usage limit for decompression using B<XZ_OPT>, but if a limit "
-"has already been set, don't increase it:"
-msgstr ""
-"Régler une limite d'utilisation de la mémoire pour la décompression en "
-"utilisant B<XZ_OPT>, mais si une limite a déjà été définie, ne pas "
-"l'augmenter : "
+#: ../src/xz/xz.1
+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 "Régler une limite d'utilisation de la mémoire pour la décompression en utilisant B<XZ_OPT>, mais si une limite a déjà été définie, ne pas l'augmenter : "
#. type: Plain text
-#: ../src/xz/xz.1:2815
-#, fuzzy, 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"
+#: ../src/xz/xz.1
+#, no-wrap
msgid ""
-"CW<NEWLIM=$((123 E<lt>E<lt> 20))\\ \\ # 123 MiB\n"
+"\\f(CRNEWLIM=$((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"
+"fi\\fR\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:2825
-msgid ""
-"The simplest use for custom filter chains is customizing a LZMA2 preset. "
-"This can be useful, because the presets cover only a subset of the "
-"potentially useful combinations of compression settings."
-msgstr ""
-"L'utilisation la plus simple des chaînes de filtres personnalisées est la "
-"personnalisation d'un préréglage LZMA2. Cela peut être utile, car les "
-"préréglages ne couvrent qu'un sous-ensemble des réglages de compression "
-"potentiellement utiles."
+#: ../src/xz/xz.1
+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 "L'utilisation la plus simple des chaînes de filtres personnalisées est la personnalisation d'un préréglage LZMA2. Cela peut être utile, car les préréglages ne couvrent qu'un sous-ensemble des réglages de compression potentiellement utiles."
#. type: Plain text
-#: ../src/xz/xz.1:2833
-msgid ""
-"The CompCPU columns of the tables from the descriptions of the options "
-"B<-0> ... B<-9> and B<--extreme> are useful when customizing LZMA2 presets. "
-"Here are the relevant parts collected from those two tables:"
-msgstr ""
-"Les colonnes CompCPU des tableaux des descriptions des options B<-0> à B<-9> "
-"et B<--extreme> sont utiles lors de la personnalisation des préréglages "
-"LZMA2. Voici les parties pertinentes recueillies à partir de ces deux "
-"tableaux :"
+#: ../src/xz/xz.1
+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 "Les colonnes CompCPU des tableaux des descriptions des options B<-0> à B<-9> et B<--extreme> sont utiles lors de la personnalisation des préréglages LZMA2. Voici les parties pertinentes recueillies à partir de ces deux tableaux :"
#. type: Plain text
-#: ../src/xz/xz.1:2858
-#, fuzzy
-#| 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:"
-msgid ""
-"If you know that a file requires somewhat big dictionary (for example, 32\\ "
-"MiB) to compress well, but you want to compress it quicker than B<xz -8> "
-"would do, a preset with a low CompCPU value (for example, 1) can be "
-"modified to use a bigger dictionary:"
+#: ../src/xz/xz.1
+msgid "If you know that a file requires somewhat big dictionary (for example, 32\\ MiB) to compress well, but you want to compress it quicker than B<xz -8> would do, a preset with a low CompCPU value (for example, 1) can be modified to use a bigger dictionary:"
msgstr ""
-"Si vous savez qu'un fichier nécessite un dictionnaire relativement gros (par "
-"exemple 32 Mio) pour bien compresser, mais que vous vouliez le compresser "
-"plus vite que B<xz-8> ne le ferait, un préréglage avec une valeur basse de "
-"CompCPU (par exemple 1) peut être modifié pour utiliser un dictionnaire plus "
-"gros :"
#. type: Plain text
-#: ../src/xz/xz.1:2863
-#, no-wrap
-msgid "CW<xz --lzma2=preset=1,dict=32MiB foo.tar>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --lzma2=preset=1,dict=32MiB foo.tar>\n"
+msgid "\\f(CRxz --lzma2=preset=1,dict=32MiB foo.tar\\fR\n"
msgstr "CW<xz --lzma2=preset=1,dict=32MiB toto.tar>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2879
-msgid ""
-"With certain files, the above command may be faster than B<xz -6> while "
-"compressing significantly better. However, it must be emphasized that only "
-"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 ""
-"Avec certains fichiers, la commande ci-dessus peut être plus rapide que "
-"B<xz-6> tout en compressant bien mieux. Cependant, il faut souligner que "
-"seuls certains fichiers bénéficient d'un grand dictionnaire tout en gardant "
-"la valeur de CompCPU faible. La siutation la plus évidente où un gros "
-"dictionnaire peut baucoup aider, est une archive contenant des fichiers très "
-"similaires de quelques megaoctets chacun. La taille de dictionnaire doit "
-"être significativement plus grosse que tout fichier individuel pour "
-"permettre à LZMA2 de tirer pleinement partie des similarités entre des "
-"fichiers consécutifs."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2886
-msgid ""
-"If very high compressor and decompressor memory usage is fine, and the file "
-"being compressed is at least several hundred megabytes, it may be useful to "
-"use an even bigger dictionary than the 64 MiB that B<xz -9> would use:"
-msgstr ""
-"Si une utilisation de la mémoire élevée pour la compression et décompression "
-"convient, et que le fichier à compresser a une taille de plusieurs centaines "
-"de megaoctets, il peut être utile d'utiliser un plus gros dictionnaire que "
-"celui fourni par B<xz-9> (64 Mio) :"
+#: ../src/xz/xz.1
+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 "Avec certains fichiers, la commande ci-dessus peut être plus rapide que B<xz-6> tout en compressant bien mieux. Cependant, il faut souligner que seuls certains fichiers bénéficient d'un grand dictionnaire tout en gardant la valeur de CompCPU faible. La siutation la plus évidente où un gros dictionnaire peut baucoup aider, est une archive contenant des fichiers très similaires de quelques megaoctets chacun. La taille de dictionnaire doit être significativement plus grosse que tout fichier individuel pour permettre à LZMA2 de tirer pleinement partie des similarités entre des fichiers consécutifs."
#. type: Plain text
-#: ../src/xz/xz.1:2891
-#, no-wrap
-msgid "CW<xz -vv --lzma2=dict=192MiB big_foo.tar>\n"
+#: ../src/xz/xz.1
+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 "Si une utilisation de la mémoire élevée pour la compression et décompression convient, et que le fichier à compresser a une taille de plusieurs centaines de megaoctets, il peut être utile d'utiliser un plus gros dictionnaire que celui fourni par B<xz-9> (64 Mio) :"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz -vv --lzma2=dict=192MiB big_foo.tar>\n"
+msgid "\\f(CRxz -vv --lzma2=dict=192MiB big_foo.tar\\fR\n"
msgstr "CW<xz -vv --lzma2=dict=192MiB gros_toto.tar>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2904
-msgid ""
-"Using B<-vv> (B<--verbose --verbose>) like in the above example can be "
-"useful to see the memory requirements of the compressor and decompressor. "
-"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 ""
-"Utiliser B<-vv> (B<--verbose--verbose>) comme dans l'exemple ci-dessus peut "
-"être utile pour voir les besoins en mémoire du compresseur et du "
-"décompresseur. Rappelez-vous qu'utiliser un dictionnaire plus gros que la "
-"taille du fichier non compressé est un gachis de mémoire, donc la commande "
-"ci-dessus n'est pas utile pour les petits fichiers."
+#: ../src/xz/xz.1
+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 "Utiliser B<-vv> (B<--verbose--verbose>) comme dans l'exemple ci-dessus peut être utile pour voir les besoins en mémoire du compresseur et du décompresseur. Rappelez-vous qu'utiliser un dictionnaire plus gros que la taille du fichier non compressé est un gachis de mémoire, donc la commande ci-dessus n'est pas utile pour les petits fichiers."
#. type: Plain text
-#: ../src/xz/xz.1:2916
-#, fuzzy
-#| 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."
-msgid ""
-"Sometimes the compression time doesn't matter, but the decompressor memory "
-"usage has to be kept low, for example, to make it possible to decompress the "
-"file on an embedded system. The following command uses B<-6e> (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."
+#: ../src/xz/xz.1
+msgid "Sometimes the compression time doesn't matter, but the decompressor memory usage has to be kept low, for example, to make it possible to decompress the file on an embedded system. The following command uses B<-6e> (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 ""
-"Parfois le temps de compression importe peu, mais l'utilisation de la "
-"mémoire du décompresseur doit être maintenue basse (par exemple pour rendre "
-"possible la décompression d'un fichier sur un système embarqué). La commande "
-"suivante utilise B<-6e> (B<-6 --extreme>) comme base, et définit le "
-"dictionnaire à seulement 64\\ Kio. Le fichier qui en résulte peut être "
-"décompressé avec XZ Embedded (c'est pourquoi il y a B<--check=crc32>) en "
-"utilisant environ 100\\ Kio de mémoire."
#. type: Plain text
-#: ../src/xz/xz.1:2921
-#, no-wrap
-msgid "CW<xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo>\n"
+msgid "\\f(CRxz --check=crc32 --lzma2=preset=6e,dict=64KiB foo\\fR\n"
msgstr "CW<xz --check=crc32 --lzma2=preset=6e,dict=64KiB toto>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2944
-#, fuzzy
-#| 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>):"
-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. For "
-"example, a source code archive contains mostly US-ASCII text, so something "
-"like the following might give slightly (like 0.1\\ %) smaller file than B<xz "
-"-6e> (try also without B<lc=4>):"
-msgstr ""
-"Si vous voulez réduire au maximum le nombre d'octets, ajuster le nombre de "
-"bits de contexte littéral (I<lc>) et le nombre de bits de position (I<pb>) "
-"peut parfois être bénéfique. Ajuster le nombre de bits de position littéraux "
-"(literal position bits)(I<lp>) devrait aider aussi, mais généralement I<lc> "
-"et I<pb> sont plus importants. Par exemple, une archive de code source "
-"contient majoritairement du texte US-ASCII, donc quelquechose du style de ce "
-"qui suit devrait donner un fichier légèrement (approximativement O.1%) plus "
-"petit que B<xz -6e> (essayez aussi sans B<lc=4>) :"
-
-#. type: Plain text
-#: ../src/xz/xz.1:2949
-#, no-wrap
-msgid "CW<xz --lzma2=preset=6e,pb=0,lc=4 source_code.tar>\n"
+#: ../src/xz/xz.1
+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. For example, a source code archive contains mostly US-ASCII text, so something like the following might give slightly (like 0.1\\ %) smaller file than B<xz -6e> (try also without B<lc=4>):"
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --lzma2=preset=6e,pb=0,lc=4 source_code.tar>\n"
+msgid "\\f(CRxz --lzma2=preset=6e,pb=0,lc=4 source_code.tar\\fR\n"
msgstr "CW<xz --lzma2=preset=6e,pb=0,lc=4 code_source.tar>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2957
-#, fuzzy
-#| 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:"
-msgid ""
-"Using another filter together with LZMA2 can improve compression with "
-"certain file types. For example, to compress a x86-32 or x86-64 shared "
-"library using the x86 BCJ filter:"
+#: ../src/xz/xz.1
+msgid "Using another filter together with LZMA2 can improve compression with certain file types. For example, to compress a x86-32 or x86-64 shared library using the x86 BCJ filter:"
msgstr ""
-"Utiliser un autre filtre avec LZMA2 peut améliorer la compression avec "
-"certains types de fichiers. Par exemple, pour compresser une bibliothèque "
-"partagée x86-32 ou x86-64 en utilisant le filtre BCJ x86 :"
#. type: Plain text
-#: ../src/xz/xz.1:2962
-#, no-wrap
-msgid "CW<xz --x86 --lzma2 libfoo.so>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --x86 --lzma2 libfoo.so>\n"
+msgid "\\f(CRxz --x86 --lzma2 libfoo.so\\fR\n"
msgstr "CW<xz --x86 --lzma2 libtoto.so>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2976
-msgid ""
-"Note that the order of the filter options is significant. If B<--x86> is "
-"specified after B<--lzma2>, B<xz> will give an error, because there cannot "
-"be any filter after LZMA2, and also because the x86 BCJ filter cannot be "
-"used as the last filter in the chain."
-msgstr ""
-"Notez que l'ordre des options de filtre est significatif. Si B<--x86> est "
-"indiqué après B<--lzma2>, B<xz> donnera une erreur, car il ne peut y avoir "
-"aucun filtre après LZMA2, et aussi parce que le filtre BCJ x86 ne peut pas "
-"être utilisé comme dernier filtre dans la chaîne."
+#: ../src/xz/xz.1
+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 "Notez que l'ordre des options de filtre est significatif. Si B<--x86> est indiqué après B<--lzma2>, B<xz> donnera une erreur, car il ne peut y avoir aucun filtre après LZMA2, et aussi parce que le filtre BCJ x86 ne peut pas être utilisé comme dernier filtre dans la chaîne."
#. type: Plain text
-#: ../src/xz/xz.1:2982
-msgid ""
-"The Delta filter together with LZMA2 can give good results with bitmap "
-"images. It should usually beat PNG, which has a few more advanced filters "
-"than simple delta but uses Deflate for the actual compression."
-msgstr ""
-"Le filtre Delta associé à LZMA2 peut donner de bons résultats avec les "
-"images bitmap. Cela devrait habituellement battre PNG, qui a quelques "
-"filtres avancés supplémentaires qu'un simple delta, mais qui utilise Deflate "
-"pour la compression effective."
+#: ../src/xz/xz.1
+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 "Le filtre Delta associé à LZMA2 peut donner de bons résultats avec les images bitmap. Cela devrait habituellement battre PNG, qui a quelques filtres avancés supplémentaires qu'un simple delta, mais qui utilise Deflate pour la compression effective."
#. type: Plain text
-#: ../src/xz/xz.1:2992
-#, fuzzy
-#| 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:"
-msgid ""
-"The image has to be saved in uncompressed format, for example, as "
-"uncompressed TIFF. The distance parameter of the Delta filter is set to "
-"match the number of bytes per pixel in the image. For example, 24-bit RGB "
-"bitmap needs B<dist=3>, and it is also good to pass B<pb=0> to LZMA2 to "
-"accommodate the three-byte alignment:"
+#: ../src/xz/xz.1
+msgid "The image has to be saved in uncompressed format, for example, as uncompressed TIFF. The distance parameter of the Delta filter is set to match the number of bytes per pixel in the image. For example, 24-bit RGB bitmap needs B<dist=3>, and it is also good to pass B<pb=0> to LZMA2 to accommodate the three-byte alignment:"
msgstr ""
-"L'image doit être sauvée dans un format non compressé, comme TIFF non "
-"compressé. Le paramètre de distance du filtre Delta est défini pour "
-"correspondre au nombre d'octets par pixel dans l'image. Par exemple une "
-"image RGB 24 bits nécessite B<dist=3> et il est aussi recommandé de passer "
-"B<pb=0> à LZMA2 pour s'adapter à l'alignement trois octets :"
#. type: Plain text
-#: ../src/xz/xz.1:2997
-#, no-wrap
-msgid "CW<xz --delta=dist=3 --lzma2=pb=0 foo.tiff>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --delta=dist=3 --lzma2=pb=0 foo.tiff>\n"
+msgid "\\f(CRxz --delta=dist=3 --lzma2=pb=0 foo.tiff\\fR\n"
msgstr "CW<xz --delta=dist=3 --lzma2=pb=0 toto.tiff>\n"
#. type: Plain text
-#: ../src/xz/xz.1:3005
-#, fuzzy
-#| 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."
-msgid ""
-"If multiple images have been put into a single archive (for example, B<."
-"tar>), the Delta filter will work on that too as long as all images have the "
-"same number of bytes per pixel."
+#: ../src/xz/xz.1
+msgid "If multiple images have been put into a single archive (for example, B<.tar>), the Delta filter will work on that too as long as all images have the same number of bytes per pixel."
msgstr ""
-"Si plusieurs images ont été mises dans une seule archive (par exemple\\&B<."
-"tar>), le filtre Delta les modifiera pourvu que toutes les images ont le "
-"même nombre d'octets par pixel."
#. type: SH
-#: ../src/xz/xz.1:3006 ../src/xzdec/xzdec.1:143 ../src/lzmainfo/lzmainfo.1:59
-#: ../src/scripts/xzdiff.1:65 ../src/scripts/xzgrep.1:106
-#: ../src/scripts/xzless.1:65 ../src/scripts/xzmore.1:51
+#: ../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
#, no-wrap
msgid "SEE ALSO"
msgstr "VOIR AUSSI"
#. type: Plain text
-#: ../src/xz/xz.1:3015
-msgid ""
-"B<xzdec>(1), B<xzdiff>(1), B<xzgrep>(1), B<xzless>(1), B<xzmore>(1), "
-"B<gzip>(1), B<bzip2>(1), B<7z>(1)"
-msgstr ""
-"B<xzdec>(1), B<xzdiff>(1), B<xzgrep>(1), B<xzless>(1), B<xzmore>(1), "
-"B<gzip>(1), B<bzip2>(1), B<7z>(1)"
+#: ../src/xz/xz.1
+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:3017
+#: ../src/xz/xz.1
msgid "XZ Utils: E<lt>https://tukaani.org/xz/E<gt>"
-msgstr "XZ Utilitaires: E<lt>https://tukaani.org/xz/E<gt>"
+msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:3019 ../src/xzdec/xzdec.1:146
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
msgid "XZ Embedded: E<lt>https://tukaani.org/xz/embedded.htmlE<gt>"
-msgstr "XZ Embarqué: E<lt>https://tukaani.org/xz/embedded.htmlE<gt>"
+msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:3020
-#, fuzzy
-#| msgid "LZMA SDK: E<lt>http://7-zip.org/sdk.htmlE<gt>"
+#: ../src/xz/xz.1
msgid "LZMA SDK: E<lt>https://7-zip.org/sdk.htmlE<gt>"
-msgstr "LZMA SDK: E<lt>http://7-zip.org/sdk.htmlE<gt>"
+msgstr ""
#. type: TH
-#: ../src/xzdec/xzdec.1:7
+#: ../src/xzdec/xzdec.1
#, no-wrap
msgid "XZDEC"
msgstr "XZDEC"
-#. type: TH
-#: ../src/xzdec/xzdec.1:7
-#, no-wrap
-msgid "2017-04-19"
-msgstr "19-04-2017"
-
#. type: Plain text
-#: ../src/xzdec/xzdec.1:10
+#: ../src/xzdec/xzdec.1
msgid "xzdec, lzmadec - Small .xz and .lzma decompressors"
msgstr "xzdec, lzmadec - Small .xz et .lzma decompresseurs"
#. type: Plain text
-#: ../src/xzdec/xzdec.1:14
+#: ../src/xzdec/xzdec.1
msgid "B<xzdec> [I<option...>] [I<file...>]"
msgstr "B<xzdec> [I<option...>] [I<fichier...>]"
#. type: Plain text
-#: ../src/xzdec/xzdec.1:18
+#: ../src/xzdec/xzdec.1
msgid "B<lzmadec> [I<option...>] [I<file...>]"
msgstr "B<lzmadec> [I<option...>] [I<fichier...>]"
#. 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> est un outil uniquement de décompression, basé sur liblzma pour les "
-"fichiers B<.xz> (et seulement B<.xz>). B<xzdec> est destiné à remplacer "
-"B<xz>(1) dans les situations les plus courantes où un script a été écrit "
-"pour utiliser B<xz --decompress --stdout> (et possiblement quelques autres "
-"options courantes) pour décompresser des fichiers B<.xz>. B<lzmadec> est "
-"identique à B<xzdec>, sauf que B<lzmadec> prend en charge les fichiers B<."
-"lzma> au lieu des fichiers B<.xz>."
-
-#. 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 ""
-"Pour réduire la taille de l'exécutable, B<xzdec> ne prend en charge ni le "
-"multithreading ni la localisation et ne lit pas les options des variables "
-"d'environnement B<XZ_DEFAULTS> et B<XZ_OPT>. B<xzdec> ne gère pas "
-"l'affichage d'information sur la progression du traitement : envoyer "
-"B<SIGINFO> à B<xzdec> ne fait rien, mais envoyer B<SIGUSR1> termine le "
-"processus au lieu d'afficher de l'information sur la progression."
-
-#. type: Plain text
-#: ../src/xzdec/xzdec.1:69
-msgid ""
-"Ignored for B<xz>(1) compatibility. B<xzdec> supports only decompression."
-msgstr ""
-"Ignoré pour la compatibilité avec B<xz>(1), B<xzdec> ne gère que la "
-"décompression."
+#: ../src/xzdec/xzdec.1
+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> est un outil uniquement de décompression, basé sur liblzma pour les fichiers B<.xz> (et seulement B<.xz>). B<xzdec> est destiné à remplacer B<xz>(1) dans les situations les plus courantes où un script a été écrit pour utiliser B<xz --decompress --stdout> (et possiblement quelques autres options courantes) pour décompresser des fichiers B<.xz>. B<lzmadec> est identique à B<xzdec>, sauf que B<lzmadec> prend en charge les fichiers B<.lzma> au lieu des fichiers B<.xz>."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:76
-msgid ""
-"Ignored for B<xz>(1) compatibility. B<xzdec> never creates or removes any "
-"files."
-msgstr ""
-"Ignoré pour la compatibilité avec B<xz>(1), B<xzdec> ne crée ni ne supprime "
-"jamais aucun fichier."
+#: ../src/xzdec/xzdec.1
+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 "Pour réduire la taille de l'exécutable, B<xzdec> ne prend en charge ni le multithreading ni la localisation et ne lit pas les options des variables d'environnement B<XZ_DEFAULTS> et B<XZ_OPT>. B<xzdec> ne gère pas l'affichage d'information sur la progression du traitement : envoyer B<SIGINFO> à B<xzdec> ne fait rien, mais envoyer B<SIGUSR1> termine le processus au lieu d'afficher de l'information sur la progression."
#. 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 ""
-"Ignoré pour la compatibilité avec B<xz>(1), B<xzdec> écrit toujours les "
-"données décompressées sur la sortie standard."
+#: ../src/xzdec/xzdec.1
+msgid "Ignored for B<xz>(1) compatibility. B<xzdec> supports only decompression."
+msgstr "Ignoré pour la compatibilité avec B<xz>(1), B<xzdec> ne gère que la décompression."
#. 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 ""
-"Spécifier cela une fois ne fait rien, car B<xzdec> n'affiche jamais aucun "
-"avertissement ou notification. Spécifier cela deux fois pour supprimer les "
-"erreurs."
+#: ../src/xzdec/xzdec.1
+msgid "Ignored for B<xz>(1) compatibility. B<xzdec> never creates or removes any files."
+msgstr "Ignoré pour la compatibilité avec B<xz>(1), B<xzdec> ne crée ni ne supprime jamais aucun fichier."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:96
-msgid ""
-"Ignored for B<xz>(1) compatibility. B<xzdec> never uses the exit status 2."
-msgstr ""
-"Ignoré pour la compatibilité avec B<xz>(1), B<xzdec> n'utilise jamais le "
-"satut de sortie 2."
+#: ../src/xzdec/xzdec.1
+msgid "Ignored for B<xz>(1) compatibility. B<xzdec> always writes the decompressed data to standard output."
+msgstr "Ignoré pour la compatibilité avec B<xz>(1), B<xzdec> écrit toujours les données décompressées sur la sortie standard."
+
+#. type: Plain text
+#: ../src/xzdec/xzdec.1
+msgid "Specifying this once does nothing since B<xzdec> never displays any warnings or notices. Specify this twice to suppress errors."
+msgstr "Spécifier cela une fois ne fait rien, car B<xzdec> n'affiche jamais aucun avertissement ou notification. Spécifier cela deux fois pour supprimer les erreurs."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:99
+#: ../src/xzdec/xzdec.1
+msgid "Ignored for B<xz>(1) compatibility. B<xzdec> never uses the exit status 2."
+msgstr "Ignoré pour la compatibilité avec B<xz>(1), B<xzdec> n'utilise jamais le satut de sortie 2."
+
+#. type: Plain text
+#: ../src/xzdec/xzdec.1
msgid "Display a help message and exit successfully."
msgstr "Afficher un message d'aide et quitter."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:104
+#: ../src/xzdec/xzdec.1
msgid "Display the version number of B<xzdec> and liblzma."
msgstr "Afficher le numéro de version de B<xzdec> et liblzma."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:108
+#: ../src/xzdec/xzdec.1
msgid "All was good."
msgstr "Tout s'est bien passé."
#. 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 ""
-"A la différence de B<xz>(1),B<xzdec> n'a pas de messages d'avertissement, et "
-"donc le statut de sortie 2 n'est pas utilisé par B<xzdec>."
+#: ../src/xzdec/xzdec.1
+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 "A la différence de B<xz>(1),B<xzdec> n'a pas de messages d'avertissement, et donc le statut de sortie 2 n'est pas utilisé par B<xzdec>."
#. 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 ""
-"Utilisez B<xz>(1) au lieu de B<xzdec> ou B<lzmadec> pour un usage normal de "
-"tous les jours. B<xzdec> ou B<lzmadec> ne sont utiles que pour les "
-"situations où il est important d'avoir un plus petit décompresseur que le "
-"B<xz>(1) complet."
+#: ../src/xzdec/xzdec.1
+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 "Utilisez B<xz>(1) au lieu de B<xzdec> ou B<lzmadec> pour un usage normal de tous les jours. B<xzdec> ou B<lzmadec> ne sont utiles que pour les situations où il est important d'avoir un plus petit décompresseur que le B<xz>(1) complet."
#. 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> et B<lzmadec> ne sont en fait pas vraiment si petits. La taille "
-"peut être encore réduite en abandonnant des fonctionnalités de liblzma au "
-"moment de la compilation, mais cela ne devrait pas être fait pour des "
-"exécutables distribués sur des systèmes d'exploitation classique non "
-"embarqués. Si vous avez besoin d'un décompresseur vraiment petit, pensez à "
-"utiliser XZ Embedded."
+#: ../src/xzdec/xzdec.1
+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> et B<lzmadec> ne sont en fait pas vraiment si petits. La taille peut être encore réduite en abandonnant des fonctionnalités de liblzma au moment de la compilation, mais cela ne devrait pas être fait pour des exécutables distribués sur des systèmes d'exploitation classique non embarqués. Si vous avez besoin d'un décompresseur vraiment petit, pensez à utiliser XZ Embedded."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:145 ../src/lzmainfo/lzmainfo.1:60
+#: ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
msgid "B<xz>(1)"
msgstr "B<xz>(1)"
#. type: TH
-#: ../src/lzmainfo/lzmainfo.1:7
+#: ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "LZMAINFO"
msgstr "LZMAINFO"
#. type: TH
-#: ../src/lzmainfo/lzmainfo.1:7 ../src/scripts/xzmore.1:7
+#: ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "2013-06-30"
msgstr "30-06-2013"
#. type: Plain text
-#: ../src/lzmainfo/lzmainfo.1:10
+#: ../src/lzmainfo/lzmainfo.1
msgid "lzmainfo - show information stored in the .lzma file header"
-msgstr ""
-"lzmainfo - Afficher l'information stockée dans l'en-tête du fichier .lzma"
+msgstr "lzmainfo - Afficher l'information stockée dans l'en-tête du fichier .lzma"
#. type: Plain text
-#: ../src/lzmainfo/lzmainfo.1:15
+#: ../src/lzmainfo/lzmainfo.1
msgid "B<lzmainfo> [B<--help>] [B<--version>] [I<file...>]"
msgstr "B<lzmainfo> [B<--help>] [B<--version>] [I<fichier...>]"
#. 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> affiche l'information stockée dans l'en-tête du fichier B<."
-"lzma>. Il lit les 13 premiers octets du I<fichier> indiqué, décode l'en-"
-"tête, et l'écrit sur la sortie standard dans un format lisible par un "
-"humain. Si aucun I<fichier> n'est spécifié ou si I<fichier> est B<->, "
-"l'entrée standard est lue."
+#: ../src/lzmainfo/lzmainfo.1
+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> affiche l'information stockée dans l'en-tête du fichier B<.lzma>. Il lit les 13 premiers octets du I<fichier> indiqué, décode l'en-tête, et l'écrit sur la sortie standard dans un format lisible par un humain. Si aucun I<fichier> n'est spécifié ou si I<fichier> est B<->, l'entrée standard est lue."
#. 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 ""
-"Habituellement l'information la plus interressante est la taille non "
-"compressée et la taille du dictionnaire. La taille ne peut être affichée que "
-"si le fichier est dans la variante du format B<.lzma> qui n'est pas en flux. "
-"La quantité de mémoire requise pour décompresser le fichier est de quelques "
-"douzaines de kilooctets en plus de la taille du dictionnaire."
+#: ../src/lzmainfo/lzmainfo.1
+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 "Habituellement l'information la plus interressante est la taille non compressée et la taille du dictionnaire. La taille ne peut être affichée que si le fichier est dans la variante du format B<.lzma> qui n'est pas en flux. La quantité de mémoire requise pour décompresser le fichier est de quelques douzaines de kilooctets en plus de la taille du dictionnaire."
#. 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> est inclus dans les utilitaires XZ essentiellement pour des "
-"besoins de rétrocompatibilité avec les utilitaires LZMA."
+#: ../src/lzmainfo/lzmainfo.1
+msgid "B<lzmainfo> is included in XZ Utils primarily for backward compatibility with LZMA Utils."
+msgstr "B<lzmainfo> est inclus dans les utilitaires XZ essentiellement pour des besoins de rétrocompatibilité avec les utilitaires LZMA."
#. type: SH
-#: ../src/lzmainfo/lzmainfo.1:51 ../src/scripts/xzdiff.1:74
+#: ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "BUGS"
msgstr "BOGUES"
#. 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> utilise B<MB> alors que le suffixe correct devrait être "
-"B<MiB>(2^20 octets). Cela pour garder la sortie compatible avec les "
-"utilitaires LZMA."
+#: ../src/lzmainfo/lzmainfo.1
+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> utilise B<MB> alors que le suffixe correct devrait être B<MiB>(2^20 octets). Cela pour garder la sortie compatible avec les utilitaires LZMA."
#. type: TH
-#: ../src/scripts/xzdiff.1:9
+#: ../src/scripts/xzdiff.1
#, no-wrap
msgid "XZDIFF"
msgstr "XZDIFF"
#. type: TH
-#: ../src/scripts/xzdiff.1:9
-#, fuzzy, no-wrap
-#| msgid "2013-06-30"
-msgid "2021-06-04"
-msgstr "30-06-2013"
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1
+#, no-wrap
+msgid "2024-02-13"
+msgstr ""
#. type: Plain text
-#: ../src/scripts/xzdiff.1:12
+#: ../src/scripts/xzdiff.1
msgid "xzcmp, xzdiff, lzcmp, lzdiff - compare compressed files"
msgstr "xzcmp, xzdiff, lzcmp, lzdiff - Comparer des fichiers compressés."
#. type: Plain text
-#: ../src/scripts/xzdiff.1:15
-msgid "B<xzcmp> [I<cmp_options>] I<file1> [I<file2>]"
-msgstr "B<xzcmp> [I<cmp_options>] I<fichier1> [I<fichier2>]"
+#: ../src/scripts/xzdiff.1
+#, fuzzy
+#| msgid "B<xz> [I<option...>] [I<file...>]"
+msgid "B<xzcmp> [I<option...>] I<file1> [I<file2>]"
+msgstr "B<xz> [I<option...>] [I<fichier...>]"
#. type: Plain text
-#: ../src/scripts/xzdiff.1:18
-msgid "B<xzdiff> [I<diff_options>] I<file1> [I<file2>]"
-msgstr "B<xzdiff> [I<diff_options>] I<fichier1> [I<fichier2>]"
+#: ../src/scripts/xzdiff.1
+msgid "B<xzdiff> \\&..."
+msgstr ""
#. type: Plain text
-#: ../src/scripts/xzdiff.1:21
-msgid "B<lzcmp> [I<cmp_options>] I<file1> [I<file2>]"
-msgstr "B<lzcmp> [I<cmp_options>] I<fichier1> [I<fichier2>]"
+#: ../src/scripts/xzdiff.1
+msgid "B<lzcmp> \\&..."
+msgstr ""
#. type: Plain text
-#: ../src/scripts/xzdiff.1:24
-msgid "B<lzdiff> [I<diff_options>] I<file1> [I<file2>]"
-msgstr "B<lzdiff> [I<diff_options>] I<fichier1> [I<fichier2>]"
+#: ../src/scripts/xzdiff.1
+msgid "B<lzdiff> \\&..."
+msgstr ""
#. type: Plain text
-#: ../src/scripts/xzdiff.1:59
-#, fuzzy
-#| 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."
-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), B<lzop>(1), or "
-"B<zstd>(1). All options specified are passed directly to B<cmp>(1) or "
-"B<diff>(1). If only one file is specified, then the files compared are "
-"I<file1> (which must have a suffix of a supported compression format) and "
-"I<file1> from which the compression format suffix has been stripped. If two "
-"files are specified, then they are uncompressed if necessary and fed to "
-"B<cmp>(1) or B<diff>(1). The exit status from B<cmp>(1) or B<diff>(1) is "
-"preserved unless a decompression error occurs; then exit status is 2."
-msgstr ""
-"B<xzcmp> et B<xzdiff> invoquent B<cmp>(1) ou B<diff>(1) sur les fichiers "
-"compressés avec B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1) ou B<lzop>(1). "
-"Toutes les options spécifiées sont passées directement à B<cmp>(1) ou "
-"B<diff>(1). Si seulement un fichier est indiqué alors les fichiers comparés "
-"sont I<fichier1> (lequel doit avoir un suffixe de format de compression pris "
-"en charge) et I<fichier1> duquel le suffixe de format a été enlevé. Si deux "
-"fichiers sont spécifiés, ils sont décompressés si nécessaire et envoyés à "
-"B<cmp>(1) ou B<diff>(1). Le statut de sortie de B<cmp>(1) ou B<diff>(1) est "
-"préservé."
-
-#. type: Plain text
-#: ../src/scripts/xzdiff.1:65
-msgid ""
-"The names B<lzcmp> and B<lzdiff> are provided for backward compatibility "
-"with LZMA Utils."
+#: ../src/scripts/xzdiff.1
+msgid "B<xzcmp> and B<xzdiff> compare uncompressed contents of two files. Uncompressed data and options are passed to B<cmp>(1) or B<diff>(1) unless B<--help> or B<--version> is specified."
msgstr ""
-"Les noms B<lzcmp> et B<lzdiff> sont fournis pour des besoins de "
-"rétrocompatibilité avec les Utilitaires LZMA."
#. type: Plain text
-#: ../src/scripts/xzdiff.1:74
-#, fuzzy
-#| msgid ""
-#| "B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), "
-#| "B<zdiff>(1)"
-msgid ""
-"B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), "
-"B<zstd>(1), B<zdiff>(1)"
+#: ../src/scripts/xzdiff.1
+msgid "If both I<file1> and I<file2> are specified, they can be uncompressed files or files in formats that B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), or B<lz4>(1) can decompress. The required decompression commands are determined from the filename suffixes of I<file1> and I<file2>. A file with an unknown suffix is assumed to be either uncompressed or in a format that B<xz>(1) can decompress."
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:79
-msgid ""
-"Messages from the B<cmp>(1) or B<diff>(1) programs refer to temporary "
-"filenames instead of those specified."
+#: ../src/scripts/xzdiff.1
+msgid "If only one filename is provided, I<file1> must have a suffix of a supported compression format and the name for I<file2> is assumed to be I<file1> with the compression format suffix removed."
msgstr ""
-"Les messages des programmes B<cmp>(1) ou B<diff>(1) se réfèrent à des noms "
-"de fichiers temporaires et non à ceux spécifiés."
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1
+#, fuzzy
+#| msgid "The command named B<lzless> is provided for backward compatibility with LZMA Utils."
+msgid "The commands B<lzcmp> and B<lzdiff> are provided for backward compatibility with LZMA Utils."
+msgstr "La commande nommée B<lzless> est fournie pour la rétrocompatibilité avec les utilitaires LZMA."
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1
+msgid "If a decompression error occurs, the exit status is B<2>. Otherwise the exit status of B<cmp>(1) or B<diff>(1) is used."
+msgstr ""
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1
+#, fuzzy
+#| 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)"
+msgid "B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), B<lz4>(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: TH
-#: ../src/scripts/xzgrep.1:9
+#: ../src/scripts/xzgrep.1
#, no-wrap
msgid "XZGREP"
msgstr "XZGREP"
-#. type: TH
-#: ../src/scripts/xzgrep.1:9
-#, no-wrap
-msgid "2022-07-19"
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "xzgrep - search possibly-compressed files for patterns"
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzgrep.1:12
-msgid "xzgrep - search compressed files for a regular expression"
+#: ../src/scripts/xzgrep.1
+#, fuzzy
+#| msgid "B<xz> [I<option...>] [I<file...>]"
+msgid "B<xzgrep> [I<option...>] [I<pattern_list>] [I<file...>]"
+msgstr "B<xz> [I<option...>] [I<fichier...>]"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<xzegrep> \\&..."
msgstr ""
-"xzgrep - Chercher une expression rationnelle dans des fichiers compressés"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:18
-#, fuzzy
-#| msgid "B<xzgrep> [I<grep_options>] [B<-e>] I<pattern> I<file>..."
-msgid "B<xzgrep> [I<grep_options>] [B<-e>] I<pattern> [I<file...>]"
-msgstr "B<xzgrep> [I<grep_options>] [B<-e>] I<motif> I<fichier>..."
+#: ../src/scripts/xzgrep.1
+msgid "B<xzfgrep> \\&..."
+msgstr ""
#. type: Plain text
-#: ../src/scripts/xzgrep.1:21
+#: ../src/scripts/xzgrep.1
+msgid "B<lzgrep> \\&..."
+msgstr ""
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<lzegrep> \\&..."
+msgstr ""
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<lzfgrep> \\&..."
+msgstr ""
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<xzgrep> invokes B<grep>(1) on uncompressed contents of files. The formats of the I<files> are determined from the filename suffixes. Any I<file> with a suffix supported by B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), or B<lz4>(1) will be decompressed; all other files are assumed to be uncompressed."
+msgstr ""
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "If no I<files> are specified or I<file> is B<-> then standard input is read. When reading from standard input, only files supported by B<xz>(1) are decompressed. Other files are assumed to be in uncompressed form already."
+msgstr ""
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "Most I<options> of B<grep>(1) are supported. However, the following options are not supported:"
+msgstr ""
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
#, fuzzy
-#| msgid "B<xzegrep> ..."
-msgid "B<xzegrep> \\&..."
-msgstr "B<xzegrep> ..."
+#| msgid "B<-v>, B<--verbose>"
+msgid "B<-r>, B<--recursive>"
+msgstr "B<-v>, B<--verbose>"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:24
+#: ../src/scripts/xzgrep.1
#, fuzzy
-#| msgid "B<xzfgrep> ..."
-msgid "B<xzfgrep> \\&..."
-msgstr "B<xzfgrep> ..."
+#| msgid "B<-f>, B<--force>"
+msgid "B<-R>, B<--dereference-recursive>"
+msgstr "B<-f>, B<--force>"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:27
+#: ../src/scripts/xzgrep.1
#, fuzzy
-#| msgid "B<lzgrep> ..."
-msgid "B<lzgrep> \\&..."
-msgstr "B<lzgrep> ..."
+#| msgid "B<-V>, B<--version>"
+msgid "B<-d>, B<--directories=>I<action>"
+msgstr "B<-V>, B<--version>"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:30
+#: ../src/scripts/xzgrep.1
#, fuzzy
-#| msgid "B<lzegrep> ..."
-msgid "B<lzegrep> \\&..."
-msgstr "B<lzegrep> ..."
+#| msgid "B<-l>, B<--list>"
+msgid "B<-Z>, B<--null>"
+msgstr "B<-l>, B<--list>"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:33
+#: ../src/scripts/xzgrep.1
#, fuzzy
-#| msgid "B<lzfgrep> ..."
-msgid "B<lzfgrep> \\&..."
-msgstr "B<lzfgrep> ..."
+#| msgid "B<-l>, B<--list>"
+msgid "B<-z>, B<--null-data>"
+msgstr "B<-l>, B<--list>"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:49
+#: ../src/scripts/xzgrep.1
#, fuzzy
-#| 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)."
-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), "
-"B<lzop>(1), or B<zstd>(1). All options specified are passed directly to "
-"B<grep>(1)."
+#| msgid "B<--files>[B<=>I<file>]"
+msgid "B<--include=>I<glob>"
+msgstr "B<--files>[B<=>I<fichier>]"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<--exclude=>I<glob>"
msgstr ""
-"B<xzgrep> invoque B<grep>(1) sur des I<fichiers> qui ont pu être compressés "
-"ou décompressés que ce soit avec B<xz>(1), B<lzma>(1), B<gzip>(1), "
-"B<bzip2>(1) ou B<lzop>(1). Toutes les options spécifiées sont passées "
-"directement à B<grep>(1)."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:62
+#: ../src/scripts/xzgrep.1
#, fuzzy
-#| 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."
-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), B<lzop>(1), and B<zstd>(1) compressed files are not supported."
+#| msgid "B<--files>[B<=>I<file>]"
+msgid "B<--exclude-from=>I<file>"
+msgstr "B<--files>[B<=>I<fichier>]"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<--exclude-dir=>I<glob>"
msgstr ""
-"Si aucun I<fichier> n'est spécifié, alors l'entrée standard est décompressée "
-"si nécessaire et alimente B<grep>(1). Lorsque c'est l'entrée standard qui "
-"est lue, les fichiers compressés B<gzip>(1), B<bzip2>(1) et B<lzop>(1) ne "
-"sont pas pris en charge."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:81
-#, fuzzy
-#| 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."
-msgid ""
-"If B<xzgrep> is invoked as B<xzegrep> or B<xzfgrep> then B<grep -E> or "
-"B<grep -F> is used instead of B<grep>(1). The same applies to names "
-"B<lzgrep>, B<lzegrep>, and B<lzfgrep>, which are provided for backward "
-"compatibility with LZMA Utils."
+#: ../src/scripts/xzgrep.1
+msgid "B<xzegrep> is an alias for B<xzgrep -E>. B<xzfgrep> is an alias for B<xzgrep -F>."
msgstr ""
-"Si B<xzgrep> est invoqué comme B<xzegrep> ou B<xzfgrep>, alors B<egrep>(1) "
-"ou B<fgrep>(1) est utilisé à la place de B<grep>(1). La même chose "
-"s'applique aux noms B<lzgrep>, B<lzegrep> et B<lzfgrep> qui sont fournis "
-"pour la rétrocompatibilité avec les Utilitaires LZMA."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:86
-msgid ""
-"At least one match was found from at least one of the input files. No "
-"errors occurred."
+#: ../src/scripts/xzgrep.1
+#, fuzzy
+#| msgid "The command named B<lzless> is provided for backward compatibility with LZMA Utils."
+msgid "The commands B<lzgrep>, B<lzegrep>, and B<lzfgrep> are provided for backward compatibility with LZMA Utils."
+msgstr "La commande nommée B<lzless> est fournie pour la rétrocompatibilité avec les utilitaires LZMA."
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "At least one match was found from at least one of the input files. No errors occurred."
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzgrep.1:90
+#: ../src/scripts/xzgrep.1
msgid "No matches were found from any of the input files. No errors occurred."
msgstr ""
#. type: TP
-#: ../src/scripts/xzgrep.1:90
+#: ../src/scripts/xzgrep.1
#, no-wrap
msgid "E<gt>1"
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzgrep.1:94
+#: ../src/scripts/xzgrep.1
msgid "One or more errors occurred. It is unknown if matches were found."
msgstr ""
#. type: TP
-#: ../src/scripts/xzgrep.1:95
+#: ../src/scripts/xzgrep.1
#, no-wrap
msgid "B<GREP>"
msgstr "B<GREP>"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:106
-#, fuzzy
-#| 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)."
-msgid ""
-"If the B<GREP> environment variable is set, B<xzgrep> uses it instead of "
-"B<grep>(1), B<grep -E>, or B<grep -F>."
+#: ../src/scripts/xzgrep.1
+msgid "If B<GREP> is set to a non-empty value, it is used instead of B<grep>, B<grep -E>, or B<grep -F>."
msgstr ""
-"Si la variable d'environnement B<GREP> est définie, B<xzgrep> l'utilise à la "
-"place de B<grep>(1), B<egrep>(1) ou B<fgrep>(1)."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:113
+#: ../src/scripts/xzgrep.1
#, fuzzy
-#| msgid ""
-#| "B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zgrep>(1)"
-msgid ""
-"B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), "
-"B<zgrep>(1)"
-msgstr "B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zgrep>(1)"
+#| 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)"
+msgid "B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), B<lz4>(1), B<zgrep>(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: TH
-#: ../src/scripts/xzless.1:10
+#: ../src/scripts/xzless.1
#, no-wrap
msgid "XZLESS"
msgstr "XZLESS"
#. type: TH
-#: ../src/scripts/xzless.1:10
+#: ../src/scripts/xzless.1 ../src/scripts/xzmore.1
#, no-wrap
-msgid "2010-09-27"
-msgstr "27-09-2010"
+msgid "2024-02-12"
+msgstr ""
#. type: Plain text
-#: ../src/scripts/xzless.1:13
+#: ../src/scripts/xzless.1
msgid "xzless, lzless - view xz or lzma compressed (text) files"
-msgstr ""
-"xzless, lzless - Voir le contenu des fichiers (texte) compressés xz ou lzma"
+msgstr "xzless, lzless - Voir le contenu des fichiers (texte) compressés xz ou lzma"
#. type: Plain text
-#: ../src/scripts/xzless.1:16
+#: ../src/scripts/xzless.1
msgid "B<xzless> [I<file>...]"
msgstr "B<xzless> [I<fichier>...]"
#. type: Plain text
-#: ../src/scripts/xzless.1:19
+#: ../src/scripts/xzless.1
msgid "B<lzless> [I<file>...]"
msgstr "B<lzless> [I<fichier>...]"
#. 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."
+#: ../src/scripts/xzless.1
+msgid "B<xzless> is a filter that displays text from compressed files to a terminal. Files supported by B<xz>(1) are decompressed; other files are assumed to be in uncompressed form already. If no I<files> are given, B<xzless> reads from standard input."
msgstr ""
-"B<xzless> est un filtre qui affiche le contenu de fichiers compressés dans "
-"un terminal. Cela fonctionne avec les fichiers compressés avec B<xz>(1) ou "
-"B<lzma>(1). Si aucun I<fichier> n'est donné, B<xzless> lit depuis l'entrée "
-"standard."
#. 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> utilise B<less>(1) pour afficher sa sortie. Contrairement à "
-"B<xzmore>, son choix d'afficheur ne peut pas être modifié en indiquant une "
-"variable d'environnement. Les commandes sont basées sur B<more>(1) et "
-"B<vi>(1) et permettent des déplacements en avant et en arrière et des "
-"recherches. Voir le manuel de B<less>(1) pour plus d'information."
+#: ../src/scripts/xzless.1
+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> utilise B<less>(1) pour afficher sa sortie. Contrairement à B<xzmore>, son choix d'afficheur ne peut pas être modifié en indiquant une variable d'environnement. Les commandes sont basées sur B<more>(1) et B<vi>(1) et permettent des déplacements en avant et en arrière et des recherches. Voir le manuel de B<less>(1) pour plus d'information."
#. type: Plain text
-#: ../src/scripts/xzless.1:52
-msgid ""
-"The command named B<lzless> is provided for backward compatibility with LZMA "
-"Utils."
-msgstr ""
-"La commande nommée B<lzless> est fournie pour la rétrocompatibilité avec les "
-"utilitaires LZMA."
+#: ../src/scripts/xzless.1
+msgid "The command named B<lzless> is provided for backward compatibility with LZMA Utils."
+msgstr "La commande nommée B<lzless> est fournie pour la rétrocompatibilité avec les utilitaires LZMA."
#. type: TP
-#: ../src/scripts/xzless.1:53
+#: ../src/scripts/xzless.1
#, 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 ""
-"Une liste de caractères spéciaux pour l'interpréteur. Définis par B<xzless> "
-"à moins qu'ils ne l'aient déjà été dans l'environnement."
+#: ../src/scripts/xzless.1
+msgid "A list of characters special to the shell. Set by B<xzless> unless it is already set in the environment."
+msgstr "Une liste de caractères spéciaux pour l'interpréteur. Définis par B<xzless> à moins qu'ils ne l'aient déjà été dans l'environnement."
#. type: TP
-#: ../src/scripts/xzless.1:59
+#: ../src/scripts/xzless.1
#, 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 ""
-"Définir en ligne de commande le décompresseur B<xz>(1) à invoquer pour "
-"préparer les fichiers en entrée pour B<less>(1)."
+#: ../src/scripts/xzless.1
+msgid "Set to a command line to invoke the B<xz>(1) decompressor for preprocessing the input files to B<less>(1)."
+msgstr "Définir en ligne de commande le décompresseur B<xz>(1) à invoquer pour préparer les fichiers en entrée pour B<less>(1)."
#. type: Plain text
-#: ../src/scripts/xzless.1:69
+#: ../src/scripts/xzless.1
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
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "XZMORE"
msgstr "XZMORE"
#. type: Plain text
-#: ../src/scripts/xzmore.1:10
+#: ../src/scripts/xzmore.1
msgid "xzmore, lzmore - view xz or lzma compressed (text) files"
-msgstr ""
-"xzmore, lzmore - Voir le contenu des fichiers (texte) compressés xz ou lzma"
+msgstr "xzmore, lzmore - Voir le contenu des fichiers (texte) compressés xz ou lzma"
#. type: Plain text
-#: ../src/scripts/xzmore.1:13
-msgid "B<xzmore> [I<file...>]"
-msgstr "B<xzmore> [I<fichier...>]"
+#: ../src/scripts/xzmore.1
+#, fuzzy
+#| msgid "B<xzless> [I<file>...]"
+msgid "B<xzmore> [I<file>...]"
+msgstr "B<xzless> [I<fichier>...]"
#. type: Plain text
-#: ../src/scripts/xzmore.1:16
-msgid "B<lzmore> [I<file...>]"
-msgstr "B<lzmore> [I<fichier...>]"
+#: ../src/scripts/xzmore.1
+#, fuzzy
+#| msgid "B<lzless> [I<file>...]"
+msgid "B<lzmore> [I<file>...]"
+msgstr "B<lzless> [I<fichier>...]"
#. 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."
+#: ../src/scripts/xzmore.1
+msgid "B<xzmore> displays text from compressed files to a terminal using B<more>(1). Files supported by B<xz>(1) are decompressed; other files are assumed to be in uncompressed form already. If no I<files> are given, B<xzmore> reads from standard input. See the B<more>(1) manual for the keyboard commands."
msgstr ""
-"B<xzmore> est un filtre qui permet d'examiner le contenu des fichiers texte "
-"compressés B<xz>(1) ou B<lzma>(1), une page d'écran à la fois, sur un "
-"terminal écran."
#. 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."
+#: ../src/scripts/xzmore.1
+msgid "Note that scrolling backwards might not be possible depending on the implementation of B<more>(1). This is because B<xzmore> uses a pipe to pass the decompressed data to B<more>(1). B<xzless>(1) uses B<less>(1) which provides more advanced features."
msgstr ""
-"Pour utiliser un afficheur autre que B<more>, l'afficheur par défaut, "
-"définissez la variable d'environnement B<PAGER> avec le nom du programme "
-"souhaité. Le nom B<lzmore> est fourni pour la rétrocompatibilité avec les "
-"utilitaires LZMA."
-
-#. type: TP
-#: ../src/scripts/xzmore.1:33
-#, no-wrap
-msgid "B<e> or B<q>"
-msgstr "B<e> ou 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 ""
-"Lorsque l'invite --More--(prochain fichier : I<fichier>) est affiché, cette "
-"commande force B<xzmore> à quitter."
+#: ../src/scripts/xzmore.1
+#, fuzzy
+#| msgid "The command named B<lzless> is provided for backward compatibility with LZMA Utils."
+msgid "The command B<lzmore> is provided for backward compatibility with LZMA Utils."
+msgstr "La commande nommée B<lzless> est fournie pour la rétrocompatibilité avec les utilitaires LZMA."
#. type: TP
-#: ../src/scripts/xzmore.1:40
+#: ../src/scripts/xzmore.1
#, 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."
+msgid "B<PAGER>"
msgstr ""
-"Lorsque l'invite --More--(prochain fichier : I<fichier>) est affiché, cette "
-"commande force B<xzmore> à ignorer le prochain fichier et continuer."
#. 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)."
+#: ../src/scripts/xzmore.1
+msgid "If B<PAGER> is set, its value is used as the pager instead of B<more>(1)."
msgstr ""
-"Pour une liste des commandes clavier prises en charge lors de la lecture du "
-"contenu d'un fichier, référez vous au manuel de l'afficheur (pager) que vous "
-"utilisez, habituellement B<more>(1)."
#. type: Plain text
-#: ../src/scripts/xzmore.1:55
+#: ../src/scripts/xzmore.1
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)"
-
-#, no-wrap
-#~ msgid "2020-02-01"
-#~ msgstr "1er février 2020"
-
-#~ msgid ""
-#~ "Display an error and exit if the compression settings exceed the memory "
-#~ "usage limit. The default is to adjust the settings downwards so that the "
-#~ "memory usage limit is not exceeded. Automatic adjusting is always "
-#~ "disabled when creating raw streams (B<--format=raw>)."
-#~ msgstr ""
-#~ "Afficher une erreur et quitter si les réglages de compression dépassent "
-#~ "la limite d'utilisation de la mémoire. Le comportement par défaut "
-#~ "consiste à ajuster les réglages vers le bas pour que l'utilisation de la "
-#~ "mémoire ne soit pas dépassée. L'ajustement automatique est toujours "
-#~ "désactivé lors de la création de flux bruts (B<--format=raw>)."
-
-#~ 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 ""
-#~ "Il est possible d'appliquer un filtre BCJ sur l'ensemble d'un "
-#~ "exécutable ; il n'est pas nécessaire de l'appliquer uniquement sur la "
-#~ "section exécutable. Appliquer un filtre BCJ sur une archive contenant à "
-#~ "la fois des fichiers exécutables et des fichiers non-exécutables "
-#~ "pourrait, ou non, donner de bons résultats, donc il n'est généralement "
-#~ "pas bon d'appliquer aveuglémént un filtre BCJ lors de la compression de "
-#~ "paquets binaires pour leur distribution."
-
-#~ 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 ""
-#~ "Ces filtres BCJ sont très rapides et utilisent une quantité insignifiante "
-#~ "de mémoire. Si un filtre BCJ améliore le taux de compression d'un "
-#~ "fichier, il peut en même temps améliorer la vitesse de décompression. "
-#~ "Cela parce que sur un même matériel, la vitesse de décompression de LZMA2 "
-#~ "est approximativement un nombre fixe d'octets de données compressées par "
-#~ "seconde."
-
-#~ 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 ""
-#~ "L'application d'un filtre BCJ sur une archive contenant plusieurs "
-#~ "exécutables similaires peut rendre le taux de compression moins bon que "
-#~ "si l'on n'utilisait pas de filtre BCJ. Cela est dû au fait que le filtre "
-#~ "BCJ ne détecte pas les limites des fichiers exécutables et ne remet pas à "
-#~ "zéro le compteur de conversion d'adresse pour chaque exécutable."
-
-#~ 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 ""
-#~ "Les deux problèmes ci-dessus seront réglés dans le futur dans un nouveau "
-#~ "filtre. Les vieux filtres BCJ seront toujours utiles dans les systèmes "
-#~ "embarqués, car le décodeur du nouveau filtre sera plus gros et utilisera "
-#~ "plus de mémoire."
-
-#~ msgid "Different instruction sets have different alignment:"
-#~ msgstr "Les différents jeux d'instructions ont un alignement différent :"
-
-#, no-wrap
-#~ msgid "Little endian only"
-#~ msgstr "Petit-boutiste seulement"
-
-#, no-wrap
-#~ msgid "Big or little endian"
-#~ msgstr "Grand ou petit boutiste"
-
-#, no-wrap
-#~ msgid "2011-03-19"
-#~ msgstr "19-03-2011"
diff --git a/po4a/ko.po b/po4a/ko.po
index d472175..2e999d8 100644
--- a/po4a/ko.po
+++ b/po4a/ko.po
@@ -1,12 +1,13 @@
+# SPDX-License-Identifier: 0BSD
# Korean translation for the xz-man
-# This file is put in the public domain.
-# Seong-ho Cho <darkcircle.0426@gmail.com>, 2023.
+# This file is published under the BSD Zero Clause License..
+# Seong-ho Cho <darkcircle.0426@gmail.com>, 2023, 2024.
#
msgid ""
msgstr ""
-"Project-Id-Version: xz-man 5.4.4-pre1\n"
-"POT-Creation-Date: 2023-11-01 20:27+0800\n"
-"PO-Revision-Date: 2023-07-20 11:01+0900\n"
+"Project-Id-Version: xz-man 5.6.0-pre2\n"
+"POT-Creation-Date: 2024-05-29 17:45+0300\n"
+"PO-Revision-Date: 2024-02-21 00:14+0900\n"
"Last-Translator: Seong-ho Cho <darkcircle.0426@gmail.com>\n"
"Language-Team: Korean <translation-team-ko@googlegroups.com>\n"
"Language: ko\n"
@@ -18,4631 +19,3213 @@ msgstr ""
"X-Generator: Poedit 3.0.1\n"
#. type: TH
-#: ../src/xz/xz.1:9
+#: ../src/xz/xz.1
#, no-wrap
msgid "XZ"
msgstr "XZ"
#. type: TH
-#: ../src/xz/xz.1:9
-#, no-wrap
-msgid "2023-07-17"
-msgstr "2023-07-17"
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
+#, fuzzy, no-wrap
+#| msgid "2024-02-25"
+msgid "2024-04-08"
+msgstr "2024-02-25"
#. type: TH
-#: ../src/xz/xz.1:9 ../src/xzdec/xzdec.1:7 ../src/lzmainfo/lzmainfo.1:7
-#: ../src/scripts/xzdiff.1:9 ../src/scripts/xzgrep.1:9
-#: ../src/scripts/xzless.1:10 ../src/scripts/xzmore.1:7
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "Tukaani"
msgstr "Tukaani"
#. type: TH
-#: ../src/xz/xz.1:9 ../src/xzdec/xzdec.1:7 ../src/lzmainfo/lzmainfo.1:7
-#: ../src/scripts/xzdiff.1:9 ../src/scripts/xzgrep.1:9
-#: ../src/scripts/xzless.1:10 ../src/scripts/xzmore.1:7
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "XZ Utils"
msgstr "XZ 유틸리티"
#. type: SH
-#: ../src/xz/xz.1:11 ../src/xzdec/xzdec.1:8 ../src/lzmainfo/lzmainfo.1:8
-#: ../src/scripts/xzdiff.1:10 ../src/scripts/xzgrep.1:10
-#: ../src/scripts/xzless.1:11 ../src/scripts/xzmore.1:8
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "NAME"
msgstr "이름"
#. type: Plain text
-#: ../src/xz/xz.1:13
-msgid ""
-"xz, unxz, xzcat, lzma, unlzma, lzcat - Compress or decompress .xz and .lzma "
-"files"
-msgstr ""
-"xz, unxz, xzcat, lzma, unlzma, lzcat - .xz 파일과 .lzma 파일을 압축 또는 압"
-"축 해제합니다"
+#: ../src/xz/xz.1
+msgid "xz, unxz, xzcat, lzma, unlzma, lzcat - Compress or decompress .xz and .lzma files"
+msgstr "xz, unxz, xzcat, lzma, unlzma, lzcat - .xz 파일과 .lzma 파일을 압축 또는 압축 해제합니다"
#. type: SH
-#: ../src/xz/xz.1:14 ../src/xzdec/xzdec.1:10 ../src/lzmainfo/lzmainfo.1:10
-#: ../src/scripts/xzdiff.1:12 ../src/scripts/xzgrep.1:12
-#: ../src/scripts/xzless.1:13 ../src/scripts/xzmore.1:10
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "SYNOPSIS"
msgstr "요약"
#. type: Plain text
-#: ../src/xz/xz.1:18
+#: ../src/xz/xz.1
msgid "B<xz> [I<option...>] [I<file...>]"
-msgstr "B<xz> [I<<옵션>...>] [I<E<lt>파일E<gt>...>]"
+msgstr "B<xz> [I<E<lt>옵션E<gt>...>] [I<E<lt>파일E<gt>...>]"
#. type: SH
-#: ../src/xz/xz.1:19
+#: ../src/xz/xz.1
#, no-wrap
msgid "COMMAND ALIASES"
msgstr "명령 별칭"
#. type: Plain text
-#: ../src/xz/xz.1:23
+#: ../src/xz/xz.1
msgid "B<unxz> is equivalent to B<xz --decompress>."
msgstr "B<unxz> 명령은 B<xz --decompress> 명령과 동일합니다."
#. type: Plain text
-#: ../src/xz/xz.1:27
+#: ../src/xz/xz.1
msgid "B<xzcat> is equivalent to B<xz --decompress --stdout>."
msgstr "B<xzcat> 명령은 B<xz --decompress --stdout> 명령과 동일합니다."
#. type: Plain text
-#: ../src/xz/xz.1:31
+#: ../src/xz/xz.1
msgid "B<lzma> is equivalent to B<xz --format=lzma>."
msgstr "B<lzma> 명령은 B<xz --format=lzma> 명령과 동일합니다."
#. type: Plain text
-#: ../src/xz/xz.1:35
+#: ../src/xz/xz.1
msgid "B<unlzma> is equivalent to B<xz --format=lzma --decompress>."
msgstr "B<unlzma> 명령은 B<xz --format=lzma --decompress> 명령과 동일합니다."
#. type: Plain text
-#: ../src/xz/xz.1:39
+#: ../src/xz/xz.1
msgid "B<lzcat> is equivalent to B<xz --format=lzma --decompress --stdout>."
-msgstr ""
-"B<lzcat> 명령은 B<xz --format=lzma --decompress --stdout> 명령과 동일합니다."
+msgstr "B<lzcat> 명령은 B<xz --format=lzma --decompress --stdout> 명령과 동일합니다."
#. type: Plain text
-#: ../src/xz/xz.1:51
-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 ""
-"파일 압축을 해제해야 하는 셸 스크립트를 작성할 때, B<unxz> 와 B<xzcat> 이름 "
-"대신 B<xz> 명령과 적절한 인자 값(B<xz -d> 또는 B<xz -dc>)의 사용을 추천드립니"
-"다."
+#: ../src/xz/xz.1
+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 "파일 압축을 해제해야 하는 셸 스크립트를 작성할 때, B<unxz> 와 B<xzcat> 이름 대신 B<xz> 명령과 적절한 인자 값(B<xz -d> 또는 B<xz -dc>)의 사용을 추천드립니다."
#. type: SH
-#: ../src/xz/xz.1:52 ../src/xzdec/xzdec.1:18 ../src/lzmainfo/lzmainfo.1:15
-#: ../src/scripts/xzdiff.1:24 ../src/scripts/xzgrep.1:33
-#: ../src/scripts/xzless.1:19 ../src/scripts/xzmore.1:16
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "DESCRIPTION"
msgstr "설명"
#. type: Plain text
-#: ../src/xz/xz.1:71
-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. In "
-"addition, decompression of the B<.lz> format used by B<lzip> is supported."
-msgstr ""
-"B<xz>는 B<gzip>(1) 과 B<bzip2>(1) 과 비슷한 명령행 문법을 지닌 범용 데이터 "
-"압축 도구입니다. 자체 파일 형식은 B<.xz> 형식이나, LZMA 유틸리티에서 사용하"
-"는 예전 B<.lzma> 형식과 형식 헤더가 없는 RAW 압축 스트림도 지원합니다. 게다"
-"가, B<lzip>에서 활용하는 B<.lz> 형식 압축 해제도 지원합니다."
+#: ../src/xz/xz.1
+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. In addition, decompression of the B<.lz> format used by B<lzip> is supported."
+msgstr "B<xz>는 B<gzip>(1) 과 B<bzip2>(1) 과 비슷한 명령행 문법을 지닌 범용 데이터 압축 도구입니다. 자체 파일 형식은 B<.xz> 형식이나, LZMA 유틸리티에서 사용하는 예전 B<.lzma> 형식과 형식 헤더가 없는 RAW 압축 스트림도 지원합니다. 게다가, B<lzip>에서 활용하는 B<.lz> 형식 압축 해제도 지원합니다."
#. type: Plain text
-#: ../src/xz/xz.1:93
-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 ""
-"각 I<파일> 에 대한 B<xz> 압축 또는 압축 해제는 선택 동작 모드에 따릅니다. "
-"I<E<lt>파일E<gt>> 값이 주어졌거나 I<E<lt>파일E<gt>> 값이 B<->이면, B<xz> 명령"
-"에서 표준 입력을 읽고 처리한 데이터를 표준 출력에 기록합니다. B<xz> 에서는 "
-"터미널에서 활용할 경우 압축 데이터를 표준 압축으로 기록하는 동작을 거절(오류"
-"를 출력하고 I<E<lt>파일E<gt>>을 건너뜀)합니다. 이와 비슷하게, B<xz> 유틸리티"
-"를 터미널에서 실행하면 표준 입력의 압축 데이터 읽기를 거절합니다."
+#: ../src/xz/xz.1
+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 "각 I<파일> 에 대한 B<xz> 압축 또는 압축 해제는 선택 동작 모드에 따릅니다. I<E<lt>파일E<gt>> 값이 주어졌거나 I<E<lt>파일E<gt>> 값이 B<->이면, B<xz> 명령에서 표준 입력을 읽고 처리한 데이터를 표준 출력에 기록합니다. B<xz> 에서는 터미널에서 활용할 경우 압축 데이터를 표준 압축으로 기록하는 동작을 거절(오류를 출력하고 I<E<lt>파일E<gt>>을 건너뜀)합니다. 이와 비슷하게, B<xz> 유틸리티를 터미널에서 실행하면 표준 입력의 압축 데이터 읽기를 거절합니다."
#. type: Plain text
-#: ../src/xz/xz.1:103
-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 ""
-"B<--stdout> 을 지정하지 않는 한, B<->가 아닌 I<E<lt>파일E<gt>>을 원본 I<E<lt>"
-"파일E<gt>> 이름에서 가져온 새 파일 이름으로 기록합니다:"
+#: ../src/xz/xz.1
+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 "B<--stdout> 을 지정하지 않는 한, B<->가 아닌 I<E<lt>파일E<gt>>을 원본 I<E<lt>파일E<gt>> 이름에서 가져온 새 파일 이름으로 기록합니다:"
#. type: IP
-#: ../src/xz/xz.1:103 ../src/xz/xz.1:109 ../src/xz/xz.1:134 ../src/xz/xz.1:139
-#: ../src/xz/xz.1:142 ../src/xz/xz.1:145 ../src/xz/xz.1:161 ../src/xz/xz.1:422
-#: ../src/xz/xz.1:425 ../src/xz/xz.1:432 ../src/xz/xz.1:677 ../src/xz/xz.1:679
-#: ../src/xz/xz.1:778 ../src/xz/xz.1:789 ../src/xz/xz.1:798 ../src/xz/xz.1:806
-#: ../src/xz/xz.1:1034 ../src/xz/xz.1:1043 ../src/xz/xz.1:1055
-#: ../src/xz/xz.1:1729 ../src/xz/xz.1:1735 ../src/xz/xz.1:1853
-#: ../src/xz/xz.1:1857 ../src/xz/xz.1:1860 ../src/xz/xz.1:1863
-#: ../src/xz/xz.1:1867 ../src/xz/xz.1:1874 ../src/xz/xz.1:1876
+#: ../src/xz/xz.1
#, no-wrap
msgid "\\(bu"
msgstr "\\(bu"
#. type: Plain text
-#: ../src/xz/xz.1:109
-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 ""
-"압축할 때, 대상 파일 형식의 접미사(B<.xz> or B<.lzma>) 는 원본 파일 이름 뒤"
-"에 붙어 대상 파일이름이 됩니다."
+#: ../src/xz/xz.1
+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 "압축할 때, 대상 파일 형식의 접미사(B<.xz> or B<.lzma>) 는 원본 파일 이름 뒤에 붙어 대상 파일이름이 됩니다."
#. type: Plain text
-#: ../src/xz/xz.1:124
-msgid ""
-"When decompressing, the B<.xz>, B<.lzma>, or B<.lz> suffix is removed from "
-"the filename to get the target filename. B<xz> also recognizes the suffixes "
-"B<.txz> and B<.tlz>, and replaces them with the B<.tar> suffix."
-msgstr ""
-"압축 해제할 때, B<.xz>, B<.lzma>, B<.lz> 접미사를 파일 이름에서 제거하고 대"
-"상 파일 이름을 알아냅니다. B<xz>에서는 B<.txz>, B<.tlz> 접미사도 인식하며, "
-"B<.tar> 접미사로 치환합니다."
+#: ../src/xz/xz.1
+msgid "When decompressing, the B<.xz>, B<.lzma>, or B<.lz> suffix is removed from the filename to get the target filename. B<xz> also recognizes the suffixes B<.txz> and B<.tlz>, and replaces them with the B<.tar> suffix."
+msgstr "압축 해제할 때, B<.xz>, B<.lzma>, B<.lz> 접미사를 파일 이름에서 제거하고 대상 파일 이름을 알아냅니다. B<xz>에서는 B<.txz>, B<.tlz> 접미사도 인식하며, B<.tar> 접미사로 치환합니다."
#. type: Plain text
-#: ../src/xz/xz.1:128
-msgid ""
-"If the target file already exists, an error is displayed and the I<file> is "
-"skipped."
-msgstr ""
-"대상 파일이 이미 있으면, 오류를 나타내고 I<E<lt>파일E<gt>>을 건너뜁니다."
+#: ../src/xz/xz.1
+msgid "If the target file already exists, an error is displayed and the I<file> is skipped."
+msgstr "대상 파일이 이미 있으면, 오류를 나타내고 I<E<lt>파일E<gt>>을 건너뜁니다."
#. type: Plain text
-#: ../src/xz/xz.1:134
-msgid ""
-"Unless writing to standard output, B<xz> will display a warning and skip the "
-"I<file> if any of the following applies:"
-msgstr ""
-"표준 출력으로 기록하기 전에는, B<xz>는 경고를 나타내며, 다음 조건에 만족할 경"
-"우 I<E<lt>파일E<gt>>을 건너뜁니다:"
+#: ../src/xz/xz.1
+msgid "Unless writing to standard output, B<xz> will display a warning and skip the I<file> if any of the following applies:"
+msgstr "표준 출력으로 기록하기 전에는, B<xz>는 경고를 나타내며, 다음 조건에 만족할 경우 I<E<lt>파일E<gt>>을 건너뜁니다:"
#. type: Plain text
-#: ../src/xz/xz.1:139
-msgid ""
-"I<File> is not a regular file. Symbolic links are not followed, and thus "
-"they are not considered to be regular files."
-msgstr ""
-"I<E<lt>파일E<gt>>이 일반 파일이 아닐 때. 심볼릭 링크는 따라가지 않기에, 일"
-"반 파일로 간주하지 않습니다."
+#: ../src/xz/xz.1
+msgid "I<File> is not a regular file. Symbolic links are not followed, and thus they are not considered to be regular files."
+msgstr "I<E<lt>파일E<gt>>이 일반 파일이 아닐 때. 심볼릭 링크는 따라가지 않기에, 일반 파일로 간주하지 않습니다."
#. type: Plain text
-#: ../src/xz/xz.1:142
+#: ../src/xz/xz.1
msgid "I<File> has more than one hard link."
msgstr "I<E<lt>파일E<gt>>이 하나 이상의 하드 링크일 떄."
#. type: Plain text
-#: ../src/xz/xz.1:145
+#: ../src/xz/xz.1
msgid "I<File> has setuid, setgid, or sticky bit set."
msgstr "I<E<lt>파일E<gt>>에 setuid, setgid, 끈적이 비트 집합이 붙어있을 떄."
#. type: Plain text
-#: ../src/xz/xz.1:161
-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 ""
-"동작 모드를 압축으로 설정하고, I<E<lt>파일E<gt>>은 대상 파일 형식의 접미사를 "
-"이미 붙였을 때(B<.xz> 형식으로 압축하면 B<.xz> 또는 B<.txz>, B<.lzma> 형식으"
-"로 압축하면 B<.lzma> 또는 B<.tlz>)."
+#: ../src/xz/xz.1
+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 "동작 모드를 압축으로 설정하고, I<E<lt>파일E<gt>>은 대상 파일 형식의 접미사를 이미 붙였을 때(B<.xz> 형식으로 압축하면 B<.xz> 또는 B<.txz>, B<.lzma> 형식으로 압축하면 B<.lzma> 또는 B<.tlz>)."
#. type: Plain text
-#: ../src/xz/xz.1:171
-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>, B<."
-"tlz>, or B<.lz>)."
-msgstr ""
-"동작 모드를 압축 해제로 설정하고, I<E<lt>파일E<gt>>에 지원 파일 형식 접미사"
-"(B<.xz>, B<.txz>, B<.lzma>, B<.tlz>, B<.lz>)를 붙이지 않았을 때."
+#: ../src/xz/xz.1
+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>, B<.tlz>, or B<.lz>)."
+msgstr "동작 모드를 압축 해제로 설정하고, I<E<lt>파일E<gt>>에 지원 파일 형식 접미사(B<.xz>, B<.txz>, B<.lzma>, B<.tlz>, B<.lz>)를 붙이지 않았을 때."
#. type: Plain text
-#: ../src/xz/xz.1:186
-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 ""
-"I<E<lt>파일E<gt>> 의 압축 또는 압축 해제를 성공하고 나면, B<xz>는 소유자, 소"
-"유그룹, 권한, 접근 시각, 수정 시각 정보를 원본 I<E<lt>파일E<gt>>에서 대상 파"
-"일로 그대로 복사합니다. 그룹 정보 복사에 실패하면, 권한을 수정하여 원본 "
-"I<E<lt>파일E<gt>>에 접근 권한이 없는 사용자가 대상 파일로 접근하지 못하게 합"
-"니다. B<xz>는 아직 접근 제어 목록이나 확장 속성 등의 기타 메타데이터를 복사"
-"하는 기능은 지원하지 않습니다."
+#: ../src/xz/xz.1
+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 "I<E<lt>파일E<gt>> 의 압축 또는 압축 해제를 성공하고 나면, B<xz>는 소유자, 소유그룹, 권한, 접근 시각, 수정 시각 정보를 원본 I<E<lt>파일E<gt>>에서 대상 파일로 그대로 복사합니다. 그룹 정보 복사에 실패하면, 권한을 수정하여 원본 I<E<lt>파일E<gt>>에 접근 권한이 없는 사용자가 대상 파일로 접근하지 못하게 합니다. B<xz>는 아직 접근 제어 목록이나 확장 속성 등의 기타 메타데이터를 복사하는 기능은 지원하지 않습니다."
#. type: Plain text
-#: ../src/xz/xz.1:196
-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 or if an error occurs."
-msgstr ""
-"대상 파일을 온전히 닫고 나면, B<--keep> 옵션을 지원하지 않았을 경우 원본 "
-"I<E<lt>파일E<gt>>을 제거합니다. 원본 I<E<lt>파일E<gt>>은 출력을 표준 출력으"
-"로 기록했거나 오류가 발생했을 경우 제거하지 않습니다."
+#: ../src/xz/xz.1
+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 or if an error occurs."
+msgstr "대상 파일을 온전히 닫고 나면, B<--keep> 옵션을 지원하지 않았을 경우 원본 I<E<lt>파일E<gt>>을 제거합니다. 원본 I<E<lt>파일E<gt>>은 출력을 표준 출력으로 기록했거나 오류가 발생했을 경우 제거하지 않습니다."
#. type: Plain text
-#: ../src/xz/xz.1:208
-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 ""
-"B<xz> 프로세스에 B<SIGINFO> 시그널 또는 B<SIGUSR1> 시그널을 보내면 표준 출력"
-"으로 진행 정보를 출력합니다. 표준 오류가 터미널일 경우일 경우에만 제한하며 "
-"B<--verbose> 옵션을 지정하면 진행 표시줄을 자동으로 나타냅니다."
+#: ../src/xz/xz.1
+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 "B<xz> 프로세스에 B<SIGINFO> 시그널 또는 B<SIGUSR1> 시그널을 보내면 표준 출력으로 진행 정보를 출력합니다. 표준 오류가 터미널일 경우일 경우에만 제한하며 B<--verbose> 옵션을 지정하면 진행 표시줄을 자동으로 나타냅니다."
#. type: SS
-#: ../src/xz/xz.1:209
+#: ../src/xz/xz.1
#, no-wrap
msgid "Memory usage"
msgstr "메모리 사용"
#. type: Plain text
-#: ../src/xz/xz.1:225
-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 ""
-"B<xz> 메모리 사용은 수백 킬로바이트로 시작하여 수 기가바이트까지 압축 설정에 "
-"따라 다릅니다. 압축 해제 프로그램이 필요로 하는 메모리 공간을 결정하는 파일 "
-"압축시에 설정 값을 활용합니다. 보통 압축 해제 프로그램은 파일을 만들 때, 압"
-"축 프로그램 메모리 사용량의 5% 에서 20% 정도 필요합니다. 예를 들면, B<xz -9>"
-"로 압축한 파일 압축 해제시 현재 65MiB 메모리 용량이 필요합니다. 여전하게도, "
-"압축 해제시 수 기가 바이트의 메모리가 필요한 B<.xz> 파일에도 가능한 이야기입"
-"니다."
+#: ../src/xz/xz.1
+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 "B<xz> 메모리 사용은 수백 킬로바이트로 시작하여 수 기가바이트까지 압축 설정에 따라 다릅니다. 압축 해제 프로그램이 필요로 하는 메모리 공간을 결정하는 파일 압축시에 설정 값을 활용합니다. 보통 압축 해제 프로그램은 파일을 만들 때, 압축 프로그램 메모리 사용량의 5% 에서 20% 정도 필요합니다. 예를 들면, B<xz -9>로 압축한 파일 압축 해제시 현재 65MiB 메모리 용량이 필요합니다. 여전하게도, 압축 해제시 수 기가 바이트의 메모리가 필요한 B<.xz> 파일에도 가능한 이야기입니다."
#. type: Plain text
-#: ../src/xz/xz.1:237
-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 (for example, using "
-"B<ulimit>(1) to limit virtual memory tends to cripple B<mmap>(2))."
-msgstr ""
-"특히 이전 시스템 사용자의 경우 메모리 사용량이 엄청나게 늘어나는 점에 짜증이 "
-"날 수 있습니다. 이런 불편한 상황을 피하기 위해, B<xz>에 기본적으로 비활성 상"
-"태인 내장 메모리 사용 제한 기능을 넣었습니다. 일부 운영체제에서 처리 중 메모"
-"리 사용을 제한하는 수단을 제공하긴 하지만, 여기에 의지하기에는 충분히 유연하"
-"지 않습니다(예를 들면, B<ulimit>(1)을 사용하면 가상 메모리를 제한하여 "
-"B<mmap>(2)을 먹통으로 만듭니다)."
+#: ../src/xz/xz.1
+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 (for example, using B<ulimit>(1) to limit virtual memory tends to cripple B<mmap>(2))."
+msgstr "특히 이전 시스템 사용자의 경우 메모리 사용량이 엄청나게 늘어나는 점에 짜증이 날 수 있습니다. 이런 불편한 상황을 피하기 위해, B<xz>에 기본적으로 비활성 상태인 내장 메모리 사용 제한 기능을 넣었습니다. 일부 운영체제에서 처리 중 메모리 사용을 제한하는 수단을 제공하긴 하지만, 여기에 의지하기에는 충분히 유연하지 않습니다(예를 들면, B<ulimit>(1)을 사용하면 가상 메모리를 제한하여 B<mmap>(2)을 먹통으로 만듭니다)."
#. type: Plain text
-#: ../src/xz/xz.1:259
-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>, for example, "
-"B<XZ_DEFAULTS=--memlimit=150MiB>. It is possible to set the limits "
-"separately for compression and decompression by using B<--memlimit-"
-"compress=>I<limit> and B<--memlimit-decompress=>I<limit>. Using these two "
-"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 ""
-"메모리 사용 제한 기능은 B<--memlimit=>I<E<lt>제한용량E<gt>> 명령행 옵션으로 "
-"사용할 수 있습니다. 종종 B<XZ_DEFAULTS=--memlimit=150MiB>와 같이 "
-"B<XZ_DEFAULTS> 환경 변수를 설정하여 제한 기능을 켜는게 더 편합니다. B<--"
-"memlimit-compress=>I<E<lt>제한용량E<gt>> 옵션과 B<--memlimit-"
-"decompress=>I<E<lt>제한용량E<gt>> 옵션을 활용하여 압축 및 압축 해제시 별도로 "
-"한계 값을 설정할 수 있습니다. 이 두 가지 옵션의 B<XZ_DEFAULTS> 환경 변수 밖"
-"에서의 사용은, B<xz>를 단일 실행할 때 압축 및 압축 해제 동작을 동시에 수행하"
-"지 않으며, 앞서 언급한 두가지 옵션을 명령행에 입력하기에는 B<--"
-"memlimit=>I<E<lt>제한용량E<gt>>(또는 B<-M> I<E<lt>제한용량E<gt>>)이 더 짧기 "
-"때문에 별로 쓸모가 없습니다."
-
-#. type: Plain text
-#: ../src/xz/xz.1:278
-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, for example, if the limit is only slightly less "
-"than the amount required for B<xz -9>, the settings will be scaled down only "
-"a little, not all the way down to B<xz -8>."
-msgstr ""
-"압축 해제시 메모리 사용 제한 지정 한계를 초과하면, B<xz> 유틸리티에서 오류를 "
-"나타내며 파일 압축 해제는 실패합니다. 압축을 실행할 때 사용 제한 지정 한계"
-"를 넘어서면 B<xz>에서는 설정 값을 줄여서 어쨌든 한계를 넘지 못하게 합니다"
-"(B<--format=raw> 옵션 또는 B<--no-adjust> 옵션 사용시 제외). 설정 한계 값이 "
-"엄청 작지 않은 이상 이 방식대로 처리하면 어쨌든 실패하지 않습니다. 설정 값조"
-"정은 압축 래벨 사전 설정과 일치하지 않을 때 단계적으로 진행하는데, 이를테면, "
-"B<xz -9> 명령 수행에 필요한 양보다 한계 값이 약간 작으면, 설정 값을 B<xz -8>"
-"에 못미치게 약간 줄여서 진행합니다."
+#: ../src/xz/xz.1
+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>, for example, B<XZ_DEFAULTS=--memlimit=150MiB>. It is possible to set the limits separately for compression and decompression by using B<--memlimit-compress=>I<limit> and B<--memlimit-decompress=>I<limit>. Using these two 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 "메모리 사용 제한 기능은 B<--memlimit=>I<E<lt>제한용량E<gt>> 명령행 옵션으로 사용할 수 있습니다. 종종 B<XZ_DEFAULTS=--memlimit=150MiB>와 같이 B<XZ_DEFAULTS> 환경 변수를 설정하여 제한 기능을 켜는게 더 편합니다. B<--memlimit-compress=>I<E<lt>제한용량E<gt>> 옵션과 B<--memlimit-decompress=>I<E<lt>제한용량E<gt>> 옵션을 활용하여 압축 및 압축 해제시 별도로 한계 값을 설정할 수 있습니다. 이 두 가지 옵션의 B<XZ_DEFAULTS> 환경 변수 밖에서의 사용은, B<xz>를 단일 실행할 때 압축 및 압축 해제 동작을 동시에 수행하지 않으며, 앞서 언급한 두가지 옵션을 명령행에 입력하기에는 B<--memlimit=>I<E<lt>제한용량E<gt>>(또는 B<-M> I<E<lt>제한용량E<gt>>)이 더 짧기 때문에 별로 쓸모가 없습니다."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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, for example, if the limit is only slightly less than the amount required for B<xz -9>, the settings will be scaled down only a little, not all the way down to B<xz -8>."
+msgstr "압축 해제시 메모리 사용 제한 지정 한계를 초과하면, B<xz> 유틸리티에서 오류를 나타내며 파일 압축 해제는 실패합니다. 압축을 실행할 때 사용 제한 지정 한계를 넘어서면 B<xz>에서는 설정 값을 줄여서 어쨌든 한계를 넘지 못하게 합니다(B<--format=raw> 옵션 또는 B<--no-adjust> 옵션 사용시 제외). 설정 한계 값이 엄청 작지 않은 이상 이 방식대로 처리하면 어쨌든 실패하지 않습니다. 설정 값조정은 압축 래벨 사전 설정과 일치하지 않을 때 단계적으로 진행하는데, 이를테면, B<xz -9> 명령 수행에 필요한 양보다 한계 값이 약간 작으면, 설정 값을 B<xz -8>에 못미치게 약간 줄여서 진행합니다."
#. type: SS
-#: ../src/xz/xz.1:279
+#: ../src/xz/xz.1
#, no-wrap
msgid "Concatenation and padding with .xz files"
msgstr ".xz 파일 결합 및 패딩"
#. type: Plain text
-#: ../src/xz/xz.1:287
-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 ""
-"B<.xz> 파일을 있는 그대로 합칠 수 있습니다. B<xz>는 B<.xz> 파일을 단독 파일"
-"일 때 처럼 압축해제합니다."
+#: ../src/xz/xz.1
+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 "B<.xz> 파일을 있는 그대로 합칠 수 있습니다. B<xz>는 B<.xz> 파일을 단독 파일일 때 처럼 압축해제합니다."
#. type: Plain text
-#: ../src/xz/xz.1:296
-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, for example, "
-"if the B<.xz> file is stored on a medium that measures file sizes in 512-"
-"byte blocks."
-msgstr ""
-"결합 부분과 마지막 부분 뒤에 패딩을 추가할 수 있습니다. 패딩은 널 바이트로 "
-"구성해야 하며 패딩 길이는 4바이트로 구성해야 합니다. 512 바이트 블록으로 파"
-"일 크기를 이루는 매체에 B<.xz> 파일을 저장했을 경우에 요긴할 수 있습니다."
+#: ../src/xz/xz.1
+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, for example, if the B<.xz> file is stored on a medium that measures file sizes in 512-byte blocks."
+msgstr "결합 부분과 마지막 부분 뒤에 패딩을 추가할 수 있습니다. 패딩은 널 바이트로 구성해야 하며 패딩 길이는 4바이트로 구성해야 합니다. 512 바이트 블록으로 파일 크기를 이루는 매체에 B<.xz> 파일을 저장했을 경우에 요긴할 수 있습니다."
#. type: Plain text
-#: ../src/xz/xz.1:300
-msgid ""
-"Concatenation and padding are not allowed with B<.lzma> files or raw streams."
+#: ../src/xz/xz.1
+msgid "Concatenation and padding are not allowed with B<.lzma> files or raw streams."
msgstr "B<.lzma> 파일 또는 원시 스트림의 경우 결합과 패딩을 허용하지 않습니다."
#. type: SH
-#: ../src/xz/xz.1:301 ../src/xzdec/xzdec.1:61
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "OPTIONS"
msgstr "옵션"
#. type: SS
-#: ../src/xz/xz.1:303
+#: ../src/xz/xz.1
#, no-wrap
msgid "Integer suffixes and special values"
msgstr "정수 접두사와 별도 값"
#. type: Plain text
-#: ../src/xz/xz.1:307
-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 ""
-"정수 인자값이 필요한 대부분 위치에서는, 큰 정수값을 나타내기 쉽게 하도록 추"
-"가 접미사를 지원합니다. 정수와 접미사 사이에 어떤 공백이 있으면 안됩니다."
+#: ../src/xz/xz.1
+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 "정수 인자값이 필요한 대부분 위치에서는, 큰 정수값을 나타내기 쉽게 하도록 추가 접미사를 지원합니다. 정수와 접미사 사이에 어떤 공백이 있으면 안됩니다."
#. type: TP
-#: ../src/xz/xz.1:307
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<KiB>"
msgstr "B<KiB>"
#. type: Plain text
-#: ../src/xz/xz.1:318
-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 ""
-"1,024 (2^10) 배수 정수값. B<Ki>, B<k>, B<kB>, B<K>, B<KB> 단위를 B<KiB> 동의"
-"어로 받아들입니다."
+#: ../src/xz/xz.1
+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 "1,024 (2^10) 배수 정수값. B<Ki>, B<k>, B<kB>, B<K>, B<KB> 단위를 B<KiB> 동의어로 받아들입니다."
#. type: TP
-#: ../src/xz/xz.1:318
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<MiB>"
msgstr "B<MiB>"
#. type: Plain text
-#: ../src/xz/xz.1:328
-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 ""
-"1,048,576 (2^20) 배수 정수값. B<Mi>, B<m>, B<M>, B<MB> 단위를 B<MiB> 동의어"
-"로 받아들입니다."
+#: ../src/xz/xz.1
+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 "1,048,576 (2^20) 배수 정수값. B<Mi>, B<m>, B<M>, B<MB> 단위를 B<MiB> 동의어로 받아들입니다."
#. type: TP
-#: ../src/xz/xz.1:328
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<GiB>"
msgstr "B<GiB>"
#. type: Plain text
-#: ../src/xz/xz.1:338
-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 ""
-"1,073,741,824 (2^30) 배수 정수값. B<Gi>, B<g>, B<G>, B<GB> 단위를 B<GiB> 동"
-"의어로 받아들입니다."
+#: ../src/xz/xz.1
+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 "1,073,741,824 (2^30) 배수 정수값. B<Gi>, B<g>, B<G>, B<GB> 단위를 B<GiB> 동의어로 받아들입니다."
#. type: Plain text
-#: ../src/xz/xz.1:343
-msgid ""
-"The special value B<max> can be used to indicate the maximum integer value "
-"supported by the option."
-msgstr ""
-"특수 값 B<max>는 옵션에서 지원하는 정수 최대 값을 나타낼 때 사용할 수 있습니"
-"다."
+#: ../src/xz/xz.1
+msgid "The special value B<max> can be used to indicate the maximum integer value supported by the option."
+msgstr "특수 값 B<max>는 옵션에서 지원하는 정수 최대 값을 나타낼 때 사용할 수 있습니다."
#. type: SS
-#: ../src/xz/xz.1:344
+#: ../src/xz/xz.1
#, no-wrap
msgid "Operation mode"
msgstr "동작 모드"
#. type: Plain text
-#: ../src/xz/xz.1:347
-msgid ""
-"If multiple operation mode options are given, the last one takes effect."
-msgstr ""
-"여러 동작 모드를 보여드리겠습니다만, 마지막에 주어진 동작 모드로 동작합니다."
+#: ../src/xz/xz.1
+msgid "If multiple operation mode options are given, the last one takes effect."
+msgstr "여러 동작 모드를 보여드리겠습니다만, 마지막에 주어진 동작 모드로 동작합니다."
#. type: TP
-#: ../src/xz/xz.1:347
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-z>, B<--compress>"
msgstr "B<-z>, B<--compress>"
#. type: Plain text
-#: ../src/xz/xz.1:356
-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 ""
-"압축합니다. 어떤 동작 모드 옵션도 지정하지 않고 다른 동작 모드를 명령행에 따"
-"로 지정하지 않았다면 이 동작 모드는 기본입니다(예: B<unxz> 는 B<--decompress>"
-"를 암시)."
+#: ../src/xz/xz.1
+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 "압축합니다. 어떤 동작 모드 옵션도 지정하지 않고 다른 동작 모드를 명령행에 따로 지정하지 않았다면 이 동작 모드는 기본입니다(예: B<unxz> 는 B<--decompress>를 암시)."
#. type: TP
-#: ../src/xz/xz.1:356 ../src/xzdec/xzdec.1:62
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-d>, B<--decompress>, B<--uncompress>"
msgstr "B<-d>, B<--decompress>, B<--uncompress>"
#. type: Plain text
-#: ../src/xz/xz.1:359
+#: ../src/xz/xz.1
msgid "Decompress."
msgstr "압축을 해제합니다."
#. type: TP
-#: ../src/xz/xz.1:359
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-t>, B<--test>"
msgstr "B<-t>, B<--test>"
#. type: Plain text
-#: ../src/xz/xz.1:368
-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 ""
-"압축 I<E<lt>파일E<gt>>의 무결성을 시험해봅니다. 이 옵션은 압축 해제 데이터"
-"를 표준 출력으로 기록하는 대신 버린다는 점을 제외하고 B<--decompress --"
-"stdout>과 동일합니다. 어떤 파일도 만들거나 제거하지 않습니다."
+#: ../src/xz/xz.1
+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 "압축 I<E<lt>파일E<gt>>의 무결성을 시험해봅니다. 이 옵션은 압축 해제 데이터를 표준 출력으로 기록하는 대신 버린다는 점을 제외하고 B<--decompress --stdout>과 동일합니다. 어떤 파일도 만들거나 제거하지 않습니다."
#. type: TP
-#: ../src/xz/xz.1:368
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-l>, B<--list>"
msgstr "B<-l>, B<--list>"
#. type: Plain text
-#: ../src/xz/xz.1:377
-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 ""
-"압축 I<E<lt>파일E<gt>> 정보를 출력합니다. 압축 해제 출력을 내보내지 않으며, "
-"어떤 파일도 만들거나 제거하지 않습니다. 이 조회 모드에서, 프로그램은 표준 입"
-"력 또는 기타 탐색 불가능한 원본에서 압축 데이터를 읽을 수 없습니다."
+#: ../src/xz/xz.1
+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 "압축 I<E<lt>파일E<gt>> 정보를 출력합니다. 압축 해제 출력을 내보내지 않으며, 어떤 파일도 만들거나 제거하지 않습니다. 이 조회 모드에서, 프로그램은 표준 입력 또는 기타 탐색 불가능한 원본에서 압축 데이터를 읽을 수 없습니다."
#. type: Plain text
-#: ../src/xz/xz.1:392
-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, for "
-"example, B<less\\ -S> may be convenient if the terminal isn't wide enough."
-msgstr ""
-"I<E<lt>파일E<gt>> 기본 정보를 파일 당 한 줄 씩 기본으로 보여줍니다. 더 자세"
-"한 정보를 보려면 B<--verbose> 옵션을 사용하십시오. 더 자세한 정보는 B<--"
-"verbose> 옵션을 두번 사용하면 되지만, 추가 정보를 더 많이 가져오면서 탐색 횟"
-"수가 늘어나는 문제로 인해 느려질 수 있습니다. 세부 출력 너비는 80 문자를 초"
-"과하며, 예를 들어 출력을 파이핑한다면, 터미널이 충분히 너비가 넓지 못할 경우 "
-"B<less\\ -S> 명령이 편리할 수 있습니다."
+#: ../src/xz/xz.1
+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, for example, B<less\\ -S> may be convenient if the terminal isn't wide enough."
+msgstr "I<E<lt>파일E<gt>> 기본 정보를 파일 당 한 줄 씩 기본으로 보여줍니다. 더 자세한 정보를 보려면 B<--verbose> 옵션을 사용하십시오. 더 자세한 정보는 B<--verbose> 옵션을 두번 사용하면 되지만, 추가 정보를 더 많이 가져오면서 탐색 횟수가 늘어나는 문제로 인해 느려질 수 있습니다. 세부 출력 너비는 80 문자를 초과하며, 예를 들어 출력을 파이핑한다면, 터미널이 충분히 너비가 넓지 못할 경우 B<less\\ -S> 명령이 편리할 수 있습니다."
#. type: Plain text
-#: ../src/xz/xz.1:399
-msgid ""
-"The exact output may vary between B<xz> versions and different locales. For "
-"machine-readable output, B<--robot --list> should be used."
-msgstr ""
-"정확한 출력은 B<xz> 버전과 다른 로캘에 따라 바뀔 수 있습니다. 기계 판독용 출"
-"력시 B<--robot --list> 옵션을 사용합니다."
+#: ../src/xz/xz.1
+msgid "The exact output may vary between B<xz> versions and different locales. For machine-readable output, B<--robot --list> should be used."
+msgstr "정확한 출력은 B<xz> 버전과 다른 로캘에 따라 바뀔 수 있습니다. 기계 판독용 출력시 B<--robot --list> 옵션을 사용합니다."
#. type: SS
-#: ../src/xz/xz.1:400
+#: ../src/xz/xz.1
#, no-wrap
msgid "Operation modifiers"
msgstr "동작 수정자"
#. type: TP
-#: ../src/xz/xz.1:401 ../src/xzdec/xzdec.1:69
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-k>, B<--keep>"
msgstr "B<-k>, B<--keep>"
#. type: Plain text
-#: ../src/xz/xz.1:404
+#: ../src/xz/xz.1
msgid "Don't delete the input files."
msgstr "입력 파일을 삭제하지 않습니다."
#. type: Plain text
-#: ../src/xz/xz.1:418
-msgid ""
-"Since B<xz> 5.2.6, this option also makes B<xz> compress or decompress even "
-"if the input is a symbolic link to a regular file, has more than one hard "
-"link, or has the setuid, setgid, or sticky bit set. The setuid, setgid, and "
-"sticky bits are not copied to the target file. In earlier versions this was "
-"only done with B<--force>."
-msgstr ""
-"B<xz> 5.2.6 부터는 이 옵션으로 입력 파일이 일반 파일을 참조하는 심볼릭 링크"
-"나 하나 이상의 하드 링크, 내지는 setuid, setgid, 끈적이 비트 세트를 설정한 상"
-"태라도 압축하거나 압축을 풀 수 있습니다. setuid, setgid, 끈적이 비트는 대상 "
-"파일에 복사하지 않습니다. 이전 버전에서는 B<--force> 옵션을 지정했을 때만 가"
-"능했습니다."
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.2.6, this option also makes B<xz> compress or decompress even if the input is a symbolic link to a regular file, has more than one hard link, or has the setuid, setgid, or sticky bit set. The setuid, setgid, and sticky bits are not copied to the target file. In earlier versions this was only done with B<--force>."
+msgstr "B<xz> 5.2.6 부터는 이 옵션으로 입력 파일이 일반 파일을 참조하는 심볼릭 링크나 하나 이상의 하드 링크, 내지는 setuid, setgid, 끈적이 비트 세트를 설정한 상태라도 압축하거나 압축을 풀 수 있습니다. setuid, setgid, 끈적이 비트는 대상 파일에 복사하지 않습니다. 이전 버전에서는 B<--force> 옵션을 지정했을 때만 가능했습니다."
#. type: TP
-#: ../src/xz/xz.1:418
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-f>, B<--force>"
msgstr "B<-f>, B<--force>"
#. type: Plain text
-#: ../src/xz/xz.1:421
+#: ../src/xz/xz.1
msgid "This option has several effects:"
msgstr "이 옵션은 몇가지 동작에 영향을 줍니다:"
#. type: Plain text
-#: ../src/xz/xz.1:425
-msgid ""
-"If the target file already exists, delete it before compressing or "
-"decompressing."
+#: ../src/xz/xz.1
+msgid "If the target file already exists, delete it before compressing or decompressing."
msgstr "대상 파일이 이미 있으면, 압축 또는 압축 해제 전 삭제합니다."
#. type: Plain text
-#: ../src/xz/xz.1:432
-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 ""
-"입력 파일이 일반 파일을 참조하는 심볼릭 링크나 하나 이상의 하드 링크, 내지는 "
-"setuid, setgid, 끈적이 비트 세트를 설정한 상태라도 압축 또는 압축 해제를 진행"
-"합니다. setuid, setgid, 끈적이 비트는 대상 파일에 복사하지 않습니다"
+#: ../src/xz/xz.1
+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 "입력 파일이 일반 파일을 참조하는 심볼릭 링크나 하나 이상의 하드 링크, 내지는 setuid, setgid, 끈적이 비트 세트를 설정한 상태라도 압축 또는 압축 해제를 진행합니다. setuid, setgid, 끈적이 비트는 대상 파일에 복사하지 않습니다."
#. type: Plain text
-#: ../src/xz/xz.1:457
-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 ""
-"B<--decompress> B<--stdout> 옵션을 같이 사용하는 상황에서 B<xz> 명령이 원본 "
-"파일의 형식을 알아내지 못할 때, 원본 파일의 사본을 표준 출력으로 보냅니다. "
-"이렇게 하면 B<xzcat> B<--force> 명령을 B<xz> 명령으로 압축하지 않은 파일에 대"
-"해 B<cat>(1) 을 사용하는 것처럼 사용할 수 있습니다. 참고로 나중에, B<xz>에"
-"서 B<xz>로 하여금 여러 형식의 파일을 표준 출력으로 복사하는 대신 압축을 해제"
-"하도록 새 압축 파일 형식을 지원할 예정입니다. B<--format=>I<E<lt>형식E<gt>> "
-"옵션은 B<xz> 명령에 단일 파일 형식만 압축 해제하도록 제한할 때 사용할 수 있습"
-"니다."
+#: ../src/xz/xz.1
+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 "B<--decompress> B<--stdout> 옵션을 같이 사용하는 상황에서 B<xz> 명령이 원본 파일의 형식을 알아내지 못할 때, 원본 파일의 사본을 표준 출력으로 보냅니다. 이렇게 하면 B<xzcat> B<--force> 명령을 B<xz> 명령으로 압축하지 않은 파일에 대해 B<cat>(1) 을 사용하는 것처럼 사용할 수 있습니다. 참고로 나중에, B<xz>에서 B<xz>로 하여금 여러 형식의 파일을 표준 출력으로 복사하는 대신 압축을 해제하도록 새 압축 파일 형식을 지원할 예정입니다. B<--format=>I<E<lt>형식E<gt>> 옵션은 B<xz> 명령에 단일 파일 형식만 압축 해제하도록 제한할 때 사용할 수 있습니다."
#. type: TP
-#: ../src/xz/xz.1:458 ../src/xzdec/xzdec.1:76
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, 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:464
-msgid ""
-"Write the compressed or decompressed data to standard output instead of a "
-"file. This implies B<--keep>."
-msgstr ""
-"파일 대신 표준 출력으로 압축 또는 압축 해제한 데이터를 기록합니다. B<--keep>"
-"를 생략했습니다."
+#: ../src/xz/xz.1
+msgid "Write the compressed or decompressed data to standard output instead of a file. This implies B<--keep>."
+msgstr "파일 대신 표준 출력으로 압축 또는 압축 해제한 데이터를 기록합니다. B<--keep>를 생략했습니다."
#. type: TP
-#: ../src/xz/xz.1:464
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--single-stream>"
msgstr "B<--single-stream>"
#. type: Plain text
-#: ../src/xz/xz.1:473
-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 ""
-"처음 B<.xz> 스트림만 압축 해제하며, 스트림에 뒤따라오는 나머지 입력 데이터는 "
-"조용히 무시합니다. 보통 뒤따라오는 쓰레기 값에 대해서는 B<xz> 에서 오류를 나"
-"타냅니다."
+#: ../src/xz/xz.1
+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 "처음 B<.xz> 스트림만 압축 해제하며, 스트림에 뒤따라오는 나머지 입력 데이터는 조용히 무시합니다. 보통 뒤따라오는 쓰레기 값에 대해서는 B<xz> 에서 오류를 나타냅니다."
#. type: Plain text
-#: ../src/xz/xz.1:482
-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>는 B<.lzma> 파일 또는 원시 스트림에서 온 하나 이상의 스트림에 대해 압축 "
-"해제동작을 취하지 않지만, 이 옵션을 사용하면 B<xz>에서 B<.lzma> 파일 또는 원"
-"시 스트림을 처리한 다음에 뒤따라오는 데이터를 무시하도록 합니다."
+#: ../src/xz/xz.1
+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>는 B<.lzma> 파일 또는 원시 스트림에서 온 하나 이상의 스트림에 대해 압축 해제동작을 취하지 않지만, 이 옵션을 사용하면 B<xz>에서 B<.lzma> 파일 또는 원시 스트림을 처리한 다음에 뒤따라오는 데이터를 무시하도록 합니다."
#. type: Plain text
-#: ../src/xz/xz.1:487
-msgid ""
-"This option has no effect if the operation mode is not B<--decompress> or "
-"B<--test>."
-msgstr ""
-"이 옵션은 동작 모드가 B<--decompress> 또는 B<--test>가 아니면 동작에 아무런 "
-"영향을 주지 않습니다."
+#: ../src/xz/xz.1
+msgid "This option has no effect if the operation mode is not B<--decompress> or B<--test>."
+msgstr "이 옵션은 동작 모드가 B<--decompress> 또는 B<--test>가 아니면 동작에 아무런 영향을 주지 않습니다."
#. type: TP
-#: ../src/xz/xz.1:487
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--no-sparse>"
msgstr "B<--no-sparse>"
#. type: Plain text
-#: ../src/xz/xz.1:499
-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 ""
-"희소 파일을 만들지 않습니다. 기본적으로 일반 파일로 압축 해제할 경우 B<xz> "
-"에서는 압축 해제한 파일에 이진 0값이 길게 늘어질 경우 희소 배열 파일을 만들려"
-"고 합니다. 표준 출력의 내용 길이만큼 연결한 일반 파일로 기록할 때도 동작하"
-"며 희소 파일을 만드는 동안 아무런 문제가 나타나지 않게 각각의 추가 조건을 만"
-"족합니다. 희소 파일을 만들면 디스크 공간을 절약할 수 있으며 디스크 입출력을 "
-"줄여 압축 해제 속도를 올릴 수 있습니다."
+#: ../src/xz/xz.1
+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 "희소 파일을 만들지 않습니다. 기본적으로 일반 파일로 압축 해제할 경우 B<xz> 에서는 압축 해제한 파일에 이진 0값이 길게 늘어질 경우 희소 배열 파일을 만들려고 합니다. 표준 출력의 내용 길이만큼 연결한 일반 파일로 기록할 때도 동작하며 희소 파일을 만드는 동안 아무런 문제가 나타나지 않게 각각의 추가 조건을 만족합니다. 희소 파일을 만들면 디스크 공간을 절약할 수 있으며 디스크 입출력을 줄여 압축 해제 속도를 올릴 수 있습니다."
#. type: TP
-#: ../src/xz/xz.1:499
+#: ../src/xz/xz.1
#, 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:511
-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 ""
-"압축할 때, 대상 파일의 접두사를 B<.xz> 또는 B<.lzma> 대신 I<.suf>로 사용하십"
-"시오. 표준 출력으로 기록하지 않고 원본 파일에 I<.suf> 접두사가 붙어있으면, "
-"경고를 나타내고 해당 파일을 건너뜁니다."
+#: ../src/xz/xz.1
+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 "압축할 때, 대상 파일의 접두사를 B<.xz> 또는 B<.lzma> 대신 I<.suf>로 사용하십시오. 표준 출력으로 기록하지 않고 원본 파일에 I<.suf> 접두사가 붙어있으면, 경고를 나타내고 해당 파일을 건너뜁니다."
#. type: Plain text
-#: ../src/xz/xz.1:525
-msgid ""
-"When decompressing, recognize files with the suffix I<.suf> in addition to "
-"files with the B<.xz>, B<.txz>, B<.lzma>, B<.tlz>, or B<.lz> suffix. If the "
-"source file has the suffix I<.suf>, the suffix is removed to get the target "
-"filename."
-msgstr ""
-"압축 해제할 때, I<.suf> 접미사로 파일을 인식하기도 하고, B<.xz>, B<.txz>, B<."
-"lzma>, B<.tlz>, B<.lz> 접미사가 붙은 파일도 인식합니다. 원본 파일에 I<.suf> "
-"접미사가 붙어있으면, 해당 접미사를 제거하여 대상 파일 이름을 알아냅니다."
+#: ../src/xz/xz.1
+msgid "When decompressing, recognize files with the suffix I<.suf> in addition to files with the B<.xz>, B<.txz>, B<.lzma>, B<.tlz>, or B<.lz> suffix. If the source file has the suffix I<.suf>, the suffix is removed to get the target filename."
+msgstr "압축 해제할 때, I<.suf> 접미사로 파일을 인식하기도 하고, B<.xz>, B<.txz>, B<.lzma>, B<.tlz>, B<.lz> 접미사가 붙은 파일도 인식합니다. 원본 파일에 I<.suf> 접미사가 붙어있으면, 해당 접미사를 제거하여 대상 파일 이름을 알아냅니다."
#. type: Plain text
-#: ../src/xz/xz.1:531
-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 ""
-"원시 스트림 압축 및 압축 해제시(B<--format=raw>) 원시 스트림에 기본 접미사가 "
-"없기 때문에, 표준 출력으로 기록하지 않는 한 접미사를 반드시 지정해야 합니다."
+#: ../src/xz/xz.1
+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 "원시 스트림 압축 및 압축 해제시(B<--format=raw>) 원시 스트림에 기본 접미사가 없기 때문에, 표준 출력으로 기록하지 않는 한 접미사를 반드시 지정해야 합니다."
#. type: TP
-#: ../src/xz/xz.1:531
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--files>[B<=>I<file>]"
msgstr "B<--files>[B<=>I<E<lt>파일E<gt>>]"
#. type: Plain text
-#: ../src/xz/xz.1:545
-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 ""
-"I<E<lt>파일E<gt>>에서 처리할 파일 이름을 읽습니다. I<E<lt>파일E<gt>>을 생략하"
-"면 파일 이름은 표준 입력에서 불러옵니다. 파일 이름은 개행 문자로 끝나야 합니"
-"다. 대시 문자(B<->)는 일반 파일 이름으로 취급하며 표준 입력을 의미하지 않습"
-"니다. 파일 이름을 명령행 인자로 지정하면, I<E<lt>파일E<gt>>에서 파일 이름을 "
-"읽어들이기 전 해당 명령행 인자를 먼저 처리합니다."
+#: ../src/xz/xz.1
+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 "I<E<lt>파일E<gt>>에서 처리할 파일 이름을 읽습니다. I<E<lt>파일E<gt>>을 생략하면 파일 이름은 표준 입력에서 불러옵니다. 파일 이름은 개행 문자로 끝나야 합니다. 대시 문자(B<->)는 일반 파일 이름으로 취급하며 표준 입력을 의미하지 않습니다. 파일 이름을 명령행 인자로 지정하면, I<E<lt>파일E<gt>>에서 파일 이름을 읽어들이기 전 해당 명령행 인자를 먼저 처리합니다."
#. type: TP
-#: ../src/xz/xz.1:545
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--files0>[B<=>I<file>]"
msgstr "B<--files0>[B<=>I<E<lt>파일E<gt>>]"
#. type: Plain text
-#: ../src/xz/xz.1:549
-msgid ""
-"This is identical to B<--files>[B<=>I<file>] except that each filename must "
-"be terminated with the null character."
-msgstr ""
-"각 파일 이름이 널 문자로 끝나야 한다는 점만 제외하면 B<--files>[B<=>I<E<lt>파"
-"일E<gt>>] 옵션과 동일합니다."
+#: ../src/xz/xz.1
+msgid "This is identical to B<--files>[B<=>I<file>] except that each filename must be terminated with the null character."
+msgstr "각 파일 이름이 널 문자로 끝나야 한다는 점만 제외하면 B<--files>[B<=>I<E<lt>파일E<gt>>] 옵션과 동일합니다."
#. type: SS
-#: ../src/xz/xz.1:550
+#: ../src/xz/xz.1
#, no-wrap
msgid "Basic file format and compression options"
msgstr "기본 파일 형식 및 압축 옵션"
#. type: TP
-#: ../src/xz/xz.1:551
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-F> I<format>, B<--format=>I<format>"
msgstr "B<-F> I<format>, B<--format=>I<E<lt>형식E<gt>>"
#. type: Plain text
-#: ../src/xz/xz.1:556
+#: ../src/xz/xz.1
msgid "Specify the file I<format> to compress or decompress:"
msgstr "압축 또는 압축해제 파일 I<E<lt>형식E<gt>>을 지정합니다:"
#. type: TP
-#: ../src/xz/xz.1:557
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<auto>"
msgstr "B<auto>"
#. type: Plain text
-#: ../src/xz/xz.1:569
-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 ""
-"기본 값입니다. 압축할 때, B<auto>는 B<xz>의 기본 동작과 동일합니다. 압축을 "
-"해제할 때, 입력 파일 형식을 자동으로 찾습니다. 참고로 원시 스트림(B<--"
-"format=raw>)의 경우 자동으로 찾을 수 없습니다."
+#: ../src/xz/xz.1
+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 "기본 값입니다. 압축할 때, B<auto>는 B<xz>의 기본 동작과 동일합니다. 압축을 해제할 때, 입력 파일 형식을 자동으로 찾습니다. 참고로 원시 스트림(B<--format=raw>)의 경우 자동으로 찾을 수 없습니다."
#. type: TP
-#: ../src/xz/xz.1:569
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<xz>"
msgstr "B<xz>"
#. type: Plain text
-#: ../src/xz/xz.1:576
-msgid ""
-"Compress to the B<.xz> file format, or accept only B<.xz> files when "
-"decompressing."
-msgstr ""
-"B<.xz> 파일 형식으로 압축하거나, 압축 해제시 B<.xz> 파일만 받아들입니다."
+#: ../src/xz/xz.1
+msgid "Compress to the B<.xz> file format, or accept only B<.xz> files when decompressing."
+msgstr "B<.xz> 파일 형식으로 압축하거나, 압축 해제시 B<.xz> 파일만 받아들입니다."
#. type: TP
-#: ../src/xz/xz.1:576
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lzma>, B<alone>"
msgstr "B<lzma>, B<alone>"
#. type: Plain text
-#: ../src/xz/xz.1:586
-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 ""
-"이전 B<.lzma> 파일 형식으로 압축하거나, 압축 해제시 B<.lzma> 파일만 받아들입"
-"니다. B<alone> 대체 명령은 LZMA 유틸리티 하위 호환성을 목적으로 제공합니다."
+#: ../src/xz/xz.1
+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 "이전 B<.lzma> 파일 형식으로 압축하거나, 압축 해제시 B<.lzma> 파일만 받아들입니다. B<alone> 대체 명령은 LZMA 유틸리티 하위 호환성을 목적으로 제공합니다."
#. type: TP
-#: ../src/xz/xz.1:586
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lzip>"
msgstr "B<lzip>"
#. type: Plain text
-#: ../src/xz/xz.1:592
-msgid ""
-"Accept only B<.lz> files when decompressing. Compression is not supported."
+#: ../src/xz/xz.1
+msgid "Accept only B<.lz> files when decompressing. Compression is not supported."
msgstr "압축 해제시 B<.lz> 파일만 받아들입니다. 압축은 지원하지 않습니다."
#. type: Plain text
-#: ../src/xz/xz.1:605
-msgid ""
-"The B<.lz> format version 0 and the unextended version 1 are supported. "
-"Version 0 files were produced by B<lzip> 1.3 and older. Such files aren't "
-"common but may be found from file archives as a few source packages were "
-"released in this format. People might have old personal files in this "
-"format too. Decompression support for the format version 0 was removed in "
-"B<lzip> 1.18."
-msgstr ""
-"B<.lz> 형식 버전 0과 비확장 버전 1을 지원합니다. 버전 0파일은 B<lzip> 1.3 이"
-"전에서만 만듭니다. 일반적이진 않지만 일부 파일의 경우 이 형식과 관련된 원본 "
-"패키지로 보관한 파일을 찾을 수도 있습니다. 개인적으로 이 형식으로 압축한 오"
-"래된 개인 파일을 가지고 있을 수도 있습니다. 형식 버전 0 압축 해제 지원은 "
-"B<lzip> 1.18에서 제거했습니다."
+#: ../src/xz/xz.1
+msgid "The B<.lz> format version 0 and the unextended version 1 are supported. Version 0 files were produced by B<lzip> 1.3 and older. Such files aren't common but may be found from file archives as a few source packages were released in this format. People might have old personal files in this format too. Decompression support for the format version 0 was removed in B<lzip> 1.18."
+msgstr "B<.lz> 형식 버전 0과 비확장 버전 1을 지원합니다. 버전 0파일은 B<lzip> 1.3 이전에서만 만듭니다. 일반적이진 않지만 일부 파일의 경우 이 형식과 관련된 원본 패키지로 보관한 파일을 찾을 수도 있습니다. 개인적으로 이 형식으로 압축한 오래된 개인 파일을 가지고 있을 수도 있습니다. 형식 버전 0 압축 해제 지원은 B<lzip> 1.18에서 제거했습니다."
#. type: Plain text
-#: ../src/xz/xz.1:614
-msgid ""
-"B<lzip> 1.4 and later create files in the format version 1. The sync flush "
-"marker extension to the format version 1 was added in B<lzip> 1.6. This "
-"extension is rarely used and isn't supported by B<xz> (diagnosed as corrupt "
-"input)."
-msgstr ""
-"B<lzip> 1.4 이상에서는 버전 1형식의 파일을 만듭니다. 형식 버전 1로의 동기화 "
-"제거 마커 확장은 B<lzip> 1.6에 추가했습니다. 이 확장은 거의 쓰지 않으며 "
-"B<xz> 에서 조차도 지원하지 않습니다(손상된 입력 파일로 진단함)."
+#: ../src/xz/xz.1
+msgid "B<lzip> 1.4 and later create files in the format version 1. The sync flush marker extension to the format version 1 was added in B<lzip> 1.6. This extension is rarely used and isn't supported by B<xz> (diagnosed as corrupt input)."
+msgstr "B<lzip> 1.4 이상에서는 버전 1형식의 파일을 만듭니다. 형식 버전 1로의 동기화 제거 마커 확장은 B<lzip> 1.6에 추가했습니다. 이 확장은 거의 쓰지 않으며 B<xz> 에서 조차도 지원하지 않습니다(손상된 입력 파일로 진단함)."
#. type: TP
-#: ../src/xz/xz.1:614
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<raw>"
msgstr "B<raw>"
#. type: Plain text
-#: ../src/xz/xz.1:622
-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 ""
-"원시 스트림으로 압축하거나 압축을 해제합니다(헤더 없음). 고급 사용자 전용입"
-"니다. 원시 스트림을 디코딩하려면, B<--format=raw> 옵션을 사용하고 분명하게 "
-"필터 체인을 지정하여 컨테이너 헤더에 필요한 정보를 저장하게 끔 해야합니다."
+#: ../src/xz/xz.1
+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 "원시 스트림으로 압축하거나 압축을 해제합니다(헤더 없음). 고급 사용자 전용입니다. 원시 스트림을 디코딩하려면, B<--format=raw> 옵션을 사용하고 분명하게 필터 체인을 지정하여 컨테이너 헤더에 필요한 정보를 저장하게 끔 해야합니다."
#. type: TP
-#: ../src/xz/xz.1:623
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-C> I<check>, B<--check=>I<check>"
msgstr "B<-C> I<E<lt>검사방식E<gt>>, B<--check=>I<E<lt>검사방식E<gt>>"
#. type: Plain text
-#: ../src/xz/xz.1:638
-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 ""
-"무결성 검사 방식을 지정합니다. 검사 방식은 B<.xz> 파일에 저장하며 압축 해제 "
-"데이터를 계산합니다. 이 옵션은 B<.xz> 형식으로 압축할 때만 효력이 있습니다: "
-"B<.lzma> 형식은 무결성 겁사를 지원하지 않습니다. 무결성 검사는 B<.xz> 파일 "
-"압축을 풀었을 때에 검사합니다."
+#: ../src/xz/xz.1
+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 "무결성 검사 방식을 지정합니다. 검사 방식은 B<.xz> 파일에 저장하며 압축 해제 데이터를 계산합니다. 이 옵션은 B<.xz> 형식으로 압축할 때만 효력이 있습니다: B<.lzma> 형식은 무결성 겁사를 지원하지 않습니다. 무결성 검사는 B<.xz> 파일 압축을 풀었을 때에 검사합니다."
#. type: Plain text
-#: ../src/xz/xz.1:642
+#: ../src/xz/xz.1
msgid "Supported I<check> types:"
msgstr "지원 I<검사> 형식:"
#. type: TP
-#: ../src/xz/xz.1:643
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<none>"
msgstr "B<none>"
#. type: Plain text
-#: ../src/xz/xz.1:649
-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 ""
-"어떤 경우에도 무결성 검사 계산을 수행하지 않습니다. 보통 바람직하지 못한 생"
-"각입니다. 데이터 무결성을 다른 방식으로라도 검증해야 하는 상황이면 쓸만할 "
-"수 있습니다."
+#: ../src/xz/xz.1
+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 "어떤 경우에도 무결성 검사 계산을 수행하지 않습니다. 보통 바람직하지 못한 생각입니다. 데이터 무결성을 다른 방식으로라도 검증해야 하는 상황이면 쓸만할 수 있습니다."
#. type: TP
-#: ../src/xz/xz.1:649
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<crc32>"
msgstr "B<crc32>"
#. type: Plain text
-#: ../src/xz/xz.1:652
+#: ../src/xz/xz.1
msgid "Calculate CRC32 using the polynomial from IEEE-802.3 (Ethernet)."
msgstr "IEEE-802.3 (이더넷)의 다항 연산으로 CRC32를 계산합니다."
#. type: TP
-#: ../src/xz/xz.1:652
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<crc64>"
msgstr "B<crc64>"
#. type: Plain text
-#: ../src/xz/xz.1:657
-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 ""
-"ECMA-182의 다항식 연산으로 CRC64를 계산합니다. 이 동작이 기본 동작이기 때문"
-"에 CRC32가 깨진 파일을 찾을 때보다는 좀 낮은 편이며 속도 차이도 거의 없습니"
-"다."
+#: ../src/xz/xz.1
+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 "ECMA-182의 다항식 연산으로 CRC64를 계산합니다. 이 동작이 기본 동작이기 때문에 CRC32가 깨진 파일을 찾을 때보다는 좀 낮은 편이며 속도 차이도 거의 없습니다."
#. type: TP
-#: ../src/xz/xz.1:657
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<sha256>"
msgstr "B<sha256>"
#. type: Plain text
-#: ../src/xz/xz.1:661
+#: ../src/xz/xz.1
msgid "Calculate SHA-256. This is somewhat slower than CRC32 and CRC64."
msgstr "SHA-256 해시를 계산합니다. CRC32와 CRC64 보다는 좀 느립니다."
#. type: Plain text
-#: ../src/xz/xz.1:667
-msgid ""
-"Integrity of the B<.xz> headers is always verified with CRC32. It is not "
-"possible to change or disable it."
-msgstr ""
-"B<.xz> 헤더 무결성은 항상 CRC32로 검증하빈다. 이를 바꾸거나 It is not "
-"possible to change or disable it."
+#: ../src/xz/xz.1
+msgid "Integrity of the B<.xz> headers is always verified with CRC32. It is not possible to change or disable it."
+msgstr "B<.xz> 헤더 무결성은 항상 CRC32로 검증하빈다. 이를 바꾸거나 It is not possible to change or disable it."
#. type: TP
-#: ../src/xz/xz.1:667
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--ignore-check>"
msgstr "B<--ignore-check>"
#. type: Plain text
-#: ../src/xz/xz.1:673
-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 ""
-"압축 데이터를 압축해제할 경우 압축 데이터의 무결성 검증을 진행하지 않습니"
-"다. B<.xz> 헤더의 CRC32 값은 그래도 여전히 보통 방식으로 검증합니다."
+#: ../src/xz/xz.1
+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 "압축 데이터를 압축해제할 경우 압축 데이터의 무결성 검증을 진행하지 않습니다. B<.xz> 헤더의 CRC32 값은 그래도 여전히 보통 방식으로 검증합니다."
#. type: Plain text
-#: ../src/xz/xz.1:676
-msgid ""
-"B<Do not use this option unless you know what you are doing.> Possible "
-"reasons to use this option:"
-msgstr ""
-"B<이 옵션이 정확히 무슨 동작을 하는지 알기 전에는 사용하지 마십시오.> 이 옵션"
-"을 사용하는 타당한 이유로:"
+#: ../src/xz/xz.1
+msgid "B<Do not use this option unless you know what you are doing.> Possible reasons to use this option:"
+msgstr "B<이 옵션이 정확히 무슨 동작을 하는지 알기 전에는 사용하지 마십시오.> 이 옵션을 사용하는 타당한 이유로:"
#. type: Plain text
-#: ../src/xz/xz.1:679
+#: ../src/xz/xz.1
msgid "Trying to recover data from a corrupt .xz file."
msgstr "깨진 .xz 파일에서 데이터 복구를 시도합니다."
#. type: Plain text
-#: ../src/xz/xz.1:685
-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 ""
-"압축 해제 속도를 늘립니다. SHA-256 또는 압축 파일에 들어간 그 무언가를 엄청 "
-"빨리 처리합니다. 다른 방식으로 파일 무결성을 검증해야 하는 목적이 아니라면 "
-"이 옵션을 사용하지 않는게 좋습니다."
+#: ../src/xz/xz.1
+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 "압축 해제 속도를 늘립니다. SHA-256 또는 압축 파일에 들어간 그 무언가를 엄청 빨리 처리합니다. 다른 방식으로 파일 무결성을 검증해야 하는 목적이 아니라면 이 옵션을 사용하지 않는게 좋습니다."
#. type: TP
-#: ../src/xz/xz.1:686
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-0> ... B<-9>"
msgstr "B<-0> ... B<-9>"
#. type: Plain text
-#: ../src/xz/xz.1:695
-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 ""
-"압축 사전 설정 수준을 선택합니다. 기본값은 B<-6>입니다. 다중 수준을 지정하"
-"면 가장 마지막 수준 옵션을 적용합니다. 개별 필터 체인을 이미 지정했다면, 압"
-"축 사전 설정 수준 값을 설정할 때 개별 필터 체인을 정리합니다."
+#: ../src/xz/xz.1
+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 "압축 사전 설정 수준을 선택합니다. 기본값은 B<-6>입니다. 다중 수준을 지정하면 가장 마지막 수준 옵션을 적용합니다. 개별 필터 체인을 이미 지정했다면, 압축 사전 설정 수준 값을 설정할 때 개별 필터 체인을 정리합니다."
#. type: Plain text
-#: ../src/xz/xz.1:710
-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 ""
-"사전 설정간 차이는 B<gzip>(1)과 B<bzip2>(1)을 사용할 때보다 더 비중을 차지합"
-"니다. 선택한 압축 설정은 압축 해제시 필요한 메모리 사용량을 셜정하므로 사전 "
-"설정 수준 값을 너무 높게 지정하면 RAM 용량이 적은 오래된 시스템에서 파일 압"
-"축 해제시 실패할 수 있습니다. 게다가, B<gzip>(1) 과 B<bzip2>(1)에서 처럼 종"
-"종 B<모든 동작에 -9를 몰래 활용하는건 바람직하지 않습니다>."
+#: ../src/xz/xz.1
+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 "사전 설정간 차이는 B<gzip>(1)과 B<bzip2>(1)을 사용할 때보다 더 비중을 차지합니다. 선택한 압축 설정은 압축 해제시 필요한 메모리 사용량을 셜정하므로 사전 설정 수준 값을 너무 높게 지정하면 RAM 용량이 적은 오래된 시스템에서 파일 압축 해제시 실패할 수 있습니다. 게다가, B<gzip>(1) 과 B<bzip2>(1)에서 처럼 종종 B<모든 동작에 -9를 몰래 활용하는건 바람직하지 않습니다>."
#. type: TP
-#: ../src/xz/xz.1:711
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-0> ... B<-3>"
msgstr "B<-0> ... B<-3>"
#. type: Plain text
-#: ../src/xz/xz.1:723
-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 ""
-"동작이 빠른 사전 설정 부류입니다. B<-0>은 때로는 B<gzip -9> 명령보다 압축율"
-"이 훨씬 우수하면서도 더 빠릅니다. 더 큰 값은 보통 B<bzip2>(1) 명령과 비교했"
-"을 떄 압축 결과가 압축 데이터에 따라 달라지더라도, 비교할 법한 속도 또는 더 "
-"나은 압축율을 보입니다."
+#: ../src/xz/xz.1
+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 "동작이 빠른 사전 설정 부류입니다. B<-0>은 때로는 B<gzip -9> 명령보다 압축율이 훨씬 우수하면서도 더 빠릅니다. 더 큰 값은 보통 B<bzip2>(1) 명령과 비교했을 떄 압축 결과가 압축 데이터에 따라 달라지더라도, 비교할 법한 속도 또는 더 나은 압축율을 보입니다."
#. type: TP
-#: ../src/xz/xz.1:723
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-4> ... B<-6>"
msgstr "B<-4> ... B<-6>"
#. type: Plain text
-#: ../src/xz/xz.1:737
-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 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 ""
-"오래된 시스템에서 조차도 압축 해제 프로그램의 적절한 메모리 사용량을 보이면"
-"서 양호하거나 최적의 압축율을 보여줍니다. B<-6> 옵션은 압축 해제시 메모리 사"
-"용량이 16MiB 밖에 안되기 때문에 파일을 배포할 때 최적의 선택인 기본 값입니"
-"다. (B<-5e> 또는 B<-6e>도 역시 고려할 만합니다. B<--extreme>을 참고하십시"
-"오.)"
+#: ../src/xz/xz.1
+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 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 "오래된 시스템에서 조차도 압축 해제 프로그램의 적절한 메모리 사용량을 보이면서 양호하거나 최적의 압축율을 보여줍니다. B<-6> 옵션은 압축 해제시 메모리 사용량이 16MiB 밖에 안되기 때문에 파일을 배포할 때 최적의 선택인 기본 값입니다. (B<-5e> 또는 B<-6e>도 역시 고려할 만합니다. B<--extreme>을 참고하십시오.)"
#. type: TP
-#: ../src/xz/xz.1:737
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-7 ... -9>"
msgstr "B<-7 ... -9>"
#. type: Plain text
-#: ../src/xz/xz.1:744
-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 ""
-"B<-6>과 비슷하지만 압축 및 압축 해제시 요구 메모리 사용량이 더 높습니다. 압"
-"축 파일이 각각 8MiB, 16MiB, 32MiB 보다 클 경우에만 쓸만한 옵션입니다."
+#: ../src/xz/xz.1
+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 "B<-6>과 비슷하지만 압축 및 압축 해제시 요구 메모리 사용량이 더 높습니다. 압축 파일이 각각 8MiB, 16MiB, 32MiB 보다 클 경우에만 쓸만한 옵션입니다."
#. type: Plain text
-#: ../src/xz/xz.1:752
-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 ""
-"동일한 하드웨어에서, 압축 해제 속도는 압축한 데이터의 초당 정적 바이트 처리 "
-"수의 어림 평균입니다. 다시 말해, 압축율을 더 올리면, 압축 해제 속도도 역시 "
-"올라갑니다. 이는 곧 초당 비압축 데이터 출력 양이 달라질 수 있단 뜻입니다."
+#: ../src/xz/xz.1
+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 "동일한 하드웨어에서, 압축 해제 속도는 압축한 데이터의 초당 정적 바이트 처리 수의 어림 평균입니다. 다시 말해, 압축율을 더 올리면, 압축 해제 속도도 역시 올라갑니다. 이는 곧 초당 비압축 데이터 출력 양이 달라질 수 있단 뜻입니다."
#. type: Plain text
-#: ../src/xz/xz.1:754
+#: ../src/xz/xz.1
msgid "The following table summarises the features of the presets:"
msgstr "다음 표에 사전 설정 기능을 정리했습니다:"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842 ../src/xz/xz.1:2839
+#: ../src/xz/xz.1
#, no-wrap
msgid "Preset"
msgstr "Preset"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842
+#: ../src/xz/xz.1
#, no-wrap
msgid "DictSize"
msgstr "DictSize"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842 ../src/xz/xz.1:2839
+#: ../src/xz/xz.1
#, no-wrap
msgid "CompCPU"
msgstr "CompCPU"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842
+#: ../src/xz/xz.1
#, no-wrap
msgid "CompMem"
msgstr "CompMem"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842
+#: ../src/xz/xz.1
#, no-wrap
msgid "DecMem"
msgstr "DecMem"
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:2450 ../src/xz/xz.1:2475
-#: ../src/xz/xz.1:2840
+#: ../src/xz/xz.1
#, no-wrap
msgid "-0"
msgstr "-0"
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:843 ../src/xz/xz.1:2450
+#: ../src/xz/xz.1
#, no-wrap
msgid "256 KiB"
msgstr "256 KiB"
#. type: TP
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:2840 ../src/scripts/xzgrep.1:82
+#: ../src/xz/xz.1 ../src/scripts/xzgrep.1
#, no-wrap
msgid "0"
msgstr "0"
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:764 ../src/xz/xz.1:845 ../src/xz/xz.1:2475
+#: ../src/xz/xz.1
#, no-wrap
msgid "3 MiB"
msgstr "3 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:763 ../src/xz/xz.1:843 ../src/xz/xz.1:844
-#: ../src/xz/xz.1:2451 ../src/xz/xz.1:2452 ../src/xz/xz.1:2454
+#: ../src/xz/xz.1
#, no-wrap
msgid "1 MiB"
msgstr "1 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:2451 ../src/xz/xz.1:2476
-#: ../src/xz/xz.1:2841
+#: ../src/xz/xz.1
#, no-wrap
msgid "-1"
msgstr "-1"
#. type: TP
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:1758 ../src/xz/xz.1:2841
-#: ../src/scripts/xzgrep.1:86
+#: ../src/xz/xz.1 ../src/scripts/xzgrep.1
#, no-wrap
msgid "1"
msgstr "1"
#. type: tbl table
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:767 ../src/xz/xz.1:768 ../src/xz/xz.1:848
-#: ../src/xz/xz.1:849 ../src/xz/xz.1:2476
+#: ../src/xz/xz.1
#, no-wrap
msgid "9 MiB"
msgstr "9 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:764 ../src/xz/xz.1:844 ../src/xz/xz.1:845
-#: ../src/xz/xz.1:2452 ../src/xz/xz.1:2455 ../src/xz/xz.1:2476
+#: ../src/xz/xz.1
#, no-wrap
msgid "2 MiB"
msgstr "2 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:764 ../src/xz/xz.1:2452 ../src/xz/xz.1:2477
-#: ../src/xz/xz.1:2842
+#: ../src/xz/xz.1
#, no-wrap
msgid "-2"
msgstr "-2"
#. type: tbl table
-#: ../src/xz/xz.1:764 ../src/xz/xz.1:1760 ../src/xz/xz.1:2842
+#: ../src/xz/xz.1
#, no-wrap
msgid "2"
msgstr "2"
#. type: tbl table
-#: ../src/xz/xz.1:764 ../src/xz/xz.1:769 ../src/xz/xz.1:850 ../src/xz/xz.1:2477
+#: ../src/xz/xz.1
#, no-wrap
msgid "17 MiB"
msgstr "17 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:2453 ../src/xz/xz.1:2478
-#: ../src/xz/xz.1:2843
+#: ../src/xz/xz.1
#, no-wrap
msgid "-3"
msgstr "-3"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:766 ../src/xz/xz.1:843 ../src/xz/xz.1:846
-#: ../src/xz/xz.1:847 ../src/xz/xz.1:2453 ../src/xz/xz.1:2454
-#: ../src/xz/xz.1:2456
+#: ../src/xz/xz.1
#, no-wrap
msgid "4 MiB"
msgstr "4 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:2843
+#: ../src/xz/xz.1
#, no-wrap
msgid "3"
msgstr "3"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:770 ../src/xz/xz.1:851 ../src/xz/xz.1:2458
-#: ../src/xz/xz.1:2459 ../src/xz/xz.1:2478
+#: ../src/xz/xz.1
#, no-wrap
msgid "32 MiB"
msgstr "32 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:766 ../src/xz/xz.1:846 ../src/xz/xz.1:847
+#: ../src/xz/xz.1
#, no-wrap
msgid "5 MiB"
msgstr "5 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:766 ../src/xz/xz.1:2454 ../src/xz/xz.1:2479
-#: ../src/xz/xz.1:2844
+#: ../src/xz/xz.1
#, no-wrap
msgid "-4"
msgstr "-4"
#. type: tbl table
-#: ../src/xz/xz.1:766 ../src/xz/xz.1:1759 ../src/xz/xz.1:1761
-#: ../src/xz/xz.1:1762 ../src/xz/xz.1:1764 ../src/xz/xz.1:2844
+#: ../src/xz/xz.1
#, no-wrap
msgid "4"
msgstr "4"
#. type: tbl table
-#: ../src/xz/xz.1:766 ../src/xz/xz.1:846 ../src/xz/xz.1:847 ../src/xz/xz.1:2479
+#: ../src/xz/xz.1
#, no-wrap
msgid "48 MiB"
msgstr "48 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:2455 ../src/xz/xz.1:2480
-#: ../src/xz/xz.1:2845
+#: ../src/xz/xz.1
#, no-wrap
msgid "-5"
msgstr "-5"
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:768 ../src/xz/xz.1:848 ../src/xz/xz.1:849
-#: ../src/xz/xz.1:2455 ../src/xz/xz.1:2456 ../src/xz/xz.1:2457
+#: ../src/xz/xz.1
#, no-wrap
msgid "8 MiB"
msgstr "8 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:2845
+#: ../src/xz/xz.1
#, no-wrap
msgid "5"
msgstr "5"
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:768 ../src/xz/xz.1:848 ../src/xz/xz.1:849
-#: ../src/xz/xz.1:2480 ../src/xz/xz.1:2481
+#: ../src/xz/xz.1
#, no-wrap
msgid "94 MiB"
msgstr "94 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:768 ../src/xz/xz.1:2456 ../src/xz/xz.1:2481
-#: ../src/xz/xz.1:2846
+#: ../src/xz/xz.1
#, no-wrap
msgid "-6"
msgstr "-6"
#. type: tbl table
-#: ../src/xz/xz.1:768 ../src/xz/xz.1:769 ../src/xz/xz.1:770 ../src/xz/xz.1:771
-#: ../src/xz/xz.1:2846
+#: ../src/xz/xz.1
#, no-wrap
msgid "6"
msgstr "6"
#. type: tbl table
-#: ../src/xz/xz.1:769 ../src/xz/xz.1:2457 ../src/xz/xz.1:2482
+#: ../src/xz/xz.1
#, no-wrap
msgid "-7"
msgstr "-7"
#. type: tbl table
-#: ../src/xz/xz.1:769 ../src/xz/xz.1:850 ../src/xz/xz.1:2457
-#: ../src/xz/xz.1:2458 ../src/xz/xz.1:2479
+#: ../src/xz/xz.1
#, no-wrap
msgid "16 MiB"
msgstr "16 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:769 ../src/xz/xz.1:850 ../src/xz/xz.1:2482
+#: ../src/xz/xz.1
#, no-wrap
msgid "186 MiB"
msgstr "186 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:770 ../src/xz/xz.1:2458 ../src/xz/xz.1:2483
+#: ../src/xz/xz.1
#, no-wrap
msgid "-8"
msgstr "-8"
#. type: tbl table
-#: ../src/xz/xz.1:770 ../src/xz/xz.1:851 ../src/xz/xz.1:2483
+#: ../src/xz/xz.1
#, no-wrap
msgid "370 MiB"
msgstr "370 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:770 ../src/xz/xz.1:851
+#: ../src/xz/xz.1
#, no-wrap
msgid "33 MiB"
msgstr "33 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:2459 ../src/xz/xz.1:2484
+#: ../src/xz/xz.1
#, no-wrap
msgid "-9"
msgstr "-9"
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:852 ../src/xz/xz.1:2459
+#: ../src/xz/xz.1
#, no-wrap
msgid "64 MiB"
msgstr "64 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:852 ../src/xz/xz.1:2484
+#: ../src/xz/xz.1
#, no-wrap
msgid "674 MiB"
msgstr "674 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:852
+#: ../src/xz/xz.1
#, no-wrap
msgid "65 MiB"
msgstr "65 MiB"
#. type: Plain text
-#: ../src/xz/xz.1:777
+#: ../src/xz/xz.1
msgid "Column descriptions:"
msgstr "컬럼 설명:"
#. type: Plain text
-#: ../src/xz/xz.1:789
-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 ""
-"DictSize는 LZMA2 딕셔너리 크기입니다. 압축 해제 파일의 크기보다 딕셔너리에"
-"서 사용하는 낭비 메모리 용량입니다. 실제로 필요하지 않은 B<-7> ... B<-9> 사"
-"전 설정값을 피해야 하는 적절한 이유이기도 합니다. B<-6> 이하에서는 소모 메모"
-"리 양이 충분히 적거나 따로 신경쓸 필요가 없습니다."
+#: ../src/xz/xz.1
+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 "DictSize는 LZMA2 딕셔너리 크기입니다. 압축 해제 파일의 크기보다 딕셔너리에서 사용하는 낭비 메모리 용량입니다. 실제로 필요하지 않은 B<-7> ... B<-9> 사전 설정값을 피해야 하는 적절한 이유이기도 합니다. B<-6> 이하에서는 소모 메모리 양이 충분히 적거나 따로 신경쓸 필요가 없습니다."
#. type: Plain text
-#: ../src/xz/xz.1:798
-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 ""
-"CompCPU는 압축 속도에 영향을 주는 LZMA2 설정의 단순화 표기 값입니다. 딕셔너"
-"리 크기는 속도에도 영향을 주기 때문에 CompCPU는 B<-6> ... B<-9> 수준값과 동일"
-"한데, 고수준 값은 여전히 조금 더 느려질 수 있습니다. 느려지는 만큼 압축율은 "
-"가능한 한 더 좋아집니다. B<--extreme>을 참고하십시오."
+#: ../src/xz/xz.1
+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 "CompCPU는 압축 속도에 영향을 주는 LZMA2 설정의 단순화 표기 값입니다. 딕셔너리 크기는 속도에도 영향을 주기 때문에 CompCPU는 B<-6> ... B<-9> 수준값과 동일한데, 고수준 값은 여전히 조금 더 느려질 수 있습니다. 느려지는 만큼 압축율은 가능한 한 더 좋아집니다. B<--extreme>을 참고하십시오."
#. type: Plain text
-#: ../src/xz/xz.1:806
-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 ""
-"CompMem은 단일-스레드 모드에서 필요한 압축 프로그램의 메모리 점유 용량입니"
-"다. B<xz> 버전에 따라 다를 수 있습니다. 앞으로 도입할 다중-스레드 모드의 메"
-"모리 사용량은 단일-스레드 모드에서의 그것보다는 훨씬 늘어납니다."
+#: ../src/xz/xz.1
+msgid "CompMem contains the compressor memory requirements in the single-threaded mode. It may vary slightly between B<xz> versions."
+msgstr "CompMem은 단일-스레드 모드에서 필요한 압축 프로그램의 메모리 점유 용량입니다. B<xz> 버전에 따라 다를 수 있습니다."
#. type: Plain text
-#: ../src/xz/xz.1:813
-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 ""
-"DecMem은 압축 해제 프로그램의 메모리 점유용량입니다. 이는 곧, 압축 해제 프로"
-"그램에서 필요한 메모리 사용량을 압축 설정에서 결정한다는 의미가 들어있습니"
-"다. 정확한 압축 해제 프로그램의 메모리 사용량은 LZMA2 딕셔너리 크기 보다는 "
-"조금 많지만 테이블의 값은 MiB 용량으로 완전히 반올림한 값입니다."
+#: ../src/xz/xz.1
+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 "DecMem은 압축 해제 프로그램의 메모리 점유용량입니다. 이는 곧, 압축 해제 프로그램에서 필요한 메모리 사용량을 압축 설정에서 결정한다는 의미가 들어있습니다. 정확한 압축 해제 프로그램의 메모리 사용량은 LZMA2 딕셔너리 크기 보다는 조금 많지만 테이블의 값은 MiB 용량으로 완전히 반올림한 값입니다."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Memory requirements of the multi-threaded mode are significantly higher than that of the single-threaded mode. With the default value of B<--block-size>, each thread needs 3*3*DictSize plus CompMem or DecMem. For example, four threads with preset B<-6> needs 660\\(en670\\ MiB of memory."
+msgstr "다중-스레드 모드에서 필요한 메모리 용량은 단일-스레드 모드보단 약간 더 많습니다. B<--block-size> 기본값에 따라, 각 스레드에서는 3*3*딕셔녀리_크기 + 압축시_메모리용량 또는 압축_해제시_메모리용량 정도가 필요합니다. 예를 들면, 스레드 넷에 사전 설정 옵션 B<-6>을 사용한다면, 660\\(en670 MiB 메모리 용량이 필요합니다."
#. type: TP
-#: ../src/xz/xz.1:814
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-e>, B<--extreme>"
msgstr "B<-e>, B<--extreme>"
#. type: Plain text
-#: ../src/xz/xz.1:823
-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 ""
-"기대하는 만큼의 좀 더 나은 압축율을 확보하려 선택한 압축 사전 설정 수준의 느"
-"린 변형 옵션을 사용하지만, 재수 없는 와중에 골로 가는 경우가 생기기도 합니"
-"다. 압축 해제 프로그램의 메모리 사용에는 영향을 주지 않지만, 압축 프로그램"
-"의 메모리 사용량은 B<-0> ... B<-3> 사전 설정 수준에서 약간 더 올라갈 뿐입니"
-"다."
+#: ../src/xz/xz.1
+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 "기대하는 만큼의 좀 더 나은 압축율을 확보하려 선택한 압축 사전 설정 수준의 느린 변형 옵션을 사용하지만, 재수 없는 와중에 골로 가는 경우가 생기기도 합니다. 압축 해제 프로그램의 메모리 사용에는 영향을 주지 않지만, 압축 프로그램의 메모리 사용량은 B<-0> ... B<-3> 사전 설정 수준에서 약간 더 올라갈 뿐입니다."
#. type: Plain text
-#: ../src/xz/xz.1:835
-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 ""
-"4MiB와 8MiB 두 가지 딕셔너리 용량 설정이 있기 때문에 B<-3e> 와 B<-5e> 사전 설"
-"정을 (CompCPU 수치를 낮춰서) 각각 B<-4e> 와 B<-6e> 보다 약간 더 빠르게 설정"
-"할 수 있습니다. 이런 식으로 두 사전 설정이 동일하지 않습니다."
+#: ../src/xz/xz.1
+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 "4MiB와 8MiB 두 가지 딕셔너리 용량 설정이 있기 때문에 B<-3e> 와 B<-5e> 사전 설정을 (CompCPU 수치를 낮춰서) 각각 B<-4e> 와 B<-6e> 보다 약간 더 빠르게 설정할 수 있습니다. 이런 식으로 두 사전 설정이 동일하지 않습니다."
#. type: tbl table
-#: ../src/xz/xz.1:843
+#: ../src/xz/xz.1
#, no-wrap
msgid "-0e"
msgstr "-0e"
#. type: tbl table
-#: ../src/xz/xz.1:843 ../src/xz/xz.1:844 ../src/xz/xz.1:845 ../src/xz/xz.1:847
-#: ../src/xz/xz.1:849 ../src/xz/xz.1:850 ../src/xz/xz.1:851 ../src/xz/xz.1:852
-#: ../src/xz/xz.1:2848
+#: ../src/xz/xz.1
#, no-wrap
msgid "8"
msgstr "8"
#. type: tbl table
-#: ../src/xz/xz.1:844
+#: ../src/xz/xz.1
#, no-wrap
msgid "-1e"
msgstr "-1e"
#. type: tbl table
-#: ../src/xz/xz.1:844
+#: ../src/xz/xz.1
#, no-wrap
msgid "13 MiB"
msgstr "13 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:845
+#: ../src/xz/xz.1
#, no-wrap
msgid "-2e"
msgstr "-2e"
#. type: tbl table
-#: ../src/xz/xz.1:845
+#: ../src/xz/xz.1
#, no-wrap
msgid "25 MiB"
msgstr "25 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:846
+#: ../src/xz/xz.1
#, no-wrap
msgid "-3e"
msgstr "-3e"
#. type: tbl table
-#: ../src/xz/xz.1:846 ../src/xz/xz.1:848 ../src/xz/xz.1:2847
+#: ../src/xz/xz.1
#, no-wrap
msgid "7"
msgstr "7"
#. type: tbl table
-#: ../src/xz/xz.1:847
+#: ../src/xz/xz.1
#, no-wrap
msgid "-4e"
msgstr "-4e"
#. type: tbl table
-#: ../src/xz/xz.1:848 ../src/xz/xz.1:2847
+#: ../src/xz/xz.1
#, no-wrap
msgid "-5e"
msgstr "-5e"
#. type: tbl table
-#: ../src/xz/xz.1:849 ../src/xz/xz.1:2848
+#: ../src/xz/xz.1
#, no-wrap
msgid "-6e"
msgstr "-6e"
#. type: tbl table
-#: ../src/xz/xz.1:850
+#: ../src/xz/xz.1
#, no-wrap
msgid "-7e"
msgstr "-7e"
#. type: tbl table
-#: ../src/xz/xz.1:851
+#: ../src/xz/xz.1
#, no-wrap
msgid "-8e"
msgstr "-8e"
#. type: tbl table
-#: ../src/xz/xz.1:852
+#: ../src/xz/xz.1
#, no-wrap
msgid "-9e"
msgstr "-9e"
#. type: Plain text
-#: ../src/xz/xz.1:864
-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 ""
-"예를 들면, 8MiB 딕셔너리를 활용하는 네가지 사전 설정이 있다고 할 때, 빠른 순"
-"으로 설정을 나열하자면, B<-5>, B<-6>, B<-5e>, B<-6e> 입니다."
+#: ../src/xz/xz.1
+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 "예를 들면, 8MiB 딕셔너리를 활용하는 네가지 사전 설정이 있다고 할 때, 빠른 순으로 설정을 나열하자면, B<-5>, B<-6>, B<-5e>, B<-6e> 입니다."
#. type: TP
-#: ../src/xz/xz.1:864
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--fast>"
msgstr "B<--fast>"
#. type: TP
-#: ../src/xz/xz.1:867
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--best>"
msgstr "B<--best>"
#. type: Plain text
-#: ../src/xz/xz.1:878
-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 ""
-"이 옵션은 B<-0> 과 B<-9>의 별칭으로 각각 오해할 수 있습니다. LZMA 유틸리티의 "
-"하위 호환성을 목적으로 제공합니다. 이 옵션 사용은 피하십시오."
+#: ../src/xz/xz.1
+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 "이 옵션은 B<-0> 과 B<-9>의 별칭으로 각각 오해할 수 있습니다. LZMA 유틸리티의 하위 호환성을 목적으로 제공합니다. 이 옵션 사용은 피하십시오."
#. type: TP
-#: ../src/xz/xz.1:878
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--block-size=>I<size>"
msgstr "B<--block-size=>I<E<lt>크기E<gt>>"
#. type: Plain text
-#: ../src/xz/xz.1:891
-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 ""
-"B<.xz> 형식으로 압축할 때, 입력 데이터를 I<E<lt>크기E<gt>> 바이트 블록으로 입"
-"력 데이터를 쪼갭니다. 각각의 블록은 다중-스레드 방식으로 처리할 수 있고 임"
-"의 접근 압축 해제 가능성을 제한할 수 있게 개별적으로 압축 처리합니다. 이 옵"
-"션은 보통 다중-스레드 모드에서 기본 블록 크기를 지정할 때 사용하지만, 단일-스"
-"레드 모드에서도 사용할 수 있습니다."
+#: ../src/xz/xz.1
+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 "B<.xz> 형식으로 압축할 때, 입력 데이터를 I<E<lt>크기E<gt>> 바이트 블록으로 입력 데이터를 쪼갭니다. 각각의 블록은 다중-스레드 방식으로 처리할 수 있고 임의 접근 압축 해제 가능성을 제한할 수 있게 개별적으로 압축 처리합니다. 이 옵션은 보통 다중-스레드 모드에서 기본 블록 크기를 지정할 때 사용하지만, 단일-스레드 모드에서도 사용할 수 있습니다."
#. type: Plain text
-#: ../src/xz/xz.1:909
-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\\(en4 times the size of the LZMA2 dictionary or at least 1 "
-"MiB. Using I<size> less than the LZMA2 dictionary size is waste of RAM "
-"because then the LZMA2 dictionary buffer will never get fully used. The "
-"sizes of the blocks are stored in the block headers, which a future version "
-"of B<xz> will use for multi-threaded decompression."
-msgstr ""
-"다중-스레드 모드에서는 약 3배 용량의 I<E<lt>크기E<gt>> 바이트만큼 각 스레드 "
-"별로 입출력 버퍼링용 공간을 할당합니다. 기본 I<E<lt>크기E<gt>>는 LZMA2 딕셔"
-"너리 크기 또는 1MiB 중 가장 큰 쪽의 세 배입니다. 보통 바람직한 값으로 LZMA2 "
-"딕셔너리 크기나 최소한 1MiB의 2\\(en4배입니다. LZMA2 딕셔너리 크기보다 작은 "
-"I<E<lt>크기E<gt>> 는 램의 소모적 사용 공간으로 할당하는데 LZMA2 딕셔너리 버퍼"
-"를 할당한 용량 크기 전체를 다 사용하지 않기 때문입니다. 블록 크기는 블록 헤"
-"더에 저장하며, 블록 헤더는 B<xz> 차기 버전에서 다중-스레드 압축 해제시 활용"
-"할 예정입니다."
+#: ../src/xz/xz.1
+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\\(en4 times the size of the LZMA2 dictionary or at least 1 MiB. Using I<size> less than the LZMA2 dictionary size is waste of RAM because then the LZMA2 dictionary buffer will never get fully used. In multi-threaded mode, the sizes of the blocks are stored in the block headers. This size information is required for multi-threaded decompression."
+msgstr "다중-스레드 모드에서는 약 3배 용량의 I<E<lt>크기E<gt>> 바이트만큼 각 스레드 별로 입출력 버퍼링용 공간을 할당합니다. 기본 I<E<lt>크기E<gt>>는 LZMA2 딕셔너리 크기 또는 1MiB 중 가장 큰 쪽의 세 배입니다. 보통 적절한 값으로 LZMA2 딕셔너리 크기 또는 최소한 1MiB 용량의 2\\(en4배입니다. LZMA2 딕셔너리 크기보다 작은 I<E<lt>크기E<gt>>는 램의 소모적 사용 공간으로 할당하는데 LZMA2 딕셔너리 버퍼를 할당한 용량 크기 전체를 다 사용하지 않기 때문입니다. 다중-스레드 모드에서 블록 크기는 블록 헤더에 저장하며, 이 크기 정보는 다중-스레드 압축 해제시 필요합니다."
#. type: Plain text
-#: ../src/xz/xz.1:918
-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 ""
-"단일-스레드 모드에서는 기본적으로 블록 쪼개기를 하지 않습니다. 이 옵션을 설"
-"정한다고 해서 메모리 사용에 영향을 주지는 않습니다. 블록 헤더에 크기 정보를 "
-"저장하지 않기 때문에 단일-스레드 모드에서 만든 파일은 다중-스레드 모드에서 만"
-"든 파일과 동일하지 않습니다. 크기 정보의 누락은 또한 B<xz> 차기 버전에서 다"
-"중-스레드 모드에서 압축 해제가 불가능함을 의미하기도 합니다."
+#: ../src/xz/xz.1
+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 B<xz> won't be able decompress the files in multi-threaded mode."
+msgstr "단일-스레드 모드에서는 기본적으로 블록 쪼개기를 하지 않습니다. 이 옵션을 설정한다고 해서 메모리 사용에 영향을 주지는 않습니다. 블록 헤더에 크기 정보를 저장하지 않기 때문에 단일-스레드 모드에서 만든 파일은 다중-스레드 모드에서 만든 파일과 동일하지 않습니다. 크기 정보의 누락은 또한 B<xz>에서 다중-스레드 모드로 압축 해제를 진행할 수 없음을 의미하기도 합니다."
#. type: TP
-#: ../src/xz/xz.1:918
+#: ../src/xz/xz.1
#, no-wrap
-msgid "B<--block-list=>I<sizes>"
-msgstr "B<--block-list=>I<E<lt>크기E<gt>>"
+msgid "B<--block-list=>I<items>"
+msgstr "B<--block-list=>I<E<lt>항목E<gt>>"
#. type: Plain text
-#: ../src/xz/xz.1:924
-msgid ""
-"When compressing to the B<.xz> format, start a new block after the given "
-"intervals of uncompressed data."
-msgstr ""
-"B<.xz> 형식으로 압축할 때, 압축하지 않은 데이터에 주어진 처리 시간 간격 이후"
-"에 새 블록 처리를 시작합니다."
+#: ../src/xz/xz.1
+msgid "When compressing to the B<.xz> format, start a new block with an optional custom filter chain after the given intervals of uncompressed data."
+msgstr "B<.xz> 형식으로 압축할 때, 압축하지 않은 데이터로 부터 일정 간격 이후에 새 블록 처리를 시작합니다."
#. type: Plain text
-#: ../src/xz/xz.1:930
-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 ""
-"압축하지 않은 블록 I<E<lt>크기E<gt>>는 쉼표로 구분한 목록으로 지정합니다. 크"
-"기 값을 생략(둘 이상의 연속 쉼표)는 이전 블록 크기를 계속 사용하겠다는 의미입"
-"니다."
+#: ../src/xz/xz.1
+msgid "The I<items> are a comma-separated list. Each item consists of an optional filter chain number between 0 and 9 followed by a colon (B<:>) and a required size of uncompressed data. Omitting an item (two or more consecutive commas) is a shorthand to use the size and filters of the previous item."
+msgstr "I<E<lt>항목E<gt>>은 쉼표로 구분한 목록으로 지정합니다. 각 항목은 콜론 (B<:>)으로 구분한 0부터 9까지의 추가 필터 체인 번호 값으로 이루어져 있으며, 압축하지 않은 데이터의 크기 값이 필요합니다. 항목을 생략하면(둘 이상의 쉼표 연속 표기) 이전 항목의 크기와 필터를 활용하겠다는 함축 의미를 넣을 수 있습니다."
#. type: Plain text
-#: ../src/xz/xz.1:940
-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 ""
-"입력 파일이 I<E<lt>크기E<gt>>의 합보다 크면, 마지막 I<E<lt>크기E<gt>> 값을 파"
-"일 마지막까지 반복해서 사용합니다. 특별히 B<0> 값을 마지막 값으로 사용하여 "
-"파일 나머지 부분을 단일 블록으로 인코딩해야 한다는 의미를 나타낼 수도 있습니"
-"다."
+#: ../src/xz/xz.1
+msgid "If the input file is bigger than the sum of the sizes in I<items>, the last item is repeated until the end of the file. A special value of B<0> may be used as the last size to indicate that the rest of the file should be encoded as a single block."
+msgstr "입력 파일이 I<E<lt>항목E<gt>> 크기의 합보다 크면, 마지막 항목을 파일의 끝까지 반복합니다. 특별히 B<0> 값을 마지막 값으로 사용하여 파일 나머지 부분을 단일 블록으로 인코딩해야 한다는 의미를 나타낼 수도 있습니다."
#. type: Plain text
-#: ../src/xz/xz.1:955
-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 ""
-"인코더 블록 크기를 초과하는 I<E<lt>크기E<gt>> 값을 지정하면(스레드 모드 기본"
-"값 또는 B<--block-size=>I<E<lt>크기E<gt>> 옵션으로 지정한 값), 인코더는 "
-"I<E<lt>크기E<gt>> 지정 용량 범위는 유지하면서 추가 블록을 만듭니다. 예를 들"
-"면 B<--block-size=10MiB> B<--block-list=5MiB,10MiB,8MiB,12MiB,24MiB> 옵션을 "
-"지정하고 입력 파일을 80MiB 용량으로 전달하면, 각각 5, 10, 8, 10, 2, 10, 10, "
-"4, 10, 10, 1 MiB 용량을 차지하는 블록 11개를 결과물로 내줍니다."
+#: ../src/xz/xz.1
+msgid "An alternative filter chain for each block can be specified in combination with the B<--filters1=>I<filters> \\&...\\& B<--filters9=>I<filters> options. These options define filter chains with an identifier between 1\\(en9. Filter chain 0 can be used to refer to the default filter chain, which is the same as not specifying a filter chain. The filter chain identifier can be used before the uncompressed size, followed by a colon (B<:>). For example, if one specifies B<--block-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB> then blocks will be created using:"
+msgstr "B<--filters1=>I<E<lt>필터E<gt>> \\&...\\& B<--filters9=>I<E<lt>필터E<gt>> 옵션 조합으로 각 블록별 별도 필터 체인을 지정할 수 있습니다. 이 옵션은 1\\(en9번 필터 체인을 지정합니다. 필터 체인 0번은 필터 체인을 지정하지 않았을 때와 동일한 기본 필터 체인으로 참조할 수 있습니다. 필터 체인 식별 번호는 비 압축 크기 앞에 콜론(B<:>)을 붙여 사용할 수 있습니다. 예를 들면, B<--block-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB> 옵션을 지정했을 경우 다음 규칙대로 블록을 만듭니다:"
#. type: Plain text
-#: ../src/xz/xz.1:961
-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 ""
-"다중-스레드 모드에서 블록 크기는 블록 헤더에 저장합니다. 단일-스레드 모드에"
-"서는 저장하지 않기 때문에 인코딩 처리한 출력은 다중-스레드 모드의 출력 결과물"
-"과는 다릅니다."
+#: ../src/xz/xz.1
+msgid "The filter chain specified by B<--filters1> and 2 MiB input"
+msgstr "B<--filters1> 필터 체인에서는 2MiB 입력을"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The filter chain specified by B<--filters3> and 2 MiB input"
+msgstr "B<--filters3> 필터 체인에서는 2MiB 입력을"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The filter chain specified by B<--filters2> and 4 MiB input"
+msgstr "B<--filters2> 필터 체인에서는 4MiB 입력을"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The default filter chain and 2 MiB input"
+msgstr "기본 필터 체인에서는 2MiB 입력을"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The default filter chain and 4 MiB input for every block until end of input."
+msgstr "입력이 끝나기 전의 모든 블록에는 기본 필터 체인과 4MiB 입력을 적용합니다."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "If one specifies a size that exceeds 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<items>. 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 "인코더 블록 크기를 초과하는 크기 값을 지정하면(스레드 모드 기본값 또는 B<--block-size=>I<E<lt>크기E<gt>> 옵션으로 지정한 값), 인코더는 I<E<lt>크기E<gt>> 지정 용량 범위는 유지하면서 추가 블록을 만듭니다. 예를 들면 B<--block-size=10MiB> B<--block-list=5MiB,10MiB,8MiB,12MiB,24MiB> 옵션을 지정하고 입력 파일을 80MiB 용량으로 전달하면, 각각 5, 10, 8, 10, 2, 10, 10, 4, 10, 10, 1 MiB 용량을 차지하는 블록 11개를 결과물로 내줍니다."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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 "다중-스레드 모드에서 블록 크기는 블록 헤더에 저장합니다. 단일-스레드 모드에서는 저장하지 않기 때문에 인코딩 처리한 출력은 다중-스레드 모드의 출력 결과물과는 다릅니다."
#. type: TP
-#: ../src/xz/xz.1:961
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--flush-timeout=>I<timeout>"
msgstr "B<--flush-timeout=>I<E<lt>제한시간E<gt>>"
#. type: Plain text
-#: ../src/xz/xz.1:978
-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 ""
-"압축할 때, 이전 데이터를 소거하고 다음 입력을 블록 단위로 더 읽는데 I<E<lt>제"
-"한시간E<gt>> 밀리초(양의 정수값)가 지났을 경우, 대기중이던 모든 입력 데이터"
-"를 인코더에서 소거한 다음 출력 스트림에 전달합니다. 이런 동작은 네트워크로 "
-"스트리밍한 데이터를 B<xz>로 압축할 때 쓸만합니다. I<E<lt>제한시간E<gt>> 값"
-"을 적게 지정하면 적은 지연 시간에 데이터를 받아낼 수 있지만 I<E<lt>제한시간"
-"E<gt>> 값을 크게 하면 압축율을 높일 수 있습니다."
+#: ../src/xz/xz.1
+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 "압축할 때, 이전 데이터를 소거하고 다음 입력을 블록 단위로 더 읽는데 I<E<lt>제한시간E<gt>> 밀리초(양의 정수값)가 지났을 경우, 대기중이던 모든 입력 데이터를 인코더에서 소거한 다음 출력 스트림에 전달합니다. 이런 동작은 네트워크로 스트리밍한 데이터를 B<xz>로 압축할 때 쓸만합니다. I<E<lt>제한시간E<gt>> 값을 적게 지정하면 적은 지연 시간에 데이터를 받아낼 수 있지만 I<E<lt>제한시간E<gt>> 값을 크게 하면 압축율을 높일 수 있습니다."
#. type: Plain text
-#: ../src/xz/xz.1:986
-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 ""
-"이 기능은 기본적으로 꺼져있습니다. 이 옵션을 한번 이상 지정하면, 마지막 옵션"
-"의 값대로 동작합니다. 특별히 I<E<lt>제한시간E<gt>> 값을 B<0>으로 설정하면 "
-"이 설정을 완전히 끌 수 있습니다."
+#: ../src/xz/xz.1
+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 "이 기능은 기본적으로 꺼져있습니다. 이 옵션을 한번 이상 지정하면, 마지막 옵션의 값대로 동작합니다. 특별히 I<E<lt>제한시간E<gt>> 값을 B<0>으로 설정하면 이 설정을 완전히 끌 수 있습니다."
#. type: Plain text
-#: ../src/xz/xz.1:988
+#: ../src/xz/xz.1
msgid "This feature is not available on non-POSIX systems."
msgstr "이 기능은 POSIX 시스템이 아닌 곳에서는 사용할 수 없습니다."
#. FIXME
#. type: Plain text
-#: ../src/xz/xz.1:996
-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<이 기능은 여전히 시험중입니다>. 현재로서는, B<xz> 버퍼링 처리 방식 때문에 "
-"B<xz>의 실시간 스트림 압축 해제 기능 활용은 적절하지 않습니다."
+#: ../src/xz/xz.1
+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<이 기능은 여전히 시험중입니다>. 현재로서는, B<xz> 버퍼링 처리 방식 때문에 B<xz>의 실시간 스트림 압축 해제 기능 활용은 적절하지 않습니다."
#. type: TP
-#: ../src/xz/xz.1:996
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--memlimit-compress=>I<limit>"
msgstr "B<--memlimit-compress=>I<E<lt>제한용량E<gt>>"
#. type: Plain text
-#: ../src/xz/xz.1:1001
-msgid ""
-"Set a memory usage limit for compression. If this option is specified "
-"multiple times, the last one takes effect."
-msgstr ""
-"압축 수행시 메모리 사용 한계를 지정합니다. 이 옵션을 여러번 지정하면 마지막 "
-"값을 취합니다."
+#: ../src/xz/xz.1
+msgid "Set a memory usage limit for compression. If this option is specified multiple times, the last one takes effect."
+msgstr "압축 수행시 메모리 사용 한계를 지정합니다. 이 옵션을 여러번 지정하면 마지막 값을 취합니다."
#. type: Plain text
-#: ../src/xz/xz.1:1014
-msgid ""
-"If the compression settings exceed the I<limit>, B<xz> will attempt to "
-"adjust the settings downwards so that the limit is no longer exceeded and "
-"display a notice that automatic adjustment was done. The adjustments are "
-"done in this order: reducing the number of threads, switching to single-"
-"threaded mode if even one thread in multi-threaded mode exceeds the "
-"I<limit>, and finally reducing the LZMA2 dictionary size."
-msgstr ""
-"압축 설정이 I<E<lt>제한용량E<gt>>을 초과하면, B<xz>는 설정 값의 하향 조정을 "
-"시도하여 한계 값을 더이상 넘치지 않게 하고 자동 조절을 끝냈다는 알림을 표시합"
-"니다. 조정은 다음 순서대로 진행합니다. 스레드 수를 줄입니다. 다중-스레드 모"
-"드에서 스레드 하나의 할당 한계치가 I<E<lt>제한용량E<gt>>을 넘으면 단일-스레"
-"드 모드로 전환합니다. 그 다음 마지막으로 LZMA2 딕셔너리 크기를 줄입니다."
+#: ../src/xz/xz.1
+msgid "If the compression settings exceed the I<limit>, B<xz> will attempt to adjust the settings downwards so that the limit is no longer exceeded and display a notice that automatic adjustment was done. The adjustments are done in this order: reducing the number of threads, switching to single-threaded mode if even one thread in multi-threaded mode exceeds the I<limit>, and finally reducing the LZMA2 dictionary size."
+msgstr "압축 설정이 I<E<lt>제한용량E<gt>>을 초과하면, B<xz>는 설정 값의 하향 조정을 시도하여 한계 값을 더이상 넘치지 않게 하고 자동 조절을 끝냈다는 알림을 표시합니다. 조정은 다음 순서대로 진행합니다. 스레드 수를 줄입니다. 다중-스레드 모드에서 스레드 하나의 할당 한계치가 I<E<lt>제한용량E<gt>>을 넘으면 단일-스레드 모드로 전환합니다. 그 다음 마지막으로 LZMA2 딕셔너리 크기를 줄입니다."
#. type: Plain text
-#: ../src/xz/xz.1:1022
-msgid ""
-"When compressing with B<--format=raw> or if B<--no-adjust> has been "
-"specified, only the number of threads may be reduced since it can be done "
-"without affecting the compressed output."
-msgstr ""
-"B<--format=raw> 또는 B<--no-adjust> 미지정 상황에서 압축할 때, 압축 데이터 출"
-"력에 영향을 주지 않고 스레드 처리 수만 줄일 수 있습니다."
+#: ../src/xz/xz.1
+msgid "When compressing with B<--format=raw> or if B<--no-adjust> has been specified, only the number of threads may be reduced since it can be done without affecting the compressed output."
+msgstr "B<--format=raw> 또는 B<--no-adjust> 미지정 상황에서 압축할 때, 압축 데이터 출력에 영향을 주지 않고 스레드 처리 수만 줄일 수 있습니다."
#. type: Plain text
-#: ../src/xz/xz.1:1029
-msgid ""
-"If the I<limit> cannot be met even with the adjustments described above, an "
-"error is displayed and B<xz> will exit with exit status 1."
-msgstr ""
-"I<E<lt>제한용량E<gt>> 값이 아래 설명한 조건에 맞지 않으면, 오류가 나타나고 "
-"B<xz> 명령은 종료 상태 1번을 반환하며 빠져나갑니다."
+#: ../src/xz/xz.1
+msgid "If the I<limit> cannot be met even with the adjustments described above, an error is displayed and B<xz> will exit with exit status 1."
+msgstr "I<E<lt>제한용량E<gt>> 값이 아래 설명한 조건에 맞지 않으면, 오류가 나타나고 B<xz> 명령은 종료 상태 1번을 반환하며 빠져나갑니다."
#. type: Plain text
-#: ../src/xz/xz.1:1033
+#: ../src/xz/xz.1
msgid "The I<limit> can be specified in multiple ways:"
msgstr "I<E<lt>제한용량E<gt>> 값은 여러 방식으로 지정할 수 있습니다:"
#. type: Plain text
-#: ../src/xz/xz.1:1043
-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 ""
-"I<E<lt>제한용량E<gt>> 값은 바이트 용량 절대값입니다. 정수 값을 사용하되 "
-"B<MiB>와 같은 접미사를 사용하는게 좋습니다. 예: B<--memlimit-compress=80MiB>"
+#: ../src/xz/xz.1
+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 "I<E<lt>제한용량E<gt>> 값은 바이트 용량 절대값입니다. 정수 값을 사용하되 B<MiB>와 같은 접미사를 사용하는게 좋습니다. 예: B<--memlimit-compress=80MiB>"
#. type: Plain text
-#: ../src/xz/xz.1:1055
-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 ""
-"I<E<lt>제한용량E<gt>> 값은 총 물리 메모리(RAM) 용량의 백분율로 지정할 수도 있"
-"습니다. 다른 컴퓨터끼리 공유하는 셸 초기화 스크립트의 B<XZ_DEFAULTS> 환경 변"
-"수에 값을 설정할 때 특히 쓸만합니다. 이런 방식으로 설정하면 시스템의 메모리 "
-"설치 용량에 따라 자동으로 늘어납니다. 예: B<--memlimit-compress=70%>"
+#: ../src/xz/xz.1
+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 "I<E<lt>제한용량E<gt>> 값은 총 물리 메모리(RAM) 용량의 백분율로 지정할 수도 있습니다. 다른 컴퓨터끼리 공유하는 셸 초기화 스크립트의 B<XZ_DEFAULTS> 환경 변수에 값을 설정할 때 특히 쓸만합니다. 이런 방식으로 설정하면 시스템의 메모리 설치 용량에 따라 자동으로 늘어납니다. 예: B<--memlimit-compress=70%>"
#. type: Plain text
-#: ../src/xz/xz.1:1065
-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)."
-msgstr ""
-"I<E<lt>제한용량E<gt>> 값은 B<0> 기본값으로 설정하여 초기화할 수 있습니다. 현"
-"재로서는 I<E<lt>제한용량E<gt>> 값이 I<max>(최대) (메모리 사용 한계 없음) 인 "
-"상태와 동일합니다."
+#: ../src/xz/xz.1
+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)."
+msgstr "I<E<lt>제한용량E<gt>> 값은 B<0> 기본값으로 설정하여 초기화할 수 있습니다. 현재로서는 I<E<lt>제한용량E<gt>> 값이 I<max>(최대) (메모리 사용 한계 없음) 인 상태와 동일합니다."
#. type: Plain text
-#: ../src/xz/xz.1:1089
-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>. On MIPS32 B<2000\\ "
-"MiB> is used instead. (The values B<0> and B<max> aren't affected by this. "
-"A similar feature doesn't exist for decompression.) This can be helpful "
-"when a 32-bit executable has access to 4\\ GiB address space (2 GiB on "
-"MIPS32) while hopefully doing no harm in other situations."
-msgstr ""
-"B<xz> 32비트 버전에서는 몇가지 특별한 경우가 있습니다. I<E<lt>제한용량E<gt>> "
-"값이 B<4020MiB>를 넘으면 I<E<lt>제한용량E<gt>>을 B<4020MiB>로 고정합니다. "
-"MIPS32에서는 B<2000MiB>로 대신 고정합니다. (B<0>과 B<max>는 이 경우에 해당하"
-"지 않습니다. 압축 해제시 비슷한 기능은 없습니다.) 이 경우 32비트 실행 파일"
-"이 4GiB(MIPS32의 경우 2GiB) 주소 영역에 접근할 때 매우 용이하며, 다른 경우에"
-"는 원하는대로 문제를 일으키지 않습니다."
+#: ../src/xz/xz.1
+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>. On MIPS32 B<2000\\ MiB> is used instead. (The values B<0> and B<max> aren't affected by this. A similar feature doesn't exist for decompression.) This can be helpful when a 32-bit executable has access to 4\\ GiB address space (2 GiB on MIPS32) while hopefully doing no harm in other situations."
+msgstr "B<xz> 32비트 버전에서는 몇가지 특별한 경우가 있습니다. I<E<lt>제한용량E<gt>> 값이 B<4020MiB>를 넘으면 I<E<lt>제한용량E<gt>>을 B<4020MiB>로 고정합니다. MIPS32에서는 B<2000MiB>로 대신 고정합니다. (B<0>과 B<max>는 이 경우에 해당하지 않습니다. 압축 해제시 비슷한 기능은 없습니다.) 이 경우 32비트 실행 파일이 4GiB(MIPS32의 경우 2GiB) 주소 영역에 접근할 때 매우 용이하며, 다른 경우에는 원하는대로 문제를 일으키지 않습니다."
#. type: Plain text
-#: ../src/xz/xz.1:1092
+#: ../src/xz/xz.1
msgid "See also the section B<Memory usage>."
msgstr "B<메모리 활용> 섹션도 참고하십시오."
#. type: TP
-#: ../src/xz/xz.1:1092
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--memlimit-decompress=>I<limit>"
msgstr "B<--memlimit-decompress=>I<E<lt>제한용량E<gt>>"
#. type: Plain text
-#: ../src/xz/xz.1:1106
-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 ""
-"압축 해제시 메모리 사용 한계 용량을 설정합니다. B<--list> 모드에도 영향을 줍"
-"니다. I<E<lt>제한용량E<gt>>을 넘기지 않고서는 동작이 진행이 안될 경우, "
-"B<xz> 에서는 오류를 나타내고 파일 압축 해제를 실패로 간주합니다. I<E<lt>제한"
-"용량E<gt>>을 지정하는 가능한 방법에 대해서는 B<--memlimit-compress=>I<E<lt>제"
-"한용량E<gt>> 옵션을 참고하십시오."
+#: ../src/xz/xz.1
+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 "압축 해제시 메모리 사용 한계 용량을 설정합니다. B<--list> 모드에도 영향을 줍니다. I<E<lt>제한용량E<gt>>을 넘기지 않고서는 동작이 진행이 안될 경우, B<xz> 에서는 오류를 나타내고 파일 압축 해제를 실패로 간주합니다. I<E<lt>제한용량E<gt>>을 지정하는 가능한 방법에 대해서는 B<--memlimit-compress=>I<E<lt>제한용량E<gt>> 옵션을 참고하십시오."
#. type: TP
-#: ../src/xz/xz.1:1106
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--memlimit-mt-decompress=>I<limit>"
msgstr "B<--memlimit-mt-decompress=>I<E<lt>제한용량E<gt>>"
#. type: Plain text
-#: ../src/xz/xz.1:1128
-msgid ""
-"Set a memory usage limit for multi-threaded decompression. This can only "
-"affect the number of threads; this will never make B<xz> refuse to "
-"decompress a file. If I<limit> is too low to allow any multi-threading, the "
-"I<limit> is ignored and B<xz> will continue in single-threaded mode. Note "
-"that if also B<--memlimit-decompress> is used, it will always apply to both "
-"single-threaded and multi-threaded modes, and so the effective I<limit> for "
-"multi-threading will never be higher than the limit set with B<--memlimit-"
-"decompress>."
-msgstr ""
-"다중-스레드 모드 압축 해제시 메모리 사용 한계 용량을 설정합니다. 스레드 수"
-"에 영향을 줄 수도 있습니다. B<xz>에서 파일 압축 해제를 거부하게 하진 않습니"
-"다. I<E<lt>제한용량E<gt>> 수치가 다중-스레드로 처리하기에 너무 낮다면, "
-"I<E<lt>제한용량E<gt>> 값을 무시하고 B<xz> 동작을 단일-스레드 모드로 계속 진행"
-"합니다. 참고로 B<--memlimit-decompress> 옵션도 사용하면, 단일-스레드 모드와 "
-"다중-스레드 모드 두 경우에 모두 적용하기에, 다중-스레드 모드에 적용할 I<E<lt>"
-"제한용량E<gt>> 값은 B<--memlimit-decompress>에 설정하는 제한 값보다 더 크면 "
-"안됩니다."
+#: ../src/xz/xz.1
+msgid "Set a memory usage limit for multi-threaded decompression. This can only affect the number of threads; this will never make B<xz> refuse to decompress a file. If I<limit> is too low to allow any multi-threading, the I<limit> is ignored and B<xz> will continue in single-threaded mode. Note that if also B<--memlimit-decompress> is used, it will always apply to both single-threaded and multi-threaded modes, and so the effective I<limit> for multi-threading will never be higher than the limit set with B<--memlimit-decompress>."
+msgstr "다중-스레드 모드 압축 해제시 메모리 사용 한계 용량을 설정합니다. 스레드 수에 영향을 줄 수도 있습니다. B<xz>에서 파일 압축 해제를 거부하게 하진 않습니다. I<E<lt>제한용량E<gt>> 수치가 다중-스레드로 처리하기에 너무 낮다면, I<E<lt>제한용량E<gt>> 값을 무시하고 B<xz> 동작을 단일-스레드 모드로 계속 진행합니다. 참고로 B<--memlimit-decompress> 옵션도 사용하면, 단일-스레드 모드와 다중-스레드 모드 두 경우에 모두 적용하기에, 다중-스레드 모드에 적용할 I<E<lt>제한용량E<gt>> 값은 B<--memlimit-decompress>에 설정하는 제한 값보다 더 크면 안됩니다."
#. type: Plain text
-#: ../src/xz/xz.1:1135
-msgid ""
-"In contrast to the other memory usage limit options, B<--memlimit-mt-"
-"decompress=>I<limit> has a system-specific default I<limit>. B<xz --info-"
-"memory> can be used to see the current value."
-msgstr ""
-"다른 메모리 사용 용량 제한 옵션과는 달리, B<--memlimit-mt-decompress=>I<E<lt>"
-"제한용량E<gt>> 옵션은 시스템별 기본 I<E<lt>제한용량E<gt>> 값을 지닙니다. 현"
-"재 설정 값은 B<xz --info-memory> 명령으로 확인해볼 수 있습니다."
+#: ../src/xz/xz.1
+msgid "In contrast to the other memory usage limit options, B<--memlimit-mt-decompress=>I<limit> has a system-specific default I<limit>. B<xz --info-memory> can be used to see the current value."
+msgstr "다른 메모리 사용 용량 제한 옵션과는 달리, B<--memlimit-mt-decompress=>I<E<lt>제한용량E<gt>> 옵션은 시스템별 기본 I<E<lt>제한용량E<gt>> 값을 지닙니다. 현재 설정 값은 B<xz --info-memory> 명령으로 확인해볼 수 있습니다."
#. type: Plain text
-#: ../src/xz/xz.1:1151
-msgid ""
-"This option and its default value exist because without any limit the "
-"threaded decompressor could end up allocating an insane amount of memory "
-"with some input files. If the default I<limit> is too low on your system, "
-"feel free to increase the I<limit> but never set it to a value larger than "
-"the amount of usable RAM as with appropriate input files B<xz> will attempt "
-"to use that amount of memory even with a low number of threads. Running out "
-"of memory or swapping will not improve decompression performance."
-msgstr ""
-"이 옵션과 기본 값은 한계 값을 주지 않으면 스레드 기반 압축 해제 프로그램이 일"
-"부 입력 파일에 대해 정신나간 수준의 메모리 용량을 할당해서 동작이 끝나버릴 "
-"수 있습니다. 기본 I<E<lt>제한용량E<gt>>이 시스템의 사양에 비해 낮다면, "
-"I<E<lt>제한용량E<gt>> 값을 자유롭게 올리시되, B<xz> 에서 적은 스레드 수에도 "
-"메모리 공간 할당을 시도하는 만큼, 입력 파일에 적절한 수준으로 가용 RAM 용량"
-"을 넘는 큰 값을 설정하지 마십시오. 메모리나 스와핑 영역 공간이 줄어들면 압축"
-"해제 성능을 개선하지 못합니다."
+#: ../src/xz/xz.1
+msgid "This option and its default value exist because without any limit the threaded decompressor could end up allocating an insane amount of memory with some input files. If the default I<limit> is too low on your system, feel free to increase the I<limit> but never set it to a value larger than the amount of usable RAM as with appropriate input files B<xz> will attempt to use that amount of memory even with a low number of threads. Running out of memory or swapping will not improve decompression performance."
+msgstr "이 옵션과 기본 값은 한계 값을 주지 않으면 스레드 기반 압축 해제 프로그램이 일부 입력 파일에 대해 정신나간 수준의 메모리 용량을 할당해서 동작이 끝나버릴 수 있습니다. 기본 I<E<lt>제한용량E<gt>>이 시스템의 사양에 비해 낮다면, I<E<lt>제한용량E<gt>> 값을 자유롭게 올리시되, B<xz> 에서 적은 스레드 수에도 메모리 공간 할당을 시도하는 만큼, 입력 파일에 적절한 수준으로 가용 RAM 용량을 넘는 큰 값을 설정하지 마십시오. 메모리나 스와핑 영역 공간이 줄어들면 압축해제 성능을 개선하지 못합니다."
#. type: Plain text
-#: ../src/xz/xz.1:1163
-msgid ""
-"See B<--memlimit-compress=>I<limit> for possible ways to specify the "
-"I<limit>. Setting I<limit> to B<0> resets the I<limit> to the default "
-"system-specific value."
-msgstr ""
-"I<E<lt>제한용량E<gt>> 값을 지정하는 가능한 방법을 보려면 B<--memlimit-"
-"compress=>I<E<lt>제한용량E<gt>> 옵션을 참고하십시오. I<E<lt>제한용량E<gt>> "
-"값을 B<0>으로 설정하면 I<E<lt>제한용량E<gt>> 값이 시스템 지정 기본값으로 바뀝"
-"니다."
+#: ../src/xz/xz.1
+msgid "See B<--memlimit-compress=>I<limit> for possible ways to specify the I<limit>. Setting I<limit> to B<0> resets the I<limit> to the default system-specific value."
+msgstr "I<E<lt>제한용량E<gt>> 값을 지정하는 가능한 방법을 보려면 B<--memlimit-compress=>I<E<lt>제한용량E<gt>> 옵션을 참고하십시오. I<E<lt>제한용량E<gt>> 값을 B<0>으로 설정하면 I<E<lt>제한용량E<gt>> 값이 시스템 지정 기본값으로 바뀝니다."
#. type: TP
-#: ../src/xz/xz.1:1163
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-M> I<limit>, B<--memlimit=>I<limit>, B<--memory=>I<limit>"
msgstr "B<-M> I<E<lt>제한용량E<gt>>, B<--memlimit=>I<E<lt>제한용량E<gt>>, B<--memory=>I<E<lt>제한용량E<gt>>"
#. type: Plain text
-#: ../src/xz/xz.1:1169
-msgid ""
-"This is equivalent to specifying B<--memlimit-compress=>I<limit> B<--"
-"memlimit-decompress=>I<limit> B<--memlimit-mt-decompress=>I<limit>."
-msgstr ""
-"B<--memlimit-compress=>I<E<lt>제한용량E<gt>> B<--memlimit-decompress=>I<E<lt>"
-"제한용량E<gt>> B<--memlimit-mt-decompress=>I<E<lt>제한용량E<gt>> 지정과 동일"
-"합니다."
+#: ../src/xz/xz.1
+msgid "This is equivalent to specifying B<--memlimit-compress=>I<limit> B<--memlimit-decompress=>I<limit> B<--memlimit-mt-decompress=>I<limit>."
+msgstr "B<--memlimit-compress=>I<E<lt>제한용량E<gt>> B<--memlimit-decompress=>I<E<lt>제한용량E<gt>> B<--memlimit-mt-decompress=>I<E<lt>제한용량E<gt>> 지정과 동일합니다."
#. type: TP
-#: ../src/xz/xz.1:1169
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--no-adjust>"
msgstr "B<--no-adjust>"
#. type: Plain text
-#: ../src/xz/xz.1:1179
-msgid ""
-"Display an error and exit if the memory usage limit cannot be met without "
-"adjusting settings that affect the compressed output. That is, this "
-"prevents B<xz> from switching the encoder from multi-threaded mode to single-"
-"threaded mode and from reducing the LZMA2 dictionary size. Even when this "
-"option is used the number of threads may be reduced to meet the memory usage "
-"limit as that won't affect the compressed output."
-msgstr ""
-"압축 출력 결과에 영향을 주는 설정을 조정하지 않고는 메모리 사용 용량 제한 조"
-"건이 맞지 않으면 오류를 표시하고 빠져나갑니다. 이 옵션은 B<xz>가 다중-스레"
-"드 모드에서 단일-스레드 모드로 전환하고 LZMA2 딕셔너리 크기를 줄이는 동작을 "
-"막아줍니다. 심지어 이 옵션을 사용하면 메모리 사용 한계를 만족하도록 스레드 "
-"수를 줄여 압축 결과물 출력에 영향이 가지 않게 합니다."
+#: ../src/xz/xz.1
+msgid "Display an error and exit if the memory usage limit cannot be met without adjusting settings that affect the compressed output. That is, this prevents B<xz> from switching the encoder from multi-threaded mode to single-threaded mode and from reducing the LZMA2 dictionary size. Even when this option is used the number of threads may be reduced to meet the memory usage limit as that won't affect the compressed output."
+msgstr "압축 출력 결과에 영향을 주는 설정을 조정하지 않고는 메모리 사용 용량 제한 조건이 맞지 않으면 오류를 표시하고 빠져나갑니다. 이 옵션은 B<xz>가 다중-스레드 모드에서 단일-스레드 모드로 전환하고 LZMA2 딕셔너리 크기를 줄이는 동작을 막아줍니다. 심지어 이 옵션을 사용하면 메모리 사용 한계를 만족하도록 스레드 수를 줄여 압축 결과물 출력에 영향이 가지 않게 합니다."
#. type: Plain text
-#: ../src/xz/xz.1:1182
-msgid ""
-"Automatic adjusting is always disabled when creating raw streams (B<--"
-"format=raw>)."
+#: ../src/xz/xz.1
+msgid "Automatic adjusting is always disabled when creating raw streams (B<--format=raw>)."
msgstr "원시 스트림(B<--format=raw>)을 만들 떄 자동 조정은 항상 꺼집니다."
#. type: TP
-#: ../src/xz/xz.1:1182
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-T> I<threads>, B<--threads=>I<threads>"
msgstr "B<-T> I<E<lt>스레드수E<gt>>, B<--threads=>I<E<lt>스레드수E<gt>>"
#. type: Plain text
-#: ../src/xz/xz.1:1197
-msgid ""
-"Specify the number of worker threads to use. Setting I<threads> to a "
-"special value B<0> makes B<xz> use up to as many threads as the processor(s) "
-"on the system support. The actual number of threads can be fewer than "
-"I<threads> if the input file is not big enough for threading with the given "
-"settings or if using more threads would exceed the memory usage limit."
-msgstr ""
-"활용할 작업 스레드 수를 지정합니다. I<E<lt>스레드수E<gt>> 값을 B<0> 값으로 "
-"설정하면, B<xz>는 시스템에서 지원하는 최대 프로세서 스레드 수를 모두 확보합니"
-"다. 실제 스레드 수는 입력 파일이 주어진 설정대로 스레드 처리를 할 만큼 그렇"
-"게 크지 않을 경우, 내지는 더 많은 스레드를 사용했을 때 메모리 사용량 한계를 "
-"초과할 경우 I<E<lt>스레드수E<gt>> 보다 적을 수 있습니다."
+#: ../src/xz/xz.1
+msgid "Specify the number of worker threads to use. Setting I<threads> to a special value B<0> makes B<xz> use up to as many threads as the processor(s) on the system support. The actual number of threads can be fewer than I<threads> if the input file is not big enough for threading with the given settings or if using more threads would exceed the memory usage limit."
+msgstr "활용할 작업 스레드 수를 지정합니다. I<E<lt>스레드수E<gt>> 값을 B<0> 값으로 설정하면, B<xz>는 시스템에서 지원하는 최대 프로세서 스레드 수를 모두 확보합니다. 실제 스레드 수는 입력 파일이 주어진 설정대로 스레드 처리를 할 만큼 그렇게 크지 않을 경우, 내지는 더 많은 스레드를 사용했을 때 메모리 사용량 한계를 초과할 경우 I<E<lt>스레드수E<gt>> 보다 적을 수 있습니다."
#. type: Plain text
-#: ../src/xz/xz.1:1216
-msgid ""
-"The single-threaded and multi-threaded compressors produce different "
-"output. Single-threaded compressor will give the smallest file size but "
-"only the output from the multi-threaded compressor can be decompressed using "
-"multiple threads. Setting I<threads> to B<1> will use the single-threaded "
-"mode. Setting I<threads> to any other value, including B<0>, will use the "
-"multi-threaded compressor even if the system supports only one hardware "
-"thread. (B<xz> 5.2.x used single-threaded mode in this situation.)"
-msgstr ""
-"단일-스레드와 다중-스레드 압축 프로그램은 다른 출력 결과물을 냅니다. 단일-스"
-"레드 압축 프로그램은 작은 파일 크기 결과물을 내놓지만, 다중-스레드 압축 프로"
-"그램의 경우 다중-스레드 압축 프로그램에서 내놓은 결과물은 다중-스레드로만 압"
-"축을 해제할 수 있습니다. I<E<lt>스레드수E<gt>>를 B<1>로 설정하면 단일-스레"
-"드 모드를 사용합니다. I<E<lt>스레드수E<gt>>를 B<0>과 다른 값으로 설정하면, "
-"시스템에서 실제로 하드웨어 스레드가 1개만 지원한다 하더라도, 다중-스레드 압"
-"축 프로그램을 사용합니다. (B<xz> 5.2.x에서는 이 경우 단일-스레드 모드를 활용"
-"합니다.)"
+#: ../src/xz/xz.1
+msgid "The single-threaded and multi-threaded compressors produce different output. Single-threaded compressor will give the smallest file size but only the output from the multi-threaded compressor can be decompressed using multiple threads. Setting I<threads> to B<1> will use the single-threaded mode. Setting I<threads> to any other value, including B<0>, will use the multi-threaded compressor even if the system supports only one hardware thread. (B<xz> 5.2.x used single-threaded mode in this situation.)"
+msgstr "단일-스레드와 다중-스레드 압축 프로그램은 다른 출력 결과물을 냅니다. 단일-스레드 압축 프로그램은 작은 파일 크기 결과물을 내놓지만, 다중-스레드 압축 프로그램의 경우 다중-스레드 압축 프로그램에서 내놓은 결과물은 다중-스레드로만 압축을 해제할 수 있습니다. I<E<lt>스레드수E<gt>>를 B<1>로 설정하면 단일-스레드 모드를 사용합니다. I<E<lt>스레드수E<gt>>를 B<0>과 다른 값으로 설정하면, 시스템에서 실제로 하드웨어 스레드가 1개만 지원한다 하더라도, 다중-스레드 압축 프로그램을 사용합니다. (B<xz> 5.2.x에서는 이 경우 단일-스레드 모드를 활용합니다.)"
#. type: Plain text
-#: ../src/xz/xz.1:1235
-msgid ""
-"To use multi-threaded mode with only one thread, set I<threads> to B<+1>. "
-"The B<+> prefix has no effect with values other than B<1>. A memory usage "
-"limit can still make B<xz> switch to single-threaded mode unless B<--no-"
-"adjust> is used. Support for the B<+> prefix was added in B<xz> 5.4.0."
-msgstr ""
-"단일-스레드로 다중-스레드 모드를 사용하려면, I<E<lt>스레드수E<gt>>를 B<+1>로 "
-"설정하십시오. B<+> 접두사는 B<1> 이외의 값에는 영향을 주지 않습니다. 메모리 "
-"사용량 한계 설정은 B<xz>을 B<--no-adjust> 옵션을 쓰기 전까지는 단일-스레드로 "
-"전환하게 합니다. B<+> 접두사 지원은 B<xz> 5.4.0에 추가했습니다."
+#: ../src/xz/xz.1
+msgid "To use multi-threaded mode with only one thread, set I<threads> to B<+1>. The B<+> prefix has no effect with values other than B<1>. A memory usage limit can still make B<xz> switch to single-threaded mode unless B<--no-adjust> is used. Support for the B<+> prefix was added in B<xz> 5.4.0."
+msgstr "단일-스레드로 다중-스레드 모드를 사용하려면, I<E<lt>스레드수E<gt>>를 B<+1>로 설정하십시오. B<+> 접두사는 B<1> 이외의 값에는 영향을 주지 않습니다. 메모리 사용량 한계 설정은 B<xz>을 B<--no-adjust> 옵션을 쓰기 전까지는 단일-스레드로 전환하게 합니다. B<+> 접두사 지원은 B<xz> 5.4.0에 추가했습니다."
#. type: Plain text
-#: ../src/xz/xz.1:1250
-msgid ""
-"If an automatic number of threads has been requested and no memory usage "
-"limit has been specified, then a system-specific default soft limit will be "
-"used to possibly limit the number of threads. It is a soft limit in sense "
-"that it is ignored if the number of threads becomes one, thus a soft limit "
-"will never stop B<xz> from compressing or decompressing. This default soft "
-"limit will not make B<xz> switch from multi-threaded mode to single-threaded "
-"mode. The active limits can be seen with B<xz --info-memory>."
-msgstr ""
-"자동 스레드 수를 요청했고 메모리 사용 한계를 지정하지 않았다면, 시스템에 맞게"
-"끔 가능한 스레드 수를 제한하는 기본 소프트 제한 값을 사용합니다. 스레드 수가 "
-"한개가 되면 무시하는 이런 개념이 소프트 제한이기에, B<xz>로 하여금 압축 동작 "
-"및 압축 해제 동작 수행시 멈추지 않습니다. 이 가본 소프트 제한 값은 B<xz> 실"
-"행 도중 다중-스레드 모드에서 단일-스레드 모드로 바뀌게 하지는 않습니다. 활"
-"성 제한 값은 B<xz --info-memory> 명령으로 볼 수 있습니다."
+#: ../src/xz/xz.1
+msgid "If an automatic number of threads has been requested and no memory usage limit has been specified, then a system-specific default soft limit will be used to possibly limit the number of threads. It is a soft limit in sense that it is ignored if the number of threads becomes one, thus a soft limit will never stop B<xz> from compressing or decompressing. This default soft limit will not make B<xz> switch from multi-threaded mode to single-threaded mode. The active limits can be seen with B<xz --info-memory>."
+msgstr "자동 스레드 수를 요청했고 메모리 사용 한계를 지정하지 않았다면, 시스템에 맞게끔 가능한 스레드 수를 제한하는 기본 소프트 제한 값을 사용합니다. 스레드 수가 한개가 되면 무시하는 이런 개념이 소프트 제한이기에, B<xz>로 하여금 압축 동작 및 압축 해제 동작 수행시 멈추지 않습니다. 이 가본 소프트 제한 값은 B<xz> 실행 도중 다중-스레드 모드에서 단일-스레드 모드로 바뀌게 하지는 않습니다. 활성 제한 값은 B<xz --info-memory> 명령으로 볼 수 있습니다."
#. type: Plain text
-#: ../src/xz/xz.1:1257
-msgid ""
-"Currently the only threading method is to split the input into blocks and "
-"compress them independently from each other. The default block size depends "
-"on the compression level and can be overridden with the B<--block-"
-"size=>I<size> option."
-msgstr ""
-"현재 스레딩 처리 방식은 입력을 블록 단위로 쪼개고 각각의 블록을 독립적으로 압"
-"축하는 동작을 취합니다. 기본 블록 크기는 압축 수준에 따라 다르며 B<--block-"
-"size=>I<E<lt>크기E<gt>> 옵션으로 재지정할 수 있습니다."
+#: ../src/xz/xz.1
+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 "현재 스레딩 처리 방식은 입력을 블록 단위로 쪼개고 각각의 블록을 독립적으로 압축하는 동작을 취합니다. 기본 블록 크기는 압축 수준에 따라 다르며 B<--block-size=>I<E<lt>크기E<gt>> 옵션으로 재지정할 수 있습니다."
#. type: Plain text
-#: ../src/xz/xz.1:1265
-msgid ""
-"Threaded decompression only works on files that contain multiple blocks with "
-"size information in block headers. All large enough files compressed in "
-"multi-threaded mode meet this condition, but files compressed in single-"
-"threaded mode don't even if B<--block-size=>I<size> has been used."
-msgstr ""
-"스레드 압축 해제 방식은 여러 블록이 블록 헤더에 넣은 크기 정보와 함께 들어간 "
-"파일에만 동작합니다. 다중-스레드 모드에서 압축한 충분히 큰 모든 파일은 이 조"
-"건에 만족하지만, 단일-스레드 모드에서 압축한 파일은 B<--block-size=>I<E<lt>크"
-"기E<gt>> 옵션을 지정하더라도 조건에 만족하지 않습니다."
+#: ../src/xz/xz.1
+msgid "Threaded decompression only works on files that contain multiple blocks with size information in block headers. All large enough files compressed in multi-threaded mode meet this condition, but files compressed in single-threaded mode don't even if B<--block-size=>I<size> has been used."
+msgstr "스레드 압축 해제 방식은 여러 블록이 블록 헤더에 넣은 크기 정보와 함께 들어간 파일에만 동작합니다. 다중-스레드 모드에서 압축한 충분히 큰 모든 파일은 이 조건에 만족하지만, 단일-스레드 모드에서 압축한 파일은 B<--block-size=>I<E<lt>크기E<gt>> 옵션을 지정하더라도 조건에 만족하지 않습니다."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The default value for I<threads> is B<0>. In B<xz> 5.4.x and older the default is B<1>."
+msgstr "I<스레드> 기본 값은 B<0>입니다. B<xz> 5.4.x 이전의 기본값은 B<1>입니다."
#. type: SS
-#: ../src/xz/xz.1:1266 ../src/xz/xz.1:2819
+#: ../src/xz/xz.1
#, no-wrap
msgid "Custom compressor filter chains"
msgstr "개별 압축 필터 체인 설정"
#. type: Plain text
-#: ../src/xz/xz.1:1282
-msgid ""
-"A custom filter chain allows specifying the compression settings in detail "
-"instead of relying on the settings associated to the presets. When a custom "
-"filter chain is specified, preset options (B<-0> \\&...\\& B<-9> and B<--"
-"extreme>) earlier on the command line are forgotten. If a preset option is "
-"specified after one or more custom filter chain options, the new preset "
-"takes effect and the custom filter chain options specified earlier are "
-"forgotten."
-msgstr ""
-"개별 필터 체인은 사전 설정에 엮인 설정에 의존하는 대신 압축 설정을 세부적으"
-"로 하나하나 설정할 수 있게 합니다. 개별 필터 체인을 지정하면, 명령행에 앞서 "
-"지정한 사전 설정 옵션(B<-0> \\&...\\& B<-9> 과 B<--extreme>)은 무시합니다. "
-"사전 설정 옵션을 하나 이상의 필터 체인 옵션 다음에 지정하면, 새 사전 설정을 "
-"취하며, 앞서 지정한 개별 필터 체인 옵션은 무시합니다."
+#: ../src/xz/xz.1
+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 "개별 필터 체인은 사전 설정에 엮인 설정에 의존하는 대신 압축 설정을 세부적으로 하나하나 설정할 수 있게 합니다. 개별 필터 체인을 지정하면, 명령행에 앞서 지정한 사전 설정 옵션(B<-0> \\&...\\& B<-9> 과 B<--extreme>)은 무시합니다. 사전 설정 옵션을 하나 이상의 필터 체인 옵션 다음에 지정하면, 새 사전 설정을 취하며, 앞서 지정한 개별 필터 체인 옵션은 무시합니다."
#. type: Plain text
-#: ../src/xz/xz.1:1289
-msgid ""
-"A filter chain is comparable to piping on the command line. When "
-"compressing, the uncompressed input goes to the first filter, whose output "
-"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 ""
-"필터 체인은 명령행 파이핑에 비교할 수 있습니다. 압축할 때, 압축하지 않은 입"
-"력을 첫번째 필터로 놓고, 출력 대상(이 있으면)을 다음 필터로 지정합니다. 최"
-"종 필터의 출력은 압축 파일로 기옥합니다. 체인의 최대 필터 수는 4이지만, 필"
-"터 체인상 필터 갯수는 보통 1~2개입니다."
+#: ../src/xz/xz.1
+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 "필터 체인은 명령행 파이핑에 비교할 수 있습니다. 압축할 때, 압축하지 않은 입력을 첫번째 필터로 놓고, 출력 대상(이 있으면)을 다음 필터로 지정합니다. 최종 필터의 출력은 압축 파일로 기옥합니다. 체인의 최대 필터 수는 4이지만, 필터 체인상 필터 갯수는 보통 1~2개입니다."
#. type: Plain text
-#: ../src/xz/xz.1:1297
-msgid ""
-"Many filters have limitations on where they can be in the filter chain: some "
-"filters can work only as the last filter in the chain, some only as a non-"
-"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 ""
-"수많은 필터가 필터 체인 상에서 제약점을 가지고 있습니다. 일부 필터는 체인의 "
-"마지막 필터로만 동작하며, 일부 다른 필터는 마지막이 아닌 필터로, 어떤 동작은 "
-"체인의 어떤 위치에든 둡니다. 필터에 따라, 이 제한은 필터 설계를 따르거나 보"
-"안 문제를 막기 위해 존재하기도 합니다."
+#: ../src/xz/xz.1
+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 "수많은 필터가 필터 체인 상에서 제약점을 가지고 있습니다. 일부 필터는 체인의 마지막 필터로만 동작하며, 일부 다른 필터는 마지막이 아닌 필터로, 어떤 동작은 체인의 어떤 위치에든 둡니다. 필터에 따라, 이 제한은 필터 설계를 따르거나 보안 문제를 막기 위해 존재하기도 합니다."
#. type: Plain text
-#: ../src/xz/xz.1:1305
-msgid ""
-"A custom filter chain is specified by using one or more filter options in "
-"the order they are wanted in the filter chain. That is, the order of filter "
-"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 ""
-"개별 필터 체인은 필터 체인에서 원하는 순서대로 하나 이상의 필터 옵션을 사용하"
-"여 지정합니다. 이는, 필터 옵션 순서가 중요하다는 뜻입니다! 원시 스트림을 디"
-"코딩할 때(B<--format=raw>), 필터 체인은 압축할 때 지정했던 동일한 순서대로 지"
-"정합니다."
+#: ../src/xz/xz.1
+msgid "A custom filter chain can be specified in two different ways. The options B<--filters=>I<filters> and B<--filters1=>I<filters> \\&...\\& B<--filters9=>I<filters> allow specifying an entire filter chain in one option using the liblzma filter string syntax. Alternatively, a filter chain can be specified by using one or more individual filter options in the order they are wanted in the filter chain. That is, the order of the individual filter options is significant! When decoding raw streams (B<--format=raw>), the filter chain must be specified in the same order as it was specified when compressing. Any individual filter or preset options specified before the full chain option (B<--filters=>I<filters>) will be forgotten. Individual filters specified after the full chain option will reset the filter chain."
+msgstr "개별 필터 체인은 두가지 방식으로 지정할 수 있습니다. B<--filters=>I<E<lt>필터E<gt>>와 B<--filters1=>I<E<lt>필터E<gt>> \\&...\\& B<--filters9=>I<E<lt>필터E<gt>> 옵션으로 liblzma 필터 문자열 문법에 따라 한가지 옵션을 필터 체인 전체를 지정할 수 있습니다. 대신, 하나 이상의 개별 필터 옵션을 원하는 필터 체인 순서대로 지정할 수도 있습니다. 이 말인 즉슨, 개별 필터 옵션의 순서가 중요하단 뜻입니다! 원시 스트림을 디코딩할 때(B<--format=raw>), 압축했을 때 지정했던 필터와 같은 순서로 필터 체인을 지정해야 합니다. 전체 체인 옵션(B<--filters=>I<E<lt>필터E<gt>>) 보다 우선 지정한 개별 필터 또는 사전 설정 옵션은 까먹을 수도 있습니다. 전체 체인 옵션 다음에 개별 필터를 지정할 경우 필터 체인의 동작을 무효로 합니다."
#. type: Plain text
-#: ../src/xz/xz.1:1314
-msgid ""
-"Filters take filter-specific I<options> as a comma-separated list. Extra "
-"commas in I<options> are ignored. Every option has a default value, so you "
-"need to specify only those you want to change."
-msgstr ""
-"필터는 쉼표로 구분하는 필터별 I<E<lt>옵션E<gt>>이 있습니다. I<E<lt>옵션E<gt>>"
-"에 추가로 입력한 쉼표는 무시합니다. 모든 옵션 값에는 기본값이 있어, 값을 바"
-"꾸려면 지정해야합니다."
+#: ../src/xz/xz.1
+msgid "Both the full and individual filter options take filter-specific I<options> as a comma-separated list. Extra commas in I<options> are ignored. Every option has a default value, so specify those you want to change."
+msgstr "필터는 쉼표로 구분하는 필터별 I<E<lt>옵션E<gt>>이 있습니다. I<E<lt>옵션E<gt>>에 추가로 입력한 쉼표는 무시합니다. 모든 옵션 값에는 기본값이 있어, 값을 바꾸려면 지정해야합니다."
#. type: Plain text
-#: ../src/xz/xz.1:1323
-msgid ""
-"To see the whole filter chain and I<options>, use B<xz -vv> (that is, use "
-"B<--verbose> twice). This works also for viewing the filter chain options "
-"used by presets."
-msgstr ""
-"전체 필터 체인과 I<E<lt>옵션E<gt>>을 보려면 B<xz -vv> (B<--verbose> 두 번)명"
-"령을 사용하십시오. 이 명령은 사전 설정이 사용하는 필터 체인 옵션도 볼 수 있"
-"습니다."
+#: ../src/xz/xz.1
+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 "전체 필터 체인과 I<E<lt>옵션E<gt>>을 보려면 B<xz -vv> (B<--verbose> 두 번)명령을 사용하십시오. 이 명령은 사전 설정이 사용하는 필터 체인 옵션도 볼 수 있습니다."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "B<--filters=>I<filters>"
+msgstr "B<--filters=>I<E<lt>필터E<gt>>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Specify the full filter chain or a preset in a single option. Each filter can be separated by spaces or two dashes (B<-->). I<filters> may need to be quoted on the shell command line so it is parsed as a single option. To denote I<options>, use B<:> or B<=>. A preset can be prefixed with a B<-> and followed with zero or more flags. The only supported flag is B<e> to apply the same options as B<--extreme>."
+msgstr "전체 필터 체인 또는 사전 설정을 단일 옵션으로 지정합니다. 각 필터는 공백 문자 또는 대시 문자 두번 입력(B<-->)으로 구분합니다. 셸 명령행에서 I<필터>는 따옴표로 감싸서 단일 옵션으로 해석하도록 해야 합니다. I<옵션>을 표기하려면 B<:> 또는 B<=>을 활용하십시오. 사전 설정 앞에 B<->를 붙일 수 있고 0개 또는 하나 이상의 플래그를 붙일 수 있습니다. 유일하게 지원하는 플래그는 B<--extreme>과 동일한 B<e>입니다."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "B<--filters1>=I<filters> ... B<--filters9>=I<filters>"
+msgstr "B<--filters1>=I<E<lt>필터E<gt>> ... B<--filters9>=I<E<lt>필터E<gt>>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Specify up to nine additional filter chains that can be used with B<--block-list>."
+msgstr "B<--block-list>와 사용할 수 있는 추가 필터 체인을 최대 9개까지 지정합니다."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "For example, when compressing an archive with executable files followed by text files, the executable part could use a filter chain with a BCJ filter and the text part only the LZMA2 filter."
+msgstr "예를 들어 텍스트 파일과 실행 파일의 아카이브를 압축할 때 실행 부분에 BCJ 필터 체인을 사용하고 텍스트 부분은 LZMA2 필터를 사용할 수 있습니다."
#. type: TP
-#: ../src/xz/xz.1:1323
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "B<--filters-help>"
+msgstr "B<--filters-help>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Display a help message describing how to specify presets and custom filter chains in the B<--filters> and B<--filters1=>I<filters> \\&...\\& B<--filters9=>I<filters> options, and exit successfully."
+msgstr "B<--filters>와 B<--filters1=>I<E<lt>필터E<gt>> \\&...\\& B<--filters9=>I<E<lt>필터E<gt>> 옵션의 사전 설정 필터와 개별 설정 필터 체인을 지정하는 방법을 설명하는 도움말 메시지를 출력하고 완전히 빠져나갑니다."
+
+#. type: TP
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--lzma1>[B<=>I<options>]"
msgstr "B<--lzma1>[B<=>I<E<lt>옵션E<gt>>]"
#. type: TP
-#: ../src/xz/xz.1:1326
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--lzma2>[B<=>I<options>]"
msgstr "B<--lzma2>[B<=>I<E<lt>옵션E<gt>>]"
#. type: Plain text
-#: ../src/xz/xz.1:1331
-msgid ""
-"Add LZMA1 or LZMA2 filter to the filter chain. These filters can be used "
-"only as the last filter in the chain."
-msgstr ""
-"LZMA1 또는 LZMA2 필터를 필터 체인에 추가합니다. 이 필터는 필터 체인의 마지"
-"막 요소로만 사용할 수 있습니다."
+#: ../src/xz/xz.1
+msgid "Add LZMA1 or LZMA2 filter to the filter chain. These filters can be used only as the last filter in the chain."
+msgstr "LZMA1 또는 LZMA2 필터를 필터 체인에 추가합니다. 이 필터는 필터 체인의 마지막 요소로만 사용할 수 있습니다."
#. type: Plain text
-#: ../src/xz/xz.1:1343
-msgid ""
-"LZMA1 is a legacy filter, which is supported almost solely due to the legacy "
-"B<.lzma> file format, which supports only LZMA1. LZMA2 is an updated "
-"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은 고전 필터로, LZMA1만 지원하는 고전 B<.lzma> 파일 형식에서만 지원합니"
-"다. LZMA2는 LZMA1의 업데이트 버전으로 LZMA1의 실질적 문제를 해결했습니다. "
-"B<.xz> 형식은 LZMA2 필터를 사용하며 LZMA1 필터는 전적으로 지원하지 않습니"
-"다. 압축 속도와 압축율은 LZMA1과 LZMA2가 실질적으로 동일합니다."
+#: ../src/xz/xz.1
+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은 고전 필터로, LZMA1만 지원하는 고전 B<.lzma> 파일 형식에서만 지원합니다. LZMA2는 LZMA1의 업데이트 버전으로 LZMA1의 실질적 문제를 해결했습니다. B<.xz> 형식은 LZMA2 필터를 사용하며 LZMA1 필터는 전적으로 지원하지 않습니다. 압축 속도와 압축율은 LZMA1과 LZMA2가 실질적으로 동일합니다."
#. type: Plain text
-#: ../src/xz/xz.1:1346
+#: ../src/xz/xz.1
msgid "LZMA1 and LZMA2 share the same set of I<options>:"
msgstr "LZMA1과 LZMA2는 동일한 I<E<lt>옵션E<gt>> 집합을 공유합니다:"
#. type: TP
-#: ../src/xz/xz.1:1347
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<preset=>I<preset>"
msgstr "B<preset=>I<E<lt>사전설정E<gt>>"
#. type: Plain text
-#: ../src/xz/xz.1:1374
-msgid ""
-"Reset all LZMA1 or LZMA2 I<options> to I<preset>. I<Preset> consist of an "
-"integer, which may be followed by single-letter preset modifiers. The "
-"integer can be from B<0> to B<9>, matching the command line options B<-0> "
-"\\&...\\& B<-9>. The only supported modifier is currently B<e>, which "
-"matches B<--extreme>. If no B<preset> is specified, the default values of "
-"LZMA1 or LZMA2 I<options> are taken from the preset B<6>."
-msgstr ""
-"LZMA1 또는 LZMA2의 모든 I<E<lt>옵션E<gt>>을 I<E<lt>사전설정E<gt>>으로 초기화"
-"합니다. I<E<lt>사전설정E<gt>> 값은 정수 값으로 이루어져 있으며, 사전 설정에 "
-"변형을 줄 떄 단일 문자가 따라올 수도 있습니다. 정수 값은 B<0>에서 B<9> 까지"
-"이며, 명령행 옵션에서 B<-0> \\&...\\& B<-9>로 대응합니다. 변형 옵션으로 지원"
-"하는 문자는 현재 B<e> 뿐이며, B<--extreme>에 대응합니다. I<E<lt>사전설정"
-"E<gt>> 값을 지정하지 않으면, LZMA1 또는 LZMA2 기본값을 사전 설정 B<6>에서 가"
-"져온 I<E<lt>옵션E<gt>>으로 취합니다."
+#: ../src/xz/xz.1
+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 "LZMA1 또는 LZMA2의 모든 I<E<lt>옵션E<gt>>을 I<E<lt>사전설정E<gt>>으로 초기화합니다. I<E<lt>사전설정E<gt>> 값은 정수 값으로 이루어져 있으며, 사전 설정에 변형을 줄 떄 단일 문자가 따라올 수도 있습니다. 정수 값은 B<0>에서 B<9> 까지이며, 명령행 옵션에서 B<-0> \\&...\\& B<-9>로 대응합니다. 변형 옵션으로 지원하는 문자는 현재 B<e> 뿐이며, B<--extreme>에 대응합니다. I<E<lt>사전설정E<gt>> 값을 지정하지 않으면, LZMA1 또는 LZMA2 기본값을 사전 설정 B<6>에서 가져온 I<E<lt>옵션E<gt>>으로 취합니다."
#. type: TP
-#: ../src/xz/xz.1:1374
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<dict=>I<size>"
msgstr "B<dict=>I<E<lt>크기E<gt>>"
#. type: Plain text
-#: ../src/xz/xz.1:1389
-msgid ""
-"Dictionary (history buffer) I<size> indicates how many bytes of the "
-"recently processed uncompressed data is kept in memory. The algorithm tries "
-"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 ""
-"딕셔너리(기록 버퍼) I<E<lt>크기E<gt>>는 최근 처리한 비압축 데이터를 바이트 "
-"단위로 메모리에 얼마나 유지하는지 나타냅니다. 알고리즘은 비압축 데이터상 바"
-"이트 시퀀스(일치 항목) 반복 탐색을 시도하며, 해당 부분을 딕셔너리의 현재 참조"
-"로 치환합니다. 딕셔너리가 크면 일치하는 항목을 찾을 기회가 더 많아집니다. 따"
-"라서, 딕셔너리 I<E<lt>크기E<gt>>를 더욱 크게 설정하면 압축율을 증가할 수는 있"
-"지만, 압축하지 않은 파일보다 딕셔너리가 크면 메모리 낭비율이 올라갑니다."
+#: ../src/xz/xz.1
+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 "딕셔너리(기록 버퍼) I<E<lt>크기E<gt>>는 최근 처리한 비압축 데이터를 바이트 단위로 메모리에 얼마나 유지하는지 나타냅니다. 알고리즘은 비압축 데이터상 바이트 시퀀스(일치 항목) 반복 탐색을 시도하며, 해당 부분을 딕셔너리의 현재 참조로 치환합니다. 딕셔너리가 크면 일치하는 항목을 찾을 기회가 더 많아집니다. 따라서, 딕셔너리 I<E<lt>크기E<gt>>를 더욱 크게 설정하면 압축율을 증가할 수는 있지만, 압축하지 않은 파일보다 딕셔너리가 크면 메모리 낭비율이 올라갑니다."
#. type: Plain text
-#: ../src/xz/xz.1:1398
-msgid ""
-"Typical dictionary I<size> is from 64\\ KiB to 64\\ MiB. The minimum is 4\\ "
-"KiB. The maximum for compression is currently 1.5\\ GiB (1536\\ MiB). The "
-"decompressor already supports dictionaries up to one byte less than 4\\ GiB, "
-"which is the maximum for the LZMA1 and LZMA2 stream formats."
-msgstr ""
-"보통 딕셔너리 I<E<lt>크기E<gt>>는 64KiB 에서 64MiB 정도 됩니다. 최소 4KiB 입"
-"니다. 압축시 최대 용량은 현재 1.5GiB(1536MiB)로 나타납니다. 압축 해제 프로그"
-"램에도 4GiB 미만으로 딕셔너리 크기를 이미 지원하며 4GiB 라는 수치는 LZMA1과 "
-"LZMA2 스트림 형식의 최대값입니다."
+#: ../src/xz/xz.1
+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 "보통 딕셔너리 I<E<lt>크기E<gt>>는 64KiB 에서 64MiB 정도 됩니다. 최소 4KiB 입니다. 압축시 최대 용량은 현재 1.5GiB(1536MiB)로 나타납니다. 압축 해제 프로그램에도 4GiB 미만으로 딕셔너리 크기를 이미 지원하며 4GiB 라는 수치는 LZMA1과 LZMA2 스트림 형식의 최대값입니다."
#. type: Plain text
-#: ../src/xz/xz.1:1425
-msgid ""
-"Dictionary I<size> and match finder (I<mf>) together determine the memory "
-"usage of the LZMA1 or LZMA2 encoder. The same (or bigger) dictionary "
-"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 ""
-"딕셔너리 I<E<lt>크기E<gt>>와 검색기(I<mf>)는 LZMA1 또는 LZMA 인코더의 메모리 "
-"사용량을 함께 결정합니다. 동일한(또는 더 큰) 딕셔너리 I<E<lt>크기E<gt>>가 데"
-"이터를 압축했을 때만큼 압축 해제할 떄 필요하기 때문에, 디코더의 메모리 사용량"
-"은 압축할 때의 딕셔너리 크기로 결정합니다. B<.xz> 헤더에는 딕셔너리 I<E<lt>"
-"크기E<gt>>를 2^I<n> 또는 2^I<n> + 2^(I<n>-1) 으로 저장하기에, 이 I<E<lt>크기"
-"E<gt>> 값을 압축할 때 선호하는 편입니다. 다른 I<E<lt>크기E<gt>> 값은 B<.xz> "
-"헤더에 저장할 때 반올림합니다."
+#: ../src/xz/xz.1
+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 "딕셔너리 I<E<lt>크기E<gt>>와 검색기(I<mf>)는 LZMA1 또는 LZMA 인코더의 메모리 사용량을 함께 결정합니다. 동일한(또는 더 큰) 딕셔너리 I<E<lt>크기E<gt>>가 데이터를 압축했을 때만큼 압축 해제할 떄 필요하기 때문에, 디코더의 메모리 사용량은 압축할 때의 딕셔너리 크기로 결정합니다. B<.xz> 헤더에는 딕셔너리 I<E<lt>크기E<gt>>를 2^I<n> 또는 2^I<n> + 2^(I<n>-1) 으로 저장하기에, 이 I<E<lt>크기E<gt>> 값을 압축할 때 선호하는 편입니다. 다른 I<E<lt>크기E<gt>> 값은 B<.xz> 헤더에 저장할 때 반올림합니다."
#. type: TP
-#: ../src/xz/xz.1:1425
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lc=>I<lc>"
msgstr "B<lc=>I<lc>"
#. type: Plain text
-#: ../src/xz/xz.1:1434
-msgid ""
-"Specify the number of literal context bits. The minimum is 0 and the "
-"maximum is 4; the default is 3. In addition, the sum of I<lc> and I<lp> "
-"must not exceed 4."
-msgstr ""
-"리터럴 컨텍스트 비트 수를 지정합니다. 최소 값은 0이고 최대 값은 4입니다. 기"
-"본 값은 3입니다. 추가로, I<lc> 값과 I<lp> 값의 합은 4를 넘으면 안됩니다."
+#: ../src/xz/xz.1
+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 "리터럴 컨텍스트 비트 수를 지정합니다. 최소 값은 0이고 최대 값은 4입니다. 기본 값은 3입니다. 추가로, I<lc> 값과 I<lp> 값의 합은 4를 넘으면 안됩니다."
#. type: Plain text
-#: ../src/xz/xz.1:1439
-msgid ""
-"All bytes that cannot be encoded as matches are encoded as literals. That "
-"is, literals are simply 8-bit bytes that are encoded one at a time."
-msgstr ""
-"조건이 일치하지 않아 인코딩할 수 없는 모든 바이트는 리터럴로 인코딩합니다. "
-"이 말인 즉슨, 간단히 8비트 바이트로서의 리터럴을 한번에 하나씩 인코딩합니다."
+#: ../src/xz/xz.1
+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 "조건이 일치하지 않아 인코딩할 수 없는 모든 바이트는 리터럴로 인코딩합니다. 이 말인 즉슨, 간단히 8비트 바이트로서의 리터럴을 한번에 하나씩 인코딩합니다."
#. type: Plain text
-#: ../src/xz/xz.1:1453
-msgid ""
-"The literal coding makes an assumption that the highest I<lc> bits of the "
-"previous uncompressed byte correlate with the next byte. For example, in "
-"typical English text, an upper-case letter is often followed by a lower-case "
-"letter, and a lower-case letter is usually followed by another lower-case "
-"letter. In the US-ASCII character set, the highest three bits are 010 for "
-"upper-case letters and 011 for lower-case letters. When I<lc> is at least "
-"3, the literal coding can take advantage of this property in the "
-"uncompressed data."
-msgstr ""
-"리터럴 코딩을 할 때 이전 비압축 바이트와 다음 바이트와의 관련성을 가진 가장 "
-"많은 I<lc> 비트 수를 가정합니다. 예를 들면, 보통 영문 문장의 경우 대문자 다"
-"음에 종종 소문자가 오고, 소문자 다음에 다른 소문자가 따라옵니다. US-ASCII 문"
-"자 세트에서는 가장 긴 비트 3개는 대문자에 대해 010, 소문자에 대해 011입니"
-"다. I<lc> 값이 최소한 3이면, 리터럴 코딩시 비압축 데이터에 대해 이런 속성의 "
-"장점을 취할 수 있습니다."
+#: ../src/xz/xz.1
+msgid "The literal coding makes an assumption that the highest I<lc> bits of the previous uncompressed byte correlate with the next byte. For example, in typical English text, an upper-case letter is often followed by a lower-case letter, and a lower-case letter is usually followed by another lower-case letter. In the US-ASCII character set, the highest three bits are 010 for upper-case letters and 011 for lower-case letters. When I<lc> is at least 3, the literal coding can take advantage of this property in the uncompressed data."
+msgstr "리터럴 코딩을 할 때 이전 비압축 바이트와 다음 바이트와의 관련성을 가진 가장 많은 I<lc> 비트 수를 가정합니다. 예를 들면, 보통 영문 문장의 경우 대문자 다음에 종종 소문자가 오고, 소문자 다음에 다른 소문자가 따라옵니다. US-ASCII 문자 세트에서는 가장 긴 비트 3개는 대문자에 대해 010, 소문자에 대해 011입니다. I<lc> 값이 최소한 3이면, 리터럴 코딩시 비압축 데이터에 대해 이런 속성의 장점을 취할 수 있습니다."
#. type: Plain text
-#: ../src/xz/xz.1:1462
-msgid ""
-"The default value (3) is usually good. If you want maximum compression, "
-"test B<lc=4>. Sometimes it helps a little, and sometimes it makes "
-"compression worse. If it makes it worse, test B<lc=2> too."
-msgstr ""
-"(어쨌거나) 기본값 (3)은 보통 적절합니다. 최대 압축을 원한다면 B<lc=4> 값을 "
-"시험해보십시오. 때로는 약간 도움이 되기도 하겠지만, 오히려 결과가 안좋을 수"
-"도 있습니다. 결과가 엄한 방향으로 간다면, B<lc=2> 값도 시험해보십시오."
+#: ../src/xz/xz.1
+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 B<lc=2> too."
+msgstr "(어쨌거나) 기본값 (3)은 보통 적절합니다. 최대 압축을 원한다면 B<lc=4> 값을 시험해보십시오. 때로는 약간 도움이 되기도 하겠지만, 오히려 결과가 안좋을 수도 있습니다. 결과가 엄한 방향으로 간다면, B<lc=2> 값도 시험해보십시오."
#. type: TP
-#: ../src/xz/xz.1:1462
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lp=>I<lp>"
msgstr "B<lp=>I<lp>"
#. type: Plain text
-#: ../src/xz/xz.1:1466
-msgid ""
-"Specify the number of literal position bits. The minimum is 0 and the "
-"maximum is 4; the default is 0."
-msgstr ""
-"리터럴 위치 비트 수를 지정하빈다. 최소 값은 0이고 최대 값은 4입니다. 기본 값"
-"은 0입니다."
+#: ../src/xz/xz.1
+msgid "Specify the number of literal position bits. The minimum is 0 and the maximum is 4; the default is 0."
+msgstr "리터럴 위치 비트 수를 지정하빈다. 최소 값은 0이고 최대 값은 4입니다. 기본 값은 0입니다."
#. type: Plain text
-#: ../src/xz/xz.1:1473
-msgid ""
-"I<Lp> affects what kind of alignment in the uncompressed data is assumed "
-"when encoding literals. See I<pb> below for more information about "
-"alignment."
-msgstr ""
-"I<lp> 값은 리터럴 인코딩 진행시 비압축 데이터 정렬 방식 고려에 영향을 줍니"
-"다. 정렬 방식에 대한 자세한 정보는 하단 I<pb>를 참고하십시오."
+#: ../src/xz/xz.1
+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> 값은 리터럴 인코딩 진행시 비압축 데이터 정렬 방식 고려에 영향을 줍니다. 정렬 방식에 대한 자세한 정보는 하단 I<pb>를 참고하십시오."
#. type: TP
-#: ../src/xz/xz.1:1473
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<pb=>I<pb>"
msgstr "B<pb=>I<pb>"
#. type: Plain text
-#: ../src/xz/xz.1:1477
-msgid ""
-"Specify the number of position bits. The minimum is 0 and the maximum is 4; "
-"the default is 2."
-msgstr ""
-"위치 비트 수를 지정합니다. 최소 값은 0이며 최대 값은 4입니다. 기본값은 2입"
-"니다."
+#: ../src/xz/xz.1
+msgid "Specify the number of position bits. The minimum is 0 and the maximum is 4; the default is 2."
+msgstr "위치 비트 수를 지정합니다. 최소 값은 0이며 최대 값은 4입니다. 기본값은 2입니다."
#. type: Plain text
-#: ../src/xz/xz.1:1484
-msgid ""
-"I<Pb> affects what kind of alignment in the uncompressed data is assumed in "
-"general. The default means four-byte alignment (2^I<pb>=2^2=4), which is "
-"often a good choice when there's no better guess."
-msgstr ""
-"I<pb> 값은 보통 압축하지 않은 데이터에 어떤 정렬 방식을 고려하느냐에 영향을 "
-"줍니다. 기본적으로 4바이트 정렬(2^I<pb>=2^2=4)을 의미하는데, 이보다 더 나은 "
-"추측 값이 없어서 종종 최적의 선택으로 간주합니다."
+#: ../src/xz/xz.1
+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> 값은 보통 압축하지 않은 데이터에 어떤 정렬 방식을 고려하느냐에 영향을 줍니다. 기본적으로 4바이트 정렬(2^I<pb>=2^2=4)을 의미하는데, 이보다 더 나은 추측 값이 없어서 종종 최적의 선택으로 간주합니다."
#. type: Plain text
-#: ../src/xz/xz.1:1498
-msgid ""
-"When the alignment is known, setting I<pb> accordingly may reduce the file "
-"size a little. For example, with text files having one-byte alignment (US-"
-"ASCII, ISO-8859-*, UTF-8), setting B<pb=0> can improve compression "
-"slightly. For UTF-16 text, B<pb=1> is a good choice. If the alignment is "
-"an odd number like 3 bytes, B<pb=0> might be the best choice."
-msgstr ""
-"정렬 상태를 알지 못할 경우, I<pb> 설정 값이 파일 크기를 조금 줄일 수 있습니"
-"다. 예를 들면, 텍스트 파일이 단일 바이트 단위로 정돈된 상태(US-ASCII, "
-"ISO-8859-*, UTF-8)라면, B<pb=0> 설정 값으로 압축율을 조금 개선할 수 있습니"
-"다. UTF-16 텍스트의 경우, B<pb=1> 설정 값이 좋은 선택입니다. 정렬 바이트가 "
-"3 바이트 같은 홀수 바이트일 경우, B<pb=0> 설정 값이 최적의 선택일지도 모릅니"
-"다."
+#: ../src/xz/xz.1
+msgid "When the alignment is known, setting I<pb> accordingly may reduce the file size a little. For example, with text files having one-byte alignment (US-ASCII, ISO-8859-*, UTF-8), setting B<pb=0> can improve compression slightly. For UTF-16 text, B<pb=1> is a good choice. If the alignment is an odd number like 3 bytes, B<pb=0> might be the best choice."
+msgstr "정렬 상태를 알지 못할 경우, I<pb> 설정 값이 파일 크기를 조금 줄일 수 있습니다. 예를 들면, 텍스트 파일이 단일 바이트 단위로 정돈된 상태(US-ASCII, ISO-8859-*, UTF-8)라면, B<pb=0> 설정 값으로 압축율을 조금 개선할 수 있습니다. UTF-16 텍스트의 경우, B<pb=1> 설정 값이 좋은 선택입니다. 정렬 바이트가 3 바이트 같은 홀수 바이트일 경우, B<pb=0> 설정 값이 최적의 선택일지도 모릅니다."
#. type: Plain text
-#: ../src/xz/xz.1:1506
-msgid ""
-"Even though the assumed alignment can be adjusted with I<pb> and I<lp>, "
-"LZMA1 and LZMA2 still slightly favor 16-byte alignment. It might be worth "
-"taking into account when designing file formats that are likely to be often "
-"compressed with LZMA1 or LZMA2."
-msgstr ""
-"가정 정렬을 I<pb> 값과 I<lp> 값으로 조정하긴 하지만, LZMA1과 LZMA2는 여전히 "
-"16바이트 정렬 방식으로 선호합니다. LZMA1 또는 LZMA2로 종종 압축하는 파일 형"
-"식이라고 하면 고려해볼만 합니다."
+#: ../src/xz/xz.1
+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 "가정 정렬을 I<pb> 값과 I<lp> 값으로 조정하긴 하지만, LZMA1과 LZMA2는 여전히 16바이트 정렬 방식으로 선호합니다. LZMA1 또는 LZMA2로 종종 압축하는 파일 형식이라고 하면 고려해볼만 합니다."
#. type: TP
-#: ../src/xz/xz.1:1506
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<mf=>I<mf>"
msgstr "B<mf=>I<mf>"
#. type: Plain text
-#: ../src/xz/xz.1:1521
-msgid ""
-"Match finder has a major effect on encoder speed, memory usage, and "
-"compression ratio. Usually Hash Chain match finders are faster than Binary "
-"Tree match finders. The default depends on the I<preset>: 0 uses B<hc3>, "
-"1\\(en3 use B<hc4>, and the rest use B<bt4>."
-msgstr ""
-"일치 검색기는 인코더 속도, 메모리 사용량, 압축율에 주된 영향을 줍니다. 보통 "
-"해시 체인 검색기는 이진 트리 검색기보다 빠르긴 합니다. 기본 값은 I<E<lt>사전"
-"설정E<gt>>에 따라 다릅니다. 0은 B<hc3>을, 1\\(en3은 B<hc4>를, 나머지는 B<bt4>"
-"를 활용합니다."
+#: ../src/xz/xz.1
+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\\(en3 use B<hc4>, and the rest use B<bt4>."
+msgstr "일치 검색기는 인코더 속도, 메모리 사용량, 압축율에 주된 영향을 줍니다. 보통 해시 체인 검색기는 이진 트리 검색기보다 빠르긴 합니다. 기본 값은 I<E<lt>사전설정E<gt>>에 따라 다릅니다. 0은 B<hc3>을, 1\\(en3은 B<hc4>를, 나머지는 B<bt4>를 활용합니다."
#. type: Plain text
-#: ../src/xz/xz.1:1527
-msgid ""
-"The following match finders are supported. The memory usage formulas below "
-"are rough approximations, which are closest to the reality when I<dict> is a "
-"power of two."
-msgstr ""
-"다음 검색 필터를 지원합니다. 메모리 사용 공식은 I<dict> 값이 2의 승수일 경"
-"우 실제에 가까운 근사치입니다."
+#: ../src/xz/xz.1
+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 "다음 검색 필터를 지원합니다. 메모리 사용 공식은 I<dict> 값이 2의 승수일 경우 실제에 가까운 근사치입니다."
#. type: TP
-#: ../src/xz/xz.1:1528
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<hc3>"
msgstr "B<hc3>"
#. type: Plain text
-#: ../src/xz/xz.1:1531
+#: ../src/xz/xz.1
msgid "Hash Chain with 2- and 3-byte hashing"
msgstr "2바이트, 3바이트 해싱 체인"
#. type: Plain text
-#: ../src/xz/xz.1:1535 ../src/xz/xz.1:1584
+#: ../src/xz/xz.1
msgid "Minimum value for I<nice>: 3"
msgstr "I<nice> 최소값: 3"
#. type: Plain text
-#: ../src/xz/xz.1:1537 ../src/xz/xz.1:1556 ../src/xz/xz.1:1586
-#: ../src/xz/xz.1:1605
+#: ../src/xz/xz.1
msgid "Memory usage:"
msgstr "메모리 사용:"
#. type: Plain text
-#: ../src/xz/xz.1:1542
+#: ../src/xz/xz.1
msgid "I<dict> * 7.5 (if I<dict> E<lt>= 16 MiB);"
msgstr "I<dict> * 7.5 (조건: I<dict> E<lt>= 16 MiB);"
#. type: Plain text
-#: ../src/xz/xz.1:1547
+#: ../src/xz/xz.1
msgid "I<dict> * 5.5 + 64 MiB (if I<dict> E<gt> 16 MiB)"
msgstr "I<dict> * 5.5 + 64 MiB (조건: I<dict> E<gt> 16 MiB)"
#. type: TP
-#: ../src/xz/xz.1:1547
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<hc4>"
msgstr "B<hc4>"
#. type: Plain text
-#: ../src/xz/xz.1:1550
+#: ../src/xz/xz.1
msgid "Hash Chain with 2-, 3-, and 4-byte hashing"
msgstr "2바이트, 3바이트, 4바이트 해싱 체인"
#. type: Plain text
-#: ../src/xz/xz.1:1554 ../src/xz/xz.1:1603
+#: ../src/xz/xz.1
msgid "Minimum value for I<nice>: 4"
msgstr "I<nice> 최소값: 4"
#. type: Plain text
-#: ../src/xz/xz.1:1561
+#: ../src/xz/xz.1
msgid "I<dict> * 7.5 (if I<dict> E<lt>= 32 MiB);"
msgstr "I<dict> * 7.5 (조건: I<dict> E<lt>= 32 MiB);"
#. type: Plain text
-#: ../src/xz/xz.1:1566
+#: ../src/xz/xz.1
msgid "I<dict> * 6.5 (if I<dict> E<gt> 32 MiB)"
msgstr "I<dict> * 6.5 (조건: I<dict> E<gt> 32 MiB)"
#. type: TP
-#: ../src/xz/xz.1:1566
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<bt2>"
msgstr "B<bt2>"
#. type: Plain text
-#: ../src/xz/xz.1:1569
+#: ../src/xz/xz.1
msgid "Binary Tree with 2-byte hashing"
msgstr "2바이트 해싱 이진 트리"
#. type: Plain text
-#: ../src/xz/xz.1:1573
+#: ../src/xz/xz.1
msgid "Minimum value for I<nice>: 2"
msgstr "I<nice> 최소값: 2"
#. type: Plain text
-#: ../src/xz/xz.1:1577
+#: ../src/xz/xz.1
msgid "Memory usage: I<dict> * 9.5"
msgstr "메모리 사용: I<dict> * 9.5"
#. type: TP
-#: ../src/xz/xz.1:1577
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<bt3>"
msgstr "B<bt3>"
#. type: Plain text
-#: ../src/xz/xz.1:1580
+#: ../src/xz/xz.1
msgid "Binary Tree with 2- and 3-byte hashing"
msgstr "2바이트, 3바이트 해싱 이진트리"
#. type: Plain text
-#: ../src/xz/xz.1:1591
+#: ../src/xz/xz.1
msgid "I<dict> * 11.5 (if I<dict> E<lt>= 16 MiB);"
msgstr "I<dict> * 11.5 (조건: I<dict> E<lt>= 16 MiB);"
#. type: Plain text
-#: ../src/xz/xz.1:1596
+#: ../src/xz/xz.1
msgid "I<dict> * 9.5 + 64 MiB (if I<dict> E<gt> 16 MiB)"
msgstr "I<dict> * 9.5 + 64 MiB (조건: I<dict> E<gt> 16 MiB)"
#. type: TP
-#: ../src/xz/xz.1:1596
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<bt4>"
msgstr "B<bt4>"
#. type: Plain text
-#: ../src/xz/xz.1:1599
+#: ../src/xz/xz.1
msgid "Binary Tree with 2-, 3-, and 4-byte hashing"
msgstr "2바이트, 3바이트, 4바이트 해싱 이진 트리"
#. type: Plain text
-#: ../src/xz/xz.1:1610
+#: ../src/xz/xz.1
msgid "I<dict> * 11.5 (if I<dict> E<lt>= 32 MiB);"
msgstr "I<dict> * 11.5 (조건: I<dict> E<lt>= 32 MiB);"
#. type: Plain text
-#: ../src/xz/xz.1:1615
+#: ../src/xz/xz.1
msgid "I<dict> * 10.5 (if I<dict> E<gt> 32 MiB)"
msgstr "I<dict> * 10.5 (조건: I<dict> E<gt> 32 MiB)"
#. type: TP
-#: ../src/xz/xz.1:1616
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<mode=>I<mode>"
msgstr "B<mode=>I<E<lt>모드E<gt>>"
#. type: Plain text
-#: ../src/xz/xz.1:1637
-msgid ""
-"Compression I<mode> specifies the method to analyze the data produced by the "
-"match finder. Supported I<modes> are B<fast> and B<normal>. The default is "
-"B<fast> for I<presets> 0\\(en3 and B<normal> for I<presets> 4\\(en9."
-msgstr ""
-"압축 I<E<lt>모드E<gt>> 값은 일치 검색기에서 생산하는 데이터 분석 방식을 지정"
-"합니다. 지원하는 I<E<lt>모드E<gt>>는 B<fast>와 B<normal> 입니다. 기본값은 "
-"I<E<lt>사전설정E<gt>>값 0\\(en3에 대해 B<fast>, I<E<lt>사전설정E<gt>>값 "
-"4\\(en9에 대해 B<normal>입니다."
+#: ../src/xz/xz.1
+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\\(en3 and B<normal> for I<presets> 4\\(en9."
+msgstr "압축 I<E<lt>모드E<gt>> 값은 일치 검색기에서 생산하는 데이터 분석 방식을 지정합니다. 지원하는 I<E<lt>모드E<gt>>는 B<fast>와 B<normal> 입니다. 기본값은 I<E<lt>사전설정E<gt>>값 0\\(en3에 대해 B<fast>, I<E<lt>사전설정E<gt>>값 4\\(en9에 대해 B<normal>입니다."
#. type: Plain text
-#: ../src/xz/xz.1:1646
-msgid ""
-"Usually B<fast> is used with Hash Chain match finders and B<normal> with "
-"Binary Tree match finders. This is also what the I<presets> do."
-msgstr ""
-"보통 B<fast>는 해시 체인 검색기에서 사용하며 B<normal>은 이진 트리 검색기에"
-"서 사용합니다. 이 동작은 또한 I<E<lt>사전설정E<gt>> 값이 할 일이기도 합니다."
+#: ../src/xz/xz.1
+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 "보통 B<fast>는 해시 체인 검색기에서 사용하며 B<normal>은 이진 트리 검색기에서 사용합니다. 이 동작은 또한 I<E<lt>사전설정E<gt>> 값이 할 일이기도 합니다."
#. type: TP
-#: ../src/xz/xz.1:1646
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<nice=>I<nice>"
msgstr "B<nice=>I<nice>"
#. type: Plain text
-#: ../src/xz/xz.1:1653
-msgid ""
-"Specify what is considered to be a nice length for a match. Once a match of "
-"at least I<nice> bytes is found, the algorithm stops looking for possibly "
-"better matches."
-msgstr ""
-"일치하는 nice 길이를 지정합니다. 최소한 I<nice> 바이트 정도 일치하면, 알고리"
-"즘이 가능한 최선의 부분을 찾는 동작을 멈춥니다."
+#: ../src/xz/xz.1
+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 "일치하는 nice 길이를 지정합니다. 최소한 I<nice> 바이트 정도 일치하면, 알고리즘이 가능한 최선의 부분을 찾는 동작을 멈춥니다."
#. type: Plain text
-#: ../src/xz/xz.1:1660
-msgid ""
-"I<Nice> can be 2\\(en273 bytes. Higher values tend to give better "
-"compression ratio at the expense of speed. The default depends on the "
-"I<preset>."
-msgstr ""
-"I<nice> 값은 2\\(en273 바이트입니다. 값이 클 수록 속도 면에서는 손해를 보겠"
-"지만 압축율은 더욱 올라갑니다. 기본 값은 I<E<lt>사전설정E<gt>>값에 따라 다릅"
-"니다."
+#: ../src/xz/xz.1
+msgid "I<Nice> can be 2\\(en273 bytes. Higher values tend to give better compression ratio at the expense of speed. The default depends on the I<preset>."
+msgstr "I<nice> 값은 2\\(en273 바이트입니다. 값이 클 수록 속도 면에서는 손해를 보겠지만 압축율은 더욱 올라갑니다. 기본 값은 I<E<lt>사전설정E<gt>>값에 따라 다릅니다."
#. type: TP
-#: ../src/xz/xz.1:1660
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<depth=>I<depth>"
msgstr "B<depth=>I<E<lt>깊이E<gt>>"
#. type: Plain text
-#: ../src/xz/xz.1:1670
-msgid ""
-"Specify the maximum search depth in the match finder. The default is the "
-"special value of 0, which makes the compressor determine a reasonable "
-"I<depth> from I<mf> and I<nice>."
-msgstr ""
-"일치 검색기에서의 최대 검색 깊이를 지정합니다. 기본값은 특별한 값 0으로 지정"
-"하며, 이 값으로 압축 프로그램이 I<mf> 와 I<nice>간 적절한 I<E<lt>깊이E<gt>> "
-"값을 결정합니다."
+#: ../src/xz/xz.1
+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 "일치 검색기에서의 최대 검색 깊이를 지정합니다. 기본값은 특별한 값 0으로 지정하며, 이 값으로 압축 프로그램이 I<mf> 와 I<nice>간 적절한 I<E<lt>깊이E<gt>> 값을 결정합니다."
#. type: Plain text
-#: ../src/xz/xz.1:1681
-msgid ""
-"Reasonable I<depth> for Hash Chains is 4\\(en100 and 16\\(en1000 for Binary "
-"Trees. Using very high values for I<depth> can make the encoder extremely "
-"slow with some files. Avoid setting the I<depth> over 1000 unless you are "
-"prepared to interrupt the compression in case it is taking far too long."
-msgstr ""
-"적절한 해시 체인 I<E<lt>깊이E<gt>> 값은 이진 트리에서 4\\(en100 그리고 "
-"16\\(en1000 입니다. 상당히 큰 값을 I<E<lt>깊이E<gt>> 값으로 사용하면 일부 파"
-"일에 대해 인코더가 매우 느리게 동작할 수가 있습니다. 압축 시간이 너무 오래걸"
-"려서 동작을 중간에 끊을 준비가 되지 않은 이상 I<E<lt>깊이E<gt>> 설정 값은 "
-"1000을 넘지 않게하십시오."
+#: ../src/xz/xz.1
+msgid "Reasonable I<depth> for Hash Chains is 4\\(en100 and 16\\(en1000 for Binary Trees. Using very high values for I<depth> can make the encoder extremely slow with some files. Avoid setting the I<depth> over 1000 unless you are prepared to interrupt the compression in case it is taking far too long."
+msgstr "적절한 해시 체인 I<E<lt>깊이E<gt>> 값은 이진 트리에서 4\\(en100 그리고 16\\(en1000 입니다. 상당히 큰 값을 I<E<lt>깊이E<gt>> 값으로 사용하면 일부 파일에 대해 인코더가 매우 느리게 동작할 수가 있습니다. 압축 시간이 너무 오래걸려서 동작을 중간에 끊을 준비가 되지 않은 이상 I<E<lt>깊이E<gt>> 설정 값은 1000을 넘지 않게하십시오."
#. type: Plain text
-#: ../src/xz/xz.1:1692
-msgid ""
-"When decoding raw streams (B<--format=raw>), LZMA2 needs only the dictionary "
-"I<size>. LZMA1 needs also I<lc>, I<lp>, and I<pb>."
-msgstr ""
-"원시 스트림(B<--format=raw>)을 디코딩할 때, LZMA2는 딕셔너리 I<E<lt>크기"
-"E<gt>>만 필요합니다. LZMA1는 I<lc>, I<lp>, I<pb> 값이 모두 필요합니다."
+#: ../src/xz/xz.1
+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 "원시 스트림(B<--format=raw>)을 디코딩할 때, LZMA2는 딕셔너리 I<E<lt>크기E<gt>>만 필요합니다. LZMA1는 I<lc>, I<lp>, I<pb> 값이 모두 필요합니다."
#. type: TP
-#: ../src/xz/xz.1:1692
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--x86>[B<=>I<options>]"
msgstr "B<--x86>[B<=>I<E<lt>옵션E<gt>>]"
#. type: TP
-#: ../src/xz/xz.1:1695
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--arm>[B<=>I<options>]"
msgstr "B<--arm>[B<=>I<E<lt>옵션E<gt>>]"
#. type: TP
-#: ../src/xz/xz.1:1697
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--armthumb>[B<=>I<options>]"
msgstr "B<--armthumb>[B<=>I<E<lt>옵션E<gt>>]"
#. type: TP
-#: ../src/xz/xz.1:1699
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--arm64>[B<=>I<options>]"
msgstr "B<--arm64>[B<=>I<E<lt>옵션E<gt>>]"
#. type: TP
-#: ../src/xz/xz.1:1701
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--powerpc>[B<=>I<options>]"
msgstr "B<--powerpc>[B<=>I<E<lt>옵션E<gt>>]"
#. type: TP
-#: ../src/xz/xz.1:1703
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--ia64>[B<=>I<options>]"
msgstr "B<--ia64>[B<=>I<E<lt>옵션E<gt>>]"
#. type: TP
-#: ../src/xz/xz.1:1705
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--sparc>[B<=>I<options>]"
msgstr "B<--sparc>[B<=>I<E<lt>옵션E<gt>>]"
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "B<--riscv>[B<=>I<options>]"
+msgstr "B<--riscv>[B<=>I<E<lt>옵션E<gt>>]"
+
#. type: Plain text
-#: ../src/xz/xz.1:1711
-msgid ""
-"Add a branch/call/jump (BCJ) filter to the filter chain. These filters can "
-"be used only as a non-last filter in the filter chain."
-msgstr ""
-"브랜치/호출/점프(BCJ) 필터를 필터 체인에 추가합니다. 이 필터는 필터 체인의 "
-"비종결 필터로만 사용할 수 있습니다."
+#: ../src/xz/xz.1
+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 "브랜치/호출/점프(BCJ) 필터를 필터 체인에 추가합니다. 이 필터는 필터 체인의 비종결 필터로만 사용할 수 있습니다."
#. type: Plain text
-#: ../src/xz/xz.1:1725
-msgid ""
-"A BCJ filter converts relative addresses in the machine code to their "
-"absolute counterparts. This doesn't change the size of the data but it "
-"increases redundancy, which can help LZMA2 to produce 0\\(en15\\ % smaller "
-"B<.xz> file. The BCJ filters are always reversible, so using a BCJ filter "
-"for wrong type of data doesn't cause any data loss, although it may make the "
-"compression ratio slightly worse. The BCJ filters are very fast and use an "
-"insignificant amount of memory."
-msgstr ""
-"BCJ 필터는 머신 코드의 상대 주소를 절대 주소로 변환합니다. 데이터 크기를 바"
-"꾸지는 않지만 LZMA2에서 B<.xz> 파일을 0\\(en15% 정도 줄여주게 하는 중복성이 "
-"늘어납니다. BCJ 필터는 언제든 뒤집을 수 있어, 데이터에 적절하지 않은 BCJ 필"
-"터 형식을 활용하면, 그냥 가만히 두면 압축율이 약간 떨어지게 한다 하더라도, 데"
-"이터를 잃을 수가 있습니다. BCJ 필터는 굉장히 빠르며 메모리 공간을 적게 활용"
-"합니다."
+#: ../src/xz/xz.1
+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\\(en15\\ % smaller B<.xz> file. The BCJ filters are always reversible, so using a BCJ filter for wrong type of data doesn't cause any data loss, although it may make the compression ratio slightly worse. The BCJ filters are very fast and use an insignificant amount of memory."
+msgstr "BCJ 필터는 머신 코드의 상대 주소를 절대 주소로 변환합니다. 데이터 크기를 바꾸지는 않지만 LZMA2에서 B<.xz> 파일을 0\\(en15% 정도 줄여주게 하는 중복성이 늘어납니다. BCJ 필터는 언제든 뒤집을 수 있어, 데이터에 적절하지 않은 BCJ 필터 형식을 활용하면, 그냥 가만히 두면 압축율이 약간 떨어지게 한다 하더라도, 데이터를 잃을 수가 있습니다. BCJ 필터는 굉장히 빠르며 메모리 공간을 적게 활용합니다."
#. type: Plain text
-#: ../src/xz/xz.1:1728
+#: ../src/xz/xz.1
msgid "These BCJ filters have known problems related to the compression ratio:"
msgstr "이 BCJ 필터에는 압축율 관련 몇가지 문제가 있습니다:"
#. type: Plain text
-#: ../src/xz/xz.1:1735
-msgid ""
-"Some types of files containing executable code (for example, object files, "
-"static libraries, and Linux kernel modules) have the addresses in the "
-"instructions filled with filler values. These BCJ filters will still do the "
-"address conversion, which will make the compression worse with these files."
-msgstr ""
-"실행 코드가 들어있는 몇가지 파일 형식(예: 목적 파일, 정적 라이브러리, 리눅스 "
-"커널 모듈)의 경우 필터 값으로 채운 명령 주소가 있습니다. 여기 BCJ 필터의 경"
-"우 파일의 압축율을 떨어뜨리는 주소 변환을 수행합니다."
+#: ../src/xz/xz.1
+msgid "Some types of files containing executable code (for example, object files, static libraries, and Linux kernel modules) have the addresses in the instructions filled with filler values. These BCJ filters will still do the address conversion, which will make the compression worse with these files."
+msgstr "실행 코드가 들어있는 몇가지 파일 형식(예: 목적 파일, 정적 라이브러리, 리눅스 커널 모듈)의 경우 필터 값으로 채운 명령 주소가 있습니다. 여기 BCJ 필터의 경우 파일의 압축율을 떨어뜨리는 주소 변환을 수행합니다."
#. type: Plain text
-#: ../src/xz/xz.1:1745
-msgid ""
-"If a BCJ filter is applied on an archive, it is possible that it makes the "
-"compression ratio worse than not using a BCJ filter. For example, if there "
-"are similar or even identical executables then filtering will likely make "
-"the files less similar and thus compression is worse. The contents of non-"
-"executable files in the same archive can matter too. In practice one has to "
-"try with and without a BCJ filter to see which is better in each situation."
-msgstr ""
-"BCJ 필터를 아카이브에 적용하면, BCJ 필터를 사용하지 않았을 때보다 압축율이 떨"
-"어질 수가 있습니다. 예를 들면, 유사하거나 동일한 실행 파일 여럿이 있으면 필"
-"터를 사용하여 파일을 덜 비슷하게 만들어 압축율이 떨어지게 합니다. 동일한 아"
-"카이브 파일에서 비 실행 파일의 내용에 대해서도 비슷한 일이 벌어질 수 있습니"
-"다. 실제로 하나는 BCJ 필터를 걸고 하나는 제외하여 각 경우에 대해 어떤 경우"
-"가 결과가 우수한 지 살펴보겠습니다."
+#: ../src/xz/xz.1
+msgid "If a BCJ filter is applied on an archive, it is possible that it makes the compression ratio worse than not using a BCJ filter. For example, if there are similar or even identical executables then filtering will likely make the files less similar and thus compression is worse. The contents of non-executable files in the same archive can matter too. In practice one has to try with and without a BCJ filter to see which is better in each situation."
+msgstr "BCJ 필터를 아카이브에 적용하면, BCJ 필터를 사용하지 않았을 때보다 압축율이 떨어질 수가 있습니다. 예를 들면, 유사하거나 동일한 실행 파일 여럿이 있으면 필터를 사용하여 파일을 덜 비슷하게 만들어 압축율이 떨어지게 합니다. 동일한 아카이브 파일에서 비 실행 파일의 내용에 대해서도 비슷한 일이 벌어질 수 있습니다. 실제로 하나는 BCJ 필터를 걸고 하나는 제외하여 각 경우에 대해 어떤 경우가 결과가 우수한 지 살펴보겠습니다."
#. type: Plain text
-#: ../src/xz/xz.1:1750
-msgid ""
-"Different instruction sets have different alignment: the executable file "
-"must be aligned to a multiple of this value in the input data to make the "
-"filter work."
-msgstr ""
-"다른 명령 세트는 다른 정렬 상태에 놓여있습니다. 실행 파일은 필터가 제대로 동"
-"작하게 하려면 입력 데이터에 있는 이 값의 배수로 정돈해야합니다."
+#: ../src/xz/xz.1
+msgid "Different instruction sets have different alignment: the executable file must be aligned to a multiple of this value in the input data to make the filter work."
+msgstr "다른 명령 세트는 다른 정렬 상태에 놓여있습니다. 실행 파일은 필터가 제대로 동작하게 하려면 입력 데이터에 있는 이 값의 배수로 정돈해야합니다."
#. type: tbl table
-#: ../src/xz/xz.1:1757
+#: ../src/xz/xz.1
#, no-wrap
msgid "Filter"
msgstr "필터"
#. type: tbl table
-#: ../src/xz/xz.1:1757
+#: ../src/xz/xz.1
#, no-wrap
msgid "Alignment"
msgstr "정렬"
#. type: tbl table
-#: ../src/xz/xz.1:1757
+#: ../src/xz/xz.1
#, no-wrap
msgid "Notes"
msgstr "참고"
#. type: tbl table
-#: ../src/xz/xz.1:1758
+#: ../src/xz/xz.1
#, no-wrap
msgid "x86"
msgstr "x86"
#. type: tbl table
-#: ../src/xz/xz.1:1758
+#: ../src/xz/xz.1
#, no-wrap
msgid "32-bit or 64-bit x86"
msgstr "32-bit 또는 64-bit x86"
#. type: tbl table
-#: ../src/xz/xz.1:1759
+#: ../src/xz/xz.1
#, no-wrap
msgid "ARM"
msgstr "ARM"
#. type: tbl table
-#: ../src/xz/xz.1:1760
+#: ../src/xz/xz.1
#, no-wrap
msgid "ARM-Thumb"
msgstr "ARM-Thumb"
#. type: tbl table
-#: ../src/xz/xz.1:1761
+#: ../src/xz/xz.1
#, no-wrap
msgid "ARM64"
msgstr "ARM64"
#. type: tbl table
-#: ../src/xz/xz.1:1761
+#: ../src/xz/xz.1
#, no-wrap
msgid "4096-byte alignment is best"
msgstr "4096 바이트 정렬이 가장 좋습니다"
#. type: tbl table
-#: ../src/xz/xz.1:1762
+#: ../src/xz/xz.1
#, no-wrap
msgid "PowerPC"
msgstr "PowerPC"
#. type: tbl table
-#: ../src/xz/xz.1:1762
+#: ../src/xz/xz.1
#, no-wrap
msgid "Big endian only"
msgstr "빅엔디안 전용"
#. type: tbl table
-#: ../src/xz/xz.1:1763
+#: ../src/xz/xz.1
#, no-wrap
msgid "IA-64"
msgstr "IA-64"
#. type: tbl table
-#: ../src/xz/xz.1:1763
+#: ../src/xz/xz.1
#, no-wrap
msgid "16"
msgstr "16"
#. type: tbl table
-#: ../src/xz/xz.1:1763
+#: ../src/xz/xz.1
#, no-wrap
msgid "Itanium"
msgstr "Itanium"
#. type: tbl table
-#: ../src/xz/xz.1:1764
+#: ../src/xz/xz.1
#, no-wrap
msgid "SPARC"
msgstr "SPARC"
+#. type: tbl table
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "RISC-V"
+msgstr "RISC-V"
+
#. type: Plain text
-#: ../src/xz/xz.1:1781
-msgid ""
-"Since the BCJ-filtered data is usually compressed with LZMA2, the "
-"compression ratio may be improved slightly if the LZMA2 options are set to "
-"match the alignment of the selected BCJ filter. For example, with the IA-64 "
-"filter, it's good to set B<pb=4> or even B<pb=4,lp=4,lc=0> with LZMA2 "
-"(2^4=16). The x86 filter is an exception; it's usually good to stick to "
-"LZMA2's default four-byte alignment when compressing x86 executables."
-msgstr ""
-"BCJ 필터를 사용한 데이터는 LZMA2로 보통 압축하기 때문에 LZMA2 옵션을 선택한 "
-"BCJ 필터의 정렬기준에 맞추도록 설정하면 압축율을 좀 더 개선할 수 있습니다. "
-"예를 들면, IA-64 필터에서는 B<pb=4> 또는 LZMA2에 대해 B<pb=4,lp=4,lc=0> "
-"(2^4=16) 값이 바람직합ㄴ디ㅏ. x86 필터는 예외로, x86 실행 파일을 압축할 경"
-"우 LZMA2의 기본 4바이트 정렬을 따르는게 좋습니다."
+#: ../src/xz/xz.1
+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. Examples:"
+msgstr "BCJ 필터를 사용한 데이터는 LZMA2로 보통 압축하기 때문에 LZMA2 옵션을 선택한 BCJ 필터의 정렬기준에 맞추도록 설정하면 압축율을 좀 더 개선할 수 있습니다. 예를 들면:"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "IA-64 filter has 16-byte alignment so B<pb=4,lp=4,lc=0> is good with LZMA2 (2^4=16)."
+msgstr "IA-64 필터는 16-바이트 정렬 방식으로 동작하기에 LZMA2 필터에 B<pb=4,lp=4,lc=0> 옵션(2^4=16)을 주는게 좋습니다."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "RISC-V code has 2-byte or 4-byte alignment depending on whether the file contains 16-bit compressed instructions (the C extension). When 16-bit instructions are used, B<pb=2,lp=1,lc=3> or B<pb=1,lp=1,lc=3> is good. When 16-bit instructions aren't present, B<pb=2,lp=2,lc=2> is the best. B<readelf -h> can be used to check if \"RVC\" appears on the \"Flags\" line."
+msgstr "RISC-V 코드에는 16-비트 압축 명령(C 확장) 적재 여부에 따라 2-바이트 또는 4-바이트 정렬 방식을 채택합니다. 16-비트 명령을 사용하면, B<pb=2,lp=1,lc=3> 또는 B<pb=1,lp=1,lc=3> 옵션 값 사용이 바람직합니다. 16-비트 명령이 없다면, B<pb=2,lp=2,lc=2> 옵션 값을 활용하는게 좋습니다. \"RVC\"가 \"Flags\"행에 나타나는지 확인할 때 B<readelf -h> 명령을 사용할 수 있습니다."
#. type: Plain text
-#: ../src/xz/xz.1:1784
+#: ../src/xz/xz.1
+msgid "ARM64 is always 4-byte aligned so B<pb=2,lp=2,lc=2> is the best."
+msgstr "ARM64는 항상 4-바이트 정렬 방식을 택하기에 B<pb=2,lp=2,lc=2> 옵션 값을 활용하는게 좋습니다."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The x86 filter is an exception. It's usually good to stick to LZMA2's defaults (B<pb=2,lp=0,lc=3>) when compressing x86 executables."
+msgstr "x86 필터는 예외입니다. x86 실행 파일을 압축할 경우에는 보통 LZMA2 기본 옵션 값(B<pb=2,lp=0,lc=3>)을 그대로 사용하는게 좋습니다."
+
+#. type: Plain text
+#: ../src/xz/xz.1
msgid "All BCJ filters support the same I<options>:"
msgstr "모든 BCJ 필터는 동일한 I<옵션>을 지원합니다:"
#. type: TP
-#: ../src/xz/xz.1:1785
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<start=>I<offset>"
msgstr "B<start=>I<E<lt>오프셋E<gt>>"
#. type: Plain text
-#: ../src/xz/xz.1:1799
-msgid ""
-"Specify the start I<offset> that is used when converting between relative "
-"and absolute addresses. The I<offset> must be a multiple of the alignment "
-"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 ""
-"상대 주소와 절대 주소를 변환할 때 사용할 시작 I<E<lt>오프셋E<gt>>을 지정합니"
-"다. I<E<lt>오프셋E<gt>>에는 필터 정렬 배수여야 합니다(상단 테이블 참조). 기"
-"본값은 0입니다. 실제로 기본값이 낫습니다. 개별 I<E<lt>오프셋E<gt>> 지정 값"
-"은 거의 쓸모가 없습니다."
+#: ../src/xz/xz.1
+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 "상대 주소와 절대 주소를 변환할 때 사용할 시작 I<E<lt>오프셋E<gt>>을 지정합니다. I<E<lt>오프셋E<gt>>에는 필터 정렬 배수여야 합니다(상단 테이블 참조). 기본값은 0입니다. 실제로 기본값이 낫습니다. 개별 I<E<lt>오프셋E<gt>> 지정 값은 거의 쓸모가 없습니다."
#. type: TP
-#: ../src/xz/xz.1:1800
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--delta>[B<=>I<options>]"
msgstr "B<--delta>[B<=>I<E<lt>옵션E<gt>>]"
#. type: Plain text
-#: ../src/xz/xz.1:1805
-msgid ""
-"Add the Delta filter to the filter chain. The Delta filter can be only used "
-"as a non-last filter in the filter chain."
-msgstr ""
-"필터 체인에 델타 필터를 추가합니다. 델타 필터는 필터 체인에서 마지막에 지정"
-"하지 않은 필터로만 사용할 수 있습니다."
+#: ../src/xz/xz.1
+msgid "Add the Delta filter to the filter chain. The Delta filter can be only used as a non-last filter in the filter chain."
+msgstr "필터 체인에 델타 필터를 추가합니다. 델타 필터는 필터 체인에서 마지막에 지정하지 않은 필터로만 사용할 수 있습니다."
#. type: Plain text
-#: ../src/xz/xz.1:1814
-msgid ""
-"Currently only simple byte-wise delta calculation is supported. It can be "
-"useful when compressing, for example, uncompressed bitmap images or "
-"uncompressed PCM audio. However, special purpose algorithms may give "
-"significantly better results than Delta + LZMA2. This is true especially "
-"with audio, which compresses faster and better, for example, with B<flac>(1)."
-msgstr ""
-"현재로서는 바이트 단위 단순 델타계산 결과만 보여줍니다. 예를 들면, 압축하지 "
-"않은 비트맵 그림 또는 압축하지 않은 PCM 오디오를 압축할 때 쓸만합니다. 그러"
-"나 특별한 목적으로 활용하는 알고리즘은 델타 + LZMA2 보다 더 나은 결과를 가져"
-"다 주기도 합니다. 이는 특히 오디오의 경우 맞는 이야기인데, B<flac>(1)의 경"
-"우 더 빠르고 우수한 압축율을 보여줍니다."
+#: ../src/xz/xz.1
+msgid "Currently only simple byte-wise delta calculation is supported. It can be useful when compressing, for example, uncompressed bitmap images or uncompressed PCM audio. However, special purpose algorithms may give significantly better results than Delta + LZMA2. This is true especially with audio, which compresses faster and better, for example, with B<flac>(1)."
+msgstr "현재로서는 바이트 단위 단순 델타계산 결과만 보여줍니다. 예를 들면, 압축하지 않은 비트맵 그림 또는 압축하지 않은 PCM 오디오를 압축할 때 쓸만합니다. 그러나 특별한 목적으로 활용하는 알고리즘은 델타 + LZMA2 보다 더 나은 결과를 가져다 주기도 합니다. 이는 특히 오디오의 경우 맞는 이야기인데, B<flac>(1)의 경우 더 빠르고 우수한 압축율을 보여줍니다."
#. type: Plain text
-#: ../src/xz/xz.1:1817
+#: ../src/xz/xz.1
msgid "Supported I<options>:"
msgstr "지원 I<옵션>:"
#. type: TP
-#: ../src/xz/xz.1:1818
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<dist=>I<distance>"
msgstr "B<dist=>I<E<lt>차이E<gt>>"
#. type: Plain text
-#: ../src/xz/xz.1:1826
-msgid ""
-"Specify the I<distance> of the delta calculation in bytes. I<distance> must "
-"be 1\\(en256. The default is 1."
-msgstr ""
-"바이트 단위 델터 계산 I<E<lt>차이E<gt>>를 지정합니다. I<E<lt>차이E<gt>>값은 "
-"1\\(en256 이어야합니다. 기본 값은 1입니다."
+#: ../src/xz/xz.1
+msgid "Specify the I<distance> of the delta calculation in bytes. I<distance> must be 1\\(en256. The default is 1."
+msgstr "바이트 단위 델터 계산 I<E<lt>차이E<gt>>를 지정합니다. I<E<lt>차이E<gt>>값은 1\\(en256 이어야합니다. 기본 값은 1입니다."
#. type: Plain text
-#: ../src/xz/xz.1:1831
-msgid ""
-"For example, with B<dist=2> and eight-byte input A1 B1 A2 B3 A3 B5 A4 B7, "
-"the output will be A1 B1 01 02 01 02 01 02."
-msgstr ""
-"예를 들어, B<dist=2> 옵션과 A1 B1 A2 B3 A3 B5 A4 B7 입력 값을 주면, 출력 값"
-"은 A1 B1 01 02 01 02 01 02 입니다."
+#: ../src/xz/xz.1
+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 "예를 들어, B<dist=2> 옵션과 A1 B1 A2 B3 A3 B5 A4 B7 입력 값을 주면, 출력 값은 A1 B1 01 02 01 02 01 02 입니다."
#. type: SS
-#: ../src/xz/xz.1:1833
+#: ../src/xz/xz.1
#, no-wrap
msgid "Other options"
msgstr "기타 옵션"
#. type: TP
-#: ../src/xz/xz.1:1834 ../src/xzdec/xzdec.1:83
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-q>, B<--quiet>"
msgstr "B<-q>, B<--quiet>"
#. type: Plain text
-#: ../src/xz/xz.1:1841
-msgid ""
-"Suppress warnings and notices. Specify this twice to suppress errors too. "
-"This option has no effect on the exit status. That is, even if a warning "
-"was suppressed, the exit status to indicate a warning is still used."
-msgstr ""
-"경고 및 알림을 끕니다. 두 번 지정하면 오류 메시지 표시도 끕니다. 이 옵션은 "
-"종료 상태에 영향을 주지 않습니다. 경고 표시를 끄더라도, 종료 상태에서는 여전"
-"히 경고가 나타났음을 알려줍니다."
+#: ../src/xz/xz.1
+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 "경고 및 알림을 끕니다. 두 번 지정하면 오류 메시지 표시도 끕니다. 이 옵션은 종료 상태에 영향을 주지 않습니다. 경고 표시를 끄더라도, 종료 상태에서는 여전히 경고가 나타났음을 알려줍니다."
#. type: TP
-#: ../src/xz/xz.1:1841
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-v>, B<--verbose>"
msgstr "B<-v>, B<--verbose>"
#. type: Plain text
-#: ../src/xz/xz.1:1850
-msgid ""
-"Be verbose. If standard error is connected to a terminal, B<xz> will "
-"display a progress indicator. Specifying B<--verbose> twice will give even "
-"more verbose output."
-msgstr ""
-"출력 내용이 많아집니다. 표준 오류를 터미널에 연결했다면 B<xz>는 진행 표시를 "
-"나타냅니다. B<--verbose>를 두번 지정하면 더 많은 내용을 표시합니다."
+#: ../src/xz/xz.1
+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 "출력 내용이 많아집니다. 표준 오류를 터미널에 연결했다면 B<xz>는 진행 표시를 나타냅니다. B<--verbose>를 두번 지정하면 더 많은 내용을 표시합니다."
#. type: Plain text
-#: ../src/xz/xz.1:1852
+#: ../src/xz/xz.1
msgid "The progress indicator shows the following information:"
msgstr "진행 표시에서는 다음 정보를 나타냅니다:"
#. type: Plain text
-#: ../src/xz/xz.1:1857
-msgid ""
-"Completion percentage is shown if the size of the input file is known. That "
-"is, the percentage cannot be shown in pipes."
-msgstr ""
-"입력 파일의 크기를 알고 있을 경우 완료 백분율. 파이프 처리시에는 백분율을 나"
-"타낼 수 없습니다."
+#: ../src/xz/xz.1
+msgid "Completion percentage is shown if the size of the input file is known. That is, the percentage cannot be shown in pipes."
+msgstr "입력 파일의 크기를 알고 있을 경우 완료 백분율. 파이프 처리시에는 백분율을 나타낼 수 없습니다."
#. type: Plain text
-#: ../src/xz/xz.1:1860
-msgid ""
-"Amount of compressed data produced (compressing) or consumed "
-"(decompressing)."
+#: ../src/xz/xz.1
+msgid "Amount of compressed data produced (compressing) or consumed (decompressing)."
msgstr "산출 압축 데이터 용량 (압축) 또는 소모 공간 용량 (압축 해제)."
#. type: Plain text
-#: ../src/xz/xz.1:1863
-msgid ""
-"Amount of uncompressed data consumed (compressing) or produced "
-"(decompressing)."
+#: ../src/xz/xz.1
+msgid "Amount of uncompressed data consumed (compressing) or produced (decompressing)."
msgstr "비압축 데이터 소모 용량 (압축) 또는 산출 용량 (압축 해제)."
#. type: Plain text
-#: ../src/xz/xz.1:1867
-msgid ""
-"Compression ratio, which is calculated by dividing the amount of compressed "
-"data processed so far by the amount of uncompressed data processed so far."
-msgstr ""
-"압축 데이터 산출 용량을 비압축 데이터 처리 용량으로 나누어 계산한 압축율."
+#: ../src/xz/xz.1
+msgid "Compression ratio, which is calculated by dividing the amount of compressed data processed so far by the amount of uncompressed data processed so far."
+msgstr "압축 데이터 산출 용량을 비압축 데이터 처리 용량으로 나누어 계산한 압축율."
#. type: Plain text
-#: ../src/xz/xz.1:1874
-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 ""
-"압축 또는 압축 해제 속도. 초당 비압축 데이터 소모량(압축) 또는 산출 용량(압"
-"축 해제)를 측정한 값입니다. B<xz>에서 파일 처리를 시작한 몇 초 후 나타납니"
-"다."
+#: ../src/xz/xz.1
+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 "압축 또는 압축 해제 속도. 초당 비압축 데이터 소모량(압축) 또는 산출 용량(압축 해제)를 측정한 값입니다. B<xz>에서 파일 처리를 시작한 몇 초 후 나타납니다."
#. type: Plain text
-#: ../src/xz/xz.1:1876
+#: ../src/xz/xz.1
msgid "Elapsed time in the format M:SS or H:MM:SS."
msgstr "경과 시간 형식은 M:SS 또는 H:MM:SS 입니다."
#. type: Plain text
-#: ../src/xz/xz.1:1884
-msgid ""
-"Estimated remaining time is shown only when the size of the input file is "
-"known and a couple of seconds have already passed since B<xz> started "
-"processing the file. The time is shown in a less precise format which never "
-"has any colons, for example, 2 min 30 s."
-msgstr ""
-"추산 여분 시간은 B<xz>가 파일을 처리하기 시작한 이후 입력 파일의 크기를 알고 "
-"몇 초가 지난 후에야 보여줍니다. 시간은 콜론 문자를 사용하지 않고 덜 자세한 "
-"형식으로, 예를 들면, 2분 30초 와 같은 형식으로 보여줍니다."
+#: ../src/xz/xz.1
+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, for example, 2 min 30 s."
+msgstr "추산 여분 시간은 B<xz>가 파일을 처리하기 시작한 이후 입력 파일의 크기를 알고 몇 초가 지난 후에야 보여줍니다. 시간은 콜론 문자를 사용하지 않고 덜 자세한 형식으로, 예를 들면, 2분 30초 와 같은 형식으로 보여줍니다."
#. type: Plain text
-#: ../src/xz/xz.1:1899
-msgid ""
-"When standard error is not a terminal, B<--verbose> will make B<xz> print "
-"the filename, compressed size, uncompressed size, compression ratio, and "
-"possibly also the speed and elapsed time on a single line to standard error "
-"after compressing or decompressing the file. The speed and elapsed time are "
-"included only when the operation took at least a few seconds. If the "
-"operation didn't finish, for example, due to user interruption, also the "
-"completion percentage is printed if the size of the input file is known."
-msgstr ""
-"표준 오류가 터미널이 아니라면 B<--verbose>는 B<xz>에서 파일 이름, 압축 크기, "
-"압축 해제 용량, 압축율, 그리고 가능하다면 파일을 압축 또는 압축 해제한 후 표"
-"준 오류로 속도와 걸린 시간을 나타내도록 합니다. 속도와 걸린 시간 정보는 동작"
-"을 처리하는데 최소한 몇초 정도 소요했을 경우에만 들어갑니다. 동작이 끝나지 "
-"않았다면, 이를테면 사용자의 중단 요청이 있었을 경우 입력 파일의 크기를 알고 "
-"있을 때 압축 백분율 정보도 들어갑니다."
+#: ../src/xz/xz.1
+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, for example, due to user interruption, also the completion percentage is printed if the size of the input file is known."
+msgstr "표준 오류가 터미널이 아니라면 B<--verbose>는 B<xz>에서 파일 이름, 압축 크기, 압축 해제 용량, 압축율, 그리고 가능하다면 파일을 압축 또는 압축 해제한 후 표준 오류로 속도와 걸린 시간을 나타내도록 합니다. 속도와 걸린 시간 정보는 동작을 처리하는데 최소한 몇초 정도 소요했을 경우에만 들어갑니다. 동작이 끝나지 않았다면, 이를테면 사용자의 중단 요청이 있었을 경우 입력 파일의 크기를 알고 있을 때 압축 백분율 정보도 들어갑니다."
#. type: TP
-#: ../src/xz/xz.1:1899 ../src/xzdec/xzdec.1:89
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-Q>, B<--no-warn>"
msgstr "B<-Q>, B<--no-warn>"
#. type: Plain text
-#: ../src/xz/xz.1:1909
-msgid ""
-"Don't set the exit status to 2 even if a condition worth a warning was "
-"detected. This option doesn't affect the verbosity level, thus both B<--"
-"quiet> and B<--no-warn> have to be used to not display warnings and to not "
-"alter the exit status."
-msgstr ""
-"경고로 알릴 만한 상황을 만났다 하더라도 종료 상태 2번을 설정하지 않습니다. "
-"이 옵션은 출력 수준에 영향을 주지 않기 때문에, B<--quiet> 옵션과 B<--no-"
-"warn> 옵션을 경고 표시를 막고 종료 상태를 바꾸지 않을 목적으로 사용합니다."
+#: ../src/xz/xz.1
+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 "경고로 알릴 만한 상황을 만났다 하더라도 종료 상태 2번을 설정하지 않습니다. 이 옵션은 출력 수준에 영향을 주지 않기 때문에, B<--quiet> 옵션과 B<--no-warn> 옵션을 경고 표시를 막고 종료 상태를 바꾸지 않을 목적으로 사용합니다."
#. type: TP
-#: ../src/xz/xz.1:1909
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--robot>"
msgstr "B<--robot>"
#. type: Plain text
-#: ../src/xz/xz.1:1921
-msgid ""
-"Print messages in a machine-parsable format. This is intended to ease "
-"writing frontends that want to use B<xz> instead of liblzma, which may be "
-"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 ""
-"머신에서 해석할 형식으로 메시지를 나타냅니다. liblzma 대신 B<xz>를 활용하려"
-"는 다양상 스크립트로서의 프론트엔드를 쉽게 작성하도록 하기 위함입니다. 이 옵"
-"션을 지정한 출력은 B<xz> 릴리스가 어떻게 되든 안정 버전이란 의미입니다. 자세"
-"한 내용은 B<로봇 모드> 섹션을 참고하십시오."
+#: ../src/xz/xz.1
+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 "머신에서 해석할 형식으로 메시지를 나타냅니다. liblzma 대신 B<xz>를 활용하려는 다양상 스크립트로서의 프론트엔드를 쉽게 작성하도록 하기 위함입니다. 이 옵션을 지정한 출력은 B<xz> 릴리스가 어떻게 되든 안정 버전이란 의미입니다. 자세한 내용은 B<로봇 모드> 섹션을 참고하십시오."
#. type: TP
-#: ../src/xz/xz.1:1921
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--info-memory>"
msgstr "B<--info-memory>"
#. type: Plain text
-#: ../src/xz/xz.1:1928
-msgid ""
-"Display, in human-readable format, how much physical memory (RAM) and how "
-"many processor threads B<xz> thinks the system has and the memory usage "
-"limits for compression and decompression, and exit successfully."
-msgstr ""
-"압축 및 압축 해제시 물리 메모리 용량 (RAM), B<xz>에서 파악하는 프로세서 스레"
-"드 갯수, 메모리 사용량 한계를 파악하기 쉬운 형식으로 나타내고 무사히 나갑니"
-"다."
+#: ../src/xz/xz.1
+msgid "Display, in human-readable format, how much physical memory (RAM) and how many processor threads B<xz> thinks the system has and the memory usage limits for compression and decompression, and exit successfully."
+msgstr "압축 및 압축 해제시 물리 메모리 용량 (RAM), B<xz>에서 파악하는 프로세서 스레드 갯수, 메모리 사용량 한계를 파악하기 쉬운 형식으로 나타내고 무사히 나갑니다."
#. type: TP
-#: ../src/xz/xz.1:1928 ../src/xzdec/xzdec.1:96
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-h>, B<--help>"
msgstr "B<-h>, B<--help>"
#. type: Plain text
-#: ../src/xz/xz.1:1932
-msgid ""
-"Display a help message describing the most commonly used options, and exit "
-"successfully."
-msgstr ""
-"보통 사용하는 옵션을 설명하는 도움말 메시지를 출력한 후, 완전히 빠져나갑니다."
+#: ../src/xz/xz.1
+msgid "Display a help message describing the most commonly used options, and exit successfully."
+msgstr "보통 사용하는 옵션을 설명하는 도움말 메시지를 출력한 후, 완전히 빠져나갑니다."
#. type: TP
-#: ../src/xz/xz.1:1932
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-H>, B<--long-help>"
msgstr "B<-H>, B<--long-help>"
#. type: Plain text
-#: ../src/xz/xz.1:1937
-msgid ""
-"Display a help message describing all features of B<xz>, and exit "
-"successfully"
-msgstr ""
-"B<xz>의 모든 기능을 설명하는 도움말 메시지를 출력한 후, 완전히 빠져나갑니다"
+#: ../src/xz/xz.1
+msgid "Display a help message describing all features of B<xz>, and exit successfully"
+msgstr "B<xz>의 모든 기능을 설명하는 도움말 메시지를 출력한 후, 완전히 빠져나갑니다"
#. type: TP
-#: ../src/xz/xz.1:1937 ../src/xzdec/xzdec.1:99
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-V>, B<--version>"
msgstr "B<-V>, B<--version>"
#. type: Plain text
-#: ../src/xz/xz.1:1946
-msgid ""
-"Display the version number of B<xz> and liblzma in human readable format. "
-"To get machine-parsable output, specify B<--robot> before B<--version>."
-msgstr ""
-"B<xz>와 liblzma 버전 번호를 가독 형식으로 출력합니다. 기계 해석 가능 형식을 "
-"가져오려면 B<--version> 앞에 B<--robot>을 지정하십시오."
+#: ../src/xz/xz.1
+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 "B<xz>와 liblzma 버전 번호를 가독 형식으로 출력합니다. 기계 해석 가능 형식을 가져오려면 B<--version> 앞에 B<--robot>을 지정하십시오."
#. type: SH
-#: ../src/xz/xz.1:1947
+#: ../src/xz/xz.1
#, no-wrap
msgid "ROBOT MODE"
msgstr "로봇 모드"
#. type: Plain text
-#: ../src/xz/xz.1:1963
-msgid ""
-"The robot mode is activated with the B<--robot> option. It makes the output "
-"of B<xz> easier to parse by other programs. Currently B<--robot> is "
-"supported only together with B<--version>, B<--info-memory>, and B<--list>. "
-"It will be supported for compression and decompression in the future."
-msgstr ""
-"로봇 모드는 B<--robot> 옵션으로 동작합니다. B<xz> 출력을 다른 프로그램에서 "
-"해석하기 쉽게 해줍니다. 현재로서는 B<--robot> 옵션은 B<--version>, B<--"
-"info-memory>, B<--list> 옵션하고만 사용할 수 있습니다. 앞으로는 압축 및 압"
-"축 해제 동작에 대해서도 지원합니다."
-
-#. type: SS
-#: ../src/xz/xz.1:1964
-#, no-wrap
-msgid "Version"
-msgstr "버전"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1969
-msgid ""
-"B<xz --robot --version> prints the version number of B<xz> and liblzma in "
-"the following format:"
-msgstr ""
-"B<xz --robot --version> 은 B<xz> 와 liblzma의 버전 번호를 다음 형식으로 나타"
-"냅니다:"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1971
-msgid "B<XZ_VERSION=>I<XYYYZZZS>"
-msgstr "B<XZ_VERSION=>I<XYYYZZZS>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1973
-msgid "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
-msgstr "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
-
-#. type: TP
-#: ../src/xz/xz.1:1973
-#, no-wrap
-msgid "I<X>"
-msgstr "I<X>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1976
-msgid "Major version."
-msgstr "주 버전."
-
-#. type: TP
-#: ../src/xz/xz.1:1976
-#, no-wrap
-msgid "I<YYY>"
-msgstr "I<YYY>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1981
-msgid ""
-"Minor version. Even numbers are stable. Odd numbers are alpha or beta "
-"versions."
-msgstr "부 버전. 짝수가 안정 버전입니다. 홀수는 알파 또는 베타 버전입니다."
-
-#. type: TP
-#: ../src/xz/xz.1:1981
-#, no-wrap
-msgid "I<ZZZ>"
-msgstr "I<ZZZ>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1985
-msgid ""
-"Patch level for stable releases or just a counter for development releases."
-msgstr "안정 릴리스의 패치 수준 또는 개발 릴리스의 횟수입니다."
-
-#. type: TP
-#: ../src/xz/xz.1:1985
-#, no-wrap
-msgid "I<S>"
-msgstr "I<S>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1993
-msgid ""
-"Stability. 0 is alpha, 1 is beta, and 2 is stable. I<S> should be always 2 "
-"when I<YYY> is even."
-msgstr ""
-"안정도. 0은 알파 버전, 1은 베타 버전을 나타내며, 2는 안정 버전을 나타냅니"
-"다. I<S>는 I<YYY> 값이 짝수라 해도 항상 2여야 합니다."
-
-#. type: Plain text
-#: ../src/xz/xz.1:1998
-msgid ""
-"I<XYYYZZZS> are the same on both lines if B<xz> and liblzma are from the "
-"same XZ Utils release."
-msgstr ""
-"B<xz> 명령과 liblzma이 동일한 XZ 유틸리티 릴리스에서 나왔다면 두 행의 "
-"I<XYYYZZZS> 값은 같습니다."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2004
-msgid "Examples: 4.999.9beta is B<49990091> and 5.0.0 is B<50000002>."
-msgstr "예제: 4.999.9beta는 B<49990091>이며, 5.0.0은 B<50000002>입니다."
-
-#. type: SS
-#: ../src/xz/xz.1:2005
-#, no-wrap
-msgid "Memory limit information"
-msgstr "메모리 제한 정보"
-
-#. type: Plain text
-#: ../src/xz/xz.1:2008
-msgid ""
-"B<xz --robot --info-memory> prints a single line with multiple tab-separated "
-"columns:"
-msgstr ""
-"B<xz --robot --info-memory> 명령은 탭으로 나뉜 여러 컬럼을 단일 행으로 나타냅"
-"니다:"
-
-#. type: IP
-#: ../src/xz/xz.1:2008
-#, no-wrap
-msgid "1."
-msgstr "1."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2010
-msgid "Total amount of physical memory (RAM) in bytes."
-msgstr "물리 메모리(RAM)의 바이트 단위 총량."
-
-#. type: IP
-#: ../src/xz/xz.1:2010 ../src/xz/xz.1:2125 ../src/xz/xz.1:2162
-#: ../src/xz/xz.1:2188 ../src/xz/xz.1:2258 ../src/xz/xz.1:2285
-#, no-wrap
-msgid "2."
-msgstr "2."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2017
-msgid ""
-"Memory usage limit for compression in bytes (B<--memlimit-compress>). A "
-"special value of B<0> indicates the default setting which for single-"
-"threaded mode is the same as no limit."
-msgstr ""
-"압축 진행시 바이트 단위 메모리 사용 한계값 (B<--memlimit-compress>). 특수 "
-"값 B<0>은 단일-스레드 모드에서 제한을 두지 않는 기본 설정임을 나타냅니다."
-
-#. type: IP
-#: ../src/xz/xz.1:2017 ../src/xz/xz.1:2127 ../src/xz/xz.1:2164
-#: ../src/xz/xz.1:2190 ../src/xz/xz.1:2263 ../src/xz/xz.1:2287
-#, no-wrap
-msgid "3."
-msgstr "3."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2024
-msgid ""
-"Memory usage limit for decompression in bytes (B<--memlimit-decompress>). A "
-"special value of B<0> indicates the default setting which for single-"
-"threaded mode is the same as no limit."
-msgstr ""
-"압축 해제시 바이트 단위 메모리 사용 한계값 (B<--memlimit-decompress>). 특수 "
-"값 B<0>은 단일-스레드 모드에서 제한을 두지 않는 기본 설정임을 나타냅니다."
-
-#. type: IP
-#: ../src/xz/xz.1:2024 ../src/xz/xz.1:2129 ../src/xz/xz.1:2166
-#: ../src/xz/xz.1:2193 ../src/xz/xz.1:2273 ../src/xz/xz.1:2289
-#, no-wrap
-msgid "4."
-msgstr "4."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2036
-msgid ""
-"Since B<xz> 5.3.4alpha: Memory usage for multi-threaded decompression in "
-"bytes (B<--memlimit-mt-decompress>). This is never zero because a system-"
-"specific default value shown in the column 5 is used if no limit has been "
-"specified explicitly. This is also never greater than the value in the "
-"column 3 even if a larger value has been specified with B<--memlimit-mt-"
-"decompress>."
-msgstr ""
-"B<xz> 5.3.4alpha 이후: 다중-스레드 기반 압축 해제시 바이트 단위 메모리 사용량"
-"(B<--memlimit-mt-decompress>). 분명하게 제한을 걸어두지 않았을 경우 5번째 컬"
-"럼에 나타난 시스템별 기본값을 사용하기 때문에 0 값을 지정하면 안됩니다. 또"
-"한 B<--memlimit-mt-decompress>로 세번째 컬럼 값보다 더 크게 지정을 한다 할지"
-"라도 이 값이 세번째 컬럼 값보다 크면 안됩니다."
-
-#. type: IP
-#: ../src/xz/xz.1:2036 ../src/xz/xz.1:2131 ../src/xz/xz.1:2168
-#: ../src/xz/xz.1:2195 ../src/xz/xz.1:2291
-#, no-wrap
-msgid "5."
-msgstr "5."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2048
-msgid ""
-"Since B<xz> 5.3.4alpha: A system-specific default memory usage limit that is "
-"used to limit the number of threads when compressing with an automatic "
-"number of threads (B<--threads=0>) and no memory usage limit has been "
-"specified (B<--memlimit-compress>). This is also used as the default value "
-"for B<--memlimit-mt-decompress>."
-msgstr ""
-"B<xz> 5.3.4alpha 이후: A system-specific default memory usage limit that is "
-"used to limit the number of threads when compressing with an automatic "
-"number of threads (B<--threads=0>) and no memory usage limit has been "
-"specified (B<--memlimit-compress>). This is also used as the default value "
-"for B<--memlimit-mt-decompress>."
-
-#. type: IP
-#: ../src/xz/xz.1:2048 ../src/xz/xz.1:2133 ../src/xz/xz.1:2170
-#: ../src/xz/xz.1:2197 ../src/xz/xz.1:2293
-#, no-wrap
-msgid "6."
-msgstr "6."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2053
-msgid "Since B<xz> 5.3.4alpha: Number of available processor threads."
-msgstr "B<xz> 5.3.4alpha 이후: Number of available processor threads."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2057
-msgid ""
-"In the future, the output of B<xz --robot --info-memory> may have more "
-"columns, but never more than a single line."
-msgstr ""
-"차후, B<xz --robot --info-memory> 출력에는 더 많은 내용이 들어가지만, 한 줄 "
-"이상은 넘어가지 않습니다."
+#: ../src/xz/xz.1
+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<--list>, B<--filters-help>, B<--info-memory>, and B<--version>. It will be supported for compression and decompression in the future."
+msgstr "로봇 모드는 B<--robot> 옵션으로 동작합니다. B<xz> 출력을 다른 프로그램에서 해석하기 쉽게 해줍니다. 현재로서는 B<--robot> 옵션은 B<--list>, B<--filters-help>, B<--info-memory>, B<--version> 옵션하고만 사용할 수 있습니다. 앞으로는 압축 및 압축 해제 동작에 대해서도 지원합니다."
#. type: SS
-#: ../src/xz/xz.1:2058
+#: ../src/xz/xz.1
#, no-wrap
msgid "List mode"
msgstr "목록 모드"
#. type: Plain text
-#: ../src/xz/xz.1:2063
-msgid ""
-"B<xz --robot --list> uses tab-separated output. The first column of every "
-"line has a string that indicates the type of the information found on that "
-"line:"
-msgstr ""
-"B<xz --robot --list> 명령은 탭으로 구분한 출력 형태를 활용합니다. 모든 행의 "
-"첫번째 컬럼에는 해당 행에서 찾을 수 있는 정보의 형식을 나타냅니다:"
+#: ../src/xz/xz.1
+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> 명령은 탭으로 구분한 출력 형태를 활용합니다. 모든 행의 첫번째 컬럼에는 해당 행에서 찾을 수 있는 정보의 형식을 나타냅니다:"
#. type: TP
-#: ../src/xz/xz.1:2063
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<name>"
msgstr "B<이름>"
#. type: Plain text
-#: ../src/xz/xz.1:2067
-msgid ""
-"This is always the first line when starting to list a file. The second "
-"column on the line is the filename."
-msgstr ""
-"이 행은 항상 파일 목록 시작 부분의 첫번째 줄에 있습니다. 이 행의 두번째 컬럼"
-"에 파일 이름이 들어있습니다."
+#: ../src/xz/xz.1
+msgid "This is always the first line when starting to list a file. The second column on the line is the filename."
+msgstr "이 행은 항상 파일 목록 시작 부분의 첫번째 줄에 있습니다. 이 행의 두번째 컬럼에 파일 이름이 들어있습니다."
#. type: TP
-#: ../src/xz/xz.1:2067
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<file>"
msgstr "B<파일>"
#. type: Plain text
-#: ../src/xz/xz.1:2075
-msgid ""
-"This line contains overall information about the B<.xz> file. This line is "
-"always printed after the B<name> line."
-msgstr ""
-"이 행에는 B<.xz> 파일의 전반적인 정보가 들어있습니다. 이 행은 항상 B<이름> "
-"행 다음에 있습니다."
+#: ../src/xz/xz.1
+msgid "This line contains overall information about the B<.xz> file. This line is always printed after the B<name> line."
+msgstr "이 행에는 B<.xz> 파일의 전반적인 정보가 들어있습니다. 이 행은 항상 B<이름> 행 다음에 있습니다."
#. type: TP
-#: ../src/xz/xz.1:2075
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<stream>"
msgstr "B<스트림>"
#. type: Plain text
-#: ../src/xz/xz.1:2085
-msgid ""
-"This line type is used only when B<--verbose> was specified. There are as "
-"many B<stream> lines as there are streams in the B<.xz> file."
-msgstr ""
-"이 행 형식은 B<--verbose> 옵션을 지정했을 때만 사용합니다. B<.xz> 파일의 B<"
-"스트림> 행 수만큼 나타납니다."
+#: ../src/xz/xz.1
+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 "이 행 형식은 B<--verbose> 옵션을 지정했을 때만 사용합니다. B<.xz> 파일의 B<스트림> 행 수만큼 나타납니다."
#. type: TP
-#: ../src/xz/xz.1:2085
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<block>"
msgstr "B<블록>"
#. type: Plain text
-#: ../src/xz/xz.1:2100
-msgid ""
-"This line type is used only when B<--verbose> was specified. There are as "
-"many B<block> lines as there are blocks in the B<.xz> file. The B<block> "
-"lines are shown after all the B<stream> lines; different line types are not "
-"interleaved."
-msgstr ""
-"이 행 형식은 B<--verbose> 옵션을 지정했을 때만 사용합니다. B<.xz> 파일의 블"
-"록 수만큼 B<블록> 행이 나타납니다. B<블록> 행은 모든 B<스트림> 행 다음에 나"
-"타납니다. 다른 형식의 행이 끼어들지는 않습니다."
+#: ../src/xz/xz.1
+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 "이 행 형식은 B<--verbose> 옵션을 지정했을 때만 사용합니다. B<.xz> 파일의 블록 수만큼 B<블록> 행이 나타납니다. B<블록> 행은 모든 B<스트림> 행 다음에 나타납니다. 다른 형식의 행이 끼어들지는 않습니다."
#. type: TP
-#: ../src/xz/xz.1:2100
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<summary>"
msgstr "B<요약>"
#. type: Plain text
-#: ../src/xz/xz.1:2115
-msgid ""
-"This line type is used only when B<--verbose> was specified twice. This "
-"line is printed after all B<block> lines. Like the B<file> line, the "
-"B<summary> line contains overall information about the B<.xz> file."
-msgstr ""
-"이 행 형식은 B<--verbose> 옵션을 두번 지정했을 때만 사용합니다. 이 행은 모"
-"든 B<블록> 행 다음에 출력합니다. B<파일> 행과 비슷하게, B<요약> 행에는 B<."
-"xz> 파일의 전반적인 정보가 담겨있습니다."
+#: ../src/xz/xz.1
+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 "이 행 형식은 B<--verbose> 옵션을 두번 지정했을 때만 사용합니다. 이 행은 모든 B<블록> 행 다음에 출력합니다. B<파일> 행과 비슷하게, B<요약> 행에는 B<.xz> 파일의 전반적인 정보가 담겨있습니다."
#. type: TP
-#: ../src/xz/xz.1:2115
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<totals>"
msgstr "B<총계>"
#. type: Plain text
-#: ../src/xz/xz.1:2119
-msgid ""
-"This line is always the very last line of the list output. It shows the "
-"total counts and sizes."
-msgstr ""
-"이 행은 목록 출력의 가장 마지막에 항상 나타납니다. 총 갯수와 크기를 나타냅니"
-"다."
+#: ../src/xz/xz.1
+msgid "This line is always the very last line of the list output. It shows the total counts and sizes."
+msgstr "이 행은 목록 출력의 가장 마지막에 항상 나타납니다. 총 갯수와 크기를 나타냅니다."
#. type: Plain text
-#: ../src/xz/xz.1:2123
+#: ../src/xz/xz.1
msgid "The columns of the B<file> lines:"
msgstr "B<파일> 행 컬럼:"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "2."
+msgstr "2."
+
#. type: Plain text
-#: ../src/xz/xz.1:2127
+#: ../src/xz/xz.1
msgid "Number of streams in the file"
msgstr "파일 스트림 갯수"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "3."
+msgstr "3."
+
#. type: Plain text
-#: ../src/xz/xz.1:2129
+#: ../src/xz/xz.1
msgid "Total number of blocks in the stream(s)"
msgstr "스트림의 블록 총 갯수"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "4."
+msgstr "4."
+
#. type: Plain text
-#: ../src/xz/xz.1:2131
+#: ../src/xz/xz.1
msgid "Compressed size of the file"
msgstr "파일 압축 크기"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "5."
+msgstr "5."
+
#. type: Plain text
-#: ../src/xz/xz.1:2133
+#: ../src/xz/xz.1
msgid "Uncompressed size of the file"
msgstr "파일 압축 해제 크기"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "6."
+msgstr "6."
+
#. type: Plain text
-#: ../src/xz/xz.1:2139
-msgid ""
-"Compression ratio, for example, B<0.123>. If ratio is over 9.999, three "
-"dashes (B<--->) are displayed instead of the ratio."
-msgstr ""
-"예를 들면, B<0.123>과 같은 압축율 입니다. 비율이 9.999라면, 대시 문자 3개 "
-"(B<--->)를 비율 값 대신 나타냅니다."
+#: ../src/xz/xz.1
+msgid "Compression ratio, for example, B<0.123>. If ratio is over 9.999, three dashes (B<--->) are displayed instead of the ratio."
+msgstr "예를 들면, B<0.123>과 같은 압축율 입니다. 비율이 9.999라면, 대시 문자 3개 (B<--->)를 비율 값 대신 나타냅니다."
#. type: IP
-#: ../src/xz/xz.1:2139 ../src/xz/xz.1:2172 ../src/xz/xz.1:2199
-#: ../src/xz/xz.1:2295
+#: ../src/xz/xz.1
#, no-wrap
msgid "7."
msgstr "7."
#. type: Plain text
-#: ../src/xz/xz.1:2152
-msgid ""
-"Comma-separated list of integrity check names. The following strings are "
-"used for the known check types: B<None>, B<CRC32>, B<CRC64>, and "
-"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 ""
-"쉼표로 구분한 무결성 검사 이름 목록입니다. B<None>, B<CRC32>, B<CRC64>, "
-"B<SHA-256> 문자열을 알려진 검사 형식으로 사용합니다. 알 수 없는 검사 형식에 "
-"대해서는 B<Unknown->I<N>을 사용하며, 여기서 I<N>은 (한 두자리) 정수형 숫자값"
-"으로 이루어진 검사 ID 입니다."
+#: ../src/xz/xz.1
+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 "쉼표로 구분한 무결성 검사 이름 목록입니다. B<None>, B<CRC32>, B<CRC64>, B<SHA-256> 문자열을 알려진 검사 형식으로 사용합니다. 알 수 없는 검사 형식에 대해서는 B<Unknown->I<N>을 사용하며, 여기서 I<N>은 (한 두자리) 정수형 숫자값으로 이루어진 검사 ID 입니다."
#. type: IP
-#: ../src/xz/xz.1:2152 ../src/xz/xz.1:2174 ../src/xz/xz.1:2201
-#: ../src/xz/xz.1:2298
+#: ../src/xz/xz.1
#, no-wrap
msgid "8."
msgstr "8."
#. type: Plain text
-#: ../src/xz/xz.1:2154
+#: ../src/xz/xz.1
msgid "Total size of stream padding in the file"
msgstr "파일의 스트림 패딩 총 길이"
#. type: Plain text
-#: ../src/xz/xz.1:2160
+#: ../src/xz/xz.1
msgid "The columns of the B<stream> lines:"
msgstr "B<스트림> 행 컬럼:"
#. type: Plain text
-#: ../src/xz/xz.1:2164
+#: ../src/xz/xz.1
msgid "Stream number (the first stream is 1)"
msgstr "스트림 번호 (첫 스트림은 1번)"
#. type: Plain text
-#: ../src/xz/xz.1:2166
+#: ../src/xz/xz.1
msgid "Number of blocks in the stream"
msgstr "스트림의 블록 총 갯수"
#. type: Plain text
-#: ../src/xz/xz.1:2168
+#: ../src/xz/xz.1
msgid "Compressed start offset"
msgstr "압축 시작 오프셋"
#. type: Plain text
-#: ../src/xz/xz.1:2170
+#: ../src/xz/xz.1
msgid "Uncompressed start offset"
msgstr "비압축 시작 오프셋"
#. type: Plain text
-#: ../src/xz/xz.1:2172
+#: ../src/xz/xz.1
msgid "Compressed size (does not include stream padding)"
msgstr "압축 크기 (스트림 패딩 미포함)"
#. type: Plain text
-#: ../src/xz/xz.1:2174 ../src/xz/xz.1:2203 ../src/xz/xz.1:2293
+#: ../src/xz/xz.1
msgid "Uncompressed size"
msgstr "압축 해제 용량"
#. type: Plain text
-#: ../src/xz/xz.1:2176 ../src/xz/xz.1:2205
+#: ../src/xz/xz.1
msgid "Compression ratio"
msgstr "압축율"
#. type: IP
-#: ../src/xz/xz.1:2176 ../src/xz/xz.1:2203 ../src/xz/xz.1:2300
+#: ../src/xz/xz.1
#, no-wrap
msgid "9."
msgstr "9."
#. type: Plain text
-#: ../src/xz/xz.1:2178 ../src/xz/xz.1:2207
+#: ../src/xz/xz.1
msgid "Name of the integrity check"
msgstr "무결성 검사 이름"
#. type: IP
-#: ../src/xz/xz.1:2178 ../src/xz/xz.1:2205 ../src/xz/xz.1:2316
+#: ../src/xz/xz.1
#, no-wrap
msgid "10."
msgstr "10."
#. type: Plain text
-#: ../src/xz/xz.1:2180
+#: ../src/xz/xz.1
msgid "Size of stream padding"
msgstr "스트림 패딩 길이"
#. type: Plain text
-#: ../src/xz/xz.1:2186
+#: ../src/xz/xz.1
msgid "The columns of the B<block> lines:"
msgstr "B<블록> 행 컬럼:"
#. type: Plain text
-#: ../src/xz/xz.1:2190
+#: ../src/xz/xz.1
msgid "Number of the stream containing this block"
msgstr "이 블록이 들어간 스트림 갯수"
#. type: Plain text
-#: ../src/xz/xz.1:2193
-msgid ""
-"Block number relative to the beginning of the stream (the first block is 1)"
+#: ../src/xz/xz.1
+msgid "Block number relative to the beginning of the stream (the first block is 1)"
msgstr "스트림 시작 부분의 블록 번호 (첫번째 블록은 1번)"
#. type: Plain text
-#: ../src/xz/xz.1:2195
+#: ../src/xz/xz.1
msgid "Block number relative to the beginning of the file"
msgstr "파일 시작 부분의 블록 번호"
#. type: Plain text
-#: ../src/xz/xz.1:2197
+#: ../src/xz/xz.1
msgid "Compressed start offset relative to the beginning of the file"
msgstr "파일 시작 부분의 압축 시작 오프셋"
#. type: Plain text
-#: ../src/xz/xz.1:2199
+#: ../src/xz/xz.1
msgid "Uncompressed start offset relative to the beginning of the file"
msgstr "파일 시작 부분의 비압축 시작 오프셋"
#. type: Plain text
-#: ../src/xz/xz.1:2201
+#: ../src/xz/xz.1
msgid "Total compressed size of the block (includes headers)"
msgstr "총 블록 압축 크기 (헤더 포함)"
#. type: Plain text
-#: ../src/xz/xz.1:2219
-msgid ""
-"If B<--verbose> was specified twice, additional columns are included on the "
-"B<block> lines. These are not displayed with a single B<--verbose>, because "
-"getting this information requires many seeks and can thus be slow:"
-msgstr ""
-"B<--verbose>를 두 번 지정하면, 추가 컬럼을 B<블록> 행에 넣습니다. B<--"
-"verbose> 단일 지정시에는 이 정보를 볼 때 탐색을 여러번 수행해야 하기 때문에 "
-"실행 과정이 느려질 수 있어서 나타내지 않습니다."
+#: ../src/xz/xz.1
+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 "B<--verbose>를 두 번 지정하면, 추가 컬럼을 B<블록> 행에 넣습니다. B<--verbose> 단일 지정시에는 이 정보를 볼 때 탐색을 여러번 수행해야 하기 때문에 실행 과정이 느려질 수 있어서 나타내지 않습니다:"
#. type: IP
-#: ../src/xz/xz.1:2221 ../src/xz/xz.1:2321
+#: ../src/xz/xz.1
#, no-wrap
msgid "11."
msgstr "11."
#. type: Plain text
-#: ../src/xz/xz.1:2223
+#: ../src/xz/xz.1
msgid "Value of the integrity check in hexadecimal"
msgstr "16진수 무결성 검사값"
#. type: IP
-#: ../src/xz/xz.1:2223 ../src/xz/xz.1:2331
+#: ../src/xz/xz.1
#, no-wrap
msgid "12."
msgstr "12."
#. type: Plain text
-#: ../src/xz/xz.1:2225
+#: ../src/xz/xz.1
msgid "Block header size"
msgstr "블록 헤더 크기"
#. type: IP
-#: ../src/xz/xz.1:2225
+#: ../src/xz/xz.1
#, no-wrap
msgid "13."
msgstr "13."
#. type: Plain text
-#: ../src/xz/xz.1:2235
-msgid ""
-"Block flags: B<c> indicates that compressed size is present, and B<u> "
-"indicates that uncompressed size is present. If the flag is not set, a dash "
-"(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 ""
-"블록 플래그: B<c>는 압축 크기가 현재 값임을 나타내고, B<u>는 압축 전 원본 크"
-"기가 현재 값임을 나타냅니다. 플래그를 설정하지 않았다면, 문자열 길이를 유지"
-"할 목적으로 대시 B<-> 를 대신 나타냅니다. 새 플래그는 나중에 문자열 끝 부분"
-"에 추가할 예정입니다."
+#: ../src/xz/xz.1
+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 "블록 플래그: B<c>는 압축 크기가 현재 값임을 나타내고, B<u>는 압축 전 원본 크기가 현재 값임을 나타냅니다. 플래그를 설정하지 않았다면, 문자열 길이를 유지할 목적으로 대시 B<-> 를 대신 나타냅니다. 새 플래그는 나중에 문자열 끝 부분에 추가할 예정입니다."
#. type: IP
-#: ../src/xz/xz.1:2235
+#: ../src/xz/xz.1
#, no-wrap
msgid "14."
msgstr "14."
#. type: Plain text
-#: ../src/xz/xz.1:2238
-msgid ""
-"Size of the actual compressed data in the block (this excludes the block "
-"header, block padding, and check fields)"
-msgstr ""
-"블록에 압축 해서 넣은 데이터의 실제 츠기 (블록 헤더, 블록 패딩, 검사 필드 제"
-"외)"
+#: ../src/xz/xz.1
+msgid "Size of the actual compressed data in the block (this excludes the block header, block padding, and check fields)"
+msgstr "블록에 압축 해서 넣은 데이터의 실제 츠기 (블록 헤더, 블록 패딩, 검사 필드 제외)"
#. type: IP
-#: ../src/xz/xz.1:2238
+#: ../src/xz/xz.1
#, no-wrap
msgid "15."
msgstr "15."
#. type: Plain text
-#: ../src/xz/xz.1:2243
-msgid ""
-"Amount of memory (in bytes) required to decompress this block with this "
-"B<xz> version"
-msgstr ""
-"이 B<xz> 버전에서 이 블록의 압축을 해제할 때 필요한 (바이트 단위) 메모리 용량"
+#: ../src/xz/xz.1
+msgid "Amount of memory (in bytes) required to decompress this block with this B<xz> version"
+msgstr "이 B<xz> 버전에서 이 블록의 압축을 해제할 때 필요한 (바이트 단위) 메모리 용량"
#. type: IP
-#: ../src/xz/xz.1:2243
+#: ../src/xz/xz.1
#, no-wrap
msgid "16."
msgstr "16."
#. type: Plain text
-#: ../src/xz/xz.1:2250
-msgid ""
-"Filter chain. Note that most of the options used at compression time cannot "
-"be known, because only the options that are needed for decompression are "
-"stored in the B<.xz> headers."
-msgstr ""
-"필터 체인. 대부분 사용하는 옵션은 압축 해제시 필요한 옵션만을 B<.xz> 헤더에 "
-"저장하기 때문에 압축 시간에 알 수 없습니다."
+#: ../src/xz/xz.1
+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 "필터 체인. 대부분 사용하는 옵션은 압축 해제시 필요한 옵션만을 B<.xz> 헤더에 저장하기 때문에 압축 시간에 알 수 없습니다."
#. type: Plain text
-#: ../src/xz/xz.1:2256
+#: ../src/xz/xz.1
msgid "The columns of the B<summary> lines:"
msgstr "B<요약> 행 컬럼:"
#. type: Plain text
-#: ../src/xz/xz.1:2263
-msgid ""
-"Amount of memory (in bytes) required to decompress this file with this B<xz> "
-"version"
-msgstr ""
-"이 B<xz> 버전에서 이 파일 압축을 해제할 때 필요한 (바이트 단위) 메모리 용량"
+#: ../src/xz/xz.1
+msgid "Amount of memory (in bytes) required to decompress this file with this B<xz> version"
+msgstr "이 B<xz> 버전에서 이 파일 압축을 해제할 때 필요한 (바이트 단위) 메모리 용량"
#. type: Plain text
-#: ../src/xz/xz.1:2269 ../src/xz/xz.1:2327
-msgid ""
-"B<yes> or B<no> indicating if all block headers have both compressed size "
-"and uncompressed size stored in them"
-msgstr ""
-"모든 블록 헤더에 압축 크기와 압축 전 원본 크기 정보가 들어갔는지 여부를 나타"
-"내는 B<yes> 또는 B<no> 값"
+#: ../src/xz/xz.1
+msgid "B<yes> or B<no> indicating if all block headers have both compressed size and uncompressed size stored in them"
+msgstr "모든 블록 헤더에 압축 크기와 압축 전 원본 크기 정보가 들어갔는지 여부를 나타내는 B<yes> 또는 B<no> 값"
#. type: Plain text
-#: ../src/xz/xz.1:2273 ../src/xz/xz.1:2331
+#: ../src/xz/xz.1
msgid "I<Since> B<xz> I<5.1.2alpha:>"
-msgstr "B<xz> I<5.1.2alpha> I<부터>:"
+msgstr "B<xz> I<5.1.2alpha> I<부터:>"
#. type: Plain text
-#: ../src/xz/xz.1:2277 ../src/xz/xz.1:2335
+#: ../src/xz/xz.1
msgid "Minimum B<xz> version required to decompress the file"
msgstr "파일 압축 해제시 필요한 최소 B<xz> 버전"
#. type: Plain text
-#: ../src/xz/xz.1:2283
+#: ../src/xz/xz.1
msgid "The columns of the B<totals> line:"
msgstr "B<총계> 행 컬럼:"
#. type: Plain text
-#: ../src/xz/xz.1:2287
+#: ../src/xz/xz.1
msgid "Number of streams"
msgstr "스트림 갯수"
#. type: Plain text
-#: ../src/xz/xz.1:2289
+#: ../src/xz/xz.1
msgid "Number of blocks"
msgstr "블록 갯수"
#. type: Plain text
-#: ../src/xz/xz.1:2291
+#: ../src/xz/xz.1
msgid "Compressed size"
msgstr "압축 크기"
#. type: Plain text
-#: ../src/xz/xz.1:2295
+#: ../src/xz/xz.1
msgid "Average compression ratio"
msgstr "평균 압축율"
#. type: Plain text
-#: ../src/xz/xz.1:2298
-msgid ""
-"Comma-separated list of integrity check names that were present in the files"
+#: ../src/xz/xz.1
+msgid "Comma-separated list of integrity check names that were present in the files"
msgstr "파일에 들어 있어 쉼표로 구분한 무결성 검사 이름 목록"
#. type: Plain text
-#: ../src/xz/xz.1:2300
+#: ../src/xz/xz.1
msgid "Stream padding size"
msgstr "스트림 패딩 길이"
#. type: Plain text
-#: ../src/xz/xz.1:2306
-msgid ""
-"Number of files. This is here to keep the order of the earlier columns the "
-"same as on B<file> lines."
+#: ../src/xz/xz.1
+msgid "Number of files. This is here to keep the order of the earlier columns the same as on B<file> lines."
msgstr "파일 갯수. B<파일> 행의 컬럼 순서를 따라갑니다."
#. type: Plain text
-#: ../src/xz/xz.1:2314
-msgid ""
-"If B<--verbose> was specified twice, additional columns are included on the "
-"B<totals> line:"
-msgstr ""
-"B<--verbose> 옵션을 두 번 지정하면, B<총계> 행에 추가 컬럼이 들어갑니다:"
+#: ../src/xz/xz.1
+msgid "If B<--verbose> was specified twice, additional columns are included on the B<totals> line:"
+msgstr "B<--verbose> 옵션을 두 번 지정하면, B<총계> 행에 추가 컬럼이 들어갑니다:"
#. type: Plain text
-#: ../src/xz/xz.1:2321
-msgid ""
-"Maximum amount of memory (in bytes) required to decompress the files with "
-"this B<xz> version"
-msgstr ""
-"이 B<xz> 버전에서 파일 압축을 해제할 떄 필요한 (바이트 단위) 최대 메모리 사용"
-"량"
+#: ../src/xz/xz.1
+msgid "Maximum amount of memory (in bytes) required to decompress the files with this B<xz> version"
+msgstr "이 B<xz> 버전에서 파일 압축을 해제할 떄 필요한 (바이트 단위) 최대 메모리 사용량"
#. type: Plain text
-#: ../src/xz/xz.1:2341
-msgid ""
-"Future versions may add new line types and new columns can be added to the "
-"existing line types, but the existing columns won't be changed."
-msgstr ""
-"차후 버전에서는 새 행 형식을 추가하고 기존 행 형식에 추가할 수 있는 새 컬럼"
-"을 넣기 까지는 알 수 있겠지만, 기존 컬럼은 바꾸지 않을 예정입니다."
+#: ../src/xz/xz.1
+msgid "Future versions may add new line types and new columns can be added to the existing line types, but the existing columns won't be changed."
+msgstr "차후 버전에서는 새 행 형식을 추가하고 기존 행 형식에 추가할 수 있는 새 컬럼을 넣기 까지는 알 수 있겠지만, 기존 컬럼은 바꾸지 않을 예정입니다."
+
+#. type: SS
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "Filters help"
+msgstr "필터 도움말"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<xz --robot --filters-help> prints the supported filters in the following format:"
+msgstr "B<xz --robot --filters-help> 는 다음 형식의 지원 필터 목록을 출력합니다:"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "I<filter>B<:>I<option>B<=E<lt>>I<value>B<E<gt>,>I<option>B<=E<lt>>I<value>B<E<gt>>..."
+msgstr "I<E<lt>필터E<gt>>B<:>I<E<lt>옵션E<gt>>B<=E<lt>>I<값>B<E<gt>,>I<E<lt>옵션E<gt>>B<=E<lt>>I<값>B<E<gt>>..."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<filter>"
+msgstr "I<E<lt>필터E<gt>>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Name of the filter"
+msgstr "필터 이름"
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<option>"
+msgstr "I<E<lt>옵션E<gt>>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Name of a filter specific option"
+msgstr "필터별 옵션 이름"
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<value>"
+msgstr "I<E<lt>값E<gt>>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Numeric I<value> ranges appear as B<E<lt>>I<min>B<->I<max>B<E<gt>>. String I<value> choices are shown within B<E<lt> E<gt>> and separated by a B<|> character."
+msgstr "숫자 I<값> 범위는 B<E<lt>>I<최소>B<->I<최대>B<E<gt>>입니다. 문자열 I<값>은 B<E<lt> E<gt>> 범위 내에서 선택하며 B<|> 문자로 구분합니다."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Each filter is printed on its own line."
+msgstr "각 필터는 한 줄에 하나씩 출력합니다."
+
+#. type: SS
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "Memory limit information"
+msgstr "메모리 제한 정보"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<xz --robot --info-memory> prints a single line with multiple tab-separated columns:"
+msgstr "B<xz --robot --info-memory> 명령은 탭으로 나뉜 여러 컬럼을 단일 행으로 나타냅니다:"
+
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "1."
+msgstr "1."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Total amount of physical memory (RAM) in bytes."
+msgstr "물리 메모리(RAM)의 바이트 단위 총량."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Memory usage limit for compression in bytes (B<--memlimit-compress>). A special value of B<0> indicates the default setting which for single-threaded mode is the same as no limit."
+msgstr "압축 진행시 바이트 단위 메모리 사용 한계값 (B<--memlimit-compress>). 특수 값 B<0>은 단일-스레드 모드에서 제한을 두지 않는 기본 설정임을 나타냅니다."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Memory usage limit for decompression in bytes (B<--memlimit-decompress>). A special value of B<0> indicates the default setting which for single-threaded mode is the same as no limit."
+msgstr "압축 해제시 바이트 단위 메모리 사용 한계값 (B<--memlimit-decompress>). 특수 값 B<0>은 단일-스레드 모드에서 제한을 두지 않는 기본 설정임을 나타냅니다."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.3.4alpha: Memory usage for multi-threaded decompression in bytes (B<--memlimit-mt-decompress>). This is never zero because a system-specific default value shown in the column 5 is used if no limit has been specified explicitly. This is also never greater than the value in the column 3 even if a larger value has been specified with B<--memlimit-mt-decompress>."
+msgstr "B<xz> 5.3.4alpha 이후: 다중-스레드 기반 압축 해제시 바이트 단위 메모리 사용량(B<--memlimit-mt-decompress>). 분명하게 제한을 걸어두지 않았을 경우 5번째 컬럼에 나타난 시스템별 기본값을 사용하기 때문에 0 값을 지정하면 안됩니다. 또한 B<--memlimit-mt-decompress>로 세번째 컬럼 값보다 더 크게 지정을 한다 할지라도 이 값이 세번째 컬럼 값보다 크면 안됩니다."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.3.4alpha: A system-specific default memory usage limit that is used to limit the number of threads when compressing with an automatic number of threads (B<--threads=0>) and no memory usage limit has been specified (B<--memlimit-compress>). This is also used as the default value for B<--memlimit-mt-decompress>."
+msgstr "B<xz> 5.3.4alpha 이후: A system-specific default memory usage limit that is used to limit the number of threads when compressing with an automatic number of threads (B<--threads=0>) and no memory usage limit has been specified (B<--memlimit-compress>). This is also used as the default value for B<--memlimit-mt-decompress>."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.3.4alpha: Number of available processor threads."
+msgstr "B<xz> 5.3.4alpha 이후: Number of available processor threads."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "In the future, the output of B<xz --robot --info-memory> may have more columns, but never more than a single line."
+msgstr "차후, B<xz --robot --info-memory> 출력에는 더 많은 내용이 들어가지만, 한 줄 이상은 넘어가지 않습니다."
+
+#. type: SS
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "Version"
+msgstr "버전"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<xz --robot --version> prints the version number of B<xz> and liblzma in the following format:"
+msgstr "B<xz --robot --version> 은 B<xz> 와 liblzma의 버전 번호를 다음 형식으로 나타냅니다:"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<XZ_VERSION=>I<XYYYZZZS>"
+msgstr "B<XZ_VERSION=>I<XYYYZZZS>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
+msgstr "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<X>"
+msgstr "I<X>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Major version."
+msgstr "주 버전."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<YYY>"
+msgstr "I<YYY>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Minor version. Even numbers are stable. Odd numbers are alpha or beta versions."
+msgstr "부 버전. 짝수가 안정 버전입니다. 홀수는 알파 또는 베타 버전입니다."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<ZZZ>"
+msgstr "I<ZZZ>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Patch level for stable releases or just a counter for development releases."
+msgstr "안정 릴리스의 패치 수준 또는 개발 릴리스의 횟수입니다."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<S>"
+msgstr "I<S>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Stability. 0 is alpha, 1 is beta, and 2 is stable. I<S> should be always 2 when I<YYY> is even."
+msgstr "안정도. 0은 알파 버전, 1은 베타 버전을 나타내며, 2는 안정 버전을 나타냅니다. I<S>는 I<YYY> 값이 짝수라 해도 항상 2여야 합니다."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "I<XYYYZZZS> are the same on both lines if B<xz> and liblzma are from the same XZ Utils release."
+msgstr "B<xz> 명령과 liblzma이 동일한 XZ 유틸리티 릴리스에서 나왔다면 두 행의 I<XYYYZZZS> 값은 같습니다."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Examples: 4.999.9beta is B<49990091> and 5.0.0 is B<50000002>."
+msgstr "예제: 4.999.9beta는 B<49990091>이며, 5.0.0은 B<50000002>입니다."
#. type: SH
-#: ../src/xz/xz.1:2342 ../src/xzdec/xzdec.1:104 ../src/lzmainfo/lzmainfo.1:44
-#: ../src/scripts/xzgrep.1:81
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1
#, no-wrap
msgid "EXIT STATUS"
msgstr "종료 상태"
#. type: TP
-#: ../src/xz/xz.1:2343 ../src/xzdec/xzdec.1:105 ../src/lzmainfo/lzmainfo.1:45
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "B<0>"
msgstr "B<0>"
#. type: Plain text
-#: ../src/xz/xz.1:2346 ../src/lzmainfo/lzmainfo.1:48
+#: ../src/xz/xz.1 ../src/lzmainfo/lzmainfo.1
msgid "All is good."
msgstr "모든 상태 양호."
#. type: TP
-#: ../src/xz/xz.1:2346 ../src/xzdec/xzdec.1:108 ../src/lzmainfo/lzmainfo.1:48
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "B<1>"
msgstr "B<1>"
#. type: Plain text
-#: ../src/xz/xz.1:2349 ../src/xzdec/xzdec.1:111 ../src/lzmainfo/lzmainfo.1:51
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
msgid "An error occurred."
msgstr "오류 발생."
#. type: TP
-#: ../src/xz/xz.1:2349
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<2>"
msgstr "B<2>"
#. type: Plain text
-#: ../src/xz/xz.1:2353
+#: ../src/xz/xz.1
msgid "Something worth a warning occurred, but no actual errors occurred."
msgstr "눈여겨볼 경고가 나타났지만, 실제 오류는 일어나지 않음."
#. type: Plain text
-#: ../src/xz/xz.1:2356
-msgid ""
-"Notices (not warnings or errors) printed on standard error don't affect the "
-"exit status."
-msgstr ""
-"표준 오류에 출력하는 알림(경고 또는 오류 아님)는 종료 상태에 영향을 주지 않습"
-"니다."
+#: ../src/xz/xz.1
+msgid "Notices (not warnings or errors) printed on standard error don't affect the exit status."
+msgstr "표준 오류에 출력하는 알림(경고 또는 오류 아님)는 종료 상태에 영향을 주지 않습니다."
#. type: SH
-#: ../src/xz/xz.1:2357 ../src/scripts/xzgrep.1:94 ../src/scripts/xzless.1:52
+#: ../src/xz/xz.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "ENVIRONMENT"
msgstr "환경"
#. type: Plain text
-#: ../src/xz/xz.1:2370
-msgid ""
-"B<xz> parses space-separated lists of options from the environment variables "
-"B<XZ_DEFAULTS> and B<XZ_OPT>, in this order, before parsing the options from "
-"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>는 빈칸으로 구분한 옵션 값 목록을 B<XZ_DEFAULTS>, B<XZ_OPT> 환경 변수에"
-"서 순서대로, 명령행에서 옵션을 해석하기 전에 불러옵니다. 참고로 환경 변수에"
-"서 옵션만 해석하며, 옵션이 아닌 부분은 조용히 무시합니다. 해석은 "
-"B<getopt_long>(3)으로 가능하며, 명령행 인자로 활용하기도 합니다."
+#: ../src/xz/xz.1
+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>는 빈칸으로 구분한 옵션 값 목록을 B<XZ_DEFAULTS>, B<XZ_OPT> 환경 변수에서 순서대로, 명령행에서 옵션을 해석하기 전에 불러옵니다. 참고로 환경 변수에서 옵션만 해석하며, 옵션이 아닌 부분은 조용히 무시합니다. 해석은 B<getopt_long>(3)으로 가능하며, 명령행 인자로 활용하기도 합니다."
#. type: TP
-#: ../src/xz/xz.1:2370
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<XZ_DEFAULTS>"
msgstr "B<XZ_DEFAULTS>"
#. type: Plain text
-#: ../src/xz/xz.1:2379
-msgid ""
-"User-specific or system-wide default options. Typically this is set in a "
-"shell initialization script to enable B<xz>'s memory usage limiter by "
-"default. Excluding shell initialization scripts and similar special cases, "
-"scripts must never set or unset B<XZ_DEFAULTS>."
-msgstr ""
-"사용자별, 시스템 범위 기본 옵션입니다. 보통 B<xz>의 메모리 사용량 제한을 기"
-"본으로 걸어둘 경우 셸 초기화 스크립트에 설정합니다. 셸 초기화 스크립트와 별"
-"도의 유사한 경우를 제외하고라면, 스크립트에서는 B<XZ_DEFAULTS> 환경 변수를 설"
-"정하지 말거나 설정을 해제해야합니다."
+#: ../src/xz/xz.1
+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 "사용자별, 시스템 범위 기본 옵션입니다. 보통 B<xz>의 메모리 사용량 제한을 기본으로 걸어둘 경우 셸 초기화 스크립트에 설정합니다. 셸 초기화 스크립트와 별도의 유사한 경우를 제외하고라면, 스크립트에서는 B<XZ_DEFAULTS> 환경 변수를 설정하지 말거나 설정을 해제해야합니다."
#. type: TP
-#: ../src/xz/xz.1:2379
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<XZ_OPT>"
msgstr "B<XZ_OPT>"
#. type: Plain text
-#: ../src/xz/xz.1:2390
-msgid ""
-"This is for passing options to B<xz> when it is not possible to set the "
-"options directly on the B<xz> command line. This is the case when B<xz> is "
-"run by a script or tool, for example, GNU B<tar>(1):"
-msgstr ""
-"B<xz> 명령행으로 옵션 설정 값을 직접 전달할 수 없을 경우 B<xz>에 옵션을 전달"
-"하는 환경 변수입니다. 예를 들어, B<xz>를 스크립트 또는 도구에서 실행할 경우 "
-"GNU B<tar>(1) 라면:"
+#: ../src/xz/xz.1
+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 when B<xz> is run by a script or tool, for example, GNU B<tar>(1):"
+msgstr "B<xz> 명령행으로 옵션 설정 값을 직접 전달할 수 없을 경우 B<xz>에 옵션을 전달하는 환경 변수입니다. 예를 들어, B<xz>를 스크립트 또는 도구에서 실행할 경우 GNU B<tar>(1) 라면:"
#. type: Plain text
-#: ../src/xz/xz.1:2396
-#, no-wrap
-msgid "CW<XZ_OPT=-2v tar caf foo.tar.xz foo>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<XZ_OPT=-2v tar caf foo.tar.xz foo>\n"
+msgid "\\f(CRXZ_OPT=-2v tar caf foo.tar.xz foo\\fR\n"
msgstr "CW<XZ_OPT=-2v tar caf foo.tar.xz foo>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2410
-msgid ""
-"Scripts may use B<XZ_OPT>, for example, to set script-specific default "
-"compression options. It is still recommended to allow users to override "
-"B<XZ_OPT> if that is reasonable. For example, in B<sh>(1) scripts one may "
-"use something like this:"
-msgstr ""
-"예를 들면, 스크립트에서 B<XZ_OPT> 를 활용하여, 스크립트별로 기본 압축 옵션을 "
-"지정할 수 있습니다. 적절한 이유가 있다면 B<XZ_OPT> 옵션 값을 사용자가 바꾸는"
-"걸 추천합니다. 예를 들면, B<sh>(1) 스크립트에서 다음처럼 활용할 수도 있습니"
-"다:"
+#: ../src/xz/xz.1
+msgid "Scripts may use B<XZ_OPT>, for example, to set script-specific default compression options. It is still recommended to allow users to override B<XZ_OPT> if that is reasonable. For example, in B<sh>(1) scripts one may use something like this:"
+msgstr "예를 들면, 스크립트에서 B<XZ_OPT> 를 활용하여, 스크립트별로 기본 압축 옵션을 지정할 수 있습니다. 적절한 이유가 있다면 B<XZ_OPT> 옵션 값을 사용자가 바꾸는걸 추천합니다. 예를 들면, B<sh>(1) 스크립트에서 다음처럼 활용할 수도 있습니다:"
#. type: Plain text
-#: ../src/xz/xz.1:2417
-#, no-wrap
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid ""
+#| "CW<XZ_OPT=${XZ_OPT-\"-7e\"}\n"
+#| "export XZ_OPT>\n"
msgid ""
-"CW<XZ_OPT=${XZ_OPT-\"-7e\"}\n"
-"export XZ_OPT>\n"
+"\\f(CRXZ_OPT=${XZ_OPT-\"-7e\"}\n"
+"export XZ_OPT\\fR\n"
msgstr ""
"CW<XZ_OPT=${XZ_OPT-\"-7e\"}\n"
"export XZ_OPT>\n"
#. type: SH
-#: ../src/xz/xz.1:2422
+#: ../src/xz/xz.1
#, no-wrap
msgid "LZMA UTILS COMPATIBILITY"
msgstr "LZMA 유틸리티 호환성"
#. type: Plain text
-#: ../src/xz/xz.1:2435
-msgid ""
-"The command line syntax of B<xz> is practically a superset of B<lzma>, "
-"B<unlzma>, and B<lzcat> as found from LZMA Utils 4.32.x. In most cases, it "
-"is possible to replace LZMA Utils with XZ Utils without breaking existing "
-"scripts. There are some incompatibilities though, which may sometimes cause "
-"problems."
-msgstr ""
-"B<xz>의 명령행 문법은 실제로 LZMA 유틸리티 4.32.x에서 찾을 수 있는 B<lzma>, "
-"B<unlzma> B<lzcat>의 상위 집합입니다. 대부분의 경우 LZMA 유틸리티를 XZ 유틸"
-"리티로 기존에 작성한 스크립트를 깨지 않고도 바꿀 수 있습니다. 몇가지 비호환"
-"성 문제 때문에 문제가 일어날 수는 있습니다."
+#: ../src/xz/xz.1
+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 "B<xz>의 명령행 문법은 실제로 LZMA 유틸리티 4.32.x에서 찾을 수 있는 B<lzma>, B<unlzma> B<lzcat>의 상위 집합입니다. 대부분의 경우 LZMA 유틸리티를 XZ 유틸리티로 기존에 작성한 스크립트를 깨지 않고도 바꿀 수 있습니다. 몇가지 비호환성 문제 때문에 문제가 일어날 수는 있습니다."
#. type: SS
-#: ../src/xz/xz.1:2436
+#: ../src/xz/xz.1
#, no-wrap
msgid "Compression preset levels"
msgstr "압축 사전 설정 단계"
#. type: Plain text
-#: ../src/xz/xz.1:2443
-msgid ""
-"The numbering of the compression level presets is not identical in B<xz> and "
-"LZMA Utils. The most important difference is how dictionary sizes are "
-"mapped to different presets. Dictionary size is roughly equal to the "
-"decompressor memory usage."
-msgstr ""
-"압축 수준 사전 설정의 번호 부여 방식은 B<xz>와 LZMA 유틸리티가 동일하지 않습"
-"니다. 가장 중요한 차이는 다른 사전 설정에 대해 딕셔너리 크기를 어떻게 대응했"
-"느냐 여부입니다. 딕셔너리 크기는 압축 해제시 메모리 사용량과 거의 비슷합니"
-"다."
+#: ../src/xz/xz.1
+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 "압축 수준 사전 설정의 번호 부여 방식은 B<xz>와 LZMA 유틸리티가 동일하지 않습니다. 가장 중요한 차이는 다른 사전 설정에 대해 딕셔너리 크기를 어떻게 대응했느냐 여부입니다. 딕셔너리 크기는 압축 해제시 메모리 사용량과 거의 비슷합니다."
#. type: tbl table
-#: ../src/xz/xz.1:2449 ../src/xz/xz.1:2474
+#: ../src/xz/xz.1
#, no-wrap
msgid "Level"
msgstr "단계"
#. type: tbl table
-#: ../src/xz/xz.1:2449 ../src/xz/xz.1:2474
+#: ../src/xz/xz.1
#, no-wrap
msgid "xz"
msgstr "xz"
#. type: tbl table
-#: ../src/xz/xz.1:2449
+#: ../src/xz/xz.1
#, no-wrap
msgid "LZMA Utils"
msgstr "LZMA 유틸리티"
#. type: tbl table
-#: ../src/xz/xz.1:2450 ../src/xz/xz.1:2475
+#: ../src/xz/xz.1
#, no-wrap
msgid "N/A"
msgstr "없음"
#. type: tbl table
-#: ../src/xz/xz.1:2451
+#: ../src/xz/xz.1
#, no-wrap
msgid "64 KiB"
msgstr "64 KiB"
#. type: tbl table
-#: ../src/xz/xz.1:2453
+#: ../src/xz/xz.1
#, no-wrap
msgid "512 KiB"
msgstr "512 KiB"
#. type: Plain text
-#: ../src/xz/xz.1:2468
-msgid ""
-"The dictionary size differences affect the compressor memory usage too, but "
-"there are some other differences between LZMA Utils and XZ Utils, which make "
-"the difference even bigger:"
-msgstr ""
-"딕셔너리 크기 차이는 압축 프로그램 메모리 사용에 영향을 주지만, LZMA 유틸리티"
-"와 XZ 유틸리티에서 사용량이 늘어나는 다른 차이점이 있습니다:"
+#: ../src/xz/xz.1
+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 "딕셔너리 크기 차이는 압축 프로그램 메모리 사용에 영향을 주지만, LZMA 유틸리티와 XZ 유틸리티에서 사용량이 늘어나는 다른 차이점이 있습니다:"
#. type: tbl table
-#: ../src/xz/xz.1:2474
+#: ../src/xz/xz.1
#, no-wrap
msgid "LZMA Utils 4.32.x"
msgstr "LZMA 유틸리티 4.32.x"
#. type: tbl table
-#: ../src/xz/xz.1:2477 ../src/xz/xz.1:2478
+#: ../src/xz/xz.1
#, no-wrap
msgid "12 MiB"
msgstr "12 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:2480
+#: ../src/xz/xz.1
#, no-wrap
msgid "26 MiB"
msgstr "26 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:2481
+#: ../src/xz/xz.1
#, no-wrap
msgid "45 MiB"
msgstr "45 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:2482
+#: ../src/xz/xz.1
#, no-wrap
msgid "83 MiB"
msgstr "83 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:2483
+#: ../src/xz/xz.1
#, no-wrap
msgid "159 MiB"
msgstr "159 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:2484
+#: ../src/xz/xz.1
#, no-wrap
msgid "311 MiB"
msgstr "311 MiB"
#. type: Plain text
-#: ../src/xz/xz.1:2493
-msgid ""
-"The default preset level in LZMA Utils is B<-7> while in XZ Utils it is "
-"B<-6>, so both use an 8 MiB dictionary by default."
-msgstr ""
-"XZ 유틸리티의 기본 사전 설정 수준값은 B<-6>이지만 LZMA 유틸리티의 기본 사전 "
-"설정 수준값은 B<-7>입니다. 두 프로그램의 딕셔너리 메모리 기본 사용량은 8MiB입"
-"니다."
+#: ../src/xz/xz.1
+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 "XZ 유틸리티의 기본 사전 설정 수준값은 B<-6>이지만 LZMA 유틸리티의 기본 사전 설정 수준값은 B<-7>입니다. 두 프로그램의 딕셔너리 메모리 기본 사용량은 8MiB입니다."
#. type: SS
-#: ../src/xz/xz.1:2494
+#: ../src/xz/xz.1
#, no-wrap
msgid "Streamed vs. non-streamed .lzma files"
msgstr "스트림 vs 비스트림 .lzma 파일"
#. type: Plain text
-#: ../src/xz/xz.1:2504
-msgid ""
-"The uncompressed size of the file can be stored in the B<.lzma> header. "
-"LZMA Utils does that when compressing regular files. The alternative is to "
-"mark that uncompressed size is unknown and use end-of-payload marker to "
-"indicate where the decompressor should stop. LZMA Utils uses this method "
-"when uncompressed size isn't known, which is the case, for example, in pipes."
-msgstr ""
-"파일을 압축하지 않은 크기는 B<.lzma> 헤더에 저장합니다. LZMA 유틸리티는 일"
-"반 파일을 압축할 때 압축하지 않은 파일의 크기를 저장합니다. 이 대신 압축하"
-"지 않은 크기를 '알 수 없음' 으로 저장하고 압축 해제 프로그램이 멈춰야 할 지점"
-"에 end-of-payload 마커를 사용하는 방법도 있습니다. LZMA 유틸리티는 파이프로 "
-"들어온 입력과 같이 압축하지 않은 파일의 크기를 알 수 없을 때 이런 방식을 활용"
-"합니다."
+#: ../src/xz/xz.1
+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 "파일을 압축하지 않은 크기는 B<.lzma> 헤더에 저장합니다. LZMA 유틸리티는 일반 파일을 압축할 때 압축하지 않은 파일의 크기를 저장합니다. 이 대신 압축하지 않은 크기를 '알 수 없음' 으로 저장하고 압축 해제 프로그램이 멈춰야 할 지점에 end-of-payload 마커를 사용하는 방법도 있습니다. LZMA 유틸리티는 파이프로 들어온 입력과 같이 압축하지 않은 파일의 크기를 알 수 없을 때 이런 방식을 활용합니다."
#. type: Plain text
-#: ../src/xz/xz.1:2525
-msgid ""
-"B<xz> supports decompressing B<.lzma> files with or without end-of-payload "
-"marker, but all B<.lzma> files created by B<xz> will use end-of-payload "
-"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>는 B<.lzma> 파일을 end-of-payload 마커의 유무와 관계없이 압축 해제 방식"
-"을 모두 지원하지만, B<xz>로 만든 모든 B<.lzma> 파일은 end-of-payload 마커를 "
-"사용하며, B<.lzma> 헤더에 압축하지 않은 파일 크기를 '알 수 없음'으로 표기합니"
-"다. 이 방식은 드문 상황에서 문제를 야기할 수 있습니다. 예를 들면, 임베디드 "
-"장치의 B<.lzma> 압축 해제 프로그램은 압축을 해제했을 때 크기를 알아야 동작합"
-"니다. 이 문제를 만나면, LZMA 유틸리티 또는 LZMA SDK를 활용하여 B<.lzma> 파일"
-"에 압축 전 파일 크기 정보를 저장해야합니다."
+#: ../src/xz/xz.1
+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>는 B<.lzma> 파일을 end-of-payload 마커의 유무와 관계없이 압축 해제 방식을 모두 지원하지만, B<xz>로 만든 모든 B<.lzma> 파일은 end-of-payload 마커를 사용하며, B<.lzma> 헤더에 압축하지 않은 파일 크기를 '알 수 없음'으로 표기합니다. 이 방식은 드문 상황에서 문제를 야기할 수 있습니다. 예를 들면, 임베디드 장치의 B<.lzma> 압축 해제 프로그램은 압축을 해제했을 때 크기를 알아야 동작합니다. 이 문제를 만나면, LZMA 유틸리티 또는 LZMA SDK를 활용하여 B<.lzma> 파일에 압축 전 파일 크기 정보를 저장해야합니다."
#. type: SS
-#: ../src/xz/xz.1:2526
+#: ../src/xz/xz.1
#, no-wrap
msgid "Unsupported .lzma files"
msgstr "지원하지 않는 .lzma 파일"
#. type: Plain text
-#: ../src/xz/xz.1:2549
-msgid ""
-"The B<.lzma> format allows I<lc> values up to 8, and I<lp> values up to 4. "
-"LZMA Utils can decompress files with any I<lc> and I<lp>, but always creates "
-"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 ""
-"B<.lzma> 형식은 I<lc> 값을 8까지 받아들이며, I<lp> 값은 4까지 받아들입니다. "
-"LZMA 유틸리티는 어떤 I<lc> 값과 I<lp> 값을 받아들이고도 압축을 해제할 수 있지"
-"만, 파일을 만들 때는 늘 B<lc=3> 값과 B<lp=0> 값을 활용합니다. 다른 I<lc> 값"
-"과 I<lp> 값으로의 파일 압축은 B<xz>와 LZMA SDK에서만 가능합니다."
+#: ../src/xz/xz.1
+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 "B<.lzma> 형식은 I<lc> 값을 8까지 받아들이며, I<lp> 값은 4까지 받아들입니다. LZMA 유틸리티는 어떤 I<lc> 값과 I<lp> 값을 받아들이고도 압축을 해제할 수 있지만, 파일을 만들 때는 늘 B<lc=3> 값과 B<lp=0> 값을 활용합니다. 다른 I<lc> 값과 I<lp> 값으로의 파일 압축은 B<xz>와 LZMA SDK에서만 가능합니다."
#. type: Plain text
-#: ../src/xz/xz.1:2560
-msgid ""
-"The implementation of the LZMA1 filter in liblzma requires that the sum of "
-"I<lc> and I<lp> must not exceed 4. Thus, B<.lzma> files, which exceed this "
-"limitation, cannot be decompressed with B<xz>."
-msgstr ""
-"liblzma의 LZMA1 필터 구현체에서는 I<lc> 값과 I<lp> 값의 합이 4를 넘어가면 안"
-"됩니다. 그래서 B<.lzma> 파일의 경우 이 제한을 넘어가면 B<xz>로 압축을 해제"
-"할 수 없습니다."
+#: ../src/xz/xz.1
+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 "liblzma의 LZMA1 필터 구현체에서는 I<lc> 값과 I<lp> 값의 합이 4를 넘어가면 안됩니다. 그래서 B<.lzma> 파일의 경우 이 제한을 넘어가면 B<xz>로 압축을 해제할 수 없습니다."
#. type: Plain text
-#: ../src/xz/xz.1:2575
-msgid ""
-"LZMA Utils creates only B<.lzma> files which have a dictionary size of "
-"2^I<n> (a power of 2) but accepts files with any dictionary size. liblzma "
-"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 ""
-"LZMA 유틸리티는 2^I<n> (2의 승수)크기를 지닌 딕셔너리를 가진 B<.lzma> 파일만 "
-"만들지만 받아들이는 파일의 딕셔너리 크기는 어떤 크기든 상관 없습니다. "
-"liblzma에서는 2^I<n>, 2^I<n> + 2^(I<n>-1) 딕셔너리 크기를 가진 B<.lzma> 파일 "
-"만 받아들입니다. 이로 인해 B<.lzma> 파일을 확인할 때 거짓 양성율이 늘어납니"
-"다."
+#: ../src/xz/xz.1
+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 "LZMA 유틸리티는 2^I<n> (2의 승수)크기를 지닌 딕셔너리를 가진 B<.lzma> 파일만 만들지만 받아들이는 파일의 딕셔너리 크기는 어떤 크기든 상관 없습니다. liblzma에서는 2^I<n>, 2^I<n> + 2^(I<n>-1) 딕셔너리 크기를 가진 B<.lzma> 파일 만 받아들입니다. 이로 인해 B<.lzma> 파일을 확인할 때 거짓 양성율이 늘어납니다."
#. type: Plain text
-#: ../src/xz/xz.1:2580
-msgid ""
-"These limitations shouldn't be a problem in practice, since practically all "
-"B<.lzma> files have been compressed with settings that liblzma will accept."
-msgstr ""
-"모든 B<.lzma> 파일을 liblzma 에서 받아들일 수 있도록 압축하기 때문에 이 제한"
-"이 실제로는 문제가 되지 않습니다."
+#: ../src/xz/xz.1
+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 "모든 B<.lzma> 파일을 liblzma 에서 받아들일 수 있도록 압축하기 때문에 이 제한이 실제로는 문제가 되지 않습니다."
#. type: SS
-#: ../src/xz/xz.1:2581
+#: ../src/xz/xz.1
#, no-wrap
msgid "Trailing garbage"
msgstr "뒤따라오는 쓰레기 값"
#. type: Plain text
-#: ../src/xz/xz.1:2591
-msgid ""
-"When decompressing, LZMA Utils silently ignore everything after the first B<."
-"lzma> stream. In most situations, this is a bug. This also means that LZMA "
-"Utils don't support decompressing concatenated B<.lzma> files."
-msgstr ""
-"압축 해제할 때, LZMA 유틸리티는 B<.lzma> 스트림 처음 부분 다음 나머지를 다 조"
-"용히 무시합니다. 대부분의 경우, 버그입니다. LZMA 유틸리티에서 B<.lzma> 결"
-"합 파일 압축 해제를 지원하지 않음을 의미하기도 합니다."
+#: ../src/xz/xz.1
+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 "압축 해제할 때, LZMA 유틸리티는 B<.lzma> 스트림 처음 부분 다음 나머지를 다 조용히 무시합니다. 대부분의 경우, 버그입니다. LZMA 유틸리티에서 B<.lzma> 결합 파일 압축 해제를 지원하지 않음을 의미하기도 합니다."
#. type: Plain text
-#: ../src/xz/xz.1:2601
-msgid ""
-"If there is data left after the first B<.lzma> stream, B<xz> considers the "
-"file to be corrupt unless B<--single-stream> was used. This may break "
-"obscure scripts which have assumed that trailing garbage is ignored."
-msgstr ""
-"B<.lzma> 스트림 처음부분 바로 다음에 데이터가 남아있을 경우, B<xz> 에서는 "
-"B<--single-stream> 옵션을 사용하지 않으면 깨진 파일로 간주합니다. 이 동작으"
-"로 하여금 뒤따라오는 쓰레기 값을 무시하도록 간주하는 애매한 스크립트 동작을 "
-"깰 수가 있습니다."
+#: ../src/xz/xz.1
+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 "B<.lzma> 스트림 처음부분 바로 다음에 데이터가 남아있을 경우, B<xz> 에서는 B<--single-stream> 옵션을 사용하지 않으면 깨진 파일로 간주합니다. 이 동작으로 하여금 뒤따라오는 쓰레기 값을 무시하도록 간주하는 애매한 스크립트 동작을 깰 수가 있습니다."
#. type: SH
-#: ../src/xz/xz.1:2602 ../src/xzdec/xzdec.1:117
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "NOTES"
msgstr "참고"
#. type: SS
-#: ../src/xz/xz.1:2604
+#: ../src/xz/xz.1
#, no-wrap
msgid "Compressed output may vary"
msgstr "출력 결과물이 달라짐"
#. type: Plain text
-#: ../src/xz/xz.1:2615
-msgid ""
-"The exact compressed output produced from the same uncompressed input file "
-"may vary between XZ Utils versions even if compression options are "
-"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 ""
-"압축하지 않은 입력 파일로부터 얻어낸 정확한 압축 출력 결과물은 압축 옵션이 완"
-"전히 동일하더라도 XZ 유틸리티의 버전에 따라 달라질 수 있습니다. 파일 형식에 "
-"영향을 주지 않고 인코더 그 자체를 개선(더 빠르게 하거나 더 나은 압축율로)하"
-"기 때문입니다. XZ 유틸리티 버전이 동일하더라도 빌드 옵션을 달리하여 빌드 상"
-"태가 제각각인 경우 출력 결과물이 달라질 수 있습니다."
+#: ../src/xz/xz.1
+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 "압축하지 않은 입력 파일로부터 얻어낸 정확한 압축 출력 결과물은 압축 옵션이 완전히 동일하더라도 XZ 유틸리티의 버전에 따라 달라질 수 있습니다. 파일 형식에 영향을 주지 않고 인코더 그 자체를 개선(더 빠르게 하거나 더 나은 압축율로)하기 때문입니다. XZ 유틸리티 버전이 동일하더라도 빌드 옵션을 달리하여 빌드 상태가 제각각인 경우 출력 결과물이 달라질 수 있습니다."
#. type: Plain text
-#: ../src/xz/xz.1:2625
-msgid ""
-"The above means that once B<--rsyncable> has been implemented, the resulting "
-"files won't necessarily be rsyncable unless both old and new files have been "
-"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 ""
-"B<--rsyncable> 기능을 넣었을 경우 동일한 xz 버전에서 이전 파일과 새 파일로 별"
-"도로 압축하지 않는 한 결과 파일을 (두 파일이 서로 다른 파일이 아니므로) "
-"rsync 처리할 필요가 없습니다. 이 문제는 인코더 구현체 기능 개발이 끝나서 xz "
-"버전이 다르더라도 안정적인 rsync 가능한 출력 결과물을 유지할 수 있을 때여야 "
-"해결할 수 있습니다."
+#: ../src/xz/xz.1
+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 "B<--rsyncable> 기능을 넣었을 경우 동일한 xz 버전에서 이전 파일과 새 파일로 별도로 압축하지 않는 한 결과 파일을 (두 파일이 서로 다른 파일이 아니므로) rsync 처리할 필요가 없습니다. 이 문제는 인코더 구현체 기능 개발이 끝나서 xz 버전이 다르더라도 안정적인 rsync 가능한 출력 결과물을 유지할 수 있을 때여야 해결할 수 있습니다."
#. type: SS
-#: ../src/xz/xz.1:2626
+#: ../src/xz/xz.1
#, no-wrap
msgid "Embedded .xz decompressors"
msgstr "내장 .xz 압축 해제 프로그램"
#. type: Plain text
-#: ../src/xz/xz.1:2643
-msgid ""
-"Embedded B<.xz> decompressor implementations like XZ Embedded don't "
-"necessarily support files created with integrity I<check> types other than "
-"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 ""
-"XZ 임베디드와 같은 내장 B<.xz> 압축 해제 구현체는 지원 파일의 무결성 I<검사> "
-"형식을 I<none>과 I<crc32> 이외의 설정으로 만들 필요가 없습니다. 기본값이 "
-"B<--check=crc64>일 경우에만, 임베디드 시스템에서 파일을 만들 때 B<--"
-"check=none> 또는 B<--check=crc32> 옵션을 사용해야합니다."
+#: ../src/xz/xz.1
+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 "XZ 임베디드와 같은 내장 B<.xz> 압축 해제 구현체는 지원 파일의 무결성 I<검사> 형식을 I<none>과 I<crc32> 이외의 설정으로 만들 필요가 없습니다. 기본값이 B<--check=crc64>일 경우에만, 임베디드 시스템에서 파일을 만들 때 B<--check=none> 또는 B<--check=crc32> 옵션을 사용해야합니다."
#. type: Plain text
-#: ../src/xz/xz.1:2653
-msgid ""
-"Outside embedded systems, all B<.xz> format decompressors support all the "
-"I<check> types, or at least are able to decompress the file without "
-"verifying the integrity check if the particular I<check> is not supported."
-msgstr ""
-"임베디드 시스템이 아니라면, 모든 B<.xz> 형식 압축 해제 프로그램에서는 모든 I<"
-"검사> 형식을 지원하거나, 일부 I<검사> 방식을 지원하지 않는다면, 최소한, 무결"
-"성 검사로 검증하지 않고 압축을 해제할 수 있습니다."
+#: ../src/xz/xz.1
+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 "임베디드 시스템이 아니라면, 모든 B<.xz> 형식 압축 해제 프로그램에서는 모든 I<검사> 형식을 지원하거나, 일부 I<검사> 방식을 지원하지 않는다면, 최소한, 무결성 검사로 검증하지 않고 압축을 해제할 수 있습니다."
#. type: Plain text
-#: ../src/xz/xz.1:2656
-msgid ""
-"XZ Embedded supports BCJ filters, but only with the default start offset."
-msgstr ""
-"XZ 임베디드는 BCJ 필터를 지원하지만, 기본 시작 오프셋만 지정할 수 있습니다."
+#: ../src/xz/xz.1
+msgid "XZ Embedded supports BCJ filters, but only with the default start offset."
+msgstr "XZ 임베디드는 BCJ 필터를 지원하지만, 기본 시작 오프셋만 지정할 수 있습니다."
#. type: SH
-#: ../src/xz/xz.1:2657
+#: ../src/xz/xz.1
#, no-wrap
msgid "EXAMPLES"
msgstr "예제"
#. type: SS
-#: ../src/xz/xz.1:2659
+#: ../src/xz/xz.1
#, no-wrap
msgid "Basics"
msgstr "기본"
#. type: Plain text
-#: ../src/xz/xz.1:2669
-msgid ""
-"Compress the file I<foo> into I<foo.xz> using the default compression level "
-"(B<-6>), and remove I<foo> if compression is successful:"
-msgstr ""
-"I<foo> 파일을 기본 압축 수준 (B<-6>) 으로 I<foo.xz> 파일에 압축해 넣고, 압축 "
-"과정이 무사히 끝나면 I<foo>를 삭제합니다:"
+#: ../src/xz/xz.1
+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 "I<foo> 파일을 기본 압축 수준 (B<-6>) 으로 I<foo.xz> 파일에 압축해 넣고, 압축 과정이 무사히 끝나면 I<foo>를 삭제합니다:"
#. type: Plain text
-#: ../src/xz/xz.1:2674
-#, no-wrap
-msgid "CW<xz foo>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz foo>\n"
+msgid "\\f(CRxz foo\\fR\n"
msgstr "CW<xz foo>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2685
-msgid ""
-"Decompress I<bar.xz> into I<bar> and don't remove I<bar.xz> even if "
-"decompression is successful:"
-msgstr ""
-"I<bar.xz>를 I<bar> 에 압축을 해제한 후 압축 해제가 무사히 끝나도 I<bar.xz>를 "
-"삭제하지 않습니다:"
+#: ../src/xz/xz.1
+msgid "Decompress I<bar.xz> into I<bar> and don't remove I<bar.xz> even if decompression is successful:"
+msgstr "I<bar.xz>를 I<bar> 에 압축을 해제한 후 압축 해제가 무사히 끝나도 I<bar.xz>를 삭제하지 않습니다:"
#. type: Plain text
-#: ../src/xz/xz.1:2690
-#, no-wrap
-msgid "CW<xz -dk bar.xz>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz -dk bar.xz>\n"
+msgid "\\f(CRxz -dk bar.xz\\fR\n"
msgstr "CW<xz -dk bar.xz>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2703
-msgid ""
-"Create I<baz.tar.xz> with the preset B<-4e> (B<-4 --extreme>), which is "
-"slower than the default B<-6>, but needs less memory for compression and "
-"decompression (48\\ MiB and 5\\ MiB, respectively):"
-msgstr ""
-"기본 사전 설정 B<-6> 보다는 느리지만, 압축 및 압축 해제시 메모리를 적게 차지"
-"(각각 48\\ Mib, 5\\MiB)는 B<-4e> 사전 설정(B<-4 --extreme>)을 활용하여 I<baz."
-"tar.xz> 파일을 만듭니다:"
+#: ../src/xz/xz.1
+msgid "Create I<baz.tar.xz> with the preset B<-4e> (B<-4 --extreme>), which is slower than the default B<-6>, but needs less memory for compression and decompression (48\\ MiB and 5\\ MiB, respectively):"
+msgstr "기본 사전 설정 B<-6> 보다는 느리지만, 압축 및 압축 해제시 메모리를 적게 차지(각각 48\\ Mib, 5\\MiB)는 B<-4e> 사전 설정(B<-4 --extreme>)을 활용하여 I<baz.tar.xz> 파일을 만듭니다:"
#. type: Plain text
-#: ../src/xz/xz.1:2708
-#, no-wrap
-msgid "CW<tar cf - baz | xz -4e E<gt> baz.tar.xz>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<tar cf - baz | xz -4e E<gt> baz.tar.xz>\n"
+msgid "\\f(CRtar cf - baz | xz -4e E<gt> baz.tar.xz\\fR\n"
msgstr "CW<tar cf - baz | xz -4e E<gt> baz.tar.xz>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2714
-msgid ""
-"A mix of compressed and uncompressed files can be decompressed to standard "
-"output with a single command:"
-msgstr ""
-"압축 및 비압축 파일을 단일 명령으로 표준 출력에 압축해제할 수 있습니다:"
+#: ../src/xz/xz.1
+msgid "A mix of compressed and uncompressed files can be decompressed to standard output with a single command:"
+msgstr "압축 및 비압축 파일을 단일 명령으로 표준 출력에 압축해제할 수 있습니다:"
#. type: Plain text
-#: ../src/xz/xz.1:2719
-#, no-wrap
-msgid "CW<xz -dcf a.txt b.txt.xz c.txt d.txt.lzma E<gt> abcd.txt>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz -dcf a.txt b.txt.xz c.txt d.txt.lzma E<gt> abcd.txt>\n"
+msgid "\\f(CRxz -dcf a.txt b.txt.xz c.txt d.txt.lzma E<gt> abcd.txt\\fR\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:2723
+#: ../src/xz/xz.1
#, no-wrap
msgid "Parallel compression of many files"
msgstr "다중 파일 병렬 압축"
#. type: Plain text
-#: ../src/xz/xz.1:2729
-msgid ""
-"On GNU and *BSD, B<find>(1) and B<xargs>(1) can be used to parallelize "
-"compression of many files:"
-msgstr ""
-"GNU와 *BSD에서는 B<find>(1) 명령과 B<xargs>(1) 명령으로 여러 파일의 압축을 "
-"병렬 처리할 수 있습니다:"
+#: ../src/xz/xz.1
+msgid "On GNU and *BSD, B<find>(1) and B<xargs>(1) can be used to parallelize compression of many files:"
+msgstr "GNU와 *BSD에서는 B<find>(1) 명령과 B<xargs>(1) 명령으로 여러 파일의 압축을 병렬 처리할 수 있습니다:"
#. type: Plain text
-#: ../src/xz/xz.1:2735
-#, no-wrap
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid ""
+#| "CW<find . -type f \\e! -name '*.xz' -print0 \\e\n"
+#| " | xargs -0r -P4 -n16 xz -T1>\n"
msgid ""
-"CW<find . -type f \\e! -name '*.xz' -print0 \\e\n"
-" | xargs -0r -P4 -n16 xz -T1>\n"
+"\\f(CRfind . -type f \\e! -name '*.xz' -print0 \\e\n"
+" | xargs -0r -P4 -n16 xz -T1\\fR\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:2757
-msgid ""
-"The B<-P> option to B<xargs>(1) sets the number of parallel B<xz> "
-"processes. The best value for the B<-n> option depends on how many files "
-"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 ""
-"B<xargs>(1) 의 B<-P> 옵션으로 B<xz> 프로세스의 병렬 처리 갯수를 지정합니"
-"다. B<-n> 옵션의 최적 값은 압축할 파일 수에 달려있습니다. 압축할 파일이 몇"
-"개밖에 없다면 1이어야합니다. 파일이 수천 수만개 정도 된다면 B<xargs>(1) 이 "
-"어쨌든지간에 만들어낼 B<xz> 프로세스의 겟수를 100으로 하거나 아니면 적당한 값"
-"을 지정하여 줄이는게 좋습니다."
+#: ../src/xz/xz.1
+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 "B<xargs>(1) 의 B<-P> 옵션으로 B<xz> 프로세스의 병렬 처리 갯수를 지정합니다. B<-n> 옵션의 최적 값은 압축할 파일 수에 달려있습니다. 압축할 파일이 몇개밖에 없다면 1이어야합니다. 파일이 수천 수만개 정도 된다면 B<xargs>(1) 이 어쨌든지간에 만들어낼 B<xz> 프로세스의 겟수를 100으로 하거나 아니면 적당한 값을 지정하여 줄이는게 좋습니다."
#. type: Plain text
-#: ../src/xz/xz.1:2765
-msgid ""
-"The option B<-T1> for B<xz> is there to force it to single-threaded mode, "
-"because B<xargs>(1) is used to control the amount of parallelization."
-msgstr ""
-"B<xz>에 B<-T1>옵션을 지정하면 단일-스레드 모드로 강제합니다. B<xargs>(1) 에"
-"서 병렬 처리 갯수를 제어할 수 있기 때문입니다."
+#: ../src/xz/xz.1
+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 "B<xz>에 B<-T1>옵션을 지정하면 단일-스레드 모드로 강제합니다. B<xargs>(1) 에서 병렬 처리 갯수를 제어할 수 있기 때문입니다."
#. type: SS
-#: ../src/xz/xz.1:2766
+#: ../src/xz/xz.1
#, no-wrap
msgid "Robot mode"
msgstr "로봇 모드"
#. type: Plain text
-#: ../src/xz/xz.1:2769
-msgid ""
-"Calculate how many bytes have been saved in total after compressing multiple "
-"files:"
+#: ../src/xz/xz.1
+msgid "Calculate how many bytes have been saved in total after compressing multiple files:"
msgstr "여러 파일을 압축한 후 저장할 바이트 용량을 계산합니다:"
#. type: Plain text
-#: ../src/xz/xz.1:2774
-#, no-wrap
-msgid "CW<xz --robot --list *.xz | awk '/^totals/{print $5-$4}'>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --robot --list *.xz | awk '/^totals/{print $5-$4}'>\n"
+msgid "\\f(CRxz --robot --list *.xz | awk '/^totals/{print $5-$4}'\\fR\n"
msgstr "CW<xz --robot --list *.xz | awk '/^totals/{print $5-$4}'>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2789
-msgid ""
-"A script may want to know that it is using new enough B<xz>. The following "
-"B<sh>(1) script checks that the version number of the B<xz> tool is at "
-"least 5.0.0. This method is compatible with old beta versions, which didn't "
-"support the B<--robot> option:"
-msgstr ""
-"이 스크립트에서는 충분히 최신의 B<xz> 명령을 사용하는지 알아보려 합니다. 다"
-"음 B<sh>(1) 스크립트에서는 B<xz> 도구의 버전 번호가 최소한 5.0.0인지 여부를 "
-"검사합니다. 이 방식은 B<--robot> 옵션을 지원하지 않는 오래된 베타 버전과도 "
-"호환성이 있습니다:"
+#: ../src/xz/xz.1
+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 "이 스크립트에서는 충분히 최신의 B<xz> 명령을 사용하는지 알아보려 합니다. 다음 B<sh>(1) 스크립트에서는 B<xz> 도구의 버전 번호가 최소한 5.0.0인지 여부를 검사합니다. 이 방식은 B<--robot> 옵션을 지원하지 않는 오래된 베타 버전과도 호환성이 있습니다:"
#. type: Plain text
-#: ../src/xz/xz.1:2798
-#, no-wrap
+#: ../src/xz/xz.1
+#, fuzzy, 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"
msgid ""
-"CW<if ! eval \"$(xz --robot --version 2E<gt> /dev/null)\" ||\n"
+"\\f(CRif ! 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"
+"unset XZ_VERSION LIBLZMA_VERSION\\fR\n"
msgstr ""
"CW<if ! eval \"$(xz --robot --version 2E<gt> /dev/null)\" ||\n"
" [ \"$XZ_VERSION\" -lt 50000002 ]; then\n"
@@ -4651,24 +3234,27 @@ msgstr ""
"unset XZ_VERSION LIBLZMA_VERSION>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2805
-msgid ""
-"Set a memory usage limit for decompression using B<XZ_OPT>, but if a limit "
-"has already been set, don't increase it:"
-msgstr ""
-"B<XZ_OPT> 환경 변수로 압축 해제시 메뢰 사용량 한계를 설정하지만, 한계 값을 이"
-"미 설정했다면, 값을 늘리지 않습니다:"
+#: ../src/xz/xz.1
+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 "B<XZ_OPT> 환경 변수로 압축 해제시 메뢰 사용량 한계를 설정하지만, 한계 값을 이미 설정했다면, 값을 늘리지 않습니다:"
#. type: Plain text
-#: ../src/xz/xz.1:2815
-#, no-wrap
+#: ../src/xz/xz.1
+#, fuzzy, 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"
msgid ""
-"CW<NEWLIM=$((123 E<lt>E<lt> 20))\\ \\ # 123 MiB\n"
+"\\f(CRNEWLIM=$((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"
+"fi\\fR\n"
msgstr ""
"CW<NEWLIM=$((123 E<lt>E<lt> 20))\\ \\ # 123 MiB\n"
"OLDLIM=$(xz --robot --info-memory | cut -f3)\n"
@@ -4678,878 +3264,615 @@ msgstr ""
"fi>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2825
-msgid ""
-"The simplest use for custom filter chains is customizing a LZMA2 preset. "
-"This can be useful, because the presets cover only a subset of the "
-"potentially useful combinations of compression settings."
-msgstr ""
-"개별 설정 필터 체인의 초단순 사용방식은 LZMA2 사전 설정 값을 별도로 설정하는 "
-"방식입니다. 사전 설정은 잠재적으로 쓸만한 압축 설정 조합만 다루기 때문에 꽤 "
-"쓸모가 있을 수도 있습니다."
+#: ../src/xz/xz.1
+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 "개별 설정 필터 체인의 초단순 사용방식은 LZMA2 사전 설정 값을 별도로 설정하는 방식입니다. 사전 설정은 잠재적으로 쓸만한 압축 설정 조합만 다루기 때문에 꽤 쓸모가 있을 수도 있습니다."
#. type: Plain text
-#: ../src/xz/xz.1:2833
-msgid ""
-"The CompCPU columns of the tables from the descriptions of the options "
-"B<-0> ... B<-9> and B<--extreme> are useful when customizing LZMA2 presets. "
-"Here are the relevant parts collected from those two tables:"
-msgstr ""
-"B<-0> ... B<-9> 옵션의 설명에서 테이블의 CompCPU 컬럼과 B<--extreme> 옵션은 "
-"LZMA2 사전 설정을 개별적으로 맞췄을 때 쓸만할 수도 있습니다. 여기 관련내용"
-"을 테이블 둘로 정리해서 모아보았습니다."
+#: ../src/xz/xz.1
+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 "B<-0> ... B<-9> 옵션의 설명에서 테이블의 CompCPU 컬럼과 B<--extreme> 옵션은 LZMA2 사전 설정을 개별적으로 맞췄을 때 쓸만할 수도 있습니다. 여기 관련내용을 테이블 둘로 정리해서 모아보았습니다:"
#. type: Plain text
-#: ../src/xz/xz.1:2858
-msgid ""
-"If you know that a file requires somewhat big dictionary (for example, 32\\ "
-"MiB) to compress well, but you want to compress it quicker than B<xz -8> "
-"would do, a preset with a low CompCPU value (for example, 1) can be "
-"modified to use a bigger dictionary:"
-msgstr ""
-"어떤 파일을 압축할 때 상당히 큰 딕셔너리(예: 32MiB)가 필요 하다는걸 알아채셨"
-"지만, B<xz -8> 명령이 압축할 때보다 더 빠른 속도로 압축하려 한다면, 더 큰 딕"
-"셔너리 사용을 위해 더 낮은 CompCPU 사전 설정 값(예: 1)으로 수정할 수 있습니"
-"다:"
+#: ../src/xz/xz.1
+msgid "If you know that a file requires somewhat big dictionary (for example, 32\\ MiB) to compress well, but you want to compress it quicker than B<xz -8> would do, a preset with a low CompCPU value (for example, 1) can be modified to use a bigger dictionary:"
+msgstr "어떤 파일을 압축할 때 상당히 큰 딕셔너리(예: 32MiB)가 필요 하다는걸 알아채셨지만, B<xz -8> 명령이 압축할 때보다 더 빠른 속도로 압축하려 한다면, 더 큰 딕셔너리 사용을 위해 더 낮은 CompCPU 사전 설정 값(예: 1)으로 수정할 수 있습니다:"
#. type: Plain text
-#: ../src/xz/xz.1:2863
-#, no-wrap
-msgid "CW<xz --lzma2=preset=1,dict=32MiB foo.tar>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --lzma2=preset=1,dict=32MiB foo.tar>\n"
+msgid "\\f(CRxz --lzma2=preset=1,dict=32MiB foo.tar\\fR\n"
msgstr "CW<xz --lzma2=preset=1,dict=32MiB foo.tar>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2879
-msgid ""
-"With certain files, the above command may be faster than B<xz -6> while "
-"compressing significantly better. However, it must be emphasized that only "
-"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 ""
-"각 파일에 대해, 위 명령은 압축율이 더 좋아지면서도 B<xz -6>보다 더 빨라집니"
-"다. 그러나, CompCPU 값을 낮게 유지하는 대신 큰 딕셔너리에서 일부 파일을 강조"
-"해야 합니다. 큰 딕셔너리가 대부분의 도움을 주는 매우 명백한 상황에서는 최소"
-"한 몇 메가바이트의 매우 유사한 각 파일이 아카이브에 들어갑니다. 딕셔너리 크"
-"기는 LZMA2가 연속으로 존재하는 각 파일의 유사성으로부터 얻는 장점을 취할 수 "
-"있을 때 일부 개별 파일보다 훨씬 더 커집니다."
+#: ../src/xz/xz.1
+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 "각 파일에 대해, 위 명령은 압축율이 더 좋아지면서도 B<xz -6>보다 더 빨라집니다. 그러나, CompCPU 값을 낮게 유지하는 대신 큰 딕셔너리에서 일부 파일을 강조해야 합니다. 큰 딕셔너리가 대부분의 도움을 주는 매우 명백한 상황에서는 최소한 몇 메가바이트의 매우 유사한 각 파일이 아카이브에 들어갑니다. 딕셔너리 크기는 LZMA2가 연속으로 존재하는 각 파일의 유사성으로부터 얻는 장점을 취할 수 있을 때 일부 개별 파일보다 훨씬 더 커집니다."
#. type: Plain text
-#: ../src/xz/xz.1:2886
-msgid ""
-"If very high compressor and decompressor memory usage is fine, and the file "
-"being compressed is at least several hundred megabytes, it may be useful to "
-"use an even bigger dictionary than the 64 MiB that B<xz -9> would use:"
-msgstr ""
-"압축 프로그램과 압축 해제 프로그램에서 메모리를 엄청 많이 사용해도 상관 없"
-"고, 파일을 수백 메가 바이트 메모리 용량을 활용하여 압축한다면, B<xz -9> 명령"
-"에 64MiB 용량을 초과하는 딕셔너리를 사용할 수 있게 하는 방법도 쓸만할 지도 모"
-"릅니다:"
+#: ../src/xz/xz.1
+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 "압축 프로그램과 압축 해제 프로그램에서 메모리를 엄청 많이 사용해도 상관 없고, 파일을 수백 메가 바이트 메모리 용량을 활용하여 압축한다면, B<xz -9> 명령에 64MiB 용량을 초과하는 딕셔너리를 사용할 수 있게 하는 방법도 쓸만할 지도 모릅니다:"
#. type: Plain text
-#: ../src/xz/xz.1:2891
-#, no-wrap
-msgid "CW<xz -vv --lzma2=dict=192MiB big_foo.tar>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz -vv --lzma2=dict=192MiB big_foo.tar>\n"
+msgid "\\f(CRxz -vv --lzma2=dict=192MiB big_foo.tar\\fR\n"
msgstr "CW<xz -vv --lzma2=dict=192MiB big_foo.tar>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2904
-msgid ""
-"Using B<-vv> (B<--verbose --verbose>) like in the above example can be "
-"useful to see the memory requirements of the compressor and decompressor. "
-"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 ""
-"위 예제에서와 같이 B<-vv> (B<--verbose --verbose>) 옵션을 사용하면 압축 및 압"
-"축 해제 과정에서 필요한 메모리 용량을 살펴보는데 요긴할 수 있습니다. 압축 해"
-"제한 파일 크기보다 더 큰 딕셔너리를 사용하면 불필요한 메모리 소모량이 발생하"
-"여 위 명령이 작은 파일에는 쓸모 없음을 기억하십시오."
+#: ../src/xz/xz.1
+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 "위 예제에서와 같이 B<-vv> (B<--verbose --verbose>) 옵션을 사용하면 압축 및 압축 해제 과정에서 필요한 메모리 용량을 살펴보는데 요긴할 수 있습니다. 압축 해제한 파일 크기보다 더 큰 딕셔너리를 사용하면 불필요한 메모리 소모량이 발생하여 위 명령이 작은 파일에는 쓸모 없음을 기억하십시오."
#. type: Plain text
-#: ../src/xz/xz.1:2916
-msgid ""
-"Sometimes the compression time doesn't matter, but the decompressor memory "
-"usage has to be kept low, for example, to make it possible to decompress the "
-"file on an embedded system. The following command uses B<-6e> (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 ""
-"때로는 압축 시간이 딱히 상관이 없을 수도 있습니다만, 압축 해제시 메모리 사용"
-"량을 적게 유지해야 할 수도 있습니다. 예를 들면, 임베디드 시스템에서 파일 압축"
-"을 해제할 수도 있습니다. 다음 명령의 경우 B<-6e> (B<-6 --extreme>) 옵션을 기"
-"반 옵션을 사용하며 딕셔너리 크기를 64KiB만 사용하도록 제한합니다. 결과 파일"
-"은 XZ 임베디드(이게 B<--check=crc32> 옵션이 있는 이유)로 100KiB 메모리 용량"
-"을 활용하여 풀어낼 수 있습니다."
+#: ../src/xz/xz.1
+msgid "Sometimes the compression time doesn't matter, but the decompressor memory usage has to be kept low, for example, to make it possible to decompress the file on an embedded system. The following command uses B<-6e> (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 "때로는 압축 시간이 딱히 상관이 없을 수도 있습니다만, 압축 해제시 메모리 사용량을 적게 유지해야 할 수도 있습니다. 예를 들면, 임베디드 시스템에서 파일 압축을 해제할 수도 있습니다. 다음 명령의 경우 B<-6e> (B<-6 --extreme>) 옵션을 기반 옵션을 사용하며 딕셔너리 크기를 64KiB만 사용하도록 제한합니다. 결과 파일은 XZ 임베디드(이게 B<--check=crc32> 옵션이 있는 이유)로 100KiB 메모리 용량을 활용하여 풀어낼 수 있습니다."
#. type: Plain text
-#: ../src/xz/xz.1:2921
-#, no-wrap
-msgid "CW<xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo>\n"
+msgid "\\f(CRxz --check=crc32 --lzma2=preset=6e,dict=64KiB foo\\fR\n"
msgstr "CW<xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2944
-msgid ""
-"If you want to squeeze out as many bytes as possible, adjusting the number "
-"of literal context bits (I<lc>) and number of position bits (I<pb>) can "
-"sometimes help. Adjusting the number of literal position bits (I<lp>) "
-"might help too, but usually I<lc> and I<pb> are more important. For "
-"example, a source code archive contains mostly US-ASCII text, so something "
-"like the following might give slightly (like 0.1\\ %) smaller file than B<xz "
-"-6e> (try also without B<lc=4>):"
-msgstr ""
-"가능한 한 수 바이트를 더 쥐어 짜내고 싶을 때, 리터럴 문맥 비트 수(I<lc>)와 위"
-"치 비트 수(I<pb>)를 조정하면 도움이 될 수도 있습니다. 리터럴 위치 비트 수"
-"(I<lp>)를 조금 건드리는 것 또한 도움이 될 지도 모르겠지만 보통 I<lc> 값과 "
-"I<pb> 값이 더 중요합니다. 예를 들면, 소스 코드 저장 파일에는 US-ASCII 텍스트"
-"가 대부분이기에, 다음과 같은 경우는 B<xz -6e> 명령을 실행했을 때부다는 아주 "
-"약간(거의 0.1% 수준) 작은 파일을 얻어낼 수도 있습니다(B<lc=4>를 빼고도 시도해"
-"보십시오):"
+#: ../src/xz/xz.1
+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. For example, a source code archive contains mostly US-ASCII text, so something like the following might give slightly (like 0.1\\ %) smaller file than B<xz -6e> (try also without B<lc=4>):"
+msgstr "가능한 한 수 바이트를 더 쥐어 짜내고 싶을 때, 리터럴 문맥 비트 수(I<lc>)와 위치 비트 수(I<pb>)를 조정하면 도움이 될 수도 있습니다. 리터럴 위치 비트 수(I<lp>)를 조금 건드리는 것 또한 도움이 될 지도 모르겠지만 보통 I<lc> 값과 I<pb> 값이 더 중요합니다. 예를 들면, 소스 코드 저장 파일에는 US-ASCII 텍스트가 대부분이기에, 다음과 같은 경우는 B<xz -6e> 명령을 실행했을 때부다는 아주 약간(거의 0.1% 수준) 작은 파일을 얻어낼 수도 있습니다(B<lc=4>를 빼고도 시도해보십시오):"
#. type: Plain text
-#: ../src/xz/xz.1:2949
-#, no-wrap
-msgid "CW<xz --lzma2=preset=6e,pb=0,lc=4 source_code.tar>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --lzma2=preset=6e,pb=0,lc=4 source_code.tar>\n"
+msgid "\\f(CRxz --lzma2=preset=6e,pb=0,lc=4 source_code.tar\\fR\n"
msgstr "CW<xz --lzma2=preset=6e,pb=0,lc=4 source_code.tar>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2957
-msgid ""
-"Using another filter together with LZMA2 can improve compression with "
-"certain file types. For example, to compress a x86-32 or x86-64 shared "
-"library using the x86 BCJ filter:"
-msgstr ""
-"LZMA2와 다른 필터를 함께 사용하면 일부 파일 형식에 대해 압축율을 개선할 수 있"
-"습니다. 예를 들면 x86-32 또는 x86-64 공유 라이브러리를 x86 BCJ 필터를 활용하"
-"여 압축할 경우:"
+#: ../src/xz/xz.1
+msgid "Using another filter together with LZMA2 can improve compression with certain file types. For example, to compress a x86-32 or x86-64 shared library using the x86 BCJ filter:"
+msgstr "LZMA2와 다른 필터를 함께 사용하면 일부 파일 형식에 대해 압축율을 개선할 수 있습니다. 예를 들면 x86-32 또는 x86-64 공유 라이브러리를 x86 BCJ 필터를 활용하여 압축할 경우:"
#. type: Plain text
-#: ../src/xz/xz.1:2962
-#, no-wrap
-msgid "CW<xz --x86 --lzma2 libfoo.so>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --x86 --lzma2 libfoo.so>\n"
+msgid "\\f(CRxz --x86 --lzma2 libfoo.so\\fR\n"
msgstr "CW<xz --x86 --lzma2 libfoo.so>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2976
-msgid ""
-"Note that the order of the filter options is significant. If B<--x86> is "
-"specified after B<--lzma2>, B<xz> will give an error, because there cannot "
-"be any filter after LZMA2, and also because the x86 BCJ filter cannot be "
-"used as the last filter in the chain."
-msgstr ""
-"참고로 필터 옵션의 순서는 상당히 중요합니다. B<--x86>을 B<--lzma> 이전에 지"
-"정하면 B<xz>에서 오류가 나는데, LZMA2 다음에는 어떤 필터든 설정할 수 없고, 옵"
-"션 체인상 마지막 필터로 x86 BCJ 필터를 사용할 수 없기 때문입니다."
+#: ../src/xz/xz.1
+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 "참고로 필터 옵션의 순서는 상당히 중요합니다. B<--x86>을 B<--lzma> 이전에 지정하면 B<xz>에서 오류가 나는데, LZMA2 다음에는 어떤 필터든 설정할 수 없고, 옵션 체인상 마지막 필터로 x86 BCJ 필터를 사용할 수 없기 때문입니다."
#. type: Plain text
-#: ../src/xz/xz.1:2982
-msgid ""
-"The Delta filter together with LZMA2 can give good results with bitmap "
-"images. It should usually beat PNG, which has a few more advanced filters "
-"than simple delta but uses Deflate for the actual compression."
-msgstr ""
-"LZMA2와 델타 필터는 비트맵 그림에 최적의 결과를 가져다줄 수 있습니다. PNG에 "
-"보통 안성맞춥인데, PNG에는 단순 델타 필터보단 약간 더 고급진 필터를 사용하지"
-"만, 실제 압축을 진행할 때는 Deflate를 사용하기 때문입니다."
+#: ../src/xz/xz.1
+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 "LZMA2와 델타 필터는 비트맵 그림에 최적의 결과를 가져다줄 수 있습니다. PNG에 보통 안성맞춥인데, PNG에는 단순 델타 필터보단 약간 더 고급진 필터를 사용하지만, 실제 압축을 진행할 때는 Deflate를 사용하기 때문입니다."
#. type: Plain text
-#: ../src/xz/xz.1:2992
-msgid ""
-"The image has to be saved in uncompressed format, for example, as "
-"uncompressed TIFF. The distance parameter of the Delta filter is set to "
-"match the number of bytes per pixel in the image. For example, 24-bit RGB "
-"bitmap needs B<dist=3>, and it is also good to pass B<pb=0> to LZMA2 to "
-"accommodate the three-byte alignment:"
-msgstr ""
-"예를 들어 이미지를 압축하지 않은 비압축 TIFF로 저장해야 하는 경우가 있습니"
-"다. 델타 필터의 거리 매개변수는 그림에서 픽셀당 바이트 수에 일치하도록 설정"
-"합니다. 예를 들면, 24비트 RGB 비트맵의 경우 B<dist=3> 거리 매개변수 값을 설"
-"정해야 하며, LZMA2 압축시 3바이트 정렬을 따르도록 B<pb=0> 값을 전달하는 방법"
-"도 바람직합니다."
+#: ../src/xz/xz.1
+msgid "The image has to be saved in uncompressed format, for example, as uncompressed TIFF. The distance parameter of the Delta filter is set to match the number of bytes per pixel in the image. For example, 24-bit RGB bitmap needs B<dist=3>, and it is also good to pass B<pb=0> to LZMA2 to accommodate the three-byte alignment:"
+msgstr "예를 들어 이미지를 압축하지 않은 비압축 TIFF로 저장해야 하는 경우가 있습니다. 델타 필터의 거리 매개변수는 그림에서 픽셀당 바이트 수에 일치하도록 설정합니다. 예를 들면, 24비트 RGB 비트맵의 경우 B<dist=3> 거리 매개변수 값을 설정해야 하며, LZMA2 압축시 3바이트 정렬을 따르도록 B<pb=0> 값을 전달하는 방법도 바람직합니다:"
#. type: Plain text
-#: ../src/xz/xz.1:2997
-#, no-wrap
-msgid "CW<xz --delta=dist=3 --lzma2=pb=0 foo.tiff>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --delta=dist=3 --lzma2=pb=0 foo.tiff>\n"
+msgid "\\f(CRxz --delta=dist=3 --lzma2=pb=0 foo.tiff\\fR\n"
msgstr "CW<xz --delta=dist=3 --lzma2=pb=0 foo.tiff>\n"
#. type: Plain text
-#: ../src/xz/xz.1:3005
-msgid ""
-"If multiple images have been put into a single archive (for example, B<."
-"tar>), the Delta filter will work on that too as long as all images have the "
-"same number of bytes per pixel."
-msgstr ""
-"여러 이미지를 단일 아카이브로 넣고 싶다면(예: B<.tar>), 모든 이미지에 대해 동"
-"일한 픽셀당 바이트 수가 들어가는 경우에도 델타 필터가 동작합니다."
+#: ../src/xz/xz.1
+msgid "If multiple images have been put into a single archive (for example, B<.tar>), the Delta filter will work on that too as long as all images have the same number of bytes per pixel."
+msgstr "여러 이미지를 단일 아카이브로 넣고 싶다면(예: B<.tar>), 모든 이미지에 대해 동일한 픽셀당 바이트 수가 들어가는 경우에도 델타 필터가 동작합니다."
#. type: SH
-#: ../src/xz/xz.1:3006 ../src/xzdec/xzdec.1:143 ../src/lzmainfo/lzmainfo.1:59
-#: ../src/scripts/xzdiff.1:65 ../src/scripts/xzgrep.1:106
-#: ../src/scripts/xzless.1:65 ../src/scripts/xzmore.1:51
+#: ../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
#, no-wrap
msgid "SEE ALSO"
msgstr "추가 참조"
#. type: Plain text
-#: ../src/xz/xz.1:3015
-msgid ""
-"B<xzdec>(1), B<xzdiff>(1), B<xzgrep>(1), B<xzless>(1), B<xzmore>(1), "
-"B<gzip>(1), B<bzip2>(1), B<7z>(1)"
-msgstr ""
-"B<xzdec>(1), B<xzdiff>(1), B<xzgrep>(1), B<xzless>(1), B<xzmore>(1), "
-"B<gzip>(1), B<bzip2>(1), B<7z>(1)"
+#: ../src/xz/xz.1
+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:3017
+#: ../src/xz/xz.1
msgid "XZ Utils: E<lt>https://tukaani.org/xz/E<gt>"
-msgstr "XZ 유틸리티: E<lt>https://tukaani.org/xz/E<gt>"
+msgstr "XZ 유틸리티: E<lt>https://tukaani.org/xz-utils/E<gt>"
#. type: Plain text
-#: ../src/xz/xz.1:3019 ../src/xzdec/xzdec.1:146
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
msgid "XZ Embedded: E<lt>https://tukaani.org/xz/embedded.htmlE<gt>"
-msgstr "XZ 임베디드: E<lt>https://tukaani.org/xz/embedded.htmlE<gt>"
+msgstr "XZ 임베디드: E<lt>https://tukaani.org/xz/embedded/E<gt>"
#. type: Plain text
-#: ../src/xz/xz.1:3020
+#: ../src/xz/xz.1
msgid "LZMA SDK: E<lt>https://7-zip.org/sdk.htmlE<gt>"
msgstr "LZMA SDK: E<lt>https://7-zip.org/sdk.htmlE<gt>"
#. type: TH
-#: ../src/xzdec/xzdec.1:7
+#: ../src/xzdec/xzdec.1
#, no-wrap
msgid "XZDEC"
msgstr "XZDEC"
-#. type: TH
-#: ../src/xzdec/xzdec.1:7
-#, no-wrap
-msgid "2017-04-19"
-msgstr "2017-04-19"
-
#. type: Plain text
-#: ../src/xzdec/xzdec.1:10
+#: ../src/xzdec/xzdec.1
msgid "xzdec, lzmadec - Small .xz and .lzma decompressors"
msgstr "xzdec, lzmadec - .xz와 .lzma용 작은 압축 해제 프로그램"
#. type: Plain text
-#: ../src/xzdec/xzdec.1:14
+#: ../src/xzdec/xzdec.1
msgid "B<xzdec> [I<option...>] [I<file...>]"
msgstr "B<xzdec> [I<<옵션>...>] [I<E<lt>파일E<gt>...>]"
#. type: Plain text
-#: ../src/xzdec/xzdec.1:18
+#: ../src/xzdec/xzdec.1
msgid "B<lzmadec> [I<option...>] [I<file...>]"
msgstr "B<lzmadec> [I<<옵션>...>] [I<E<lt>파일E<gt>...>]"
#. 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>은 liblzma 기반 B<.xz> (그리고 B<.xz> 확장자만) 파일 압축 해제 전용 "
-"도구 프로그램입니다. B<xzdec> 은 B<xz>(1) 명령을 활용하여 B<.xz> 파일의 압"
-"축을 해제할 때 쓰던 B<xz --decompress --stdout> (그리고 일반적으로 쓰던 몇가"
-"지 다른 옵션도 같이) 명령을 작성하던 일상적인 경우를 대신하려 만든 결과물입니"
-"다. B<lzmadec> 는 B<.xz> 파일 대신 B<.lzma> 파일을 지원하는 점만 다르며, 나"
-"머지는 B<xzdec>과 동일합니다."
+#: ../src/xzdec/xzdec.1
+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>은 liblzma 기반 B<.xz> (그리고 B<.xz> 확장자만) 파일 압축 해제 전용 도구 프로그램입니다. B<xzdec> 은 B<xz>(1) 명령을 활용하여 B<.xz> 파일의 압축을 해제할 때 쓰던 B<xz --decompress --stdout> (그리고 일반적으로 쓰던 몇가지 다른 옵션도 같이) 명령을 작성하던 일상적인 경우를 대신하려 만든 결과물입니다. B<lzmadec> 는 B<.xz> 파일 대신 B<.lzma> 파일을 지원하는 점만 다르며, 나머지는 B<xzdec>과 동일합니다."
#. 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 ""
-"실행 파일 크기를 줄이려는 목적으로, B<xzdec> 에서는 다중-스레드 실행 또는 현"
-"지 언어 표기를 지원하지 않으며 B<XZ_DEFAULTS> 환경 변수와 B<XZ_OPT> 환경 변수"
-"의 옵션 값을 읽지 않습니다. B<xzdec>은 단계별 진행 정보를 표시하지 않습니"
-"다. B<xzdec> 명령어로 B<SIGINFO> 시그널을 보내면 아무 동작도 취하지 않지만, "
-"B<SIGUSR1> 시그널을 보내면 프 정보를 표시하는 대신 프로세스를 끝냅니다."
+#: ../src/xzdec/xzdec.1
+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 "실행 파일 크기를 줄이려는 목적으로, B<xzdec> 에서는 다중-스레드 실행 또는 현지 언어 표기를 지원하지 않으며 B<XZ_DEFAULTS> 환경 변수와 B<XZ_OPT> 환경 변수의 옵션 값을 읽지 않습니다. B<xzdec>은 단계별 진행 정보를 표시하지 않습니다. B<xzdec> 명령어로 B<SIGINFO> 시그널을 보내면 아무 동작도 취하지 않지만, B<SIGUSR1> 시그널을 보내면 프 정보를 표시하는 대신 프로세스를 끝냅니다."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:69
-msgid ""
-"Ignored for B<xz>(1) compatibility. B<xzdec> supports only decompression."
-msgstr ""
-"B<xz>(1) 호환성을 문제로 무시합니다. B<xzdec>은 압축 해제 기능만 지원합니"
-"다."
+#: ../src/xzdec/xzdec.1
+msgid "Ignored for B<xz>(1) compatibility. B<xzdec> supports only decompression."
+msgstr "B<xz>(1) 호환성을 문제로 무시합니다. B<xzdec>은 압축 해제 기능만 지원합니다."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:76
-msgid ""
-"Ignored for B<xz>(1) compatibility. B<xzdec> never creates or removes any "
-"files."
-msgstr ""
-"B<xz>(1) 호환성을 문제로 무시합니다. B<xzdec>은 어떤 파일도 만들거나 제거하"
-"지 않습니다."
+#: ../src/xzdec/xzdec.1
+msgid "Ignored for B<xz>(1) compatibility. B<xzdec> never creates or removes any files."
+msgstr "B<xz>(1) 호환성을 문제로 무시합니다. B<xzdec>은 어떤 파일도 만들거나 제거하지 않습니다."
#. 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 ""
-"B<xz>(1) 호환성을 문제로 무시합니다. B<xzdec>은 항상 압축 해제한 데이터를 "
-"표준 출력으로만 기록합니다."
+#: ../src/xzdec/xzdec.1
+msgid "Ignored for B<xz>(1) compatibility. B<xzdec> always writes the decompressed data to standard output."
+msgstr "B<xz>(1) 호환성을 문제로 무시합니다. B<xzdec>은 항상 압축 해제한 데이터를 표준 출력으로만 기록합니다."
#. 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 ""
-"이 옵션을 한번 지정하면 B<xzdec>에서 어떤 경고나 알림을 표시하지 않기 때문에 "
-"아무런 동작도 취하지 않습니다. 오류 메시지를 표시하지 않으려면 이 옵션을 두"
-"번 지정하십시오."
+#: ../src/xzdec/xzdec.1
+msgid "Specifying this once does nothing since B<xzdec> never displays any warnings or notices. Specify this twice to suppress errors."
+msgstr "이 옵션을 한번 지정하면 B<xzdec>에서 어떤 경고나 알림을 표시하지 않기 때문에 아무런 동작도 취하지 않습니다. 오류 메시지를 표시하지 않으려면 이 옵션을 두번 지정하십시오."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:96
-msgid ""
-"Ignored for B<xz>(1) compatibility. B<xzdec> never uses the exit status 2."
-msgstr ""
-"B<xz>(1) 호환성을 문제로 무시합니다. B<xzdec>은 종료 코드 2번을 사용하지 않"
-"습니다."
+#: ../src/xzdec/xzdec.1
+msgid "Ignored for B<xz>(1) compatibility. B<xzdec> never uses the exit status 2."
+msgstr "B<xz>(1) 호환성을 문제로 무시합니다. B<xzdec>은 종료 코드 2번을 사용하지 않습니다."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:99
+#: ../src/xzdec/xzdec.1
msgid "Display a help message and exit successfully."
msgstr "도움말 메시지를 나타내고 무사히 나갑니다."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:104
+#: ../src/xzdec/xzdec.1
msgid "Display the version number of B<xzdec> and liblzma."
msgstr "B<xzdec>과 liblzma의 버전 번호를 나타냅니다."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:108
+#: ../src/xzdec/xzdec.1
msgid "All was good."
msgstr "모든 상태 양호."
#. 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> 은 B<xz>에 있는 경고 메시지를 출력하지 않기 때문에 B<xzdec> 에서는 "
-"종료 코드 2번을 사용하지 않습니다."
+#: ../src/xzdec/xzdec.1
+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> 은 B<xz>에 있는 경고 메시지를 출력하지 않기 때문에 B<xzdec> 에서는 종료 코드 2번을 사용하지 않습니다."
#. 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 ""
-"보통 매일 사용하실 목적이라면 B<xzdec> 또는 B<lzmadec> 대신 B<xz> 명령을 사용"
-"하십시오. B<xzdec> 또는 B<lzmadec>은 완전한 기능을 갖춘 B<xz>(1) 보다는 작"
-"은 압축 해제 프로그램을 사용해야 할 경우에만 사용하라고 있는 명령입니다."
+#: ../src/xzdec/xzdec.1
+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 "보통 매일 사용하실 목적이라면 B<xzdec> 또는 B<lzmadec> 대신 B<xz> 명령을 사용하십시오. B<xzdec> 또는 B<lzmadec>은 완전한 기능을 갖춘 B<xz>(1) 보다는 작은 압축 해제 프로그램을 사용해야 할 경우에만 사용하라고 있는 명령입니다."
#. 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> 과 B<lzmadec> 은 실제로 그렇게 작은건 아닙니다. 컴파일 시간에 "
-"liblzma에서 얼마나 기능을 떨궈내느냐에 따라 더 줄어들 수도 있습니다만, 보통 "
-"임베디드 운영체제 배포판이 아닌 경우는 이렇게 할 수가 없습니다. 실제로 작은 "
-"B<.xz> 압축 해제 프로그램이 필요하다면 XZ 임베디드 사용을 고려하십시오."
+#: ../src/xzdec/xzdec.1
+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> 과 B<lzmadec> 은 실제로 그렇게 작은건 아닙니다. 컴파일 시간에 liblzma에서 얼마나 기능을 떨궈내느냐에 따라 더 줄어들 수도 있습니다만, 보통 임베디드 운영체제 배포판이 아닌 경우는 이렇게 할 수가 없습니다. 실제로 작은 B<.xz> 압축 해제 프로그램이 필요하다면 XZ 임베디드 사용을 고려하십시오."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:145 ../src/lzmainfo/lzmainfo.1:60
+#: ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
msgid "B<xz>(1)"
msgstr "B<xz>(1)"
#. type: TH
-#: ../src/lzmainfo/lzmainfo.1:7
+#: ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "LZMAINFO"
msgstr "LZMAINFO"
#. type: TH
-#: ../src/lzmainfo/lzmainfo.1:7 ../src/scripts/xzmore.1:7
+#: ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "2013-06-30"
msgstr "2013-06-30"
#. type: Plain text
-#: ../src/lzmainfo/lzmainfo.1:10
+#: ../src/lzmainfo/lzmainfo.1
msgid "lzmainfo - show information stored in the .lzma file header"
msgstr "lzmainfo - .lzma 파일 헤더에 들어있는 정보를 보여줍니다"
#. type: Plain text
-#: ../src/lzmainfo/lzmainfo.1:15
+#: ../src/lzmainfo/lzmainfo.1
msgid "B<lzmainfo> [B<--help>] [B<--version>] [I<file...>]"
msgstr "B<lzmainfo> [B<--help>] [B<--version>] [I<E<lt>파일E<gt>...>]"
#. 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> 는 B<.lzma> 파일 헤더에 들어있는 정보를 보여줍니다. 지정 I<E<lt>"
-"파일E<gt>>에서 13바이트를 우선 읽어 헤더를 디코딩한 후, 가독 형식으로 표준 출"
-"력에 보여줍니다. I<E<lt>파일E<gt>>을 지정하지 않거나 I<E<lt>파일E<gt>> 값이 "
-"I<-> 이면 표준 입력을 읽습니다."
+#: ../src/lzmainfo/lzmainfo.1
+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> 는 B<.lzma> 파일 헤더에 들어있는 정보를 보여줍니다. 지정 I<E<lt>파일E<gt>>에서 13바이트를 우선 읽어 헤더를 디코딩한 후, 가독 형식으로 표준 출력에 보여줍니다. I<E<lt>파일E<gt>>을 지정하지 않거나 I<E<lt>파일E<gt>> 값이 I<-> 이면 표준 입력을 읽습니다."
#. 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 ""
-"보통 대부분 관심있는 정보는 압축 해제 용량과 딕서너리 크기입니다. 압축 해제 "
-"용량의 경우 파일이 비스트림 B<.lzma> 형식 계열인 경우에만 나타납니다. 파일 "
-"압축 해제 필요 메모리 용량은 수십 킬로바이트에 딕셔너리 크기를 합친 값입니다."
+#: ../src/lzmainfo/lzmainfo.1
+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 "보통 대부분 관심있는 정보는 압축 해제 용량과 딕서너리 크기입니다. 압축 해제 용량의 경우 파일이 비스트림 B<.lzma> 형식 계열인 경우에만 나타납니다. 파일 압축 해제 필요 메모리 용량은 수십 킬로바이트에 딕셔너리 크기를 합친 값입니다."
#. 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> 는 LZMA 유틸리티 하위 호환성을 목적으로 XZ 유틸리티에 기본으로 들"
-"어있습니다."
+#: ../src/lzmainfo/lzmainfo.1
+msgid "B<lzmainfo> is included in XZ Utils primarily for backward compatibility with LZMA Utils."
+msgstr "B<lzmainfo> 는 LZMA 유틸리티 하위 호환성을 목적으로 XZ 유틸리티에 기본으로 들어있습니다."
#. type: SH
-#: ../src/lzmainfo/lzmainfo.1:51 ../src/scripts/xzdiff.1:74
+#: ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "BUGS"
msgstr "버그"
#. 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> 프로그램은 B<MiB> (2^20 바이트) 용량 단위인데 (실제로) B<MB>를 사"
-"용합니다. LZMA 유틸리티 출력 호환 유지가 목적입니다."
+#: ../src/lzmainfo/lzmainfo.1
+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> 프로그램은 B<MiB> (2^20 바이트) 용량 단위인데 (실제로) B<MB>를 사용합니다. LZMA 유틸리티 출력 호환 유지가 목적입니다."
#. type: TH
-#: ../src/scripts/xzdiff.1:9
+#: ../src/scripts/xzdiff.1
#, no-wrap
msgid "XZDIFF"
msgstr "XZDIFF"
#. type: TH
-#: ../src/scripts/xzdiff.1:9
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1
#, no-wrap
-msgid "2021-06-04"
-msgstr "2021-06-04"
+msgid "2024-02-13"
+msgstr "2024-02-13"
#. type: Plain text
-#: ../src/scripts/xzdiff.1:12
+#: ../src/scripts/xzdiff.1
msgid "xzcmp, xzdiff, lzcmp, lzdiff - compare compressed files"
msgstr "xzcmp, xzdiff, lzcmp, lzdiff - 압축 파일을 비교합니다"
#. type: Plain text
-#: ../src/scripts/xzdiff.1:15
-msgid "B<xzcmp> [I<cmp_options>] I<file1> [I<file2>]"
-msgstr ""
-"B<xzcmp> [I<E<lt>비교_옵션E<gt>>] I<E<lt>파일1E<gt>> [I<E<lt>파일2E<gt>>]"
+#: ../src/scripts/xzdiff.1
+msgid "B<xzcmp> [I<option...>] I<file1> [I<file2>]"
+msgstr "B<xzcmp> [I<E<lt>옵션E<gt>...>] I<E<lt>파일1E<gt>> [I<E<lt>파일2E<gt>>]"
#. type: Plain text
-#: ../src/scripts/xzdiff.1:18
-msgid "B<xzdiff> [I<diff_options>] I<file1> [I<file2>]"
-msgstr "B<xzdiff> [I<차이_옵션>] I<E<lt>파일1E<gt>> [I<E<lt>파일2E<gt>>]"
+#: ../src/scripts/xzdiff.1
+msgid "B<xzdiff> \\&..."
+msgstr "B<xzdiff> \\&..."
#. type: Plain text
-#: ../src/scripts/xzdiff.1:21
-msgid "B<lzcmp> [I<cmp_options>] I<file1> [I<file2>]"
-msgstr ""
-"B<lzcmp> [I<E<lt>비교_옵션E<gt>>] I<E<lt>파일1E<gt>> [I<E<lt>파일2E<gt>>]"
+#: ../src/scripts/xzdiff.1
+msgid "B<lzcmp> \\&..."
+msgstr "B<lzcmp> \\&..."
#. type: Plain text
-#: ../src/scripts/xzdiff.1:24
-msgid "B<lzdiff> [I<diff_options>] I<file1> [I<file2>]"
-msgstr ""
-"B<lzdiff> [I<E<lt>차이_옵션E<gt>>] I<E<lt>파일1E<gt>> [I<E<lt>파일2E<gt>>]"
+#: ../src/scripts/xzdiff.1
+msgid "B<lzdiff> \\&..."
+msgstr "B<lzdiff> \\&..."
#. type: Plain text
-#: ../src/scripts/xzdiff.1:59
-msgid ""
-"B<xzcmp> and B<xzdiff> invoke B<cmp>(1) or B<diff>(1) on files compressed "
-"with B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), or "
-"B<zstd>(1). All options specified are passed directly to B<cmp>(1) or "
-"B<diff>(1). If only one file is specified, then the files compared are "
-"I<file1> (which must have a suffix of a supported compression format) and "
-"I<file1> from which the compression format suffix has been stripped. If two "
-"files are specified, then they are uncompressed if necessary and fed to "
-"B<cmp>(1) or B<diff>(1). The exit status from B<cmp>(1) or B<diff>(1) is "
-"preserved unless a decompression error occurs; then exit status is 2."
-msgstr ""
-"B<xzcmp> 와 B<xzdiff> 는 B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), "
-"B<lzop>(1), B<zstd>(1) 로 압축한 파일에 대해 B<cmp>(1) 또는 B<diff>(1) 명령"
-"을 실행합니다. 지정한 모든 옵션은 직접 B<cmp>(1) 또는 B<diff>(1) 명령에 전달"
-"합니다. 파일 하나만 지정했을 경우 I<E<lt>파일1E<gt>>만 비교(지원 압축 형식 "
-"접미사를 넣어야 함)하며, I<E<lt>파일1E<gt>>의 지원 압축 형식 접미사는 빠집니"
-"다. 파일 둘을 지정하면, 필요한 경우 압축 해제하며, B<cmp>(1) 또는 "
-"B<diff>(1) 명령으로 전달합니다. B<cmp>(1) 또는 B<diff>(1) 명령의 종료 상태"
-"는 압축 해제 오류가 나타나지 않는 한 보존됩니다. 압축 해제 오류가 나타나면 종"
-"료 상태는 2가 됩니다."
-
-#. type: Plain text
-#: ../src/scripts/xzdiff.1:65
-msgid ""
-"The names B<lzcmp> and B<lzdiff> are provided for backward compatibility "
-"with LZMA Utils."
-msgstr ""
-"B<lzcmp> 와 B<lzdiff> 명령은 LZMA 유틸리티 하위 호환성을 목적으로 제공합니다."
+#: ../src/scripts/xzdiff.1
+msgid "B<xzcmp> and B<xzdiff> compare uncompressed contents of two files. Uncompressed data and options are passed to B<cmp>(1) or B<diff>(1) unless B<--help> or B<--version> is specified."
+msgstr "B<xzcmp> 와 B<xzdiff> 명령은 압축 해제한 두 파일의 내용을 비교합니다. 압축 해제한 파일의 데이터와 옵션은 B<--help> 옵션 또는 B<--version> 옵션을 지정하지 않는다면, B<cmp>(1) 또는 B<diff>(1) 명령으로 전달합니다."
#. type: Plain text
-#: ../src/scripts/xzdiff.1:74
-msgid ""
-"B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), "
-"B<zstd>(1), B<zdiff>(1)"
-msgstr ""
-"B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), "
-"B<zstd>(1), B<zdiff>(1)"
+#: ../src/scripts/xzdiff.1
+msgid "If both I<file1> and I<file2> are specified, they can be uncompressed files or files in formats that B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), or B<lz4>(1) can decompress. The required decompression commands are determined from the filename suffixes of I<file1> and I<file2>. A file with an unknown suffix is assumed to be either uncompressed or in a format that B<xz>(1) can decompress."
+msgstr "I<E<lt>파일1E<gt>> 과 I<E<lt>파일2E<gt>>를 모두 지정했다면, 지정한 파일은 이미 압축해제한 파일이거나, B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), B<lz4>(1) 명령으로 압축해제할 수 있는 형식의 파일일 수 있습니다. 필요한 압축 해제 명령은 I<E<lt>파일1E<gt>> 과 I<E<lt>파일2E<gt>>의 파일 이름 확장자로 결정합니다. 알 수 없는 확장자를 지닌 파일은 이미 압축을 해제했거나 B<xz>(1) 명령으로 압축 해제할 수 있는 형식으로 간주합니다."
#. type: Plain text
-#: ../src/scripts/xzdiff.1:79
-msgid ""
-"Messages from the B<cmp>(1) or B<diff>(1) programs refer to temporary "
-"filenames instead of those specified."
-msgstr ""
-"B<cmp>(1) 프로그램 또는 B<diff>(1) 프로그램에서 온 메시지는 지정한 파일 이"
-"름 대신 임시 파일 이름을 참조합니다."
+#: ../src/scripts/xzdiff.1
+msgid "If only one filename is provided, I<file1> must have a suffix of a supported compression format and the name for I<file2> is assumed to be I<file1> with the compression format suffix removed."
+msgstr "파일 이름을 하나만 지정한다면, I<E<lt>파일1E<gt>>의 확장자는 지원 압축 형식의 확장자여야 하며, I<E<lt>파일2E<gt>>는 I<E<lt>파일1E<gt>>에서 압축 파일 확장자를 제거한 파일로 간주합니다."
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1
+msgid "The commands B<lzcmp> and B<lzdiff> are provided for backward compatibility with LZMA Utils."
+msgstr "B<lzcmp>와 B<lzdiff> 명령은 LZMA 유틸리티 하위 호환용으로 제공합니다."
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1
+msgid "If a decompression error occurs, the exit status is B<2>. Otherwise the exit status of B<cmp>(1) or B<diff>(1) is used."
+msgstr "압축 해제 오류가 나타나는 경우, 종료 코드는 B<2>입니다. 그렇지 않을 경우 B<cmp>(1) 또는 B<diff>(1) 명령의 종료 코드를 활용합니다."
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1
+msgid "B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), B<lz4>(1)"
+msgstr "B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), B<lz4>(1)"
#. type: TH
-#: ../src/scripts/xzgrep.1:9
+#: ../src/scripts/xzgrep.1
#, no-wrap
msgid "XZGREP"
msgstr "XZGREP"
-#. type: TH
-#: ../src/scripts/xzgrep.1:9
-#, no-wrap
-msgid "2022-07-19"
-msgstr "2022-07-19"
-
#. type: Plain text
-#: ../src/scripts/xzgrep.1:12
-msgid "xzgrep - search compressed files for a regular expression"
-msgstr "xzgrep - 정규 표현식을 활용하여 압축 파일을 검색합니다"
+#: ../src/scripts/xzgrep.1
+msgid "xzgrep - search possibly-compressed files for patterns"
+msgstr "xzgrep - 패턴을 활용하여 가능한 방식으로 압축한 파일의 내용을 검색합니다"
#. 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_options>] [B<-e>] I<E<lt>패턴E<gt>> [I<E<lt>파일E<gt>...>]"
+#: ../src/scripts/xzgrep.1
+msgid "B<xzgrep> [I<option...>] [I<pattern_list>] [I<file...>]"
+msgstr "B<xzgrep> [I<E<lt>옵션E<gt>...>] [I<E<lt>패턴목록E<gt>>] [I<E<lt>파일E<gt>...>]"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:21
+#: ../src/scripts/xzgrep.1
msgid "B<xzegrep> \\&..."
msgstr "B<xzegrep> \\&..."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:24
+#: ../src/scripts/xzgrep.1
msgid "B<xzfgrep> \\&..."
msgstr "B<xzfgrep> \\&..."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:27
+#: ../src/scripts/xzgrep.1
msgid "B<lzgrep> \\&..."
msgstr "B<lzgrep> \\&..."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:30
+#: ../src/scripts/xzgrep.1
msgid "B<lzegrep> \\&..."
msgstr "B<lzegrep> \\&..."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:33
+#: ../src/scripts/xzgrep.1
msgid "B<lzfgrep> \\&..."
msgstr "B<lzfgrep> \\&..."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:49
-msgid ""
-"B<xzgrep> invokes B<grep>(1) on I<files> which may be either uncompressed "
-"or compressed with B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), "
-"B<lzop>(1), or B<zstd>(1). All options specified are passed directly to "
-"B<grep>(1)."
-msgstr ""
-"B<xzgrep> 명령은 B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), "
-"B<zstd>(1) 로 압축을 했거나 하지 않은 I<E<lt>파일E<gt>>에 대해 B<grep>(1) 명"
-"령을 실행합니다. 모든 지정 옵션은 B<grep>(1)에 바로 전달합니다."
+#: ../src/scripts/xzgrep.1
+msgid "B<xzgrep> invokes B<grep>(1) on uncompressed contents of files. The formats of the I<files> are determined from the filename suffixes. Any I<file> with a suffix supported by B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), or B<lz4>(1) will be decompressed; all other files are assumed to be uncompressed."
+msgstr "B<xzgrep>은 압축 해제한 파일의 내용에 B<grep>(1)을 실행합니다. I<E<lt>파일E<gt>> 형식은 파일 이름 확장으로 결정합니다. I<E<lt>파일E<gt>>에서 지원하는 확장자는 B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), B<lz4>(1)로 압축 해제할 수 있는 파일의 확장자입니다. 다른 파일은 이미 압축을 해제한 파일로 간주합니다."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:62
-msgid ""
-"If no I<file> is specified, then standard input is decompressed if necessary "
-"and fed to B<grep>(1). When reading from standard input, B<gzip>(1), "
-"B<bzip2>(1), B<lzop>(1), and B<zstd>(1) compressed files are not supported."
-msgstr ""
-"지정한 I<E<lt>파일E<gt>>이 없다면, 필요에 따라 표준 입력 데이터 압축을 풀어내"
-"어 B<grep>(1) 에 전달합니다. 표준 입력에서 읽을 떄, B<gzip>(1), "
-"B<bzip2>(1), B<lzop>(1), B<zstd>(1) 압축 파일은 지원하지 않습니다."
+#: ../src/scripts/xzgrep.1
+msgid "If no I<files> are specified or I<file> is B<-> then standard input is read. When reading from standard input, only files supported by B<xz>(1) are decompressed. Other files are assumed to be in uncompressed form already."
+msgstr "지정한 I<E<lt>파일E<gt>>이 없거나 I<E<lt>파일E<gt>> 값이 B<->이라면 표준 입력을 읽어들입니다. 표준 입력을 읽어들일 때, B<xz>(1) 방식으로 압축을 해제하는 파일만 지원합니다. 다른 파일은 이미 압축을 해제한 파일로 간주합니다."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:81
-msgid ""
-"If B<xzgrep> is invoked as B<xzegrep> or B<xzfgrep> then B<grep -E> or "
-"B<grep -F> is used instead of B<grep>(1). The same applies to names "
-"B<lzgrep>, B<lzegrep>, and B<lzfgrep>, which are provided for backward "
-"compatibility with LZMA Utils."
-msgstr ""
-"B<xzgrep>을 B<xzegrep> 또는 B<xzfgrep> 으로 실행하면 B<grep>(1) 대신 "
-"B<grep -E> 또는 B<grep -F> 명령을 활용합니다. LZMA 유틸리티와 하위 호환성을 "
-"가진 B<lzgrep>, B<lzegrep>, B<lzfgrep> 명령에도 동일합니다."
+#: ../src/scripts/xzgrep.1
+msgid "Most I<options> of B<grep>(1) are supported. However, the following options are not supported:"
+msgstr "대부분의 B<grep>(1)의 I<E<lt>옵션E<gt>>을 지원합니다. 그러나 다음 옵션은 지원하지 않습니다:"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:86
-msgid ""
-"At least one match was found from at least one of the input files. No "
-"errors occurred."
-msgstr ""
-"최소한 하나 이상의 파일에서 하나 이상의 일치하는 결과를 찾았습니다. 오류가 "
-"없습니다."
+#: ../src/scripts/xzgrep.1
+msgid "B<-r>, B<--recursive>"
+msgstr "B<-r>, B<--recursive>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<-R>, B<--dereference-recursive>"
+msgstr "B<-R>, B<--dereference-recursive>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<-d>, B<--directories=>I<action>"
+msgstr "B<-d>, B<--directories=>I<action>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<-Z>, B<--null>"
+msgstr "B<-Z>, B<--null>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<-z>, B<--null-data>"
+msgstr "B<-z>, B<--null-data>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<--include=>I<glob>"
+msgstr "B<--include=>I<glob>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<--exclude=>I<glob>"
+msgstr "B<--exclude=>I<glob>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<--exclude-from=>I<file>"
+msgstr "B<--exclude-from=>I<file>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<--exclude-dir=>I<glob>"
+msgstr "B<--exclude-dir=>I<glob>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<xzegrep> is an alias for B<xzgrep -E>. B<xzfgrep> is an alias for B<xzgrep -F>."
+msgstr "B<xzegrep>은 B<xzgrep -E> 명령의 별칭입니다. B<xzfgrep>은 B<xzgrep -F> 명령의 별칭입니다."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:90
+#: ../src/scripts/xzgrep.1
+msgid "The commands B<lzgrep>, B<lzegrep>, and B<lzfgrep> are provided for backward compatibility with LZMA Utils."
+msgstr "B<lzgrep>, B<lzegrep>, B<lzfgrep> 명령은 LZMA 유틸리티 하위 호환용으로 제공합니다."
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "At least one match was found from at least one of the input files. No errors occurred."
+msgstr "최소한 하나 이상의 파일에서 하나 이상의 일치하는 결과를 찾았습니다. 오류가 없습니다."
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
msgid "No matches were found from any of the input files. No errors occurred."
msgstr "어떤 입력 파일에서든 일치하는 내용이 없습니다. 오류가 없습니다."
#. type: TP
-#: ../src/scripts/xzgrep.1:90
+#: ../src/scripts/xzgrep.1
#, no-wrap
msgid "E<gt>1"
msgstr "E<gt>1"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:94
+#: ../src/scripts/xzgrep.1
msgid "One or more errors occurred. It is unknown if matches were found."
-msgstr ""
-"하나 이상의 오류가 나타납니다. 일치하는 항목을 찾아낼 지 여부는 알 수 없습니"
-"다."
+msgstr "하나 이상의 오류가 나타납니다. 일치하는 항목을 찾아낼 지 여부는 알 수 없습니다."
#. type: TP
-#: ../src/scripts/xzgrep.1:95
+#: ../src/scripts/xzgrep.1
#, no-wrap
msgid "B<GREP>"
msgstr "B<GREP>"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:106
-msgid ""
-"If the B<GREP> environment variable is set, B<xzgrep> uses it instead of "
-"B<grep>(1), B<grep -E>, or B<grep -F>."
-msgstr ""
-"B<GREP> 환경 변수를 설정하면, B<xzgrep>을 B<grep>(1), B<grep -E>, B<grep -F> "
-"환경 변수 대신 활용합니다."
+#: ../src/scripts/xzgrep.1
+msgid "If B<GREP> is set to a non-empty value, it is used instead of B<grep>, B<grep -E>, or B<grep -F>."
+msgstr "B<GREP> 환경변수 값이 비어있지 않으면, B<grep>, B<grep -E>, B<grep -F> 명령 대신 활용합니다."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:113
-msgid ""
-"B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), "
-"B<zgrep>(1)"
-msgstr ""
-"B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), "
-"B<zgrep>(1)"
+#: ../src/scripts/xzgrep.1
+msgid "B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), B<lz4>(1), B<zgrep>(1)"
+msgstr "B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), B<lz4>(1), B<zgrep>(1)"
#. type: TH
-#: ../src/scripts/xzless.1:10
+#: ../src/scripts/xzless.1
#, no-wrap
msgid "XZLESS"
msgstr "XZLESS"
#. type: TH
-#: ../src/scripts/xzless.1:10
+#: ../src/scripts/xzless.1 ../src/scripts/xzmore.1
#, no-wrap
-msgid "2010-09-27"
-msgstr "2010-09-27"
+msgid "2024-02-12"
+msgstr "2024-02-12"
#. type: Plain text
-#: ../src/scripts/xzless.1:13
+#: ../src/scripts/xzless.1
msgid "xzless, lzless - view xz or lzma compressed (text) files"
msgstr "xzless, lzless - xz 또는 lzma 압축 (텍스트) 파일을 봅니다"
#. type: Plain text
-#: ../src/scripts/xzless.1:16
+#: ../src/scripts/xzless.1
msgid "B<xzless> [I<file>...]"
msgstr "B<xzless> [I<E<lt>파일E<gt>>...]"
#. type: Plain text
-#: ../src/scripts/xzless.1:19
+#: ../src/scripts/xzless.1
msgid "B<lzless> [I<file>...]"
msgstr "B<lzless> [I<E<lt>파일E<gt>>...]"
#. 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> 는 압축 파일을 터미널에 나타내는 필터 프로그램입니다. B<xz>(1) 또"
-"는 B<lzma>(1) 프로그램으로 압축한 파일에 대해 동작합니다. 주어진 I<E<lt>파일"
-"E<gt>> 값이 없다면, B<xzless> 는 표준 입력을 읽어들입니다."
+#: ../src/scripts/xzless.1
+msgid "B<xzless> is a filter that displays text from compressed files to a terminal. Files supported by B<xz>(1) are decompressed; other files are assumed to be in uncompressed form already. If no I<files> are given, B<xzless> reads from standard input."
+msgstr "B<xzless>는 압축 파일 내용을 터미널에 나타내는 필터 프로그램입니다. B<xz>(1) 방식으로 압축을 해제하는 파일만 지원합니다. 다른 파일은 이미 압축을 해제한 파일로 간주합니다. 주어진 I<E<lt>파일E<gt>> 값이 없다면, B<xzless>는 표준 입력을 읽어들입니다."
#. 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> 는 B<less>(1) 를 사용하여 출력을 막습니다. B<xzmore> 와는 다르"
-"게, 환경 변수 설정으로 선택한 페이저를 바꿀 수 없습니다. 명령은 B<more>(1) "
-"와 B<vi>(1) 가 기반이며, 앞뒤로 움직이고 검색할 수 있습니다. 자세한 정보는 "
-"B<less>(1) 설명서를 참고하십시오."
+#: ../src/scripts/xzless.1
+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> 는 B<less>(1) 를 사용하여 출력을 막습니다. B<xzmore> 와는 다르게, 환경 변수 설정으로 선택한 페이저를 바꿀 수 없습니다. 명령은 B<more>(1) 와 B<vi>(1) 가 기반이며, 앞뒤로 움직이고 검색할 수 있습니다. 자세한 정보는 B<less>(1) 설명서를 참고하십시오."
#. type: Plain text
-#: ../src/scripts/xzless.1:52
-msgid ""
-"The command named B<lzless> is provided for backward compatibility with LZMA "
-"Utils."
+#: ../src/scripts/xzless.1
+msgid "The command named B<lzless> is provided for backward compatibility with LZMA Utils."
msgstr "B<lzless> 명령은 LZMA 유틸리티 하위 호환용으로 제공합니다."
#. type: TP
-#: ../src/scripts/xzless.1:53
+#: ../src/scripts/xzless.1
#, 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 ""
-"셸에서 동작할 수도 있는 특수 문자 목록입니다. 환경에 미리 설정해두지 않았다"
-"면 B<xzless>에서 설정합니다."
+#: ../src/scripts/xzless.1
+msgid "A list of characters special to the shell. Set by B<xzless> unless it is already set in the environment."
+msgstr "셸에서 동작할 수도 있는 특수 문자 목록입니다. 환경에 미리 설정해두지 않았다면 B<xzless>에서 설정합니다."
#. type: TP
-#: ../src/scripts/xzless.1:59
+#: ../src/scripts/xzless.1
#, 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 ""
-"입력 파일을 B<less>(1) 에 전달하기 전에 B<xz>(1) 압축 해제 프로그램을 실행"
-"해서 미리 처리하는 명령행을 설정합니다."
+#: ../src/scripts/xzless.1
+msgid "Set to a command line to invoke the B<xz>(1) decompressor for preprocessing the input files to B<less>(1)."
+msgstr "입력 파일을 B<less>(1) 에 전달하기 전에 B<xz>(1) 압축 해제 프로그램을 실행해서 미리 처리하는 명령행을 설정합니다."
#. type: Plain text
-#: ../src/scripts/xzless.1:69
+#: ../src/scripts/xzless.1
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
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "XZMORE"
msgstr "XZMORE"
#. type: Plain text
-#: ../src/scripts/xzmore.1:10
+#: ../src/scripts/xzmore.1
msgid "xzmore, lzmore - view xz or lzma compressed (text) files"
-msgstr ""
-"xzmore, lzmore - xz 압축 (텍스트) 파일 또는 lzma 압축 (텍스트) 파일을 봅니다"
+msgstr "xzmore, lzmore - xz 압축 (텍스트) 파일 또는 lzma 압축 (텍스트) 파일을 봅니다"
#. type: Plain text
-#: ../src/scripts/xzmore.1:13
-msgid "B<xzmore> [I<file...>]"
-msgstr "B<xzmore> [I<E<lt>파일E<gt>...>]"
+#: ../src/scripts/xzmore.1
+msgid "B<xzmore> [I<file>...]"
+msgstr "B<xzmore> [I<E<lt>파일E<gt>>...]"
#. type: Plain text
-#: ../src/scripts/xzmore.1:16
-msgid "B<lzmore> [I<file...>]"
-msgstr "B<lzmore> [I<E<lt>파일E<gt>...>]"
+#: ../src/scripts/xzmore.1
+msgid "B<lzmore> [I<file>...]"
+msgstr "B<lzmore> [I<E<lt>파일E<gt>>...]"
#. 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> 는 B<xz>(1) 또는 B<lzma>(1) 형식으로 압축한 텍스트 파일을 한 번"
-"에 한 화면만큼 소프트-복제 터미널에 표시하는 필터입니다."
+#: ../src/scripts/xzmore.1
+msgid "B<xzmore> displays text from compressed files to a terminal using B<more>(1). Files supported by B<xz>(1) are decompressed; other files are assumed to be in uncompressed form already. If no I<files> are given, B<xzmore> reads from standard input. See the B<more>(1) manual for the keyboard commands."
+msgstr "B<xzmore> 명령은 압축 파일에 들어있는 텍스트를 B<more>(1) 명령으로 터미널에 나타냅니다. B<xz>(1) 방식으로 압축을 해제하는 파일만 지원합니다. 다른 파일은 이미 압축을 해제한 파일로 간주합니다. I<E<lt>파일E<gt>>을 지정하지 않으면, B<xzmore> 프로그램에서는 표준 입력을 읽어들입니다. 키보드 명령 정보는 B<more>(1) 설명서를 참고하십시오."
#. 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 ""
-"기본 B<more> 대신 다른 페이저 프로그램을 사용하려면, B<PAGER> 환경 변수에 원"
-"하는 프로그램 이름을 넣으십시오. B<lzmore>의 이름은 LZMA 유틸리티의 하위 호"
-"환성을 목적으로 제공합니다."
-
-#. type: TP
-#: ../src/scripts/xzmore.1:33
-#, no-wrap
-msgid "B<e> or B<q>"
-msgstr "B<e> 또는 B<q>"
+#: ../src/scripts/xzmore.1
+msgid "Note that scrolling backwards might not be possible depending on the implementation of B<more>(1). This is because B<xzmore> uses a pipe to pass the decompressed data to B<more>(1). B<xzless>(1) uses B<less>(1) which provides more advanced features."
+msgstr "참고로 B<more>(1) 명령 구현체에 따라 반대 방향(윗방향)으로의 스크롤은 못할 수도 있습니다. B<xzmore> 명령이 B<more>(1) 명령에 압축 해제한 데이터를 파이프로 전달하기 때문입니다. B<xzless>(1)는 좀 더 나은 기능을 가진 B<less>(1) 명령을 활용합니다."
#. 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 ""
-"--More--(다음 파일: I<E<lt>파일E<gt>>) 프롬프트가 뜨면, 이 명령은 B<xzmore>"
-"를 빠져나가게 합니다."
+#: ../src/scripts/xzmore.1
+msgid "The command B<lzmore> is provided for backward compatibility with LZMA Utils."
+msgstr "B<lzmore> 명령은 LZMA 유틸리티 하위 호환용으로 제공합니다."
#. type: TP
-#: ../src/scripts/xzmore.1:40
+#: ../src/scripts/xzmore.1
#, no-wrap
-msgid "B<s>"
-msgstr "B<s>"
+msgid "B<PAGER>"
+msgstr "B<PAGER>"
#. 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 ""
-"--More--(다음 파일: I<E<lt>파일E<gt>>) 프롬프트가 뜨면, 이 명령은 B<xzmore>"
-"에서 다음 파일로 건너뛰어 계속 실행하게 합니다."
+#: ../src/scripts/xzmore.1
+msgid "If B<PAGER> is set, its value is used as the pager instead of B<more>(1)."
+msgstr "B<PAGER> 환경변수 값을 설정했다면 B<more>(1) 대신 해당 환경변수 값을 사용합니다."
#. 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 ""
-"파일 내용을 실제로 보는 동안 지원하는 키보드 명령 목록을 보려면, B<more>(1) "
-"와 같은 사용하는 페이저의 설명서를 참고하십시오."
-
-#. type: Plain text
-#: ../src/scripts/xzmore.1:55
+#: ../src/scripts/xzmore.1
msgid "B<more>(1), B<xz>(1), B<xzless>(1), B<zmore>(1)"
msgstr "B<more>(1), B<xz>(1), B<xzless>(1), B<zmore>(1)"
-#~ msgid "2022-12-01"
-#~ msgstr "2022-12-01"
+#, no-wrap
+#~ msgid "2024-01-19"
+#~ msgstr "2024-01-19"
diff --git a/po4a/man/de/lzmainfo.1 b/po4a/man/de/lzmainfo.1
index 28efc01..2071b82 100644
--- a/po4a/man/de/lzmainfo.1
+++ b/po4a/man/de/lzmainfo.1
@@ -1,8 +1,9 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Author: Lasse Collin
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
+.\" German translation for xz-man.
+.\" Mario Blättermann <mario.blaettermann@gmail.com>, 2015, 2019-2020, 2022-2024.
.\"
.\"*******************************************************************
.\"
diff --git a/po4a/man/de/xz.1 b/po4a/man/de/xz.1
index bdf99de..ab2cbf6 100644
--- a/po4a/man/de/xz.1
+++ b/po4a/man/de/xz.1
@@ -1,17 +1,18 @@
'\" t
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Authors: Lasse Collin
.\" Jia Tan
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
+.\" German translation for xz-man.
+.\" Mario Blättermann <mario.blaettermann@gmail.com>, 2015, 2019-2020, 2022-2024.
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZ 1 "17. Juli 2023" Tukaani XZ\-Dienstprogramme
+.TH XZ 1 2024\-04\-08 Tukaani XZ\-Dienstprogramme
.
.SH BEZEICHNUNG
xz, unxz, xzcat, lzma, unlzma, lzcat \- .xz\- und .lzma\-Dateien komprimieren
@@ -495,8 +496,7 @@ Kompression zu erhalten, siehe \fB\-\-extreme\fP.
.IP \(bu 3
KompSpeich enthält den Speicherbedarf des Kompressors im
Einzel\-Thread\-Modus. Dieser kann zwischen den \fBxz\fP\-Versionen leicht
-variieren. Der Speicherbedarf einiger der zukünftigen Multithread\-Modi kann
-dramatisch höher sein als im Einzel\-Thread\-Modus.
+variieren.
.IP \(bu 3
DekompSpeich enthält den Speicherbedarf für die Dekompression. Das bedeutet,
dass die Kompressionseinstellungen den Speicherbedarf bei der Dekompression
@@ -504,6 +504,12 @@ 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.
.RE
+.IP ""
+ Der Speicherbedarf einiger der zukünftigen Multithread\-Modi kann dramatisch
+höher sein als im Einzel\-Thread\-Modus. Mit dem Standardwert von
+\fB\-\-block\-size\fP benötigt jeder Thread 3*3*Wörtb.Gr plus KompSpeich oder
+DekompSpeich. Beispielsweise benötigen vier Threads mit der Voreinstellung
+\fB\-6\fP etwa 660 bis 670 MiB Speicher.
.TP
\fB\-e\fP, \fB\-\-extreme\fP
verwendet eine langsamere Variante der gewählten
@@ -566,37 +572,65 @@ 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 \fIGröße\fP, 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 \fBxz\fP für eine Multi\-Thread\-Dekompression
-genutzt wird.
+dann der LZMA2\-Wörterbuchpuffer niemals vollständig genutzt werden würde. Im
+Multi\-Thread\-Modus wird die Größe der Blöcke wird in den Block\-Headern
+gespeichert. Die Größeninformation wird für eine Multi\-Thread\-Dekompression
+genutzt.
.IP ""
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 \fBxz\fP nicht in der Lage sein wird,
-die Dateien im Multi\-Thread\-Modus zu dekomprimieren.
+auch, dass \fBxz\fP nicht in der Lage sein wird, die Dateien im
+Multi\-Thread\-Modus zu dekomprimieren.
.TP
-\fB\-\-block\-list=\fP\fIGrößen\fP
+\fB\-\-block\-list=\fP\fIBlöcke\fP
beginnt bei der Kompression in das \fB.xz\fP\-Format nach den angegebenen
-Intervallen unkomprimierter Daten einen neuen Block.
-.IP ""
-Die unkomprimierte \fIGröße\fP 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.
-.IP ""
-Falls die Eingabedatei größer ist als die Summe der \fIGrößen\fP, dann wird der
-letzte in \fIGröße\fP angegebene Wert bis zum Ende der Datei wiederholt. Mit
+Intervallen unkomprimierter Daten einen neuen Block, optional mit einer
+benutzerdefinierten Filterkette.
+.IP ""
+Die \fIBlöcke\fP werden in einer durch Kommata getrennten Liste
+angegeben. Jeder Block besteht aus einer optionalen Filterkettennummer
+zwischen 0 und 9, gefolgt von einem Doppelpunkt (\fB:\fP) und der Größe der
+unkomprimierten Daten (diese Angabe ist erforderlich). Überspringen eines
+Blocks (zwei oder mehr aufeinander folgende Kommata) ist ein Kürzel dafür,
+die Größe und die Filter des vorherigen Blocks zu verwenden.
+.IP ""
+Falls die Eingabedatei größer ist als die Summe der \fIBlöcke\fP, dann wird der
+letzte in \fIVBlöcke\fP angegebene Wert bis zum Ende der Datei wiederholt. Mit
dem speziellen Wert \fB0\fP können Sie angeben, dass der Rest der Datei als
einzelner Block kodiert werden soll.
.IP ""
-Falls Sie \fIGrößen\fP angeben, welche die Blockgröße des Encoders übersteigen
+Eine alternative Filterkette für jeden Block kann in Kombination mit den
+Optionen \fB\-\-filters1=\fP\fIFilter\fP \&…\& \fB\-\-filters9=\fP\fIFilter\fP angegeben
+werden. Diese Optionen definieren Filterketten mit einem Bezeichner zwischen
+1 und 9. Die Filterkette 0 bezeichnet hierbei die voreingestellte
+Filterkette, was dem Nichtangeben einer Filterkette gleichkommt. Der
+Filterkettenbezeichner kann vor der unkomprimierten Größe verwendet werden,
+gefolgt von einem Doppelpunkt (\fB:\fP). Falls Sie beispielsweise
+\fB\-\-block\-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB\fP angeben, werden die Blöcke
+folgendermaßen erstellt:
+.RS
+.IP \(bu 3
+Die durch \fB\-\-filters1\fP angegebene Filterkette und 2 MiB Eingabe
+.IP \(bu 3
+Die durch \fB\-\-filters3\fP angegebene Filterkette und 2 MiB Eingabe
+.IP \(bu 3
+Die durch \fB\-\-filters2\fP angegebene Filterkette und 4 MiB Eingabe
+.IP \(bu 3
+Die durch \fB\-\-filters2\fP angegebene Filterkette und 4 MiB Eingabe
+.IP \(bu 3
+Die vorgegebene Filterkette und 2 MiB Eingabe
+.IP \(bu 3
+Die vorgegebene Filterkette und 4 MiB Eingabe für jeden Block bis zum Ende
+der Eingabe.
+.RE
+.IP ""
+Falls Sie eine Größe angeben, welche die Blockgröße des Encoders übersteigen
(entweder den Vorgabewert im Thread\-Modus oder den mit
\fB\-\-block\-size=\fP\fIGröße\fP angegebenen Wert), wird der Encoder zusätzliche
-Blöcke erzeugen, wobei die in den \fIGrößen\fP angegebenen Grenzen eingehalten
+Blöcke erzeugen, wobei die in den \fIBlöcke\fP angegebenen Grenzen eingehalten
werden. Wenn Sie zum Beispiel \fB\-\-block\-size=10MiB\fP
\fB\-\-block\-list=5MiB,10MiB,8MiB,12MiB,24MiB\fP angeben und die Eingabedatei 80
MiB groß ist, erhalten Sie 11 Blöcke: 5, 10, 8, 10, 2, 10, 10, 4, 10, 10 und
@@ -777,6 +811,9 @@ mehrere Blöcke mit Größeninformationen in deren Headern enthalten. Alle im
Multi\-Thread\-Modus komprimierten Dateien, die groß genug sind, erfüllen
diese Bedingung, im Einzel\-Thread\-Modus komprimierte Dateien dagegen nicht,
selbst wenn \fB\-\-block\-size=\fP\fIGröße\fP verwendet wurde.
+.IP ""
+Der Vorgabewert für \fIThreads\fP is \fB0\fP. In \fBxz\fP 5.4.x und älteren Versionen
+ist der Vorgabewert \fB1\fP.
.
.SS "Benutzerdefinierte Filterketten für die Kompression"
Eine benutzerdefinierte Filterkette ermöglicht die Angabe detaillierter
@@ -803,22 +840,56 @@ 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.
.PP
-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
-(\fB\-\-format=raw\fP) wird die Filterkette in der gleichen Reihenfolge angegeben
-wie bei der Kompression.
-.PP
-Filter akzeptieren filterspezifische \fIOptionen\fP in einer durch Kommata
-getrennten Liste. Zusätzliche Kommata in den \fIOptionen\fP werden
-ignoriert. Jede Option hat einen Standardwert, daher brauchen Sie nur jene
-anzugeben, die Sie ändern wollen.
+Eine benutzerdefinierte Filterkette kann auf zwei verschiedene Arten
+angegeben werden. Die Optionen \fB\-\-filters=\fP\fIFilter\fP und
+\fB\-\-filters1=\fP\fIFilter\fP \&…\& \fB\-\-filters9=\fP\fIFilter\fP ermöglichen die Angabe
+einer ganzen Filterkette in einer einzelnen Option gemäß der
+Liblzma\-Filterzeichenkettensyntax. Alternativ können Sie eine Filterkette
+mit einer oder mehreren individuellen Filteroptionen in der Reihenfolge
+angeben, in der sie in der Filterkette verwendet werden sollen. Daher ist
+die Reihenfolge der individuellen Filteroptionen wichtig! Beim Dekodieren
+von Rohdatenströmen (\fB\-\-format=raw\fP) muss die Filterkette in der gleichen
+Reihenfolge wie bei der Komprimierung angegeben werden. Alle individuellen
+Filter\- oder Voreinstellungsoptionen, die \fIvor\fP der vollen
+Filterkettenoption (\fB\-\-filters=\fP\fIFilter\fP) angegeben werden, werden
+verworfen. Individuelle Filter, die \fInach\fP der vollen Filterkettenoption
+angegeben werden, setzen die Filterkette zurück
+.PP
+Sowohl vollständige als auch individuelle Filteroptionen akzeptieren
+filterspezifische \fIOptionen\fP in einer durch Kommata getrennten
+Liste. Zusätzliche Kommata in den \fIOptionen\fP werden ignoriert. Jede Option
+hat einen Standardwert, daher brauchen Sie nur jene anzugeben, die Sie
+ändern wollen.
.PP
Um die gesamte Filterkette und die \fIOptionen\fP anzuzeigen, rufen Sie \fBxz \-vv\fP auf (was gleichbedeutend mit der zweimaligen Angabe von \fB\-\-verbose\fP
ist). Dies funktioniert auch zum Betrachten der von den Voreinstellungen
verwendeten Filterkettenoptionen.
.TP
+\fB\-\-filters=\fP\fIFilter\fP
+gibt die vollständige Filterkette oder eine Voreinstellung in einer
+einzelnen Option an. Mehrere Filter können durch Leerzeichen oder zwei
+Minuszeichen (\fB\-\-\fP) voneinander getrennt werden. Es kann notwendig sein,
+die \fIFilter\fP in der Shell\-Befehlszeile zu maskieren, so dass diese als
+einzelne Option ausgewertet werden. Um Optionen Werte zuzuordnen, verwenden
+Sie \fB:\fP oder \fB=\fP. Einer Voreinstellung kann ein \fB\-\fP vorangestellt werden,
+dem keiner oder mehrere Schalter folgen. Der einzige unterstützte Schalter
+ist \fBe\fP zum Anwenden der gleichen Optionen wie \fB\-\-extreme\fP.
+.TP
+\fB\-\-filters1\fP=\fIFilter\fP … \fB\-\-filters9\fP=\fIFilter\fP
+gibt bis zu neun optionale Filterketten an, die mit \fB\-\-block\-list\fP
+verwendet werden können.
+.IP ""
+Wenn Sie beispielsweise ein Archiv mit ausführbaren Dateien gefolgt von
+Textdateien komprimieren, könnte der Teil mit den ausführbaren Dateien eine
+Filterkette mit einem BCJ\-Filter und der Textdateiteil lediglich den
+LZMA2\-Filter verwenden.
+.TP
+\fB\-\-filters\-help\fP
+zeigt eine Hilfemeldung an, welche beschreibt, wie Voreinstellungen und
+benutzerdefinierte Filterketten in den Optionen \fB\-\-filters\fP und
+\fB\-\-filters1=\fP\fIFilter\fP \&… \& \fB\-\-filters9=\fP\fIFilter\fP angegeben werden und
+beendet das Programm.
+.TP
\fB\-\-lzma1\fP[\fB=\fP\fIOptionen\fP]
.PD 0
.TP
@@ -1041,6 +1112,8 @@ Wörterbuch\-\fIGröße\fP. LZMA1 benötigt außerdem \fIlc\fP, \fIlp\fP und \f
\fB\-\-ia64\fP[\fB=\fP\fIOptionen\fP]
.TP
\fB\-\-sparc\fP[\fB=\fP\fIOptionen\fP]
+.TP
+\fB\-\-riscv\fP[\fB=\fP\fIOptionen\fP]
.PD
fügt ein »Branch/Call/Jump«\-(BCJ\-)Filter zur Filterkette hinzu. Diese Filter
können nicht als letzter Filter in der Filterkette verwendet werden.
@@ -1091,6 +1164,7 @@ ARM64;4;4096\-Byte\-Ausrichtung ist optimal
PowerPC;4;Nur Big Endian
IA\-64;16;Itanium
SPARC;4;
+RISC\-V;2;
.TE
.RE
.RE
@@ -1098,11 +1172,26 @@ SPARC;4;
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, \fBpb=4\fP oder sogar \fBpb=4,lp=4,lc=0\fP mit LZMA2 zu setzen (2^4=16). Der
-x86\-Filter bildet dabei eine Ausnahme; Sie sollten bei der für LZMA2
-voreingestellten 4\-Byte\-Ausrichtung bleiben, wenn Sie x86\-Binärdateien
-komprimieren.
+BCJ\-Filters entsprechen. Beispiele:
+.RS
+.IP \(bu 3
+Der IA\-64\-Filter hat eine 16\-Byte\-Ausrichtung, daher ist \fBpb=4,lp=4,lc=0\fP
+für LZMA2 passend (2^4=16).
+.IP \(bu 3
+RISC\-V\-Code hat eine 2\-Byte\- oder 4\-Byte\-Ausrichtung, abhängig davon, ob die
+Datei 16\-bit\-komprimierte Instruktionen enthält (die C\-Erweiterung). Wenn
+16\-bit\-Instruktionen verwendet werden, ist \fBpb=2,lp=1,lc=3\fP oder
+\fBpb=1,lp=1,lc=3\fP passend. Wenn keine 16\-bit\-Instruktionen vorhanden sind,
+ist \fBpb=2,lp=2,lc=2\fP am besten. Mit \fBreadelf \-h\fP können Sie überprüfen, ob
+»RVC« in der »Flags«\-Zeile auftritt.
+.IP \(bu 3
+ARM64 hat stets eine 4\-Byte\-Ausrichtung, daher ist \fBpb=2,lp=2,lc=2\fP am
+besten.
+.IP \(bu 3
+Der x86\-Filter stellt eine Ausnahme dar. Es ist üblicherweise eine gute
+Wahl, bei den Voreinstellungen von LZMA2 (\fBpb=2,lp=0,lc=3\fP) zu bleiben,
+wenn Sie ausführbare x86\-Dateien komprimieren
+.RE
.IP ""
Alle BCJ\-Filter unterstützen die gleichen \fIOptionen\fP:
.RS
@@ -1231,72 +1320,10 @@ Format an. Um eine maschinell auswertbare Ausgabe zu erhalten, geben Sie
.SH ROBOTER\-MODUS
Der Roboter\-Modus wird mit der Option \fB\-\-robot\fP aktiviert. Er bewirkt, dass
die Ausgabe von \fBxz\fP leichter von anderen Programmen ausgewertet werden
-kann. Gegenwärtig wird \fB\-\-robot\fP nur zusammen mit \fB\-\-version\fP,
-\fB\-\-info\-memory\fP und \fB\-\-list\fP unterstützt. In der Zukunft wird dieser Modus
-auch für Kompression und Dekompression unterstützt.
-.
-.SS Version
-\fBxz \-\-robot \-\-version\fP gibt die Versionsnummern von \fBxz\fP und Liblzma im
-folgenden Format aus:
-.PP
-\fBXZ_VERSION=\fP\fIXYYYZZZS\fP
-.br
-\fBLIBLZMA_VERSION=\fP\fIXYYYZZZS\fP
-.TP
-\fIX\fP
-Hauptversion.
-.TP
-\fIYYY\fP
-Unterversion. Gerade Zahlen bezeichnen eine stabile Version. Ungerade Zahlen
-bezeichnen Alpha\- oder Betaversionen.
-.TP
-\fIZZZ\fP
-Patch\-Stufe für stabile Veröffentlichungen oder einfach nur ein Zähler für
-Entwicklungsversionen.
-.TP
-\fIS\fP
-Stabilität. 0 ist Alpha, 1 ist Beta und 2 ist stabil. \fIS\fP sollte immer 2
-sein, wenn \fIYYY\fP eine gerade Zahl ist.
-.PP
-\fIXYYYZZZS\fP sind in beiden Zeilen gleich, sofern \fBxz\fP und Liblzma aus der
-gleichen Veröffentlichung der XZ\-Utils stammen.
-.PP
-Beispiele: 4.999.9beta ist \fB49990091\fP und 5.0.0 is \fB50000002\fP.
-.
-.SS "Informationen zur Speicherbedarfsbegrenzung"
-\fBxz \-\-robot \-\-info\-memory\fP gibt eine einzelne Zeile mit mehreren durch
-Tabulatoren getrennten Spalten aus:
-.IP 1. 4
-Gesamter physischer Speicher (RAM) in Byte.
-.IP 2. 4
-Speicherbedarfsbegrenzung für die Kompression in Byte
-(\fB\-\-memlimit\-compress\fP). Ein spezieller Wert von \fB0\fP bezeichnet die
-Standardeinstellung, die im Einzelthread\-Modus bedeutet, dass keine
-Begrenzung vorhanden ist.
-.IP 3. 4
-Speicherbedarfsbegrenzung für die Dekompression in Byte
-(\fB\-\-memlimit\-decompress\fP). Ein spezieller Wert von \fB0\fP bezeichnet die
-Standardeinstellung, die im Einzelthread\-Modus bedeutet, dass keine
-Begrenzung vorhanden ist.
-.IP 4. 4
-Seit \fBxz\fP 5.3.4alpha: Die Speichernutzung für Multithread\-Dekompression in
-Byte (\fB\-\-memlimit\-mt\-decompress\fP). Dies ist niemals \fB0\fP, da ein
-systemspezifischer Vorgabewert (gezeigt in Spalte 5) verwendet wird, falls
-keine Grenze ausdrücklich angegeben wurde. Dies ist außerdem niemals größer
-als der Wert in in Spalte 3, selbst wenn mit \fB\-\-memlimit\-mt\-decompress\fP ein
-größerer Wert angegeben wurde.
-.IP 5. 4
-Seit \fBxz\fP 5.3.4alpha: Eine systemspezifisch vorgegebene Begrenzung des
-Speicherverbrauchs, die zur Begrenzung der Anzahl der Threads beim
-Komprimieren mit automatischer Anzahl der Threads (\fB\-\-threads=0\fP) und wenn
-keine Speicherbedarfsbegrenzung angegeben wurde (\fB\-\-memlimit\-compress\fP)
-verwendet wird. Dies wird auch als Standardwert für
-\fB\-\-memlimit\-mt\-decompress\fP verwendet.
-.IP 6. 4
-Seit \fBxz\fP 5.3.4alpha: Anzahl der verfügbaren Prozessorthreads.
-.PP
-In der Zukunft könnte die Ausgabe von \fBxz \-\-robot \-\-info\-memory\fP weitere
-Spalten enthalten, aber niemals mehr als eine einzelne Zeile.
+kann. Gegenwärtig wird \fB\-\-robot\fP nur zusammen mit \fB\-\-list\fP,
+\fB\-\-filters\-help\fP, \fB\-\-info\-memory\fP und \fB\-\-version\fP unterstützt. In der
+Zukunft wird dieser Modus auch für Kompression und Dekompression
+unterstützt.
.
.SS Listenmodus
\fBxz \-\-robot \-\-list\fP verwendet eine durch Tabulatoren getrennte Ausgabe. In
@@ -1496,6 +1523,90 @@ 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.
.
+.SS Filterhilfe
+\fBxz \-\-robot \-\-filters\-help\fP gibt die unterstützten Filter im folgenden
+Format aus:
+.PP
+\fIFilter\fP\fB:\fP\fIOption\fP\fB=<\fP\fIWert\fP\fB>,\fP\fIOption\fP\fB=<\fP\fIWert\fP\fB>\fP
+…
+.TP
+\fIFilter\fP
+Name des Filters
+.TP
+\fIOption\fP
+Name der filterspezifischen Option
+.TP
+\fIWert\fP
+Der numerische \fIWert\fP erscheint als Bereich
+\fB<\fP\fIMinimum\fP\fB\-\fP\fIMaximum\fP\fB>\fP. Die Auswahl des
+Zeichenketten\-\fIWert\fPs wird in \fB< >\fP eingeschlossen und durch \fB|\fP
+getrennt.
+.PP
+Jeder Filter wird in einer separaten Zeile ausgegeben.
+.
+.SS "Informationen zur Speicherbedarfsbegrenzung"
+\fBxz \-\-robot \-\-info\-memory\fP gibt eine einzelne Zeile mit mehreren durch
+Tabulatoren getrennten Spalten aus:
+.IP 1. 4
+Gesamter physischer Speicher (RAM) in Byte.
+.IP 2. 4
+Speicherbedarfsbegrenzung für die Kompression in Byte
+(\fB\-\-memlimit\-compress\fP). Ein spezieller Wert von \fB0\fP bezeichnet die
+Standardeinstellung, die im Einzelthread\-Modus bedeutet, dass keine
+Begrenzung vorhanden ist.
+.IP 3. 4
+Speicherbedarfsbegrenzung für die Dekompression in Byte
+(\fB\-\-memlimit\-decompress\fP). Ein spezieller Wert von \fB0\fP bezeichnet die
+Standardeinstellung, die im Einzelthread\-Modus bedeutet, dass keine
+Begrenzung vorhanden ist.
+.IP 4. 4
+Seit \fBxz\fP 5.3.4alpha: Die Speichernutzung für Multithread\-Dekompression in
+Byte (\fB\-\-memlimit\-mt\-decompress\fP). Dies ist niemals \fB0\fP, da ein
+systemspezifischer Vorgabewert (gezeigt in Spalte 5) verwendet wird, falls
+keine Grenze ausdrücklich angegeben wurde. Dies ist außerdem niemals größer
+als der Wert in in Spalte 3, selbst wenn mit \fB\-\-memlimit\-mt\-decompress\fP ein
+größerer Wert angegeben wurde.
+.IP 5. 4
+Seit \fBxz\fP 5.3.4alpha: Eine systemspezifisch vorgegebene Begrenzung des
+Speicherverbrauchs, die zur Begrenzung der Anzahl der Threads beim
+Komprimieren mit automatischer Anzahl der Threads (\fB\-\-threads=0\fP) und wenn
+keine Speicherbedarfsbegrenzung angegeben wurde (\fB\-\-memlimit\-compress\fP)
+verwendet wird. Dies wird auch als Standardwert für
+\fB\-\-memlimit\-mt\-decompress\fP verwendet.
+.IP 6. 4
+Seit \fBxz\fP 5.3.4alpha: Anzahl der verfügbaren Prozessorthreads.
+.PP
+In der Zukunft könnte die Ausgabe von \fBxz \-\-robot \-\-info\-memory\fP weitere
+Spalten enthalten, aber niemals mehr als eine einzelne Zeile.
+.
+.SS Version
+\fBxz \-\-robot \-\-version\fP gibt die Versionsnummern von \fBxz\fP und Liblzma im
+folgenden Format aus:
+.PP
+\fBXZ_VERSION=\fP\fIXYYYZZZS\fP
+.br
+\fBLIBLZMA_VERSION=\fP\fIXYYYZZZS\fP
+.TP
+\fIX\fP
+Hauptversion.
+.TP
+\fIYYY\fP
+Unterversion. Gerade Zahlen bezeichnen eine stabile Version. Ungerade Zahlen
+bezeichnen Alpha\- oder Betaversionen.
+.TP
+\fIZZZ\fP
+Patch\-Stufe für stabile Veröffentlichungen oder einfach nur ein Zähler für
+Entwicklungsversionen.
+.TP
+\fIS\fP
+Stabilität. 0 ist Alpha, 1 ist Beta und 2 ist stabil. \fIS\fP sollte immer 2
+sein, wenn \fIYYY\fP eine gerade Zahl ist.
+.PP
+\fIXYYYZZZS\fP sind in beiden Zeilen gleich, sofern \fBxz\fP und Liblzma aus der
+gleichen Veröffentlichung der XZ\-Utils stammen.
+.PP
+Beispiele: 4.999.9beta ist \fB49990091\fP und 5.0.0 is \fB50000002\fP.
+.
.SH EXIT\-STATUS
.TP
\fB0\fP
@@ -1537,7 +1648,7 @@ Beispiel GNU \fBtar\fP(1):
.RS
.PP
.nf
-\f(CWXZ_OPT=\-2v tar caf foo.tar.xz foo\fP
+\f(CRXZ_OPT=\-2v tar caf foo.tar.xz foo\fR
.fi
.RE
.RE
@@ -1550,7 +1661,8 @@ angemessen ist. Zum Beispiel könnte in \fBsh\fP(1)\-Skripten Folgendes stehen:
.RS
.PP
.nf
-\f(CWXZ_OPT=${XZ_OPT\-"\-7e"} export XZ_OPT\fP
+\f(CRXZ_OPT=${XZ_OPT\-"\-7e"}
+export XZ_OPT\fR
.fi
.RE
.RE
@@ -1709,7 +1821,7 @@ Komprimiert die Datei \fIfoo\fP mit der Standard\-Kompressionsstufe (\fB\-6\fP)
.RS
.PP
.nf
-\f(CWxz foo\fP
+\f(CRxz foo\fR
.fi
.RE
.PP
@@ -1718,7 +1830,7 @@ wenn die Dekompression erfolgreich war:
.RS
.PP
.nf
-\f(CWxz \-dk bar.xz\fP
+\f(CRxz \-dk bar.xz\fR
.fi
.RE
.PP
@@ -1728,7 +1840,7 @@ und Dekompression benötigt (48\ MiB beziehungsweise 5\ MiB):
.RS
.PP
.nf
-\f(CWtar cf \- baz | xz \-4e > baz.tar.xz\fP
+\f(CRtar cf \- baz | xz \-4e > baz.tar.xz\fR
.fi
.RE
.PP
@@ -1737,7 +1849,7 @@ einzelnen Befehl dekomprimiert in die Standardausgabe geschrieben werden:
.RS
.PP
.nf
-\f(CWxz \-dcf a.txt b.txt.xz c.txt d.txt.lzma > abcd.txt\fP
+\f(CRxz \-dcf a.txt b.txt.xz c.txt d.txt.lzma > abcd.txt\fR
.fi
.RE
.
@@ -1747,7 +1859,8 @@ Parallelisieren der Kompression vieler Dateien verwendet werden:
.RS
.PP
.nf
-\f(CWfind . \-type f \e! \-name '*.xz' \-print0 \e | xargs \-0r \-P4 \-n16 xz \-T1\fP
+\f(CRfind . \-type f \e! \-name '*.xz' \-print0 \e
+ | xargs \-0r \-P4 \-n16 xz \-T1\fR
.fi
.RE
.PP
@@ -1768,7 +1881,7 @@ eingespart wurden:
.RS
.PP
.nf
-\f(CWxz \-\-robot \-\-list *.xz | awk '/^totals/{print $5\-$4}'\fP
+\f(CRxz \-\-robot \-\-list *.xz | awk '/^totals/{print $5\-$4}'\fR
.fi
.RE
.PP
@@ -1779,7 +1892,11 @@ Beta\-Versionen kompatibel, welche die Option \fB\-\-robot\fP nicht unterstütze
.RS
.PP
.nf
-\f(CWif ! eval "$(xz \-\-robot \-\-version 2> /dev/null)" || [ "$XZ_VERSION" \-lt 50000002 ]; then echo "Ihre Version von Xz ist zu alt." fi unset XZ_VERSION LIBLZMA_VERSION\fP
+\f(CRif ! eval "$(xz \-\-robot \-\-version 2> /dev/null)" ||
+ [ "$XZ_VERSION" \-lt 50000002 ]; then
+ echo "Your xz is too old."
+fi
+unset XZ_VERSION LIBLZMA_VERSION\fR
.fi
.RE
.PP
@@ -1788,7 +1905,12 @@ aber eine bereits gesetzte Begrenzung nicht erhöhen:
.RS
.PP
.nf
-\f(CWNEWLIM=$((123 << 20))\ \ # 123 MiB OLDLIM=$(xz \-\-robot \-\-info\-memory | cut \-f3) if [ $OLDLIM \-eq 0 \-o $OLDLIM \-gt $NEWLIM ]; then XZ_OPT="$XZ_OPT \-\-memlimit\-decompress=$NEWLIM" export XZ_OPT fi\fP
+\f(CRNEWLIM=$((123 << 20))\ \ # 123 MiB
+OLDLIM=$(xz \-\-robot \-\-info\-memory | cut \-f3)
+if [ $OLDLIM \-eq 0 \-o $OLDLIM \-gt $NEWLIM ]; then
+ XZ_OPT="$XZ_OPT \-\-memlimit\-decompress=$NEWLIM"
+ export XZ_OPT
+fi\fR
.fi
.RE
.
@@ -1828,7 +1950,7 @@ angepasst werden, ein größeres Wörterbuch zu verwenden:
.RS
.PP
.nf
-\f(CWxz \-\-lzma2=preset=1,dict=32MiB foo.tar\fP
+\f(CRxz \-\-lzma2=preset=1,dict=32MiB foo.tar\fR
.fi
.RE
.PP
@@ -1849,7 +1971,7 @@ MiB, die mit \fBxz \-9\fP verwendet werden würden:
.RS
.PP
.nf
-\f(CWxz \-vv \-\-lzma2=dict=192MiB big_foo.tar\fP
+\f(CRxz \-vv \-\-lzma2=dict=192MiB big_foo.tar\fR
.fi
.RE
.PP
@@ -1869,7 +1991,7 @@ dekomprimiert werden.
.RS
.PP
.nf
-\f(CWxz \-\-check=crc32 \-\-lzma2=preset=6e,dict=64KiB foo\fP
+\f(CRxz \-\-check=crc32 \-\-lzma2=preset=6e,dict=64KiB foo\fR
.fi
.RE
.PP
@@ -1884,7 +2006,7 @@ es auch \fBlc=4\fP):
.RS
.PP
.nf
-\f(CWxz \-\-lzma2=preset=6e,pb=0,lc=4 Quellcode.tar\fP
+\f(CRxz \-\-lzma2=preset=6e,pb=0,lc=4 source_code.tar\fR
.fi
.RE
.PP
@@ -1895,7 +2017,7 @@ komprimieren:
.RS
.PP
.nf
-\f(CWxz \-\-x86 \-\-lzma2 libfoo.so\fP
+\f(CRxz \-\-x86 \-\-lzma2 libfoo.so\fR
.fi
.RE
.PP
@@ -1919,7 +2041,7 @@ berücksichtigen:
.RS
.PP
.nf
-\f(CWxz \-\-delta=dist=3 \-\-lzma2=pb=0 foo.tiff\fP
+\f(CRxz \-\-delta=dist=3 \-\-lzma2=pb=0 foo.tiff\fR
.fi
.RE
.PP
diff --git a/po4a/man/de/xzdec.1 b/po4a/man/de/xzdec.1
index 43756dc..e7d9f3c 100644
--- a/po4a/man/de/xzdec.1
+++ b/po4a/man/de/xzdec.1
@@ -1,15 +1,16 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Author: Lasse Collin
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
+.\" German translation for xz-man.
+.\" Mario Blättermann <mario.blaettermann@gmail.com>, 2015, 2019-2020, 2022-2024.
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZDEC 1 "19. April 2017" Tukaani XZ\-Dienstprogramme
+.TH XZDEC 1 2024\-04\-08 Tukaani XZ\-Dienstprogramme
.SH BEZEICHNUNG
xzdec, lzmadec \- Kleine Dekompressoren für .xz und .lzma
.SH ÜBERSICHT
diff --git a/po4a/man/de/xzdiff.1 b/po4a/man/de/xzdiff.1
index ce366a2..9648102 100644
--- a/po4a/man/de/xzdiff.1
+++ b/po4a/man/de/xzdiff.1
@@ -1,45 +1,58 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
-.\" Original zdiff.1 for gzip: Jean-loup Gailly
+.\" Authors: Lasse Collin
+.\" Jia Tan
.\"
-.\" Modifications for XZ Utils: Lasse Collin
-.\" Andrew Dudman
+.\" German translation for xz-man.
+.\" Mario Blättermann <mario.blaettermann@gmail.com>, 2015, 2019-2020, 2022-2024.
.\"
-.\" License: GNU GPLv2+
+.\" (Note that this file is not based on gzip's zdiff.1.)
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZDIFF 1 "4. Juni 2021" Tukaani XZ\-Dienstprogramme
+.TH XZDIFF 1 "13. Februar 2024" Tukaani XZ\-Dienstprogramme
.SH BEZEICHNUNG
xzcmp, xzdiff, lzcmp, lzdiff \- komprimierte Dateien vergleichen
+.
.SH ÜBERSICHT
-\fBxzcmp\fP [\fIcmp\-Optionen\fP] \fIDatei1\fP [\fIDatei2\fP]
+\fBxzcmp\fP [\fIOption …\fP] \fIDatei1\fP [\fIDatei2\fP]
.br
-\fBxzdiff\fP [\fIdiff\-Optionen\fP] \fIDatei1\fP [\fIDatei2\fP]
+\fBxzdiff\fP \&…
.br
-\fBlzcmp\fP [\fIcmp\-Optionen\fP] \fIDatei1\fP [\fIDatei2\fP]
+\fBlzcmp\fP \&…
.br
-\fBlzdiff\fP [\fIdiff\-Optionen\fP] \fIDatei1\fP [\fIDatei2\fP]
+\fBlzdiff\fP \&…
+.
.SH BESCHREIBUNG
-Die Dienstprogramme \fBxzcmp\fP und \fBxzdiff\fP führen die Programme \fBcmp\fP(1)
-beziehungsweise \fBdiff\fP(1) mit Dateien aus, die mittels \fBxz\fP(1),
-\fBlzma\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1) oder \fBzstd\fP komprimiert
-wurden. Alle angegebenen Optionen werden direkt an \fBcmp\fP(1) oder \fBdiff\fP(1)
-übergeben. Wird nur eine Datei angegeben, wird diese \fIDatei1\fP (die eine
-Endung entsprechend eines der unterstützten Kompressionsformate haben muss)
-mit der \fIDatei1\fP verglichen, von der die Kompressionsformat\-Endung entfernt
-wird. Werden zwei Dateien angegeben, dann werden deren Inhalte (falls nötig,
-unkomprimiert) an \fBcmp\fP(1) oder \fBdiff\fP(1) weitergeleitet. Der Exit\-Status
-von \fBcmp\fP(1) oder \fBdiff\fP(1) wird dabei bewahrt (sofern kein
-Dekompressionsfehler auftrat; in diesem Fall ist der Exit\-Status 2).
+\fBxzcmp\fP und \fBxzdiff\fP vergleichen den unkomprimierten Inhalt zweier
+Dateien. Die unkomprimierten Daten und Optionen werden an \fBcmp\fP(1) oder
+\fBdiff\fP(1) übergeben, sofern weder \fB\-\-help\fP noch \fB\-\-version\fP angegeben
+wird.
.PP
-Die Namen \fBlzcmp\fP und \fBlzdiff\fP dienen der Abwärtskompatibilität zu den
+Wenn sowohl \fIDatei1\fP als auch \fIDatei2\fP angegeben sind, können diese
+unkomprimierte Dateien oder Dateien in Formaten sein, die \fBxz\fP(1),
+\fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1), \fBzstd\fP(1) oder \fBlz4\fP(1)
+dekomprimieren können. Die erforderlichen Dekomprimierungsbefehle werden aus
+den Dateiendungen von \fIDatei1\fP und \fIDatei2\fP abgeleitet. Für eine Datei mit
+einer unbekannten Endung wird angenommen, dass sie entweder unkomprimiert
+ist oder von \fBxz\fP(1) dekomprimiert werden kann.
+.PP
+Falls nur ein Dateiname angegeben wird, muss \fIDatei1\fP eine Endung eines
+unterstützten Kompressionsformat haben und der Name von \fIDatei2\fP wird aus
+\fIDatei1\fP abgeleitet, indem die Endung des Kompressionsformats entfernt
+wird.
+.PP
+Die Befehle \fBlzcmp\fP und \fBlzdiff\fP dienen der Abwärtskompatibilität zu den
LZMA\-Dienstprogrammen.
+.
+.SH EXIT\-STATUS
+Falls ein Dekompressionsfehler auftritt, ist der Exit\-Status
+\fB2\fP. Anderenfalls wird der Exit\-Status von \fBcmp\fP(1) oder \fBdiff\fP(1)
+verwendet.
+.
.SH "SIEHE AUCH"
\fBcmp\fP(1), \fBdiff\fP(1), \fBxz\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1),
-\fBzstd\fP(1), \fBzdiff\fP(1)
-.SH FEHLER
-Die Meldungen der Programme \fBcmp\fP(1) oder \fBdiff\fP(1) können auf temporäre
-Dateinamen verweisen anstatt auf die tatsächlich angegebenen Dateinamen.
+\fBzstd\fP(1), \fBlz4\fP(1)
diff --git a/po4a/man/de/xzgrep.1 b/po4a/man/de/xzgrep.1
index 28b5098..95d96bc 100644
--- a/po4a/man/de/xzgrep.1
+++ b/po4a/man/de/xzgrep.1
@@ -1,21 +1,24 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
-.\" Original zgrep.1 for gzip: Jean-loup Gailly
-.\" Charles Levert <charles@comm.polymtl.ca>
+.\" Authors: Lasse Collin
+.\" Jia Tan
.\"
-.\" Modifications for XZ Utils: Lasse Collin
+.\" German translation for xz-man.
+.\" Mario Blättermann <mario.blaettermann@gmail.com>, 2015, 2019-2020, 2022-2024.
.\"
-.\" License: GNU GPLv2+
+.\" (Note that this file is not based on gzip's zgrep.1.)
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZGREP 1 "19. Juli 2022" Tukaani XZ\-Dienstprogramme
+.TH XZGREP 1 "13. Februar 2024" Tukaani XZ\-Dienstprogramme
.SH BEZEICHNUNG
-xzgrep \- komprimierte Dateien nach einem regulären Ausdruck durchsuchen
+xzgrep \- möglicherweise komprimierte Dateien nach Mustern durchsuchen
+.
.SH ÜBERSICHT
-\fBxzgrep\fP [\fIgrep_Optionen\fP] [\fB\-e\fP] \fIMuster\fP [\fIDatei …\fP]
+\fBxzgrep\fP [\fIOption …\fP] [\fIMusterliste\fP] [\fIDatei …\fP]
.br
\fBxzegrep\fP …
.br
@@ -26,21 +29,48 @@ xzgrep \- komprimierte Dateien nach einem regulären Ausdruck durchsuchen
\fBlzegrep\fP …
.br
\fBlzfgrep\fP …
+.
.SH BESCHREIBUNG
-\fBxzgrep\fP wendet \fBgrep\fP(1) auf \fIDateien\fP an, die entweder unkomprimiert
-oder mit \fBxz\fP(1), \fBlzma\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1) oder
-\fBzstd\fP komprimiert sein können. Alle angegebenen Optionen werden direkt an
-\fBgrep\fP(1) übergeben.
+\fBxzgrep\fP ruft \fBgrep\fP(1) mit dem unkomprimierten Inhalt von Dateien
+auf. Die Formate der \fIDateien\fP werden aus den Dateiendungen
+abgeleitet. Jede \fIDatei\fP mit einer Endung, die von \fBxz\fP(1), \fBgzip\fP(1),
+\fBbzip2\fP(1), \fBlzop\fP(1), \fBzstd\fP(1) oder \fBlz4\fP(1) unterstützt wird, wird
+dekomprimiert; für andere Dateien wird angenommen, dass sie bereits in
+unkomprimierter Form vorliegen.
.PP
-Wenn keine \fIDatei\fP angegeben ist, wird die Standardeingabe dekomprimiert
-(falls nötig) und an \fBgrep\fP übergeben. Beim Lesen aus der Standardeingabe
-keine Dateien unterstützt, die mit \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1) oder
-\fBzstd\fP komprimiert sind.
+Wenn keine \fIDateien\fP angegeben werden oder \fIDatei\fP als \fB\-\fP angegeben
+wird, wird aus der Standardeingabe gelesen. Beim Lesen aus der
+Standardeingabe werden nur die von \fBxz\fP(1) unterstützten Dateien
+dekomprimiert. Für andere Dateien wird angenommen, dass sie bereits in
+unkomprimierter Form vorliegen.
.PP
-Wenn \fBxzgrep\fP als \fBxzegrep\fP oder \fBxzfgrep\fP aufgerufen wird, dann wird
-\fBgrep \-E\fP oder \fBgrep \-F\fP anstelle von \fBgrep\fP(1) verwendet. Genauso
-verhalten sich die Befehle \fBlzgrep\fP, \fBlzegrep\fP und \fBlzfgrep\fP, die die
-Abwärtskompatibilität zu den LZMA\-Dienstprogrammen gewährleisten.
+Die meisten \fIOptionen\fP von \fBgrep\fP(1) werden unterstützt, die folgenden
+jedoch nicht:
+.IP "" 4
+\fB\-r\fP, \fB\-\-recursive\fP
+.IP "" 4
+\fB\-R\fP, \fB\-\-dereference\-recursive\fP
+.IP "" 4
+\fB\-d\fP, \fB\-\-directories=\fP\fIAktion\fP
+.IP "" 4
+\fB\-Z\fP, \fB\-\-null\fP
+.IP "" 4
+\fB\-z\fP, \fB\-\-null\-data\fP
+.IP "" 4
+\fB\-\-include=\fP\fIGlob\fP
+.IP "" 4
+\fB\-\-exclude=\fP\fIGlob\fP
+.IP "" 4
+\fB\-\-exclude\-from=\fP\fIDatei\fP
+.IP "" 4
+\fB\-\-exclude\-dir=\fP\fIGlob\fP
+.PP
+\fBxzegrep\fP ist ein Alias für \fBxzgrep \-E\fP. \fBxzfgrep\fP ist ein Alias für
+\fBxzgrep \-F\fP.
+.PP
+Die Befehle \fBlzgrep\fP, \fBlzegrep\fP und \fBlzfgrep\fP dienen der
+Abwärtskompatibilität zu den LZMA\-Dienstprogrammen.
+.
.SH EXIT\-STATUS
.TP
0
@@ -54,11 +84,13 @@ Fehler aufgetreten.
>1
Ein oder mehrere Fehler sind aufgetreten. Es ist unbekannt, ob Treffer
gefunden wurden.
+.
.SH UMGEBUNGSVARIABLEN
.TP
\fBGREP\fP
-Wenn die Umgebungsvariable \fBGREP\fP gesetzt ist, verwendet \fBxzgrep\fP deren
-Inhalt anstelle von \fBgrep\fP(1), \fBgrep \-E\fP oder \fBgrep \-F\fP.
+Wenn die Umgebungsvariable \fBGREP\fP auf einen nicht\-leeren Wert gesetzt ist,
+wird diese anstelle von \fBgrep\fP(1), \fBgrep \-E\fP oder \fBgrep \-F\fP verwendet.
+.
.SH "SIEHE AUCH"
\fBgrep\fP(1), \fBxz\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1), \fBzstd\fP(1),
-\fBzgrep\fP(1)
+\fBlz4\fP(1), \fBzgrep\fP(1)
diff --git a/po4a/man/de/xzless.1 b/po4a/man/de/xzless.1
index fdbad59..602d73f 100644
--- a/po4a/man/de/xzless.1
+++ b/po4a/man/de/xzless.1
@@ -1,9 +1,10 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Authors: Andrew Dudman
.\" Lasse Collin
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
+.\" German translation for xz-man.
+.\" Mario Blättermann <mario.blaettermann@gmail.com>, 2015, 2019-2020, 2022-2024.
.\"
.\" (Note that this file is not based on gzip's zless.1.)
.\"
@@ -12,7 +13,7 @@
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZLESS 1 "27. September 2010" Tukaani XZ\-Dienstprogramme
+.TH XZLESS 1 "12. Februar 2024" Tukaani XZ\-Dienstprogramme
.SH BEZEICHNUNG
xzless, lzless \- mit xz oder lzma komprimierte (Text\-)Dateien betrachten
.SH ÜBERSICHT
@@ -21,9 +22,10 @@ xzless, lzless \- mit xz oder lzma komprimierte (Text\-)Dateien betrachten
\fBlzless\fP [\fIDatei\fP …]
.SH BESCHREIBUNG
\fBxzless\fP ist ein Filter, der Text aus komprimierten Dateien in einem
-Terminal anzeigt. Es funktioniert mit Dateien, die mit \fBxz\fP(1) oder
-\fBlzma\fP(1) komprimiert sind. Falls keine \fIfiles\fP angegeben sind, liest
-\fBxzless\fP aus der Standardeingabe.
+Terminal anzeigt. Von \fBxz\fP(1) unterstützte Dateien werden dekomprimiert;
+für andere Dateien wird angenommen, dass sie bereits in unkomprimierter Form
+vorliegen. Wenn keine \fIDateien\fP angegeben werden, liest \fBxzless\fP aus der
+Standardeingabe.
.PP
\fBxzless\fP verwendet \fBless\fP(1) zur Darstellung der Ausgabe. Im Gegensatz zu
\fBxzmore\fP können Sie das zu verwendende Textanzeigeprogramm nicht durch
diff --git a/po4a/man/de/xzmore.1 b/po4a/man/de/xzmore.1
index 511a37b..a376a0b 100644
--- a/po4a/man/de/xzmore.1
+++ b/po4a/man/de/xzmore.1
@@ -1,40 +1,49 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
-.\" Original zdiff.1 for gzip: Jean-loup Gailly
-.\" Modifications for XZ Utils: Lasse Collin
+.\" Authors: Andrew Dudman
+.\" Lasse Collin
.\"
-.\" License: GNU GPLv2+
+.\" German translation for xz-man.
+.\" Mario Blättermann <mario.blaettermann@gmail.com>, 2015, 2019-2020, 2022-2024.
+.\"
+.\" (Note that this file is based on xzless.1 instead of gzip's zmore.1.)
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZMORE 1 "30. Juni 2013" Tukaani XZ\-Dienstprogramme
+.TH XZMORE 1 "12. Februar 2024" Tukaani XZ\-Dienstprogramme
.SH BEZEICHNUNG
xzmore, lzmore \- mit xz oder lzma komprimierte (Text\-)Dateien lesen
+.
.SH ÜBERSICHT
-\fBxzmore\fP [\fIDatei …\fP]
+\fBxzmore\fP [\fIDatei\fP …]
.br
-\fBlzmore\fP [\fIDatei …\fP]
+\fBlzmore\fP [\fIDatei\fP …]
+.
.SH BESCHREIBUNG
-\fBxzmore\fP ist ein Filter zur seitenweisen Anzeige von Textdateien in einem
-Terminal, die mit \fBxz\fP(1) oder \fBlzma\fP(1) komprimiert wurden.
+\fBxzmore\fP zeigt Text aus komprimierten Dateien mit Hilfe des Pagers
+(Textanzeigeprogramms) \fBmore\fP(1) in einem Terminal an. Von \fBxz\fP(1)
+unterstützte Dateien werden dekomprimiert; für andere Dateien wird
+angenommen, dass sie bereits in unkomprimierter Form vorliegen. Wenn keine
+\fIDateien\fP angegeben werden, liest \fBxzmore\fP aus der Standardeingabe. Im
+\fBmore\fP(1)\-Handbuch finden Sie Informationen zu den Tastaturbefehlen.
+.PP
+Beachten Sie, dass Zurückrollen nicht möglich sein könnte, abhängig von der
+Implementierung von \fBmore\fP(1). Das kommt daher, dass \fBxzmore\fP eine Pipe
+verwendet, um die dekomprimierten Daten an \fBmore\fP(1) zu
+übergeben. \fBxzless\fP(1) verwendet \fBless\fP(1), welches fortgeschrittenere
+Funktionen bietet.
.PP
-Um ein anderes Textanzeigeprogramm als den voreingestellten \fBmore\fP zu
-verwenden, setzen Sie die Umgebungsvariable \fBPAGER\fP auf das gewünschte
-Programm. Der Name \fBlzmore\fP dient der Abwärtskompatibilität zu den
+Der Befehl \fBlzmore\fP dient der Abwärtskompatibilität zu den
LZMA\-Dienstprogrammen.
+.
+.SH UMGEBUNGSVARIABLEN
.TP
-\fBe\fP oder \fBq\fP
-Wenn die Zeile \-\-Mehr\-\-(Nächste Datei: \fIDatei\fP) angezeigt wird, wird
-\fBxzmore\fP mit diesem Befehl beendet.
-.TP
-\fBs\fP
-Wenn die Zeile \-\-Mehr\-\-(Nächste Datei: \fIDatei\fP) angezeigt wird, springt
-\fBxzmore\fP zur nächsten Datei und zeigt diese an.
-.PP
-Eine Liste der bei der Betrachtung von Dateiinhalten verfügbaren
-Tastaturbefehle finden Sie in der Handbuchseite des verwendeten
-Textanzeigeprogramms, meist \fBmore\fP(1).
+\fBPAGER\fP
+Falls die Umgebungsvariable \fBPAGER\fP gesetzt ist, wird diese als Pager
+(Textanzeigeprogramm) anstelle von \fBmore\fP(1) verwendet.
+.
.SH "SIEHE AUCH"
\fBmore\fP(1), \fBxz\fP(1), \fBxzless\fP(1), \fBzmore\fP(1)
diff --git a/po4a/man/fr/lzmainfo.1 b/po4a/man/fr/lzmainfo.1
index ce9b60d..bcba918 100644
--- a/po4a/man/fr/lzmainfo.1
+++ b/po4a/man/fr/lzmainfo.1
@@ -1,8 +1,11 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Author: Lasse Collin
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
+.\" french translation of XZ Utils man
+.\" Copyright (C) 2021 Debian French l10n team <debian-l10n-french@lists.debian.org>
+.\" Translator
+.\" bubu <bubub@no-log.org>, 2021.
.\"
.\"*******************************************************************
.\"
diff --git a/po4a/man/fr/xz.1 b/po4a/man/fr/xz.1
index a7fc82b..46c9815 100644
--- a/po4a/man/fr/xz.1
+++ b/po4a/man/fr/xz.1
@@ -1,17 +1,20 @@
'\" t
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Authors: Lasse Collin
.\" Jia Tan
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
+.\" french translation of XZ Utils man
+.\" Copyright (C) 2021 Debian French l10n team <debian-l10n-french@lists.debian.org>
+.\" Translator
+.\" bubu <bubub@no-log.org>, 2021.
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZ 1 2023\-07\-17 Tukaani "Utilitaires XZ"
+.TH XZ 1 2024\-04\-08 Tukaani "Utilitaires XZ"
.
.SH NOM
xz, unxz, xzcat, lzma, unlzma, lzcat \- Compresser ou décompresser des
@@ -53,7 +56,7 @@ l'entrée standard si c'est un terminal.
.PP
A moins que \fB\-\-sdout\fP ne soit indiqué, les \fIfichiers\fP autres que \fB\-\fP sont
écrits dans un nouveau fichier dont le nom est dérivé du nom de \fIfichier\fP
-source\ :
+source :
.IP \(bu 3
Lors de la compression, le suffixe du format de fichier cible (\fB.xz\fP ou
\&\fB.lzma\fP) est ajouté au nom de fichier source pour obtenir le nom de fichier
@@ -67,7 +70,7 @@ Si le fichier cible existe déjà, une erreur est affichée et le \fIfichier\fP
est ignoré.
.PP
Sauf s'il écrit dans la sortie standard, \fBxz\fP affichera un avertissement et
-ignorera le \fIfichier\fP dans les cas suivants\ :
+ignorera le \fIfichier\fP dans les cas suivants :
.IP \(bu 3
\fIfichier\fP n'est pas un fichier normal. Les liens symboliques ne sont pas
suivis et donc ne sont pas considérés comme des fichiers normaux.
@@ -163,15 +166,15 @@ optionel permet d'indiquer facilement les grands entiers. Il ne doit pas y
avoir d'espace entre l'entier et le suffixe.
.TP
\fBKiB\fP
-Multiplier l'entier par 1024\ (2^10). \fBKi\fP, \fBk\fP, \fBkB\fP, \fBK\fP et \fBKB\fP sont
+Multiplier l'entier par 1024 (2^10). \fBKi\fP, \fBk\fP, \fBkB\fP, \fBK\fP et \fBKB\fP sont
acceptés comme synonymes de \fBKiB\fP.
.TP
\fBMiB\fP
-Multiplier l'entier par 1\ 048\ 576\ (2^20). \fBMi\fP, \fBm\fP, \fBM\fP et \fBMB\fP sont
+Multiplier l'entier par 1 048 576 (2^20). \fBMi\fP, \fBm\fP, \fBM\fP et \fBMB\fP sont
acceptés comme synonymes de \fBMiB\fP.
.TP
\fBGiB\fP
-Multiplier l'entier par 1\ 073\ 741\ 824\ (2^30). \fBGi\fP, \fBg\fP, \fBG\fP et \fBGB\fP
+Multiplier l'entier par 1 073 741 824 (2^30). \fBGi\fP, \fBg\fP, \fBG\fP et \fBGB\fP
sont acceptés comme synonymes de \fBGiB\fP.
.PP
La valeur spéciale \fBmax\fP peut être utilisée pour indiquer la valeur
@@ -225,7 +228,7 @@ sticky bits are not copied to the target file. In earlier versions this was
only done with \fB\-\-force\fP.
.TP
\fB\-f\fP, \fB\-\-force\fP
-Cette option a plusieurs effets\ :
+Cette option a plusieurs effets :
.RS
.IP \(bu 3
Si le fichier cible existe déjà, l'effacer avant de compresser ou
@@ -290,10 +293,10 @@ suffixe doit toujours être spécifié à moins d'écrire sur la sortie standard
car il n'y a pas de suffixe par défaut pour les flux bruts.
.TP
\fB\-\-files\fP[\fB=\fP\fIfichier\fP]
-Lire les noms de fichier à traiter depuis \fIfichier\fP\ ; si \fIfichier\fP est
+Lire les noms de fichier à traiter depuis \fIfichier\fP ; si \fIfichier\fP est
omis , les noms de fichier sont lus sur l'entrée standard. Les noms de
fichier doivent se terminer avec le caractère de nouvelle ligne. Un tiret
-(\fB\-\fP) est considéré comme un nom de fichier normal\ ; ce qui ne signifie pas
+(\fB\-\fP) est considéré comme un nom de fichier normal ; ce qui ne signifie pas
entrée standard. Si les noms de fichier sont aussi donnés comme arguments de
ligne de commande, ils sont traités avant les noms de fichier lus depuis
\fIfichier\fP.
@@ -305,7 +308,7 @@ fichier doit se terminer par le caractère null.
.SS "Format de fichier basique et options de compression"
.TP
\fB\-F\fP \fIformat\fP, \fB\-\-format=\fP\fIformat\fP
-Indiquer le \fIformat\fP de fichier à compresser ou décompresser\ :
+Indiquer le \fIformat\fP de fichier à compresser ou décompresser :
.RS
.TP
\fBauto\fP
@@ -348,12 +351,12 @@ normalement aurait du être stockée dans les en\-têtes du conteneur.
\fB\-C\fP \fIvérif.\fP, \fB\-\-check=\fP\fIvérif.\fP
Spécifier le type d'intégrité à vérifier. La vérification est calculée à
partir des données non\-compressées et stockées dans le fichier \fB.xz\fP. Cette
-option n'a effet que si la compression a été faite dans le format \fB.xz\fP\ ;
+option n'a effet que si la compression a été faite dans le format \fB.xz\fP ;
le format \fB.lzma\fP ne gère pas les vérifications d'intégrité. Le contrôle
d'intégrité (s'il y en a) est vérifié lorsque le fichier \fB.xz\fP est
décompressé.
.IP ""
-Types de \fIvérification\fP pris en charge\ :
+Types de \fIvérification\fP pris en charge :
.RS
.TP
\fBnone\fP
@@ -382,7 +385,7 @@ décompression. Les valeurs CRC32 dans les en\-têtes \fB.xz\fP seront normaleme
toujours vérifiées.
.IP ""
\fBN'utilisez pas cette option à moins de savoir ce que vous faites.\fP Les
-raisons possibles pour utiliser cette option\ :
+raisons possibles pour utiliser cette option :
.RS
.IP \(bu 3
Essayer de récupérer des données d'un fichier .xz corrompu.
@@ -434,7 +437,7 @@ meilleure est la compression, plus rapide sera en général la
décompression. Cela signifie aussi que la quantité de sortie non compressée
produite par seconde peut varier beaucoup.
.IP ""
-Le tableau suivant résume les caractéristiques des préréglages\ :
+Le tableau suivant résume les caractéristiques des préréglages :
.RS
.RS
.PP
@@ -457,27 +460,25 @@ Préréglage;DictSize;CompCPU;CompMem;DecMem
.RE
.RE
.IP ""
-Descriptions des colonnes\ :
+Descriptions des colonnes :
.RS
.IP \(bu 3
DictSize est la taille du dictionnaire de LZMA2. Utiliser un dictionnaire
plus gros que la taille du fichier non compressé est un gaspillage de
mémoire. C'est pourquoi il est bon d'éviter d'utiliser les préréglages de
-\fB\-7\fP\ à\ \fB\-9\fP lorsqu'il n'y en a pas vraiment besoin. A \fB\-6\fP et plus bas,
+\fB\-7\fP à \fB\-9\fP lorsqu'il n'y en a pas vraiment besoin. A \fB\-6\fP et plus bas,
la quantité de mémoire gaspillée est généralement assez basse pour ne pas
être un problème.
.IP \(bu 3
CompCPU est une représentation des préréglages de LZMA2 qui affectent la
vitesse de compression. La taille du dictionnaire aussi affecte la vitesse,
-alors comme CompCPU est le même pour les niveaux de \fB\-6\fP\ à\ \fB\-9\fP, les plus
+alors comme CompCPU est le même pour les niveaux de \fB\-6\fP à \fB\-9\fP, les plus
haut niveaux tendent à être un peu moins rapides. Pour être encore moins
rapide et du coup obtenir peut être une meilleure compression, consultez
\fB\-\-extreme\fP.
.IP \(bu 3
-CompMem contient les besoins en mémoire du compresseur en mode mono\-thread
-\&. Cela devrait à peine varier entre les versions de \fBxz\fP. Les besoins en
-mémoire de quelques uns des futurs modes multi\-thread devraient sensiblement
-augmenter par rapport au mode mono\-thread.
+CompMem contains the compressor memory requirements in the single\-threaded
+mode. It may vary slightly between \fBxz\fP versions.
.IP \(bu 3
DecMem contient les besoins en mémoire du décompresseur. Ce sont les
réglages de la compression qui déterminent les besoins en mémoire de la
@@ -485,13 +486,18 @@ décompression. L'exacte utilisation de la mémoire est légèrement supérieure
à la taille du dictionnaire LZMA2, mais les valeurs dans la table ont été
arrondies au prochain Mio supérieur.
.RE
+.IP ""
+Memory requirements of the multi\-threaded mode are significantly higher than
+that of the single\-threaded mode. With the default value of
+\fB\-\-block\-size\fP, each thread needs 3*3*DictSize plus CompMem or DecMem. For
+example, four threads with preset \fB\-6\fP needs 660\(en670\ MiB of memory.
.TP
\fB\-e\fP, \fB\-\-extreme\fP
Utilisez un variant plus lent que les préréglages (\fB\-0\fP à \fB\-9\fP) pour
espérer avoir un taux de compression légèrement meilleur, mais en cas de
malchance cela peut être pire. L'utilisation mémoire du décompresseur n'est
pas affectée, mais l'utilisation mémoire du compresseur augmente un peu aux
-niveaux de préréglages de \fB\-0\fP\ à\ \fB\-3\fP.
+niveaux de préréglages de \fB\-0\fP à \fB\-3\fP.
.IP ""
Depuis qu'il y a deux préréglages avec des tailles de dictionnaire de 4\ Mio
et 8 \Mio, les préréglages \fB\-3e\fP et \fB\-5e\fP utilisent des réglages
@@ -520,7 +526,7 @@ Préréglage;DictSize;CompCPU;CompMem;DecMem
.RE
.IP ""
Par exemple, il y a un total de quatre préréglages qui utilisent un
-dictionnaire de 8\ Mio et qui sont dans l'ordre du plus rapide au plus lent\ :
+dictionnaire de 8 Mio et qui sont dans l'ordre du plus rapide au plus lent :
\fB\-5\fP, \fB\-6\fP, \fB\-5e\fP et \fB\-6e\fP.
.TP
\fB\-\-fast\fP
@@ -535,7 +541,7 @@ options.
.TP
\fB\-\-block\-size=\fP\fItaille\fP
Lors de la compression dans le format \fB.xz\fP, les données de l'entrée sont
-réparties en blocs de \fItaille\fP\ octets. Les blocs sont compressés
+réparties en blocs de \fItaille\fP octets. Les blocs sont compressés
indépendamment les un des autres, ce qui aide avec le mode multithread
(multi\-threading) et rend possible la décompression à accès aléatoire
limité. Cette option est typiquement utilisée pour outrepasser la taille de
@@ -547,38 +553,62 @@ each thread for buffering input and output. The default \fIsize\fP is three
times the LZMA2 dictionary size or 1 MiB, whichever is more. Typically a
good value is 2\(en4 times the size of the LZMA2 dictionary or at least 1
MiB. Using \fIsize\fP 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 \fBxz\fP will use for multi\-threaded decompression.
-.IP ""
-Par défaut, il n'y a pas de répartition de bloc en mode mono\-thread. Régler
-cette option n'affecte pas l'utilisation de la mémoire. Aucune information
-de taille n'est stockée dans l'en\-tête de bloc, par conséquent les fichiers
-créés en mode single\-thread ne seront pas identiques aux fichiers créés en
-mode multi\-thread. Le manque d'information de taille signifie aussi qu'une
-future version de \fBxz\fP ne sera pas capable de décompresser les fichiers en
-mode multi\-thread.
-.TP
-\fB\-\-block\-list=\fP\fItailles\fP
-Lors de la compression dans le format \fB.xz\fP, commencer un nouveau bloc
-après les intervalles donnés des données non\ compressées.
-.IP ""
-Les \fItailles\fP non\-compressées des blocs sont spécifiées sous forme de liste
-séparée par des virgules. Omettre une taille (deux ou plus virgules
-consécutives) est un raccourci pour utiliser la taille du bloc précédent.
-.IP ""
-Si le fichier en entrée est plus grand que la somme des \fItailles\fP, la
-dernière valeur est répétée jusqu'à la fin du fichier. Une valeur spéciale
-de \fB0\fP peut être utilisée comme étant la dernière valeur pour indiquer que
-le reste du fichier devrait être encodé comme un simple bloc.
-.IP ""
-Si on spécifie des \fItailles\fP qui excèdent la taille du bloc de l'encodeur
-(soit la valeur en mode threadé, soit la valeur spécifiée avec
-\fB\-\-block\-size=\fP\fItaille\fP), l'encodeur créera des blocs supplémentaires tout
-en gardant les limites indiquées dans \fItailles\fP. Par exemple, si on indique
-\fB\-\-block\-size=10MiB\fP\fB\-\-block\-list=5MiB,10MiB,8MiB,12MiB,24MiB\fP et que le
-fichier fait 80Mio, on aura 11 blocs de 5, 10, 8, 2, 10, 10, 4, 10, 10, et
-1\ Mio.
+because then the LZMA2 dictionary buffer will never get fully used. In
+multi\-threaded mode, the sizes of the blocks are stored in the block
+headers. This size information is required for multi\-threaded
+decompression.
+.IP ""
+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 \fBxz\fP won't be able decompress the files in multi\-threaded mode.
+.TP
+\fB\-\-block\-list=\fP\fIitems\fP
+When compressing to the \fB.xz\fP format, start a new block with an optional
+custom filter chain after the given intervals of uncompressed data.
+.IP ""
+The \fIitems\fP are a comma\-separated list. Each item consists of an optional
+filter chain number between 0 and 9 followed by a colon (\fB:\fP) and a
+required size of uncompressed data. Omitting an item (two or more
+consecutive commas) is a shorthand to use the size and filters of the
+previous item.
+.IP ""
+If the input file is bigger than the sum of the sizes in \fIitems\fP, the last
+item is repeated until the end of the file. A special value of \fB0\fP may be
+used as the last size to indicate that the rest of the file should be
+encoded as a single block.
+.IP ""
+An alternative filter chain for each block can be specified in combination
+with the \fB\-\-filters1=\fP\fIfilters\fP \&...\& \fB\-\-filters9=\fP\fIfilters\fP options.
+These options define filter chains with an identifier between 1\(en9.
+Filter chain 0 can be used to refer to the default filter chain, which is
+the same as not specifying a filter chain. The filter chain identifier can
+be used before the uncompressed size, followed by a colon (\fB:\fP). For
+example, if one specifies \fB\-\-block\-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB\fP
+then blocks will be created using:
+.RS
+.IP \(bu 3
+The filter chain specified by \fB\-\-filters1\fP and 2 MiB input
+.IP \(bu 3
+The filter chain specified by \fB\-\-filters3\fP and 2 MiB input
+.IP \(bu 3
+The filter chain specified by \fB\-\-filters2\fP and 4 MiB input
+.IP \(bu 3
+The filter chain specified by \fB\-\-filters2\fP and 4 MiB input
+.IP \(bu 3
+The default filter chain and 2 MiB input
+.IP \(bu 3
+The default filter chain and 4 MiB input for every block until end of input.
+.RE
+.IP ""
+If one specifies a size that exceeds the encoder's block size (either the
+default value in threaded mode or the value specified with
+\fB\-\-block\-size=\fP\fIsize\fP), the encoder will create additional blocks while
+keeping the boundaries specified in \fIitems\fP. For example, if one specifies
+\fB\-\-block\-size=10MiB\fP \fB\-\-block\-list=5MiB,10MiB,8MiB,12MiB,24MiB\fP 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.
.IP ""
En mode multi\-threadé les tailles de blocs sont stockées dans les en\-têtes
du bloc. Cela ne se fait pas en mode mono\-threadé, la sortie encodée ne sera
@@ -625,11 +655,11 @@ without affecting the compressed output.
If the \fIlimit\fP cannot be met even with the adjustments described above, an
error is displayed and \fBxz\fP will exit with exit status 1.
.IP ""
-La \fIlimite\fP peut être indiquée de plusieurs façons\ :
+La \fIlimite\fP peut être indiquée de plusieurs façons :
.RS
.IP \(bu 3
La \fIlimite\fP peut être une valeur absolue en octets. Utiliser un suffixe
-d'entier comme \fBMiB\fP peut être utile. Exemple\ :
+d'entier comme \fBMiB\fP peut être utile. Exemple :
\fB\-\-memlimit\-compress=80MiB\fP
.IP \(bu 3
La \fIlimite\fP peut être indiquée sous forme d'un pourcentage de la mémoire
@@ -637,7 +667,7 @@ physique totale (RAM). Cela peut être particulièrement utile quand la
variable d'environnement \fBXZ_DEFAULTS\fP est indiquée dans un script
d'initialisation de l'interpréteur partagé entre différents ordinateurs. De
cette façon la limite est automatiquement plus grande sur les systèmes avec
-plus de mémoire. Exemple\ : \fB\-\-memlimit=70%\fP
+plus de mémoire. Exemple : \fB\-\-memlimit=70%\fP
.IP \(bu 3
The \fIlimit\fP can be reset back to its default value by setting it to \fB0\fP.
This is currently equivalent to setting the \fIlimit\fP to \fBmax\fP (no memory
@@ -739,6 +769,9 @@ Threaded decompression only works on files that contain multiple blocks with
size information in block headers. All large enough files compressed in
multi\-threaded mode meet this condition, but files compressed in
single\-threaded mode don't even if \fB\-\-block\-size=\fP\fIsize\fP has been used.
+.IP ""
+The default value for \fIthreads\fP is \fB0\fP. In \fBxz\fP 5.4.x and older the
+default is \fB1\fP.
.
.SS "Chaînes de filtres de compresseur personnalisées"
A custom filter chain allows specifying the compression settings in detail
@@ -757,29 +790,55 @@ maximal de filtres dans la chaîne est quatre, mais habituellement, un chaîne
de filtre n'a qu'un ou deux filtres.
.PP
Beaucoup de filtres ont des limitations sur l'endroit où ils peuvent se
-placer dans la chaîne de filtre\ : quelques filtres ne peuvent fonctionner
+placer dans la chaîne de filtre : quelques filtres ne peuvent fonctionner
qu'en tant que dernier filtre dans la chaîne, quelques uns en tant que non
dernier filtre, et d'autres à n'importe quelle position dans la
chaîne. Suivant le filtre, cette limitation est soit inhérente au profil du
filtre, soit existe pour des raisons de sécurité.
.PP
-Une chaîne de filtres personnalisée est indiquée en utilisant une ou
-plusieurs options de filtre dans l'ordre où elles sont souhaitées dans la
-chaîne de filtres. Cela fait, l'ordre des options de filtre est
-significatif! Lors du décodage des flux bruts (\fB\-\-format=raw\fP), le filtre
-de chaîne est indiqué dans le même ordre qu'il fût indiqué lors de la
-compression.
-.PP
-Les filtres prennent des \fIoptions\fP spécifiques aux filtres sous la forme
-d'une liste séparée par des virgules. Les virgules supplémentaires dans les
-\fIoptions\fP sont ignorées. Toutes les options ont une valeur par défaut, donc
-vous ne devez indiquer que celles que vous voulez changer.
+A custom filter chain can be specified in two different ways. The options
+\fB\-\-filters=\fP\fIfilters\fP and \fB\-\-filters1=\fP\fIfilters\fP \&...\&
+\fB\-\-filters9=\fP\fIfilters\fP allow specifying an entire filter chain in one
+option using the liblzma filter string syntax. Alternatively, a filter
+chain can be specified by using one or more individual filter options in the
+order they are wanted in the filter chain. That is, the order of the
+individual filter options is significant! When decoding raw streams
+(\fB\-\-format=raw\fP), the filter chain must be specified in the same order as
+it was specified when compressing. Any individual filter or preset options
+specified before the full chain option (\fB\-\-filters=\fP\fIfilters\fP) will be
+forgotten. Individual filters specified after the full chain option will
+reset the filter chain.
+.PP
+Both the full and individual filter options take filter\-specific \fIoptions\fP
+as a comma\-separated list. Extra commas in \fIoptions\fP are ignored. Every
+option has a default value, so specify those you want to change.
.PP
Pour voir l'entièreté de la chaîne de filtres et ses \fIoptions\fP, utilisez
\fBxz \-vv\fP (ce qui est comme utiliser \fB\-\-verbose\fP deux fois). Cela
fonctionne aussi pour voir les options de chaîne de filtres utilisées par
les préréglages.
.TP
+\fB\-\-filters=\fP\fIfilters\fP
+Specify the full filter chain or a preset in a single option. Each filter
+can be separated by spaces or two dashes (\fB\-\-\fP). \fIfilters\fP may need to be
+quoted on the shell command line so it is parsed as a single option. To
+denote \fIoptions\fP, use \fB:\fP or \fB=\fP. A preset can be prefixed with a \fB\-\fP
+and followed with zero or more flags. The only supported flag is \fBe\fP to
+apply the same options as \fB\-\-extreme\fP.
+.TP
+\fB\-\-filters1\fP=\fIfilters\fP ... \fB\-\-filters9\fP=\fIfilters\fP
+Specify up to nine additional filter chains that can be used with
+\fB\-\-block\-list\fP.
+.IP ""
+For example, when compressing an archive with executable files followed by
+text files, the executable part could use a filter chain with a BCJ filter
+and the text part only the LZMA2 filter.
+.TP
+\fB\-\-filters\-help\fP
+Display a help message describing how to specify presets and custom filter
+chains in the \fB\-\-filters\fP and \fB\-\-filters1=\fP\fIfilters\fP \&...\&
+\fB\-\-filters9=\fP\fIfilters\fP options, and exit successfully.
+.TP
\fB\-\-lzma1\fP[\fB=\fP\fIoptions\fP]
.PD 0
.TP
@@ -795,7 +854,7 @@ problèmes pratiques de LZMA1. Le format \fBxz\fP utilise LZMA2 et ne prend pas
du tout en charge LZMA1. Les taux et vitesses de compression de LZMA1 et
LZMA2 sont pratiquement identiques.
.IP ""
-LZMA1 et LZMA2 partagent le même ensemble d'\fIoptions\fP\ :
+LZMA1 et LZMA2 partagent le même ensemble d'\fIoptions\fP :
.RS
.TP
\fBpreset=\fP\fIpréréglage\fP
@@ -841,7 +900,7 @@ le maximum est \fB4\fP. La valeur par défaut est \fB3\fP. En plus, la somme de
.IP ""
Tous les octets qui ne peuvent pas être codés comme des correspondances sont
codés comme des littéraux. C'est à dire que les littéraux sont simplement
-des octets 8\ bits encodés un à la fois.
+des octets 8 bits encodés un à la fois.
.IP ""
The literal coding makes an assumption that the highest \fIlc\fP bits of the
previous uncompressed byte correlate with the next byte. For example, in
@@ -880,7 +939,7 @@ slightly. For UTF\-16 text, \fBpb=1\fP is a good choice. If the alignment is
an odd number like 3 bytes, \fBpb=0\fP might be the best choice.
.IP ""
Même si l'alignement présumé peut être ajusté avec \fIpb\fP et \fIlp\fP, LZMA1 et
-LZMA2 favorisent toujours légèrement l'alignement sur 16\ octets. Il peut
+LZMA2 favorisent toujours légèrement l'alignement sur 16 octets. Il peut
être utile d'en tenir compte lors de la conception de formats de fichiers
susceptibles d'être souvent compressés avec LZMA1 ou LZMA2.
.TP
@@ -897,51 +956,51 @@ deux.
.RS
.TP
\fBhc3\fP
-Chaîne de hachage avec hachage de 2 et 3\ octets
+Chaîne de hachage avec hachage de 2 et 3 octets
.br
-Valeur minimale pour \fInice\fP\ : \fB3\fP
+Valeur minimale pour \fInice\fP : \fB3\fP
.br
-Utilisation de la mémoire\ :
+Utilisation de la mémoire :
.br
\fIdict\fP * 7.5 (if \fIdict\fP <= 16 Mio);
.br
\fIdict\fP * 5.5 + 64 MiB (si \fIdict\fP > 16 Mio)
.TP
\fBhc4\fP
-Chaîne de hachage avec hachage de 2, 3 et 4\ octets
+Chaîne de hachage avec hachage de 2, 3 et 4 octets
.br
-Valeur minimale pour \fInice\fP\ : \fB4\fP
+Valeur minimale pour \fInice\fP : \fB4\fP
.br
-Utilisation de la mémoire\ :
+Utilisation de la mémoire :
.br
\fIdict\fP * 7.5 (si \fIdict\fP <= 32 Mio);
.br
\fIdict\fP * 6.5 (si \fIdict\fP > 32 Mio)
.TP
\fBbt2\fP
-Arbre binaire avec hachage de 2\ octets
+Arbre binaire avec hachage de 2 octets
.br
-Valeur minimale pour \fInice\fP\ : \fB2\fP
+Valeur minimale pour \fInice\fP : \fB2\fP
.br
-Utilisation de la mémoire\ : \fIdict\fP * 9.5
+Utilisation de la mémoire : \fIdict\fP * 9.5
.TP
\fBbt3\fP
-Arbre binaire avec hachage de 2 et 3\ octets
+Arbre binaire avec hachage de 2 et 3 octets
.br
-Valeur minimale pour \fInice\fP\ : \fB3\fP
+Valeur minimale pour \fInice\fP : \fB3\fP
.br
-Utilisation de la mémoire\ :
+Utilisation de la mémoire :
.br
\fIdict\fP * 11.5 (si \fIdict\fP <= 16 Mio);
.br
\fIdict\fP * 9.5 + 64 MiB (si \fIdict\fP > 16 Mio)
.TP
\fBbt4\fP
-Arbre binaire avec hachage 2, 3 et 4\ octets
+Arbre binaire avec hachage 2, 3 et 4 octets
.br
-Valeur minimale pour \fInice\fP\ : \fB4\fP
+Valeur minimale pour \fInice\fP : \fB4\fP
.br
-Utilisation de la mémoire\ :
+Utilisation de la mémoire :
.br
\fIdict\fP * 11.5 (si \fIdict\fP <= 32 Mio);
.br
@@ -996,6 +1055,8 @@ la \fItaille\fP du dictionnaire. LZMA1 nécessite aussi \fIlc\fP, \fIlp\fP et \f
\fB\-\-ia64\fP[\fB=\fP\fIoptions\fP]
.TP
\fB\-\-sparc\fP[\fB=\fP\fIoptions\fP]
+.TP
+\fB\-\-riscv\fP[\fB=\fP\fIoptions\fP]
.PD
Ajouter un filtre branch/call/jump (BCJ) à la chaîne de filtres. Ces filtres
ne peuvent être utilisés que s'ils ne sont pas le dernier filtre de la
@@ -1010,7 +1071,7 @@ compression ratio slightly worse. The BCJ filters are very fast and use an
insignificant amount of memory.
.IP ""
Ces filtres BCJ présentent des problèmes connus liés au taux de
-compression\ :
+compression :
.RS
.IP \(bu 3
Some types of files containing executable code (for example, object files,
@@ -1038,32 +1099,46 @@ tab(;);
l n l
l n l.
Filtre;Alignement;Notes
-x86;1;32\ bits ou 64\ bits x86
+x86;1;32 bits ou 64 bits x86
ARM;4;
ARM\-Thumb;2;
ARM64;4;4096\-byte alignment is best
PowerPC;4;Grand boutiste seulement
IA\-64;16;Itanium
SPARC;4;
+RISC\-V;2;
.TE
.RE
.RE
.IP ""
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 \fBpb=4\fP or even \fBpb=4,lp=4,lc=0\fP 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.
+match the alignment of the selected BCJ filter. Examples:
+.RS
+.IP \(bu 3
+IA\-64 filter has 16\-byte alignment so \fBpb=4,lp=4,lc=0\fP is good with LZMA2
+(2^4=16).
+.IP \(bu 3
+RISC\-V code has 2\-byte or 4\-byte alignment depending on whether the file
+contains 16\-bit compressed instructions (the C extension). When 16\-bit
+instructions are used, \fBpb=2,lp=1,lc=3\fP or \fBpb=1,lp=1,lc=3\fP is good. When
+16\-bit instructions aren't present, \fBpb=2,lp=2,lc=2\fP is the best.
+\fBreadelf \-h\fP can be used to check if "RVC" appears on the "Flags" line.
+.IP \(bu 3
+ARM64 is always 4\-byte aligned so \fBpb=2,lp=2,lc=2\fP is the best.
+.IP \(bu 3
+The x86 filter is an exception. It's usually good to stick to LZMA2's
+defaults (\fBpb=2,lp=0,lc=3\fP) when compressing x86 executables.
+.RE
.IP ""
-Tous les filtres BCJ prennent en charge les mêmes \fIoptions\fP\ :
+Tous les filtres BCJ prennent en charge les mêmes \fIoptions\fP :
.RS
.TP
\fBstart=\fP\fIdécalage\fP
Spécifier le \fIdécalage\fP de départ qui est utilisé lors de la conversion
entre les adresses relatives et absolues. Le \fIdécalage\fP doit être un
multiple de l'alignement du filtre (voir la table ci\-dessus). Sa valeur par
-défaut est zéro. En pratique, cette dernière convient\ ; indiquer un
+défaut est zéro. En pratique, cette dernière convient ; indiquer un
\fIdécalage\fP personnalisé est la plupart du temps inutile.
.RE
.TP
@@ -1078,14 +1153,14 @@ significantly better results than Delta + LZMA2. This is true especially
with audio, which compresses faster and better, for example, with
\fBflac\fP(1).
.IP ""
-\fIoptions\fP prises en charge\ :
+\fIoptions\fP prises en charge :
.RS
.TP
\fBdist=\fP\fIdistance\fP
Specify the \fIdistance\fP of the delta calculation in bytes. \fIdistance\fP must
be 1\(en256. The default is 1.
.IP ""
-Par exemple, avec \fBdist=2\fP et une entrée huit\ octets A1 B1 A2 B3 A3 B5 A4
+Par exemple, avec \fBdist=2\fP et une entrée huit octets A1 B1 A2 B3 A3 B5 A4
B7, la sortie sera A1 B1 01 02 01 02 01 02.
.RE
.
@@ -1102,7 +1177,7 @@ sortie indiquant un avertissement sera encore utilisé.
affichera une barre de progression. Indiquer \fB\-\-verbose\fP deux fois donnera
une sortie encore plus bavarde.
.IP ""
-La barre de progression montre l'information suivante\ :
+La barre de progression montre l'information suivante :
.RS
.IP \(bu 3
Le pourcentage de complétion est montré si la taille du fichier en entrée
@@ -1173,76 +1248,16 @@ par un humain. Pour obtenir une sortie analysable par la machine, spécifiez
\fB\-\-robot\fP avant \fB\-\-version\fP.
.
.SH "MODE ROBOT"
-Le mode robot est activé avec l'option \fB\-\-robot\fP. Cela rend la sortie de
-\fBxz\fP plus facile à analyser par d'autres programmes. Actuellement,
-\fB\-\-robot\fP n'est seulement pris en charge qu'avec \fB\-\-version\fP,
-\fB\-\-info\-memory\fP et \fB\-\-list\fP. Il sera pris en charge pour la compression et
-la décompression dans le futur.
-.
-.SS Version
-\fBxz \-\-robot \-\-version\fP prints the version number of \fBxz\fP and liblzma in
-the following format:
-.PP
-\fBXZ_VERSION=\fP\fIXYYYZZZS\fP
-.br
-\fBLIBLZMA_VERSION=\fP\fIXYYYZZZS\fP
-.TP
-\fIX\fP
-Version majeure.
-.TP
-\fIYYY\fP
-Version mineure. Les numéros pairs sont stables. Les numéros impairs sont
-des versions alpha ou beta.
-.TP
-\fIZZZ\fP
-Niveau de correctif pour les options stables ou juste un compteur pour les
-options de développement.
-.TP
-\fIS\fP
-Stabilité. 0\ est alpha, 1\ est bêta et 2\ est stable. \fIS\fP devrait toujours
-être\ 2 quand \fIYYY\fP est pair.
-.PP
-\fIXYYYZZZS\fP sont identiques sur les deux lignes si \fBxz\fP et liblzma sont
-issus de la même version d'utilitaires XZ.
-.PP
-Exemples\ : 4.999.9beta est \fB49990091\fP et 5.0.0 est \fB50000002\fP.
-.
-.SS "Information de limite de mémoire"
-\fBxz \-\-robot \-\-info\-memory\fP prints a single line with multiple tab\-separated
-columns:
-.IP 1. 4
-Total amount of physical memory (RAM) in bytes.
-.IP 2. 4
-Memory usage limit for compression in bytes (\fB\-\-memlimit\-compress\fP). A
-special value of \fB0\fP indicates the default setting which for
-single\-threaded mode is the same as no limit.
-.IP 3. 4
-Memory usage limit for decompression in bytes (\fB\-\-memlimit\-decompress\fP). A
-special value of \fB0\fP indicates the default setting which for
-single\-threaded mode is the same as no limit.
-.IP 4. 4
-Since \fBxz\fP 5.3.4alpha: Memory usage for multi\-threaded decompression in
-bytes (\fB\-\-memlimit\-mt\-decompress\fP). This is never zero because a
-system\-specific default value shown in the column 5 is used if no limit has
-been specified explicitly. This is also never greater than the value in the
-column 3 even if a larger value has been specified with
-\fB\-\-memlimit\-mt\-decompress\fP.
-.IP 5. 4
-Since \fBxz\fP 5.3.4alpha: A system\-specific default memory usage limit that is
-used to limit the number of threads when compressing with an automatic
-number of threads (\fB\-\-threads=0\fP) and no memory usage limit has been
-specified (\fB\-\-memlimit\-compress\fP). This is also used as the default value
-for \fB\-\-memlimit\-mt\-decompress\fP.
-.IP 6. 4
-Since \fBxz\fP 5.3.4alpha: Number of available processor threads.
-.PP
-Dans le futur, la sortie de \fBxz \-\-robot \-\-info\-memory\fP pourrait avoir plus
-de colonnes, mais jamais plus qu'une ligne unique.
+The robot mode is activated with the \fB\-\-robot\fP option. It makes the output
+of \fBxz\fP easier to parse by other programs. Currently \fB\-\-robot\fP is
+supported only together with \fB\-\-list\fP, \fB\-\-filters\-help\fP, \fB\-\-info\-memory\fP,
+and \fB\-\-version\fP. It will be supported for compression and decompression in
+the future.
.
.SS "Mode liste"
\fBxz \-\-robot \-\-list\fP utilise une sortie séparée par des tabulations. La
première colonne de toutes les lignes possède une chaîne qui indique le type
-d'information trouvée sur cette ligne\ :
+d'information trouvée sur cette ligne :
.TP
\fBname\fP
C'est toujours la première ligne au début de la liste d'un fichier. La
@@ -1260,7 +1275,7 @@ y a autant de lignes \fBstream\fP qu'il y a de flux dans le fichier \fB.xz\fP.
Ce type de ligne n'est utilisé seulement lorsque \fB\-\-verbose\fP a été
indiquée. Il y a autant de lignes \fBblock\fP qu'il y a de blocs dans le
fichier \fB.xz\fP. Les lignes \fBblock\fP sont affichées après toutes les lignes
-\fBstream\fP\ ; les différents types de lignes ne sont pas imbriqués.
+\fBstream\fP ; les différents types de lignes ne sont pas imbriqués.
.TP
\fBsummary\fP
Ce type de ligne n'est utilisé que lorsque \fB\-\-verbose\fP a été indiqué deux
@@ -1272,7 +1287,7 @@ fichier \fB.xz\fP.
Cette ligne est toujours la toute dernière ligne de la sortie. Elle affiche
les comptes et les tailles totaux.
.PP
-Les colonnes des lignes \fBfile\fP\ :
+Les colonnes des lignes \fBfile\fP :
.PD 0
.RS
.IP 2. 4
@@ -1288,7 +1303,7 @@ Compression ratio, for example, \fB0.123\fP. If ratio is over 9.999, three
dashes (\fB\-\-\-\fP) are displayed instead of the ratio.
.IP 7. 4
Liste de noms de contrôles d'intégrité séparés par des virgules. Les chaînes
-suivantes sont utilisées pour les types de vérification connus\ : \fBNone\fP,
+suivantes sont utilisées pour les types de vérification connus : \fBNone\fP,
\fBCRC32\fP, \fBCRC64\fP et \fBSHA256\fP. Pour le types de vérification inconnus,
\fBUnknown\-\fP\fIN\fP est utilisé, où \fIN\fP est un identifiant de vérification sous
la forme d'un nombre décimal (un ou deux chiffres).
@@ -1297,7 +1312,7 @@ Taille totale du remplissage du flux dans le fichier
.RE
.PD
.PP
-Les colonnes des lignes \fBstream\fP\ :
+Les colonnes des lignes \fBstream\fP :
.PD 0
.RS
.IP 2. 4
@@ -1321,7 +1336,7 @@ Taille du remplissage de flux
.RE
.PD
.PP
-Les colonnes des lignes \fBblock\fP\ :
+Les colonnes des lignes \fBblock\fP :
.PD 0
.RS
.IP 2. 4
@@ -1349,7 +1364,7 @@ Nom de la vérification d'intégrité
Si \fB\-\-verbose\fP a été indiqué deux fois, les colonnes additionnelles sont
inclues sur les lignes \fBblock\fP. Elles ne sont pas affichées avec un seul
\fB\-\-verbose\fP, car l'obtention de ces informations nécessite de nombreuses
-recherches et peut donc être lente\ :
+recherches et peut donc être lente :
.PD 0
.RS
.IP 11. 4
@@ -1357,7 +1372,7 @@ Valeur de la vérification d'intégrité en hexadécimal
.IP 12. 4
Taille d'en\-tête de bloc
.IP 13. 4
-Drapeaux du bloc\ : \fBc\fP indique que la taille compressée est présente, et
+Drapeaux du bloc : \fBc\fP indique que la taille compressée est présente, et
\fBu\fP indique que la taille décompréssée est présente. Si le drapeau n'est
pas indiqué, un tiret (\fB\-\fP) est affiché à la place pour que la longueur de
la chaîne reste fixe. De nouveaux drapeaux pourraient être ajoutés à la fin
@@ -1375,7 +1390,7 @@ nécessaires pour la décompression sont stockées dans les en\-têtes \fB.xz\fP
.RE
.PD
.PP
-Les colonnes des lignes \fBsummary\fP\ :
+Les colonnes des lignes \fBsummary\fP :
.PD 0
.RS
.IP 2. 4
@@ -1391,7 +1406,7 @@ Version minimale de \fBxz\fP nécessaire pour décompresser le fichier.
.RE
.PD
.PP
-Les colonnes de la ligne \fBtotals\fP\ :
+Les colonnes de la ligne \fBtotals\fP :
.PD 0
.RS
.IP 2. 4
@@ -1416,7 +1431,7 @@ sur les lignes \fBfile\fP.
.RE
.PP
Si \fB\-\-verbose\fP a été indiqué deux fois, des colonnes supplémentaires sont
-incluses sur la ligne \fBtotals\fP\ :
+incluses sur la ligne \fBtotals\fP :
.PD 0
.RS
.IP 10. 4
@@ -1436,6 +1451,85 @@ Les versions futures pourront ajouter de nouveaux types de lignes et de
nouvelles colonnes pourront être ajoutées aux types de lignes existants,
mais les colonnes existantes ne seront pas modifiées.
.
+.SS "Filters help"
+\fBxz \-\-robot \-\-filters\-help\fP prints the supported filters in the following
+format:
+.PP
+\fIfilter\fP\fB:\fP\fIoption\fP\fB=<\fP\fIvalue\fP\fB>,\fP\fIoption\fP\fB=<\fP\fIvalue\fP\fB>\fP...
+.TP
+\fIfilter\fP
+Name of the filter
+.TP
+\fIoption\fP
+Name of a filter specific option
+.TP
+\fIvalue\fP
+Numeric \fIvalue\fP ranges appear as \fB<\fP\fImin\fP\fB\-\fP\fImax\fP\fB>\fP. String
+\fIvalue\fP choices are shown within \fB< >\fP and separated by a \fB|\fP
+character.
+.PP
+Each filter is printed on its own line.
+.
+.SS "Information de limite de mémoire"
+\fBxz \-\-robot \-\-info\-memory\fP prints a single line with multiple tab\-separated
+columns:
+.IP 1. 4
+Total amount of physical memory (RAM) in bytes.
+.IP 2. 4
+Memory usage limit for compression in bytes (\fB\-\-memlimit\-compress\fP). A
+special value of \fB0\fP indicates the default setting which for
+single\-threaded mode is the same as no limit.
+.IP 3. 4
+Memory usage limit for decompression in bytes (\fB\-\-memlimit\-decompress\fP). A
+special value of \fB0\fP indicates the default setting which for
+single\-threaded mode is the same as no limit.
+.IP 4. 4
+Since \fBxz\fP 5.3.4alpha: Memory usage for multi\-threaded decompression in
+bytes (\fB\-\-memlimit\-mt\-decompress\fP). This is never zero because a
+system\-specific default value shown in the column 5 is used if no limit has
+been specified explicitly. This is also never greater than the value in the
+column 3 even if a larger value has been specified with
+\fB\-\-memlimit\-mt\-decompress\fP.
+.IP 5. 4
+Since \fBxz\fP 5.3.4alpha: A system\-specific default memory usage limit that is
+used to limit the number of threads when compressing with an automatic
+number of threads (\fB\-\-threads=0\fP) and no memory usage limit has been
+specified (\fB\-\-memlimit\-compress\fP). This is also used as the default value
+for \fB\-\-memlimit\-mt\-decompress\fP.
+.IP 6. 4
+Since \fBxz\fP 5.3.4alpha: Number of available processor threads.
+.PP
+Dans le futur, la sortie de \fBxz \-\-robot \-\-info\-memory\fP pourrait avoir plus
+de colonnes, mais jamais plus qu'une ligne unique.
+.
+.SS Version
+\fBxz \-\-robot \-\-version\fP prints the version number of \fBxz\fP and liblzma in
+the following format:
+.PP
+\fBXZ_VERSION=\fP\fIXYYYZZZS\fP
+.br
+\fBLIBLZMA_VERSION=\fP\fIXYYYZZZS\fP
+.TP
+\fIX\fP
+Version majeure.
+.TP
+\fIYYY\fP
+Version mineure. Les numéros pairs sont stables. Les numéros impairs sont
+des versions alpha ou beta.
+.TP
+\fIZZZ\fP
+Niveau de correctif pour les options stables ou juste un compteur pour les
+options de développement.
+.TP
+\fIS\fP
+Stabilité. 0 est alpha, 1 est bêta et 2 est stable. \fIS\fP devrait toujours
+être 2 quand \fIYYY\fP est pair.
+.PP
+\fIXYYYZZZS\fP sont identiques sur les deux lignes si \fBxz\fP et liblzma sont
+issus de la même version d'utilitaires XZ.
+.PP
+Exemples : 4.999.9beta est \fB49990091\fP et 5.0.0 est \fB50000002\fP.
+.
.SH "STATUT DE SORTIE"
.TP
\fB0\fP
@@ -1455,7 +1549,7 @@ l'erreur standard n'affectent pas le statut de sortie.
\fBxz\fP analyse les listes d'options séparées par des espaces à partir des
variables d'environnement \fBXZ_DEFAULTS\fP et \fBXZ_OPT\fP, dans cet ordre, avant
d'analyser les options de la ligne de commandes. Remarquez que seules les
-options sont analysées depuis l'environnement des variables\ ; toutes les
+options sont analysées depuis l'environnement des variables ; toutes les
non\-options sont ignorées silencieusement. L'analyse est faite avec
\fBgetopt_long\fP(3) qui est aussi utilisé pour les arguments de la ligne de
commandes.
@@ -1476,7 +1570,7 @@ run by a script or tool, for example, GNU \fBtar\fP(1):
.RS
.PP
.nf
-\f(CWXZ_OPT=\-2v tar caf foo.tar.xz foo\fP
+\f(CRXZ_OPT=\-2v tar caf foo.tar.xz foo\fR
.fi
.RE
.RE
@@ -1489,7 +1583,8 @@ use something like this:
.RS
.PP
.nf
-\f(CWXZ_OPT=${XZ_OPT\-"\-7e"} export XZ_OPT\fP
+\f(CRXZ_OPT=${XZ_OPT\-"\-7e"}
+export XZ_OPT\fR
.fi
.RE
.RE
@@ -1497,7 +1592,7 @@ use something like this:
.SH "Compatibilité des utilitaires LZMA"
La syntaxe de la ligne de commande de \fBxz\fP est quasimment un sur\-ensemble
de \fBlzma\fP, \fBunlzma\fP et \fBlzcat\fP comme ils sont trouvés dans les
-utilitaires LZMA\ 4.32.x . Dans la pluspart des cas, il est possible de
+utilitaires LZMA 4.32.x . Dans la pluspart des cas, il est possible de
remplacer les outils LZMA par les outils XZ sans casser les scripts
existants. Il existe cependant certaines incompatibilités qui peuvent
parfois poser des problèmes.
@@ -1531,7 +1626,7 @@ Niveau;xz;Utilitaires LZMA
Les différences de tailles des dictionnaires affectent aussi l'utilisation
de la mémoire du compresseur, mais il y a quelques autres différences entre
les outils LZMA et les outils XZ, qui rendent la différence encore plus
-grande\ :
+grande :
.RS
.PP
.TS
@@ -1554,7 +1649,7 @@ Niveau;xz;Utilitaires LZMA 4.32.x
.PP
Le niveau de préréglage par défaut dans les outils LZMA est \fB\-7\fP alors que
pour les outils XZ c'est \fB\-6\fP, les deux utilisent ainsi un dictionnaire de
-8\ Mio par défaut.
+8 Mio par défaut.
.
.SS "Fichiers .lzma en flux ou non"
The uncompressed size of the file can be stored in the \fB.lzma\fP header.
@@ -1575,21 +1670,21 @@ heurtez à ce problème, vous devez utiliser les utilitaires LZMA ou LZMA SDK
pour créer des fichiers \fB.lzma\fP avec une taille non compressée connue.
.
.SS "Fichiers .lzma non pris en charge"
-Le format \fB.lzma\fP autorise des valeurs \fIlc\fP jusqu'à\ 8, et des valeurs
-\fIlp\fP jusqu'à\ 4. Les outils LZMA peuvent décompresser des fichiers avec tous
+Le format \fB.lzma\fP autorise des valeurs \fIlc\fP jusqu'à 8, et des valeurs
+\fIlp\fP jusqu'à 4. Les outils LZMA peuvent décompresser des fichiers avec tous
les \fIlc\fP et \fIlp\fP, mais créez toujours les fichiers avec \fBlc=3\fP et
\fBlp=0\fP. Créer des fichiers avec d'autres valeurs \fIlc\fP et \fIlp\fP est
possible avec \fBxz\fP et avec LZMA SDK.
.PP
L'implémentation du filtre LZMA1 dans liblzma nécessite que la somme de
-\fIlc\fP et \fIlp\fP soit inférieure ou égale à\ 4. Ainsi, les fichiers \fB.lzma\fP
+\fIlc\fP et \fIlp\fP soit inférieure ou égale à 4. Ainsi, les fichiers \fB.lzma\fP
qui excèdent cette limitation ne peuvent pas être décompressés avec \fBxz\fP.
.PP
Les outils LZMA créent seulement des fichiers \fB.lzma\fP qui ont une taille de
-dictionnaire de 2^\fIn\fP (une puissance de\ 2) mais acceptent les fichiers avec
+dictionnaire de 2^\fIn\fP (une puissance de 2) mais acceptent les fichiers avec
toutes les tailles de dictionnaire. Libzlma n'accepte que les fichiers
\&\fB.lzma\fP qui ont une taille dictionnaire de 2^\fIn\fP ou
-2^\fIn\fP\ +\ 2^(\fIn\fP\-1). Cela afin de diminuer les faux positifs lors de la
+2^\fIn\fP + 2^(\fIn\fP\-1). Cela afin de diminuer les faux positifs lors de la
détection des fichiers \fB.lzma\fP.
.PP
Ces limitations ne devraient pas poser problème en pratique, car
@@ -1626,7 +1721,7 @@ l'implémentation est gelée pour garantir la stabilité de la sortie rsyncable
à travers les versions de xz.
.
.SS "Décompresseurs .xz embarqués"
-Les implémentations de décompresseur embarqué comme XZ\ Embedded ne gèrent
+Les implémentations de décompresseur embarqué comme XZ Embedded ne gèrent
pas nécessairement les fichiers créés avec d'autres types de \fIvérification\fP
d'intégrité que \fBnone\fP et \fBCRC32\fP. Comme la valeur par défaut est
\fB\-\-check=crc64\fP, vous devez utiliser \fB\-\-check=none\fP ou \fB\-\-check=crc32\fP
@@ -1645,20 +1740,20 @@ de départ par défaut.
.SS Bases
Compresser le fichier \fItoto\fP en \fItoto.xz\fP en utilisant le niveau de
compression par défaut (\fB\-6\fP) et supprimer \fItoto\fP si la compression
-réussit\ :
+réussit :
.RS
.PP
.nf
-\f(CWxz toto\fP
+\f(CRxz foo\fR
.fi
.RE
.PP
Décompresser \fIbidule.xz\fP en \fIbidule\fP et ne pas supprimer \fIbidule.xz\fP même
-si la compression réussit\ :
+si la compression réussit :
.RS
.PP
.nf
-\f(CWxz \-dk bidule.xz\fP
+\f(CRxz \-dk bar.xz\fR
.fi
.RE
.PP
@@ -1668,33 +1763,34 @@ decompression (48\ MiB and 5\ MiB, respectively):
.RS
.PP
.nf
-\f(CWtar cf \- truc | xz \-4e > truc.tar.xz\fP
+\f(CRtar cf \- baz | xz \-4e > baz.tar.xz\fR
.fi
.RE
.PP
Un mélange de fichiers compressés et non compressés peuvent être
-décompressés vers la sortie standard avec une simple commande\ :
+décompressés vers la sortie standard avec une simple commande :
.RS
.PP
.nf
-\f(CWxz \-dcf a.txt b.txt.xz c.txt d.txt.lzma > abcd.txt\fP
+\f(CRxz \-dcf a.txt b.txt.xz c.txt d.txt.lzma > abcd.txt\fR
.fi
.RE
.
.SS "Compression en parallèle de plusieurs fichiers"
Sur GNU et *BSD, \fBfind\fP(1) et \fBxargs\fP(1) peuvent être utilisés pour mettre
-en parallèle la compression de plusieurs fichiers\ :
+en parallèle la compression de plusieurs fichiers :
.RS
.PP
.nf
-\f(CWfind . \-type f \e! \-name '*.xz' \-print0 \e | xargs \-0r \-P4 \-n16 xz \-T1\fP
+\f(CRfind . \-type f \e! \-name '*.xz' \-print0 \e
+ | xargs \-0r \-P4 \-n16 xz \-T1\fR
.fi
.RE
.PP
L'option \fBP\fP passée à \fBxargs\fP(1) fixe le nombre de processus \fBxz\fP en
parallèles. La meilleure valeur pour l'option \fBn\fP dépend du nombre de
fichiers à compresser. S\-il n'y a que quelques fichiers, la valeur sera
-probablement\ 1\ ; avec des dizaines de milliers de fichiers, 100 ou même plus
+probablement 1 ; avec des dizaines de milliers de fichiers, 100 ou même plus
serait approprié pour réduire le nombre de processus \fBxz\fP que \fBxargs\fP(1)
créera éventuellement.
.PP
@@ -1703,32 +1799,41 @@ L'option \fB\-T1\fP de \fBxz\fP est là pour le forcer en mode mono\-thread, car
.
.SS "Mode robot"
Calculer combien d'octets ont été économisés au total après avoir compressé
-plusieurs fichiers\ :
+plusieurs fichiers :
.RS
.PP
.nf
-\f(CWxz \-\-robot \-\-list *.xz | awk '/^totals/{print $5\-$4}'\fP
+\f(CRxz \-\-robot \-\-list *.xz | awk '/^totals/{print $5\-$4}'\fR
.fi
.RE
.PP
Un script peut vouloir savoir qu'il utilise une version suffisamment récente
de \fBxz\fP. Le script \fBsh\fP(1) suivant vérifie que le numéro de version de
l'outil \fBxz\fP soit au minimum 5.0.0. Cette méthode est compatible avec les
-vieilles versions bêta, qui ne gèrent pas l'option \fB\-\-robot\fP\ :
+vieilles versions bêta, qui ne gèrent pas l'option \fB\-\-robot\fP :
.RS
.PP
.nf
-\f(CWif ! eval "$(xz \-\-robot \-\-version 2> /dev/null)" || [ "$XZ_VERSION" \-lt 50000002 ]; then echo "Votre version de xz est trop ancienne." fi unset XZ_VERSION LIBLZMA_VERSION\fP
+\f(CRif ! eval "$(xz \-\-robot \-\-version 2> /dev/null)" ||
+ [ "$XZ_VERSION" \-lt 50000002 ]; then
+ echo "Your xz is too old."
+fi
+unset XZ_VERSION LIBLZMA_VERSION\fR
.fi
.RE
.PP
Régler une limite d'utilisation de la mémoire pour la décompression en
utilisant \fBXZ_OPT\fP, mais si une limite a déjà été définie, ne pas
-l'augmenter\ :
+l'augmenter :
.RS
.PP
.nf
-\f(CWNEWLIM=$((123 << 20))\ \ # 123 MiB OLDLIM=$(xz \-\-robot \-\-info\-memory | cut \-f3) if [ $OLDLIM \-eq 0 \-o $OLDLIM \-gt $NEWLIM ]; then XZ_OPT="$XZ_OPT \-\-memlimit\-decompress=$NEWLIM" export XZ_OPT fi\fP
+\f(CRNEWLIM=$((123 << 20))\ \ # 123 MiB
+OLDLIM=$(xz \-\-robot \-\-info\-memory | cut \-f3)
+if [ $OLDLIM \-eq 0 \-o $OLDLIM \-gt $NEWLIM ]; then
+ XZ_OPT="$XZ_OPT \-\-memlimit\-decompress=$NEWLIM"
+ export XZ_OPT
+fi\fR
.fi
.RE
.
@@ -1741,7 +1846,7 @@ potentiellement utiles.
Les colonnes CompCPU des tableaux des descriptions des options \fB\-0\fP à \fB\-9\fP
et \fB\-\-extreme\fP sont utiles lors de la personnalisation des préréglages
LZMA2. Voici les parties pertinentes recueillies à partir de ces deux
-tableaux\ :
+tableaux :
.RS
.PP
.TS
@@ -1767,7 +1872,7 @@ modified to use a bigger dictionary:
.RS
.PP
.nf
-\f(CWxz \-\-lzma2=preset=1,dict=32MiB toto.tar\fP
+\f(CRxz \-\-lzma2=preset=1,dict=32MiB foo.tar\fR
.fi
.RE
.PP
@@ -1784,11 +1889,11 @@ fichiers consécutifs.
Si une utilisation de la mémoire élevée pour la compression et décompression
convient, et que le fichier à compresser a une taille de plusieurs centaines
de megaoctets, il peut être utile d'utiliser un plus gros dictionnaire que
-celui fourni par \fBxz\-9\fP (64 Mio)\ :
+celui fourni par \fBxz\-9\fP (64 Mio) :
.RS
.PP
.nf
-\f(CWxz \-vv \-\-lzma2=dict=192MiB gros_toto.tar\fP
+\f(CRxz \-vv \-\-lzma2=dict=192MiB big_foo.tar\fR
.fi
.RE
.PP
@@ -1806,7 +1911,7 @@ resulting file can be decompressed with XZ Embedded (that's why there is
.RS
.PP
.nf
-\f(CWxz \-\-check=crc32 \-\-lzma2=preset=6e,dict=64KiB toto\fP
+\f(CRxz \-\-check=crc32 \-\-lzma2=preset=6e,dict=64KiB foo\fR
.fi
.RE
.PP
@@ -1819,7 +1924,7 @@ like the following might give slightly (like 0.1\ %) smaller file than \fBxz \-6
.RS
.PP
.nf
-\f(CWxz \-\-lzma2=preset=6e,pb=0,lc=4 code_source.tar\fP
+\f(CRxz \-\-lzma2=preset=6e,pb=0,lc=4 source_code.tar\fR
.fi
.RE
.PP
@@ -1829,7 +1934,7 @@ library using the x86 BCJ filter:
.RS
.PP
.nf
-\f(CWxz \-\-x86 \-\-lzma2 libtoto.so\fP
+\f(CRxz \-\-x86 \-\-lzma2 libfoo.so\fR
.fi
.RE
.PP
@@ -1851,7 +1956,7 @@ accommodate the three\-byte alignment:
.RS
.PP
.nf
-\f(CWxz \-\-delta=dist=3 \-\-lzma2=pb=0 toto.tiff\fP
+\f(CRxz \-\-delta=dist=3 \-\-lzma2=pb=0 foo.tiff\fR
.fi
.RE
.PP
@@ -1863,8 +1968,8 @@ the same number of bytes per pixel.
\fBxzdec\fP(1), \fBxzdiff\fP(1), \fBxzgrep\fP(1), \fBxzless\fP(1), \fBxzmore\fP(1),
\fBgzip\fP(1), \fBbzip2\fP(1), \fB7z\fP(1)
.PP
-XZ Utilitaires: <https://tukaani.org/xz/>
+XZ Utils: <https://tukaani.org/xz/>
.br
-XZ Embarqué: <https://tukaani.org/xz/embedded.html>
+XZ Embedded: <https://tukaani.org/xz/embedded.html>
.br
LZMA SDK: <https://7\-zip.org/sdk.html>
diff --git a/po4a/man/fr/xzdec.1 b/po4a/man/fr/xzdec.1
index 88742d0..cd31d6c 100644
--- a/po4a/man/fr/xzdec.1
+++ b/po4a/man/fr/xzdec.1
@@ -1,15 +1,18 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Author: Lasse Collin
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
+.\" french translation of XZ Utils man
+.\" Copyright (C) 2021 Debian French l10n team <debian-l10n-french@lists.debian.org>
+.\" Translator
+.\" bubu <bubub@no-log.org>, 2021.
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZDEC 1 19\-04\-2017 Tukaani "Utilitaires XZ"
+.TH XZDEC 1 2024\-04\-08 Tukaani "Utilitaires XZ"
.SH NOM
xzdec, lzmadec \- Small .xz et .lzma decompresseurs
.SH SYNOPSIS
@@ -28,7 +31,7 @@ identique à \fBxzdec\fP, sauf que \fBlzmadec\fP prend en charge les fichiers
Pour réduire la taille de l'exécutable, \fBxzdec\fP ne prend en charge ni le
multithreading ni la localisation et ne lit pas les options des variables
d'environnement \fBXZ_DEFAULTS\fP et \fBXZ_OPT\fP. \fBxzdec\fP ne gère pas
-l'affichage d'information sur la progression du traitement\ : envoyer
+l'affichage d'information sur la progression du traitement : envoyer
\fBSIGINFO\fP à \fBxzdec\fP ne fait rien, mais envoyer \fBSIGUSR1\fP termine le
processus au lieu d'afficher de l'information sur la progression.
.SH OPTIONS
@@ -52,7 +55,7 @@ erreurs.
.TP
\fB\-Q\fP, \fB\-\-no\-warn\fP
Ignoré pour la compatibilité avec \fBxz\fP(1), \fBxzdec\fP n'utilise jamais le
-satut de sortie\ 2.
+satut de sortie 2.
.TP
\fB\-h\fP, \fB\-\-help\fP
Afficher un message d'aide et quitter.
@@ -68,7 +71,7 @@ Tout s'est bien passé.
Une erreur est survenue.
.PP
A la différence de \fBxz\fP(1),\fBxzdec\fP n'a pas de messages d'avertissement, et
-donc le statut de sortie\ 2 n'est pas utilisé par \fBxzdec\fP.
+donc le statut de sortie 2 n'est pas utilisé par \fBxzdec\fP.
.SH NOTES
Utilisez \fBxz\fP(1) au lieu de \fBxzdec\fP ou \fBlzmadec\fP pour un usage normal de
tous les jours. \fBxzdec\fP ou \fBlzmadec\fP ne sont utiles que pour les
@@ -80,8 +83,8 @@ peut être encore réduite en abandonnant des fonctionnalités de liblzma au
moment de la compilation, mais cela ne devrait pas être fait pour des
exécutables distribués sur des systèmes d'exploitation classique non
embarqués. Si vous avez besoin d'un décompresseur vraiment petit, pensez à
-utiliser XZ\ Embedded.
+utiliser XZ Embedded.
.SH "VOIR AUSSI"
\fBxz\fP(1)
.PP
-XZ Embarqué: <https://tukaani.org/xz/embedded.html>
+XZ Embedded: <https://tukaani.org/xz/embedded.html>
diff --git a/po4a/man/fr/xzdiff.1 b/po4a/man/fr/xzdiff.1
deleted file mode 100644
index 77a2ddf..0000000
--- a/po4a/man/fr/xzdiff.1
+++ /dev/null
@@ -1,43 +0,0 @@
-.\"
-.\" Original zdiff.1 for gzip: Jean-loup Gailly
-.\"
-.\" Modifications for XZ Utils: Lasse Collin
-.\" Andrew Dudman
-.\"
-.\" License: GNU GPLv2+
-.\"
-.\"*******************************************************************
-.\"
-.\" This file was generated with po4a. Translate the source file.
-.\"
-.\"*******************************************************************
-.TH XZDIFF 1 2021\-06\-04 Tukaani "Utilitaires XZ"
-.SH NOM
-xzcmp, xzdiff, lzcmp, lzdiff \- Comparer des fichiers compressés.
-.SH SYNOPSIS
-\fBxzcmp\fP [\fIcmp_options\fP] \fIfichier1\fP [\fIfichier2\fP]
-.br
-\fBxzdiff\fP [\fIdiff_options\fP] \fIfichier1\fP [\fIfichier2\fP]
-.br
-\fBlzcmp\fP [\fIcmp_options\fP] \fIfichier1\fP [\fIfichier2\fP]
-.br
-\fBlzdiff\fP [\fIdiff_options\fP] \fIfichier1\fP [\fIfichier2\fP]
-.SH DESCRIPTION
-\fBxzcmp\fP and \fBxzdiff\fP invoke \fBcmp\fP(1) or \fBdiff\fP(1) on files compressed
-with \fBxz\fP(1), \fBlzma\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1), or
-\fBzstd\fP(1). All options specified are passed directly to \fBcmp\fP(1) or
-\fBdiff\fP(1). If only one file is specified, then the files compared are
-\fIfile1\fP (which must have a suffix of a supported compression format) and
-\fIfile1\fP from which the compression format suffix has been stripped. If two
-files are specified, then they are uncompressed if necessary and fed to
-\fBcmp\fP(1) or \fBdiff\fP(1). The exit status from \fBcmp\fP(1) or \fBdiff\fP(1) is
-preserved unless a decompression error occurs; then exit status is 2.
-.PP
-Les noms \fBlzcmp\fP et \fBlzdiff\fP sont fournis pour des besoins de
-rétrocompatibilité avec les Utilitaires LZMA.
-.SH "VOIR AUSSI"
-\fBcmp\fP(1), \fBdiff\fP(1), \fBxz\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1),
-\fBzstd\fP(1), \fBzdiff\fP(1)
-.SH BOGUES
-Les messages des programmes \fBcmp\fP(1) ou \fBdiff\fP(1) se réfèrent à des noms
-de fichiers temporaires et non à ceux spécifiés.
diff --git a/po4a/man/fr/xzless.1 b/po4a/man/fr/xzless.1
index 58db86a..8ba9307 100644
--- a/po4a/man/fr/xzless.1
+++ b/po4a/man/fr/xzless.1
@@ -1,9 +1,12 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Authors: Andrew Dudman
.\" Lasse Collin
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
+.\" french translation of XZ Utils man
+.\" Copyright (C) 2021 Debian French l10n team <debian-l10n-french@lists.debian.org>
+.\" Translator
+.\" bubu <bubub@no-log.org>, 2021.
.\"
.\" (Note that this file is not based on gzip's zless.1.)
.\"
@@ -12,7 +15,7 @@
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZLESS 1 27\-09\-2010 Tukaani "Utilitaires XZ"
+.TH XZLESS 1 2024\-02\-12 Tukaani "Utilitaires XZ"
.SH NOM
xzless, lzless \- Voir le contenu des fichiers (texte) compressés xz ou lzma
.SH SYNOPSIS
@@ -20,10 +23,10 @@ xzless, lzless \- Voir le contenu des fichiers (texte) compressés xz ou lzma
.br
\fBlzless\fP [\fIfichier\fP...]
.SH DESCRIPTION
-\fBxzless\fP est un filtre qui affiche le contenu de fichiers compressés dans
-un terminal. Cela fonctionne avec les fichiers compressés avec \fBxz\fP(1) ou
-\fBlzma\fP(1). Si aucun \fIfichier\fP n'est donné, \fBxzless\fP lit depuis l'entrée
-standard.
+\fBxzless\fP is a filter that displays text from compressed files to a
+terminal. Files supported by \fBxz\fP(1) are decompressed; other files are
+assumed to be in uncompressed form already. If no \fIfiles\fP are given,
+\fBxzless\fP reads from standard input.
.PP
\fBxzless\fP utilise \fBless\fP(1) pour afficher sa sortie. Contrairement à
\fBxzmore\fP, son choix d'afficheur ne peut pas être modifié en indiquant une
diff --git a/po4a/man/fr/xzmore.1 b/po4a/man/fr/xzmore.1
deleted file mode 100644
index 305d705..0000000
--- a/po4a/man/fr/xzmore.1
+++ /dev/null
@@ -1,41 +0,0 @@
-.\"
-.\" Original zdiff.1 for gzip: Jean-loup Gailly
-.\" Modifications for XZ Utils: Lasse Collin
-.\"
-.\" License: GNU GPLv2+
-.\"
-.\"*******************************************************************
-.\"
-.\" This file was generated with po4a. Translate the source file.
-.\"
-.\"*******************************************************************
-.TH XZMORE 1 30\-06\-2013 Tukaani "Utilitaires XZ"
-.SH NOM
-xzmore, lzmore \- Voir le contenu des fichiers (texte) compressés xz ou lzma
-.SH SYNOPSIS
-\fBxzmore\fP [\fIfichier...\fP]
-.br
-\fBlzmore\fP [\fIfichier...\fP]
-.SH DESCRIPTION
-\fBxzmore\fP est un filtre qui permet d'examiner le contenu des fichiers texte
-compressés \fBxz\fP(1) ou \fBlzma\fP(1), une page d'écran à la fois, sur un
-terminal écran.
-.PP
-Pour utiliser un afficheur autre que \fBmore\fP, l'afficheur par défaut,
-définissez la variable d'environnement \fBPAGER\fP avec le nom du programme
-souhaité. Le nom \fBlzmore\fP est fourni pour la rétrocompatibilité avec les
-utilitaires LZMA.
-.TP
-\fBe\fP ou \fBq\fP
-Lorsque l'invite \-\-More\-\-(prochain fichier\ : \fIfichier\fP) est affiché, cette
-commande force \fBxzmore\fP à quitter.
-.TP
-\fBs\fP
-Lorsque l'invite \-\-More\-\-(prochain fichier\ : \fIfichier\fP) est affiché, cette
-commande force \fBxzmore\fP à ignorer le prochain fichier et continuer.
-.PP
-Pour une liste des commandes clavier prises en charge lors de la lecture du
-contenu d'un fichier, référez vous au manuel de l'afficheur (pager) que vous
-utilisez, habituellement \fBmore\fP(1).
-.SH "VOIR AUSSI"
-\fBmore\fP(1), \fBxz\fP(1), \fBxzless\fP(1), \fBzmore\fP(1)
diff --git a/po4a/man/ko/lzmainfo.1 b/po4a/man/ko/lzmainfo.1
index 0faf5e0..718ad0a 100644
--- a/po4a/man/ko/lzmainfo.1
+++ b/po4a/man/ko/lzmainfo.1
@@ -1,8 +1,9 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Author: Lasse Collin
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
+.\" Korean translation for the xz-man
+.\" Seong-ho Cho <darkcircle.0426@gmail.com>, 2023, 2024.
.\"
.\"*******************************************************************
.\"
diff --git a/po4a/man/ko/xz.1 b/po4a/man/ko/xz.1
index d93c199..db07f82 100644
--- a/po4a/man/ko/xz.1
+++ b/po4a/man/ko/xz.1
@@ -1,23 +1,24 @@
'\" t
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Authors: Lasse Collin
.\" Jia Tan
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
+.\" Korean translation for the xz-man
+.\" Seong-ho Cho <darkcircle.0426@gmail.com>, 2023, 2024.
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZ 1 2023\-07\-17 Tukaani "XZ 유틸리티"
+.TH XZ 1 2024\-04\-08 Tukaani "XZ 유틸리티"
.
.SH 이름
xz, unxz, xzcat, lzma, unlzma, lzcat \- .xz 파일과 .lzma 파일을 압축 또는 압축 해제합니다
.
.SH 요약
-\fBxz\fP [\f\fI옵션\fP...\fP] [\fI<파일>...\fP]
+\fBxz\fP [\fI<옵션>...\fP] [\fI<파일>...\fP]
.
.SH "명령 별칭"
\fBunxz\fP 명령은 \fBxz \-\-decompress\fP 명령과 동일합니다.
@@ -172,7 +173,7 @@ setgid, 끈적이 비트 세트를 설정한 상태라도 압축하거나 압축
대상 파일이 이미 있으면, 압축 또는 압축 해제 전 삭제합니다.
.IP \(bu 3
입력 파일이 일반 파일을 참조하는 심볼릭 링크나 하나 이상의 하드 링크, 내지는 setuid, setgid, 끈적이 비트 세트를 설정한
-상태라도 압축 또는 압축 해제를 진행합니다. setuid, setgid, 끈적이 비트는 대상 파일에 복사하지 않습니다
+상태라도 압축 또는 압축 해제를 진행합니다. setuid, setgid, 끈적이 비트는 대상 파일에 복사하지 않습니다.
.IP \(bu 3
\fB\-\-decompress\fP \fB\-\-stdout\fP 옵션을 같이 사용하는 상황에서 \fBxz\fP 명령이 원본 파일의 형식을 알아내지 못할 때,
원본 파일의 사본을 표준 출력으로 보냅니다. 이렇게 하면 \fBxzcat\fP \fB\-\-force\fP 명령을 \fBxz\fP 명령으로 압축하지 않은
@@ -353,12 +354,15 @@ CompCPU는 \fB\-6\fP ... \fB\-9\fP 수준값과 동일한데, 고수준 값은
압축율은 가능한 한 더 좋아집니다. \fB\-\-extreme\fP을 참고하십시오.
.IP \(bu 3
CompMem은 단일\-스레드 모드에서 필요한 압축 프로그램의 메모리 점유 용량입니다. \fBxz\fP 버전에 따라 다를 수 있습니다.
-앞으로 도입할 다중\-스레드 모드의 메모리 사용량은 단일\-스레드 모드에서의 그것보다는 훨씬 늘어납니다.
.IP \(bu 3
DecMem은 압축 해제 프로그램의 메모리 점유용량입니다. 이는 곧, 압축 해제 프로그램에서 필요한 메모리 사용량을 압축 설정에서
결정한다는 의미가 들어있습니다. 정확한 압축 해제 프로그램의 메모리 사용량은 LZMA2 딕셔너리 크기 보다는 조금 많지만 테이블의 값은
MiB 용량으로 완전히 반올림한 값입니다.
.RE
+.IP ""
+다중\-스레드 모드에서 필요한 메모리 용량은 단일\-스레드 모드보단 약간 더 많습니다. \fB\-\-block\-size\fP 기본값에 따라, 각
+스레드에서는 3*3*딕셔녀리_크기 + 압축시_메모리용량 또는 압축_해제시_메모리용량 정도가 필요합니다. 예를 들면, 스레드 넷에 사전
+설정 옵션 \fB\-6\fP을 사용한다면, 660\(en670 MiB 메모리 용량이 필요합니다.
.TP
\fB\-e\fP, \fB\-\-extreme\fP
기대하는 만큼의 좀 더 나은 압축율을 확보하려 선택한 압축 사전 설정 수준의 느린 변형 옵션을 사용하지만, 재수 없는 와중에 골로 가는
@@ -406,29 +410,50 @@ Preset;DictSize;CompCPU;CompMem;DecMem
다중\-스레드 모드에서 기본 블록 크기를 지정할 때 사용하지만, 단일\-스레드 모드에서도 사용할 수 있습니다.
.IP ""
다중\-스레드 모드에서는 약 3배 용량의 \fI<크기>\fP 바이트만큼 각 스레드 별로 입출력 버퍼링용 공간을 할당합니다. 기본
-\fI<크기>\fP는 LZMA2 딕셔너리 크기 또는 1MiB 중 가장 큰 쪽의 세 배입니다. 보통 바람직한 값으로 LZMA2
-딕셔너리 크기나 최소한 1MiB의 2\(en4배입니다. LZMA2 딕셔너리 크기보다 작은 \fI<크기>\fP 는 램의 소모적
-사용 공간으로 할당하는데 LZMA2 딕셔너리 버퍼를 할당한 용량 크기 전체를 다 사용하지 않기 때문입니다. 블록 크기는 블록 헤더에
-저장하며, 블록 헤더는 \fBxz\fP 차기 버전에서 다중\-스레드 압축 해제시 활용할 예정입니다.
+\fI<크기>\fP는 LZMA2 딕셔너리 크기 또는 1MiB 중 가장 큰 쪽의 세 배입니다. 보통 적절한 값으로 LZMA2
+딕셔너리 크기 또는 최소한 1MiB 용량의 2\(en4배입니다. LZMA2 딕셔너리 크기보다 작은 \fI<크기>\fP는 램의
+소모적 사용 공간으로 할당하는데 LZMA2 딕셔너리 버퍼를 할당한 용량 크기 전체를 다 사용하지 않기 때문입니다. 다중\-스레드 모드에서
+블록 크기는 블록 헤더에 저장하며, 이 크기 정보는 다중\-스레드 압축 해제시 필요합니다.
.IP ""
단일\-스레드 모드에서는 기본적으로 블록 쪼개기를 하지 않습니다. 이 옵션을 설정한다고 해서 메모리 사용에 영향을 주지는 않습니다.
블록 헤더에 크기 정보를 저장하지 않기 때문에 단일\-스레드 모드에서 만든 파일은 다중\-스레드 모드에서 만든 파일과 동일하지 않습니다.
-크기 정보의 누락은 또한 \fBxz\fP 차기 버전에서 다중\-스레드 모드에서 압축 해제가 불가능함을 의미하기도 합니다.
+크기 정보의 누락은 또한 \fBxz\fP에서 다중\-스레드 모드로 압축 해제를 진행할 수 없음을 의미하기도 합니다.
.TP
-\fB\-\-block\-list=\fP\fI<크기>\fP
-\&\fB.xz\fP 형식으로 압축할 때, 압축하지 않은 데이터에 주어진 처리 시간 간격 이후에 새 블록 처리를 시작합니다.
+\fB\-\-block\-list=\fP\fI<항목>\fP
+\&\fB.xz\fP 형식으로 압축할 때, 압축하지 않은 데이터로 부터 일정 간격 이후에 새 블록 처리를 시작합니다.
+.IP ""
+\fI<항목>\fP은 쉼표로 구분한 목록으로 지정합니다. 각 항목은 콜론 (\fB:\fP)으로 구분한 0부터 9까지의 추가 필터
+체인 번호 값으로 이루어져 있으며, 압축하지 않은 데이터의 크기 값이 필요합니다. 항목을 생략하면(둘 이상의 쉼표 연속 표기) 이전
+항목의 크기와 필터를 활용하겠다는 함축 의미를 넣을 수 있습니다.
.IP ""
-압축하지 않은 블록 \fI<크기>\fP는 쉼표로 구분한 목록으로 지정합니다. 크기 값을 생략(둘 이상의 연속 쉼표)는 이전
-블록 크기를 계속 사용하겠다는 의미입니다.
+입력 파일이 \fI<항목>\fP 크기의 합보다 크면, 마지막 항목을 파일의 끝까지 반복합니다. 특별히 \fB0\fP 값을 마지막
+값으로 사용하여 파일 나머지 부분을 단일 블록으로 인코딩해야 한다는 의미를 나타낼 수도 있습니다.
.IP ""
-입력 파일이 \fI<크기>\fP의 합보다 크면, 마지막 \fI<크기>\fP 값을 파일 마지막까지 반복해서 사용합니다.
-특별히 \fB0\fP 값을 마지막 값으로 사용하여 파일 나머지 부분을 단일 블록으로 인코딩해야 한다는 의미를 나타낼 수도 있습니다.
+\fB\-\-filters1=\fP\fI<필터>\fP \&...\& \fB\-\-filters9=\fP\fI<필터>\fP 옵션 조합으로
+각 블록별 별도 필터 체인을 지정할 수 있습니다. 이 옵션은 1\(en9번 필터 체인을 지정합니다. 필터 체인 0번은 필터 체인을
+지정하지 않았을 때와 동일한 기본 필터 체인으로 참조할 수 있습니다. 필터 체인 식별 번호는 비 압축 크기 앞에 콜론(\fB:\fP)을 붙여
+사용할 수 있습니다. 예를 들면, \fB\-\-block\-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB\fP 옵션을
+지정했을 경우 다음 규칙대로 블록을 만듭니다:
+.RS
+.IP \(bu 3
+\fB\-\-filters1\fP 필터 체인에서는 2MiB 입력을
+.IP \(bu 3
+\fB\-\-filters3\fP 필터 체인에서는 2MiB 입력을
+.IP \(bu 3
+\fB\-\-filters2\fP 필터 체인에서는 4MiB 입력을
+.IP \(bu 3
+\fB\-\-filters2\fP 필터 체인에서는 4MiB 입력을
+.IP \(bu 3
+기본 필터 체인에서는 2MiB 입력을
+.IP \(bu 3
+입력이 끝나기 전의 모든 블록에는 기본 필터 체인과 4MiB 입력을 적용합니다.
+.RE
.IP ""
-인코더 블록 크기를 초과하는 \fI<크기>\fP 값을 지정하면(스레드 모드 기본값 또는
-\fB\-\-block\-size=\fP\fI<크기>\fP 옵션으로 지정한 값), 인코더는 \fI<크기>\fP 지정 용량 범위는
-유지하면서 추가 블록을 만듭니다. 예를 들면 \fB\-\-block\-size=10MiB\fP
-\fB\-\-block\-list=5MiB,10MiB,8MiB,12MiB,24MiB\fP 옵션을 지정하고 입력 파일을 80MiB 용량으로 전달하면,
-각각 5, 10, 8, 10, 2, 10, 10, 4, 10, 10, 1 MiB 용량을 차지하는 블록 11개를 결과물로 내줍니다.
+인코더 블록 크기를 초과하는 크기 값을 지정하면(스레드 모드 기본값 또는 \fB\-\-block\-size=\fP\fI<크기>\fP
+옵션으로 지정한 값), 인코더는 \fI<크기>\fP 지정 용량 범위는 유지하면서 추가 블록을 만듭니다. 예를 들면
+\fB\-\-block\-size=10MiB\fP \fB\-\-block\-list=5MiB,10MiB,8MiB,12MiB,24MiB\fP 옵션을 지정하고
+입력 파일을 80MiB 용량으로 전달하면, 각각 5, 10, 8, 10, 2, 10, 10, 4, 10, 10, 1 MiB 용량을
+차지하는 블록 11개를 결과물로 내줍니다.
.IP ""
다중\-스레드 모드에서 블록 크기는 블록 헤더에 저장합니다. 단일\-스레드 모드에서는 저장하지 않기 때문에 인코딩 처리한 출력은
다중\-스레드 모드의 출력 결과물과는 다릅니다.
@@ -549,6 +574,8 @@ Preset;DictSize;CompCPU;CompMem;DecMem
스레드 압축 해제 방식은 여러 블록이 블록 헤더에 넣은 크기 정보와 함께 들어간 파일에만 동작합니다. 다중\-스레드 모드에서 압축한
충분히 큰 모든 파일은 이 조건에 만족하지만, 단일\-스레드 모드에서 압축한 파일은
\fB\-\-block\-size=\fP\fI<크기>\fP 옵션을 지정하더라도 조건에 만족하지 않습니다.
+.IP ""
+\fI스레드\fP 기본 값은 \fB0\fP입니다. \fBxz\fP 5.4.x 이전의 기본값은 \fB1\fP입니다.
.
.SS "개별 압축 필터 체인 설정"
개별 필터 체인은 사전 설정에 엮인 설정에 의존하는 대신 압축 설정을 세부적으로 하나하나 설정할 수 있게 합니다. 개별 필터 체인을
@@ -563,15 +590,37 @@ Preset;DictSize;CompCPU;CompMem;DecMem
필터로, 어떤 동작은 체인의 어떤 위치에든 둡니다. 필터에 따라, 이 제한은 필터 설계를 따르거나 보안 문제를 막기 위해 존재하기도
합니다.
.PP
-개별 필터 체인은 필터 체인에서 원하는 순서대로 하나 이상의 필터 옵션을 사용하여 지정합니다. 이는, 필터 옵션 순서가 중요하다는
-뜻입니다! 원시 스트림을 디코딩할 때(\fB\-\-format=raw\fP), 필터 체인은 압축할 때 지정했던 동일한 순서대로 지정합니다.
+개별 필터 체인은 두가지 방식으로 지정할 수 있습니다. \fB\-\-filters=\fP\fI<필터>\fP와
+\fB\-\-filters1=\fP\fI<필터>\fP \&...\& \fB\-\-filters9=\fP\fI<필터>\fP 옵션으로
+liblzma 필터 문자열 문법에 따라 한가지 옵션을 필터 체인 전체를 지정할 수 있습니다. 대신, 하나 이상의 개별 필터 옵션을
+원하는 필터 체인 순서대로 지정할 수도 있습니다. 이 말인 즉슨, 개별 필터 옵션의 순서가 중요하단 뜻입니다! 원시 스트림을 디코딩할
+때(\fB\-\-format=raw\fP), 압축했을 때 지정했던 필터와 같은 순서로 필터 체인을 지정해야 합니다. 전체 체인
+옵션(\fB\-\-filters=\fP\fI<필터>\fP) 보다 우선 지정한 개별 필터 또는 사전 설정 옵션은 까먹을 수도 있습니다.
+전체 체인 옵션 다음에 개별 필터를 지정할 경우 필터 체인의 동작을 무효로 합니다.
.PP
-필터는 쉼표로 구분하는 필터별 \fI<옵션>\fP이 있습니다. \fI<옵션>\fP에 추가로 입력한 쉼표는 무시합니다.
-모든 옵션 값에는 기본값이 있어, 값을 바꾸려면 지정해야합니다.
+필터는 쉼표로 구분하는 필터별 \fI<옵션>\fP이 있습니다. \fI<옵션>\fP에 추가로 입력한 쉼표는
+무시합니다. 모든 옵션 값에는 기본값이 있어, 값을 바꾸려면 지정해야합니다.
.PP
전체 필터 체인과 \fI<옵션>\fP을 보려면 \fBxz \-vv\fP (\fB\-\-verbose\fP 두 번)명령을 사용하십시오. 이
명령은 사전 설정이 사용하는 필터 체인 옵션도 볼 수 있습니다.
.TP
+\fB\-\-filters=\fP\fI<필터>\fP
+전체 필터 체인 또는 사전 설정을 단일 옵션으로 지정합니다. 각 필터는 공백 문자 또는 대시 문자 두번 입력(\fB\-\-\fP)으로
+구분합니다. 셸 명령행에서 \fI필터\fP는 따옴표로 감싸서 단일 옵션으로 해석하도록 해야 합니다. \fI옵션\fP을 표기하려면 \fB:\fP 또는
+\fB=\fP을 활용하십시오. 사전 설정 앞에 \fB\-\fP를 붙일 수 있고 0개 또는 하나 이상의 플래그를 붙일 수 있습니다. 유일하게
+지원하는 플래그는 \fB\-\-extreme\fP과 동일한 \fBe\fP입니다.
+.TP
+\fB\-\-filters1\fP=\fI<필터>\fP ... \fB\-\-filters9\fP=\fI<필터>\fP
+\fB\-\-block\-list\fP와 사용할 수 있는 추가 필터 체인을 최대 9개까지 지정합니다.
+.IP ""
+예를 들어 텍스트 파일과 실행 파일의 아카이브를 압축할 때 실행 부분에 BCJ 필터 체인을 사용하고 텍스트 부분은 LZMA2 필터를
+사용할 수 있습니다.
+.TP
+\fB\-\-filters\-help\fP
+\fB\-\-filters\fP와 \fB\-\-filters1=\fP\fI<필터>\fP \&...\&
+\fB\-\-filters9=\fP\fI<필터>\fP 옵션의 사전 설정 필터와 개별 설정 필터 체인을 지정하는 방법을 설명하는 도움말
+메시지를 출력하고 완전히 빠져나갑니다.
+.TP
\fB\-\-lzma1\fP[\fB=\fP\fI<옵션>\fP]
.PD 0
.TP
@@ -745,6 +794,8 @@ LZMA1 또는 LZMA2로 종종 압축하는 파일 형식이라고 하면 고려
\fB\-\-ia64\fP[\fB=\fP\fI<옵션>\fP]
.TP
\fB\-\-sparc\fP[\fB=\fP\fI<옵션>\fP]
+.TP
+\fB\-\-riscv\fP[\fB=\fP\fI<옵션>\fP]
.PD
브랜치/호출/점프(BCJ) 필터를 필터 체인에 추가합니다. 이 필터는 필터 체인의 비종결 필터로만 사용할 수 있습니다.
.IP ""
@@ -782,14 +833,28 @@ ARM64;4;4096 바이트 정렬이 가장 좋습니다
PowerPC;4;빅엔디안 전용
IA\-64;16;Itanium
SPARC;4;
+RISC\-V;2;
.TE
.RE
.RE
.IP ""
BCJ 필터를 사용한 데이터는 LZMA2로 보통 압축하기 때문에 LZMA2 옵션을 선택한 BCJ 필터의 정렬기준에 맞추도록 설정하면
-압축율을 좀 더 개선할 수 있습니다. 예를 들면, IA\-64 필터에서는 \fBpb=4\fP 또는 LZMA2에 대해
-\fBpb=4,lp=4,lc=0\fP (2^4=16) 값이 바람직합ㄴ디ㅏ. x86 필터는 예외로, x86 실행 파일을 압축할 경우
-LZMA2의 기본 4바이트 정렬을 따르는게 좋습니다.
+압축율을 좀 더 개선할 수 있습니다. 예를 들면:
+.RS
+.IP \(bu 3
+IA\-64 필터는 16\-바이트 정렬 방식으로 동작하기에 LZMA2 필터에 \fBpb=4,lp=4,lc=0\fP 옵션(2^4=16)을 주는게
+좋습니다.
+.IP \(bu 3
+RISC\-V 코드에는 16\-비트 압축 명령(C 확장) 적재 여부에 따라 2\-바이트 또는 4\-바이트 정렬 방식을 채택합니다. 16\-비트
+명령을 사용하면, \fBpb=2,lp=1,lc=3\fP 또는 \fBpb=1,lp=1,lc=3\fP 옵션 값 사용이 바람직합니다. 16\-비트 명령이
+없다면, \fBpb=2,lp=2,lc=2\fP 옵션 값을 활용하는게 좋습니다. "RVC"가 "Flags"행에 나타나는지 확인할 때
+\fBreadelf \-h\fP 명령을 사용할 수 있습니다.
+.IP \(bu 3
+ARM64는 항상 4\-바이트 정렬 방식을 택하기에 \fBpb=2,lp=2,lc=2\fP 옵션 값을 활용하는게 좋습니다.
+.IP \(bu 3
+x86 필터는 예외입니다. x86 실행 파일을 압축할 경우에는 보통 LZMA2 기본 옵션 값(\fBpb=2,lp=0,lc=3\fP)을 그대로
+사용하는게 좋습니다.
+.RE
.IP ""
모든 BCJ 필터는 동일한 \fI옵션\fP을 지원합니다:
.RS
@@ -878,58 +943,8 @@ LZMA2의 기본 4바이트 정렬을 따르는게 좋습니다.
.
.SH "로봇 모드"
로봇 모드는 \fB\-\-robot\fP 옵션으로 동작합니다. \fBxz\fP 출력을 다른 프로그램에서 해석하기 쉽게 해줍니다. 현재로서는
-\fB\-\-robot\fP 옵션은 \fB\-\-version\fP, \fB\-\-info\-memory\fP, \fB\-\-list\fP 옵션하고만 사용할 수 있습니다.
-앞으로는 압축 및 압축 해제 동작에 대해서도 지원합니다.
-.
-.SS 버전
-\fBxz \-\-robot \-\-version\fP 은 \fBxz\fP 와 liblzma의 버전 번호를 다음 형식으로 나타냅니다:
-.PP
-\fBXZ_VERSION=\fP\fIXYYYZZZS\fP
-.br
-\fBLIBLZMA_VERSION=\fP\fIXYYYZZZS\fP
-.TP
-\fIX\fP
-주 버전.
-.TP
-\fIYYY\fP
-부 버전. 짝수가 안정 버전입니다. 홀수는 알파 또는 베타 버전입니다.
-.TP
-\fIZZZ\fP
-안정 릴리스의 패치 수준 또는 개발 릴리스의 횟수입니다.
-.TP
-\fIS\fP
-안정도. 0은 알파 버전, 1은 베타 버전을 나타내며, 2는 안정 버전을 나타냅니다. \fIS\fP는 \fIYYY\fP 값이 짝수라 해도 항상
-2여야 합니다.
-.PP
-\fBxz\fP 명령과 liblzma이 동일한 XZ 유틸리티 릴리스에서 나왔다면 두 행의 \fIXYYYZZZS\fP 값은 같습니다.
-.PP
-예제: 4.999.9beta는 \fB49990091\fP이며, 5.0.0은 \fB50000002\fP입니다.
-.
-.SS "메모리 제한 정보"
-\fBxz \-\-robot \-\-info\-memory\fP 명령은 탭으로 나뉜 여러 컬럼을 단일 행으로 나타냅니다:
-.IP 1. 4
-물리 메모리(RAM)의 바이트 단위 총량.
-.IP 2. 4
-압축 진행시 바이트 단위 메모리 사용 한계값 (\fB\-\-memlimit\-compress\fP). 특수 값 \fB0\fP은 단일\-스레드 모드에서
-제한을 두지 않는 기본 설정임을 나타냅니다.
-.IP 3. 4
-압축 해제시 바이트 단위 메모리 사용 한계값 (\fB\-\-memlimit\-decompress\fP). 특수 값 \fB0\fP은 단일\-스레드 모드에서
-제한을 두지 않는 기본 설정임을 나타냅니다.
-.IP 4. 4
-\fBxz\fP 5.3.4alpha 이후: 다중\-스레드 기반 압축 해제시 바이트 단위 메모리
-사용량(\fB\-\-memlimit\-mt\-decompress\fP). 분명하게 제한을 걸어두지 않았을 경우 5번째 컬럼에 나타난 시스템별
-기본값을 사용하기 때문에 0 값을 지정하면 안됩니다. 또한 \fB\-\-memlimit\-mt\-decompress\fP로 세번째 컬럼 값보다 더
-크게 지정을 한다 할지라도 이 값이 세번째 컬럼 값보다 크면 안됩니다.
-.IP 5. 4
-\fBxz\fP 5.3.4alpha 이후: A system\-specific default memory usage limit that is
-used to limit the number of threads when compressing with an automatic
-number of threads (\fB\-\-threads=0\fP) and no memory usage limit has been
-specified (\fB\-\-memlimit\-compress\fP). This is also used as the default value
-for \fB\-\-memlimit\-mt\-decompress\fP.
-.IP 6. 4
-\fBxz\fP 5.3.4alpha 이후: Number of available processor threads.
-.PP
-차후, \fBxz \-\-robot \-\-info\-memory\fP 출력에는 더 많은 내용이 들어가지만, 한 줄 이상은 넘어가지 않습니다.
+\fB\-\-robot\fP 옵션은 \fB\-\-list\fP, \fB\-\-filters\-help\fP, \fB\-\-info\-memory\fP, \fB\-\-version\fP
+옵션하고만 사용할 수 있습니다. 앞으로는 압축 및 압축 해제 동작에 대해서도 지원합니다.
.
.SS "목록 모드"
\fBxz \-\-robot \-\-list\fP 명령은 탭으로 구분한 출력 형태를 활용합니다. 모든 행의 첫번째 컬럼에는 해당 행에서 찾을 수
@@ -1026,7 +1041,7 @@ for \fB\-\-memlimit\-mt\-decompress\fP.
.PD
.PP
\fB\-\-verbose\fP를 두 번 지정하면, 추가 컬럼을 \fB블록\fP 행에 넣습니다. \fB\-\-verbose\fP 단일 지정시에는 이 정보를 볼
-때 탐색을 여러번 수행해야 하기 때문에 실행 과정이 느려질 수 있어서 나타내지 않습니다.
+때 탐색을 여러번 수행해야 하기 때문에 실행 과정이 느려질 수 있어서 나타내지 않습니다:
.PD 0
.RS
.IP 11. 4
@@ -1053,7 +1068,7 @@ for \fB\-\-memlimit\-mt\-decompress\fP.
.IP 3. 4
모든 블록 헤더에 압축 크기와 압축 전 원본 크기 정보가 들어갔는지 여부를 나타내는 \fByes\fP 또는 \fBno\fP 값
.PP
-\fBxz\fP \fI5.1.2alpha\fP \fI부터\fP:
+\fBxz\fP \fI5.1.2alpha\fP \fI부터:\fP
.IP 4. 4
파일 압축 해제시 필요한 최소 \fBxz\fP 버전
.RE
@@ -1089,7 +1104,7 @@ for \fB\-\-memlimit\-mt\-decompress\fP.
.IP 11. 4
모든 블록 헤더에 압축 크기와 압축 전 원본 크기 정보가 들어갔는지 여부를 나타내는 \fByes\fP 또는 \fBno\fP 값
.PP
-\fBxz\fP \fI5.1.2alpha\fP \fI부터\fP:
+\fBxz\fP \fI5.1.2alpha\fP \fI부터:\fP
.IP 12. 4
파일 압축 해제시 필요한 최소 \fBxz\fP 버전
.RE
@@ -1098,6 +1113,73 @@ for \fB\-\-memlimit\-mt\-decompress\fP.
차후 버전에서는 새 행 형식을 추가하고 기존 행 형식에 추가할 수 있는 새 컬럼을 넣기 까지는 알 수 있겠지만, 기존 컬럼은 바꾸지 않을
예정입니다.
.
+.SS "필터 도움말"
+\fBxz \-\-robot \-\-filters\-help\fP 는 다음 형식의 지원 필터 목록을 출력합니다:
+.PP
+\fI<필터>\fP\fB:\fP\fI<옵션>\fP\fB=<\fP\fI값\fP\fB>,\fP\fI<옵션>\fP\fB=<\fP\fI값\fP\fB>\fP...
+.TP
+\fI<필터>\fP
+필터 이름
+.TP
+\fI<옵션>\fP
+필터별 옵션 이름
+.TP
+\fI<값>\fP
+숫자 \fI값\fP 범위는 \fB<\fP\fI최소\fP\fB\-\fP\fI최대\fP\fB>\fP입니다. 문자열 \fI값\fP은 \fB< >\fP 범위
+내에서 선택하며 \fB|\fP 문자로 구분합니다.
+.PP
+각 필터는 한 줄에 하나씩 출력합니다.
+.
+.SS "메모리 제한 정보"
+\fBxz \-\-robot \-\-info\-memory\fP 명령은 탭으로 나뉜 여러 컬럼을 단일 행으로 나타냅니다:
+.IP 1. 4
+물리 메모리(RAM)의 바이트 단위 총량.
+.IP 2. 4
+압축 진행시 바이트 단위 메모리 사용 한계값 (\fB\-\-memlimit\-compress\fP). 특수 값 \fB0\fP은 단일\-스레드 모드에서
+제한을 두지 않는 기본 설정임을 나타냅니다.
+.IP 3. 4
+압축 해제시 바이트 단위 메모리 사용 한계값 (\fB\-\-memlimit\-decompress\fP). 특수 값 \fB0\fP은 단일\-스레드 모드에서
+제한을 두지 않는 기본 설정임을 나타냅니다.
+.IP 4. 4
+\fBxz\fP 5.3.4alpha 이후: 다중\-스레드 기반 압축 해제시 바이트 단위 메모리
+사용량(\fB\-\-memlimit\-mt\-decompress\fP). 분명하게 제한을 걸어두지 않았을 경우 5번째 컬럼에 나타난 시스템별
+기본값을 사용하기 때문에 0 값을 지정하면 안됩니다. 또한 \fB\-\-memlimit\-mt\-decompress\fP로 세번째 컬럼 값보다 더
+크게 지정을 한다 할지라도 이 값이 세번째 컬럼 값보다 크면 안됩니다.
+.IP 5. 4
+\fBxz\fP 5.3.4alpha 이후: A system\-specific default memory usage limit that is
+used to limit the number of threads when compressing with an automatic
+number of threads (\fB\-\-threads=0\fP) and no memory usage limit has been
+specified (\fB\-\-memlimit\-compress\fP). This is also used as the default value
+for \fB\-\-memlimit\-mt\-decompress\fP.
+.IP 6. 4
+\fBxz\fP 5.3.4alpha 이후: Number of available processor threads.
+.PP
+차후, \fBxz \-\-robot \-\-info\-memory\fP 출력에는 더 많은 내용이 들어가지만, 한 줄 이상은 넘어가지 않습니다.
+.
+.SS 버전
+\fBxz \-\-robot \-\-version\fP 은 \fBxz\fP 와 liblzma의 버전 번호를 다음 형식으로 나타냅니다:
+.PP
+\fBXZ_VERSION=\fP\fIXYYYZZZS\fP
+.br
+\fBLIBLZMA_VERSION=\fP\fIXYYYZZZS\fP
+.TP
+\fIX\fP
+주 버전.
+.TP
+\fIYYY\fP
+부 버전. 짝수가 안정 버전입니다. 홀수는 알파 또는 베타 버전입니다.
+.TP
+\fIZZZ\fP
+안정 릴리스의 패치 수준 또는 개발 릴리스의 횟수입니다.
+.TP
+\fIS\fP
+안정도. 0은 알파 버전, 1은 베타 버전을 나타내며, 2는 안정 버전을 나타냅니다. \fIS\fP는 \fIYYY\fP 값이 짝수라 해도 항상
+2여야 합니다.
+.PP
+\fBxz\fP 명령과 liblzma이 동일한 XZ 유틸리티 릴리스에서 나왔다면 두 행의 \fIXYYYZZZS\fP 값은 같습니다.
+.PP
+예제: 4.999.9beta는 \fB49990091\fP이며, 5.0.0은 \fB50000002\fP입니다.
+.
.SH "종료 상태"
.TP
\fB0\fP
@@ -1128,7 +1210,7 @@ for \fB\-\-memlimit\-mt\-decompress\fP.
.RS
.PP
.nf
-\f(CWXZ_OPT=\-2v tar caf foo.tar.xz foo\fP
+\f(CRXZ_OPT=\-2v tar caf foo.tar.xz foo\fR
.fi
.RE
.RE
@@ -1139,7 +1221,8 @@ for \fB\-\-memlimit\-mt\-decompress\fP.
.RS
.PP
.nf
-\f(CWXZ_OPT=${XZ_OPT\-"\-7e"} export XZ_OPT\fP
+\f(CRXZ_OPT=${XZ_OPT\-"\-7e"}
+export XZ_OPT\fR
.fi
.RE
.RE
@@ -1260,7 +1343,7 @@ XZ 임베디드는 BCJ 필터를 지원하지만, 기본 시작 오프셋만 지
.RS
.PP
.nf
-\f(CWxz foo\fP
+\f(CRxz foo\fR
.fi
.RE
.PP
@@ -1268,7 +1351,7 @@ XZ 임베디드는 BCJ 필터를 지원하지만, 기본 시작 오프셋만 지
.RS
.PP
.nf
-\f(CWxz \-dk bar.xz\fP
+\f(CRxz \-dk bar.xz\fR
.fi
.RE
.PP
@@ -1277,7 +1360,7 @@ XZ 임베디드는 BCJ 필터를 지원하지만, 기본 시작 오프셋만 지
.RS
.PP
.nf
-\f(CWtar cf \- baz | xz \-4e > baz.tar.xz\fP
+\f(CRtar cf \- baz | xz \-4e > baz.tar.xz\fR
.fi
.RE
.PP
@@ -1285,7 +1368,7 @@ XZ 임베디드는 BCJ 필터를 지원하지만, 기본 시작 오프셋만 지
.RS
.PP
.nf
-\f(CWxz \-dcf a.txt b.txt.xz c.txt d.txt.lzma > abcd.txt\fP
+\f(CRxz \-dcf a.txt b.txt.xz c.txt d.txt.lzma > abcd.txt\fR
.fi
.RE
.
@@ -1294,7 +1377,8 @@ GNU와 *BSD에서는 \fBfind\fP(1) 명령과 \fBxargs\fP(1) 명령으로 여
.RS
.PP
.nf
-\f(CWfind . \-type f \e! \-name '*.xz' \-print0 \e | xargs \-0r \-P4 \-n16 xz \-T1\fP
+\f(CRfind . \-type f \e! \-name '*.xz' \-print0 \e
+ | xargs \-0r \-P4 \-n16 xz \-T1\fR
.fi
.RE
.PP
@@ -1310,7 +1394,7 @@ GNU와 *BSD에서는 \fBfind\fP(1) 명령과 \fBxargs\fP(1) 명령으로 여
.RS
.PP
.nf
-\f(CWxz \-\-robot \-\-list *.xz | awk '/^totals/{print $5\-$4}'\fP
+\f(CRxz \-\-robot \-\-list *.xz | awk '/^totals/{print $5\-$4}'\fR
.fi
.RE
.PP
@@ -1320,7 +1404,11 @@ GNU와 *BSD에서는 \fBfind\fP(1) 명령과 \fBxargs\fP(1) 명령으로 여
.RS
.PP
.nf
-\f(CWif ! eval "$(xz \-\-robot \-\-version 2> /dev/null)" || [ "$XZ_VERSION" \-lt 50000002 ]; then echo "Your xz is too old." fi unset XZ_VERSION LIBLZMA_VERSION\fP
+\f(CRif ! eval "$(xz \-\-robot \-\-version 2> /dev/null)" ||
+ [ "$XZ_VERSION" \-lt 50000002 ]; then
+ echo "Your xz is too old."
+fi
+unset XZ_VERSION LIBLZMA_VERSION\fR
.fi
.RE
.PP
@@ -1328,7 +1416,12 @@ GNU와 *BSD에서는 \fBfind\fP(1) 명령과 \fBxargs\fP(1) 명령으로 여
.RS
.PP
.nf
-\f(CWNEWLIM=$((123 << 20))\ \ # 123 MiB OLDLIM=$(xz \-\-robot \-\-info\-memory | cut \-f3) if [ $OLDLIM \-eq 0 \-o $OLDLIM \-gt $NEWLIM ]; then XZ_OPT="$XZ_OPT \-\-memlimit\-decompress=$NEWLIM" export XZ_OPT fi\fP
+\f(CRNEWLIM=$((123 << 20))\ \ # 123 MiB
+OLDLIM=$(xz \-\-robot \-\-info\-memory | cut \-f3)
+if [ $OLDLIM \-eq 0 \-o $OLDLIM \-gt $NEWLIM ]; then
+ XZ_OPT="$XZ_OPT \-\-memlimit\-decompress=$NEWLIM"
+ export XZ_OPT
+fi\fR
.fi
.RE
.
@@ -1337,7 +1430,7 @@ GNU와 *BSD에서는 \fBfind\fP(1) 명령과 \fBxargs\fP(1) 명령으로 여
설정 조합만 다루기 때문에 꽤 쓸모가 있을 수도 있습니다.
.PP
\fB\-0\fP ... \fB\-9\fP 옵션의 설명에서 테이블의 CompCPU 컬럼과 \fB\-\-extreme\fP 옵션은 LZMA2 사전 설정을
-개별적으로 맞췄을 때 쓸만할 수도 있습니다. 여기 관련내용을 테이블 둘로 정리해서 모아보았습니다.
+개별적으로 맞췄을 때 쓸만할 수도 있습니다. 여기 관련내용을 테이블 둘로 정리해서 모아보았습니다:
.RS
.PP
.TS
@@ -1362,7 +1455,7 @@ Preset;CompCPU
.RS
.PP
.nf
-\f(CWxz \-\-lzma2=preset=1,dict=32MiB foo.tar\fP
+\f(CRxz \-\-lzma2=preset=1,dict=32MiB foo.tar\fR
.fi
.RE
.PP
@@ -1376,7 +1469,7 @@ Preset;CompCPU
.RS
.PP
.nf
-\f(CWxz \-vv \-\-lzma2=dict=192MiB big_foo.tar\fP
+\f(CRxz \-vv \-\-lzma2=dict=192MiB big_foo.tar\fR
.fi
.RE
.PP
@@ -1391,7 +1484,7 @@ Preset;CompCPU
.RS
.PP
.nf
-\f(CWxz \-\-check=crc32 \-\-lzma2=preset=6e,dict=64KiB foo\fP
+\f(CRxz \-\-check=crc32 \-\-lzma2=preset=6e,dict=64KiB foo\fR
.fi
.RE
.PP
@@ -1402,7 +1495,7 @@ Preset;CompCPU
.RS
.PP
.nf
-\f(CWxz \-\-lzma2=preset=6e,pb=0,lc=4 source_code.tar\fP
+\f(CRxz \-\-lzma2=preset=6e,pb=0,lc=4 source_code.tar\fR
.fi
.RE
.PP
@@ -1411,7 +1504,7 @@ LZMA2와 다른 필터를 함께 사용하면 일부 파일 형식에 대해 압
.RS
.PP
.nf
-\f(CWxz \-\-x86 \-\-lzma2 libfoo.so\fP
+\f(CRxz \-\-x86 \-\-lzma2 libfoo.so\fR
.fi
.RE
.PP
@@ -1423,11 +1516,11 @@ LZMA2와 델타 필터는 비트맵 그림에 최적의 결과를 가져다줄
.PP
예를 들어 이미지를 압축하지 않은 비압축 TIFF로 저장해야 하는 경우가 있습니다. 델타 필터의 거리 매개변수는 그림에서 픽셀당 바이트
수에 일치하도록 설정합니다. 예를 들면, 24비트 RGB 비트맵의 경우 \fBdist=3\fP 거리 매개변수 값을 설정해야 하며, LZMA2
-압축시 3바이트 정렬을 따르도록 \fBpb=0\fP 값을 전달하는 방법도 바람직합니다.
+압축시 3바이트 정렬을 따르도록 \fBpb=0\fP 값을 전달하는 방법도 바람직합니다:
.RS
.PP
.nf
-\f(CWxz \-\-delta=dist=3 \-\-lzma2=pb=0 foo.tiff\fP
+\f(CRxz \-\-delta=dist=3 \-\-lzma2=pb=0 foo.tiff\fR
.fi
.RE
.PP
@@ -1438,8 +1531,8 @@ LZMA2와 델타 필터는 비트맵 그림에 최적의 결과를 가져다줄
\fBxzdec\fP(1), \fBxzdiff\fP(1), \fBxzgrep\fP(1), \fBxzless\fP(1), \fBxzmore\fP(1),
\fBgzip\fP(1), \fBbzip2\fP(1), \fB7z\fP(1)
.PP
-XZ 유틸리티: <https://tukaani.org/xz/>
+XZ 유틸리티: <https://tukaani.org/xz\-utils/>
.br
-XZ 임베디드: <https://tukaani.org/xz/embedded.html>
+XZ 임베디드: <https://tukaani.org/xz/embedded/>
.br
LZMA SDK: <https://7\-zip.org/sdk.html>
diff --git a/po4a/man/ko/xzdec.1 b/po4a/man/ko/xzdec.1
index 881d4cc..9763be5 100644
--- a/po4a/man/ko/xzdec.1
+++ b/po4a/man/ko/xzdec.1
@@ -1,15 +1,16 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Author: Lasse Collin
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
+.\" Korean translation for the xz-man
+.\" Seong-ho Cho <darkcircle.0426@gmail.com>, 2023, 2024.
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZDEC 1 2017\-04\-19 Tukaani "XZ 유틸리티"
+.TH XZDEC 1 2024\-04\-08 Tukaani "XZ 유틸리티"
.SH 이름
xzdec, lzmadec \- .xz와 .lzma용 작은 압축 해제 프로그램
.SH 요약
@@ -68,4 +69,4 @@ xzdec, lzmadec \- .xz와 .lzma용 작은 압축 해제 프로그램
.SH "추가 참조"
\fBxz\fP(1)
.PP
-XZ 임베디드: <https://tukaani.org/xz/embedded.html>
+XZ 임베디드: <https://tukaani.org/xz/embedded/>
diff --git a/po4a/man/ko/xzdiff.1 b/po4a/man/ko/xzdiff.1
index bea6426..20e5644 100644
--- a/po4a/man/ko/xzdiff.1
+++ b/po4a/man/ko/xzdiff.1
@@ -1,39 +1,51 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
-.\" Original zdiff.1 for gzip: Jean-loup Gailly
+.\" Authors: Lasse Collin
+.\" Jia Tan
.\"
-.\" Modifications for XZ Utils: Lasse Collin
-.\" Andrew Dudman
+.\" Korean translation for the xz-man
+.\" Seong-ho Cho <darkcircle.0426@gmail.com>, 2023, 2024.
.\"
-.\" License: GNU GPLv2+
+.\" (Note that this file is not based on gzip's zdiff.1.)
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZDIFF 1 2021\-06\-04 Tukaani "XZ 유틸리티"
+.TH XZDIFF 1 2024\-02\-13 Tukaani "XZ 유틸리티"
.SH 이름
xzcmp, xzdiff, lzcmp, lzdiff \- 압축 파일을 비교합니다
+.
.SH 요약
-\fBxzcmp\fP [\fI<비교_옵션>\fP] \fI<파일1>\fP [\fI<파일2>\fP]
+\fBxzcmp\fP [\fI<옵션>...\fP] \fI<파일1>\fP [\fI<파일2>\fP]
.br
-\fBxzdiff\fP [\fI차이_옵션\fP] \fI<파일1>\fP [\fI<파일2>\fP]
+\fBxzdiff\fP \&...
.br
-\fBlzcmp\fP [\fI<비교_옵션>\fP] \fI<파일1>\fP [\fI<파일2>\fP]
+\fBlzcmp\fP \&...
.br
-\fBlzdiff\fP [\fI<차이_옵션>\fP] \fI<파일1>\fP [\fI<파일2>\fP]
+\fBlzdiff\fP \&...
+.
.SH 설명
-\fBxzcmp\fP 와 \fBxzdiff\fP 는 \fBxz\fP(1), \fBlzma\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1),
-\fBlzop\fP(1), \fBzstd\fP(1) 로 압축한 파일에 대해 \fBcmp\fP(1) 또는 \fBdiff\fP(1) 명령을 실행합니다. 지정한
-모든 옵션은 직접 \fBcmp\fP(1) 또는 \fBdiff\fP(1) 명령에 전달합니다. 파일 하나만 지정했을 경우
-\fI<파일1>\fP만 비교(지원 압축 형식 접미사를 넣어야 함)하며, \fI<파일1>\fP의 지원 압축 형식 접미사는
-빠집니다. 파일 둘을 지정하면, 필요한 경우 압축 해제하며, \fBcmp\fP(1) 또는 \fBdiff\fP(1) 명령으로 전달합니다.
-\fBcmp\fP(1) 또는 \fBdiff\fP(1) 명령의 종료 상태는 압축 해제 오류가 나타나지 않는 한 보존됩니다. 압축 해제 오류가
-나타나면 종료 상태는 2가 됩니다.
+\fBxzcmp\fP 와 \fBxzdiff\fP 명령은 압축 해제한 두 파일의 내용을 비교합니다. 압축 해제한 파일의 데이터와 옵션은
+\fB\-\-help\fP 옵션 또는 \fB\-\-version\fP 옵션을 지정하지 않는다면, \fBcmp\fP(1) 또는 \fBdiff\fP(1) 명령으로
+전달합니다.
.PP
-\fBlzcmp\fP 와 \fBlzdiff\fP 명령은 LZMA 유틸리티 하위 호환성을 목적으로 제공합니다.
+\fI<파일1>\fP 과 \fI<파일2>\fP를 모두 지정했다면, 지정한 파일은 이미 압축해제한 파일이거나,
+\fBxz\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1), \fBzstd\fP(1), \fBlz4\fP(1) 명령으로
+압축해제할 수 있는 형식의 파일일 수 있습니다. 필요한 압축 해제 명령은 \fI<파일1>\fP 과
+\fI<파일2>\fP의 파일 이름 확장자로 결정합니다. 알 수 없는 확장자를 지닌 파일은 이미 압축을 해제했거나
+\fBxz\fP(1) 명령으로 압축 해제할 수 있는 형식으로 간주합니다.
+.PP
+파일 이름을 하나만 지정한다면, \fI<파일1>\fP의 확장자는 지원 압축 형식의 확장자여야 하며,
+\fI<파일2>\fP는 \fI<파일1>\fP에서 압축 파일 확장자를 제거한 파일로 간주합니다.
+.PP
+\fBlzcmp\fP와 \fBlzdiff\fP 명령은 LZMA 유틸리티 하위 호환용으로 제공합니다.
+.
+.SH "종료 상태"
+압축 해제 오류가 나타나는 경우, 종료 코드는 \fB2\fP입니다. 그렇지 않을 경우 \fBcmp\fP(1) 또는 \fBdiff\fP(1) 명령의
+종료 코드를 활용합니다.
+.
.SH "추가 참조"
\fBcmp\fP(1), \fBdiff\fP(1), \fBxz\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1),
-\fBzstd\fP(1), \fBzdiff\fP(1)
-.SH 버그
-\fBcmp\fP(1) 프로그램 또는 \fBdiff\fP(1) 프로그램에서 온 메시지는 지정한 파일 이름 대신 임시 파일 이름을 참조합니다.
+\fBzstd\fP(1), \fBlz4\fP(1)
diff --git a/po4a/man/ko/xzgrep.1 b/po4a/man/ko/xzgrep.1
index a04fea2..932ff9e 100644
--- a/po4a/man/ko/xzgrep.1
+++ b/po4a/man/ko/xzgrep.1
@@ -1,21 +1,24 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
-.\" Original zgrep.1 for gzip: Jean-loup Gailly
-.\" Charles Levert <charles@comm.polymtl.ca>
+.\" Authors: Lasse Collin
+.\" Jia Tan
.\"
-.\" Modifications for XZ Utils: Lasse Collin
+.\" Korean translation for the xz-man
+.\" Seong-ho Cho <darkcircle.0426@gmail.com>, 2023, 2024.
.\"
-.\" License: GNU GPLv2+
+.\" (Note that this file is not based on gzip's zgrep.1.)
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZGREP 1 2022\-07\-19 Tukaani "XZ 유틸리티"
+.TH XZGREP 1 2024\-02\-13 Tukaani "XZ 유틸리티"
.SH 이름
-xzgrep \- 정규 표현식을 활용하여 압축 파일을 검색합니다
+xzgrep \- 패턴을 활용하여 가능한 방식으로 압축한 파일의 내용을 검색합니다
+.
.SH 요약
-\fBxzgrep\fP [\fIgrep_options\fP] [\fB\-e\fP] \fI<패턴>\fP [\fI<파일>...\fP]
+\fBxzgrep\fP [\fI<옵션>...\fP] [\fI<패턴목록>\fP] [\fI<파일>...\fP]
.br
\fBxzegrep\fP \&...
.br
@@ -26,17 +29,40 @@ xzgrep \- 정규 표현식을 활용하여 압축 파일을 검색합니다
\fBlzegrep\fP \&...
.br
\fBlzfgrep\fP \&...
+.
.SH 설명
-\fBxzgrep\fP 명령은 \fBxz\fP(1), \fBlzma\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1),
-\fBzstd\fP(1) 로 압축을 했거나 하지 않은 \fI<파일>\fP에 대해 \fBgrep\fP(1) 명령을 실행합니다. 모든 지정
-옵션은 \fBgrep\fP(1)에 바로 전달합니다.
+\fBxzgrep\fP은 압축 해제한 파일의 내용에 \fBgrep\fP(1)을 실행합니다. \fI<파일>\fP 형식은 파일 이름 확장으로
+결정합니다. \fI<파일>\fP에서 지원하는 확장자는 \fBxz\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1),
+\fBlzop\fP(1), \fBzstd\fP(1), \fBlz4\fP(1)로 압축 해제할 수 있는 파일의 확장자입니다. 다른 파일은 이미 압축을 해제한
+파일로 간주합니다.
.PP
-지정한 \fI<파일>\fP이 없다면, 필요에 따라 표준 입력 데이터 압축을 풀어내어 \fBgrep\fP(1) 에 전달합니다. 표준
-입력에서 읽을 떄, \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1), \fBzstd\fP(1) 압축 파일은 지원하지 않습니다.
+지정한 \fI<파일>\fP이 없거나 \fI<파일>\fP 값이 \fB\-\fP이라면 표준 입력을 읽어들입니다. 표준 입력을
+읽어들일 때, \fBxz\fP(1) 방식으로 압축을 해제하는 파일만 지원합니다. 다른 파일은 이미 압축을 해제한 파일로 간주합니다.
.PP
-\fBxzgrep\fP을 \fBxzegrep\fP 또는 \fBxzfgrep\fP 으로 실행하면 \fBgrep\fP(1) 대신 \fBgrep \-E\fP 또는
-\fBgrep \-F\fP 명령을 활용합니다. LZMA 유틸리티와 하위 호환성을 가진 \fBlzgrep\fP, \fBlzegrep\fP,
-\fBlzfgrep\fP 명령에도 동일합니다.
+대부분의 \fBgrep\fP(1)의 \fI<옵션>\fP을 지원합니다. 그러나 다음 옵션은 지원하지 않습니다:
+.IP "" 4
+\fB\-r\fP, \fB\-\-recursive\fP
+.IP "" 4
+\fB\-R\fP, \fB\-\-dereference\-recursive\fP
+.IP "" 4
+\fB\-d\fP, \fB\-\-directories=\fP\fIaction\fP
+.IP "" 4
+\fB\-Z\fP, \fB\-\-null\fP
+.IP "" 4
+\fB\-z\fP, \fB\-\-null\-data\fP
+.IP "" 4
+\fB\-\-include=\fP\fIglob\fP
+.IP "" 4
+\fB\-\-exclude=\fP\fIglob\fP
+.IP "" 4
+\fB\-\-exclude\-from=\fP\fIfile\fP
+.IP "" 4
+\fB\-\-exclude\-dir=\fP\fIglob\fP
+.PP
+\fBxzegrep\fP은 \fBxzgrep \-E\fP 명령의 별칭입니다. \fBxzfgrep\fP은 \fBxzgrep \-F\fP 명령의 별칭입니다.
+.PP
+\fBlzgrep\fP, \fBlzegrep\fP, \fBlzfgrep\fP 명령은 LZMA 유틸리티 하위 호환용으로 제공합니다.
+.
.SH "종료 상태"
.TP
0
@@ -47,11 +73,12 @@ xzgrep \- 정규 표현식을 활용하여 압축 파일을 검색합니다
.TP
>1
하나 이상의 오류가 나타납니다. 일치하는 항목을 찾아낼 지 여부는 알 수 없습니다.
+.
.SH 환경
.TP
\fBGREP\fP
-\fBGREP\fP 환경 변수를 설정하면, \fBxzgrep\fP을 \fBgrep\fP(1), \fBgrep \-E\fP, \fBgrep \-F\fP 환경 변수 대신
-활용합니다.
+\fBGREP\fP 환경변수 값이 비어있지 않으면, \fBgrep\fP, \fBgrep \-E\fP, \fBgrep \-F\fP 명령 대신 활용합니다.
+.
.SH "추가 참조"
\fBgrep\fP(1), \fBxz\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1), \fBzstd\fP(1),
-\fBzgrep\fP(1)
+\fBlz4\fP(1), \fBzgrep\fP(1)
diff --git a/po4a/man/ko/xzless.1 b/po4a/man/ko/xzless.1
index 1d745af..0e4798f 100644
--- a/po4a/man/ko/xzless.1
+++ b/po4a/man/ko/xzless.1
@@ -1,9 +1,10 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Authors: Andrew Dudman
.\" Lasse Collin
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
+.\" Korean translation for the xz-man
+.\" Seong-ho Cho <darkcircle.0426@gmail.com>, 2023, 2024.
.\"
.\" (Note that this file is not based on gzip's zless.1.)
.\"
@@ -12,7 +13,7 @@
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZLESS 1 2010\-09\-27 Tukaani "XZ 유틸리티"
+.TH XZLESS 1 2024\-02\-12 Tukaani "XZ 유틸리티"
.SH 이름
xzless, lzless \- xz 또는 lzma 압축 (텍스트) 파일을 봅니다
.SH 요약
@@ -20,8 +21,9 @@ xzless, lzless \- xz 또는 lzma 압축 (텍스트) 파일을 봅니다
.br
\fBlzless\fP [\fI<파일>\fP...]
.SH 설명
-\fBxzless\fP 는 압축 파일을 터미널에 나타내는 필터 프로그램입니다. \fBxz\fP(1) 또는 \fBlzma\fP(1) 프로그램으로 압축한
-파일에 대해 동작합니다. 주어진 \fI<파일>\fP 값이 없다면, \fBxzless\fP 는 표준 입력을 읽어들입니다.
+\fBxzless\fP는 압축 파일 내용을 터미널에 나타내는 필터 프로그램입니다. \fBxz\fP(1) 방식으로 압축을 해제하는 파일만
+지원합니다. 다른 파일은 이미 압축을 해제한 파일로 간주합니다. 주어진 \fI<파일>\fP 값이 없다면, \fBxzless\fP는
+표준 입력을 읽어들입니다.
.PP
\fBxzless\fP 는 \fBless\fP(1) 를 사용하여 출력을 막습니다. \fBxzmore\fP 와는 다르게, 환경 변수 설정으로 선택한
페이저를 바꿀 수 없습니다. 명령은 \fBmore\fP(1) 와 \fBvi\fP(1) 가 기반이며, 앞뒤로 움직이고 검색할 수 있습니다.
diff --git a/po4a/man/ko/xzmore.1 b/po4a/man/ko/xzmore.1
index fd6f9f2..2caa95a 100644
--- a/po4a/man/ko/xzmore.1
+++ b/po4a/man/ko/xzmore.1
@@ -1,36 +1,42 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
-.\" Original zdiff.1 for gzip: Jean-loup Gailly
-.\" Modifications for XZ Utils: Lasse Collin
+.\" Authors: Andrew Dudman
+.\" Lasse Collin
.\"
-.\" License: GNU GPLv2+
+.\" Korean translation for the xz-man
+.\" Seong-ho Cho <darkcircle.0426@gmail.com>, 2023, 2024.
+.\"
+.\" (Note that this file is based on xzless.1 instead of gzip's zmore.1.)
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZMORE 1 2013\-06\-30 Tukaani "XZ 유틸리티"
+.TH XZMORE 1 2024\-02\-12 Tukaani "XZ 유틸리티"
.SH 이름
xzmore, lzmore \- xz 압축 (텍스트) 파일 또는 lzma 압축 (텍스트) 파일을 봅니다
+.
.SH 요약
-\fBxzmore\fP [\fI<파일>...\fP]
+\fBxzmore\fP [\fI<파일>\fP...]
.br
-\fBlzmore\fP [\fI<파일>...\fP]
+\fBlzmore\fP [\fI<파일>\fP...]
+.
.SH 설명
-\fBxzmore\fP 는 \fBxz\fP(1) 또는 \fBlzma\fP(1) 형식으로 압축한 텍스트 파일을 한 번에 한 화면만큼 소프트\-복제
-터미널에 표시하는 필터입니다.
+\fBxzmore\fP 명령은 압축 파일에 들어있는 텍스트를 \fBmore\fP(1) 명령으로 터미널에 나타냅니다. \fBxz\fP(1) 방식으로
+압축을 해제하는 파일만 지원합니다. 다른 파일은 이미 압축을 해제한 파일로 간주합니다. \fI<파일>\fP을 지정하지
+않으면, \fBxzmore\fP 프로그램에서는 표준 입력을 읽어들입니다. 키보드 명령 정보는 \fBmore\fP(1) 설명서를 참고하십시오.
.PP
-기본 \fBmore\fP 대신 다른 페이저 프로그램을 사용하려면, \fBPAGER\fP 환경 변수에 원하는 프로그램 이름을 넣으십시오.
-\fBlzmore\fP의 이름은 LZMA 유틸리티의 하위 호환성을 목적으로 제공합니다.
-.TP
-\fBe\fP 또는 \fBq\fP
-\-\-More\-\-(다음 파일: \fI<파일>\fP) 프롬프트가 뜨면, 이 명령은 \fBxzmore\fP를 빠져나가게 합니다.
-.TP
-\fBs\fP
-\-\-More\-\-(다음 파일: \fI<파일>\fP) 프롬프트가 뜨면, 이 명령은 \fBxzmore\fP에서 다음 파일로 건너뛰어 계속
-실행하게 합니다.
+참고로 \fBmore\fP(1) 명령 구현체에 따라 반대 방향(윗방향)으로의 스크롤은 못할 수도 있습니다. \fBxzmore\fP 명령이
+\fBmore\fP(1) 명령에 압축 해제한 데이터를 파이프로 전달하기 때문입니다. \fBxzless\fP(1)는 좀 더 나은 기능을 가진
+\fBless\fP(1) 명령을 활용합니다.
.PP
-파일 내용을 실제로 보는 동안 지원하는 키보드 명령 목록을 보려면, \fBmore\fP(1) 와 같은 사용하는 페이저의 설명서를
-참고하십시오.
+\fBlzmore\fP 명령은 LZMA 유틸리티 하위 호환용으로 제공합니다.
+.
+.SH 환경
+.TP
+\fBPAGER\fP
+\fBPAGER\fP 환경변수 값을 설정했다면 \fBmore\fP(1) 대신 해당 환경변수 값을 사용합니다.
+.
.SH "추가 참조"
\fBmore\fP(1), \fBxz\fP(1), \fBxzless\fP(1), \fBzmore\fP(1)
diff --git a/po4a/man/pt_BR/lzmainfo.1 b/po4a/man/pt_BR/lzmainfo.1
index 160a494..5566566 100644
--- a/po4a/man/pt_BR/lzmainfo.1
+++ b/po4a/man/pt_BR/lzmainfo.1
@@ -1,8 +1,10 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Author: Lasse Collin
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
+.\" Brazilian Portuguese translations for xz package
+.\" Traduções em português brasileiro para o pacote xz.
+.\" Rafael Fontenelle <rafaelff@gnome.org>, 2022-2023.
.\"
.\"*******************************************************************
.\"
diff --git a/po4a/man/pt_BR/xz.1 b/po4a/man/pt_BR/xz.1
index d8ccb2f..fe4edf7 100644
--- a/po4a/man/pt_BR/xz.1
+++ b/po4a/man/pt_BR/xz.1
@@ -1,17 +1,19 @@
'\" t
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Authors: Lasse Collin
.\" Jia Tan
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
+.\" Brazilian Portuguese translations for xz package
+.\" Traduções em português brasileiro para o pacote xz.
+.\" Rafael Fontenelle <rafaelff@gnome.org>, 2022-2023.
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZ 1 2023\-07\-17 Tukaani "XZ Utils"
+.TH XZ 1 2024\-04\-08 Tukaani "XZ Utils"
.
.SH NOME
xz, unxz, xzcat, lzma, unlzma, lzcat \- Compacta ou descompacta arquivos .xz
@@ -465,10 +467,8 @@ velocidade, portanto, embora o CompCPU seja o mesmo para os níveis \fB\-6\fP
obter uma compactação ainda mais lenta e possivelmente melhor, consulte
\fB\-\-extreme\fP.
.IP \(bu 3
-CompMem contém os requisitos de memória do compactador no modo de thread
-única.Pode variar ligeiramente entre as versões \fBxz\fP. Os requisitos de
-memória de alguns dos futuros modos de várias threads (multithread) podem
-ser dramaticamente maiores do que os do modo de thread única.
+CompMem contains the compressor memory requirements in the single\-threaded
+mode. It may vary slightly between \fBxz\fP versions.
.IP \(bu 3
DecMem contém os requisitos de memória do descompactador. Ou seja, as
configurações de compactação determinam os requisitos de memória do
@@ -476,6 +476,11 @@ descompactador. O uso exato da memória do descompactador é um pouco maior do
que o tamanho do dicionário LZMA2, mas os valores na tabela foram
arredondados para o próximo MiB completo.
.RE
+.IP ""
+Memory requirements of the multi\-threaded mode are significantly higher than
+that of the single\-threaded mode. With the default value of
+\fB\-\-block\-size\fP, each thread needs 3*3*DictSize plus CompMem or DecMem. For
+example, four threads with preset \fB\-6\fP needs 660\(en670\ MiB of memory.
.TP
\fB\-e\fP, \fB\-\-extreme\fP
Usa uma variante mais lenta do nível de predefinição de compactação
@@ -530,44 +535,67 @@ limitada de acesso aleatório. Essa opção normalmente é usada para substituir
o tamanho de bloco padrão no modo multi\-thread, mas também pode ser usada em
thread única.
.IP ""
-No modo multi\-thread, cerca de três vezes \fItamanho\fP bytes serão alocados em
-cada thread para armazenar em buffer a entrada e a saída. O \fItamanho\fP
-padrão é três vezes o tamanho do dicionário LZMA2 ou 1 MiB, o que for
-maior. Normalmente, um bom valor é 2\(en4 vezes o tamanho do dicionário
-LZMA2 ou pelo menos 1 MiB. Usar \fItamanho\fP menor que o tamanho do dicionário
-LZMA2 é um desperdício de RAM porque o buffer do dicionário LZMA2 nunca será
-totalmente usado. Os tamanhos dos blocos são armazenados nos cabeçalhos dos
-blocos, que uma versão futura do \fBxz\fP usará para descompactação em
-multi\-thread.
-.IP ""
-No modo de thread única, nenhuma divisão de bloco é feita por
-padrão. Definir essa opção não afeta o uso da memória. Nenhuma informação de
-tamanho é armazenada nos cabeçalhos dos blocos, portanto, os arquivos
-criados no modo de thread única não serão idênticos aos arquivos criados no
-modo multi\-thread. A falta de informações de tamanho também significa que
-uma versão futura do \fBxz\fP não poderá descompactar os arquivos no modo
-multi\-thread.
-.TP
-\fB\-\-block\-list=\fP\fItamanhos\fP
-Ao compactar para o formato \fB.xz\fP, inicia um novo bloco após os intervalos
-fornecidos de dados não compactados.
-.IP ""
-Os \fItamanhos\fP não compactados dos blocos são especificados como uma lista
-separada por vírgulas. Omitir um tamanho (duas ou mais vírgulas
-consecutivas) é uma forma abreviada de usar o tamanho do bloco anterior.
-.IP ""
-Se o arquivo de entrada for maior que a soma de \fItamanhos\fP, o último valor
-em \fItamanhos\fP é repetido até o final do arquivo. Um valor especial de \fB0\fP
-pode ser usado como o último valor para indicar que o restante do arquivo
-deve ser codificado como um único bloco.
-.IP ""
-Se alguém especificar \fItamanhos\fP que excedam o tamanho do bloco do
-codificador (seja o valor padrão no modo em threads ou o valor especificado
-com \fB\-\-block\-size=\fP\fItamanho\fP), o codificador criará blocos adicionais
-enquanto mantém o limites especificados em \fItamanhos\fP. Por exemplo, se
-alguém especificar \fB\-\-block\-size=10MiB\fP
-\fB\-\-block\-list=5MiB,10MiB,8MiB,12MiB,24MiB\fP e o arquivo de entrada for 80
-MiB, obterá 11 blocos: 5, 10, 8, 10, 2, 10, 10, 4, 10, 10 e 1 MiB.
+In multi\-threaded mode about three times \fIsize\fP bytes will be allocated in
+each thread for buffering input and output. The default \fIsize\fP is three
+times the LZMA2 dictionary size or 1 MiB, whichever is more. Typically a
+good value is 2\(en4 times the size of the LZMA2 dictionary or at least 1
+MiB. Using \fIsize\fP less than the LZMA2 dictionary size is waste of RAM
+because then the LZMA2 dictionary buffer will never get fully used. In
+multi\-threaded mode, the sizes of the blocks are stored in the block
+headers. This size information is required for multi\-threaded
+decompression.
+.IP ""
+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 \fBxz\fP won't be able decompress the files in multi\-threaded mode.
+.TP
+\fB\-\-block\-list=\fP\fIitems\fP
+When compressing to the \fB.xz\fP format, start a new block with an optional
+custom filter chain after the given intervals of uncompressed data.
+.IP ""
+The \fIitems\fP are a comma\-separated list. Each item consists of an optional
+filter chain number between 0 and 9 followed by a colon (\fB:\fP) and a
+required size of uncompressed data. Omitting an item (two or more
+consecutive commas) is a shorthand to use the size and filters of the
+previous item.
+.IP ""
+If the input file is bigger than the sum of the sizes in \fIitems\fP, the last
+item is repeated until the end of the file. A special value of \fB0\fP may be
+used as the last size to indicate that the rest of the file should be
+encoded as a single block.
+.IP ""
+An alternative filter chain for each block can be specified in combination
+with the \fB\-\-filters1=\fP\fIfilters\fP \&...\& \fB\-\-filters9=\fP\fIfilters\fP options.
+These options define filter chains with an identifier between 1\(en9.
+Filter chain 0 can be used to refer to the default filter chain, which is
+the same as not specifying a filter chain. The filter chain identifier can
+be used before the uncompressed size, followed by a colon (\fB:\fP). For
+example, if one specifies \fB\-\-block\-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB\fP
+then blocks will be created using:
+.RS
+.IP \(bu 3
+The filter chain specified by \fB\-\-filters1\fP and 2 MiB input
+.IP \(bu 3
+The filter chain specified by \fB\-\-filters3\fP and 2 MiB input
+.IP \(bu 3
+The filter chain specified by \fB\-\-filters2\fP and 4 MiB input
+.IP \(bu 3
+The filter chain specified by \fB\-\-filters2\fP and 4 MiB input
+.IP \(bu 3
+The default filter chain and 2 MiB input
+.IP \(bu 3
+The default filter chain and 4 MiB input for every block until end of input.
+.RE
+.IP ""
+If one specifies a size that exceeds the encoder's block size (either the
+default value in threaded mode or the value specified with
+\fB\-\-block\-size=\fP\fIsize\fP), the encoder will create additional blocks while
+keeping the boundaries specified in \fIitems\fP. For example, if one specifies
+\fB\-\-block\-size=10MiB\fP \fB\-\-block\-list=5MiB,10MiB,8MiB,12MiB,24MiB\fP 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.
.IP ""
No modo multi\-thread, os tamanhos dos blocos são armazenados nos cabeçalhos
dos blocos. Isso não é feito no modo de thread única, portanto, a saída
@@ -727,6 +755,9 @@ blocos com informações de tamanho nos cabeçalhos dos blocos. Todos os
arquivos grandes o suficiente compactados no modo de várias thread atendem a
essa condição, mas os arquivos compactados no modo de thread única não
atendem, mesmo se \fB\-\-block\-size=\fP\fItamanho\fP tiver sido usado.
+.IP ""
+The default value for \fIthreads\fP is \fB0\fP. In \fBxz\fP 5.4.x and older the
+default is \fB1\fP.
.
.SS "Cadeias de filtro de compressor personalizadas"
Uma cadeia de filtro personalizada permite especificar as configurações de
@@ -750,21 +781,48 @@ apenas como filtro não\-último e alguns funcionam em qualquer posição na
cadeia. Dependendo do filtro, essa limitação é inerente ao projeto do filtro
ou existe para evitar problemas de segurança.
.PP
-Uma cadeia de filtro personalizada é especificada usando uma ou mais opções
-de filtro na ordem desejada na cadeia de filtro. Ou seja, a ordem das opções
-de filtro é significativa! Ao decodificar fluxos brutos (\fB\-\-format=raw\fP), a
-cadeia de filtros é especificada na mesma ordem em que foi especificada
-durante a compactação.
-.PP
-Os filtros usam \fIopções\fP específicas do filtro como uma lista separada por
-vírgulas. As vírgulas extras em \fIopções\fP são ignoradas. Cada opção tem um
-valor padrão, portanto, você precisa especificar apenas aquelas que deseja
-alterar.
+A custom filter chain can be specified in two different ways. The options
+\fB\-\-filters=\fP\fIfilters\fP and \fB\-\-filters1=\fP\fIfilters\fP \&...\&
+\fB\-\-filters9=\fP\fIfilters\fP allow specifying an entire filter chain in one
+option using the liblzma filter string syntax. Alternatively, a filter
+chain can be specified by using one or more individual filter options in the
+order they are wanted in the filter chain. That is, the order of the
+individual filter options is significant! When decoding raw streams
+(\fB\-\-format=raw\fP), the filter chain must be specified in the same order as
+it was specified when compressing. Any individual filter or preset options
+specified before the full chain option (\fB\-\-filters=\fP\fIfilters\fP) will be
+forgotten. Individual filters specified after the full chain option will
+reset the filter chain.
+.PP
+Both the full and individual filter options take filter\-specific \fIoptions\fP
+as a comma\-separated list. Extra commas in \fIoptions\fP are ignored. Every
+option has a default value, so specify those you want to change.
.PP
Para ver toda a cadeia de filtros e \fIopções\fP, use \fBxz \-vv\fP (isto é, use
\fB\-\-verbose\fP duas vezes). Isso também funciona para visualizar as opções da
cadeia de filtros usadas pelas predefinições.
.TP
+\fB\-\-filters=\fP\fIfilters\fP
+Specify the full filter chain or a preset in a single option. Each filter
+can be separated by spaces or two dashes (\fB\-\-\fP). \fIfilters\fP may need to be
+quoted on the shell command line so it is parsed as a single option. To
+denote \fIoptions\fP, use \fB:\fP or \fB=\fP. A preset can be prefixed with a \fB\-\fP
+and followed with zero or more flags. The only supported flag is \fBe\fP to
+apply the same options as \fB\-\-extreme\fP.
+.TP
+\fB\-\-filters1\fP=\fIfilters\fP ... \fB\-\-filters9\fP=\fIfilters\fP
+Specify up to nine additional filter chains that can be used with
+\fB\-\-block\-list\fP.
+.IP ""
+For example, when compressing an archive with executable files followed by
+text files, the executable part could use a filter chain with a BCJ filter
+and the text part only the LZMA2 filter.
+.TP
+\fB\-\-filters\-help\fP
+Display a help message describing how to specify presets and custom filter
+chains in the \fB\-\-filters\fP and \fB\-\-filters1=\fP\fIfilters\fP \&...\&
+\fB\-\-filters9=\fP\fIfilters\fP options, and exit successfully.
+.TP
\fB\-\-lzma1\fP[\fB=\fP\fIopções\fP]
.PD 0
.TP
@@ -976,6 +1034,8 @@ dicionário \fItamanho\fP. LZMA1 também precisa de \fIlc\fP, \fIlp\fP e \fIpb\f
\fB\-\-ia64\fP[\fB=\fP\fIopções\fP]
.TP
\fB\-\-sparc\fP[\fB=\fP\fIopções\fP]
+.TP
+\fB\-\-riscv\fP[\fB=\fP\fIopções\fP]
.PD
Adiciona um filtro de ramificação/chamada/salto (BCJ) à cadeia de
filtros. Esses filtros podem ser usados apenas como um filtro não último na
@@ -1026,17 +1086,30 @@ ARM64;4;Alinhamento de 4096 bytes
PowerPC;4;Somente big endian
IA\-64;16;Itanium
SPARC;4;
+RISC\-V;2;
.TE
.RE
.RE
.IP ""
-Como os dados filtrados por BCJ geralmente são compactados com LZMA2, a taxa
-de compactação pode melhorar ligeiramente se as opções de LZMA2 forem
-definidas para corresponder ao alinhamento do filtro BCJ selecionado. Por
-exemplo, com o filtro IA\-64, é bom definir \fBpb=4\fP ou mesmo
-\fBpb=4,lp=4,lc=0\fP com LZMA2 (2^4=16). O filtro x86 é uma exceção; geralmente
-é bom manter o alinhamento padrão de quatro bytes do LZMA2 ao compactar
-executáveis x86.
+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. Examples:
+.RS
+.IP \(bu 3
+IA\-64 filter has 16\-byte alignment so \fBpb=4,lp=4,lc=0\fP is good with LZMA2
+(2^4=16).
+.IP \(bu 3
+RISC\-V code has 2\-byte or 4\-byte alignment depending on whether the file
+contains 16\-bit compressed instructions (the C extension). When 16\-bit
+instructions are used, \fBpb=2,lp=1,lc=3\fP or \fBpb=1,lp=1,lc=3\fP is good. When
+16\-bit instructions aren't present, \fBpb=2,lp=2,lc=2\fP is the best.
+\fBreadelf \-h\fP can be used to check if "RVC" appears on the "Flags" line.
+.IP \(bu 3
+ARM64 is always 4\-byte aligned so \fBpb=2,lp=2,lc=2\fP is the best.
+.IP \(bu 3
+The x86 filter is an exception. It's usually good to stick to LZMA2's
+defaults (\fBpb=2,lp=0,lc=3\fP) when compressing x86 executables.
+.RE
.IP ""
Todos os filtros BCJ suportam as mesmas \fIopções\fP:
.RS
@@ -1154,70 +1227,11 @@ humanos. Para obter uma saída analisável por máquina, especifique \fB\-\-robo
antes de \fB\-\-version\fP.
.
.SH "MODO ROBÔ"
-O modo robô é ativado com a opção \fB\-\-robot\fP. Isso torna a saída de \fBxz\fP
-mais fácil de ser analisada por outros programas. Atualmente \fB\-\-robot\fP é
-suportado apenas junto com \fB\-\-version\fP, \fB\-\-info\-memory\fP e \fB\-\-list\fP. Ele
-terá suporte para compactação e descompactação no futuro.
-.
-.SS Versão
-\fBxz \-\-robot \-\-version\fP prints the version number of \fBxz\fP and liblzma in
-the following format:
-.PP
-\fBXZ_VERSION=\fP\fIXYYYZZZS\fP
-.br
-\fBLIBLZMA_VERSION=\fP\fIXYYYZZZS\fP
-.TP
-\fIX\fP
-Versão principal.
-.TP
-\fIYYY\fP
-Versão menor. Números pares são estáveis. Os números ímpares são versões
-alfa ou beta.
-.TP
-\fIZZZ\fP
-Nível de patch para versões estáveis ou apenas um contador para versões de
-desenvolvimento.
-.TP
-\fIS\fP
-Estabilidade. 0 é alfa, 1 é beta e 2 é estável. \fIS\fP deve ser sempre 2
-quando \fIYYY\fP for par.
-.PP
-\fIXYYYZZZS\fP são iguais em ambas as linhas se \fBxz\fP e liblzma forem da mesma
-versão do XZ Utils.
-.PP
-Exemplos: 4.999.9beta é \fB49990091\fP e 5.0.0 é \fB50000002\fP.
-.
-.SS "Informações de limite de memória"
-\fBxz \-\-robot \-\-info\-memory\fP prints a single line with multiple tab\-separated
-columns:
-.IP 1. 4
-Quantidade total de memória física (RAM) em bytes.
-.IP 2. 4
-Limite de uso de memória para compactação em bytes
-(\fB\-\-memlimit\-compress\fP). Um valor especial de \fB0\fP indica a configuração
-padrão que para o modo de thread única é o mesmo que sem limite.
-.IP 3. 4
-Limite de uso de memória para descompactação em bytes
-(\fB\-\-memlimit\-decompress\fP). Um valor especial de \fB0\fP indica a configuração
-padrão que para o modo de thread única é o mesmo que sem limite.
-.IP 4. 4
-Desde \fBxz\fP 5.3.4alpha: Uso de memória para descompactação com várias thread
-em bytes (\fB\-\-memlimit\-mt\-decompress\fP). Isso nunca é zero porque um valor
-padrão específico do sistema mostrado na coluna 5 é usado se nenhum limite
-for especificado explicitamente. Isso também nunca é maior que o valor na
-coluna 3, mesmo que um valor maior tenha sido especificado com
-\fB\-\-memlimit\-mt\-decompress\fP.
-.IP 5. 4
-Desde \fBxz\fP 5.3.4alpha: Um limite de uso de memória padrão específico do
-sistema que é usado para limitar o número de threads ao compactar com um
-número automático de threads (\fB\-\-threads=0\fP) e nenhum limite de uso de
-memória foi especificado (\fB\-\-memlimit\-compress\fP). Isso também é usado como
-o valor padrão para \fB\-\-memlimit\-mt\-decompress\fP.
-.IP 6. 4
-Desde \fBxz\fP 5.3.4alpha: Número de threads de processador disponíveis.
-.PP
-No futuro, a saída de \fBxz \-\-robot \-\-info\-memory\fP pode ter mais colunas, mas
-nunca mais do que uma única linha.
+The robot mode is activated with the \fB\-\-robot\fP option. It makes the output
+of \fBxz\fP easier to parse by other programs. Currently \fB\-\-robot\fP is
+supported only together with \fB\-\-list\fP, \fB\-\-filters\-help\fP, \fB\-\-info\-memory\fP,
+and \fB\-\-version\fP. It will be supported for compression and decompression in
+the future.
.
.SS "Modo lista"
\fBxz \-\-robot \-\-list\fP usa saída separada por tabulações. A primeira coluna de
@@ -1416,6 +1430,85 @@ Versões futuras podem adicionar novos tipos de linha e novas colunas podem
ser adicionadas aos tipos de linha existentes, mas as colunas existentes não
serão alteradas.
.
+.SS "Filters help"
+\fBxz \-\-robot \-\-filters\-help\fP prints the supported filters in the following
+format:
+.PP
+\fIfilter\fP\fB:\fP\fIoption\fP\fB=<\fP\fIvalue\fP\fB>,\fP\fIoption\fP\fB=<\fP\fIvalue\fP\fB>\fP...
+.TP
+\fIfilter\fP
+Name of the filter
+.TP
+\fIoption\fP
+Name of a filter specific option
+.TP
+\fIvalue\fP
+Numeric \fIvalue\fP ranges appear as \fB<\fP\fImin\fP\fB\-\fP\fImax\fP\fB>\fP. String
+\fIvalue\fP choices are shown within \fB< >\fP and separated by a \fB|\fP
+character.
+.PP
+Each filter is printed on its own line.
+.
+.SS "Informações de limite de memória"
+\fBxz \-\-robot \-\-info\-memory\fP prints a single line with multiple tab\-separated
+columns:
+.IP 1. 4
+Quantidade total de memória física (RAM) em bytes.
+.IP 2. 4
+Limite de uso de memória para compactação em bytes
+(\fB\-\-memlimit\-compress\fP). Um valor especial de \fB0\fP indica a configuração
+padrão que para o modo de thread única é o mesmo que sem limite.
+.IP 3. 4
+Limite de uso de memória para descompactação em bytes
+(\fB\-\-memlimit\-decompress\fP). Um valor especial de \fB0\fP indica a configuração
+padrão que para o modo de thread única é o mesmo que sem limite.
+.IP 4. 4
+Desde \fBxz\fP 5.3.4alpha: Uso de memória para descompactação com várias thread
+em bytes (\fB\-\-memlimit\-mt\-decompress\fP). Isso nunca é zero porque um valor
+padrão específico do sistema mostrado na coluna 5 é usado se nenhum limite
+for especificado explicitamente. Isso também nunca é maior que o valor na
+coluna 3, mesmo que um valor maior tenha sido especificado com
+\fB\-\-memlimit\-mt\-decompress\fP.
+.IP 5. 4
+Desde \fBxz\fP 5.3.4alpha: Um limite de uso de memória padrão específico do
+sistema que é usado para limitar o número de threads ao compactar com um
+número automático de threads (\fB\-\-threads=0\fP) e nenhum limite de uso de
+memória foi especificado (\fB\-\-memlimit\-compress\fP). Isso também é usado como
+o valor padrão para \fB\-\-memlimit\-mt\-decompress\fP.
+.IP 6. 4
+Desde \fBxz\fP 5.3.4alpha: Número de threads de processador disponíveis.
+.PP
+No futuro, a saída de \fBxz \-\-robot \-\-info\-memory\fP pode ter mais colunas, mas
+nunca mais do que uma única linha.
+.
+.SS Versão
+\fBxz \-\-robot \-\-version\fP prints the version number of \fBxz\fP and liblzma in
+the following format:
+.PP
+\fBXZ_VERSION=\fP\fIXYYYZZZS\fP
+.br
+\fBLIBLZMA_VERSION=\fP\fIXYYYZZZS\fP
+.TP
+\fIX\fP
+Versão principal.
+.TP
+\fIYYY\fP
+Versão menor. Números pares são estáveis. Os números ímpares são versões
+alfa ou beta.
+.TP
+\fIZZZ\fP
+Nível de patch para versões estáveis ou apenas um contador para versões de
+desenvolvimento.
+.TP
+\fIS\fP
+Estabilidade. 0 é alfa, 1 é beta e 2 é estável. \fIS\fP deve ser sempre 2
+quando \fIYYY\fP for par.
+.PP
+\fIXYYYZZZS\fP são iguais em ambas as linhas se \fBxz\fP e liblzma forem da mesma
+versão do XZ Utils.
+.PP
+Exemplos: 4.999.9beta é \fB49990091\fP e 5.0.0 é \fB50000002\fP.
+.
.SH "STATUS DE SAÍDA"
.TP
\fB0\fP
@@ -1453,7 +1546,7 @@ executado por um script ou ferramenta, por exemplo, GNU \fBtar\fP(1):
.RS
.PP
.nf
-\f(CWXZ_OPT=\-2v tar caf foo.tar.xz foo\fP
+\f(CRXZ_OPT=\-2v tar caf foo.tar.xz foo\fR
.fi
.RE
.RE
@@ -1466,7 +1559,8 @@ scripts \fBsh\fP(1) pode\-se usar algo assim:
.RS
.PP
.nf
-\f(CWXZ_OPT=${XZ_OPT\-"\-7e"} export XZ_OPT\fP
+\f(CRXZ_OPT=${XZ_OPT\-"\-7e"}
+export XZ_OPT\fR
.fi
.RE
.RE
@@ -1618,7 +1712,7 @@ Compactar o arquivo \fIfoo\fP em \fIfoo.xz\fP usando o nível de compactação p
.RS
.PP
.nf
-\f(CWxz foo\fP
+\f(CRxz foo\fR
.fi
.RE
.PP
@@ -1627,7 +1721,7 @@ descompactação for bem\-sucedida:
.RS
.PP
.nf
-\f(CWxz \-dk bar.xz\fP
+\f(CRxz \-dk bar.xz\fR
.fi
.RE
.PP
@@ -1637,7 +1731,7 @@ descompactação (48 \ MiB e 5\ MiB, respectivamente):
.RS
.PP
.nf
-\f(CWtar cf \- baz | xz \-4e > baz.tar.xz\fP
+\f(CRtar cf \- baz | xz \-4e > baz.tar.xz\fR
.fi
.RE
.PP
@@ -1646,7 +1740,7 @@ para a saída padrão com um único comando:
.RS
.PP
.nf
-\f(CWxz \-dcf a.txt b.txt.xz c.txt d.txt.lzma > abcd.txt\fP
+\f(CRxz \-dcf a.txt b.txt.xz c.txt d.txt.lzma > abcd.txt\fR
.fi
.RE
.
@@ -1656,7 +1750,8 @@ compactação de muitos arquivos:
.RS
.PP
.nf
-\f(CWfind . \-type f \e! \-name '*.xz' \-print0 \e | xargs \-0r \-P4 \-n16 xz \-T1\fP
+\f(CRfind . \-type f \e! \-name '*.xz' \-print0 \e
+ | xargs \-0r \-P4 \-n16 xz \-T1\fR
.fi
.RE
.PP
@@ -1676,7 +1771,7 @@ arquivos:
.RS
.PP
.nf
-\f(CWxz \-\-robot \-\-list *.xz | awk '/^totals/{print $5\-$4}'\fP
+\f(CRxz \-\-robot \-\-list *.xz | awk '/^totals/{print $5\-$4}'\fR
.fi
.RE
.PP
@@ -1687,7 +1782,11 @@ não suportavam a opção \fB\-\-robot\fP:
.RS
.PP
.nf
-\f(CWif ! eval "$(xz \-\-robot \-\-version 2> /dev/null)" || [ "$XZ_VERSION" \-lt 50000002 ]; then echo "Your xz is too old." fi unset XZ_VERSION LIBLZMA_VERSION\fP
+\f(CRif ! eval "$(xz \-\-robot \-\-version 2> /dev/null)" ||
+ [ "$XZ_VERSION" \-lt 50000002 ]; then
+ echo "Your xz is too old."
+fi
+unset XZ_VERSION LIBLZMA_VERSION\fR
.fi
.RE
.PP
@@ -1696,7 +1795,12 @@ mas se um limite já tiver sido definido, não o aumentar:
.RS
.PP
.nf
-\f(CWNEWLIM=$((123 << 20))\ \ # 123 MiB OLDLIM=$(xz \-\-robot \-\-info\-memory | cut \-f3) if [ $OLDLIM \-eq 0 \-o $OLDLIM \-gt $NEWLIM ]; then XZ_OPT="$XZ_OPT \-\-memlimit\-decompress=$NEWLIM" export XZ_OPT fi\fP
+\f(CRNEWLIM=$((123 << 20))\ \ # 123 MiB
+OLDLIM=$(xz \-\-robot \-\-info\-memory | cut \-f3)
+if [ $OLDLIM \-eq 0 \-o $OLDLIM \-gt $NEWLIM ]; then
+ XZ_OPT="$XZ_OPT \-\-memlimit\-decompress=$NEWLIM"
+ export XZ_OPT
+fi\fR
.fi
.RE
.
@@ -1735,7 +1839,7 @@ baixo (por exemplo, 1) pode ser modificado para usar um dicionário maior:
.RS
.PP
.nf
-\f(CWxz \-\-lzma2=preset=1,dict=32MiB foo.tar\fP
+\f(CRxz \-\-lzma2=preset=1,dict=32MiB foo.tar\fR
.fi
.RE
.PP
@@ -1755,7 +1859,7 @@ o \fBxz \-9\fP usaria:
.RS
.PP
.nf
-\f(CWxz \-vv \-\-lzma2=dict=192MiB big_foo.tar\fP
+\f(CRxz \-vv \-\-lzma2=dict=192MiB big_foo.tar\fR
.fi
.RE
.PP
@@ -1773,7 +1877,7 @@ que existe \fB\-\-check=crc32\fP) usando cerca de 100\ KiB de memória.
.RS
.PP
.nf
-\f(CWxz \-\-check=crc32 \-\-lzma2=preset=6e,dict=64KiB foo\fP
+\f(CRxz \-\-check=crc32 \-\-lzma2=preset=6e,dict=64KiB foo\fR
.fi
.RE
.PP
@@ -1787,7 +1891,7 @@ que \fBxz \-6e\fP (tente também sem \fBlc=4\fP):
.RS
.PP
.nf
-\f(CWxz \-\-lzma2=preset=6e,pb=0,lc=4 source_code.tar\fP
+\f(CRxz \-\-lzma2=preset=6e,pb=0,lc=4 source_code.tar\fR
.fi
.RE
.PP
@@ -1797,7 +1901,7 @@ compartilhada x86\-32 ou x86\-64 usando o filtro x86 BCJ:
.RS
.PP
.nf
-\f(CWxz \-\-x86 \-\-lzma2 libfoo.so\fP
+\f(CRxz \-\-x86 \-\-lzma2 libfoo.so\fR
.fi
.RE
.PP
@@ -1818,7 +1922,7 @@ para acomodar o alinhamento de três bytes:
.RS
.PP
.nf
-\f(CWxz \-\-delta=dist=3 \-\-lzma2=pb=0 foo.tiff\fP
+\f(CRxz \-\-delta=dist=3 \-\-lzma2=pb=0 foo.tiff\fR
.fi
.RE
.PP
diff --git a/po4a/man/pt_BR/xzdec.1 b/po4a/man/pt_BR/xzdec.1
index 09f9255..996139d 100644
--- a/po4a/man/pt_BR/xzdec.1
+++ b/po4a/man/pt_BR/xzdec.1
@@ -1,15 +1,17 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Author: Lasse Collin
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
+.\" Brazilian Portuguese translations for xz package
+.\" Traduções em português brasileiro para o pacote xz.
+.\" Rafael Fontenelle <rafaelff@gnome.org>, 2022-2023.
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZDEC 1 2017\-04\-19 Tukaani "XZ Utils"
+.TH XZDEC 1 2024\-04\-08 Tukaani "XZ Utils"
.SH NOME
xzdec, lzmadec \- Pequenos descompactadores .xz e .lzma
.SH SINOPSE
diff --git a/po4a/man/pt_BR/xzdiff.1 b/po4a/man/pt_BR/xzdiff.1
deleted file mode 100644
index 9203c41..0000000
--- a/po4a/man/pt_BR/xzdiff.1
+++ /dev/null
@@ -1,44 +0,0 @@
-.\"
-.\" Original zdiff.1 for gzip: Jean-loup Gailly
-.\"
-.\" Modifications for XZ Utils: Lasse Collin
-.\" Andrew Dudman
-.\"
-.\" License: GNU GPLv2+
-.\"
-.\"*******************************************************************
-.\"
-.\" This file was generated with po4a. Translate the source file.
-.\"
-.\"*******************************************************************
-.TH XZDIFF 1 2021\-06\-04 Tukaani "XZ Utils"
-.SH NOME
-xzcmp, xzdiff, lzcmp, lzdiff \- compara arquivos compactados
-.SH SINOPSE
-\fBxzcmp\fP [\fIopções_cmd\fP] \fIarquivo1\fP [\fIarquivo2\fP]
-.br
-\fBxzdiff\fP [\fIopções_diff\fP] \fIarquivo1\fP [\fIarquivo2\fP]
-.br
-\fBlzcmp\fP [\fIopções_cmp\fP] \fIarquivo1\fP [\fIarquivo2\fP]
-.br
-\fBlzdiff\fP [\fIopções_diff\fP] \fIarquivo1\fP [\fIarquivo2\fP]
-.SH DESCRIÇÃO
-\fBxzcmp\fP e \fBxzdiff\fP invocam \fBcmp\fP(1) ou \fBdiff\fP(1) em arquivos compactados
-com \fBxz\fP(1), \fBlzma\fP(1), \fBgzip\fP( 1), \fBbzip2\fP(1), \fBlzop\fP(1) ou
-\fBzstd\fP(1). Todas as opções especificadas são passadas diretamente para
-\fBcmp\fP(1) ou \fBdiff\fP(1). Se apenas um arquivo for especificado, os arquivos
-comparados serão \fIarquivo1\fP (que deve ter um sufixo de um formato de
-compactação compatível) e \fIarquivo1\fP do qual o sufixo do formato de
-compactação foi removido. Se dois arquivos forem especificados, eles serão
-descompactados, se necessário, e enviados para \fBcmp\fP(1) ou \fBdiff\fP(1). O
-status de saída de \fBcmp\fP(1) ou \fBdiff\fP(1) é preservado, a menos que ocorra
-um erro de descompactação; então o status de saída é 2.
-.PP
-Os nomes \fBlzcmp\fP e \fBlzdiff\fP são fornecidos para compatibilidade com
-versões anteriores do LZMA Utils.
-.SH "VEJA TAMBÉM"
-\fBcmp\fP(1), \fBdiff\fP(1), \fBxz\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1),
-\fBzstd\fP(1), \fBzdiff\fP(1)
-.SH BUGS
-As mensagens dos programas \fBcmp\fP(1) ou \fBdiff\fP(1) referem\-se a nomes de
-arquivos temporários em vez daqueles especificados.
diff --git a/po4a/man/pt_BR/xzgrep.1 b/po4a/man/pt_BR/xzgrep.1
deleted file mode 100644
index 1a347fb..0000000
--- a/po4a/man/pt_BR/xzgrep.1
+++ /dev/null
@@ -1,63 +0,0 @@
-.\"
-.\" Original zgrep.1 for gzip: Jean-loup Gailly
-.\" Charles Levert <charles@comm.polymtl.ca>
-.\"
-.\" Modifications for XZ Utils: Lasse Collin
-.\"
-.\" License: GNU GPLv2+
-.\"
-.\"*******************************************************************
-.\"
-.\" This file was generated with po4a. Translate the source file.
-.\"
-.\"*******************************************************************
-.TH XZGREP 1 2022\-07\-19 Tukaani "XZ Utils"
-.SH NOME
-xzgrep \- pesquisa arquivos compactados para uma expressão regular
-.SH SINOPSE
-\fBxzgrep\fP [\fIopções_grep\fP] [\fB\-e\fP] \fIpadrão\fP [\fIarquivo...\fP]
-.br
-\fBxzegrep\fP \&...
-.br
-\fBxzfgrep\fP \&...
-.br
-\fBlzgrep\fP \&...
-.br
-\fBlzegrep\fP \&...
-.br
-\fBlzfgrep\fP \&...
-.SH DESCRIÇÃO
-\fBxzgrep\fP invoca \fBgrep\fP(1) em \fIarquivos\fP que podem ser descompactados ou
-compactados com \fBxz\fP(1), \fBlzma\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1),
-ou \fBzstd\fP(1). Todas as opções especificadas são passadas diretamente para
-\fBgrep\fP(1).
-.PP
-Se nenhum \fIarquivo\fP for especificado, a entrada padrão será descompactada,
-se necessário, e enviada para \fBgrep\fP(1). Ao ler da entrada padrão, os
-arquivos compactados \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1) e \fBzstd\fP(1) não
-são suportados.
-.PP
-Se \fBxzgrep\fP for chamado como \fBxzegrep\fP ou \fBxzfgrep\fP, então \fBgrep \-E\fP ou
-\fBgrep \-F\fP será usado em vez de \fBgrep\fP(1). O mesmo se aplica aos nomes
-\fBlzgrep\fP, \fBlzegrep\fP e \fBlzfgrep\fP, que são fornecidos para compatibilidade
-com versões anteriores do LZMA Utils.
-.SH "STATUS DE SAÍDA"
-.TP
-0
-Pelo menos uma correspondência foi encontrada em pelo menos um dos arquivos
-de entrada. Nenhum erro ocorreu.
-.TP
-1
-Nenhuma correspondência foi encontrada em nenhum dos arquivos de
-entrada. Nenhum erro ocorreu.
-.TP
->1
-Ocorreu um ou mais erros. Não se sabe se foram encontradas correspondências.
-.SH AMBIENTE
-.TP
-\fBGREP\fP
-Se a variável de ambiente \fBGREP\fP for definida, \fBxzgrep\fP a usará em vez de
-\fBgrep\fP(1), \fBgrep \-E\fP ou \fBgrep \-F\fP.
-.SH "VEJA TAMBÉM"
-\fBgrep\fP(1), \fBxz\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1), \fBzstd\fP(1),
-\fBzgrep\fP(1)
diff --git a/po4a/man/pt_BR/xzless.1 b/po4a/man/pt_BR/xzless.1
index c2da329..f0d54bf 100644
--- a/po4a/man/pt_BR/xzless.1
+++ b/po4a/man/pt_BR/xzless.1
@@ -1,9 +1,11 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Authors: Andrew Dudman
.\" Lasse Collin
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
+.\" Brazilian Portuguese translations for xz package
+.\" Traduções em português brasileiro para o pacote xz.
+.\" Rafael Fontenelle <rafaelff@gnome.org>, 2022-2023.
.\"
.\" (Note that this file is not based on gzip's zless.1.)
.\"
@@ -12,7 +14,7 @@
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZLESS 1 2010\-09\-27 Tukaani "XZ Utils"
+.TH XZLESS 1 2024\-02\-12 Tukaani "XZ Utils"
.SH NOME
xzless, lzless \- visualiza arquivos (texto) compactados em xz ou lzma
.SH SINOPSE
@@ -20,10 +22,10 @@ xzless, lzless \- visualiza arquivos (texto) compactados em xz ou lzma
.br
\fBlzless\fP [\fIarquivo\fP...]
.SH DESCRIÇÃO
-\fBxzless\fP é um filtro que exibe texto de arquivos compactados em um
-terminal. Ele funciona em arquivos compactados com \fBxz\fP(1) ou
-\fBlzma\fP(1). Se nenhum \fIfiles\fP for fornecido, \fBxzless\fP lê da entrada
-padrão.
+\fBxzless\fP is a filter that displays text from compressed files to a
+terminal. Files supported by \fBxz\fP(1) are decompressed; other files are
+assumed to be in uncompressed form already. If no \fIfiles\fP are given,
+\fBxzless\fP reads from standard input.
.PP
\fBxzless\fP usa \fBless\fP(1) para apresentar sua saída. Ao contrário de
\fBxzmore\fP, sua escolha de pager não pode ser alterada pela configuração de
diff --git a/po4a/man/pt_BR/xzmore.1 b/po4a/man/pt_BR/xzmore.1
deleted file mode 100644
index 281ea63..0000000
--- a/po4a/man/pt_BR/xzmore.1
+++ /dev/null
@@ -1,39 +0,0 @@
-.\"
-.\" Original zdiff.1 for gzip: Jean-loup Gailly
-.\" Modifications for XZ Utils: Lasse Collin
-.\"
-.\" License: GNU GPLv2+
-.\"
-.\"*******************************************************************
-.\"
-.\" This file was generated with po4a. Translate the source file.
-.\"
-.\"*******************************************************************
-.TH XZMORE 1 2013\-06\-30 Tukaani "XZ Utils"
-.SH NOME
-xzmore, lzmore \- visualiza arquivos (texto) compactados em xz ou lzma
-.SH SINOPSE
-\fBxzmore\fP [\fIarquivo...\fP]
-.br
-\fBlzmore\fP [\fIarquivo...\fP]
-.SH DESCRIÇÃO
-\fBxzmore\fP é um filtro que permite o exame de arquivos de texto compactados
-\fBxz\fP(1) ou \fBlzma\fP(1) uma tela por vez em um terminal de cópia eletrônica.
-.PP
-Para usar um pager diferente do padrão \fBmore,\fP defina a variável de
-ambiente \fBPAGER\fP para o nome do programa desejado. O nome \fBlzmore\fP é
-fornecido para compatibilidade com versões anteriores do LZMA Utils.
-.TP
-\fBe\fP ou \fBq\fP
-Quando o prompt \-\-More\-\-(Next file: \fIarquivo\fP) é impresso, esse comando faz
-com que \fBxzmore\fP saia.
-.TP
-\fBs\fP
-Quando o prompt \-\-More\-\-(Next file: \fIarquivo\fP) é impresso, esse comando faz
-com que \fBxzmore\fP pule o próximo arquivo e continue.
-.PP
-Para obter uma lista de comandos de teclado suportados durante a exibição
-real do conteúdo de um arquivo, consulte o manual do paginador que você usa,
-geralmente \fBmore\fP(1).
-.SH "VEJA TAMBÉM"
-\fBmore\fP(1), \fBxz\fP(1), \fBxzless\fP(1), \fBzmore\fP(1)
diff --git a/po4a/man/ro/lzmainfo.1 b/po4a/man/ro/lzmainfo.1
index 789c25d..c4d97fd 100644
--- a/po4a/man/ro/lzmainfo.1
+++ b/po4a/man/ro/lzmainfo.1
@@ -1,8 +1,18 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Author: Lasse Collin
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
+.\" Romanian translation for xz-man.
+.\" Mesajele în limba română pentru manualul pachetului XZ Utils.
+.\" Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>, 2022 - 2024.
+.\" Cronologia traducerii fișierului „xz-man”:
+.\" Traducerea inițială, făcută de R-GC, pentru versiunea xz-man 5.4.0-pre1.
+.\" Actualizare a traducerii pentru versiunea 5.4.0-pre2, făcută de R-GC, dec-2022.
+.\" Actualizare a traducerii pentru versiunea 5.4.3, făcută de R-GC, mai-2023.
+.\" Actualizare a traducerii pentru versiunea 5.4.4-pre1, făcută de R-GC, iul-2023.
+.\" Actualizare a traducerii pentru versiunea 5.6.0-pre1, făcută de R-GC, feb-2024.
+.\" Actualizare a traducerii pentru versiunea 5.6.0-pre2, făcută de R-GC, feb-2024.
+.\" Actualizare a traducerii pentru versiunea Y, făcută de X, Z(luna-anul).
.\"
.\"*******************************************************************
.\"
@@ -15,17 +25,17 @@ lzmainfo \- afișează informațiile stocate în antetul fișierului .lzma
.SH REZUMAT
\fBlzmainfo\fP [\fB\-\-help\fP] [\fB\-\-version\fP] [\fIfișier...\fP]
.SH DESCRIERE
-\fBlzmainfo\fP afișează informațiile stocate în antetul fișierului \fB.lzma\fP.
-Citește primii 13 octeți din \fIfișierul\fP specificat, decodifică antetul și
-îl afișează la ieșirea standard în format care poate fi citit de om. Dacă
-nu sunt date \fIfișiere\fP sau dacă \fIfișier\fP este \fB\-\fP, se citește intrarea
-standard.
+\fBlzmainfo\fP afișează informațiile stocate în antetul fișierului
+\&\fB.lzma\fP. Citește primii 13 octeți din \fIfișierul\fP specificat, decodifică
+antetul și îl afișează la ieșirea standard în format care poate fi citit de
+om. Dacă nu sunt date \fIfișiere\fP sau dacă \fIfișier\fP este \fB\-\fP, se citește
+intrarea standard.
.PP
De obicei, cele mai interesante informații sunt dimensiunea necomprimată și
-dimensiunea dicționarului. Dimensiunea necomprimată poate fi afișată numai
-dacă fișierul este în varianta formatului \fB.lzma\fP netransmis în flux.
-Cantitatea de memorie necesară pentru a decomprima fișierul este de câteva
-zeci de kiloocteți plus dimensiunea dicționarului.
+dimensiunea dicționarului. Dimensiunea necomprimată poate fi afișată numai
+dacă fișierul este în varianta formatului \fB.lzma\fP netransmis în
+flux. Cantitatea de memorie necesară pentru a decomprima fișierul este de
+câteva zeci de kiloocteți plus dimensiunea dicționarului.
.PP
\fBlzmainfo\fP este inclus în XZ Utils în primul rând pentru compatibilitatea
cu LZMA Utils.
@@ -38,7 +48,7 @@ Totul este bine.
A apărut o eroare.
.SH ERORI
\fBlzmainfo\fP folosește sufixul \fBMB\fP în timp ce sufixul corect ar fi \fBMiB\fP
-(2^20 octeți). Acest lucru este pentru a menține ieșirea compatibilă cu
-LZMA Utils.
+(2^20 octeți). Acest lucru este pentru a menține ieșirea compatibilă cu LZMA
+Utils.
.SH "CONSULTAȚI ȘI"
\fBxz\fP(1)
diff --git a/po4a/man/ro/xz.1 b/po4a/man/ro/xz.1
index e9a4bd4..e72afda 100644
--- a/po4a/man/ro/xz.1
+++ b/po4a/man/ro/xz.1
@@ -1,17 +1,27 @@
'\" t
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Authors: Lasse Collin
.\" Jia Tan
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
+.\" Romanian translation for xz-man.
+.\" Mesajele în limba română pentru manualul pachetului XZ Utils.
+.\" Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>, 2022 - 2024.
+.\" Cronologia traducerii fișierului „xz-man”:
+.\" Traducerea inițială, făcută de R-GC, pentru versiunea xz-man 5.4.0-pre1.
+.\" Actualizare a traducerii pentru versiunea 5.4.0-pre2, făcută de R-GC, dec-2022.
+.\" Actualizare a traducerii pentru versiunea 5.4.3, făcută de R-GC, mai-2023.
+.\" Actualizare a traducerii pentru versiunea 5.4.4-pre1, făcută de R-GC, iul-2023.
+.\" Actualizare a traducerii pentru versiunea 5.6.0-pre1, făcută de R-GC, feb-2024.
+.\" Actualizare a traducerii pentru versiunea 5.6.0-pre2, făcută de R-GC, feb-2024.
+.\" Actualizare a traducerii pentru versiunea Y, făcută de X, Z(luna-anul).
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZ 1 17.07.2023 Tukaani "Utilități XZ"
+.TH XZ 1 2024\-04\-08 Tukaani "Utilități XZ"
.
.SH NUME
xz, unxz, xzcat, lzma, unlzma, lzcat \- Comprimă sau decomprimă fișiere .xz
@@ -37,17 +47,17 @@ să folosiți întotdeauna comanda \fBxz\fP cu argumentele adecvate (\fBxz \-d\f
.
.SH DESCRIERE
\fBxz\fP este un instrument de comprimare a datelor de uz general cu sintaxă de
-linie de comandă similară cu \fBgzip\fP(1) și \fBbzip2\fP(1). Formatul de fișier
+linie de comandă similară cu \fBgzip\fP(1) și \fBbzip2\fP(1). Formatul de fișier
nativ este formatul \fB.xz\fP, dar formatul vechi \fB.lzma\fP folosit de LZMA
Utils și fluxurile comprimate brute fără anteturi de format container sunt
-de asemenea acceptate. În plus, este acceptată decomprimarea formatului
+de asemenea acceptate. În plus, este acceptată decomprimarea formatului
\&\fB.lz\fP folosit de \fBlzip\fP.
.PP
\fBxz\fP comprimă sau decomprimă fiecare \fIfișier\fP în funcție de modul de
-operare selectat. Dacă nu sunt date \fIfișiere\fP sau \fIfișier\fP este \fB\-\fP,
+operare selectat. Dacă nu sunt date \fIfișiere\fP sau \fIfișier\fP este \fB\-\fP,
\fBxz\fP citește de la intrarea standard și scrie datele procesate la ieșirea
-standard. \fBxz\fP va refuza (afișează o eroare și omite \fIfișier\fP) să scrie
-date comprimate la ieșirea standard dacă este un terminal. În mod similar,
+standard. \fBxz\fP va refuza (afișează o eroare și omite \fIfișier\fP) să scrie
+date comprimate la ieșirea standard dacă este un terminal. În mod similar,
\fBxz\fP va refuza să citească datele comprimate de la intrarea standard dacă
este un terminal.
.PP
@@ -55,12 +65,12 @@ Cu excepția cazului în care este specificată opțiunea \fB\-\-stdout\fP,
\fIfișierele\fP altele decât \fB\-\fP sunt scrise într\-un fișier nou al cărui nume
este derivat din numele \fIfișierului\fP sursă:
.IP \(bu 3
-La comprimare, sufixul formatului de fișier țintă (\fB.xz\fP sau \fB.lzma\fP)
-este atașat la numele fișierului sursă pentru a se obține numele fișierului
+La comprimare, sufixul formatului de fișier țintă (\fB.xz\fP sau \fB.lzma\fP) este
+atașat la numele fișierului sursă pentru a se obține numele fișierului
țintă.
.IP \(bu 3
La decomprimare, sufixul \fB.xz\fP, \fB.lzma\fP sau \fB.lz\fP este eliminat din
-numele fișierului pentru a se obține numele fișierului țintă. \fBxz\fP
+numele fișierului pentru a se obține numele fișierului țintă. \fBxz\fP
recunoaște și sufixele \fB.txz\fP și \fB.tlz\fP și le înlocuiește cu sufixul
\&\fB.tar\fP.
.PP
@@ -71,7 +81,7 @@ Cu excepția cazului în care scrie la ieșirea standard, \fBxz\fP va afișa un
avertisment și va omite \fIfișier\fPul dacă se aplică oricare dintre
următoarele:
.IP \(bu 3
-\fIFișierul\fP nu este un fișier obișnuit. Legăturile simbolice nu sunt urmate
+\fIFișierul\fP nu este un fișier obișnuit. Legăturile simbolice nu sunt urmate
și, prin urmare, nu sunt considerate fișiere obișnuite.
.IP \(bu 3
\fIFișierul\fP are mai mult de o legătură dură.
@@ -89,73 +99,73 @@ sufix al niciunui format de fișier acceptat (\fB.xz\fP, \fB.txz\fP, \fB.lzma\fP
.PP
După comprimarea sau decomprimarea cu succes a \fIfișierului\fP, \fBxz\fP copiază
proprietarul, grupul, permisiunile, timpul de acces și timpul de modificare
-din \fIfișierul\fP sursă în fișierul țintă. Dacă copierea grupului eșuează,
+din \fIfișierul\fP sursă în fișierul țintă. Dacă copierea grupului eșuează,
permisiunile sunt modificate astfel încât fișierul țintă să nu devină
accesibil utilizatorilor care nu aveau permisiunea de a accesa \fIfișierul\fP
-sursă. \fBxz\fP nu acceptă încă copierea altor metadate, cum ar fi listele de
+sursă. \fBxz\fP nu acceptă încă copierea altor metadate, cum ar fi listele de
control al accesului sau atributele extinse.
.PP
Odată ce fișierul țintă a fost închis cu succes, \fIfișierul\fP sursă este
-eliminat dacă nu a fost specificată opțiunea \fB\-\-keep\fP. \fIFișierul\fP sursă
-nu este niciodată eliminat dacă rezultatul este scris la ieșirea standard
-sau dacă apare o eroare.
+eliminat dacă nu a fost specificată opțiunea \fB\-\-keep\fP. \fIFișierul\fP sursă nu
+este niciodată eliminat dacă rezultatul este scris la ieșirea standard sau
+dacă apare o eroare.
.PP
Trimiterea unui semnal \fBSIGINFO\fP sau \fBSIGUSR1\fP către procesul \fBxz\fP face
ca acesta să imprime informații despre progres la ieșirea de eroare
-standard. Acest lucru are o utilizare limitată, deoarece atunci când
-ieșirea de eroare standard este un terminal, folosind opțiunea \fB\-\-verbose\fP
-va afișa un indicator de progres de actualizare automată.
+standard. Acest lucru are o utilizare limitată, deoarece atunci când ieșirea
+de eroare standard este un terminal, folosind opțiunea \fB\-\-verbose\fP va afișa
+un indicator de progres de actualizare automată.
.
.SS "Utilizarea memoriei"
Cantitatea de memorie utilizată de \fBxz\fP variază de la câteva sute de
-kiloocteți la câțiva gigaocteți, în funcție de opțiunile de comprimare.
-Opțiunile utilizate la comprimarea unui fișier determină cerințele de
-memorie ale instrumentului de decomprimare. De obicei, instrumentul de
-decomprimare are nevoie de 5% până la 20% din cantitatea de memorie de care
-a avut nevoie instrumentul de comprimare la crearea fișierului. De exemplu,
-decomprimarea unui fișier creat cu \fBxz \-9\fP necesită în prezent 65Mio de
-memorie. Totuși, este posibil să aveți fișiere \fB.xz\fP care necesită câțiva
-gigaocteți de memorie pentru decomprimare.
+kiloocteți la câțiva gigaocteți, în funcție de opțiunile de
+comprimare. Opțiunile utilizate la comprimarea unui fișier determină
+cerințele de memorie ale instrumentului de decomprimare. De obicei,
+instrumentul de decomprimare are nevoie de 5% până la 20% din cantitatea de
+memorie de care a avut nevoie instrumentul de comprimare la crearea
+fișierului. De exemplu, decomprimarea unui fișier creat cu \fBxz \-9\fP necesită
+în prezent 65Mio de memorie. Totuși, este posibil să aveți fișiere \fB.xz\fP
+care necesită câțiva gigaocteți de memorie pentru decomprimare.
.PP
În special utilizatorii de sisteme mai vechi pot considera deranjantă
-posibilitatea unei utilizări foarte mari a memoriei. Pentru a preveni
+posibilitatea unei utilizări foarte mari a memoriei. Pentru a preveni
surprizele neplăcute, \fBxz\fP are încorporat un limitator de utilizare a
-memoriei, care este dezactivat implicit. În timp ce unele sisteme de
-operare oferă modalități de a limita utilizarea memoriei proceselor, bazarea
-pe aceasta nu a fost considerată a fi suficient de flexibilă (de exemplu,
+memoriei, care este dezactivat implicit. În timp ce unele sisteme de operare
+oferă modalități de a limita utilizarea memoriei proceselor, bazarea pe
+aceasta nu a fost considerată a fi suficient de flexibilă (de exemplu,
utilizarea \fBulimit\fP(1) pentru a limita memoria virtuală tinde să paralizeze
\fBmmap\fP(2)).
.PP
Limitatorul de utilizare a memoriei poate fi activat cu opțiunea din linia
-de comandă \fB\-\-memlimit=\fP\fIlimita\fP. Adesea este mai convenabil să activați
+de comandă \fB\-\-memlimit=\fP\fIlimita\fP. Adesea este mai convenabil să activați
limitatorul în mod implicit prin definirea variabilei de mediu
-\fBXZ_DEFAULTS\fP, de exemplu, \fBXZ_DEFAULTS=\-\-memlimit=150MiB\fP. Este posibil
+\fBXZ_DEFAULTS\fP, de exemplu, \fBXZ_DEFAULTS=\-\-memlimit=150MiB\fP. Este posibil
să stabiliți limitele separat pentru comprimare și decomprimare folosind
-\fB\-\-memlimit\-compress=\fP\fIlimita\fP și \fB\-\-memlimit\-decompress=\fP\fIlimita\fP.
-Utilizarea acestor două opțiuni în afara \fBXZ_DEFAULTS\fP este foarte rar
-utilă, deoarece o singură rulare a \fBxz\fP nu poate face atât comprimarea, cât
-și decomprimarea și \fB\-\-memlimit=\fP\fIlimita\fP (sau \fB\-M\fP \fIlimita\fP ) este mai
-scurt de tastat pe linia de comandă.
+\fB\-\-memlimit\-compress=\fP\fIlimita\fP și
+\fB\-\-memlimit\-decompress=\fP\fIlimita\fP. Utilizarea acestor două opțiuni în afara
+\fBXZ_DEFAULTS\fP este foarte rar utilă, deoarece o singură rulare a \fBxz\fP nu
+poate face atât comprimarea, cât și decomprimarea și \fB\-\-memlimit=\fP\fIlimita\fP
+(sau \fB\-M\fP \fIlimita\fP ) este mai scurt de tastat pe linia de comandă.
.PP
Dacă limita de utilizare a memoriei specificată este depășită la
-decomprimare, \fBxz\fP va afișa o eroare și decomprimarea fișierului va eșua.
-Dacă limita este depășită la comprimare, \fBxz\fP va încerca să reducă valorile
-stabilite astfel încât limita să nu mai fie depășită (cu excepția cazului în
-care se utilizează opțiunea \fB\-\-format=raw\fP sau \fB\-\-no\-adjust\fP). În acest
-fel, operațiunea nu va eșua decât dacă limita stabilită este foarte mică.
-Scalarea valorilor stabilite se face în pași care nu se potrivesc cu
-valorile prestabilite ale nivelului de comprimare, de exemplu, dacă limita
-este doar puțin mai mică decât cantitatea necesară pentru \fBxz \-9\fP, valorile
-stabilite vor fi reduse doar puțin , nu până la valoarea prestabilită a lui
-\fBxz \-8\fP.
+decomprimare, \fBxz\fP va afișa o eroare și decomprimarea fișierului va
+eșua. Dacă limita este depășită la comprimare, \fBxz\fP va încerca să reducă
+valorile stabilite astfel încât limita să nu mai fie depășită (cu excepția
+cazului în care se utilizează opțiunea \fB\-\-format=raw\fP sau
+\fB\-\-no\-adjust\fP). În acest fel, operațiunea nu va eșua decât dacă limita
+stabilită este foarte mică. Scalarea valorilor stabilite se face în pași
+care nu se potrivesc cu valorile prestabilite ale nivelului de comprimare,
+de exemplu, dacă limita este doar puțin mai mică decât cantitatea necesară
+pentru \fBxz \-9\fP, valorile stabilite vor fi reduse doar puțin , nu până la
+valoarea prestabilită a lui \fBxz \-8\fP.
.
.SS "Concatenare și completare (prin umplere cu octeți nuli) cu fișiere .xz"
-Este posibil să concatenați fișierele \fB.xz\fP așa cum sunt. \fBxz\fP va
+Este posibil să concatenați fișierele \fB.xz\fP așa cum sunt. \fBxz\fP va
decomprima astfel de fișiere ca și cum ar fi un singur fișier \fB.xz\fP.
.PP
Este posibil să se introducă umplutură între părțile concatenate sau după
ultima parte. Umplutura trebuie să fie compusă din octeți nuli, iar
-dimensiunea umpluturii trebuie să fie un multiplu de patru octeți. Acest
+dimensiunea umpluturii trebuie să fie un multiplu de patru octeți. Acest
lucru poate fi util, de exemplu, dacă fișierul \fB.xz\fP este stocat pe un
mediu care măsoară dimensiunile fișierelor în blocuri de 512 de octeți.
.PP
@@ -167,7 +177,7 @@ fluxurile brute.
.SS "Sufixe de numere întregi și valori speciale"
În majoritatea locurilor în care este de așteptat un număr întreg ca
argument, un sufix opțional este acceptat pentru a indica cu ușurință
-numerele întregi mari. Nu trebuie să existe spațiu între numărul întreg și
+numerele întregi mari. Nu trebuie să existe spațiu între numărul întreg și
sufix.
.TP
\fBKiB\fP
@@ -175,11 +185,11 @@ sufix.
\fBKB\fP sunt acceptate ca sinonime pentru \fBKiB\fP.
.TP
\fBMiB\fP
-Înmulțește numărul întreg cu 1,048,576 (2^20). \fBMi\fP, \fBm\fP, \fBM\fP, și \fBMB\fP
+Înmulțește numărul întreg cu 1,048,576 (2^20). \fBMi\fP, \fBm\fP, \fBM\fP, și \fBMB\fP
sunt acceptate ca sinonime pentru \fBMiB\fP.
.TP
\fBGiB\fP
-Înmulțește numărul întreg cu 1,073,741,824 (2^30). \fBGi\fP, \fBg\fP, \fBG\fP, și
+Înmulțește numărul întreg cu 1,073,741,824 (2^30). \fBGi\fP, \fBg\fP, \fBG\fP, și
\fBGB\fP sunt acceptate ca sinonime pentru \fBGiB\fP.
.PP
Valoarea specială \fBmax\fP poate fi utilizată pentru a indica valoarea maximă
@@ -190,7 +200,7 @@ Dacă sunt date mai multe opțiuni de mod de funcționare, ultima dintre ele,
este cea care va avea efect.
.TP
\fB\-z\fP, \fB\-\-compress\fP
-Comprimare. Acesta este modul de operare implicit atunci când nu este
+Comprimare. Acesta este modul de operare implicit atunci când nu este
specificată nicio opțiune de mod de funcționare și nici un alt mod de
operare nu este implicat din numele comenzii (de exemplu, \fBunxz\fP implică
\fB\-\-decompress\fP).
@@ -199,28 +209,28 @@ operare nu este implicat din numele comenzii (de exemplu, \fBunxz\fP implică
Decomprimare.
.TP
\fB\-t\fP, \fB\-\-test\fP
-Testează integritatea \fIfișierelor\fP comprimate. Această opțiune este
+Testează integritatea \fIfișierelor\fP comprimate. Această opțiune este
echivalentă cu \fB\-\-decompress \-\-stdout\fP cu excepția faptului că datele
-decomprimate sunt înlăturate în loc să fie scrise la ieșirea standard. Nu
+decomprimate sunt înlăturate în loc să fie scrise la ieșirea standard. Nu
sunt create sau eliminate fișiere.
.TP
\fB\-l\fP, \fB\-\-list\fP
-Afișează informații despre \fIfișiere\fP comprimate. Nu are loc nicio
-decomprimare la ieșire și nu sunt create sau eliminate fișiere. În modul
+Afișează informații despre \fIfișiere\fP comprimate. Nu are loc nicio
+decomprimare la ieșire și nu sunt create sau eliminate fișiere. În modul
listă, programul nu poate citi datele comprimate din intrarea standard sau
din alte surse care nu pot fi căutate.
.IP ""
Listarea implicită arată informații de bază despre \fIfișiere\fP, câte un
-fișier pe linie. Pentru a obține informații mai detaliate, utilizați și
-opțiunea \fB\-\-verbose\fP. Pentru și mai multe informații, utilizați opțiunea
+fișier pe linie. Pentru a obține informații mai detaliate, utilizați și
+opțiunea \fB\-\-verbose\fP. Pentru și mai multe informații, utilizați opțiunea
\fB\-\-verbose\fP de două ori, dar rețineți că acest lucru poate fi lent,
deoarece obținerea tuturor informațiilor suplimentare necesită multe
-căutări. Lățimea ieșirii detaliate depășește 80 de caractere, deci
+căutări. Lățimea ieșirii detaliate depășește 80 de caractere, deci
canalizarea ieșirii către, de exemplu, \fBless\ \-S\fP poate fi convenabilă dacă
terminalul nu este suficient de lat.
.IP ""
Ieșirea exactă poate varia între versiunile \fBxz\fP și diferitele
-localizări(configurările regionale). Pentru ieșiri care pot fi citite de
+localizări(configurările regionale). Pentru ieșiri care pot fi citite de
mașină, ar trebui utilizată opțiunea \fB\-\-robot \-\-list\fP.
.
.SS "Modificatori de operare"
@@ -231,8 +241,8 @@ Nu șterge fișierele de intrare.
Începând cu \fBxz\fP 5.2.6, această opțiune face ca \fBxz\fP să comprime sau să
decomprime, chiar dacă intrarea este o legătură simbolică către un fișier
obișnuit, are mai mult de\-o legătură dură sau are marcați biții setuid,
-setgid sau bitul lipicios. Biții setuid, setgid și bitul lipicios nu sunt
-copiați în fișierul țintă. În versiunile anterioare acest lucru se făcea
+setgid sau bitul lipicios. Biții setuid, setgid și bitul lipicios nu sunt
+copiați în fișierul țintă. În versiunile anterioare acest lucru se făcea
numai cu ajutorul opțiunii \fB\-\-force\fP.
.TP
\fB\-f\fP, \fB\-\-force\fP
@@ -249,22 +259,22 @@ sunt copiați în fișierul țintă.
.IP \(bu 3
Când este utilizată cu opțiunile \fB\-\-decompress\fP și \fB\-\-stdout\fP, comanda
\fBxz\fP nu poate recunoaște tipul fișierului sursă, și copiază fișierul sursă
-așa cum este la ieșirea standard. Acest lucru permite comenzii \fBxzcat\fP
+așa cum este la ieșirea standard. Acest lucru permite comenzii \fBxzcat\fP
\fB\-\-force\fP să fie folosită drept comanda \fBcat\fP(1) pentru fișierele care nu
-au fost comprimate cu \fBxz\fP. Rețineți că, în viitor, \fBxz\fP ar putea să
+au fost comprimate cu \fBxz\fP. Rețineți că, în viitor, \fBxz\fP ar putea să
accepte noi formate de fișiere comprimate, ceea ce poate face ca \fBxz\fP să
decomprime mai multe tipuri de fișiere în loc să le copieze așa cum sunt la
-ieșirea standard. Opțiunea \fB\-\-format=\fP\fIformat\fP poate fi folosită pentru a
+ieșirea standard. Opțiunea \fB\-\-format=\fP\fIformat\fP poate fi folosită pentru a
restricționa \fBxz\fP să decomprime doar un singur format de fișier.
.RE
.TP
\fB\-c\fP, \fB\-\-stdout\fP, \fB\-\-to\-stdout\fP
Scrie datele comprimate sau decomprimate la ieșirea standard în loc de
-într\-un fișier. Aceasta implică \fB\-\-keep\fP.
+într\-un fișier. Aceasta implică \fB\-\-keep\fP.
.TP
\fB\-\-single\-stream\fP
Decomprimă numai primul flux \fB.xz\fP și ignoră în tăcere posibilele date de
-intrare rămase în urma fluxului. În mod normal, astfel de resturi rămase
+intrare rămase în urma fluxului. În mod normal, astfel de resturi rămase
face ca \fBxz\fP să afișeze o eroare.
.IP ""
\fBxz\fP nu decomprimă niciodată mai mult de un flux din fișierele \fB.lzma\fP sau
@@ -275,22 +285,22 @@ Această opțiune nu are efect dacă modul de funcționare nu este
\fB\-\-decompress\fP sau \fB\-\-test\fP.
.TP
\fB\-\-no\-sparse\fP
-Dezactivează crearea de fișiere dispersate. În mod implicit, dacă
-decomprimă într\-un fișier obișnuit, \fBxz\fP încearcă să facă fișierul
-dispersat dacă datele decomprimate conțin secvențe lungi de zerouri binare.
-De asemenea, funcționează atunci când scrie la ieșirea standard, atâta timp
-cât ieșirea standard este conectată la un fișier obișnuit și sunt
-îndeplinite anumite condiții suplimentare pentru a o face în siguranță.
-Crearea de fișiere dispersate poate economisi spațiu pe disc și poate
-accelera decomprimarea prin reducerea cantității de date de In/Ieș pe disc.
+Dezactivează crearea de fișiere dispersate. În mod implicit, dacă decomprimă
+într\-un fișier obișnuit, \fBxz\fP încearcă să facă fișierul dispersat dacă
+datele decomprimate conțin secvențe lungi de zerouri binare. De asemenea,
+funcționează atunci când scrie la ieșirea standard, atâta timp cât ieșirea
+standard este conectată la un fișier obișnuit și sunt îndeplinite anumite
+condiții suplimentare pentru a o face în siguranță. Crearea de fișiere
+dispersate poate economisi spațiu pe disc și poate accelera decomprimarea
+prin reducerea cantității de date de In/Ieș pe disc.
.TP
\fB\-S\fP \fI.suf\fP, \fB\-\-suffix=\fP\fI.suf\fP
Când comprimă, utilizează \fI.suf\fP ca sufix pentru fișierul țintă în loc de
-\&\fB.xz\fP sau \fB.lzma\fP. Dacă nu scrie la ieșirea standard și fișierul sursă
-are deja sufixul \fI.suf\fP, este afișat un avertisment și fișierul este omis.
+\&\fB.xz\fP sau \fB.lzma\fP. Dacă nu scrie la ieșirea standard și fișierul sursă are
+deja sufixul \fI.suf\fP, este afișat un avertisment și fișierul este omis.
.IP ""
Când decomprimă, recunoaște fișierele cu sufixul \fI.suf\fP în plus față de
-fișierele cu sufixul \fB.xz\fP, \fB.txz\fP, \fB.lzma\fP, \fB.tlz\fP sau \fB.lz\fP. Dacă
+fișierele cu sufixul \fB.xz\fP, \fB.txz\fP, \fB.lzma\fP, \fB.tlz\fP sau \fB.lz\fP. Dacă
fișierul sursă are sufixul \fI.suf\fP, sufixul este eliminat pentru a obține
numele fișierului țintă.
.IP ""
@@ -301,10 +311,10 @@ brute.
.TP
\fB\-\-files\fP[\fB=\fP\fIfișier\fP]
Citește numele fișierelor de procesat din \fIfișier\fP; dacă \fIfișierul\fP este
-omis, numele fișierelor sunt citite de la intrarea standard. Numele de
-fișiere trebuie să fie terminate cu caracterul de linie nouă. O liniuță
+omis, numele fișierelor sunt citite de la intrarea standard. Numele de
+fișiere trebuie să fie terminate cu caracterul de linie nouă. O liniuță
(\fB\-\fP) este luată ca nume de fișier obișnuit; nu înseamnă intrarea
-standard. Dacă numele de fișiere sunt date și ca argumente în linia de
+standard. Dacă numele de fișiere sunt date și ca argumente în linia de
comandă, ele sunt procesate înainte ca numele fișierelor să fie citite din
\fIfișier\fP.
.TP
@@ -320,9 +330,9 @@ Specifică \fIformatul\fP fișierului pentru comprimare sau decomprimare:
.RS
.TP
\fBauto\fP
-Aceasta este valoarea implicită. La comprimare, \fBauto\fP este echivalent cu
-\fBxz\fP. La decomprimare, formatul fișierului de intrare este detectat
-automat. Rețineți că fluxurile brute (create cu \fB\-\-format=raw\fP) nu pot fi
+Aceasta este valoarea implicită. La comprimare, \fBauto\fP este echivalent cu
+\fBxz\fP. La decomprimare, formatul fișierului de intrare este detectat
+automat. Rețineți că fluxurile brute (create cu \fB\-\-format=raw\fP) nu pot fi
detectate automat.
.TP
\fBxz\fP
@@ -335,95 +345,96 @@ Comprimă în formatul de fișier \fB.lzma\fP vechi sau acceptă numai fișierel
compatibilitatea cu versiunile mai vechi de LZMA Utils.
.TP
\fBlzip\fP
-Acceptă numai fișierele \fB.lz\fP când decomprimă. Comprimarea nu este
+Acceptă numai fișierele \fB.lz\fP când decomprimă. Comprimarea nu este
acceptată.
.IP ""
-Formatul \fB.lz\fP versiunea 0 și versiunea neextinsă 1 sunt acceptate.
-Fișierele versiunea 0 au fost produse de \fBlzip\fP cu versiunea 1.3 sau mai
-veche. Astfel de fișiere nu sunt obișnuite, dar pot fi găsite în arhivele
-de fișiere, deoarece câteva pachete sursă au fost lansate în acest format.
-Oamenii ar putea avea și fișiere personale vechi în acest format. Suportul
-de decomprimare pentru versiunea de format 0 a fost eliminat în \fBlzip\fP
-1.18.
+Formatul \fB.lz\fP versiunea 0 și versiunea neextinsă 1 sunt
+acceptate. Fișierele versiunea 0 au fost produse de \fBlzip\fP cu versiunea 1.3
+sau mai veche. Astfel de fișiere nu sunt obișnuite, dar pot fi găsite în
+arhivele de fișiere, deoarece câteva pachete sursă au fost lansate în acest
+format. Oamenii ar putea avea și fișiere personale vechi în acest
+format. Suportul de decomprimare pentru versiunea de format 0 a fost
+eliminat în \fBlzip\fP 1.18.
.IP ""
\fBlzip\fP 1.4 și versiunile ulterioare creează fișiere în formatul versiunea
-1. Extensia „sync flush marker” pentru versiunea 1 de format a fost
-adăugată în \fBlzip\fP 1.6. Această extensie este folosită rar și nu este
-acceptată de \fBxz\fP (diagnosticată ca intrare coruptă).
+1. Extensia „sync flush marker” pentru versiunea 1 de format a fost adăugată
+în \fBlzip\fP 1.6. Această extensie este folosită rar și nu este acceptată de
+\fBxz\fP (diagnosticată ca intrare coruptă).
.TP
\fBraw\fP
-Comprimă sau decomprimă un flux brut (fără anteturi). Acest lucru este
-destinat doar utilizatorilor avansați. Pentru a decodifica fluxurile brute,
+Comprimă sau decomprimă un flux brut (fără anteturi). Acest lucru este
+destinat doar utilizatorilor avansați. Pentru a decodifica fluxurile brute,
trebuie să utilizați opțiunea \fB\-\-format=raw\fP și să specificați în mod
explicit lanțul de filtre, care în mod normal ar fi fost stocat în
anteturile containerului.
.RE
.TP
\fB\-C\fP \fIverificarea\fP, \fB\-\-check=\fP\fIverificarea\fP
-Specifică tipul verificării integrității. Verificarea este calculată din
-datele necomprimate și stocată în fișierul \fB.xz\fP. Această opțiune are
-efect numai la comprimarea în format \fB.xz\fP; formatul \fB.lzma\fP nu acceptă
-verificări de integritate. Verificarea integrității (dacă există) este
+Specifică tipul verificării integrității. Verificarea este calculată din
+datele necomprimate și stocată în fișierul \fB.xz\fP. Această opțiune are efect
+numai la comprimarea în format \fB.xz\fP; formatul \fB.lzma\fP nu acceptă
+verificări de integritate. Verificarea integrității (dacă există) este
efectuată atunci când fișierul \fB.xz\fP este decomprimat.
.IP ""
Tipuri de \fIverificare\fP acceptate:
.RS
.TP
\fBnone\fP
-Nu calculează deloc o verificare a integrității. Aceasta este de obicei o
-idee proastă. Acest lucru poate fi util atunci când integritatea datelor
+Nu calculează deloc o verificare a integrității. Aceasta este de obicei o
+idee proastă. Acest lucru poate fi util atunci când integritatea datelor
este oricum verificată prin alte mijloace.
.TP
\fBcrc32\fP
Calculează CRC32 folosind polinomul din IEEE\-802.3 (Ethernet).
.TP
\fBcrc64\fP
-Calculează CRC64 folosind polinomul din ECMA\-182. Aceasta este valoarea
+Calculează CRC64 folosind polinomul din ECMA\-182. Aceasta este valoarea
implicită, deoarece este ceva mai bună decât CRC32 la detectarea fișierelor
deteriorate, iar diferența de viteză este neglijabilă.
.TP
\fBsha256\fP
-Calculează SHA\-256. Acest lucru este oarecum mai lent decât CRC32 și CRC64.
+Calculează SHA\-256. Acest lucru este oarecum mai lent decât CRC32 și CRC64.
.RE
.IP ""
-Integritatea antetelor \fB.xz\fP este întotdeauna verificată cu CRC32. Nu este
+Integritatea antetelor \fB.xz\fP este întotdeauna verificată cu CRC32. Nu este
posibilă modificarea sau dezactivarea acesteia.
.TP
\fB\-\-ignore\-check\fP
-Nu efectuează verificarea integrității datelor comprimate la decomprimare.
-Valorile CRC32 din antetele \fB.xz\fP vor fi însă verificate normal.
+Nu efectuează verificarea integrității datelor comprimate la
+decomprimare. Valorile CRC32 din antetele \fB.xz\fP vor fi însă verificate
+normal.
.IP ""
-\fBNu utilizați această opțiune decât dacă știți ce faceți.\fP Motive posibile
+\fBNu utilizați această opțiune decât dacă știți ce faceți\fP. Motive posibile
pentru a utiliza această opțiune:
.RS
.IP \(bu 3
Încercarea de a recupera datele dintr\-un fișier .xz corupt.
.IP \(bu 3
-Accelerarea decomprimării. Acest lucru contează mai ales cu SHA\-256 sau cu
-fișierele care s\-au comprimat extrem de bine. Este recomandat să nu
+Accelerarea decomprimării. Acest lucru contează mai ales cu SHA\-256 sau cu
+fișierele care s\-au comprimat extrem de bine. Este recomandat să nu
utilizați această opțiune în acest scop decât dacă integritatea fișierului
este verificată extern într\-un alt mod.
.RE
.TP
\fB\-0\fP ... \fB\-9\fP
-Selectează un nivel prestabilit de comprimare. Valoarea implicită este
-\fB\-6\fP. Dacă sunt specificate mai multe niveluri prestabilite, ultimul are
-efect. Dacă a fost deja specificat un lanț de filtre personalizat,
+Selectează un nivel prestabilit de comprimare. Valoarea implicită este
+\fB\-6\fP. Dacă sunt specificate mai multe niveluri prestabilite, ultimul are
+efect. Dacă a fost deja specificat un lanț de filtre personalizat,
specificarea unui nivel prestabilit de comprimare șterge lanțul de filtre
personalizat.
.IP ""
Diferențele dintre valorile prestabilite sunt mai semnificative decât cu
-\fBgzip\fP(1) și \fBbzip2\fP(1). Valorile de comprimare selectate determină
+\fBgzip\fP(1) și \fBbzip2\fP(1). Valorile de comprimare selectate determină
cerințele de memorie ale instrumentului de decomprimare, astfel încât
utilizarea unui nivel prea mare prestabilit ar putea face „dureroasă”
-decomprimarea fișierului pe un sistem vechi cu puțină memorie RAM. Mai
+decomprimarea fișierului pe un sistem vechi cu puțină memorie RAM. Mai
exact, \fBnu este o idee bună să folosiți orbește \-9 pentru tot\fP așa cum se
întâmplă adesea cu \fBgzip\fP(1) și \fBbzip2\fP(1).
.RS
.TP
\fB\-0\fP ... \fB\-3\fP
-Acestea sunt valorile prestabilite oarecum rapide. \fB\-0\fP este uneori mai
-rapid decât \fBgzip \-9\fP în timp ce comprimă mult mai bine. Cele mai ridicate
+Acestea sunt valorile prestabilite oarecum rapide. \fB\-0\fP este uneori mai
+rapid decât \fBgzip \-9\fP în timp ce comprimă mult mai bine. Cele mai ridicate
au adesea viteza comparabilă cu \fBbzip2\fP(1) cu un raport de comprimare
comparabil sau mai bun, deși rezultatele depind foarte mult de tipul de date
care sunt comprimate.
@@ -431,23 +442,23 @@ care sunt comprimate.
\fB\-4\fP ... \fB\-6\fP
Comprimare bună spre foarte bună, păstrând în același timp utilizarea
memoriei de către instrumentul de decomprimare la un nivel rezonabil chiar
-și pentru sistemele vechi. \fB\-6\fP este valoarea implicită, care este de
+și pentru sistemele vechi. \fB\-6\fP este valoarea implicită, care este de
obicei o alegere bună pentru distribuirea fișierelor care trebuie să poată
-fi decomprimate chiar și pe sisteme cu doar 16Mio de memorie RAM. Opțiunile
+fi decomprimate chiar și pe sisteme cu doar 16Mio de memorie RAM. Opțiunile
(\fB\-5e\fP sau \fB\-6e\fP ar putea fi demne de luat în considerare. A se vedea
opțiunea \fB\-\-extreme\fP.)
.TP
\fB\-7 ... \-9\fP
Acestea sunt precum \fB\-6\fP, dar cu cerințe mai mari de memorie pentru
-comprimare și decomprimare. Acestea sunt utile numai atunci când comprimați
+comprimare și decomprimare. Acestea sunt utile numai atunci când comprimați
fișiere mai mari de 8Mio, 16Mio și, respectiv, 32Mio.
.RE
.IP ""
Pe același hardware, viteza de decomprimare este aproximativ un număr
-constant de octeți de date comprimate pe secundă. Cu alte cuvinte, cu cât
+constant de octeți de date comprimate pe secundă. Cu alte cuvinte, cu cât
comprimarea este mai bună, cu atât decomprimarea va fi de obicei mai
-rapidă. Aceasta înseamnă, de asemenea, că valoarea de la ieșire a
-cantității de date necomprimate produsă pe secundă poate varia foarte mult.
+rapidă. Aceasta înseamnă, de asemenea, că valoarea de la ieșire a cantității
+de date necomprimate produsă pe secundă poate varia foarte mult.
.IP ""
Următorul tabel rezumă caracteristicile valorilor prestabilite:
.RS
@@ -475,43 +486,47 @@ ValPrestab;DimDict;CPUComp;MemComp;MemDec
Descrieri coloane:
.RS
.IP \(bu 3
-DimDict este dimensiunea dicționarului LZMA2. Este o risipă de memorie să
-folosești un dicționar mai mare decât dimensiunea fișierului necomprimat.
-De aceea este bine să evitați utilizarea valorilor prestabilite \fB\-7\fP
-\&... \fB\-9\fP atunci când nu este nevoie cu adevărat de ele. Pentru valoarea
-prestabilită \fB\-6\fP sau alta mai mică, cantitatea de memorie irosită este de
-obicei suficient de mică pentru a nu conta.
+DimDict este dimensiunea dicționarului LZMA2. Este o risipă de memorie să
+folosești un dicționar mai mare decât dimensiunea fișierului necomprimat. De
+aceea este bine să evitați utilizarea valorilor prestabilite \fB\-7\fP ... \fB\-9\fP
+atunci când nu este nevoie cu adevărat de ele. Pentru valoarea prestabilită
+\fB\-6\fP sau alta mai mică, cantitatea de memorie irosită este de obicei
+suficient de mică pentru a nu conta.
.IP \(bu 3
CPUComp este o reprezentare simplificată a configurărilor LZMA2 care
-afectează viteza de comprimare. Dimensiunea dicționarului afectează și
+afectează viteza de comprimare. Dimensiunea dicționarului afectează și
viteza, așa că, în timp ce CPUComp este aceeași pentru nivelurile \fB\-6\fP
-\&... \fB\-9\fP, nivelurile mai mari tind să fie puțin mai lente. Pentru a obține
+\&... \fB\-9\fP, nivelurile mai mari tind să fie puțin mai lente. Pentru a obține
o comprimare și mai lentă și, astfel, posibil mai bună, consultați opțiunea
\fB\-\-extreme\fP.
.IP \(bu 3
MemComp conține cerințele de memorie ale comprimării în modul cu un singur
-fir de execuție. Poate varia ușor între versiunile \fBxz\fP. Cerințele de
-memorie ale unora dintre viitoarele moduri cu mai multe fire de execuție pot
-să fie din nefericire cu mult mai mari decât cele ale modului cu un singur
-fir.
+fir de execuție. Poate varia ușor între versiunile \fBxz\fP.
.IP \(bu 3
-MemDec conține cerințele de memorie pentru decomprimare. Adică,
+MemDec conține cerințele de memorie pentru decomprimare. Adică,
configurările de comprimare determină cerințele de memorie ale
-decomprimării. Cantitatea exactă a memoriei utilizate la decomprimare este
+decomprimării. Cantitatea exactă a memoriei utilizate la decomprimare este
puțin mai mare decât dimensiunea dicționarului LZMA2, dar valorile din tabel
au fost rotunjite la următorul Mio.
.RE
+.IP ""
+Cerințele de memorie ale modului cu mai multe fire de execuție sunt
+semnificativ mai mari decât cele ale modului cu un singur fir de
+execuție. Cu valoarea implicită a lui \fB\-\-block\-size\fP, fiecare fir are
+nevoie de 3*3*DictSize plus MemComp sau MemDec. De exemplu, patru fire de
+execuție cu valoarea prestabilită \fB\-6\fP au nevoie de 660\(en670\ Mio de
+memorie.
.TP
\fB\-e\fP, \fB\-\-extreme\fP
Utilizează o variantă mai lentă a nivelului prestabilit de comprimare
selectat (\fB\-0\fP ... \fB\-9\fP) pentru a obține un raport de comprimare puțin mai
-bun, dar din nefericire, acest lucru îl poate înrăutăți. Utilizarea
-memoriei pentru decomprimare nu este afectată, dar utilizarea memoriei la
-comprimare crește puțin la nivelurile prestabilite \fB\-0\fP ... \fB\-3\fP.
+bun, dar din nefericire, acest lucru îl poate înrăutăți. Utilizarea memoriei
+pentru decomprimare nu este afectată, dar utilizarea memoriei la comprimare
+crește puțin la nivelurile prestabilite \fB\-0\fP ... \fB\-3\fP.
.IP ""
Deoarece există două valori prestabilite cu dimensiuni ale dicționarului de
4Mio și 8Mio, valorile prestabilite \fB\-3e\fP și \fB\-5e\fP folosesc configurări
-puțin mai rapide (CPUComp mai mic) decât \fB\-4e\fP și \fB\-6e\fP, respectiv. În
+puțin mai rapide (CPUComp mai mic) decât \fB\-4e\fP și \fB\-6e\fP, respectiv. În
acest fel, nu există două nivele prestabilite identice.
.RS
.RS
@@ -545,64 +560,93 @@ dicționarul 8Mio, a căror ordine de la cel mai rapid la cel mai lent este
\fB\-\-best\fP
.PD
Acestea sunt alias de opțiuni, oarecum înșelătoare pentru \fB\-0\fP și,
-respectiv, \fB\-9\fP. Acestea sunt furnizate numai pentru compatibilitatea cu
-LZMA Utils. Evitați utilizarea acestor opțiuni.
+respectiv, \fB\-9\fP. Acestea sunt furnizate numai pentru compatibilitatea cu
+LZMA Utils. Evitați utilizarea acestor opțiuni.
.TP
\fB\-\-block\-size=\fP\fIdimensiunea\fP
Când comprimă în formatul \fB.xz\fP, împarte datele de intrare în blocuri de
-\fIdimensiunea\fP octeți. Blocurile sunt comprimate independent unul de
+\fIdimensiunea\fP octeți. Blocurile sunt comprimate independent unul de
celălalt, ceea ce ajută în modul cu mai multe fire de execuție și face
-posibilă decomprimarea cu acces aleatoriu limitat. Această opțiune este de
+posibilă decomprimarea cu acces aleatoriu limitat. Această opțiune este de
obicei folosită pentru a suprascrie dimensiunea implicită a blocului în
modul cu mai multe fire de execuție, dar această opțiune poate fi folosită
și în modul cu un singur fir de execuție.
.IP ""
În modul cu mai multe fire de execuție, aproximativ de trei ori
\fIdimensiunea\fP de octeți vor fi alocați în fiecare fir pentru stocarea
-intrării și ieșirii. \fIDimensiunea\fP implicită este de trei ori dimensiunea
-dicționarului LZMA2 sau 1Mio, oricare dintre acestea este mai mare. În mod
+intrării și ieșirii. \fIDimensiunea\fP implicită este de trei ori dimensiunea
+dicționarului LZMA2 sau 1Mio, oricare dintre acestea este mai mare. În mod
obișnuit, o valoare bună este de două la patru ori dimensiunea dicționarului
-LZMA2 sau de cel puțin 1Mio. Utilizarea unei \fIdimensiuni\fP mai mici decât
+LZMA2 sau de cel puțin 1Mio. Utilizarea unei \fIdimensiuni\fP mai mici decât
dimensiunea dicționarului LZMA2 este o risipă de memorie RAM, deoarece
atunci memoria tampon a dicționarului LZMA2 nu va fi niciodată utilizată pe
-deplin. Dimensiunile blocurilor sunt stocate în antetele blocurilor, pe
-care o versiune viitoare a \fBxz\fP le va folosi pentru decomprimarea cu mai
-multe fire de execuție.
+deplin. În modul cu mai multe fire de execuție, dimensiunile blocurilor sunt
+stocate în anteturile blocurilor. Aceste informații privind dimensiunea sunt
+necesare pentru decomprimarea cu mai multe fire.
.IP ""
În modul cu un singur fir de execuție, nicio divizare a blocurilor nu se
-face în mod implicit. Folosirea acestei opțiuni nu afectează utilizarea
-memoriei. Nu sunt stocate informații despre dimensiune în antetele
+face în mod implicit. Folosirea acestei opțiuni nu afectează utilizarea
+memoriei. Nu sunt stocate informații despre dimensiune în antetele
blocurilor, astfel încât fișierele create în modul cu un singur fir de
execuție nu vor fi identice cu fișierele create în modul cu mai multe fire
-de execuție. Lipsa informațiilor despre dimensiune înseamnă, de asemenea,
-că o versiune viitoare de \fBxz\fP nu va putea decomprima fișierele în modul cu
-mai multe fire de execuție.
-.TP
-\fB\-\-block\-list=\fP\fIdimensiuni\fP
-Atunci când comprimă în formatul \fB.xz\fP, începe un nou bloc după intervalele
-specificate, de date necomprimate.
-.IP ""
-\fIDimensiunile\fP necomprimate ale blocurilor sunt specificate ca o listă
-separată prin virgule. Omiterea unei dimensiuni (două sau mai multe virgule
-consecutive) este o prescurtare pentru a folosi dimensiunea blocului
+de execuție. Lipsa informațiilor privind dimensiunea înseamnă, de asemenea,
+că \fBxz\fP nu va putea decomprima fișierele în modul cu mai multe fire. de
+execuție.
+.TP
+\fB\-\-block\-list=\fP\fIelemente\fP
+Când comprimă în formatul \fB.xz\fP, începe un nou bloc cu un lanț de filtre
+personalizat opțional după intervalele specificate de date necomprimate.
+.IP ""
+\fIelementele\fP sunt o listă separată prin virgule. Fiecare element este
+format dintr\-un număr opțional de lanț de filtrare între 0 și 9, urmat de
+două puncte (\fB:\fP) și de o dimensiune cerută a datelor
+necomprimate. Omiterea unui element (două sau mai multe virgule consecutive)
+este o prescurtare pentru a utiliza dimensiunea și filtrele din elementul
anterior.
.IP ""
-Dacă fișierul de intrare este mai mare decât suma \fIdimensiuni\fPlor, ultima
-valoare din \fIdimensiuni\fP se repetă până la sfârșitul fișierului. O valoare
-specială de \fB0\fP poate fi utilizată ca ultima valoare pentru a indica faptul
-că restul fișierului ar trebui să fie codificat ca un singur bloc.
+În cazul în care fișierul de intrare este mai mare decât suma dimensiunilor
+din \fIelemente\fP, ultimul element se repetă până la sfârșitul fișierului. O
+valoare specială de \fB0\fP poate fi utilizată ca ultimă dimensiune pentru a
+indica faptul că restul fișierului trebuie să fie codificat ca un singur
+bloc.
+.IP ""
+Un lanț de filtre alternativ pentru fiecare bloc poate fi specificat în
+combinație cu opțiunile \fB\-\-filters1=\fP\fIfiltre\fP \&...\&
+\fB\-\-filters9=\fP\fIfiltre\fP. Aceste opțiuni definesc lanțuri de filtre cu un
+identificator cuprins între 1\(en9. Lanțul de filtre 0 poate fi utilizat
+pentru a se referi la lanțul de filtre implicit, ceea ce este același lucru
+cu a nu specifica un lanț de filtre. Identificatorul lanțului de filtre
+poate fi utilizat înaintea dimensiunii necomprimate, urmat de două puncte
+(\fB:\fP). De exemplu, dacă se specifică
+\fB\-\-block\-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB\fP, atunci blocurile vor fi
+create folosind:
+.RS
+.IP \(bu 3
+Lanțul de filtre specificat de \fB\-\-filters1\fP și 2 Mio de intrare
+.IP \(bu 3
+Lanțul de filtre specificat de \fB\-\-filters3\fP și 2 Mio de intrare
+.IP \(bu 3
+Lanțul de filtre specificat de \fB\-\-filters2\fP și 4 Mio de intrare
+.IP \(bu 3
+Lanțul de filtre specificat de \fB\-\-filters2\fP și 4 Mio de intrare
+.IP \(bu 3
+Lanțul de filtre implicit și 2 MiB de intrare
+.IP \(bu 3
+Lanțul de filtre implicit și 4 MiB de intrare pentru fiecare bloc până la
+sfârșitul intrării.
+.RE
.IP ""
-Dacă se specifică \fIdimensiuni\fP care depășesc dimensiunea blocului
-codificatorului (fie valoarea implicită în modul fire de execuție, fie
-valoarea specificată cu opțiunea \fB\-\-block\-size=\fP\fIdimensiune\fP),
-codificatorul va crea blocuri suplimentare păstrând în același timp limitele
-specificate în \fIdimensiuni\fP. De exemplu, dacă se specifică
-\fB\-\-block\-size=10MiB\fP \fB\-\-block\-list=5MiB,10MiB,8MiB,12MiB,24MiB\fP iar
-fișierul de intrare este de 80Mio, se vor obține 11 blocuri de: 5, 10, 8,
-10, 2, 10, 10, 4, 10, 10 și 1Mio.
+Dacă se specifică o dimensiune care depășește dimensiunea blocului
+codificatorului (fie valoarea implicită în modul cu fire de execuție, fie
+valoarea specificată cu \fB\-\-block\-size=\fP\fIdimensiune\fP), codificatorul va
+crea blocuri suplimentare, păstrând limitele specificate în \fIelemente\fP. De
+exemplu, dacă se specifică \fB\-\-block\-size=10MiB\fP
+\fB\-\-block\-list=5MiB,10MiB,8MiB,12MiB,24MiB\fP și fișierul de intrare este de
+80 MiB, se vor obține 11 blocuri: 5, 10, 8, 10, 10, 2, 10, 10, 10, 4, 10,
+10, 10 și 1 Mio.
.IP ""
În modul cu mai multe fire de execuție, dimensiunile blocurilor sunt stocate
-în antetele blocurilor. Acest lucru nu se face în modul cu un singur fir de
+în antetele blocurilor. Acest lucru nu se face în modul cu un singur fir de
execuție, astfel încât ieșirea codificată nu va fi identică cu cea a modului
cu mai multe fire de execuție.
.TP
@@ -610,34 +654,34 @@ cu mai multe fire de execuție.
La comprimare, dacă au trecut mai mult de \fItimp_limită\fP milisecunde (un
întreg pozitiv) de la curățarea anterioară și citirea mai multor intrări
s\-ar bloca, toate datele de intrare în așteptare sunt eliminate din
-codificator și puse la dispoziție în fluxul de ieșire. Acest lucru poate să
+codificator și puse la dispoziție în fluxul de ieșire. Acest lucru poate să
fie util dacă \fBxz\fP este utilizat pentru a comprima datele care sunt
-transmise în flux printr\-o rețea. Valorile mici de \fItimp_limită\fP fac
-datele disponibile la capătul de recepție cu o mică întârziere, dar valorile
-mari de \fItimp_limită\fP oferă un raport de comprimare mai bun.
+transmise în flux printr\-o rețea. Valorile mici de \fItimp_limită\fP fac datele
+disponibile la capătul de recepție cu o mică întârziere, dar valorile mari
+de \fItimp_limită\fP oferă un raport de comprimare mai bun.
.IP ""
-Această caracteristică este dezactivată în mod implicit. Dacă această
+Această caracteristică este dezactivată în mod implicit. Dacă această
opțiune este specificată de mai multe ori, ultima este cea care se ia în
-considerare. Valoarea specială a lui \fItimp_limită\fP de \fB0\fP, poate fi
+considerare. Valoarea specială a lui \fItimp_limită\fP de \fB0\fP, poate fi
utilizată pentru a dezactiva în mod explicit această caracteristică.
.IP ""
Această caracteristică nu este disponibilă în sistemele non\-POSIX.
.IP ""
.\" FIXME
-\fBAceastă caracteristică este încă experimentală.\fP În prezent, \fBxz\fP este
+\fBAceastă caracteristică este încă experimentală\fP. În prezent, \fBxz\fP este
nepotrivit pentru decomprimarea fluxului în timp real datorită modului în
care \fBxz\fP utilizează memoria tampon.
.TP
\fB\-\-memlimit\-compress=\fP\fIlimita\fP
-Stabilește o limită de utilizare a memoriei pentru comprimare. Dacă această
+Stabilește o limită de utilizare a memoriei pentru comprimare. Dacă această
opțiune este specificată de mai multe ori, ultima va avea efect.
.IP ""
Dacă parametrii de comprimare depășesc \fIlimita\fP, \fBxz\fP va încerca să
ajusteze parametrii scăzând valorile acestora, astfel încât limita să nu mai
fie depășită și va afișa o notificare că ajustarea automată a fost
-efectuată. Ajustările se fac în această ordine: reducerea numărului de
-fire, trecerea la modul un singur fir de execuție dacă chiar și un singur
-fir în modul cu mai multe fire de execuție depășește \fIlimita\fP și, în final,
+efectuată. Ajustările se fac în această ordine: reducerea numărului de fire,
+trecerea la modul un singur fir de execuție dacă chiar și un singur fir în
+modul cu mai multe fire de execuție depășește \fIlimita\fP și, în final,
reducerea dimensiunii dicționarului LZMA2.
.IP ""
Când comprimă cu opțiunea \fB\-\-format=raw\fP sau dacă a fost specificată
@@ -650,46 +694,46 @@ sus, este afișată o eroare și \fBxz\fP va ieși cu starea de ieșire 1.
\fILimita\fP poate fi specificata în mai multe moduri:
.RS
.IP \(bu 3
-\fILimita\fP poate fi o valoare absolută în octeți. Utilizarea unui sufix
-întreg precum \fBMiB\fP poate fi utilă. De exemplu:
+\fILimita\fP poate fi o valoare absolută în octeți. Utilizarea unui sufix
+întreg precum \fBMiB\fP poate fi utilă. De exemplu:
\fB\-\-memlimit\-compress=80MiB\fP
.IP \(bu 3
-\fILimita\fP poate fi specificată ca procent din memoria fizică totală (RAM).
-Acest lucru poate fi util mai ales atunci când definiți variabila de mediu
-\fBXZ_DEFAULTS\fP într\-un script de inițializare shell care este partajat între
-diferite calculatoare. În acest fel, limita este automat mai mare pe
-sistemele cu mai multă memorie. De exemplu: \fB\-\-memlimit\-compress=70%\fP
+\fILimita\fP poate fi specificată ca procent din memoria fizică totală
+(RAM). Acest lucru poate fi util mai ales atunci când definiți variabila de
+mediu \fBXZ_DEFAULTS\fP într\-un script de inițializare shell care este partajat
+între diferite calculatoare. În acest fel, limita este automat mai mare pe
+sistemele cu mai multă memorie. De exemplu: \fB\-\-memlimit\-compress=70%\fP
.IP \(bu 3
-\fILimita\fP poate fi restabilită la valoarea implicită dându\-i valoarea \fB0\fP.
-În prezent, aceasta este echivalentă cu stabilirea \fIlimitei\fP la \fBmax\fP
-(fără limită de utilizare a memoriei).
+\fILimita\fP poate fi restabilită la valoarea implicită dându\-i valoarea
+\fB0\fP. În prezent, aceasta este echivalentă cu stabilirea \fIlimitei\fP la
+\fBmax\fP (fără limită de utilizare a memoriei).
.RE
.IP ""
Pentru \fBxz\fP pe 32 de biți există un caz special: dacă \fIlimita\fP ar fi peste
\fB4020MiB\fP, \fIlimita\fP este stabilită la \fB4020MiB\fP. Pe MIPS32 este
-stabilită în schimb la \fB2000MiB\fP. (Valorile \fB0\fP și \fBmax\fP nu sunt
-afectate de acest lucru. O caracteristică similară nu există pentru
-decomprimare.) Acest lucru poate fi util atunci când un executabil pe 32 de
+stabilită în schimb la \fB2000MiB\fP; (valorile \fB0\fP și \fBmax\fP nu sunt afectate
+de acest lucru \-\- o caracteristică similară nu există pentru
+decomprimare). Acest lucru poate fi util atunci când un executabil pe 32 de
biți are acces la un spațiu de adrese de 4Gio (2Gio pe MIPS32), se speră că
nu produce daune în alte situații.
.IP ""
Consultați și secțiunea \fBUtilizarea memoriei\fP.
.TP
\fB\-\-memlimit\-decompress=\fP\fIlimita\fP
-Stabilește o limită de utilizare a memoriei pentru decomprimare. Acest
-lucru afectează și modul \fB\-\-list\fP. Dacă operațiunea nu este posibilă fără
-a depăși \fIlimita\fP, \fBxz\fP va afișa o eroare și decomprimarea fișierului va
-eșua. Consultați \fB\-\-memlimit\-compress=\fP\fIlimita\fP pentru modalitățile
+Stabilește o limită de utilizare a memoriei pentru decomprimare. Acest lucru
+afectează și modul \fB\-\-list\fP. Dacă operațiunea nu este posibilă fără a
+depăși \fIlimita\fP, \fBxz\fP va afișa o eroare și decomprimarea fișierului va
+eșua. Consultați \fB\-\-memlimit\-compress=\fP\fIlimita\fP pentru modalitățile
posibile de a specifica \fIlimita\fP.
.TP
\fB\-\-memlimit\-mt\-decompress=\fP\fIlimita\fP
Stabilește o limită de utilizare a memoriei pentru decomprimarea cu mai
-multe fire de execuție. Acest lucru poate afecta doar numărul de fire de
+multe fire de execuție. Acest lucru poate afecta doar numărul de fire de
execuție; acest lucru nu îl va face niciodată pe \fBxz\fP să refuze
-decomprimarea unui fișier. Dacă \fIlimita\fP este prea scăzută pentru a
-permite orice mod cu mai multe fire de execuție, \fIlimita\fP este ignorată și
-\fBxz\fP va continua în modul cu un singur fir de execuție. Rețineți că, dacă
-se folosește și opțiunea \fB\-\-memlimit\-decompress\fP, se va aplica întotdeauna
+decomprimarea unui fișier. Dacă \fIlimita\fP este prea scăzută pentru a permite
+orice mod cu mai multe fire de execuție, \fIlimita\fP este ignorată și \fBxz\fP va
+continua în modul cu un singur fir de execuție. Rețineți că, dacă se
+folosește și opțiunea \fB\-\-memlimit\-decompress\fP, se va aplica întotdeauna
atât modurilor cu un singur fir de execuție, cât și modurilor cu mai multe
fire de execuție și astfel \fIlimita\fP efectivă pentru modul cu mai multe fire
de execuție nu va fi niciodată mai mare decât limita stabilită cu opțiunea
@@ -697,22 +741,22 @@ de execuție nu va fi niciodată mai mare decât limita stabilită cu opțiunea
.IP ""
Spre deosebire de celelalte opțiuni de limită de utilizare a memoriei,
opțiunea \fB\-\-memlimit\-mt\-decompress=\fP\fIlimita\fP are o \fIlimită\fP implicită
-specifică sistemului. Comanda \fBxz \-\-info\-memory\fP poate fi folosită pentru
-a vedea valoarea curentă.
+specifică sistemului. Comanda \fBxz \-\-info\-memory\fP poate fi folosită pentru a
+vedea valoarea curentă.
.IP ""
Această opțiune și valoarea ei implicită există deoarece, fără nicio limită,
decomprimarea cu (mai multe) fire de execuție ar putea ajunge să aloce o
-cantitate „nebună” de memorie cu unele fișiere de intrare. Dacă \fIlimita\fP
+cantitate „nebună” de memorie cu unele fișiere de intrare. Dacă \fIlimita\fP
implicită este prea scăzută pe sistemul dumneavoastră, nu ezitați să
creșteți \fIlimita\fP, dar niciodată să nu o stabiliți la o valoare mai mare
decât cantitatea de memorie RAM utilizabilă și cu niște fișiere de intrare
adecvate, \fBxz\fP va încerca să utilizeze acea cantitate de memorie chiar și
-cu un număr redus de fire de execuție. Rularea lui \fBxz\fP cu depășirea
+cu un număr redus de fire de execuție. Rularea lui \fBxz\fP cu depășirea
cantității de memorie fizice(RAM) sau a celei de interschimb(swap) nu va
îmbunătăți performanța de decomprimare.
.IP ""
Consultați opțiunea \fB\-\-memlimit\-compress=\fP\fIlimita\fP pentru modalități
-posibile de a specifica \fIlimita\fP. Stabilirea \fIlimitei\fP la \fB0\fP
+posibile de a specifica \fIlimita\fP. Stabilirea \fIlimitei\fP la \fB0\fP
restabilește \fIlimita\fP la valoarea implicită specifică sistemului.
.TP
\fB\-M\fP \fIlimita\fP, \fB\-\-memlimit=\fP\fIlimita\fP, \fB\-\-memory=\fP\fIlimita\fP
@@ -722,214 +766,250 @@ Aceasta este echivalentă cu specificarea opțiunilor:
.TP
\fB\-\-no\-adjust\fP
Afișează o eroare și iese dacă limita de utilizare a memoriei nu poate fi
-îndeplinită fără ajustarea parametrilor care afectează ieșirea comprimată.
-Adică, acest lucru împiedică \fBxz\fP să comute codificatorul din modul cu mai
-multe fire de execuție în modul cu un singur fir de execuție și să reducă
-dimensiunea dicționarului LZMA2. Chiar și atunci când această opțiune este
-utilizată, numărul de fire de execuție poate fi redus pentru a îndeplini
-limita de utilizare a memoriei, deoarece aceasta nu va afecta comprimarea.
+îndeplinită fără ajustarea parametrilor care afectează ieșirea
+comprimată. Adică, acest lucru împiedică \fBxz\fP să comute codificatorul din
+modul cu mai multe fire de execuție în modul cu un singur fir de execuție și
+să reducă dimensiunea dicționarului LZMA2. Chiar și atunci când această
+opțiune este utilizată, numărul de fire de execuție poate fi redus pentru a
+îndeplini limita de utilizare a memoriei, deoarece aceasta nu va afecta
+comprimarea.
.IP ""
Ajustarea automată este întotdeauna dezactivată la crearea fluxurilor brute
(\fB\-\-format=raw\fP).
.TP
\fB\-T\fP \fInumăr\fP, \fB\-\-threads=\fP\fInumăr\fP
-Specifică numărul de fire de execuție de utilizat. Stabilirea \fInumărului\fP
+Specifică numărul de fire de execuție de utilizat. Stabilirea \fInumărului\fP
la valoarea specială \fB0\fP, face ca \fBxz\fP să utilizeze până la atâtea fire de
-execuție câte procesoare sunt în sistem. Numărul real de fire de execuție
+execuție câte procesoare sunt în sistem. Numărul real de fire de execuție
poate fi mai mic decât \fInumăr\fP dacă fișierul de intrare nu este suficient
de mare pentru a trece la modul cu mai multe fire de execuție cu parametrii
dați, sau dacă folosirea mai multor fire de execuție ar depăși limita de
utilizare a memoriei.
.IP ""
Operațiile de comprimare cu un singur fir de execuție și cele cu mai multe
-fire de execuție produc ieșiri diferite. Comprimarea cu un singur fir de
+fire de execuție produc ieșiri diferite. Comprimarea cu un singur fir de
execuție va oferi cea mai mică dimensiune a fișierului, dar numai ieșirea de
la comprimarea cu mai multe fire de execuție poate fi decomprimată folosind
-mai multe fire. Stabilirea \fInumărului\fP la \fB1\fP va determina ca \fBxz\fP să
-folosească modul cu un singur fir de execuție. Stabilirea \fInumărului\fP la
+mai multe fire. Stabilirea \fInumărului\fP la \fB1\fP va determina ca \fBxz\fP să
+folosească modul cu un singur fir de execuție. Stabilirea \fInumărului\fP la
orice altă valoare, inclusiv \fB0\fP, va determina ca \fBxz\fP să folosească
comprimarea cu mai multe fire de execuție chiar dacă sistemul acceptă doar
-un fir hardware. (\fBxz\fP 5.2.x folosește modul cu un singur fir de execuție
-în această situație.)
+un fir hardware; (\fBxz\fP 5.2.x folosește modul cu un singur fir de execuție
+în această situație).
.IP ""
Pentru a utiliza modul cu mai multe fire de execuție cu un singur fir,
-stabiliți \fInumărul\fP la \fB+1\fP. Prefixul \fB+\fP nu are efect cu alte valori
-decât \fB1\fP. O limită de utilizare a memoriei poate face în continuare \fBxz\fP
+stabiliți \fInumărul\fP la \fB+1\fP. Prefixul \fB+\fP nu are efect cu alte valori
+decât \fB1\fP. O limită de utilizare a memoriei poate face în continuare \fBxz\fP
să treacă în modul cu un singur fir, cu excepția cazului în care este
-utilizată opțiunea \fB\-\-no\-adjust\fP. Suportul pentru prefixul \fB+\fP a fost
+utilizată opțiunea \fB\-\-no\-adjust\fP. Suportul pentru prefixul \fB+\fP a fost
adăugat în \fBxz\fP 5.4.0.
.IP ""
Dacă a fost solicitat un număr automat de fire și nu a fost specificată
nicio limită de utilizare a memoriei, atunci o limită „maleabilă” implicită
specifică sistemului va fi utilizată pentru a limita eventual numărul de
-fire de execuție. Este o limită „maleabilă” în sensul că este ignorată dacă
+fire de execuție. Este o limită „maleabilă” în sensul că este ignorată dacă
numărul de fire devine unul, astfel o limită „maleabilă” nu va opri
-niciodată \fBxz\fP să comprime sau să decomprime. Această limită „maleabilă”
+niciodată \fBxz\fP să comprime sau să decomprime. Această limită „maleabilă”
implicită nu va face \fBxz\fP să treacă de la modul cu mai multe fire de
-execuție la modul cu un singur fir de execuție. Limitele active pot fi
+execuție la modul cu un singur fir de execuție. Limitele active pot fi
văzute rulând comanda \fBxz \-\-info\-memory\fP.
.IP ""
În prezent, singura metodă de procesare cu fire de execuție este împărțirea
-intrării în blocuri și comprimarea lor independent unul de celălalt.
-Dimensiunea implicită a blocului depinde de nivelul de comprimare și poate
-fi înlocuită cu opțiunea \fB\-\-block\-size=\fP\fIdimensiune\fP.
+intrării în blocuri și comprimarea lor independent unul de
+celălalt. Dimensiunea implicită a blocului depinde de nivelul de comprimare
+și poate fi înlocuită cu opțiunea \fB\-\-block\-size=\fP\fIdimensiune\fP.
.IP ""
Decomprimarea cu fire de execuție funcționează numai pe fișierele care
conțin mai multe blocuri cu informații despre dimensiune în antetele
-blocurilor. Toate fișierele suficient de mari comprimate în modul cu mai
+blocurilor. Toate fișierele suficient de mari comprimate în modul cu mai
multe fire de execuție îndeplinesc această condiție, dar fișierele
comprimate în modul cu un singur fir de execuție nu o îndeplinesc chiar dacă
a fost folosită opțiunea \fB\-\-block\-size=\fP\fIdimensiune\fP.
+.IP ""
+Valoarea implicită pentru \fIfire de execuție\fP este \fB0\fP. În \fBxz\fP 5.4.x și
+mai vechi, valoarea implicită este \fB1\fP.
.
.SS "Lanțuri de filtrare personalizate pentru instrumentul de comprimare"
Un lanț de filtrare personalizat permite specificarea parametrilor de
comprimare în detaliu, în loc să se bazeze pe cei asociați opțiunilor
-prestabilite. Când este specificat un lanț de filtrare personalizat,
+prestabilite. Când este specificat un lanț de filtrare personalizat,
opțiunile prestabilite (\fB\-0\fP \&...\& \fB\-9\fP și \fB\-\-extreme\fP) de mai devreme
-din linia de comandă sunt uitate. Dacă o opțiune prestabilită este
+din linia de comandă sunt uitate. Dacă o opțiune prestabilită este
specificată după una sau mai multe opțiuni de lanț de filtrare personalizat,
noua prestabilire intră în vigoare și opțiunile lanțului de filtrare
personalizat, specificate mai devreme sunt uitate.
.PP
-Un lanț de filtrare este comparabil cu conductele din linia de comandă. La
+Un lanț de filtrare este comparabil cu conductele din linia de comandă. La
comprimare, intrarea necomprimată merge la primul filtru, a cărui ieșire
-merge la următorul filtru (dacă există). Ieșirea ultimului filtru este
-scrisă în fișierul comprimat. Numărul maxim de filtre din lanț este de
+merge la următorul filtru (dacă există). Ieșirea ultimului filtru este
+scrisă în fișierul comprimat. Numărul maxim de filtre din lanț este de
patru, dar de obicei un lanț de filtrare are doar unul sau două filtre.
.PP
Multe filtre au limitări în ceea ce privește locul în care se pot afla în
lanțul de filtrare: unele filtre pot funcționa doar ca ultimul filtru din
lanț, altele doar ca non\-ultim filtru și unele funcționează în orice poziție
-din lanț. În funcție de filtru, această limitare este fie inerentă
+din lanț. În funcție de filtru, această limitare este fie inerentă
proiectării filtrului, fie există pentru a preveni problemele de securitate.
.PP
-Un lanț de filtrare personalizat este specificat utilizând una sau mai multe
-opțiuni de filtrare în ordinea în care sunt cerute în lanțul de filtrare.
-Adică, ordinea opțiunilor de filtrare este semnificativă! La decodificarea
-fluxurilor brute (\fB\-\-format=raw\fP), lanțul de filtrare este specificat în
-aceeași ordine în care a fost specificat la comprimare.
-.PP
-Filtrele iau \fIopțiuni\fP specifice filtrului ca o listă separată prin
-virgule. Virgulele suplimentare din \fIopțiuni\fP sunt ignorate. Fiecare
-opțiune are o valoare implicită, așa că trebuie să specificați numai cele pe
-care doriți să le modificați.
+Un lanț de filtre personalizat poate fi specificat în două moduri
+diferite. Opțiunile \fB\-\-filters=\fP\fIfiltre\fP și \fB\-\-filters1=\fP\fIfiltre\fP
+\&...\& \fB\-\-filters9=\fP\fIfiltre\fP permit specificarea unui întreg lanț de
+filtre într\-o singură opțiune, folosind sintaxa șirului de filtre
+liblzma. Alternativ, un lanț de filtre poate fi specificat prin utilizarea
+uneia sau mai multor opțiuni de filtrare individuale în ordinea în care sunt
+dorite în lanțul de filtre. Adică, ordinea opțiunilor de filtrare
+individuale este semnificativă! La decodificarea fluxurilor brute
+(\fB\-\-format=raw\fP), lanțul de filtre trebuie să fie specificat în aceeași
+ordine în care a fost specificat la comprimare. Orice filtru individual sau
+opțiuni presetate specificate înainte de opțiunea de lanț complet
+(\fB\-\-filters=\fP\fIfiltre\fP) vor fi uitate. Filtrele individuale specificate
+după opțiunea „lanț complet” vor reinițializa lanțul de filtre.
+.PP
+Atât opțiunile de filtrare completă, cât și cele de filtrare individuală
+acceptă \fIopțiuni\fP specifice filtrului sub forma unei liste separate prin
+virgule. Se ignoră virgulele suplimentare din \fIopțiuni\fP. Fiecare opțiune
+are o valoare implicită, deci specificați\-le pe cele pe care doriți să le
+modificați.
.PP
Pentru a vedea întregul lanț de filtre și \fIopțiuni\fP, utilizați \fBxz \-vv\fP
-(adică folosiți \fB\-\-verbose\fP de două ori). Acest lucru funcționează și
+(adică folosiți \fB\-\-verbose\fP de două ori). Acest lucru funcționează și
pentru vizualizarea opțiunilor lanțului de filtre utilizate de valorile
prestabilite.
.TP
+\fB\-\-filters=\fP\fIfiltre\fP
+Specificați întregul lanț de filtre sau o presetare într\-o singură
+opțiune. Fiecare filtru poate fi separat prin spații sau două liniuțe
+(\fB\-\-\fP). Este posibil să fie necesar ca \fIfiltrele\fP să fie puse între
+ghilimele în linia de comandă a shell\-ului pentru a fi analizate ca o
+singură opțiune. Pentru a indica \fIopțiuni\fP, utilizați \fB:\fP sau \fB=\fP. O
+presetare poate fi prefixată cu un \fB\-\fP și urmată de zero sau mai multe
+indicatoare. Singurul indicator suportat este \fBe\fP pentru a aplica aceleași
+opțiuni ca și \fB\-\-extreme\fP.
+.TP
+\fB\-\-filters1\fP=\fIfiltre\fP ... \fB\-\-filters9\fP=\fIfiltre\fP
+Specifică până la nouă lanțuri de filtre suplimentare care pot fi utilizate
+cu \fB\-\-block\-list\fP.
+.IP ""
+De exemplu, atunci când se comprimă o arhivă cu fișiere executabile urmate
+de fișiere text, partea executabilă ar putea utiliza un lanț de filtre cu un
+filtru BCJ, iar partea de text doar filtrul LZMA2.
+.TP
+\fB\-\-filters\-help\fP
+Afișează un mesaj de ajutor care descrie modul de specificare a presetărilor
+și a lanțurilor de filtre personalizate în opțiunile \fB\-\-filters\fP și
+\fB\-\-filters1=\fP\fIfiltre\fP \&...\& \fB\-\-filters9=\fP\fIfiltre\fP și iese.
+.TP
\fB\-\-lzma1\fP[\fB=\fP\fIopțiuni\fP]
.PD 0
.TP
\fB\-\-lzma2\fP[\fB=\fP\fIopțiuni\fP]
.PD
-Adaugă filtrul LZMA1 sau LZMA2 la lanțul de filtre. Aceste filtre pot fi
+Adaugă filtrul LZMA1 sau LZMA2 la lanțul de filtre. Aceste filtre pot fi
folosite doar ca ultimul filtru din lanț.
.IP ""
LZMA1 este un filtru vechi, care este acceptat aproape exclusiv datorită
-formatului de fișier vechi \fB.lzma\fP, care acceptă numai LZMA1. LZMA2 este o
+formatului de fișier vechi \fB.lzma\fP, care acceptă numai LZMA1. LZMA2 este o
versiune actualizată a LZMA1 pentru a rezolva unele probleme practice ale
-LZMA1. Formatul \fB.xz\fP folosește LZMA2 și nu acceptă deloc LZMA1. Viteza
-de comprimare și rapoartele LZMA1 și LZMA2 sunt practic aceleași.
+LZMA1. Formatul \fB.xz\fP folosește LZMA2 și nu acceptă deloc LZMA1. Viteza de
+comprimare și rapoartele LZMA1 și LZMA2 sunt practic aceleași.
.IP ""
LZMA1 și LZMA2 au același set de \fIopțiuni\fP:
.RS
.TP
\fBpreset=\fP\fIprestabilit\fP
-Reconfigurează toate \fIopțiunile\fP LZMA1 sau LZMA2 la \fIprestabilit\fP.
-\fIPrestabilit\fP constă dintr\-un număr întreg, care poate fi urmat de
-modificatori prestabiliți cu o singură literă. Numărul întreg poate fi de
-la \fB0\fP la \fB9\fP, potrivindu\-se cu opțiunile liniei de comandă \fB\-0\fP \&...\&
-\fB\-9\fP. Singurul modificator acceptat în prezent este \fBe\fP, care se
-potrivește cu \fB\-\-extreme\fP. Dacă nu este specificat \fBprestabilit\fP,
+Reconfigurează toate \fIopțiunile\fP LZMA1 sau LZMA2 la
+\fIprestabilit\fP. \fIprestabilit\fP constă dintr\-un număr întreg, care poate fi
+urmat de modificatori prestabiliți cu o singură literă. Numărul întreg
+poate fi de la \fB0\fP la \fB9\fP, potrivindu\-se cu opțiunile liniei de comandă
+\fB\-0\fP \&...\& \fB\-9\fP. Singurul modificator acceptat în prezent este \fBe\fP,
+care se potrivește cu \fB\-\-extreme\fP. Dacă nu este specificat \fBprestabilit\fP,
valorile implicite ale \fIopțiunilor\fP LZMA1 sau LZMA2 sunt preluate din
prestabilirea \fB6\fP.
.TP
\fBdict=\fP\fIdimensiunea\fP
\fIDimensiunea\fP dicționarului (istoricul memoriei tampon) indică câți octeți
-din datele necomprimate recent procesate sunt păstrați în memorie.
-Algoritmul încearcă să găsească secvențe de octeți care se repetă
+din datele necomprimate recent procesate sunt păstrați în
+memorie. Algoritmul încearcă să găsească secvențe de octeți care se repetă
(potriviri) în datele necomprimate și să le înlocuiască cu referințe la
-datele aflate în prezent în dicționar. Cu cât dicționarul este mai mare, cu
-atât este mai mare șansa de a găsi o potrivire. Astfel, creșterea
+datele aflate în prezent în dicționar. Cu cât dicționarul este mai mare, cu
+atât este mai mare șansa de a găsi o potrivire. Astfel, creșterea
\fIdimensiunii\fP dicționarului îmbunătățește de obicei raportul de comprimare,
dar un dicționar mai mare decât fișierul necomprimat este risipă de memorie.
.IP ""
-\fIDimensiunea\fPtipică a dicționarului este de la 64Kio până la 64Mio.
-Minimul este de 4Kio. Maximul pentru compresie este în prezent de 1,5Gio
-(1536Mio). Decomprimarea acceptă deja dicționare cu până la un octet mai
+\fIDimensiunea\fPtipică a dicționarului este de la 64Kio până la 64Mio. Minimul
+este de 4Kio. Maximul pentru compresie este în prezent de 1,5Gio
+(1536Mio). Decomprimarea acceptă deja dicționare cu până la un octet mai
puțin de 4Gio, care este maximul pentru formatele de flux LZMA1 și LZMA2.
.IP ""
\fIDimensiunea\fP dicționarului și găsitorul de potriviri (match finder) →
-(\fImf\fP) determină împreună utilizarea memoriei de către codificatorul LZMA1
-sau LZMA2. Aceeași \fIdimensiune\fP a dicționarului (sau mai mare) care a fost
+(\fImf\fP) determină împreună utilizarea memoriei de către codificatorul LZMA1
+sau LZMA2. Aceeași \fIdimensiune\fP a dicționarului (sau mai mare) care a fost
utilizată la comprimare, este necesară pentru decomprimare, astfel încât
utilizarea memoriei de către decodificator este determinată de dimensiunea
-dicționarului utilizată la comprimare. Antetele \fB.xz\fP stochează
+dicționarului utilizată la comprimare. Antetele \fB.xz\fP stochează
\fIdimensiunea\fP dicționarului fie ca 2^\fIn\fP, fie ca 2^\fIn\fP + 2^(\fIn\fP\-1), deci
-aceste \fIdimensiuni\fP sunt oarecum preferate pentru comprimare. Alte
+aceste \fIdimensiuni\fP sunt oarecum preferate pentru comprimare. Alte
\fIdimensiuni\fP vor fi rotunjite atunci când sunt stocate în anteturile
\&\fB.xz\fP.
.TP
\fBlc=\fP\fIlc\fP
-Specifică numărul de biți de context literal. Minimul este 0 și maximul
-este 4; implicit este 3. În plus, suma \fIlc\fP și \fIlp\fP nu trebuie să
-depășească 4.
+Specifică numărul de biți de context literal. Minimul este 0 și maximul este
+4; implicit este 3. În plus, suma \fIlc\fP și \fIlp\fP nu trebuie să depășească
+4.
.IP ""
Toți octeții care nu pot fi codificați ca potriviri sunt codificați ca
-literali. Adică, literalii sunt pur și simplu octeți de 8 biți care sunt
+literali. Adică, literalii sunt pur și simplu octeți de 8 biți care sunt
codificați unul câte unul.
.IP ""
Codificarea literală presupune că cei mai mari biți \fIlc\fP ai octetului
-anterior necomprimat se corelează cu octetul următor. De exemplu, în textul
+anterior necomprimat se corelează cu octetul următor. De exemplu, în textul
tipic englezesc, o literă mare este adesea urmată de o literă mică, iar o
-literă mică este urmată de obicei de o altă literă mică. În setul de
+literă mică este urmată de obicei de o altă literă mică. În setul de
caractere US\-ASCII, cei mai mari trei biți sunt 010 pentru literele mari și
-011 pentru literele mici. Când \fIlc\fP este cel puțin 3, codificarea literală
+011 pentru literele mici. Când \fIlc\fP este cel puțin 3, codificarea literală
poate profita de această proprietate în datele necomprimate.
.IP ""
-Valoarea implicită (3) este de obicei bună. Dacă doriți o comprimare
-maximă, testați \fBlc=4\fP. Uneori ajută puțin, iar uneori înrăutățește
-comprimarea . Dacă o agravează, încercați de\-asemeni cu \fBlc=2\fP.
+Valoarea implicită (3) este de obicei bună. Dacă doriți o comprimare maximă,
+testați \fBlc=4\fP. Uneori ajută puțin, iar uneori înrăutățește comprimarea
+\&. Dacă o agravează, încercați de\-asemeni cu \fBlc=2\fP.
.TP
\fBlp=\fP\fIlp\fP
-Specifică numărul de biți de poziție literală. Minimul este 0 și maximul
+Specifică numărul de biți de poziție literală. Minimul este 0 și maximul
este 4; implicit este 0.
.IP ""
\fILp\fP afectează ce fel de aliniere în datele necomprimate este presupusă la
-codificarea literalelor. Consultați argumentul \fIpb\fP de mai jos pentru mai
+codificarea literalelor. Consultați argumentul \fIpb\fP de mai jos pentru mai
multe informații despre aliniere.
.TP
\fBpb=\fP\fIpb\fP
-Specifică numărul de biți de poziție. Minimul este 0 și maximul este 4;
+Specifică numărul de biți de poziție. Minimul este 0 și maximul este 4;
implicit este 2.
.IP ""
\fIPb\fP afectează ce fel de aliniere în datele necomprimate este presupusă în
-general. Valoarea implicită înseamnă alinierea pe patru octeți
+general. Valoarea implicită înseamnă alinierea pe patru octeți
(2^\fIpb\fP=2^2=4), care este adesea o alegere bună atunci când nu există o
ipoteză mai bună.
.IP ""
Când alinierea este cunoscută, definirea lui \fIpb\fP în mod corespunzător
-poate reduce puțin dimensiunea fișierului. De exemplu, cu fișierele text cu
+poate reduce puțin dimensiunea fișierului. De exemplu, cu fișierele text cu
aliniere pe un octet (US\-ASCII, ISO\-8859\-*, UTF\-8), definirea \fBpb=0\fP poate
-îmbunătăți ușor comprimarea. Pentru textul UTF\-16, \fBpb=1\fP este o alegere
-bună. Dacă alinierea este un număr impar, cum ar fi 3 octeți, \fBpb=0\fP ar
+îmbunătăți ușor comprimarea. Pentru textul UTF\-16, \fBpb=1\fP este o alegere
+bună. Dacă alinierea este un număr impar, cum ar fi 3 octeți, \fBpb=0\fP ar
putea fi cea mai bună alegere.
.IP ""
Chiar dacă alinierea presupusă poate fi ajustată cu \fIpb\fP și \fIlp\fP, LZMA1 și
-LZMA2 încă favorizează ușor alinierea pe 16 octeți. Ar putea fi demn de
-luat în considerare atunci când proiectați formate de fișiere care pot fi
-adesea comprimate cu LZMA1 sau LZMA2.
+LZMA2 încă favorizează ușor alinierea pe 16 octeți. Ar putea fi demn de luat
+în considerare atunci când proiectați formate de fișiere care pot fi adesea
+comprimate cu LZMA1 sau LZMA2.
.TP
\fBmf=\fP\fImf\fP
Căutarea potrivirilor are un efect major asupra vitezei codificatorului,
-utilizării memoriei și raportului de comprimare. De obicei, găsitorii de
+utilizării memoriei și raportului de comprimare. De obicei, găsitorii de
potriviri din lanțul sumelor de control sunt mai rapizi decât găsitorii de
-potriviri din arborele binar. Valoarea implicită depinde de \fIprestabilit\fP:
+potriviri din arborele binar. Valoarea implicită depinde de \fIprestabilit\fP:
0 folosește \fBhc3\fP, 1\(en3 folosește \fBhc4\fP, iar restul folosește \fBbt4\fP.
.IP ""
-Sunt acceptate următoarele opțiuni de căutare de potriviri. Formulele de
+Sunt acceptate următoarele opțiuni de căutare de potriviri. Formulele de
utilizare a memoriei de mai jos sunt aproximări estimative, care se apropie
cel mai mult de realitate atunci când \fIdict\fP este o putere a lui doi.
.RS
@@ -988,40 +1068,39 @@ Utilizarea memoriei:
.TP
\fBmode=\fP\fImod\fP
Comprimarea \fImod\fP specifică metoda de analiză a datelor produse de
-găsitorul de potriviri. \fIModurile\fP acceptate sunt \fBfast\fP(rapid) și
-\fBnormal\fP. Valoarea implicită este \fBfast\fP pentru \fIprestabiliri\fP 0\(en3 și
+găsitorul de potriviri. \fIModurile\fP acceptate sunt \fBfast\fP(rapid) și
+\fBnormal\fP. Valoarea implicită este \fBfast\fP pentru \fIprestabiliri\fP 0\(en3 și
\fBnormal\fP pentru \fIprestabiliri\fP 4\(en9.
.IP ""
De obicei, \fBfast\fP este folosit cu instrumentele de căutare de potriviri ale
lanțului de sume de control, și \fBnormal\fP cu instrumentele de căutare de
-potriviri din arborele binar. Aceasta este și ceea ce fac
-\fIprestabiririle\fP.
+potriviri din arborele binar. Aceasta este și ceea ce fac \fIprestabiririle\fP.
.TP
\fBnice=\fP\fInice\fP
Specifică ceea ce este considerat a fi o lungime bună(nice) pentru o
-potrivire. Odată ce este găsită o potrivire de cel puțin \fInice\fP octeți,
+potrivire. Odată ce este găsită o potrivire de cel puțin \fInice\fP octeți,
algoritmul nu mai caută după potriviri posibile mai bune.
.IP ""
-\fINice\fP poate fi de 2\(en273 octeți. Valorile mai mari tind să ofere un
-raport de comprimare mai bun în detrimentul vitezei. Valoarea implicită
+\fINice\fP poate fi de 2\(en273 octeți. Valorile mai mari tind să ofere un
+raport de comprimare mai bun în detrimentul vitezei. Valoarea implicită
depinde de \fIprestabilit\fP.
.TP
\fBdepth=\fP\fIadâncimea\fP
-Specifică adâncimea maximă de căutare în găsitorul de potriviri. Valoarea
+Specifică adâncimea maximă de căutare în găsitorul de potriviri. Valoarea
implicită este valoarea specială de 0, ceea ce face ca instrumentul de
comprimare să determine o \fIadâncime\fP rezonabilă pornind de la valorile
\fImf\fP și \fInice\fP.
.IP ""
\fIAdâncimea\fP rezonabilă pentru lanțuri de sumă de control este 4\(en100 și
-16\(en1000 pentru arbori binari. Folosirea unor valori foarte mari pentru
-\fIadâncime\fP poate face codificatorul extrem de lent cu unele fișiere.
-Evitați să stabiliți \fIadâncimea\fP la valori peste 1000, cu excepția cazului
-în care sunteți pregătit să întrerupeți comprimarea în cazul în care durează
-prea mult.
+16\(en1000 pentru arbori binari. Folosirea unor valori foarte mari pentru
+\fIadâncime\fP poate face codificatorul extrem de lent cu unele
+fișiere. Evitați să stabiliți \fIadâncimea\fP la valori peste 1000, cu excepția
+cazului în care sunteți pregătit să întrerupeți comprimarea în cazul în care
+durează prea mult.
.RE
.IP ""
La decodificarea fluxurilor brute (\fB\-\-format=raw\fP), LZMA2 are nevoie doar
-de \fIdimensiunea\fP dicționarului. LZMA1 are nevoie de asemenea de \fIlc\fP,
+de \fIdimensiunea\fP dicționarului. LZMA1 are nevoie de asemenea de \fIlc\fP,
\fIlp\fP și \fIpb\fP.
.TP
\fB\-\-x86\fP[\fB=\fP\fIopțiuni\fP]
@@ -1038,35 +1117,37 @@ de \fIdimensiunea\fP dicționarului. LZMA1 are nevoie de asemenea de \fIlc\fP,
\fB\-\-ia64\fP[\fB=\fP\fIopțiuni\fP]
.TP
\fB\-\-sparc\fP[\fB=\fP\fIopțiuni\fP]
+.TP
+\fB\-\-riscv\fP[\fB=\fP\fIopțiuni\fP]
.PD
Adaugă un filtru de ramură/apel/salt (branch/call/jump ⟶ „BCJ”) la lanțul de
-filtre. Aceste filtre pot fi utilizate numai ca un filtru care nu este
+filtre. Aceste filtre pot fi utilizate numai ca un filtru care nu este
ultimul din lanțul de filtrare.
.IP ""
Un filtru BCJ convertește adresele relative din codul mașinii în omoloagele
-lor absolute. Acest lucru nu modifică dimensiunea datelor, dar crește
+lor absolute. Acest lucru nu modifică dimensiunea datelor, dar crește
redundanța, ceea ce poate ajuta LZMA2 să producă fișier \fB.xz\fP cu 0\(en15\ %
-mai mic. Filtrele BCJ sunt întotdeauna reversibile, deci folosind un filtru
+mai mic. Filtrele BCJ sunt întotdeauna reversibile, deci folosind un filtru
BCJ pentru tipul greșit de date nu provoacă nicio pierdere de date, deși
-poate înrăutăți puțin raportul de comprimare. Filtrele BCJ sunt foarte
+poate înrăutăți puțin raportul de comprimare. Filtrele BCJ sunt foarte
rapide și folosesc o cantitate nesemnificativă de memorie.
.IP ""
Aceste filtre BCJ au probleme cunoscute legate de raportul de comprimare:
.RS
.IP \(bu 3
Unele tipuri de fișiere care conțin cod executabil (de exemplu, fișiere
-obiect, biblioteci statice și module de kernel Linux) au adresele din
-instrucțiuni completate cu valori de umplere. Aceste filtre BCJ vor face în
+obiect, biblioteci statice și module de kernel Linux) au adresele din
+instrucțiuni completate cu valori de umplere. Aceste filtre BCJ vor face în
continuare conversia adresei, ceea ce va înrăutăți comprimarea cu aceste
fișiere.
.IP \(bu 3
Dacă pe o arhivă este aplicat un filtru BCJ, este posibil ca raportul de
-comprimare să fie mai rău decât la neutilizarea unui filtru BCJ. De
-exemplu, dacă există executabile similare sau chiar identice, filtrarea va
-face probabil fișierele mai puțin asemănătoare și astfel comprimarea este
-mai proastă. Conținutul fișierelor neexecutabile din aceeași arhivă poate
-conta și el. În practică, trebuie să încercați cu și fără filtru BCJ pentru
-a vedea care rezultat este mai bun în fiecare situație.
+comprimare să fie mai rău decât la neutilizarea unui filtru BCJ. De exemplu,
+dacă există executabile similare sau chiar identice, filtrarea va face
+probabil fișierele mai puțin asemănătoare și astfel comprimarea este mai
+proastă. Conținutul fișierelor neexecutabile din aceeași arhivă poate conta
+și el. În practică, trebuie să încercați cu și fără filtru BCJ pentru a
+vedea care rezultat este mai bun în fiecare situație.
.RE
.IP ""
Seturi de instrucțiuni diferite au o aliniere diferită: fișierul executabil
@@ -1089,37 +1170,54 @@ ARM64;4;alinierea pe 4096\-octeți
PowerPC;4;Doar big endian
IA\-64;16;Itanium
SPARC;4;
+RISC\-V;2;
.TE
.RE
.RE
.IP ""
Deoarece datele filtrate prin BCJ sunt de obicei comprimate cu LZMA2,
raportul de comprimare poate fi ușor îmbunătățit dacă opțiunile LZMA2 sunt
-definite pentru a se potrivi cu alinierea filtrului BCJ selectat. De
-exemplu, cu filtrul IA\-64, este bine să stabiliți \fBpb=4\fP sau chiar
-\fBpb=4,lp=4,lc=0\fP cu LZMA2 (2^4=16). Filtrul x86 este o excepție; de
-obicei, este bine să rămână la alinierea implicită de patru octeți a LZMA2
-atunci când se comprimă executabile x86.
+definite pentru a se potrivi cu alinierea filtrului BCJ selectat. Exemple:
+.RS
+.IP \(bu 3
+Filtrul IA\-64 are o aliniere de 16 octeți, astfel încât \fBpb=4,lp=4,lc=0\fP
+este alegere adecvată cu LZMA2 (2^4=16).
+.IP \(bu 3
+Codul RISC\-V are o aliniere pe 2 sau 4 octeți, depinzând de faptul că
+fișierul conține instrucțiuni comprimate pe 16 biți (extensia C) sau
+nu. Atunci când se utilizează instrucțiuni pe 16 biți, \fBpb=2,lp=1,lc=3\fP sau
+\fBpb=1,lp=1,lc=3\fP este o alegere bună. Atunci când nu sunt prezente
+instrucțiuni pe 16 biți, \fBpb=2,lp=2,lc=2\fP este cea mai bună
+alegere. \fBreadelf \-h\fP poate fi utilizată pentru a verifica dacă „RVC” apare
+în linia „Indicatori".
+.IP \(bu 3
+ARM64 este întotdeauna aliniat pe 4 octeți, astfel încât \fBpb=2,lp=2,lc=2\fP
+este cea mai bună alegere.
+.IP \(bu 3
+Filtrul x86 este o excepție. De obicei, este bine să rămâneți la valorile
+implicite ale LZMA2 (\fBpb=2,lp=0,lc=3\fP) atunci când comprimați executabile
+x86.
+.RE
.IP ""
Toate filtrele BCJ acceptă același \fIopțiuni\fP:
.RS
.TP
\fBstart=\fP\fIpoziție\fP
Specifică \fIpoziția\fP de pornire care este utilizată la conversia între
-adresele relative și absolute. \fIPoziția\fP trebuie să fie un multiplu al
+adresele relative și absolute. \fIPoziția\fP trebuie să fie un multiplu al
alinierii filtrului (consultați tabelul de mai sus). Valoarea implicită
-este zero. În practică, valoarea implicită este bună; specificarea unei
+este zero. În practică, valoarea implicită este bună; specificarea unei
\fIpoziții\fP personalizate nu este aproape niciodată utilă.
.RE
.TP
\fB\-\-delta\fP[\fB=\fP\fIopțiuni\fP]
-Adaugă filtrul Delta în lanțul de filtrare. Filtrul Delta poate fi folosit
+Adaugă filtrul Delta în lanțul de filtrare. Filtrul Delta poate fi folosit
doar ca un filtru care nu este ultimul în lanțul de filtrare.
.IP ""
-În prezent, este acceptat doar calculul delta simplu de octeți. Poate fi
+În prezent, este acceptat doar calculul delta simplu de octeți. Poate fi
util la comprimarea, de exemplu, a imaginilor bitmap necomprimate sau a
-sunetului PCM necomprimat. Cu toate acestea, algoritmii cu scop special pot
-da rezultate semnificativ mai bune decât Delta + LZMA2. Acest lucru este
+sunetului PCM necomprimat. Cu toate acestea, algoritmii cu scop special pot
+da rezultate semnificativ mai bune decât Delta + LZMA2. Acest lucru este
valabil mai ales în cazul audio, care se comprimă mai repede și mai bine, de
exemplu, cu \fBflac\fP(1).
.IP ""
@@ -1127,8 +1225,8 @@ exemplu, cu \fBflac\fP(1).
.RS
.TP
\fBdist=\fP\fIdistanța\fP
-Specifică \fIdistanța\fP calculului delta în octeți. \fIDistanța\fP trebuie să
-fie 1\(en256. Valoarea implicită este 1.
+Specifică \fIdistanța\fP calculului delta în octeți. \fIDistanța\fP trebuie să fie
+1\(en256. Valoarea implicită este 1.
.IP ""
De exemplu, cu \fBdist=2\fP și intrare de opt octeți: A1 B1 A2 B3 A3 B5 A4 B7,
ieșirea va fi: A1 B1 01 02 01 02 01 02.
@@ -1137,14 +1235,14 @@ ieșirea va fi: A1 B1 01 02 01 02 01 02.
.SS "Alte opțiuni"
.TP
\fB\-q\fP, \fB\-\-quiet\fP
-Suprimă avertismentele și notificările. Specificați acest lucru de două ori
-pentru a suprima și erorile. Această opțiune nu are niciun efect asupra
-stării de ieșire. Adică, chiar dacă o avertizare a fost suprimată, starea
-de ieșire pentru a indica o avertizare este încă utilizată.
+Suprimă avertismentele și notificările. Specificați acest lucru de două ori
+pentru a suprima și erorile. Această opțiune nu are niciun efect asupra
+stării de ieșire. Adică, chiar dacă o avertizare a fost suprimată, starea de
+ieșire pentru a indica o avertizare este încă utilizată.
.TP
\fB\-v\fP, \fB\-\-verbose\fP
-Oferă informații detaliate. Dacă ieșirea de eroare standard este conectată
-la un terminal, \fBxz\fP va afișa un indicator de progres. Specificarea
+Oferă informații detaliate. Dacă ieșirea de eroare standard este conectată
+la un terminal, \fBxz\fP va afișa un indicator de progres. Specificarea
opțiunii \fB\-\-verbose\fP de două ori, va avea ca rezultat oferirea de
informații și mai detaliate.
.IP ""
@@ -1152,10 +1250,10 @@ Indicatorul de progres afișează următoarele informații:
.RS
.IP \(bu 3
Procentul de completare este afișat dacă se cunoaște dimensiunea fișierului
-de intrare. Adică, procentul nu poate fi afișat la procesarea fișierului
+de intrare. Adică, procentul nu poate fi afișat la procesarea fișierului
prin conducte(pipe).
.IP \(bu 3
-Cantitatea de date comprimate produse (comprimare) sau consumate
+Cantitatea de date comprimate produse (comprimare) sau consumate
(decomprimare).
.IP \(bu 3
Cantitatea de date necomprimate consumate (comprimare) sau produse
@@ -1165,16 +1263,16 @@ Raportul de comprimare, care se calculează împărțind cantitatea de date
comprimate procesate până acum la cantitatea de date necomprimate procesate
până acum.
.IP \(bu 3
-Viteza de comprimare sau decomprimare. Aceasta este măsurată drept
+Viteza de comprimare sau decomprimare. Aceasta este măsurată drept
cantitatea de date necomprimate consumate (comprimare) sau produse
-(decomprimare) pe secundă. Este afișată după ce au trecut câteva secunde de
+(decomprimare) pe secundă. Este afișată după ce au trecut câteva secunde de
când \fBxz\fP a început procesarea fișierului.
.IP \(bu 3
Timpul scurs în format M:SS sau H:MM:SS.
.IP \(bu 3
Timpul rămas estimat este afișat numai atunci când dimensiunea fișierului de
intrare este cunoscută și au trecut deja câteva secunde de când \fBxz\fP a
-început procesarea fișierului. Ora este afișată într\-un format mai puțin
+început procesarea fișierului. Ora este afișată într\-un format mai puțin
precis, care nu are niciodată două puncte, de exemplu, 2 min 30 s.
.RE
.IP ""
@@ -1182,26 +1280,25 @@ Când ieșirea de eroare standard nu este un terminal, \fB\-\-verbose\fP va face
\fBxz\fP să imprime numele fișierului, dimensiunea comprimată, dimensiunea
necomprimată, raportul de comprimare și, eventual, de asemenea, viteza și
timpul scurs pe o singură linie la ieșirea de eroare standard după
-comprimarea sau decomprimarea fișierului. Viteza și timpul scurs sunt
-incluse numai atunci când operațiunea a durat cel puțin câteva secunde.
-Dacă operațiunea nu s\-a încheiat, de exemplu, din cauza întreruperii din
-partea utilizatorului, se imprimă și procentul de completare dacă se
-cunoaște dimensiunea fișierului de intrare.
+comprimarea sau decomprimarea fișierului. Viteza și timpul scurs sunt
+incluse numai atunci când operațiunea a durat cel puțin câteva secunde. Dacă
+operațiunea nu s\-a încheiat, de exemplu, din cauza întreruperii din partea
+utilizatorului, se imprimă și procentul de completare dacă se cunoaște
+dimensiunea fișierului de intrare.
.TP
\fB\-Q\fP, \fB\-\-no\-warn\fP
Nu comută starea de ieșire la 2 chiar dacă a fost detectată o condiție care
-merită avertizată. Această opțiune nu afectează nivelul de detaliere al
+merită avertizată. Această opțiune nu afectează nivelul de detaliere al
informațiilor, astfel încât atât \fB\-\-quiet\fP cât și \fB\-\-no\-warn\fP trebuie
folosite pentru a nu afișa avertismente și pentru a nu modifica starea de
ieșire.
.TP
\fB\-\-robot\fP
-Afișează mesajele într\-un format care poate fi analizat de mașină. Acest
+Afișează mesajele într\-un format care poate fi analizat de mașină. Acest
lucru are scopul de a ușura scrierea interfețelor în care se dorește să se
folosească \fBxz\fP în loc de liblzma, ceea ce poate fi cazul cu diferite
-scripturi. Ieșirea cu această opțiune activată este menită să fie stabilă
-în toate versiunile \fBxz\fP. Consultați secțiunea \fBMOD ROBOT\fP pentru
-detalii.
+scripturi. Ieșirea cu această opțiune activată este menită să fie stabilă în
+toate versiunile \fBxz\fP. Consultați secțiunea \fBMOD ROBOT\fP pentru detalii.
.TP
\fB\-\-info\-memory\fP
Afișează, într\-un format care poate fi citit de om, câtă memorie fizică
@@ -1219,111 +1316,49 @@ iese cu succes
.TP
\fB\-V\fP, \fB\-\-version\fP
Afișează numărul versiunii \fBxz\fP și liblzma într\-un format care poate fi
-citit de om. Pentru a obține rezultate analizabile de mașină, specificați
+citit de om. Pentru a obține rezultate analizabile de mașină, specificați
\fB\-\-robot\fP înainte de \fB\-\-version\fP.
.
.SH "MOD ROBOT"
-Modul robot este activat cu opțiunea \fB\-\-robot\fP. Face ieșirea lui \fBxz\fP mai
+Modul robot este activat cu opțiunea \fB\-\-robot\fP. Face ieșirea lui \fBxz\fP mai
ușor de analizat de către alte programe. În prezent, opțiunea \fB\-\-robot\fP
-este acceptată numai împreună cu opțiunile \fB\-\-version\fP, \fB\-\-info\-memory\fP și
-\fB\-\-list\fP. Va fi acceptată pentru comprimare și decomprimare în viitor.
-.
-.SS Versiunea
-\fBxz \-\-robot \-\-version\fP va afișa numărul versiunii \fBxz\fP și liblzma în
-următorul format:
-.PP
-\fBXZ_VERSION=\fP\fIXYYYZZZS\fP
-.br
-\fBLIBLZMA_VERSION=\fP\fIXYYYZZZS\fP
-.TP
-\fIX\fP
-Versiunea majoră.
-.TP
-\fIYYY\fP
-Versiunea minoră. Numerele pare sunt prezente în versiunile stabile.
-Numerele impare sunt prezente în versiunile alfa sau beta.
-.TP
-\fIZZZ\fP
-Nivelul de plasture(patch) pentru versiunile stabile sau doar un contor
-pentru versiunile de dezvoltare.
-.TP
-\fIS\fP
-Stabilitate. 0 este alfa, 1 este beta și 2 este stabil. \fIS\fP trebuie să
-fie întotdeauna 2 atunci când \fIAAA\fP este par.
-.PP
-\fIXYYYZZZS\fP sunt aceleași pe ambele linii dacă \fBxz\fP și liblzma sunt din
-aceeași versiune XZ Utils.
-.PP
-Exemple: 4.999.9beta este \fB49990091\fP și 5.0.0 este \fB50000002\fP.
-.
-.SS "Informații privind limita memoriei"
-\fBxz \-\-robot \-\-info\-memory\fP afișează o singură linie cu multiple coloane
-separate prin tabulatoare:
-.IP 1. 4
-Cantitatea totală de memorie fizică (RAM) în octeți.
-.IP 2. 4
-Limita de utilizare a memoriei pentru comprimare în octeți
-(\fB\-\-memlimit\-compress\fP). O valoare specială de \fB0\fP indică configurarea
-implicită, care pentru modul cu un singur fir este la fel ca fără limită.
-.IP 3. 4
-Limita de utilizare a memoriei pentru decomprimare în octeți
-(\fB\-\-memlimit\-decompress\fP). O valoare specială de \fB0\fP indică configurarea
-implicită, care pentru modul cu un singur fir este la fel ca fără limită.
-.IP 4. 4
-Începând cu \fBxz\fP 5.3.4alpha: Utilizarea memoriei pentru decomprimarea cu
-mai multe fire în octeți (\fB\-\-memlimit\-mt\-decompress\fP). Acesta nu este
-niciodată zero, deoarece o valoare implicită specifică sistemului afișată în
-coloana 5 este utilizată dacă nu a fost specificată în mod explicit nicio
-limită. De asemenea, aceasta nu este niciodată mai mare decât valoarea din
-coloana 3, chiar dacă a fost specificată o valoare mai mare cu
-\fB\-\-memlimit\-mt\-decompress\fP.
-.IP 5. 4
-Începând cu \fBxz\fP 5.3.4alpha: o limită implicită de utilizare a memoriei
-specifică sistemului, care este utilizată pentru a limita numărul de fire de
-execuție atunci când se comprimă cu un număr automat de fire de execuție
-(\fB\-\-threads=0\fP) și nicio limită de utilizare a memoriei nu fost specificată
-cu (\fB\-\-memlimit\-compress\fP). Aceasta este, de asemenea, utilizată ca
-valoare implicită pentru \fB\-\-memlimit\-mt\-decompress\fP.
-.IP 6. 4
-Începând cu \fBxz\fP 5.3.4alpha: numărul de fire de execuție de procesor
-disponibile.
-.PP
-În viitor, rezultatul \fBxz \-\-robot \-\-info\-memory\fP poate avea mai multe
-coloane, dar niciodată mai mult de o singură linie.
+este acceptată numai împreună cu opțiunile \fB\-\-list\fP, \fB\-\-filters\-help\fP,
+\fB\-\-info\-memory\fP, și \fB\-\-version\fP. Va fi acceptată pentru comprimare și
+decomprimare în viitor.
.
.SS "Modul listă"
-\fBxz \-\-robot \-\-list\fP utilizează o ieșire separată de tabulatori. Prima
+\fBxz \-\-robot \-\-list\fP utilizează o ieșire separată de tabulatori. Prima
coloană a fiecărei linii are un șir care indică tipul de informații găsite
pe acea linie:
.TP
\fBname\fP
-Aceasta este întotdeauna prima linie când începe să se listeze un fișier. A
+Aceasta este întotdeauna prima linie când începe să se listeze un fișier. A
doua coloană de pe linie este numele fișierului.
.TP
\fBfile\fP
-Această linie conține informații generale despre fișierul \fB.xz\fP. Această
+Această linie conține informații generale despre fișierul \fB.xz\fP. Această
linie este întotdeauna tipărită după linia \fBname\fP.
.TP
\fBstream\fP
Acest tip de linie este utilizat numai atunci când a fost specificată
-opțiunea \fB\-\-verbose\fP. Există tot atâtea linii \fBstream\fP câte fluxuri
-există în fișierul \fB.xz\fP.
+opțiunea \fB\-\-verbose\fP. Există tot atâtea linii \fBstream\fP câte fluxuri există
+în fișierul \fB.xz\fP.
.TP
\fBblock\fP
Acest tip de linie este utilizat numai atunci când a fost specificată
-opțiunea \fB\-\-verbose\fP. Există tot atâtea linii \fBblock\fP câte blocuri există
-în fișierul \fB.xz\fP. Liniile \fBblock\fP sunt afișate după toate liniile
+opțiunea \fB\-\-verbose\fP. Există tot atâtea linii \fBblock\fP câte blocuri există
+în fișierul \fB.xz\fP. Liniile \fBblock\fP sunt afișate după toate liniile
\fBstream\fP; tipurile diferite de linii nu sunt intercalate.
.TP
\fBsummary\fP
Acest tip de linie este folosit numai atunci când opțiunea \fB\-\-verbose\fP a
-fost specificată de două ori. Această linie este afișată după toate liniile
-\fBblock\fP. Ca și linia \fBfile\fP, linia \fBsummary\fP conține informații generale
+fost specificată de două ori. Această linie este afișată după toate liniile
+\fBblock\fP. Ca și linia \fBfile\fP, linia \fBsummary\fP conține informații generale
despre fișierul \fB.xz\fP.
.TP
\fBtotals\fP
-Această linie este întotdeauna ultima linie din lista afișată la ieșire.
-Aceasta arată numărul total și dimensiunile.
+Această linie este întotdeauna ultima linie din lista afișată la
+ieșire. Aceasta arată numărul total și dimensiunile.
.PP
Coloanele din liniile \fBfile\fP:
.PD 0
@@ -1337,14 +1372,14 @@ Dimensiunea comprimată a fișierului
.IP 5. 4
Dimensiunea necomprimată a fișierului
.IP 6. 4
-Raportul de comprimare, de exemplu, \fB0,123\fP. Dacă raportul este peste
+Raportul de comprimare, de exemplu, \fB0,123\fP. Dacă raportul este peste
9,999, în locul raportului sunt afișate trei liniuțe (\fB\-\-\-\fP).
.IP 7. 4
-Lista de nume de verificare a integrității, separate prin virgule.
-Următoarele șiruri sunt utilizate pentru tipurile de verificare cunoscute:
-\fBNone\fP, \fBCRC32\fP, \fBCRC64\fP și \fBSHA\-256\fP. Pentru tipurile de verificări
-necunoscute, se utilizează \fBNone\-\fP\fIN\fP, unde \fIN\fP este ID\-ul de verificare
-ca număr zecimal (una sau două cifre).
+Lista de nume de verificare a integrității, separate prin
+virgule. Următoarele șiruri sunt utilizate pentru tipurile de verificare
+cunoscute: \fBNone\fP, \fBCRC32\fP, \fBCRC64\fP și \fBSHA\-256\fP. Pentru tipurile de
+verificări necunoscute, se utilizează \fBNone\-\fP\fIN\fP, unde \fIN\fP este ID\-ul de
+verificare ca număr zecimal (una sau două cifre).
.IP 8. 4
Dimensiunea totală a umpluturii fluxului din fișier
.RE
@@ -1399,7 +1434,7 @@ Numele verificării de integritate
.PD
.PP
Dacă opțiunea \fB\-\-verbose\fP a fost specificată de două ori, coloane
-suplimentare sunt incluse pe liniile \fBblock\fP. Acestea nu sunt afișate cu o
+suplimentare sunt incluse pe liniile \fBblock\fP. Acestea nu sunt afișate cu o
singură specificare a opțiunii \fB\-\-verbose\fP, deoarece obținerea acestor
informații necesită multe căutări și, prin urmare, poate fi lentă:
.PD 0
@@ -1411,8 +1446,8 @@ Dimensiunea antetului blocului
.IP 13. 4
Indicatori de bloc: \fBc\fP indică faptul că este prezentă dimensiunea
comprimată, iar \fBu\fP indică faptul că este prezentă dimensiunea
-necomprimată. Dacă indicatorul nu este determinat, este afișată o liniuță
-(\fB\-\fP) pentru a menține lungimea șirului fixă. Pot fi adăugate noi
+necomprimată. Dacă indicatorul nu este determinat, este afișată o liniuță
+(\fB\-\fP) pentru a menține lungimea șirului fixă. Pot fi adăugate noi
indicatoare la sfârșitul șirului, în viitor.
.IP 14. 4
Dimensiunea datelor comprimate reale din bloc (acest lucru exclude antetul
@@ -1421,7 +1456,7 @@ blocului, umplutura blocului și câmpurile de verificare)
Cantitatea de memorie (în octeți) necesară pentru a decomprima acest bloc cu
această versiune \fBxz\fP
.IP 16. 4
-Lanț de filtrare. Rețineți că majoritatea opțiunilor utilizate în timpul
+Lanț de filtrare. Rețineți că majoritatea opțiunilor utilizate în timpul
comprimării nu pot fi cunoscute, deoarece doar opțiunile necesare pentru
decomprimare sunt stocate în anteturile \fB.xz\fP.
.RE
@@ -1462,7 +1497,7 @@ fost prezente în fișiere
.IP 8. 4
Dimensiunea umpluturii fluxului
.IP 9. 4
-Numărul de fișiere. Aceasta este aici pentru a păstra ordinea coloanelor
+Numărul de fișiere. Aceasta este aici pentru a păstra ordinea coloanelor
anterioare la fel ca pe liniile \fBfile\fP.
.PD
.RE
@@ -1488,6 +1523,89 @@ Versiunile viitoare pot adăuga noi tipuri de linii și pot fi adăugate
coloane noi la tipurile de linii existente, dar coloanele existente nu vor
fi modificate.
.
+.SS "Ajutor pentru filtrare"
+\fBxz \-\-robot \-\-filters\-help\fP afișează filtrele acceptate în următorul
+format:
+.PP
+\fIfiltru\fP\fB:\fP\fIopțiune\fP\fB=<\fP\fIvaloare\fP\fB>,\fP\fIopțiune\fP\fB=<\fP\fIvaloare\fP\fB>\fP...
+.TP
+\fBfiltru\fP
+Numele filtrului
+.TP
+\fIopțiune\fP
+Numele unei opțiuni specifice unui filtru
+.TP
+\fIvaloare\fP
+Intervalele numerice \fIvaloare\fP apar ca
+\fB<\fP\fImin\fP\fB\-\fP\fImax\fP\fB>\fP. Alegerile \fIvaloare\fP de tip șir de
+caractere sunt afișate în cadrul \fB< >\fP și separate de un caracter
+\fB|\fP.
+.PP
+Fiecare filtru este afișat pe propria linie.
+.
+.SS "Informații privind limita memoriei"
+\fBxz \-\-robot \-\-info\-memory\fP afișează o singură linie cu multiple coloane
+separate prin tabulatoare:
+.IP 1. 4
+Cantitatea totală de memorie fizică (RAM) în octeți.
+.IP 2. 4
+Limita de utilizare a memoriei pentru comprimare în octeți
+(\fB\-\-memlimit\-compress\fP). O valoare specială de \fB0\fP indică configurarea
+implicită, care pentru modul cu un singur fir este la fel ca fără limită.
+.IP 3. 4
+Limita de utilizare a memoriei pentru decomprimare în octeți
+(\fB\-\-memlimit\-decompress\fP). O valoare specială de \fB0\fP indică configurarea
+implicită, care pentru modul cu un singur fir este la fel ca fără limită.
+.IP 4. 4
+Începând cu \fBxz\fP 5.3.4alpha: Utilizarea memoriei pentru decomprimarea cu
+mai multe fire în octeți (\fB\-\-memlimit\-mt\-decompress\fP). Acesta nu este
+niciodată zero, deoarece o valoare implicită specifică sistemului afișată în
+coloana 5 este utilizată dacă nu a fost specificată în mod explicit nicio
+limită. De asemenea, aceasta nu este niciodată mai mare decât valoarea din
+coloana 3, chiar dacă a fost specificată o valoare mai mare cu
+\fB\-\-memlimit\-mt\-decompress\fP.
+.IP 5. 4
+Începând cu \fBxz\fP 5.3.4alpha: o limită implicită de utilizare a memoriei
+specifică sistemului, care este utilizată pentru a limita numărul de fire de
+execuție atunci când se comprimă cu un număr automat de fire de execuție
+(\fB\-\-threads=0\fP) și nicio limită de utilizare a memoriei nu fost specificată
+cu (\fB\-\-memlimit\-compress\fP). Aceasta este, de asemenea, utilizată ca valoare
+implicită pentru \fB\-\-memlimit\-mt\-decompress\fP.
+.IP 6. 4
+Începând cu \fBxz\fP 5.3.4alpha: numărul de fire de execuție de procesor
+disponibile.
+.PP
+În viitor, rezultatul \fBxz \-\-robot \-\-info\-memory\fP poate avea mai multe
+coloane, dar niciodată mai mult de o singură linie.
+.
+.SS Versiunea
+\fBxz \-\-robot \-\-version\fP va afișa numărul versiunii \fBxz\fP și liblzma în
+următorul format:
+.PP
+\fBXZ_VERSION=\fP\fIXYYYZZZS\fP
+.br
+\fBLIBLZMA_VERSION=\fP\fIXYYYZZZS\fP
+.TP
+\fIX\fP
+Versiunea majoră.
+.TP
+\fIYYY\fP
+Versiunea minoră. Numerele pare sunt prezente în versiunile
+stabile. Numerele impare sunt prezente în versiunile alfa sau beta.
+.TP
+\fIZZZ\fP
+Nivelul de plasture(patch) pentru versiunile stabile sau doar un contor
+pentru versiunile de dezvoltare.
+.TP
+\fIS\fP
+Stabilitate. 0 este alfa, 1 este beta și 2 este stabil. \fIS\fP trebuie să fie
+întotdeauna 2 atunci când \fIAAA\fP este par.
+.PP
+\fIXYYYZZZS\fP sunt aceleași pe ambele linii dacă \fBxz\fP și liblzma sunt din
+aceeași versiune XZ Utils.
+.PP
+Exemple: 4.999.9beta este \fB49990091\fP și 5.0.0 este \fB50000002\fP.
+.
.SH "STARE DE IEȘIRE"
.TP
\fB0\fP
@@ -1505,58 +1623,59 @@ standard nu afectează starea de ieșire.
.SH "VARIABILE DE MEDIU"
\fBxz\fP analizează liste de opțiuni separate prin spații din variabilele de
mediu \fBXZ_DEFAULTS\fP și \fBXZ_OPT\fP, în această ordine, înainte de a analiza
-opțiunile din linia de comandă. Rețineți că numai opțiunile sunt analizate
-din variabilele de mediu; toate non\-opțiunile sunt ignorate în tăcere.
-Analiza se face cu funcția \fBgetopt_long\fP(3) care este folosită și pentru
-argumentele liniei de comandă.
+opțiunile din linia de comandă. Rețineți că numai opțiunile sunt analizate
+din variabilele de mediu; toate non\-opțiunile sunt ignorate în
+tăcere. Analiza se face cu funcția \fBgetopt_long\fP(3) care este folosită și
+pentru argumentele liniei de comandă.
.TP
\fBXZ_DEFAULTS\fP
Opțiuni implicite specifice utilizatorului sau la nivelul întregului
-sistem. De obicei, acest lucru este specificat într\-un script de
+sistem. De obicei, acest lucru este specificat într\-un script de
inițializare shell pentru a activa limitatorul de utilizare a memoriei lui
-\fBxz\fP implicit. Excluzând scripturile de inițializare shell și cazurile
+\fBxz\fP implicit. Excluzând scripturile de inițializare shell și cazurile
speciale similare, scripturile nu trebuie niciodată să modifice sau să
dezactiveze \fBXZ_DEFAULTS\fP.
.TP
\fBXZ_OPT\fP
Acest lucru este pentru transmiterea opțiunilor către \fBxz\fP atunci când nu
-este posibil să definiți opțiunile direct în linia de comandă a \fBxz\fP.
-Acesta este cazul când \fBxz\fP este rulat de un script sau de un instrument,
-de exemplu, GNU \fBtar\fP(1):
+este posibil să definiți opțiunile direct în linia de comandă a
+\fBxz\fP. Acesta este cazul când \fBxz\fP este rulat de un script sau de un
+instrument, de exemplu, GNU \fBtar\fP(1):
.RS
.RS
.PP
.nf
-\f(CWXZ_OPT=\-2v tar caf foo.tar.xz foo\fP
+\f(CRXZ_OPT=\-2v tar caf foo.tar.xz foo\fR
.fi
.RE
.RE
.IP ""
Scripturile pot folosi \fBXZ_OPT\fP, de exemplu, pentru a configura opțiunile
-implicite de comprimare specifice scriptului. Se recomandă totuși să se
+implicite de comprimare specifice scriptului. Se recomandă totuși să se
permită utilizatorilor să înlocuiască \fBXZ_OPT\fP dacă acest lucru este
-rezonabil. De exemplu, în scripturile \fBsh\fP(1) se poate folosi ceva de
-genul acesta:
+rezonabil. De exemplu, în scripturile \fBsh\fP(1) se poate folosi ceva de genul
+acesta:
.RS
.RS
.PP
.nf
-\f(CWXZ_OPT=${XZ_OPT\-"\-7e"} export XZ_OPT\fP
+\f(CRXZ_OPT=${XZ_OPT\-"\-7e"}
+export XZ_OPT\fR
.fi
.RE
.RE
.
.SH "COMPATIBILITATE CU LZMA\-UTILS"
Sintaxa liniei de comandă a lui \fBxz\fP este practic o super\-colecție de
-\fBlzma\fP, \fBunlzma\fP și \fBlzcat\fP așa cum se găsește în LZMA Utils 4.32.x. În
+\fBlzma\fP, \fBunlzma\fP și \fBlzcat\fP așa cum se găsește în LZMA Utils 4.32.x. În
cele mai multe cazuri, este posibil să înlocuiți LZMA Utils cu XZ Utils fără
-a întrerupe scripturile existente. Există totuși unele incompatibilități,
+a întrerupe scripturile existente. Există totuși unele incompatibilități,
care uneori pot cauza probleme.
.
.SS "Niveluri de comprimare prestabilite"
Numerotarea nivelurilor de comprimare prestabilite nu este identică în \fBxz\fP
-și LZMA Utils. Cea mai importantă diferență este modul în care dimensiunile
-dicționarului sunt atribuite diferitelor niveluri prestabilite. Dimensiunea
+și LZMA Utils. Cea mai importantă diferență este modul în care dimensiunile
+dicționarului sunt atribuite diferitelor niveluri prestabilite. Dimensiunea
dicționarului este aproximativ egală cu memoria utilizată la decomprimare.
.RS
.PP
@@ -1605,38 +1724,38 @@ Nivelul prestabilit implicit în LZMA Utils este \fB\-7\fP, în timp ce în XZ
Utils este \fB\-6\fP, deci ambele folosesc un dicționar de 8Mio în mod implicit.
.
.SS "Fișiere .lzma transmise în flux vs. netransmise în flux"
-Dimensiunea necomprimată a fișierului poate fi stocată în antetul \fB.lzma\fP.
-LZMA Utils face asta atunci când comprimă fișiere obișnuite. Alternativa
-este să marcați că dimensiunea necomprimată este necunoscută și să folosiți
-marcajul de sfârșit de încărcare pentru a indica unde ar trebui să se
-oprească decomprimarea. LZMA Utils folosește această metodă atunci când
-dimensiunea necomprimată nu este cunoscută, ceea ce este cazul, de exemplu,
-când se folosesc conducte.
+Dimensiunea necomprimată a fișierului poate fi stocată în antetul
+\&\fB.lzma\fP. LZMA Utils face asta atunci când comprimă fișiere
+obișnuite. Alternativa este să marcați că dimensiunea necomprimată este
+necunoscută și să folosiți marcajul de sfârșit de încărcare pentru a indica
+unde ar trebui să se oprească decomprimarea. LZMA Utils folosește această
+metodă atunci când dimensiunea necomprimată nu este cunoscută, ceea ce este
+cazul, de exemplu, când se folosesc conducte.
.PP
\fBxz\fP acceptă decomprimarea fișierelor \fB.lzma\fP cu sau fără marcaj de
sfârșit de încărcare, dar toate fișierele \fB.lzma\fP create de \fBxz\fP vor
folosi marcajul de sfârșit de încărcare și vor avea dimensiunea necomprimată
-marcată ca necunoscută în antetul \fB.lzma\fP. Aceasta poate fi o problemă în
-unele situații mai puțin frecvente. De exemplu, un instrument de
+marcată ca necunoscută în antetul \fB.lzma\fP. Aceasta poate fi o problemă în
+unele situații mai puțin frecvente. De exemplu, un instrument de
decomprimare \fB.lzma\fP încorporat într\-un dispozitiv poate funcționa numai cu
-fișiere care au dimensiunea necomprimată cunoscută. Dacă întâmpinați
-această problemă, trebuie să utilizați LZMA Utils sau LZMA SDK pentru a crea
-fișiere \fB.lzma\fP cu dimensiunea necomprimată cunoscută.
+fișiere care au dimensiunea necomprimată cunoscută. Dacă întâmpinați această
+problemă, trebuie să utilizați LZMA Utils sau LZMA SDK pentru a crea fișiere
+\&\fB.lzma\fP cu dimensiunea necomprimată cunoscută.
.
.SS "Fișiere .lzma neacceptate"
Formatul \fB.lzma\fP permite valori \fIlc\fP de până la 8 și valori \fIlp\fP de până
-la 4. LZMA Utils poate decomprima fișiere cu orice \fIlc\fP și \fIlp\fP, dar
-creează întotdeauna fișiere cu \fBlc=3\fP și \fBlp=0\fP. Crearea de fișiere cu
+la 4. LZMA Utils poate decomprima fișiere cu orice \fIlc\fP și \fIlp\fP, dar
+creează întotdeauna fișiere cu \fBlc=3\fP și \fBlp=0\fP. Crearea de fișiere cu
alte \fIlc\fP și \fIlp\fP este posibilă cu \fBxz\fP și cu LZMA SDK.
.PP
Implementarea filtrului LZMA1 în liblzma necesită ca suma \fIlc\fP și \fIlp\fP să
-nu depășească 4. Altfel, fișierele \fB.lzma\fP, care depășesc această
-limitare, nu pot fi decomprimate cu \fBxz\fP.
+nu depășească 4. Altfel, fișierele \fB.lzma\fP, care depășesc această limitare,
+nu pot fi decomprimate cu \fBxz\fP.
.PP
LZMA Utils creează numai fișiere \fB.lzma\fP care au o dimensiune de dicționar
de 2^\fIn\fP (o putere de 2), dar acceptă fișiere cu orice dimensiune de
-dicționar. liblzma acceptă numai fișierele \fB.lzma\fP care au dimensiunea de
-dicționar de 2^\fIn\fP sau 2^\fIn\fP + 2^(\fIn\fP\-1). Acest lucru este pentru a
+dicționar. liblzma acceptă numai fișierele \fB.lzma\fP care au dimensiunea de
+dicționar de 2^\fIn\fP sau 2^\fIn\fP + 2^(\fIn\fP\-1). Acest lucru este pentru a
reduce numărul de „fals pozitiv” atunci când se detectează fișiere \fB.lzma\fP.
.PP
Aceste limitări nu ar trebui să fie o problemă în practică, deoarece practic
@@ -1645,13 +1764,13 @@ accepta.
.
.SS "Resturi rămase"
Când decomprimă, LZMA Utils ignoră în tăcere totul după primul flux
-\&\fB.lzma\fP. În majoritatea situațiilor, aceasta este o eroare. Aceasta
+\&\fB.lzma\fP. În majoritatea situațiilor, aceasta este o eroare. Aceasta
înseamnă, de asemenea, că LZMA Utils nu acceptă decomprimarea fișierelor
\&\fB.lzma\fP concatenate.
.PP
Dacă au rămas date după primul flux \fB.lzma\fP, \fBxz\fP consideră că fișierul
este corupt, cu excepția cazului în care a fost utilizată opțiunea
-\fB\-\-single\-stream\fP. Acest lucru poate rupe scripturile obscure(scrise
+\fB\-\-single\-stream\fP. Acest lucru poate rupe scripturile obscure(scrise
deficitar) care presupun că resturile rămase sunt ignorate.
.
.SH NOTE
@@ -1659,23 +1778,23 @@ deficitar) care presupun că resturile rămase sunt ignorate.
.SS "Rezultatul comprimării poate varia"
Ieșirea exactă comprimată produsă din același fișier de intrare necomprimat
poate varia între versiunile XZ Utils, chiar dacă opțiunile de comprimare
-sunt identice. Acest lucru se datorează faptului că instrumentul
-codificator poate fi îmbunătățit (comprimare mai rapidă sau mai bună) fără a
-afecta formatul fișierului. Ieșirea poate varia chiar și între compilările
-diferite ale aceleiași versiuni XZ Utils, dacă sunt utilizate opțiuni
-diferite de compilare.
+sunt identice. Acest lucru se datorează faptului că instrumentul codificator
+poate fi îmbunătățit (comprimare mai rapidă sau mai bună) fără a afecta
+formatul fișierului. Ieșirea poate varia chiar și între compilările diferite
+ale aceleiași versiuni XZ Utils, dacă sunt utilizate opțiuni diferite de
+compilare.
.PP
Cele de mai sus înseamnă că odată ce opțiunea \fB\-\-rsyncable\fP a fost
utilizată, fișierele rezultate nu vor fi neapărat sincronizate cu rsync
decât dacă atât fișierele vechi, cât și cele noi au fost comprimate cu
-aceeași versiune xz. Această problemă poate fi remediată dacă o parte a
+aceeași versiune xz. Această problemă poate fi remediată dacă o parte a
implementării codificatorului este înghețată pentru a menține stabilă
ieșirea „rsyncabilă” între versiunile xz.
.
.SS "Instrumente de decomprimare .xz încorporate"
Implementările instrumentului de decomprimare \fB.xz\fP încorporat, cum ar fi
XZ Embedded, nu acceptă neapărat fișiere create cu tipuri de \fIverificare\fP a
-integrității, altele decât \fBnone\fP și \fBcrc32\fP. Deoarece valoarea implicită
+integrității, altele decât \fBnone\fP și \fBcrc32\fP. Deoarece valoarea implicită
este \fB\-\-check=crc64\fP, trebuie să utilizați \fB\-\-check=none\fP sau
\fB\-\-check=crc32\fP atunci când creați fișiere pentru sistemele încorporate.
.PP
@@ -1694,7 +1813,7 @@ implicit (\fB\-6\fP) și elimină fișierul \fIfoo\fP dacă comprimarea are succ
.RS
.PP
.nf
-\f(CWxz foo\fP
+\f(CRxz foo\fR
.fi
.RE
.PP
@@ -1703,7 +1822,7 @@ decomprimarea este efectuată cu succes:
.RS
.PP
.nf
-\f(CWxz \-dk bar.xz\fP
+\f(CRxz \-dk bar.xz\fR
.fi
.RE
.PP
@@ -1714,7 +1833,7 @@ puțină memorie pentru comprimare și decomprimare (48Mio și, respectiv,
.RS
.PP
.nf
-\f(CWtar cf \- baz | xz \-4e > baz.tar.xz\fP
+\f(CRtar cf \- baz | xz \-4e > baz.tar.xz\fR
.fi
.RE
.PP
@@ -1723,7 +1842,7 @@ ieșirea standard cu o singură comandă:
.RS
.PP
.nf
-\f(CWxz \-dcf a.txt b.txt.xz c.txt d.txt.lzma > abcd.txt\fP
+\f(CRxz \-dcf a.txt b.txt.xz c.txt d.txt.lzma > abcd.txt\fR
.fi
.RE
.
@@ -1733,16 +1852,17 @@ paraleliza comprimarea mai multor fișiere:
.RS
.PP
.nf
-\f(CWfind . \-type f \e! \-name '*.xz' \-print0 \e | xargs \-0r \-P4 \-n16 xz \-T1\fP
+\f(CRfind . \-type f \e! \-name '*.xz' \-print0 \e
+ | xargs \-0r \-P4 \-n16 xz \-T1\fR
.fi
.RE
.PP
Opțiunea \fB\-P\fP pentru comanda \fBxargs\fP(1) stabilește numărul de procese
paralele \fBxz\fP. Cea mai bună valoare pentru opțiunea \fB\-n\fP depinde de câte
-fișiere trebuie să fie comprimate. Dacă există doar câteva fișiere,
-valoarea ar trebui probabil să fie 1; cu zeci de mii de fișiere, 100 sau
-chiar mai mult poate să fie valoarea potrivită pentru a reduce numărul de
-procese \fBxz\fP pe care \fBxargs\fP(1) le va crea în final.
+fișiere trebuie să fie comprimate. Dacă există doar câteva fișiere, valoarea
+ar trebui probabil să fie 1; cu zeci de mii de fișiere, 100 sau chiar mai
+mult poate să fie valoarea potrivită pentru a reduce numărul de procese
+\fBxz\fP pe care \fBxargs\fP(1) le va crea în final.
.PP
Opțiunea \fB\-T1\fP pentru \fBxz\fP este acolo pentru a\-l forța să ruleze în modul
cu un singur fir de execuție, deoarece \fBxargs\fP(1) este folosit pentru a
@@ -1754,18 +1874,22 @@ fișiere:
.RS
.PP
.nf
-\f(CWxz \-\-robot \-\-list *.xz | awk '/^totals/{print $5\-$4}'\fP
+\f(CRxz \-\-robot \-\-list *.xz | awk '/^totals/{print $5\-$4}'\fR
.fi
.RE
.PP
Un script poate dori să afle dacă folosește o versiune \fBxz\fP suficient de
nouă. Următorul script \fBsh\fP(1) verifică dacă numărul versiunii
-instrumentului \fBxz\fP este cel puțin 5.0.0. Această metodă este compatibilă
+instrumentului \fBxz\fP este cel puțin 5.0.0. Această metodă este compatibilă
cu versiunile beta vechi, care nu acceptau opțiunea \fB\-\-robot\fP:
.RS
.PP
.nf
-\f(CWif ! eval "$(xz \-\-robot \-\-version 2> /dev/null)" || [ "$XZ_VERSION" \-lt 50000002 ]; then echo "Versiunea dumneavoastră de „xz” este prea veche!" fi unset XZ_VERSION LIBLZMA_VERSION\fP
+\f(CRif ! eval "$(xz \-\-robot \-\-version 2> /dev/null)" ||
+ [ "$XZ_VERSION" \-lt 50000002 ]; then
+ echo "Your xz is too old."
+fi
+unset XZ_VERSION LIBLZMA_VERSION\fR
.fi
.RE
.PP
@@ -1775,19 +1899,24 @@ mărește:
.RS
.PP
.nf
-\f(CWNEWLIM=$((123 << 20))\ \ # 123 MiB OLDLIM=$(xz \-\-robot \-\-info\-memory | cut \-f3) if [ $OLDLIM \-eq 0 \-o $OLDLIM \-gt $NEWLIM ]; then XZ_OPT="$XZ_OPT \-\-memlimit\-decompress=$NEWLIM" export XZ_OPT fi\fP
+\f(CRNEWLIM=$((123 << 20))\ \ # 123 MiB
+OLDLIM=$(xz \-\-robot \-\-info\-memory | cut \-f3)
+if [ $OLDLIM \-eq 0 \-o $OLDLIM \-gt $NEWLIM ]; then
+ XZ_OPT="$XZ_OPT \-\-memlimit\-decompress=$NEWLIM"
+ export XZ_OPT
+fi\fR
.fi
.RE
.
.SS "Lanțuri de filtrare personalizate pentru instrumentul de comprimare"
Cea mai simplă utilizare a lanțurilor de filtrare personalizate este
-personalizarea unei opțiuni prestabilite LZMA2. Acest lucru poate fi util,
+personalizarea unei opțiuni prestabilite LZMA2. Acest lucru poate fi util,
deoarece opțiunile prestabilite acoperă doar un subset al combinațiilor
potențial utile de opțiuni de comprimare.
.PP
Coloanele CPUComp din tabelele de descriere a opțiunilor \fB\-0\fP ... \fB\-9\fP și
\fB\-\-extreme\fP sunt utile atunci când personalizați opțiunilor prestabilite
-LZMA2. Iată părțile relevante colectate din aceste două tabele:
+LZMA2. Iată părțile relevante colectate din aceste două tabele:
.RS
.PP
.TS
@@ -1814,19 +1943,19 @@ decât ar face \fBxz \-8\fP, o opțiune prestabilită cu o valoare CPUComp scăz
.RS
.PP
.nf
-\f(CWxz \-\-lzma2=preset=1,dict=32MiB foo.tar\fP
+\f(CRxz \-\-lzma2=preset=1,dict=32MiB foo.tar\fR
.fi
.RE
.PP
Cu anumite fișiere, comanda de mai sus poate fi mai rapidă decât \fBxz \-6\fP în
-timp ce comprimă semnificativ mai bine. Cu toate acestea, trebuie subliniat
+timp ce comprimă semnificativ mai bine. Cu toate acestea, trebuie subliniat
că doar unele fișiere se beneficiază de un dicționar mare, păstrând în
-același timp valoarea CPUComp scăzută. Cea mai evidentă situație, în care
-un dicționar mare poate ajuta foarte mult, este o arhivă care conține
-fișiere foarte asemănătoare de cel puțin câțiva megaocteți fiecare.
-Dimensiunea dicționarului trebuie să fie semnificativ mai mare decât orice
-fișier individual pentru a permite LZMA2 să profite din plin de asemănările
-dintre fișierele consecutive.
+același timp valoarea CPUComp scăzută. Cea mai evidentă situație, în care un
+dicționar mare poate ajuta foarte mult, este o arhivă care conține fișiere
+foarte asemănătoare de cel puțin câțiva megaocteți fiecare. Dimensiunea
+dicționarului trebuie să fie semnificativ mai mare decât orice fișier
+individual pentru a permite LZMA2 să profite din plin de asemănările dintre
+fișierele consecutive.
.PP
Dacă utilizarea unei mari cantități de memorie pentru comprimare și
decomprimare este în regulă, iar fișierul comprimat are cel puțin câteva
@@ -1835,74 +1964,74 @@ cei 64Mio pe care i\-ar folosi \fBxz \-9\fP:
.RS
.PP
.nf
-\f(CWxz \-vv \-\-lzma2=dict=192MiB big_foo.tar\fP
+\f(CRxz \-vv \-\-lzma2=dict=192MiB big_foo.tar\fR
.fi
.RE
.PP
Utilizarea opțiunii \fB\-vv\fP (\fB\-\-verbose \-\-verbose\fP) ca în exemplul de mai
sus, poate fi utilă pentru a vedea cerințele de memorie la comprimare și
-decomprimare. Amintiți\-vă că utilizarea unui dicționar mai mare decât
+decomprimare. Amintiți\-vă că utilizarea unui dicționar mai mare decât
dimensiunea fișierului necomprimat este risipă de memorie, de aceea, comanda
de mai sus nu este utilă pentru fișiere mici.
.PP
Uneori, timpul de comprimare nu contează, dar utilizarea memoriei la
decomprimare trebuie menținută la un nivel scăzut, de exemplu, pentru a face
-posibilă decomprimarea fișierului pe un sistem încorporat. Următoarea
+posibilă decomprimarea fișierului pe un sistem încorporat. Următoarea
comandă folosește \fB\-6e\fP (\fB\-6 \-\-extreme\fP) ca bază și fixează dimensiunea
-dicționarului la doar 64Kio. Fișierul rezultat poate fi decomprimat cu XZ
+dicționarului la doar 64Kio. Fișierul rezultat poate fi decomprimat cu XZ
Embedded (de aceea există \fB\-\-check=crc32\fP) folosind aproximativ 100Kio de
memorie.
.RS
.PP
.nf
-\f(CWxz \-\-check=crc32 \-\-lzma2=preset=6e,dict=64KiB foo\fP
+\f(CRxz \-\-check=crc32 \-\-lzma2=preset=6e,dict=64KiB foo\fR
.fi
.RE
.PP
Dacă doriți să stoarceți cât mai mulți octeți posibil, ajustarea numărului
de biți de context literal (\fIlc\fP) și a numărului de biți de poziție (\fIpb\fP)
-poate ajuta uneori. Ajustarea numărului de biți de poziție literală (\fIlp\fP)
+poate ajuta uneori. Ajustarea numărului de biți de poziție literală (\fIlp\fP)
ar putea ajuta, de asemenea, dar de obicei \fIlc\fP și \fIpb\fP sunt mai
-importante. De exemplu, o arhivă de cod sursă conține în mare parte text
+importante. De exemplu, o arhivă de cod sursă conține în mare parte text
US\-ASCII, așa că ceva precum comanda următoare, ar putea oferi un fișier
„mai slăbuț” (aproximativ cu 0,1%) mai mic decât cu \fBxz \-6e\fP (încercați și
fără \fBlc=4\fP):
.RS
.PP
.nf
-\f(CWxz \-\-lzma2=preset=6e,pb=0,lc=4 fișierul_sursă.tar\fP
+\f(CRxz \-\-lzma2=preset=6e,pb=0,lc=4 source_code.tar\fR
.fi
.RE
.PP
Utilizarea unui alt filtru împreună cu LZMA2 poate îmbunătăți comprimarea cu
-anumite tipuri de fișiere. De exemplu, pentru a comprima o bibliotecă
+anumite tipuri de fișiere. De exemplu, pentru a comprima o bibliotecă
partajată x86 pe 32 de biți sau x86 pe 64 de biți folosind filtrul BCJ x86:
.RS
.PP
.nf
-\f(CWxz \-\-x86 \-\-lzma2 libfoo.so\fP
+\f(CRxz \-\-x86 \-\-lzma2 libfoo.so\fR
.fi
.RE
.PP
-Rețineți că ordinea opțiunilor de filtrare este semnificativă. Dacă
-\fB\-\-x86\fP este specificată după \fB\-\-lzma2\fP, \fBxz\fP va da o eroare, deoarece nu
-poate exista niciun filtru după LZMA2 și, de asemenea, pentru că filtrul x86
-BCJ nu poate fi utilizat ca ultimul filtru din lanțul de filtrare.
+Rețineți că ordinea opțiunilor de filtrare este semnificativă. Dacă \fB\-\-x86\fP
+este specificată după \fB\-\-lzma2\fP, \fBxz\fP va da o eroare, deoarece nu poate
+exista niciun filtru după LZMA2 și, de asemenea, pentru că filtrul x86 BCJ
+nu poate fi utilizat ca ultimul filtru din lanțul de filtrare.
.PP
-Filtrul Delta împreună cu LZMA2 pot da rezultate bune cu imagini bitmap. De
+Filtrul Delta împreună cu LZMA2 pot da rezultate bune cu imagini bitmap. De
obicei, ar trebui să întreacă comprimarea PNG, care are câteva filtre mai
avansate decât delta simplă, dar utilizează Deflate pentru comprimarea
reală.
.PP
Imaginea trebuie să fie salvată în format necomprimat, de exemplu, ca TIFF
-necomprimat. Parametrul de distanță al filtrului Delta este fixat să se
-potrivească cu numărul de octeți per pixel din imagine. De exemplu,
+necomprimat. Parametrul de distanță al filtrului Delta este fixat să se
+potrivească cu numărul de octeți per pixel din imagine. De exemplu,
bitmap\-ul RGB pe 24 de biți necesită \fBdist=3\fP și este, de asemenea, bine să
pasați \fBpb=0\fP la LZMA2 pentru a se adapta alinierii pe trei octeți:
.RS
.PP
.nf
-\f(CWxz \-\-delta=dist=3 \-\-lzma2=pb=0 foo.tiff\fP
+\f(CRxz \-\-delta=dist=3 \-\-lzma2=pb=0 foo.tiff\fR
.fi
.RE
.PP
diff --git a/po4a/man/ro/xzdec.1 b/po4a/man/ro/xzdec.1
index 91e4d6c..8e71978 100644
--- a/po4a/man/ro/xzdec.1
+++ b/po4a/man/ro/xzdec.1
@@ -1,15 +1,25 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Author: Lasse Collin
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
+.\" Romanian translation for xz-man.
+.\" Mesajele în limba română pentru manualul pachetului XZ Utils.
+.\" Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>, 2022 - 2024.
+.\" Cronologia traducerii fișierului „xz-man”:
+.\" Traducerea inițială, făcută de R-GC, pentru versiunea xz-man 5.4.0-pre1.
+.\" Actualizare a traducerii pentru versiunea 5.4.0-pre2, făcută de R-GC, dec-2022.
+.\" Actualizare a traducerii pentru versiunea 5.4.3, făcută de R-GC, mai-2023.
+.\" Actualizare a traducerii pentru versiunea 5.4.4-pre1, făcută de R-GC, iul-2023.
+.\" Actualizare a traducerii pentru versiunea 5.6.0-pre1, făcută de R-GC, feb-2024.
+.\" Actualizare a traducerii pentru versiunea 5.6.0-pre2, făcută de R-GC, feb-2024.
+.\" Actualizare a traducerii pentru versiunea Y, făcută de X, Z(luna-anul).
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZDEC 1 19.04.2017 Tukaani "Utilități XZ"
+.TH XZDEC 1 2024\-04\-08 Tukaani "Utilități XZ"
.SH NUME
xzdec, lzmadec \- Programe de decomprimare mici de fișiere .xz și .lzma
.SH REZUMAT
@@ -18,41 +28,41 @@ xzdec, lzmadec \- Programe de decomprimare mici de fișiere .xz și .lzma
\fBlzmadec\fP [\fIopțiune...\fP] [\fIfișier...\fP]
.SH DESCRIERE
\fBxzdec\fP este un instrument de decomprimare bazat pe liblzma pentru
-fișierele \fB.xz\fP (și numai \fB.xz\fP). \fBxzdec\fP este destinat să funcționeze
-ca un înlocuitor pentru \fBxz\fP(1) în cele mai frecvente situații în care un
+fișierele \fB.xz\fP (și numai \fB.xz\fP). \fBxzdec\fP este destinat să funcționeze ca
+un înlocuitor pentru \fBxz\fP(1) în cele mai frecvente situații în care un
script a fost scris pentru a utiliza \fBxz \-\-decompress \-\-stdout\fP (și posibil
câteva alte opțiuni frecvent utilizate) pentru a decomprima fișierele
-\&\fB.xz\fP. \fBlzmadec\fP este identic cu \fBxzdec\fP cu excepția faptului că
+\&\fB.xz\fP. \fBlzmadec\fP este identic cu \fBxzdec\fP cu excepția faptului că
\fBlzmadec\fP acceptă fișierele \fB.lzma\fP în loc de fișierele \fB.xz\fP.
.PP
Pentru a reduce dimensiunea executabilului, \fBxzdec\fP nu acceptă modul cu mai
multe fire de execuție sau localizarea(afișarea mesajelor în limba stabilită
de configurările regionale) și nu citește opțiunile din variabilele de mediu
-\fBXZ_DEFAULTS\fP și \fBXZ_OPT\fP. \fBxzdec\fP nu acceptă afișarea informațiilor
+\fBXZ_DEFAULTS\fP și \fBXZ_OPT\fP. \fBxzdec\fP nu acceptă afișarea informațiilor
intermediare de progres: trimiterea semnalului \fBSIGINFO\fP la \fBxzdec\fP nu
face nimic, iar trimiterea semnalului \fBSIGUSR1\fP încheie procesul în loc să
afișeze informații despre progres.
.SH OPȚIUNI
.TP
\fB\-d\fP, \fB\-\-decompress\fP, \fB\-\-uncompress\fP
-Ignorat pentru compatibilitate cu \fBxz\fP(1). \fBxzdec\fP acceptă numai
+Ignorat pentru compatibilitate cu \fBxz\fP(1). \fBxzdec\fP acceptă numai
decomprimarea.
.TP
\fB\-k\fP, \fB\-\-keep\fP
-Ignorat pentru compatibilitate cu \fBxz\fP(1). \fBxzdec\fP nu creează sau elimină
+Ignorat pentru compatibilitate cu \fBxz\fP(1). \fBxzdec\fP nu creează sau elimină
niciodată niciun fișier.
.TP
\fB\-c\fP, \fB\-\-stdout\fP, \fB\-\-to\-stdout\fP
-Ignorat pentru compatibilitate cu \fBxz\fP(1). \fBxzdec\fP scrie întotdeauna
+Ignorat pentru compatibilitate cu \fBxz\fP(1). \fBxzdec\fP scrie întotdeauna
datele decomprimate la ieșirea standard.
.TP
\fB\-q\fP, \fB\-\-quiet\fP
Specificarea acestui lucru o dată nu face nimic, deoarece \fBxzdec\fP nu
-afișează niciodată avertismente sau notificări. Specificați acest lucru de
+afișează niciodată avertismente sau notificări. Specificați acest lucru de
două ori pentru a suprima erorile.
.TP
\fB\-Q\fP, \fB\-\-no\-warn\fP
-Ignorat pentru compatibilitate cu \fBxz\fP(1). \fBxzdec\fP nu folosește niciodată
+Ignorat pentru compatibilitate cu \fBxz\fP(1). \fBxzdec\fP nu folosește niciodată
starea de ieșire 2.
.TP
\fB\-h\fP, \fB\-\-help\fP
@@ -72,15 +82,15 @@ A apărut o eroare.
de ieșire 2 nu este folosită de \fBxzdec\fP.
.SH NOTE
Utilizați \fBxz\fP(1) în loc de \fBxzdec\fP sau \fBlzmadec\fP pentru utilizarea
-normală de zi cu zi. \fBxzdec\fP sau \fBlzmadec\fP sunt destinate numai
+normală de zi cu zi. \fBxzdec\fP sau \fBlzmadec\fP sunt destinate numai
situațiilor în care este important să aveți un instrument de decomprimare
mai mic decât \fBxz\fP(1), cu funcții complete.
.PP
-\fBxzdec\fP și \fBlzmadec\fP nu sunt chiar atât de mici. Dimensiunea poate fi
+\fBxzdec\fP și \fBlzmadec\fP nu sunt chiar atât de mici. Dimensiunea poate fi
redusă și mai mult prin eliminarea caracteristicilor din liblzma în timpul
compilării, dar acest lucru nu ar trebui să se facă de obicei pentru
executabilele distribuite în distribuții tipice de sisteme de operare
-neîncorporate. Dacă aveți nevoie de un instrument de decomprimare \fB.xz\fP cu
+neîncorporate. Dacă aveți nevoie de un instrument de decomprimare \fB.xz\fP cu
adevărat mic, luați în considerare utilizarea XZ Embedded.
.SH "CONSULTAȚI ȘI"
\fBxz\fP(1)
diff --git a/po4a/man/ro/xzdiff.1 b/po4a/man/ro/xzdiff.1
index 9d4d833..227fd42 100644
--- a/po4a/man/ro/xzdiff.1
+++ b/po4a/man/ro/xzdiff.1
@@ -1,45 +1,66 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
-.\" Original zdiff.1 for gzip: Jean-loup Gailly
+.\" Authors: Lasse Collin
+.\" Jia Tan
.\"
-.\" Modifications for XZ Utils: Lasse Collin
-.\" Andrew Dudman
+.\" Romanian translation for xz-man.
+.\" Mesajele în limba română pentru manualul pachetului XZ Utils.
+.\" Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>, 2022 - 2024.
+.\" Cronologia traducerii fișierului „xz-man”:
+.\" Traducerea inițială, făcută de R-GC, pentru versiunea xz-man 5.4.0-pre1.
+.\" Actualizare a traducerii pentru versiunea 5.4.0-pre2, făcută de R-GC, dec-2022.
+.\" Actualizare a traducerii pentru versiunea 5.4.3, făcută de R-GC, mai-2023.
+.\" Actualizare a traducerii pentru versiunea 5.4.4-pre1, făcută de R-GC, iul-2023.
+.\" Actualizare a traducerii pentru versiunea 5.6.0-pre1, făcută de R-GC, feb-2024.
+.\" Actualizare a traducerii pentru versiunea 5.6.0-pre2, făcută de R-GC, feb-2024.
+.\" Actualizare a traducerii pentru versiunea Y, făcută de X, Z(luna-anul).
.\"
-.\" License: GNU GPLv2+
+.\" (Note that this file is not based on gzip's zdiff.1.)
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZDIFF 1 04.06.2021 Tukaani "Utilități XZ"
+.TH XZDIFF 1 "13 februarie 2024" Tukaani "Utilități XZ"
.SH NUME
xzcmp, xzdiff, lzcmp, lzdiff \- compară fișierele comprimate
+.
.SH REZUMAT
-\fBxzcmp\fP [\fIopțiuni_comparare\fP] \fIfișier1\fP [\fIfișier2\fP]
+\fBxzcmp\fP [\fIopțiune...\fP] \fIfișier1\fP [\fIfișier2\fP]
.br
-\fBxzdiff\fP [\fIopțiuni_diferențe\fP] \fIfișier1\fP [\fIfișier2\fP]
+\fBxzdiff\fP \&...
.br
-\fBlzcmp\fP [\fIopțiuni_comparare\fP] \fIfișier1\fP [\fIfișier2\fP]
+\fBlzcmp\fP \&...
.br
-\fBlzdiff\fP [\fIopțiuni_diferențe\fP] \fIfișier1\fP [\fIfișier2\fP]
+\fBlzdiff\fP \&...
+.
.SH DESCRIERE
-\fBxzcmp\fP și \fBxzdiff\fP invocă \fBcmp\fP(1) sau \fBdiff\fP(1) pentru fișierele
-comprimate cu \fBxz\fP(1), \fBlzma\fP(1), \fBgzip\fP( 1), \fBbzip2\fP(1), \fBlzop\fP(1) sau
-\fBzstd\fP(1). Toate opțiunile specificate sunt transmise direct către
-\fBcmp\fP(1) sau \fBdiff\fP(1). Dacă este specificat un singur fișier, atunci
-fișierele comparate sunt \fIfișier1\fP (care trebuie să aibă un sufix al unui
-format de comprimare acceptat) și \fIfișier1\fP din care a fost eliminat
-sufixul formatului de comprimare. Dacă sunt specificate două fișiere,
-atunci acestea sunt decomprimate dacă este necesar și introduse în \fBcmp\fP(1)
-sau \fBdiff\fP(1). Starea de ieșire din \fBcmp\fP(1) sau \fBdiff\fP(1) este păstrată
-cu excepția cazului în care apare o eroare de decomprimare; atunci starea de
-ieșire este 2.
+\fBxzcmp\fP și \fBxzdiff\fP compară conținutul necomprimat a două fișiere. Datele
+necomprimate și opțiunile sunt transmise la \fBcmp\fP(1) sau \fBdiff\fP(1), cu
+excepția cazului în care se specifică \fB\-\-help\fP sau \fB\-\-version\fP.
.PP
-Numele \fBlzcmp\fP și \fBlzdiff\fP sunt furnizate pentru compatibilitatea cu LZMA
-Utils.
+Dacă sunt specificate atât \fIfișier1\fP, cât și \fIfișier2\fP, acestea pot fi
+fișiere necomprimate sau fișiere în formate pe care \fBxz\fP(1), \fBgzip\fP(1),
+\fBbzip2\fP(1), \fBlzop\fP(1), \fBzstd\fP(1) sau \fBlz4\fP(1) le poate
+decomprima. Comenzile de decomprimare necesare sunt determinate de sufixele
+numelor de fișiere \fIfișier1\fP și \fIfișier2\fP. Se presupune că un fișier cu un
+sufix necunoscut este fie necomprimat, fie într\-un format pe care \fBxz\fP(1)
+îl poate decomprima.
+.PP
+În cazul în care se furnizează un singur nume de fișier, \fIfișier1\fP trebuie
+să aibă un sufix al unui format de comprimare acceptat, iar numele pentru
+\fIfișier2\fP se presupune că este \fIfișier1\fP fără sufixul formatului de
+comprimare.
+.PP
+Comenzile \fBlzcmp\fP și \fBlzdiff\fP sunt furnizate pentru compatibilitate
+retroactivă cu LZMA Utils.
+.
+.SH "STARE DE IEȘIRE"
+În cazul în care apare o eroare de decomprimare, starea de ieșire este
+\fB2\fP. În caz contrar, se utilizează starea de ieșire \fBcmp\fP(1) sau
+\fBdiff\fP(1).
+.
.SH "CONSULTAȚI ȘI"
\fBcmp\fP(1), \fBdiff\fP(1), \fBxz\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1),
-\fBzstd\fP(1), \fBzdiff\fP(1)
-.SH ERORI
-Mesajele din programele \fBcmp\fP(1) sau \fBdiff\fP(1) se referă la nume de
-fișiere temporare în loc de cele specificate.
+\fBzstd\fP(1), \fBlz4\fP(1)
diff --git a/po4a/man/ro/xzgrep.1 b/po4a/man/ro/xzgrep.1
index e1d6371..52aa072 100644
--- a/po4a/man/ro/xzgrep.1
+++ b/po4a/man/ro/xzgrep.1
@@ -1,21 +1,33 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
-.\" Original zgrep.1 for gzip: Jean-loup Gailly
-.\" Charles Levert <charles@comm.polymtl.ca>
+.\" Authors: Lasse Collin
+.\" Jia Tan
.\"
-.\" Modifications for XZ Utils: Lasse Collin
+.\" Romanian translation for xz-man.
+.\" Mesajele în limba română pentru manualul pachetului XZ Utils.
+.\" Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>, 2022 - 2024.
+.\" Cronologia traducerii fișierului „xz-man”:
+.\" Traducerea inițială, făcută de R-GC, pentru versiunea xz-man 5.4.0-pre1.
+.\" Actualizare a traducerii pentru versiunea 5.4.0-pre2, făcută de R-GC, dec-2022.
+.\" Actualizare a traducerii pentru versiunea 5.4.3, făcută de R-GC, mai-2023.
+.\" Actualizare a traducerii pentru versiunea 5.4.4-pre1, făcută de R-GC, iul-2023.
+.\" Actualizare a traducerii pentru versiunea 5.6.0-pre1, făcută de R-GC, feb-2024.
+.\" Actualizare a traducerii pentru versiunea 5.6.0-pre2, făcută de R-GC, feb-2024.
+.\" Actualizare a traducerii pentru versiunea Y, făcută de X, Z(luna-anul).
.\"
-.\" License: GNU GPLv2+
+.\" (Note that this file is not based on gzip's zgrep.1.)
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZGREP 1 19.07.2022 Tukaani "Utilități XZ"
+.TH XZGREP 1 "13 februarie 2024" Tukaani "Utilități XZ"
.SH NUME
-xzgrep \- caută în fișierele comprimate pentru o expresie regulată
+xzgrep \- caută modele în fișiere posibil comprimate
+.
.SH REZUMAT
-\fBxzgrep\fP [\fIopțiuni_grep\fP] [\fB\-e\fP] \fImodel\fP [\fIfișier...\fP]
+\fBxzgrep\fP [\fIopțiune...\fP] \fIlistă\-modele\fP [\fIfișier...\fP]
.br
\fBxzegrep\fP \&...
.br
@@ -26,39 +38,66 @@ xzgrep \- caută în fișierele comprimate pentru o expresie regulată
\fBlzegrep\fP \&...
.br
\fBlzfgrep\fP \&...
+.
.SH DESCRIERE
-\fBxzgrep\fP invocă \fBgrep\fP(1) pentru \fIfișiere\fP care pot să fie decomprimate
-sau comprimate cu \fBxz\fP(1), \fBlzma\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1)
-sau \fBzstd\fP(1). Toate opțiunile specificate sunt transmise direct către
-\fBgrep\fP(1).
+\fBxzgrep\fP invocă \fBgrep\fP(1) asupra conținutului necomprimat al
+fișierelor. Formatele \fIfișierelor\fP sunt determinate de sufixele numelor de
+fișiere. Orice \fIfișier\fP cu un sufix acceptat de \fBxz\fP(1), \fBgzip\fP(1),
+\fBbzip2\fP(1), \fBlzop\fP(1), \fBzstd\fP(1) sau \fBlz4\fP(1) va fi decomprimat; toate
+celelalte fișiere sunt presupuse a fi necomprimate.
.PP
-Dacă nu este specificat \fIfișier\fP, atunci intrarea standard este
-decomprimată dacă este necesar și alimentează \fBgrep\fP(1). La citirea din
-intrarea standard, fișierele comprimate \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1)
-și \fBzstd\fP(1) nu sunt acceptate.
+Dacă nu se specifică niciun \fIfișier\fP sau dacă \fIfișier\fP este \fB\-\fP, se
+citește intrarea standard. Atunci când se citește de la intrarea standard,
+sunt decomprimate numai fișierele acceptate de \fBxz\fP(1). Se presupune că
+celelalte fișiere sunt deja în format necomprimat.
.PP
-Dacă \fBxzgrep\fP este invocat ca \fBxzegrep\fP sau \fBxzfgrep\fP, atunci este
-folosit \fBgrep \-E\fP sau \fBgrep \-F\fP în loc de \fBgrep\fP(1). Același lucru este
-valabil și pentru comenzile \fBlzgrep\fP, \fBlzegrep\fP și \fBlzfgrep\fP, care sunt
-furnizate pentru compatibilitate cu LZMA Utils.
+Sunt acceptate majoritatea \fIopțiunilor\fP din \fBgrep\fP(1). Cu toate acestea,
+următoarele opțiuni nu sunt acceptate:
+.IP "" 4
+\fB\-r\fP, \fB\-\-recursive\fP
+.IP "" 4
+\fB\-R\fP, \fB\-\-dereference\-recursive\fP
+.IP "" 4
+\fB\-d\fP, \fB\-\-directories=\fP\fIacțiune\fP
+.IP "" 4
+\fB\-Z\fP, \fB\-\-null\fP
+.IP "" 4
+\fB\-z\fP, \fB\-\-null\-data\fP
+.IP "" 4
+\fB\-\-include=\fP\fIglobal\fP
+.IP "" 4
+\fB\-\-exclude=\fP\fIglobal\fP
+.IP "" 4
+\fB\-\-exclude\-from=\fP\fIfișier\fP
+.IP "" 4
+\fB\-\-exclude\-dir=\fP\fIglobal\fP
+.PP
+\fBxzegrep\fP este un alias pentru \fBxzgrep \-E\fP. \fBxzfgrep\fP este un alias
+pentru \fBxzgrep \-F\fP.
+.PP
+Comenzile \fBlzgrep\fP, \fBlzegrep\fP și \fBlzfgrep\fP sunt furnizate pentru
+compatibilitate retroactivă cu LZMA Utils.
+.
.SH "STARE DE IEȘIRE"
.TP
0
A fost găsită cel puțin o potrivire din cel puțin unul dintre fișierele de
-la intrare. Nu au apărut erori.
+la intrare. Nu au apărut erori.
.TP
1
-Nu au fost găsite potriviri din niciunul dintre fișierele de la intrare. Nu
+Nu au fost găsite potriviri din niciunul dintre fișierele de la intrare. Nu
au apărut erori.
.TP
>1
-A apărut una sau mai multe erori. Nu se cunoaște dacă au fost găsite
+A apărut una sau mai multe erori. Nu se cunoaște dacă au fost găsite
potriviri.
+.
.SH "VARIABILE DE MEDIU"
.TP
\fBGREP\fP
-Dacă variabila de mediu \fBGREP\fP este definită, \fBxzgrep\fP o folosește în loc
-de \fBgrep\fP(1), \fBgrep \-E\fP sau \fBgrep \-F\fP.
+Dacă variabila de mediu \fBGREP\fP este stabilită la o valoare nevidă, aceasta
+este utilizată în locul lui \fBgrep\fP, \fBgrep \-E\fP sau \fBgrep \-F\fP.
+.
.SH "CONSULTAȚI ȘI"
\fBgrep\fP(1), \fBxz\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1), \fBzstd\fP(1),
-\fBzgrep\fP(1)
+\fBlz4\fP(1), \fBzgrep\fP(1)
diff --git a/po4a/man/ro/xzless.1 b/po4a/man/ro/xzless.1
index abb8667..c97911f 100644
--- a/po4a/man/ro/xzless.1
+++ b/po4a/man/ro/xzless.1
@@ -1,9 +1,19 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Authors: Andrew Dudman
.\" Lasse Collin
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
+.\" Romanian translation for xz-man.
+.\" Mesajele în limba română pentru manualul pachetului XZ Utils.
+.\" Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>, 2022 - 2024.
+.\" Cronologia traducerii fișierului „xz-man”:
+.\" Traducerea inițială, făcută de R-GC, pentru versiunea xz-man 5.4.0-pre1.
+.\" Actualizare a traducerii pentru versiunea 5.4.0-pre2, făcută de R-GC, dec-2022.
+.\" Actualizare a traducerii pentru versiunea 5.4.3, făcută de R-GC, mai-2023.
+.\" Actualizare a traducerii pentru versiunea 5.4.4-pre1, făcută de R-GC, iul-2023.
+.\" Actualizare a traducerii pentru versiunea 5.6.0-pre1, făcută de R-GC, feb-2024.
+.\" Actualizare a traducerii pentru versiunea 5.6.0-pre2, făcută de R-GC, feb-2024.
+.\" Actualizare a traducerii pentru versiunea Y, făcută de X, Z(luna-anul).
.\"
.\" (Note that this file is not based on gzip's zless.1.)
.\"
@@ -12,7 +22,7 @@
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZLESS 1 27.09.2010 Tukaani "Utilități XZ"
+.TH XZLESS 1 "12 februarie 2024" Tukaani "Utilități XZ"
.SH NUME
xzless, lzless \- vizualizează fișierele (text) comprimate xz sau lzma
.SH REZUMAT
@@ -21,27 +31,27 @@ xzless, lzless \- vizualizează fișierele (text) comprimate xz sau lzma
\fBlzless\fP [\fIfișier\fP...]
.SH DESCRIERE
\fBxzless\fP este un filtru care afișează textul din fișierele comprimate pe un
-terminal. Funcționează pentru fișiere comprimate cu \fBxz\fP(1) sau
-\fBlzma\fP(1). Dacă nu sunt date \fIfișiere\fP, \fBxzless\fP citește de la intrarea
-standard.
+terminal. Fișierele acceptate de \fBxz\fP(1) sunt decomprimate; se presupune
+că celelalte fișiere sunt deja în format necomprimat. Dacă nu se dă nici un
+\fIfișier\fP, \fBxzless\fP citește de la intrarea standard.
.PP
-\fBxzless\fP folosește \fBless\fP(1) pentru a\-și prezenta rezultatul. Spre
+\fBxzless\fP folosește \fBless\fP(1) pentru a\-și prezenta rezultatul. Spre
deosebire de \fBxzmore\fP, alegerea sa de pager nu poate fi modificată prin
-definirea unei variabile de mediu. Comenzile se bazează atât pe \fBmore\fP(1)
-cât și pe \fBvi\fP(1) și permit mișcarea înainte și înapoi și căutarea.
-Consultați manualul \fBless\fP(1) pentru mai multe informații.
+definirea unei variabile de mediu. Comenzile se bazează atât pe \fBmore\fP(1)
+cât și pe \fBvi\fP(1) și permit mișcarea înainte și înapoi și
+căutarea. Consultați manualul \fBless\fP(1) pentru mai multe informații.
.PP
Comanda numită \fBlzless\fP este furnizată pentru compatibilitatea cu LZMA
Utils.
.SH "VARIABILE DE MEDIU"
.TP
\fBLESSMETACHARS\fP
-O listă de caractere speciale pentru shell. Definită de \fBxzless\fP, cu
+O listă de caractere speciale pentru shell. Definită de \fBxzless\fP, cu
excepția cazului în care este deja definită în mediu.
.TP
\fBLESSOPEN\fP
Aceasta este definită în linia de comandă pentru a invoca instrumentul de
-decomprimare \fBxz\fP(1) pentru preprocesarea fișierelor de intrare pentru
+decomprimare \fBxz\fP(1) pentru preprocesarea fișierelor de intrare pentru
\fBless\fP(1).
.SH "CONSULTAȚI ȘI"
\fBless\fP(1), \fBxz\fP(1), \fBxzmore\fP(1), \fBzless\fP(1)
diff --git a/po4a/man/ro/xzmore.1 b/po4a/man/ro/xzmore.1
index ea45c68..e0b4054 100644
--- a/po4a/man/ro/xzmore.1
+++ b/po4a/man/ro/xzmore.1
@@ -1,40 +1,57 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
-.\" Original zdiff.1 for gzip: Jean-loup Gailly
-.\" Modifications for XZ Utils: Lasse Collin
+.\" Authors: Andrew Dudman
+.\" Lasse Collin
.\"
-.\" License: GNU GPLv2+
+.\" Romanian translation for xz-man.
+.\" Mesajele în limba română pentru manualul pachetului XZ Utils.
+.\" Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>, 2022 - 2024.
+.\" Cronologia traducerii fișierului „xz-man”:
+.\" Traducerea inițială, făcută de R-GC, pentru versiunea xz-man 5.4.0-pre1.
+.\" Actualizare a traducerii pentru versiunea 5.4.0-pre2, făcută de R-GC, dec-2022.
+.\" Actualizare a traducerii pentru versiunea 5.4.3, făcută de R-GC, mai-2023.
+.\" Actualizare a traducerii pentru versiunea 5.4.4-pre1, făcută de R-GC, iul-2023.
+.\" Actualizare a traducerii pentru versiunea 5.6.0-pre1, făcută de R-GC, feb-2024.
+.\" Actualizare a traducerii pentru versiunea 5.6.0-pre2, făcută de R-GC, feb-2024.
+.\" Actualizare a traducerii pentru versiunea Y, făcută de X, Z(luna-anul).
+.\"
+.\" (Note that this file is based on xzless.1 instead of gzip's zmore.1.)
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZMORE 1 30.06.2013 Tukaani "Utilități XZ"
+.TH XZMORE 1 "12 februarie 2024" Tukaani "Utilități XZ"
.SH NUME
xzmore, lzmore \- vizualizează fișierele (text) comprimate xz sau lzma
+.
.SH REZUMAT
-\fBxzmore\fP [\fIfișier...\fP]
+\fBxzmore\fP [\fIfișier\fP...]
.br
-\fBlzmore\fP [\fIfișier...\fP]
+\fBlzmore\fP [\fIfișier\fP...]
+.
.SH DESCRIERE
-\fBxzmore\fP este un filtru care vă permite să examinați conținutul fișierelor
-text comprimate \fBxz\fP(1) sau \fBlzma\fP(1), câte o pagină pe ecran, pe un
-terminal.
+\fBxzmore\fP afișează textul din fișierele comprimate pe un terminal folosind
+\fBmore\fP(1). Fișierele acceptate de \fBxz\fP(1) sunt decomprimate; se presupune
+că celelalte fișiere sunt deja în format necomprimat. Dacă nu se dă nici un
+\fIfișiere\fP, \fBxzmore\fP citește de la intrarea standard. Consultați manualul
+\fBmore\fP(1) pentru comenzile de la tastatură.
.PP
-Pentru a utiliza un paginator, altul decât paginatorul implicit \fBmore\fP,
-definiți variabila de mediu \fBPAGER\fP cu numele programului dorit. Comanda
-\fBlzmore\fP este furnizată pentru compatibilitatea cu LZMA Utils.
-.TP
-\fBe\fP sau \fBq\fP
-Când linia \-\-More\-\-(Fișierul următor: \fIfișier\fP) este afișată, această
-comandă face ca \fBxzmore\fP să iasă.
-.TP
-\fBs\fP
-Când linia \-\-More\-\-(Fișierul următor: \fIfișier\fP) este afișată, această
-comandă face ca \fBxzmore\fP să omită următorul fișier și să continue.
+Rețineți că este posibil ca derularea înapoi să nu fie posibilă în funcție
+de implementarea lui \fBmore\fP(1). Acest lucru se datorează faptului că
+\fBxzmore\fP utilizează o conductă pentru a transmite datele decomprimate către
+\fBmore\fP(1). \fBxzless\fP(1) utilizează \fBless\fP(1) care oferă caracteristici mai
+avansate.
.PP
-Pentru lista comenzilor de la tastatură acceptate în timp ce vizualizați
-conținutul unui fișier, consultați manualul paginatorului pe care îl
-utilizați, de obicei \fBmore\fP(1).
+Comanda \fBlzmore\fP este furnizată pentru compatibilitate retroactivă cu LZMA
+Utils.
+.
+.SH "VARIABILE DE MEDIU"
+.TP
+\fBPAGER\fP
+Dacă variabila de mediu \fBPAGER\fP, este definită, valoarea sa este utilizată
+ca paginator în loc de \fBmore\fP(1).
+.
.SH "CONSULTAȚI ȘI"
\fBmore\fP(1), \fBxz\fP(1), \fBxzless\fP(1), \fBzmore\fP(1)
diff --git a/po4a/man/uk/lzmainfo.1 b/po4a/man/uk/lzmainfo.1
index 357f114..95753eb 100644
--- a/po4a/man/uk/lzmainfo.1
+++ b/po4a/man/uk/lzmainfo.1
@@ -1,8 +1,9 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Author: Lasse Collin
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
+.\" Ukrainian translation for xz-man.
+.\" Yuri Chornoivan <yurchor@ukr.net>, 2019, 2022, 2023, 2024.
.\"
.\"*******************************************************************
.\"
diff --git a/po4a/man/uk/xz.1 b/po4a/man/uk/xz.1
index 7e11bf6..844df7e 100644
--- a/po4a/man/uk/xz.1
+++ b/po4a/man/uk/xz.1
@@ -1,17 +1,18 @@
'\" t
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Authors: Lasse Collin
.\" Jia Tan
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
+.\" Ukrainian translation for xz-man.
+.\" Yuri Chornoivan <yurchor@ukr.net>, 2019, 2022, 2023, 2024.
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZ 1 "17 липня 2023 року" Tukaani "XZ Utils"
+.TH XZ 1 2024\-04\-08 Tukaani "XZ Utils"
.
.SH НАЗВА
xz, unxz, xzcat, lzma, unlzma, lzcat — стискання та розпаковування файлів
@@ -475,9 +476,7 @@ CompCPU є спрощеним представленням параметрів
краще стискання, див. \fB\-\-extreme\fP.
.IP \(bu 3
CompMem містить вимоги до пам'яті засобу стискання у однопотоковому
-режимі. Значення можуть бути дещо різними для різних версій \fBxz\fP. Вимоги до
-пам'яті деяких майбутніх багатопотокових режимів можуть бути набагато
-вищими, ніж вимоги у однопотоковому режимі.
+режимі. Значення можуть бути дещо різними для різних версій \fBxz\fP.
.IP \(bu 3
У DecMem містяться вимоги до пам'яті при розпаковуванні. Тобто параметри
засобу стискання визначають вимоги до пам'яті при розпаковуванні. Точний
@@ -485,6 +484,11 @@ CompMem містить вимоги до пам'яті засобу стиска
словника LZMA2, але значення у таблиці було округлено до наступного цілого
значення МіБ.
.RE
+.IP ""
+Вимоги до пам'яті у багатопотоковому режимі є значно вищими, ніж у
+однопотоковому. З типовим значенням \fB\-\-block\-size\fP для кожного потоку треба
+3*3*DictSize плюс CompMem або DecMem. Наприклад, для чотирьох потоків з
+шаблоном \fB\-6\fP потрібно 660\(en670\ МіБ пам'яті.
.TP
\fB\-e\fP, \fB\-\-extreme\fP
Використати повільніший варіант вибраного рівня стискання (\fB\-0\fP ... \fB\-9\fP)
@@ -547,8 +551,8 @@ Utils. Намагайтеся не користуватися цими варі
МіБ. Використання значення \fIрозмір\fP, яке є меншим за розмір словника LZMA2,
має наслідком марну витрату оперативної пам'яті, оскільки його використання
призводить до того, що буфер словника LZMA2 ніколи не буде використано
-повністю. Розміри блоків зберігатимуться у заголовках блоків, які майбутня
-версія \fBxz\fP використовуватиме для багатопотокового розпаковування.
+повністю. У багатопотоковому режимі розміри блоків зберігатимуться у
+заголовках блоків. Ці дані потрібні для багатопотокового розпаковування.
.IP ""
У однопотоковому режимі поділ на блоки типово не
виконуватиметься. Встановлення значення для цього параметра не впливатиме на
@@ -556,26 +560,52 @@ Utils. Намагайтеся не користуватися цими варі
розміру, отже файли, які створено в однопотоковому режимі не будуть
ідентичними до файлів, які створено у багатопотоковому режимі. Те, що у
заголовках блоків не зберігатимуться дані щодо розміру також означає, що
-майбутні версії \fBxz\fP не зможуть розпаковувати такі файли у багатопотоковому
-режимі.
-.TP
-\fB\-\-block\-list=\fP\fIрозміри\fP
-При стисканні у форматі \fB.xz\fP починати новий блок після вказаної кількості
-інтервалів нестиснених даних.
-.IP ""
-Значення \fIрозмірів\fP розпакованих блоків слід задавати у форматі списку
-відокремлених комами значень. Якщо розмір пропущено (дві або декілька
-послідовних коми), буде використано розмір попереднього блоку.
-.IP ""
-Якщо файл вхідних даних є більшим за розміром за суму \fIрозмірів\fP, останнє
-значення у \fIрозмірах\fP буде повторено до кінця файла. Особливе значення \fB0\fP
-може бути використано як останнє значення, щоб позначити, що решту файла має
-бути закодовано як єдиний блок.
+\fBxz\fP не зможе розпаковувати такі файли у багатопотоковому режимі.
+.TP
+\fB\-\-block\-list=\fP\fIзаписи\fP
+При стисканні у форматі \fB.xz\fP починати новий блок із необов'язковим
+ланцюжком фільтрів після вказаної кількості інтервалів нестиснених даних.
+.IP ""
+\fIзаписи\fP є списком відокремлених комами значень. Кожен запис складається з
+необов'язкового номера ланцюжка фільтрів від 0 до 9, після якого йде
+двокрапка (\fB:\fP) і необхідний розмір нестиснутих даних. Пропущення запису
+(дві або більше послідовних ком) є скороченим варіантом визначення
+використання розміру та фільтрів попереднього запису.
+.IP ""
+Якщо файл вхідних даних є більшим за розміром за суму розмірів \fIзаписів\fP,
+останнє значення у \fIрозмірах\fP буде повторено до кінця файла. Особливе
+значення \fB0\fP може бути використано як останній розмір, щоб позначити, що
+решту файла має бути закодовано як єдиний блок.
+.IP ""
+Альтернативний ланцюжок фільтрів для кожного блоку можна вказати в поєднанні
+з параметрами \fB\-\-filters1=\fP\fIфільтри\fP \&...\& \fB\-\-filters9=\fP\fIфільтри\fP. Ці
+параметри визначають ланцюжки фільтрів з ідентифікатором у діапазоні
+1\(en9. Ланцюжок фільтрів 0 можна використовувати для посилання на типовий
+ланцюжок фільтрів — це те саме, що не вказувати ланцюжок
+фільтрів. Ідентифікатор ланцюжка фільтрів можна використовувати перед
+нестисненим розміром, після якого йде двокрапка (\fB:\fP). Наприклад, якщо
+вказати \fB\-\-block\-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB\fP, блоки будуть
+створені так:
+.RS
+.IP \(bu 3
+Ланцюжок фільтрів задано \fB\-\-filters1\fP із вхідними даними у 2 МіБ
+.IP \(bu 3
+Ланцюжок фільтрів задано \fB\-\-filters3\fP із вхідними даними у 2 МіБ
+.IP \(bu 3
+Ланцюжок фільтрів задано \fB\-\-filters2\fP із вхідними даними у 4 МіБ
+.IP \(bu 3
+Ланцюжок фільтрів задано \fB\-\-filters2\fP із вхідними даними у 4 МіБ
+.IP \(bu 3
+Типовий ланцюжок даних і вхідні дані у 2 МіБ
+.IP \(bu 3
+Типовий ланцюжок фільтрів та вхідні дані у 4 МіБ для кожного блоку до кінця
+вхідних даних.
+.RE
.IP ""
-Якщо вказати \fIрозміри\fP, які перевищують розмір блоку кодувальника (або
-типове значення у режимі із потоками обробки, або значення, яке встановлено
-за допомогою \fB\-\-block\-size=\fP\fIрозмір\fP), засіб кодування створить додаткові
-блоки, зберігаючи межі, які вказано у \fIрозмірах\fP. Наприклад, якщо вказати
+Якщо вказати розмір, який перевищує розмір блоку кодувальника (або типове
+значення у режимі із потоками обробки, або значення, яке встановлено за
+допомогою \fB\-\-block\-size=\fP\fIрозмір\fP), засіб кодування створить додаткові
+блоки, зберігаючи межі, які вказано у \fIзаписах\fP. Наприклад, якщо вказати
\fB\-\-block\-size=10MiB\fP \fB\-\-block\-list=5MiB,10MiB,8MiB,12MiB,24MiB\fP, а файл
вхідних даних має розмір 80 МіБ, буде отримано такі 11 блоків: 5, 10, 8, 10,
2, 10, 10, 4, 10, 10 і 1 МіБ.
@@ -757,6 +787,9 @@ Utils. Намагайтеся не користуватися цими варі
усі достатньо великі файли, які стиснено у багатопотоковому режимі, але не
задовольняють будь\-які файли, які було стиснуто у однопотоковому режимі,
навіть якщо було використано параметр \fB\-\-block\-size=\fP\fIрозмір\fP.
+.IP ""
+Типовим значенням для \fIпотоків\fP є \fB0\fP. У \fBxz\fP 5.4.x та старіших версіях
+типовим значенням є \fB1\fP.
.
.SS "Нетипові ланцюжки фільтрів засобу стискання"
Нетиповий ланцюжок фільтрування уможливлює докладне визначення параметрів
@@ -781,22 +814,55 @@ Utils. Намагайтеся не користуватися цими варі
ланцюжка. Залежно від фільтра, це обмеження є наслідком структури фільтра
або існує для запобігання проблем із захистом.
.PP
-Нетиповий ланцюжок фільтрів визначають за допомогою одного або декількох
-параметрів фільтрування у бажаному для ланцюжка фільтрування порядку. Тобто
-порядок параметрів фільтрування впливає на результат! При декодуванні
-необробленого потоку даних (\fB\-\-format=raw\fP) ланцюжок фільтрів визначають у
-тому самому порядку, який використовують для стискання даних.
-.PP
-Фільтри приймають специфічні для фільтрів \fIпараметри\fP у форматі списку
-значень, які відокремлено комами. Зайві коми у \fIпараметрах\fP буде
-проігноровано. У кожного параметра є типове значення, отже, вам слід вказати
-лише ті параметри, значення яких ви хочете змінити.
+Нетиповий ланцюжок фільтрів можна вказати двома різними способами. Параметри
+\fB\-\-filters=\fP\fIфільтри\fP і \fB\-\-filters1=\fP\fIфільтри\fP \&...\&
+\fB\-\-filters9=\fP\fIфільтри\fP надають змогу вказати цілий ланцюжок фільтрів в
+одному варіанті з використанням синтаксису рядків фільтрів liblzma. Крім
+того, ланцюжок фільтрів можна вказати за допомогою одного або кількох
+окремих параметрів фільтрування у тому порядку, в якому їх слід використати
+у ланцюжку фільтрів. Тобто порядок окремих параметрів фільтра є важливим!
+Під час декодування необроблених потоків (\fB\-\-format=raw\fP) ланцюжок фільтрів
+має бути вказано у тому ж порядку, що й під час стиснення. Будь\-який окремий
+фільтр або параметри попереднього налаштування, вказані перед параметром
+повного ланцюжка (\fB\-\-filters=\fP\fIфільтри\fP), буде відкинуто. Окремі фільтри,
+указані після параметра повного ланцюжка, відновлять типовий ланцюжок
+фільтрів.
+.PP
+І параметр повного і параметр окремого фільтра приймають специфічні для
+фільтрів \fIпараметри\fP у форматі списку значень, які відокремлено
+комами. Зайві коми у \fIпараметрах\fP буде проігноровано. У кожного параметра є
+типове значення, отже, вам слід вказати ті параметри, значення яких ви
+хочете змінити.
.PP
Щоб переглянути увесь ланцюжок фільтрів та \fIпараметри\fP, скористайтеся
командою \fBxz \-vv\fP (тобто, скористайтеся \fB\-\-verbose\fP двічі). Це працює
також для перегляду параметрів ланцюжка фільтрів, який використано у рівнях
стискання.
.TP
+\fB\-\-filters=\fP\fIфільтри\fP
+Визначає повний ланцюжок фільтрів або шаблон у форматі одного
+параметра. Кожен фільтр можна відокремити від інших пробілами або двома
+дефісами (\fB\-\-\fP). Можливо, \fIфільтри\fP доведеться взяти в лапки в командному
+рядку оболонки, щоб їх було оброблено як один параметр. Для позначення
+\fIпараметрів\fP скористайтеся \fB:\fP або \fB=\fP. До шаблона можна додати префікс
+\fB\-\fP і завершити без прапорців або декількома прапорцями. Єдиним
+підтримуваним прапорцем є \fBe\fP для застосування тих самих параметрів, що й
+\fB\-\-extreme\fP.
+.TP
+\fB\-\-filters1\fP=\fIфільтри\fP ... \fB\-\-filters9\fP=\fIфільтри\fP
+Вказати до дев'яти додаткових ланцюжків фільтрів, якими можна скористатися
+за допомогою \fB\-\-block\-list\fP.
+.IP ""
+Наприклад, якщо виконується стискання архіву із виконуваними файлами, за
+якими йдуть текстові файли, для виконуваної частини може бути використано
+ланцюжок фільтрів з фільтром BCJ, а для текстової частини — лише фільтр
+LZMA2.
+.TP
+\fB\-\-filters\-help\fP
+Вивести довідкове повідомлення з описом того, як вказати шаблони та нетипові
+ланцюжки фільтрів у параметри \fB\-\-filters\fP і \fB\-\-filters1=\fP\fIфільтри\fP
+\&...\& \fB\-\-filters9=\fP\fIфільтри\fP і завершити роботу із кодом успіху.
+.TP
\fB\-\-lzma1\fP[\fB=\fP\fIпараметри\fP]
.PD 0
.TP
@@ -1013,6 +1079,8 @@ LZMA2. Для розпаковування потрібен такий сами
\fB\-\-ia64\fP[\fB=\fP\fIпараметри\fP]
.TP
\fB\-\-sparc\fP[\fB=\fP\fIпараметри\fP]
+.TP
+\fB\-\-riscv\fP[\fB=\fP\fIпараметри\fP]
.PD
Додати фільтр гілок/викликів/переходів (branch/call/jump або BCJ) до
ланцюжка фільтрів. Цими фільтрами можна скористатися, лише якщо вони не є
@@ -1061,6 +1129,7 @@ ARM64;4;Найкращим є вирівнювання за
PowerPC;4;Лише зворотний порядок байтів
IA\-64;16;Itanium
SPARC;4;
+RISC\-V;2;
.TE
.RE
.RE
@@ -1068,10 +1137,25 @@ SPARC;4;
Оскільки фільтровані BCJ дані, зазвичай, стискають за допомогою LZMA2,
коефіцієнт стискання можна трохи поліпшити, якщо параметри LZMA2 буде
встановлено так, щоб вони відповідали вирівнюванню вибраного фільтра
-BCJ. Наприклад, з фільтром IA\-64 варто встановити \fBpb=4\fP або навіть
-\fBpb=4,lp=4,lc=0\fP з LZMA2 (2^4=16). Фільтр x86 є винятком; його, зазвичай,
-варто поєднувати із типовим чотирибайтовим вирівнюванням LZMA2 при стисканні
-виконуваних файлів x86.
+BCJ. Приклади:
+.RS
+.IP \(bu 3
+Фільтр IA\-64 має 16\-байтове вирівнювання, отже \fBpb=4,lp=4,lc=0\fP дасть добрі
+результати у поєднанні із LZMA2 (2^4=16).
+.IP \(bu 3
+Код RISC\-V має 2\-байтове або 4\-байтове вирівнювання залежно від того, чи
+містить файл 16\-бітові стислі інструкції (розширення C). Якщо використано
+16\-бітові інструкції, добрі результати дасть \fBpb=2,lp=1,lc=3\fP або
+\fBpb=1,lp=1,lc=3\fP. Якщо 16\-бітових інструкцій немає, найкращим варіантом є
+\fBpb=2,lp=2,lc=2\fP. Можна скористатися \fBreadelf \-h\fP, щоб перевірити, чи є
+"RVC" у рядку "Flags".
+.IP \(bu 3
+ARM64 завжди вирівняно на 4 байти, тому найкращим варіантом буде
+\fBpb=2,lp=2,lc=2\fP.
+.IP \(bu 3
+Фільтр x86 є виключенням. Зазвичай, добрі результати дають типові для LZMA2
+значення (\fBpb=2,lp=0,lc=3\fP), якщо стискають виконувані файли x86.
+.RE
.IP ""
У всіх фільтрах BCJ передбачено підтримку тих самих \fIпараметрів\fP:
.RS
@@ -1187,71 +1271,9 @@ A4 B7, результатом буде A1 B1 01 02 01 02 01 02.
.SH "РЕЖИМ РОБОТА"
Режим робота активують за допомогою параметра \fB\-\-robot\fP. Він спрощує
обробку виведених \fBxz\fP даних іншими програмами. У поточній версії підтримку
-\fB\-\-robot\fP передбачено лише разом із \fB\-\-version\fP, \fB\-\-info\-memory\fP та
-\fB\-\-list\fP. У майбутньому підтримку параметра буде передбачено для стискання
-та розпаковування.
-.
-.SS Версія
-\fBxz \-\-robot \-\-version\fP виведе назву версії \fBxz\fP і liblzma у такому
-форматі:
-.PP
-\fBXZ_VERSION=\fP\fIXYYYZZZS\fP
-.br
-\fBLIBLZMA_VERSION=\fP\fIXYYYZZZS\fP
-.TP
-\fIX\fP
-Основна версія.
-.TP
-\fIYYY\fP
-Проміжна версія. Непарні номери буде використано для стабільних
-версій. Непарні номери є номерами тестових версій.
-.TP
-\fIZZZ\fP
-Рівень латання для стабільних випусків або просто лічильник для випусків,
-які перебувають у розробці.
-.TP
-\fIS\fP
-Стабільність. 0 — alpha, 1 — beta, а 2 означає «стабільна версія». \fIS\fP має
-завжди дорівнювати 2, якщо \fIYYY\fP є парним.
-.PP
-\fIXYYYZZZS\fP є тим самим в обох рядках, якщо \fBxz\fP і liblzma належать до
-одного випуску XZ Utils.
-.PP
-Приклади: 4.999.9beta — це \fB49990091\fP, а 5.0.0 — це \fB50000002\fP.
-.
-.SS "Дані щодо обмеження пам'яті"
-\fBxz \-\-robot \-\-info\-memory\fP виводить один рядок з декількома відокремленими
-табуляціями стовпчиками:
-.IP 1. 4
-Загальний об'єм фізичної пам'яті (RAM) у байтах.
-.IP 2. 4
-Обмеження на використання пам'яті для стискання у байтах
-(\fB\-\-memlimit\-compress\fP). Особливе значення \fB0\fP вказує на типові
-налаштування, якими для однопотокового режиму є налаштування без обмеження
-на використання пам'яті.
-.IP 3. 4
-Обмеження на використання пам'яті для розпакування у байтах
-(\fB\-\-memlimit\-decompress\fP). Особливе значення \fB0\fP вказує на типові
-налаштування, якими для однопотокового режиму є налаштування без обмеження
-на використання пам'яті.
-.IP 4. 4
-Починаючи з \fBxz\fP 5.3.4alpha: використання пам'яті для багатопотокового
-розпаковування у байтах (\fB\-\-memlimit\-mt\-decompress\fP). Ніколи не дорівнює
-нулеві, оскільки буде використано специфічне для системи типове значення,
-яке показано у стовпчику 5, якщо обмеження не встановлено явним чином. Також
-ніколи не перевищуватиме значення у стовпчику 3, навіть якщо було вказано
-більше значення за допомогою \fB\-\-memlimit\-mt\-decompress\fP.
-.IP 5. 4
-Починаючи з \fBxz\fP 5.3.4alpha: специфічне для системи типове обмеження на
-використання пам'яті, яке використовують для обмеження кількості потоків при
-стисканні з автоматичною кількістю потоків (\fB\-\-threads=0\fP) і без визначення
-обмеження на використання пам'яті (\fB\-\-memlimit\-compress\fP). Це значення
-також використовують як типове значення для \fB\-\-memlimit\-mt\-decompress\fP.
-.IP 6. 4
-Починаючи з \fBxz\fP 5.3.4alpha: кількість доступних потоків обробки процесора.
-.PP
-У майбутньому у виведенні \fBxz \-\-robot \-\-info\-memory\fP може бути більше
-стовпчиків, але у виведеному буде не більше за один рядок.
+\fB\-\-robot\fP передбачено лише разом із \fB\-\-list\fP, \fB\-\-filters\-help\fP,
+\fB\-\-info\-memory\fP і \fB\-\-version\fP. У майбутньому підтримку параметра буде
+передбачено для стискання та розпаковування.
.
.SS "Режим списку"
У \fBxz \-\-robot \-\-list\fP використано табуляції для поділу виведених
@@ -1445,6 +1467,87 @@ A4 B7, результатом буде A1 B1 01 02 01 02 01 02.
У майбутніх версіях може бути додано нові типи рядків і нові стовпчики до
наявних типів рядків, але наявні стовпчики мають лишитися незмінними.
.
+.SS "Довідка з фільтрування"
+\fBxz \-\-robot \-\-filters\-help\fP виведе список підтримуваних фільтрів у такому
+форматі:
+.PP
+\fIфільтр\fP\fB:\fP\fIпараметр\fP\fB=<\fP\fIзначення\fP\fB>,\fP\fIпараметр\fP\fB=<\fP\fIзначення\fP\fB>\fP...
+.TP
+\fIфільтр\fP
+Назва фільтра
+.TP
+\fIпараметр\fP
+Назва специфічного для фільтра параметра
+.TP
+\fIзначення\fP
+Числові діапазони \fIvalue\fP слід вказати у форматі
+\fB<\fP\fIмінімум\fP\fB\-\fP\fIмаксимум\fP\fB>\fP. Варіанти рядка \fIзначення\fP
+показано у \fB< >\fP і відокремлено символом \fB|\fP.
+.PP
+Кожен фільтр буде виведено до окремого рядка.
+.
+.SS "Дані щодо обмеження пам'яті"
+\fBxz \-\-robot \-\-info\-memory\fP виводить один рядок з декількома відокремленими
+табуляціями стовпчиками:
+.IP 1. 4
+Загальний об'єм фізичної пам'яті (RAM) у байтах.
+.IP 2. 4
+Обмеження на використання пам'яті для стискання у байтах
+(\fB\-\-memlimit\-compress\fP). Особливе значення \fB0\fP вказує на типові
+налаштування, якими для однопотокового режиму є налаштування без обмеження
+на використання пам'яті.
+.IP 3. 4
+Обмеження на використання пам'яті для розпакування у байтах
+(\fB\-\-memlimit\-decompress\fP). Особливе значення \fB0\fP вказує на типові
+налаштування, якими для однопотокового режиму є налаштування без обмеження
+на використання пам'яті.
+.IP 4. 4
+Починаючи з \fBxz\fP 5.3.4alpha: використання пам'яті для багатопотокового
+розпаковування у байтах (\fB\-\-memlimit\-mt\-decompress\fP). Ніколи не дорівнює
+нулеві, оскільки буде використано специфічне для системи типове значення,
+яке показано у стовпчику 5, якщо обмеження не встановлено явним чином. Також
+ніколи не перевищуватиме значення у стовпчику 3, навіть якщо було вказано
+більше значення за допомогою \fB\-\-memlimit\-mt\-decompress\fP.
+.IP 5. 4
+Починаючи з \fBxz\fP 5.3.4alpha: специфічне для системи типове обмеження на
+використання пам'яті, яке використовують для обмеження кількості потоків при
+стисканні з автоматичною кількістю потоків (\fB\-\-threads=0\fP) і без визначення
+обмеження на використання пам'яті (\fB\-\-memlimit\-compress\fP). Це значення
+також використовують як типове значення для \fB\-\-memlimit\-mt\-decompress\fP.
+.IP 6. 4
+Починаючи з \fBxz\fP 5.3.4alpha: кількість доступних потоків обробки процесора.
+.PP
+У майбутньому у виведенні \fBxz \-\-robot \-\-info\-memory\fP може бути більше
+стовпчиків, але у виведеному буде не більше за один рядок.
+.
+.SS Версія
+\fBxz \-\-robot \-\-version\fP виведе назву версії \fBxz\fP і liblzma у такому
+форматі:
+.PP
+\fBXZ_VERSION=\fP\fIXYYYZZZS\fP
+.br
+\fBLIBLZMA_VERSION=\fP\fIXYYYZZZS\fP
+.TP
+\fIX\fP
+Основна версія.
+.TP
+\fIYYY\fP
+Проміжна версія. Непарні номери буде використано для стабільних
+версій. Непарні номери є номерами тестових версій.
+.TP
+\fIZZZ\fP
+Рівень латання для стабільних випусків або просто лічильник для випусків,
+які перебувають у розробці.
+.TP
+\fIS\fP
+Стабільність. 0 — alpha, 1 — beta, а 2 означає «стабільна версія». \fIS\fP має
+завжди дорівнювати 2, якщо \fIYYY\fP є парним.
+.PP
+\fIXYYYZZZS\fP є тим самим в обох рядках, якщо \fBxz\fP і liblzma належать до
+одного випуску XZ Utils.
+.PP
+Приклади: 4.999.9beta — це \fB49990091\fP, а 5.0.0 — це \fB50000002\fP.
+.
.SH "СТАН ВИХОДУ"
.TP
\fB0\fP
@@ -1482,7 +1585,7 @@ A4 B7, результатом буде A1 B1 01 02 01 02 01 02.
.RS
.PP
.nf
-\f(CWXZ_OPT=\-2v tar caf foo.tar.xz foo\fP
+\f(CRXZ_OPT=\-2v tar caf foo.tar.xz foo\fR
.fi
.RE
.RE
@@ -1495,7 +1598,8 @@ A4 B7, результатом буде A1 B1 01 02 01 02 01 02.
.RS
.PP
.nf
-\f(CWXZ_OPT=${XZ_OPT\-"\-7e"} export XZ_OPT\fP
+\f(CRXZ_OPT=${XZ_OPT\-"\-7e"}
+export XZ_OPT\fR
.fi
.RE
.RE
@@ -1645,7 +1749,7 @@ liblzma.
.RS
.PP
.nf
-\f(CWxz foo\fP
+\f(CRxz foo\fR
.fi
.RE
.PP
@@ -1654,7 +1758,7 @@ liblzma.
.RS
.PP
.nf
-\f(CWxz \-dk bar.xz\fP
+\f(CRxz \-dk bar.xz\fR
.fi
.RE
.PP
@@ -1664,7 +1768,7 @@ liblzma.
.RS
.PP
.nf
-\f(CWtar cf \- baz | xz \-4e > baz.tar.xz\fP
+\f(CRtar cf \- baz | xz \-4e > baz.tar.xz\fR
.fi
.RE
.PP
@@ -1673,7 +1777,7 @@ liblzma.
.RS
.PP
.nf
-\f(CWxz \-dcf a.txt b.txt.xz c.txt d.txt.lzma > abcd.txt\fP
+\f(CRxz \-dcf a.txt b.txt.xz c.txt d.txt.lzma > abcd.txt\fR
.fi
.RE
.
@@ -1683,7 +1787,8 @@ liblzma.
.RS
.PP
.nf
-\f(CWfind . \-type f \e! \-name '*.xz' \-print0 \e | xargs \-0r \-P4 \-n16 xz \-T1\fP
+\f(CRfind . \-type f \e! \-name '*.xz' \-print0 \e
+ | xargs \-0r \-P4 \-n16 xz \-T1\fR
.fi
.RE
.PP
@@ -1702,7 +1807,7 @@ liblzma.
.RS
.PP
.nf
-\f(CWxz \-\-robot \-\-list *.xz | awk '/^totals/{print $5\-$4}'\fP
+\f(CRxz \-\-robot \-\-list *.xz | awk '/^totals/{print $5\-$4}'\fR
.fi
.RE
.PP
@@ -1714,7 +1819,11 @@ liblzma.
.RS
.PP
.nf
-\f(CWif ! eval "$(xz \-\-robot \-\-version 2> /dev/null)" || [ "$XZ_VERSION" \-lt 50000002 ]; then echo "Your xz is too old." fi unset XZ_VERSION LIBLZMA_VERSION\fP
+\f(CRif ! eval "$(xz \-\-robot \-\-version 2> /dev/null)" ||
+ [ "$XZ_VERSION" \-lt 50000002 ]; then
+ echo "Your xz is too old."
+fi
+unset XZ_VERSION LIBLZMA_VERSION\fR
.fi
.RE
.PP
@@ -1723,7 +1832,12 @@ liblzma.
.RS
.PP
.nf
-\f(CWNEWLIM=$((123 << 20))\ \ # 123 MiB OLDLIM=$(xz \-\-robot \-\-info\-memory | cut \-f3) if [ $OLDLIM \-eq 0 \-o $OLDLIM \-gt $NEWLIM ]; then XZ_OPT="$XZ_OPT \-\-memlimit\-decompress=$NEWLIM" export XZ_OPT fi\fP
+\f(CRNEWLIM=$((123 << 20))\ \ # 123 MiB
+OLDLIM=$(xz \-\-robot \-\-info\-memory | cut \-f3)
+if [ $OLDLIM \-eq 0 \-o $OLDLIM \-gt $NEWLIM ]; then
+ XZ_OPT="$XZ_OPT \-\-memlimit\-decompress=$NEWLIM"
+ export XZ_OPT
+fi\fR
.fi
.RE
.
@@ -1761,7 +1875,7 @@ n n.
.RS
.PP
.nf
-\f(CWxz \-\-lzma2=preset=1,dict=32MiB foo.tar\fP
+\f(CRxz \-\-lzma2=preset=1,dict=32MiB foo.tar\fR
.fi
.RE
.PP
@@ -1781,7 +1895,7 @@ n n.
.RS
.PP
.nf
-\f(CWxz \-vv \-\-lzma2=dict=192MiB big_foo.tar\fP
+\f(CRxz \-vv \-\-lzma2=dict=192MiB big_foo.tar\fR
.fi
.RE
.PP
@@ -1801,7 +1915,7 @@ n n.
.RS
.PP
.nf
-\f(CWxz \-\-check=crc32 \-\-lzma2=preset=6e,dict=64KiB foo\fP
+\f(CRxz \-\-check=crc32 \-\-lzma2=preset=6e,dict=64KiB foo\fR
.fi
.RE
.PP
@@ -1816,7 +1930,7 @@ n n.
.RS
.PP
.nf
-\f(CWxz \-\-lzma2=preset=6e,pb=0,lc=4 source_code.tar\fP
+\f(CRxz \-\-lzma2=preset=6e,pb=0,lc=4 source_code.tar\fR
.fi
.RE
.PP
@@ -1827,7 +1941,7 @@ n n.
.RS
.PP
.nf
-\f(CWxz \-\-x86 \-\-lzma2 libfoo.so\fP
+\f(CRxz \-\-x86 \-\-lzma2 libfoo.so\fR
.fi
.RE
.PP
@@ -1849,7 +1963,7 @@ TIFF. Параметр відстані фільтра Delta встановлю
.RS
.PP
.nf
-\f(CWxz \-\-delta=dist=3 \-\-lzma2=pb=0 foo.tiff\fP
+\f(CRxz \-\-delta=dist=3 \-\-lzma2=pb=0 foo.tiff\fR
.fi
.RE
.PP
diff --git a/po4a/man/uk/xzdec.1 b/po4a/man/uk/xzdec.1
index 03a7e8c..7375d3a 100644
--- a/po4a/man/uk/xzdec.1
+++ b/po4a/man/uk/xzdec.1
@@ -1,15 +1,16 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Author: Lasse Collin
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
+.\" Ukrainian translation for xz-man.
+.\" Yuri Chornoivan <yurchor@ukr.net>, 2019, 2022, 2023, 2024.
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZDEC 1 "19 квітня 2017 року" Tukaani "XZ Utils"
+.TH XZDEC 1 2024\-04\-08 Tukaani "XZ Utils"
.SH НАЗВА
xzdec, lzmadec — невеличкі розпакувальники .xz і .lzma
.SH "КОРОТКИЙ ОПИС"
diff --git a/po4a/man/uk/xzdiff.1 b/po4a/man/uk/xzdiff.1
index 1f4f367..4b41aaf 100644
--- a/po4a/man/uk/xzdiff.1
+++ b/po4a/man/uk/xzdiff.1
@@ -1,44 +1,55 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
-.\" Original zdiff.1 for gzip: Jean-loup Gailly
+.\" Authors: Lasse Collin
+.\" Jia Tan
.\"
-.\" Modifications for XZ Utils: Lasse Collin
-.\" Andrew Dudman
+.\" Ukrainian translation for xz-man.
+.\" Yuri Chornoivan <yurchor@ukr.net>, 2019, 2022, 2023, 2024.
.\"
-.\" License: GNU GPLv2+
+.\" (Note that this file is not based on gzip's zdiff.1.)
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZDIFF 1 "4 червня 2021 року" Tukaani "XZ Utils"
+.TH XZDIFF 1 "13 лютого 2024 року" Tukaani "XZ Utils"
.SH НАЗВА
xzcmp, xzdiff, lzcmp, lzdiff — порівняння стиснених файлів
+.
.SH "КОРОТКИЙ ОПИС"
-\fBxzcmp\fP [\fIпараметри_cmp\fP] \fIфайл1\fP [\fIфайл2\fP]
+\fBxzcmp\fP [\fIпараметр...\fP] \fIфайл1\fP [\fIфайл2\fP]
.br
-\fBxzdiff\fP [\fIпараметри_diff\fP] \fIфайл1\fP [\fIфайл2\fP]
+\fBxzdiff\fP \&...
.br
-\fBlzcmp\fP [\fIпараметри_cmp\fP] \fIфайл1\fP [\fIфайл2\fP]
+\fBlzcmp\fP \&...
.br
-\fBlzdiff\fP [\fIпараметри_diff\fP] \fIфайл1\fP [\fIфайл2\fP]
+\fBlzdiff\fP \&...
+.
.SH ОПИС
-\fBxzcmp\fP і \fBxzdiff\fP викликають \fBcmp\fP(1) або \fBdiff\fP(1) для файлів, які
-стиснено за допомогою \fBxz\fP(1), \fBlzma\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1),
-\fBlzop\fP(1) або \fBzstd\fP(1). Усі вказані параметри передаються безпосередньо
-\fBcmp\fP(1) або \fBdiff\fP(1). Якщо вказано лише один файл, порівнюваними файлами
-будуть \fIфайл1\fP (який повинен мати суфікс підтримуваного файла стискання) і
-\fIфайл1\fP, з назви якого вилучено суфікс формату стискання. Якщо вказано два
-файли, їх буде, якщо потрібно, розпаковано і передано \fBcmp\fP(1) або
-\fBdiff\fP(1). Стан виходу \fBcmp\fP(1) або \fBdiff\fP(1) буде збережено, якщо не
-станеться помилок розпаковування. Якщо станеться помилка розпаковування,
-станом виходу буде 2.
+\fBxzcmp\fP і \fBxzdiff\fP порівнюють нестиснені дані двох файлів. Нестиснені дані
+та параметри буде передано \fBcmp\fP(1) або \fBdiff\fP(1), якщо не вказано
+\fB\-\-help\fP або \fB\-\-version\fP.
.PP
-Працездатність назв \fBlzcmp\fP і \fBlzdiff\fP забезпечено для зворотної
+Якщо вказано одразу \fIфайл1\fP і \fIфайл2\fP, це можуть бути нестиснені файли або
+файли у форматах, які може бути розпаковано за допомогою \fBxz\fP(1),
+\fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1), \fBzstd\fP(1) або \fBlz4\fP(1). Потрібні
+команди розпаковування визначаються з суфіксів назв файлів \fIфайл1\fP і
+\fIфайл2\fP. Файли із невідомими програмі суфіксами вважатимуться або
+нестисненими або такими, що мають формат, дані у якому може розпаковувати
+\fBxz\fP(1).
+.PP
+Якщо вказано лише одну назву файла, \fIфайл1\fP повинен мати суфікс
+підтримуваного формату стискання, а назвою \fIфайл2\fP має бути назва \fIфайл1\fP
+з вилученим суфіксом формату стискання.
+.PP
+Працездатність команд \fBlzcmp\fP і \fBlzdiff\fP забезпечено для зворотної
сумісності із LZMA Utils.
+.
+.SH "СТАН ВИХОДУ"
+Якщо станеться помилка розпаковування, станом виходу буде \fB2\fP. Інакше,
+станом виходу буде \fBcmp\fP(1) або буде використано \fBdiff\fP(1).
+.
.SH "ДИВ. ТАКОЖ"
\fBcmp\fP(1), \fBdiff\fP(1), \fBxz\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1),
-\fBzstd\fP(1), \fBzdiff\fP(1)
-.SH ВАДИ
-Повідомлення від програм \fBcmp\fP(1) або \fBdiff\fP(1) посилатимуться на назви
-тимчасових файлів, а не вказані назви.
+\fBzstd\fP(1), \fBlz4\fP(1)
diff --git a/po4a/man/uk/xzgrep.1 b/po4a/man/uk/xzgrep.1
index 5afc7ab..a763728 100644
--- a/po4a/man/uk/xzgrep.1
+++ b/po4a/man/uk/xzgrep.1
@@ -1,21 +1,24 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
-.\" Original zgrep.1 for gzip: Jean-loup Gailly
-.\" Charles Levert <charles@comm.polymtl.ca>
+.\" Authors: Lasse Collin
+.\" Jia Tan
.\"
-.\" Modifications for XZ Utils: Lasse Collin
+.\" Ukrainian translation for xz-man.
+.\" Yuri Chornoivan <yurchor@ukr.net>, 2019, 2022, 2023, 2024.
.\"
-.\" License: GNU GPLv2+
+.\" (Note that this file is not based on gzip's zgrep.1.)
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZGREP 1 "19 липня 2022 року" Tukaani "XZ Utils"
+.TH XZGREP 1 "13 лютого 2024 року" Tukaani "XZ Utils"
.SH НАЗВА
-xzgrep — пошук у стиснених файлах формального виразу
+xzgrep — пошук взірців у ймовірно стиснених файлах
+.
.SH "КОРОТКИЙ ОПИС"
-\fBxzgrep\fP [\fIпараметри_grep\fP] [\fB\-e\fP] \fIвзірець\fP [\fIфайл...\fP]
+\fBxzgrep\fP [\fIпараметр...\fP] [\fIсписок_взірців\fP] [\fIфайл...\fP]
.br
\fBxzegrep\fP \&...
.br
@@ -26,21 +29,47 @@ xzgrep — пошук у стиснених файлах формального
\fBlzegrep\fP \&...
.br
\fBlzfgrep\fP \&...
+.
.SH ОПИС
-\fBxzgrep\fP викликає \fBgrep\fP(1) для \fIфайлів\fP, які можуть бути розпакованими
-або запакованими за допомогою \fBxz\fP(1), \fBlzma\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1),
-\fBlzop\fP(1) або \fBzstd\fP(1). Усі вказані параметри передаються безпосередньо
-\fBgrep\fP(1).
+\fBxzgrep\fP викликає \fBgrep\fP(1) для розпакованих даних файлів. Формати
+\fIфайлів\fP визначатимуться з суфіксів назв файлів. Будь\-який \fIфайл\fP із
+суфіксом назви, підтримку якого передбачено у \fBxz\fP(1), \fBgzip\fP(1),
+\fBbzip2\fP(1), \fBlzop\fP(1), \fBzstd\fP(1) або \fBlz4\fP(1), буде розпаковано; усі
+інші файли вважатимуться нестисненими.
.PP
-Якщо не вказано жодного \fIфайла\fP, буде розпаковано дані зі стандартного
-джерела вхідних даних і передано ці дані \fBgrep\fP(1). Якщо дані буде
-прочитано зі стандартного джерела вхідних даних, підтримку стиснених файлів
-\fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1) та \fBzstd\fP(1) буде вимкнено.
+Якщо не вказано аргументу \fIфайли\fP або замість \fIфайл\fP вказано \fB\-\fP, дані
+буде прочитано зі стандартного джерела вхідних даних. При читанні зі
+стандартного джерела буде розпаковано лише файли, підтримку яких передбачено
+у \fBxz\fP(1). Інші файли вважатимуться такими, що вже перебувають у
+нестисненому форматі.
.PP
-Якщо \fBxzgrep\fP викликано як \fBxzegrep\fP або \fBxzfgrep\fP, буде використано
-\fBgrep \-E\fP або \fBgrep \-F\fP замість \fBgrep\fP(1). Те саме стосується програм із
-назвами \fBlzgrep\fP, \fBlzegrep\fP та \fBlzfgrep\fP, які створено для зворотної
-сумісності з LZMA Utils.
+Передбачено підтримку більшості \fIпараметрів\fP \fBgrep\fP(1). Втім, підтримки
+цих параметрів не передбачено:
+.IP "" 4
+\fB\-r\fP, \fB\-\-recursive\fP
+.IP "" 4
+\fB\-R\fP, \fB\-\-dereference\-recursive\fP
+.IP "" 4
+\fB\-d\fP, \fB\-\-directories=\fP\fIдія\fP
+.IP "" 4
+\fB\-Z\fP, \fB\-\-null\fP
+.IP "" 4
+\fB\-z\fP, \fB\-\-null\-data\fP
+.IP "" 4
+\fB\-\-include=\fP\fIglob\fP
+.IP "" 4
+\fB\-\-exclude=\fP\fIglob\fP
+.IP "" 4
+\fB\-\-exclude\-from=\fP\fIфайл\fP
+.IP "" 4
+\fB\-\-exclude\-dir=\fP\fIglob\fP
+.PP
+\fBxzegrep\fP є альтернативним записом \fBxzgrep \-E\fP. \fBxzfgrep\fP є
+альтернативним записом \fBxzgrep \-F\fP.
+.PP
+Працездатність команд \fBlzgrep\fP, \fBlzegrep\fP і \fBlzfgrep\fP забезпечено для
+зворотної сумісності із LZMA Utils.
+.
.SH "СТАН ВИХОДУ"
.TP
0
@@ -54,11 +83,13 @@ xzgrep — пошук у стиснених файлах формального
>1
Сталася одна або декілька помилок. Невідомо, чи було знайдено відповідники
критерію пошуку.
+.
.SH СЕРЕДОВИЩЕ
.TP
\fBGREP\fP
-Якщо встановлено значення змінної середовища \fBGREP\fP, буде використано це
-значення \fBxzgrep\fP, замість \fBgrep\fP(1), \fBgrep \-E\fP або \fBgrep \-F\fP.
+Якщо для змінної середовища \fBGREP\fP встановлено непорожнє значення, його
+буде використано замість \fBgrep\fP(1), \fBgrep \-E\fP або \fBgrep \-F\fP.
+.
.SH "ДИВ. ТАКОЖ"
\fBgrep\fP(1), \fBxz\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1), \fBzstd\fP(1),
-\fBzgrep\fP(1)
+\fBlz4\fP(1), \fBzgrep\fP(1)
diff --git a/po4a/man/uk/xzless.1 b/po4a/man/uk/xzless.1
index 3054a3e..9c35565 100644
--- a/po4a/man/uk/xzless.1
+++ b/po4a/man/uk/xzless.1
@@ -1,9 +1,10 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Authors: Andrew Dudman
.\" Lasse Collin
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
+.\" Ukrainian translation for xz-man.
+.\" Yuri Chornoivan <yurchor@ukr.net>, 2019, 2022, 2023, 2024.
.\"
.\" (Note that this file is not based on gzip's zless.1.)
.\"
@@ -12,7 +13,7 @@
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZLESS 1 "27 вересня 2010 року" Tukaani "XZ Utils"
+.TH XZLESS 1 "12 лютого 2024 року" Tukaani "XZ Utils"
.SH НАЗВА
xzless, lzless — перегляд стиснених xz або lzma (текстових) файлів
.SH "КОРОТКИЙ ОПИС"
@@ -21,9 +22,9 @@ xzless, lzless — перегляд стиснених xz або lzma (текс
\fBlzless\fP [\fIфайл\fP...]
.SH ОПИС
\fBxzless\fP є фільтром, який показує текст зі стиснених файлів у
-терміналі. Працює для файлів, які стиснуто за допомогою \fBxz\fP(1) або
-\fBlzma\fP(1). Якщо не вказано жодного \fIфайла\fP, \fBxzless\fP читатиме дані зі
-стандартного джерела вхідних даних.
+терміналі. Файли, підтримку обробки яких передбачено у \fBxz\fP(1), буде
+розпаковано; інші файли вважатимуться нестисненими. Якщо не вказано жодного
+\fIфайла\fP, \fBxzless\fP читатиме дані зі стандартного джерела вхідних даних.
.PP
Для показу виведених даних \fBxzless\fP використовує \fBless\fP(1). На відміну від
\fBxzmore\fP, вибір програми для поділу на сторінки не можна змінити за
diff --git a/po4a/man/uk/xzmore.1 b/po4a/man/uk/xzmore.1
index f7abf17..ade3d1b 100644
--- a/po4a/man/uk/xzmore.1
+++ b/po4a/man/uk/xzmore.1
@@ -1,40 +1,48 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
-.\" Original zdiff.1 for gzip: Jean-loup Gailly
-.\" Modifications for XZ Utils: Lasse Collin
+.\" Authors: Andrew Dudman
+.\" Lasse Collin
.\"
-.\" License: GNU GPLv2+
+.\" Ukrainian translation for xz-man.
+.\" Yuri Chornoivan <yurchor@ukr.net>, 2019, 2022, 2023, 2024.
+.\"
+.\" (Note that this file is based on xzless.1 instead of gzip's zmore.1.)
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH XZMORE 1 "30 червня 2013 року" Tukaani "XZ Utils"
+.TH XZMORE 1 "12 лютого 2024 року" Tukaani "XZ Utils"
.SH НАЗВА
xzmore, lzmore — перегляд стиснених xz або lzma (текстових) файлів
+.
.SH "КОРОТКИЙ ОПИС"
-\fBxzmore\fP [\fIфайл...\fP]
+\fBxzmore\fP [\fIфайл\fP...]
.br
-\fBlzmore\fP [\fIфайл...\fP]
+\fBlzmore\fP [\fIфайл\fP...]
+.
.SH ОПИС
-\fBxzmore\fP є фільтром, за допомогою якого можна вивчати стиснені \fBxz\fP(1) або
-\fBlzma\fP(1) текстові файли поекранно на терміналах із м'яким копіюванням.
+\fBxzmore\fP показує текст зі стиснених файлів у терміналі за допомогою
+\fBmore\fP(1). Файли, підтримку яких передбачено у \fBxz\fP(1), буде розпаковано;
+інші файли вважатимуться вже наданими у розпакованій формі. Якщо не вказано
+аргументу \fIфайли\fP, \fBxzmore\fP читатиме дані зі стандартного джерела
+даних. Див. підручник з \fBmore\fP(1), щоб дізнатися більше про клавіатурні
+команди.
.PP
-Щоб скористатися засобом поділу на сторінки, відмінним від типового \fBmore\fP,
-встановіть для змінної середовища \fBPAGER\fP значення назви бажаної
-програми. Команду \fBlzmore\fP реалізовано для забезпечення зворотної
-сумісності з LZMA Utils.
-.TP
-\fBe\fP або \fBq\fP
-Якщо виведено запит \-\-More\-\-(Наступний файл: \fIфайл\fP), ця команда наказує
-\fBxzmore\fP завершити роботу.
-.TP
-\fBs\fP
-Якщо виведено запит \-\-More\-\-(Наступний файл: \fIфайл\fP), ця команда наказує
-\fBxzmore\fP перейти до наступного файла і продовжити показ даних.
+Зауважте, що гортання у зворотному напрямку може бути неможливим через
+реалізацію \fBmore\fP(1). Причиною є те, що \fBxzmore\fP використовує канал для
+передавання розпакованих даних \fBmore\fP(1). \fBxzless\fP(1) використовує
+\fBless\fP(1), можливості якої є ширшими.
.PP
-Список клавіатурних команд, якими можна скористатися під час перегляду
-вмісту файла, наведено на сторінці засобу поділу файла на сторінки, яким ви
-користуєтеся, зазвичай, на сторінці \fBmore\fP(1).
+Команду \fBlzmore\fP реалізовано для забезпечення зворотної сумісності з LZMA
+Utils.
+.
+.SH СЕРЕДОВИЩЕ
+.TP
+\fBPAGER\fP
+Якщо встановлено значення \fBPAGER\fP, значення буде використано для засобу
+поділу на сторінки, замість \fBmore\fP(1).
+.
.SH "ДИВ. ТАКОЖ"
\fBmore\fP(1), \fBxz\fP(1), \fBxzless\fP(1), \fBzmore\fP(1)
diff --git a/po4a/po4a.conf b/po4a/po4a.conf
index 5342530..b3eea57 100644
--- a/po4a/po4a.conf
+++ b/po4a/po4a.conf
@@ -1,3 +1,5 @@
+# SPDX-License-Identifier: 0BSD
+
# 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.
@@ -5,10 +7,10 @@
[po4a_langs] de fr ko pt_BR ro uk
[po4a_paths] xz-man.pot $lang:$lang.po
-[type: man] ../src/xz/xz.1 $lang:man/$lang/xz.1
-[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
+[type: man] ../src/xz/xz.1 $lang:man/$lang/xz.1 add_$lang:?$lang.po.authors
+[type: man] ../src/xzdec/xzdec.1 $lang:man/$lang/xzdec.1 add_$lang:?$lang.po.authors
+[type: man] ../src/lzmainfo/lzmainfo.1 $lang:man/$lang/lzmainfo.1 add_$lang:?$lang.po.authors
+[type: man] ../src/scripts/xzdiff.1 $lang:man/$lang/xzdiff.1 add_$lang:?$lang.po.authors
+[type: man] ../src/scripts/xzgrep.1 $lang:man/$lang/xzgrep.1 add_$lang:?$lang.po.authors
+[type: man] ../src/scripts/xzless.1 $lang:man/$lang/xzless.1 add_$lang:?$lang.po.authors
+[type: man] ../src/scripts/xzmore.1 $lang:man/$lang/xzmore.1 add_$lang:?$lang.po.authors
diff --git a/po4a/pt_BR.po b/po4a/pt_BR.po
index ad943be..26fba56 100644
--- a/po4a/pt_BR.po
+++ b/po4a/pt_BR.po
@@ -6,11 +6,10 @@
msgid ""
msgstr ""
"Project-Id-Version: xz-man 5.4.0-pre2\n"
-"POT-Creation-Date: 2023-11-01 20:27+0800\n"
+"POT-Creation-Date: 2024-05-29 17:45+0300\n"
"PO-Revision-Date: 2023-01-26 13:29-0300\n"
"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
-"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge."
-"net>\n"
+"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge.net>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -20,3026 +19,1907 @@ msgstr ""
"X-Generator: Gtranslator 42.0\n"
#. type: TH
-#: ../src/xz/xz.1:9
+#: ../src/xz/xz.1
#, no-wrap
msgid "XZ"
msgstr "XZ"
#. type: TH
-#: ../src/xz/xz.1:9
-#, fuzzy, no-wrap
-#| msgid "2022-07-19"
-msgid "2023-07-17"
-msgstr "2022-07-19"
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
+#, no-wrap
+msgid "2024-04-08"
+msgstr ""
#. type: TH
-#: ../src/xz/xz.1:9 ../src/xzdec/xzdec.1:7 ../src/lzmainfo/lzmainfo.1:7
-#: ../src/scripts/xzdiff.1:9 ../src/scripts/xzgrep.1:9
-#: ../src/scripts/xzless.1:10 ../src/scripts/xzmore.1:7
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "Tukaani"
msgstr "Tukaani"
#. type: TH
-#: ../src/xz/xz.1:9 ../src/xzdec/xzdec.1:7 ../src/lzmainfo/lzmainfo.1:7
-#: ../src/scripts/xzdiff.1:9 ../src/scripts/xzgrep.1:9
-#: ../src/scripts/xzless.1:10 ../src/scripts/xzmore.1:7
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "XZ Utils"
msgstr "XZ Utils"
#. type: SH
-#: ../src/xz/xz.1:11 ../src/xzdec/xzdec.1:8 ../src/lzmainfo/lzmainfo.1:8
-#: ../src/scripts/xzdiff.1:10 ../src/scripts/xzgrep.1:10
-#: ../src/scripts/xzless.1:11 ../src/scripts/xzmore.1:8
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "NAME"
msgstr "NOME"
#. type: Plain text
-#: ../src/xz/xz.1:13
-msgid ""
-"xz, unxz, xzcat, lzma, unlzma, lzcat - Compress or decompress .xz and .lzma "
-"files"
-msgstr ""
-"xz, unxz, xzcat, lzma, unlzma, lzcat - Compacta ou descompacta arquivos .xz "
-"e .lzma"
+#: ../src/xz/xz.1
+msgid "xz, unxz, xzcat, lzma, unlzma, lzcat - Compress or decompress .xz and .lzma files"
+msgstr "xz, unxz, xzcat, lzma, unlzma, lzcat - Compacta ou descompacta arquivos .xz e .lzma"
#. type: SH
-#: ../src/xz/xz.1:14 ../src/xzdec/xzdec.1:10 ../src/lzmainfo/lzmainfo.1:10
-#: ../src/scripts/xzdiff.1:12 ../src/scripts/xzgrep.1:12
-#: ../src/scripts/xzless.1:13 ../src/scripts/xzmore.1:10
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "SYNOPSIS"
msgstr "SINOPSE"
#. type: Plain text
-#: ../src/xz/xz.1:18
+#: ../src/xz/xz.1
msgid "B<xz> [I<option...>] [I<file...>]"
msgstr "B<xz> [I<opção...>] [I<arquivo...>]"
#. type: SH
-#: ../src/xz/xz.1:19
+#: ../src/xz/xz.1
#, no-wrap
msgid "COMMAND ALIASES"
msgstr "COMANDOS APELIDOS"
#. type: Plain text
-#: ../src/xz/xz.1:23
+#: ../src/xz/xz.1
msgid "B<unxz> is equivalent to B<xz --decompress>."
msgstr "B<unxz> é equivalente a B<xz --decompress>."
#. type: Plain text
-#: ../src/xz/xz.1:27
+#: ../src/xz/xz.1
msgid "B<xzcat> is equivalent to B<xz --decompress --stdout>."
msgstr "B<xzcat> é equivalente a B<xz --decompress --stdout>."
#. type: Plain text
-#: ../src/xz/xz.1:31
+#: ../src/xz/xz.1
msgid "B<lzma> is equivalent to B<xz --format=lzma>."
msgstr "B<lzma> é equivalente a B<xz --format=lzma>."
#. type: Plain text
-#: ../src/xz/xz.1:35
+#: ../src/xz/xz.1
msgid "B<unlzma> is equivalent to B<xz --format=lzma --decompress>."
msgstr "B<unlzma> é equivalente a B<xz --format=lzma --decompress>."
#. type: Plain text
-#: ../src/xz/xz.1:39
+#: ../src/xz/xz.1
msgid "B<lzcat> is equivalent to B<xz --format=lzma --decompress --stdout>."
msgstr "B<lzcat> é equivalente a B<xz --format=lzma --decompress --stdout>."
#. type: Plain text
-#: ../src/xz/xz.1:51
-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 ""
-"Ao escrever scripts que precisam descompactar arquivos, é recomendável "
-"sempre usar o nome B<xz> com os argumentos apropriados (B<xz -d> ou B<xz -"
-"dc>) em vez dos nomes B<unxz> e B<xzcat>."
+#: ../src/xz/xz.1
+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 "Ao escrever scripts que precisam descompactar arquivos, é recomendável sempre usar o nome B<xz> com os argumentos apropriados (B<xz -d> ou B<xz -dc>) em vez dos nomes B<unxz> e B<xzcat>."
#. type: SH
-#: ../src/xz/xz.1:52 ../src/xzdec/xzdec.1:18 ../src/lzmainfo/lzmainfo.1:15
-#: ../src/scripts/xzdiff.1:24 ../src/scripts/xzgrep.1:33
-#: ../src/scripts/xzless.1:19 ../src/scripts/xzmore.1:16
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "DESCRIPTION"
msgstr "DESCRIÇÃO"
#. type: Plain text
-#: ../src/xz/xz.1:71
-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. In "
-"addition, decompression of the B<.lz> format used by B<lzip> is supported."
-msgstr ""
-"B<xz> é uma ferramenta de compactação de dados de uso geral com sintaxe de "
-"linha de comando semelhante ao B<gzip>(1) e ao B<bzip2>(1). O formato de "
-"arquivo nativo é o formato B<.xz>, mas o formato legado B<.lzma> usado por "
-"LZMA Utils e fluxos compactados brutos sem cabeçalhos de formato de "
-"contêiner também são suportados. Além disso, a descompactação do formato B<."
-"lz> usado por B<lzip> é suportada."
+#: ../src/xz/xz.1
+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. In addition, decompression of the B<.lz> format used by B<lzip> is supported."
+msgstr "B<xz> é uma ferramenta de compactação de dados de uso geral com sintaxe de linha de comando semelhante ao B<gzip>(1) e ao B<bzip2>(1). O formato de arquivo nativo é o formato B<.xz>, mas o formato legado B<.lzma> usado por LZMA Utils e fluxos compactados brutos sem cabeçalhos de formato de contêiner também são suportados. Além disso, a descompactação do formato B<.lz> usado por B<lzip> é suportada."
#. type: Plain text
-#: ../src/xz/xz.1:93
-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> compacta ou descompacta cada I<arquivo> de acordo com o modo de "
-"operação selecionado. Se nenhum I<arquivo> for fornecido ou I<arquivo> for "
-"B<->, B<xz> lê da entrada padrão e grava os dados processados na saída "
-"padrão. B<xz> recusará (exibirá um erro e ignorará o I<arquivo>) para gravar "
-"dados compactados na saída padrão se for um terminal. Da mesma forma, B<xz> "
-"se recusará a ler dados compactados da entrada padrão se for um terminal."
+#: ../src/xz/xz.1
+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> compacta ou descompacta cada I<arquivo> de acordo com o modo de operação selecionado. Se nenhum I<arquivo> for fornecido ou I<arquivo> for B<->, B<xz> lê da entrada padrão e grava os dados processados na saída padrão. B<xz> recusará (exibirá um erro e ignorará o I<arquivo>) para gravar dados compactados na saída padrão se for um terminal. Da mesma forma, B<xz> se recusará a ler dados compactados da entrada padrão se for um terminal."
#. type: Plain text
-#: ../src/xz/xz.1:103
-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 ""
-"A menos que B<--stdout> seja especificado, I<arquivos> diferentes de B<-> "
-"são gravados em um novo arquivo cujo nome é derivado do nome I<arquivo> de "
-"origem:"
+#: ../src/xz/xz.1
+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 "A menos que B<--stdout> seja especificado, I<arquivos> diferentes de B<-> são gravados em um novo arquivo cujo nome é derivado do nome I<arquivo> de origem:"
#. type: IP
-#: ../src/xz/xz.1:103 ../src/xz/xz.1:109 ../src/xz/xz.1:134 ../src/xz/xz.1:139
-#: ../src/xz/xz.1:142 ../src/xz/xz.1:145 ../src/xz/xz.1:161 ../src/xz/xz.1:422
-#: ../src/xz/xz.1:425 ../src/xz/xz.1:432 ../src/xz/xz.1:677 ../src/xz/xz.1:679
-#: ../src/xz/xz.1:778 ../src/xz/xz.1:789 ../src/xz/xz.1:798 ../src/xz/xz.1:806
-#: ../src/xz/xz.1:1034 ../src/xz/xz.1:1043 ../src/xz/xz.1:1055
-#: ../src/xz/xz.1:1729 ../src/xz/xz.1:1735 ../src/xz/xz.1:1853
-#: ../src/xz/xz.1:1857 ../src/xz/xz.1:1860 ../src/xz/xz.1:1863
-#: ../src/xz/xz.1:1867 ../src/xz/xz.1:1874 ../src/xz/xz.1:1876
+#: ../src/xz/xz.1
#, no-wrap
msgid "\\(bu"
msgstr "\\(bu"
#. type: Plain text
-#: ../src/xz/xz.1:109
-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 ""
-"Ao compactar, o sufixo do formato de arquivo de destino (B<.xz> ou B<.lzma>) "
-"é anexado ao nome do arquivo de origem para obter o nome do arquivo de "
-"destino."
+#: ../src/xz/xz.1
+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 "Ao compactar, o sufixo do formato de arquivo de destino (B<.xz> ou B<.lzma>) é anexado ao nome do arquivo de origem para obter o nome do arquivo de destino."
#. type: Plain text
-#: ../src/xz/xz.1:124
-msgid ""
-"When decompressing, the B<.xz>, B<.lzma>, or B<.lz> suffix is removed from "
-"the filename to get the target filename. B<xz> also recognizes the suffixes "
-"B<.txz> and B<.tlz>, and replaces them with the B<.tar> suffix."
-msgstr ""
-"Ao descompactar, o sufixo B<.xz>, B<.lzma> ou B<.lz> é removido do nome do "
-"arquivo para obter o nome do arquivo de destino. B<xz> também reconhece os "
-"sufixos B<.txz> e B<.tlz> e os substitui pelo sufixo B<.tar>."
+#: ../src/xz/xz.1
+msgid "When decompressing, the B<.xz>, B<.lzma>, or B<.lz> suffix is removed from the filename to get the target filename. B<xz> also recognizes the suffixes B<.txz> and B<.tlz>, and replaces them with the B<.tar> suffix."
+msgstr "Ao descompactar, o sufixo B<.xz>, B<.lzma> ou B<.lz> é removido do nome do arquivo para obter o nome do arquivo de destino. B<xz> também reconhece os sufixos B<.txz> e B<.tlz> e os substitui pelo sufixo B<.tar>."
#. type: Plain text
-#: ../src/xz/xz.1:128
-msgid ""
-"If the target file already exists, an error is displayed and the I<file> is "
-"skipped."
-msgstr ""
-"Se o arquivo de destino já existir, um erro será exibido e I<arquivo> será "
-"ignorado."
+#: ../src/xz/xz.1
+msgid "If the target file already exists, an error is displayed and the I<file> is skipped."
+msgstr "Se o arquivo de destino já existir, um erro será exibido e I<arquivo> será ignorado."
#. type: Plain text
-#: ../src/xz/xz.1:134
-msgid ""
-"Unless writing to standard output, B<xz> will display a warning and skip the "
-"I<file> if any of the following applies:"
-msgstr ""
-"A menos que grave na saída padrão, B<xz> exibirá um aviso e pulará o "
-"I<arquivo> se qualquer um dos seguintes se aplicar:"
+#: ../src/xz/xz.1
+msgid "Unless writing to standard output, B<xz> will display a warning and skip the I<file> if any of the following applies:"
+msgstr "A menos que grave na saída padrão, B<xz> exibirá um aviso e pulará o I<arquivo> se qualquer um dos seguintes se aplicar:"
#. type: Plain text
-#: ../src/xz/xz.1:139
-msgid ""
-"I<File> is not a regular file. Symbolic links are not followed, and thus "
-"they are not considered to be regular files."
-msgstr ""
-"I<Arquivo> não é um arquivo normal. Links simbólicos não são seguidos e, "
-"portanto, não são considerados arquivos comuns."
+#: ../src/xz/xz.1
+msgid "I<File> is not a regular file. Symbolic links are not followed, and thus they are not considered to be regular files."
+msgstr "I<Arquivo> não é um arquivo normal. Links simbólicos não são seguidos e, portanto, não são considerados arquivos comuns."
#. type: Plain text
-#: ../src/xz/xz.1:142
+#: ../src/xz/xz.1
msgid "I<File> has more than one hard link."
msgstr "I<Arquivo> tem mais de um link físico."
#. type: Plain text
-#: ../src/xz/xz.1:145
+#: ../src/xz/xz.1
msgid "I<File> has setuid, setgid, or sticky bit set."
msgstr "I<File> tem setuid, setgid ou sticky bit definido."
#. type: Plain text
-#: ../src/xz/xz.1:161
-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 ""
-"O modo de operação está definido para compactar e o I<arquivo> já possui um "
-"sufixo do formato de arquivo de destino (B<.xz> ou B<.txz> ao compactar para "
-"o formato B<.xz> e B<.lzma > ou B<.tlz> ao compactar para o formato B<."
-"lzma>)."
+#: ../src/xz/xz.1
+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 "O modo de operação está definido para compactar e o I<arquivo> já possui um sufixo do formato de arquivo de destino (B<.xz> ou B<.txz> ao compactar para o formato B<.xz> e B<.lzma > ou B<.tlz> ao compactar para o formato B<.lzma>)."
#. type: Plain text
-#: ../src/xz/xz.1:171
-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>, B<."
-"tlz>, or B<.lz>)."
-msgstr ""
-"O modo de operação está definido para descompactar e o I<arquivo> não possui "
-"um sufixo de nenhum dos formatos de arquivo suportados (B<.xz>, B<.txz>, B<."
-"lzma>, B<.tlz> , ou B<.lz>)."
+#: ../src/xz/xz.1
+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>, B<.tlz>, or B<.lz>)."
+msgstr "O modo de operação está definido para descompactar e o I<arquivo> não possui um sufixo de nenhum dos formatos de arquivo suportados (B<.xz>, B<.txz>, B<.lzma>, B<.tlz> , ou B<.lz>)."
#. type: Plain text
-#: ../src/xz/xz.1:186
-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 ""
-"Depois de compactar ou descompactar com êxito o I<arquivo>, o B<xz> copia o "
-"dono, grupo, permissões, horário de acesso e horário de modificação do "
-"I<arquivo> de origem para o arquivo de destino. Se a cópia do grupo falhar, "
-"as permissões serão modificadas para que o arquivo de destino não se torne "
-"acessível a usuários que não têm permissão para acessar o I<arquivo> de "
-"origem. B<xz> ainda não oferece suporte à cópia de outros metadados, como "
-"listas de controle de acesso ou atributos estendidos."
+#: ../src/xz/xz.1
+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 "Depois de compactar ou descompactar com êxito o I<arquivo>, o B<xz> copia o dono, grupo, permissões, horário de acesso e horário de modificação do I<arquivo> de origem para o arquivo de destino. Se a cópia do grupo falhar, as permissões serão modificadas para que o arquivo de destino não se torne acessível a usuários que não têm permissão para acessar o I<arquivo> de origem. B<xz> ainda não oferece suporte à cópia de outros metadados, como listas de controle de acesso ou atributos estendidos."
#. type: Plain text
-#: ../src/xz/xz.1:196
-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 or if an error occurs."
-msgstr ""
-"Depois que o arquivo de destino for fechado com êxito, o I<arquivo> de "
-"origem será removido, a menos que B<--keep> tenha sido especificado. O "
-"I<arquivo> de origem nunca é removido se a saída for gravada na saída padrão "
-"ou se ocorrer um erro."
+#: ../src/xz/xz.1
+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 or if an error occurs."
+msgstr "Depois que o arquivo de destino for fechado com êxito, o I<arquivo> de origem será removido, a menos que B<--keep> tenha sido especificado. O I<arquivo> de origem nunca é removido se a saída for gravada na saída padrão ou se ocorrer um erro."
#. type: Plain text
-#: ../src/xz/xz.1:208
-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 ""
-"O envio de B<SIGINFO> ou B<SIGUSR1> para o processo do B<xz> faz com que ele "
-"imprima informações de andamento para erro padrão. Isso tem uso limitado, "
-"pois quando o erro padrão é um terminal, usar B<--verbose> exibirá um "
-"indicador de progresso de atualização automática."
+#: ../src/xz/xz.1
+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 "O envio de B<SIGINFO> ou B<SIGUSR1> para o processo do B<xz> faz com que ele imprima informações de andamento para erro padrão. Isso tem uso limitado, pois quando o erro padrão é um terminal, usar B<--verbose> exibirá um indicador de progresso de atualização automática."
#. type: SS
-#: ../src/xz/xz.1:209
+#: ../src/xz/xz.1
#, no-wrap
msgid "Memory usage"
msgstr "Uso de memória"
#. type: Plain text
-#: ../src/xz/xz.1:225
-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 ""
-"O uso de memória de B<xz> varia de algumas centenas de kilobytes a vários "
-"gigabytes, dependendo das configurações de compactação. As configurações "
-"usadas ao compactar um arquivo determinam os requisitos de memória do "
-"descompactador. Normalmente, o descompactador precisa de 5\\ % a 20\\ % da "
-"quantidade de memória que o compactador precisou ao criar o arquivo. Por "
-"exemplo, descompactar um arquivo criado com B<xz -9> atualmente requer 65\\ "
-"MiB de memória. Ainda assim, é possível ter arquivos B<.xz> que requerem "
-"vários gigabytes de memória para descompactar."
+#: ../src/xz/xz.1
+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 "O uso de memória de B<xz> varia de algumas centenas de kilobytes a vários gigabytes, dependendo das configurações de compactação. As configurações usadas ao compactar um arquivo determinam os requisitos de memória do descompactador. Normalmente, o descompactador precisa de 5\\ % a 20\\ % da quantidade de memória que o compactador precisou ao criar o arquivo. Por exemplo, descompactar um arquivo criado com B<xz -9> atualmente requer 65\\ MiB de memória. Ainda assim, é possível ter arquivos B<.xz> que requerem vários gigabytes de memória para descompactar."
#. type: Plain text
-#: ../src/xz/xz.1:237
-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 (for example, using "
-"B<ulimit>(1) to limit virtual memory tends to cripple B<mmap>(2))."
-msgstr ""
-"Especialmente os usuários de sistemas mais antigos podem achar irritante a "
-"possibilidade de uso de memória muito grande. Para evitar surpresas "
-"desconfortáveis, o B<xz> possui um limitador de uso de memória embutido, que "
-"está desabilitado por padrão. Embora alguns sistemas operacionais forneçam "
-"maneiras de limitar o uso de memória dos processos, confiar nele não foi "
-"considerado flexível o suficiente (por exemplo, usar B<ulimit>(1) para "
-"limitar a memória virtual tende a prejudicar B<mmap>(2))."
+#: ../src/xz/xz.1
+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 (for example, using B<ulimit>(1) to limit virtual memory tends to cripple B<mmap>(2))."
+msgstr "Especialmente os usuários de sistemas mais antigos podem achar irritante a possibilidade de uso de memória muito grande. Para evitar surpresas desconfortáveis, o B<xz> possui um limitador de uso de memória embutido, que está desabilitado por padrão. Embora alguns sistemas operacionais forneçam maneiras de limitar o uso de memória dos processos, confiar nele não foi considerado flexível o suficiente (por exemplo, usar B<ulimit>(1) para limitar a memória virtual tende a prejudicar B<mmap>(2))."
#. type: Plain text
-#: ../src/xz/xz.1:259
-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>, for example, "
-"B<XZ_DEFAULTS=--memlimit=150MiB>. It is possible to set the limits "
-"separately for compression and decompression by using B<--memlimit-"
-"compress=>I<limit> and B<--memlimit-decompress=>I<limit>. Using these two "
-"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 ""
-"O limitador de uso de memória pode ser ativado com a opção de linha de "
-"comando B<--memlimit=>I<limite>. Geralmente é mais conveniente habilitar o "
-"limitador por padrão definindo a variável de ambiente B<XZ_DEFAULTS>, por "
-"exemplo, B<XZ_DEFAULTS=--memlimit=150MiB>. É possível definir os limites "
-"separadamente para compactação e descompactação usando B<--memlimit-"
-"compress=>I<limite> e B<--memlimit-decompress=>I<limite>. Usar essas duas "
-"opções fora de B<XZ_DEFAULTS> raramente é útil porque uma única execução de "
-"B<xz> não pode fazer compactação e descompactação e B<--memlimit=>I<limite> "
-"(ou B<-M> I<limite> ) é mais curto para digitar na linha de comando."
-
-#. type: Plain text
-#: ../src/xz/xz.1:278
-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, for example, if the limit is only slightly less "
-"than the amount required for B<xz -9>, the settings will be scaled down only "
-"a little, not all the way down to B<xz -8>."
-msgstr ""
-"Se o limite de uso de memória especificado for excedido durante a "
-"descompactação, B<xz> exibirá um erro e a descompactação do arquivo falhará. "
-"Se o limite for excedido durante a compactação, B<xz> tentará reduzir as "
-"configurações para que o limite não seja mais excedido (exceto ao usar B<--"
-"format=raw> ou B<--no-adjust>). Dessa forma, a operação não falhará, a menos "
-"que o limite seja muito pequeno. A escala das configurações é feita em "
-"etapas que não correspondem às predefinições do nível de compactação, por "
-"exemplo, se o limite for apenas um pouco menor que o valor necessário para "
-"B<xz -9>, as configurações serão reduzidas apenas um pouco , não até B<xz "
-"-8>."
+#: ../src/xz/xz.1
+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>, for example, B<XZ_DEFAULTS=--memlimit=150MiB>. It is possible to set the limits separately for compression and decompression by using B<--memlimit-compress=>I<limit> and B<--memlimit-decompress=>I<limit>. Using these two 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 "O limitador de uso de memória pode ser ativado com a opção de linha de comando B<--memlimit=>I<limite>. Geralmente é mais conveniente habilitar o limitador por padrão definindo a variável de ambiente B<XZ_DEFAULTS>, por exemplo, B<XZ_DEFAULTS=--memlimit=150MiB>. É possível definir os limites separadamente para compactação e descompactação usando B<--memlimit-compress=>I<limite> e B<--memlimit-decompress=>I<limite>. Usar essas duas opções fora de B<XZ_DEFAULTS> raramente é útil porque uma única execução de B<xz> não pode fazer compactação e descompactação e B<--memlimit=>I<limite> (ou B<-M> I<limite> ) é mais curto para digitar na linha de comando."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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, for example, if the limit is only slightly less than the amount required for B<xz -9>, the settings will be scaled down only a little, not all the way down to B<xz -8>."
+msgstr "Se o limite de uso de memória especificado for excedido durante a descompactação, B<xz> exibirá um erro e a descompactação do arquivo falhará. Se o limite for excedido durante a compactação, B<xz> tentará reduzir as configurações para que o limite não seja mais excedido (exceto ao usar B<--format=raw> ou B<--no-adjust>). Dessa forma, a operação não falhará, a menos que o limite seja muito pequeno. A escala das configurações é feita em etapas que não correspondem às predefinições do nível de compactação, por exemplo, se o limite for apenas um pouco menor que o valor necessário para B<xz -9>, as configurações serão reduzidas apenas um pouco , não até B<xz -8>."
#. type: SS
-#: ../src/xz/xz.1:279
+#: ../src/xz/xz.1
#, no-wrap
msgid "Concatenation and padding with .xz files"
msgstr "Concatenação e preenchimento com arquivos .xz"
#. type: Plain text
-#: ../src/xz/xz.1:287
-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 ""
-"É possível concatenar arquivos B<.xz> como estão. B<xz> irá descompactar "
-"tais arquivos como se fossem um único arquivo B<.xz>."
+#: ../src/xz/xz.1
+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 "É possível concatenar arquivos B<.xz> como estão. B<xz> irá descompactar tais arquivos como se fossem um único arquivo B<.xz>."
#. type: Plain text
-#: ../src/xz/xz.1:296
-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, for example, "
-"if the B<.xz> file is stored on a medium that measures file sizes in 512-"
-"byte blocks."
-msgstr ""
-"É possível inserir preenchimento entre as partes concatenadas ou após a "
-"última parte. O preenchimento deve consistir em bytes nulos e o tamanho do "
-"preenchimento deve ser um múltiplo de quatro bytes. Isso pode ser útil, por "
-"exemplo, se o arquivo B<.xz> for armazenado em uma mídia que mede tamanhos "
-"de arquivo em blocos de 512 bytes."
+#: ../src/xz/xz.1
+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, for example, if the B<.xz> file is stored on a medium that measures file sizes in 512-byte blocks."
+msgstr "É possível inserir preenchimento entre as partes concatenadas ou após a última parte. O preenchimento deve consistir em bytes nulos e o tamanho do preenchimento deve ser um múltiplo de quatro bytes. Isso pode ser útil, por exemplo, se o arquivo B<.xz> for armazenado em uma mídia que mede tamanhos de arquivo em blocos de 512 bytes."
#. type: Plain text
-#: ../src/xz/xz.1:300
-msgid ""
-"Concatenation and padding are not allowed with B<.lzma> files or raw streams."
-msgstr ""
-"Concatenação e preenchimento não são permitidos com arquivos B<.lzma> ou "
-"fluxos brutos."
+#: ../src/xz/xz.1
+msgid "Concatenation and padding are not allowed with B<.lzma> files or raw streams."
+msgstr "Concatenação e preenchimento não são permitidos com arquivos B<.lzma> ou fluxos brutos."
#. type: SH
-#: ../src/xz/xz.1:301 ../src/xzdec/xzdec.1:61
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "OPTIONS"
msgstr "OPÇÕES"
#. type: SS
-#: ../src/xz/xz.1:303
+#: ../src/xz/xz.1
#, no-wrap
msgid "Integer suffixes and special values"
msgstr "Sufixos inteiros e valores especiais"
#. type: Plain text
-#: ../src/xz/xz.1:307
-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 ""
-"Na maioria dos lugares onde um argumento inteiro é esperado, um sufixo "
-"opcional é suportado para indicar facilmente números inteiros grandes. Não "
-"deve haver espaço entre o número inteiro e o sufixo."
+#: ../src/xz/xz.1
+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 "Na maioria dos lugares onde um argumento inteiro é esperado, um sufixo opcional é suportado para indicar facilmente números inteiros grandes. Não deve haver espaço entre o número inteiro e o sufixo."
#. type: TP
-#: ../src/xz/xz.1:307
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<KiB>"
msgstr "B<KiB>"
#. type: Plain text
-#: ../src/xz/xz.1:318
-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 ""
-"Multiplica o inteiro por 1.024 (2^10). B<Ki>, B<k>, B<kB>, B<K> e B<KB> são "
-"aceitos como sinônimos de B<KiB>."
+#: ../src/xz/xz.1
+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 "Multiplica o inteiro por 1.024 (2^10). B<Ki>, B<k>, B<kB>, B<K> e B<KB> são aceitos como sinônimos de B<KiB>."
#. type: TP
-#: ../src/xz/xz.1:318
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<MiB>"
msgstr "B<MiB>"
#. type: Plain text
-#: ../src/xz/xz.1:328
-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 ""
-"Multiplica o número inteiro por 1.048.576 (2^20). B<Mi>, B<m>, B<M> e B<MB> "
-"são aceitos como sinônimos de B<MiB>."
+#: ../src/xz/xz.1
+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 "Multiplica o número inteiro por 1.048.576 (2^20). B<Mi>, B<m>, B<M> e B<MB> são aceitos como sinônimos de B<MiB>."
#. type: TP
-#: ../src/xz/xz.1:328
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<GiB>"
msgstr "B<GiB>"
#. type: Plain text
-#: ../src/xz/xz.1:338
-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 ""
-"Multiplica o número inteiro por 1.073.741.824 (2^30). B<Gi>, B<g>, B<G> e "
-"B<GB> são aceitos como sinônimos de B<GiB>."
+#: ../src/xz/xz.1
+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 "Multiplica o número inteiro por 1.073.741.824 (2^30). B<Gi>, B<g>, B<G> e B<GB> são aceitos como sinônimos de B<GiB>."
#. type: Plain text
-#: ../src/xz/xz.1:343
-msgid ""
-"The special value B<max> can be used to indicate the maximum integer value "
-"supported by the option."
-msgstr ""
-"O valor especial B<max> pode ser usado para indicar o valor inteiro máximo "
-"suportado pela opção."
+#: ../src/xz/xz.1
+msgid "The special value B<max> can be used to indicate the maximum integer value supported by the option."
+msgstr "O valor especial B<max> pode ser usado para indicar o valor inteiro máximo suportado pela opção."
#. type: SS
-#: ../src/xz/xz.1:344
+#: ../src/xz/xz.1
#, no-wrap
msgid "Operation mode"
msgstr "Modo de operação"
#. type: Plain text
-#: ../src/xz/xz.1:347
-msgid ""
-"If multiple operation mode options are given, the last one takes effect."
-msgstr ""
-"Se várias opções de modo de operação forem dadas, a última entrará em vigor."
+#: ../src/xz/xz.1
+msgid "If multiple operation mode options are given, the last one takes effect."
+msgstr "Se várias opções de modo de operação forem dadas, a última entrará em vigor."
#. type: TP
-#: ../src/xz/xz.1:347
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-z>, B<--compress>"
msgstr "B<-z>, B<--compress>"
#. type: Plain text
-#: ../src/xz/xz.1:356
-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 ""
-"Compacta. Este é o modo de operação padrão quando nenhuma opção de modo de "
-"operação é especificada e nenhum outro modo de operação está implícito no "
-"nome do comando (por exemplo, B<unxz> implica em B<--decompress>)."
+#: ../src/xz/xz.1
+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 "Compacta. Este é o modo de operação padrão quando nenhuma opção de modo de operação é especificada e nenhum outro modo de operação está implícito no nome do comando (por exemplo, B<unxz> implica em B<--decompress>)."
#. type: TP
-#: ../src/xz/xz.1:356 ../src/xzdec/xzdec.1:62
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-d>, B<--decompress>, B<--uncompress>"
msgstr "B<-d>, B<--decompress>, B<--uncompress>"
#. type: Plain text
-#: ../src/xz/xz.1:359
+#: ../src/xz/xz.1
msgid "Decompress."
msgstr "Descompacta."
#. type: TP
-#: ../src/xz/xz.1:359
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-t>, B<--test>"
msgstr "B<-t>, B<--test>"
#. type: Plain text
-#: ../src/xz/xz.1:368
-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 ""
-"Testa a integridade de I<arquivos> compactados. Esta opção é equivalente a "
-"B<--decompress --stdout> exceto que os dados descompactados são descartados "
-"em vez de serem gravados na saída padrão. Nenhum arquivo é criado ou "
-"removido."
+#: ../src/xz/xz.1
+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 "Testa a integridade de I<arquivos> compactados. Esta opção é equivalente a B<--decompress --stdout> exceto que os dados descompactados são descartados em vez de serem gravados na saída padrão. Nenhum arquivo é criado ou removido."
#. type: TP
-#: ../src/xz/xz.1:368
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-l>, B<--list>"
msgstr "B<-l>, B<--list>"
#. type: Plain text
-#: ../src/xz/xz.1:377
-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 ""
-"Imprime informações sobre I<arquivos> compactados. Nenhuma saída "
-"descompactada é produzida e nenhum arquivo é criado ou removido. No modo de "
-"lista, o programa não pode ler os dados compactados da entrada padrão ou de "
-"outras fontes não pesquisáveis."
+#: ../src/xz/xz.1
+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 "Imprime informações sobre I<arquivos> compactados. Nenhuma saída descompactada é produzida e nenhum arquivo é criado ou removido. No modo de lista, o programa não pode ler os dados compactados da entrada padrão ou de outras fontes não pesquisáveis."
#. type: Plain text
-#: ../src/xz/xz.1:392
-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, for "
-"example, B<less\\ -S> may be convenient if the terminal isn't wide enough."
-msgstr ""
-"A listagem padrão mostra informações básicas sobre I<arquivos>, um arquivo "
-"por linha. Para obter informações mais detalhadas, use também a opção B<--"
-"verbose>. Para obter ainda mais informações, use B<--verbose> duas vezes, "
-"mas observe que isso pode ser lento, porque obter todas as informações "
-"extras requer muitas buscas. A largura da saída detalhada excede 80 "
-"caracteres, portanto, canalizar a saída para, por exemplo, B<less\\ -S> pode "
-"ser conveniente se o terminal não tiver largura o suficiente."
+#: ../src/xz/xz.1
+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, for example, B<less\\ -S> may be convenient if the terminal isn't wide enough."
+msgstr "A listagem padrão mostra informações básicas sobre I<arquivos>, um arquivo por linha. Para obter informações mais detalhadas, use também a opção B<--verbose>. Para obter ainda mais informações, use B<--verbose> duas vezes, mas observe que isso pode ser lento, porque obter todas as informações extras requer muitas buscas. A largura da saída detalhada excede 80 caracteres, portanto, canalizar a saída para, por exemplo, B<less\\ -S> pode ser conveniente se o terminal não tiver largura o suficiente."
#. type: Plain text
-#: ../src/xz/xz.1:399
-msgid ""
-"The exact output may vary between B<xz> versions and different locales. For "
-"machine-readable output, B<--robot --list> should be used."
-msgstr ""
-"A saída exata pode variar entre versões B<xz> e localidades diferentes. Para "
-"saída legível por máquina, B<--robot --list> deve ser usado."
+#: ../src/xz/xz.1
+msgid "The exact output may vary between B<xz> versions and different locales. For machine-readable output, B<--robot --list> should be used."
+msgstr "A saída exata pode variar entre versões B<xz> e localidades diferentes. Para saída legível por máquina, B<--robot --list> deve ser usado."
#. type: SS
-#: ../src/xz/xz.1:400
+#: ../src/xz/xz.1
#, no-wrap
msgid "Operation modifiers"
msgstr "Modificadores de operação"
#. type: TP
-#: ../src/xz/xz.1:401 ../src/xzdec/xzdec.1:69
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-k>, B<--keep>"
msgstr "B<-k>, B<--keep>"
#. type: Plain text
-#: ../src/xz/xz.1:404
+#: ../src/xz/xz.1
msgid "Don't delete the input files."
msgstr "Não exclui os arquivos de entrada."
#. type: Plain text
-#: ../src/xz/xz.1:418
-msgid ""
-"Since B<xz> 5.2.6, this option also makes B<xz> compress or decompress even "
-"if the input is a symbolic link to a regular file, has more than one hard "
-"link, or has the setuid, setgid, or sticky bit set. The setuid, setgid, and "
-"sticky bits are not copied to the target file. In earlier versions this was "
-"only done with B<--force>."
-msgstr ""
-"Desde B<xz> 5.2.6, esta opção também faz B<xz> compactar ou descompactar "
-"mesmo se a entrada for um link simbólico para um arquivo comum, tiver mais "
-"de um link físico ou tiver o setuid, setgid ou sticky bit definir. Os bits "
-"setuid, setgid e sticky não são copiados para o arquivo de destino. Nas "
-"versões anteriores, isso era feito apenas com B<--force>."
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.2.6, this option also makes B<xz> compress or decompress even if the input is a symbolic link to a regular file, has more than one hard link, or has the setuid, setgid, or sticky bit set. The setuid, setgid, and sticky bits are not copied to the target file. In earlier versions this was only done with B<--force>."
+msgstr "Desde B<xz> 5.2.6, esta opção também faz B<xz> compactar ou descompactar mesmo se a entrada for um link simbólico para um arquivo comum, tiver mais de um link físico ou tiver o setuid, setgid ou sticky bit definir. Os bits setuid, setgid e sticky não são copiados para o arquivo de destino. Nas versões anteriores, isso era feito apenas com B<--force>."
#. type: TP
-#: ../src/xz/xz.1:418
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-f>, B<--force>"
msgstr "B<-f>, B<--force>"
#. type: Plain text
-#: ../src/xz/xz.1:421
+#: ../src/xz/xz.1
msgid "This option has several effects:"
msgstr "Esta opção tem vários efeitos:"
#. type: Plain text
-#: ../src/xz/xz.1:425
-msgid ""
-"If the target file already exists, delete it before compressing or "
-"decompressing."
-msgstr ""
-"Se o arquivo de destino já existir, o exclui antes de compactar ou "
-"descompactar."
+#: ../src/xz/xz.1
+msgid "If the target file already exists, delete it before compressing or decompressing."
+msgstr "Se o arquivo de destino já existir, o exclui antes de compactar ou descompactar."
#. type: Plain text
-#: ../src/xz/xz.1:432
-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 ""
-"Compacta ou descompacta, mesmo que a entrada seja um link simbólico para um "
-"arquivo normal, tenha mais de um link físico ou tenha setuid, setgid ou "
-"sticky bit definido. Os bits setuid, setgid e sticky não são copiados para o "
-"arquivo de destino."
+#: ../src/xz/xz.1
+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 "Compacta ou descompacta, mesmo que a entrada seja um link simbólico para um arquivo normal, tenha mais de um link físico ou tenha setuid, setgid ou sticky bit definido. Os bits setuid, setgid e sticky não são copiados para o arquivo de destino."
#. type: Plain text
-#: ../src/xz/xz.1:457
-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 ""
-"Quando usado com B<--decompress> B<--stdout> e B<xz> não consegue reconhecer "
-"o tipo do arquivo de origem, copia o arquivo de origem como está na saída "
-"padrão. Isso permite que B<xzcat> B<--force> seja usado como B<cat>(1) para "
-"arquivos que não foram compactados com B<xz>. Observe que, no futuro, o "
-"B<xz> pode oferecer suporte a novos formatos de arquivo compactado, o que "
-"pode fazer com que o B<xz> descompacte mais tipos de arquivos em vez de "
-"copiá-los como na saída padrão. B<--format=>I<formato> pode ser usado para "
-"restringir B<xz> para descompactar apenas um único formato de arquivo."
+#: ../src/xz/xz.1
+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 "Quando usado com B<--decompress> B<--stdout> e B<xz> não consegue reconhecer o tipo do arquivo de origem, copia o arquivo de origem como está na saída padrão. Isso permite que B<xzcat> B<--force> seja usado como B<cat>(1) para arquivos que não foram compactados com B<xz>. Observe que, no futuro, o B<xz> pode oferecer suporte a novos formatos de arquivo compactado, o que pode fazer com que o B<xz> descompacte mais tipos de arquivos em vez de copiá-los como na saída padrão. B<--format=>I<formato> pode ser usado para restringir B<xz> para descompactar apenas um único formato de arquivo."
#. type: TP
-#: ../src/xz/xz.1:458 ../src/xzdec/xzdec.1:76
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, 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:464
-msgid ""
-"Write the compressed or decompressed data to standard output instead of a "
-"file. This implies B<--keep>."
-msgstr ""
-"Grava os dados compactados ou descompactados na saída padrão em vez de em um "
-"arquivo. Isso implica em B<--keep>."
+#: ../src/xz/xz.1
+msgid "Write the compressed or decompressed data to standard output instead of a file. This implies B<--keep>."
+msgstr "Grava os dados compactados ou descompactados na saída padrão em vez de em um arquivo. Isso implica em B<--keep>."
#. type: TP
-#: ../src/xz/xz.1:464
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--single-stream>"
msgstr "B<--single-stream>"
#. type: Plain text
-#: ../src/xz/xz.1:473
-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 ""
-"Descompacta apenas o primeiro fluxo de B<.xz> e ignora silenciosamente "
-"possíveis dados de entrada restantes após o fluxo. Normalmente, esse "
-"restante posterior sem uso faz com que B<xz> exiba um erro."
+#: ../src/xz/xz.1
+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 "Descompacta apenas o primeiro fluxo de B<.xz> e ignora silenciosamente possíveis dados de entrada restantes após o fluxo. Normalmente, esse restante posterior sem uso faz com que B<xz> exiba um erro."
#. type: Plain text
-#: ../src/xz/xz.1:482
-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> nunca descompacta mais de um fluxo de arquivos B<.lzma> ou fluxos "
-"brutos, mas esta opção ainda faz B<xz> ignorar os possíveis dados "
-"posteriores após o arquivo B<.lzma> ou fluxo bruto."
+#: ../src/xz/xz.1
+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> nunca descompacta mais de um fluxo de arquivos B<.lzma> ou fluxos brutos, mas esta opção ainda faz B<xz> ignorar os possíveis dados posteriores após o arquivo B<.lzma> ou fluxo bruto."
#. type: Plain text
-#: ../src/xz/xz.1:487
-msgid ""
-"This option has no effect if the operation mode is not B<--decompress> or "
-"B<--test>."
-msgstr ""
-"Esta opção não tem efeito se o modo de operação não for B<--decompress> ou "
-"B<--test>."
+#: ../src/xz/xz.1
+msgid "This option has no effect if the operation mode is not B<--decompress> or B<--test>."
+msgstr "Esta opção não tem efeito se o modo de operação não for B<--decompress> ou B<--test>."
#. type: TP
-#: ../src/xz/xz.1:487
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--no-sparse>"
msgstr "B<--no-sparse>"
#. type: Plain text
-#: ../src/xz/xz.1:499
-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 ""
-"Desativa a criação de arquivos esparsos. Por padrão, ao descompactar em um "
-"arquivo normal, B<xz> tenta tornar o arquivo esparso se os dados "
-"descompactados contiverem longas sequências de zeros binários. Ele também "
-"funciona ao gravar na saída padrão, desde que a saída padrão esteja "
-"conectada a um arquivo normal e certas condições adicionais sejam atendidas "
-"para torná-la segura. A criação de arquivos esparsos pode economizar espaço "
-"em disco e acelerar a descompactação, reduzindo a quantidade de E/S do disco."
+#: ../src/xz/xz.1
+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 "Desativa a criação de arquivos esparsos. Por padrão, ao descompactar em um arquivo normal, B<xz> tenta tornar o arquivo esparso se os dados descompactados contiverem longas sequências de zeros binários. Ele também funciona ao gravar na saída padrão, desde que a saída padrão esteja conectada a um arquivo normal e certas condições adicionais sejam atendidas para torná-la segura. A criação de arquivos esparsos pode economizar espaço em disco e acelerar a descompactação, reduzindo a quantidade de E/S do disco."
#. type: TP
-#: ../src/xz/xz.1:499
+#: ../src/xz/xz.1
#, 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:511
-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 ""
-"Ao compactar, usa I<.suf> como sufixo para o arquivo de destino em vez de B<."
-"xz> ou B<.lzma>. Se não estiver gravando na saída padrão e o arquivo de "
-"origem já tiver o sufixo I<.suf>, um aviso será exibido e o arquivo será "
-"ignorado."
+#: ../src/xz/xz.1
+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 "Ao compactar, usa I<.suf> como sufixo para o arquivo de destino em vez de B<.xz> ou B<.lzma>. Se não estiver gravando na saída padrão e o arquivo de origem já tiver o sufixo I<.suf>, um aviso será exibido e o arquivo será ignorado."
#. type: Plain text
-#: ../src/xz/xz.1:525
-msgid ""
-"When decompressing, recognize files with the suffix I<.suf> in addition to "
-"files with the B<.xz>, B<.txz>, B<.lzma>, B<.tlz>, or B<.lz> suffix. If the "
-"source file has the suffix I<.suf>, the suffix is removed to get the target "
-"filename."
-msgstr ""
-"Ao descompactar, reconhece arquivos com o sufixo I<.suf> além de arquivos "
-"com o sufixo B<.xz>, B<.txz>, B<.lzma>, B<.tlz> ou B<.lz> . Se o arquivo de "
-"origem tiver o sufixo I<.suf>, o sufixo será removido para obter o nome do "
-"arquivo de destino."
+#: ../src/xz/xz.1
+msgid "When decompressing, recognize files with the suffix I<.suf> in addition to files with the B<.xz>, B<.txz>, B<.lzma>, B<.tlz>, or B<.lz> suffix. If the source file has the suffix I<.suf>, the suffix is removed to get the target filename."
+msgstr "Ao descompactar, reconhece arquivos com o sufixo I<.suf> além de arquivos com o sufixo B<.xz>, B<.txz>, B<.lzma>, B<.tlz> ou B<.lz> . Se o arquivo de origem tiver o sufixo I<.suf>, o sufixo será removido para obter o nome do arquivo de destino."
#. type: Plain text
-#: ../src/xz/xz.1:531
-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 ""
-"Ao compactar ou descompactar fluxos brutos (B<--format=raw>), o sufixo "
-"sempre deve ser especificado, a menos que seja gravado na saída padrão, "
-"porque não há sufixo padrão para fluxos brutos."
+#: ../src/xz/xz.1
+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 "Ao compactar ou descompactar fluxos brutos (B<--format=raw>), o sufixo sempre deve ser especificado, a menos que seja gravado na saída padrão, porque não há sufixo padrão para fluxos brutos."
#. type: TP
-#: ../src/xz/xz.1:531
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--files>[B<=>I<file>]"
msgstr "B<--files>[B<=>I<arquivo>]"
#. type: Plain text
-#: ../src/xz/xz.1:545
-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 ""
-"Lê os nomes dos arquivos a serem processados em I<arquivo>; se I<arquivo> "
-"for omitido, os nomes dos arquivos serão lidos da entrada padrão. Os nomes "
-"de arquivo devem terminar com o caractere de nova linha. Um traço (B<->) é "
-"considerado um nome de arquivo regular; não significa entrada padrão. Se os "
-"nomes de arquivo forem fornecidos também como argumentos de linha de "
-"comando, eles serão processados antes da leitura dos nomes de arquivo de "
-"I<arquivo>."
+#: ../src/xz/xz.1
+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 "Lê os nomes dos arquivos a serem processados em I<arquivo>; se I<arquivo> for omitido, os nomes dos arquivos serão lidos da entrada padrão. Os nomes de arquivo devem terminar com o caractere de nova linha. Um traço (B<->) é considerado um nome de arquivo regular; não significa entrada padrão. Se os nomes de arquivo forem fornecidos também como argumentos de linha de comando, eles serão processados antes da leitura dos nomes de arquivo de I<arquivo>."
#. type: TP
-#: ../src/xz/xz.1:545
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--files0>[B<=>I<file>]"
msgstr "B<--files0>[B<=>I<arquivo>]"
#. type: Plain text
-#: ../src/xz/xz.1:549
-msgid ""
-"This is identical to B<--files>[B<=>I<file>] except that each filename must "
-"be terminated with the null character."
-msgstr ""
-"Isso é idêntico a B<--files>[B<=>I<arquivo>], exceto que cada nome de "
-"arquivo deve ser finalizado com o caractere nulo."
+#: ../src/xz/xz.1
+msgid "This is identical to B<--files>[B<=>I<file>] except that each filename must be terminated with the null character."
+msgstr "Isso é idêntico a B<--files>[B<=>I<arquivo>], exceto que cada nome de arquivo deve ser finalizado com o caractere nulo."
#. type: SS
-#: ../src/xz/xz.1:550
+#: ../src/xz/xz.1
#, no-wrap
msgid "Basic file format and compression options"
msgstr "Opções básicas de formato de arquivo e de compactação"
#. type: TP
-#: ../src/xz/xz.1:551
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-F> I<format>, B<--format=>I<format>"
msgstr "B<-F> I<formato>, B<--format=>I<formato>"
#. type: Plain text
-#: ../src/xz/xz.1:556
+#: ../src/xz/xz.1
msgid "Specify the file I<format> to compress or decompress:"
msgstr "Especifica o I<formato> de arquivo para compactar ou descompactar:"
#. type: TP
-#: ../src/xz/xz.1:557
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<auto>"
msgstr "B<auto>"
#. type: Plain text
-#: ../src/xz/xz.1:569
-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 ""
-"Este é o padrão. Ao compactar, B<auto> é equivalente a B<xz>. Ao "
-"descompactar, o formato do arquivo de entrada é detectado automaticamente. "
-"Observe que os fluxos brutos (criados com B<--format=raw>) não podem ser "
-"detectados automaticamente."
+#: ../src/xz/xz.1
+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 "Este é o padrão. Ao compactar, B<auto> é equivalente a B<xz>. Ao descompactar, o formato do arquivo de entrada é detectado automaticamente. Observe que os fluxos brutos (criados com B<--format=raw>) não podem ser detectados automaticamente."
#. type: TP
-#: ../src/xz/xz.1:569
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<xz>"
msgstr "B<xz>"
#. type: Plain text
-#: ../src/xz/xz.1:576
-msgid ""
-"Compress to the B<.xz> file format, or accept only B<.xz> files when "
-"decompressing."
-msgstr ""
-"Compacta no formato de arquivo B<.xz> ou aceite apenas arquivos B<.xz> ao "
-"descompactar."
+#: ../src/xz/xz.1
+msgid "Compress to the B<.xz> file format, or accept only B<.xz> files when decompressing."
+msgstr "Compacta no formato de arquivo B<.xz> ou aceite apenas arquivos B<.xz> ao descompactar."
#. type: TP
-#: ../src/xz/xz.1:576
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lzma>, B<alone>"
msgstr "B<lzma>, B<alone>"
#. type: Plain text
-#: ../src/xz/xz.1:586
-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 ""
-"Compacta no formato de arquivo legado B<.lzma> ou aceite apenas arquivos B<."
-"lzma> ao descompactar. O nome alternativo B<alone> é fornecido para "
-"compatibilidade com versões anteriores do LZMA Utils."
+#: ../src/xz/xz.1
+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 "Compacta no formato de arquivo legado B<.lzma> ou aceite apenas arquivos B<.lzma> ao descompactar. O nome alternativo B<alone> é fornecido para compatibilidade com versões anteriores do LZMA Utils."
#. type: TP
-#: ../src/xz/xz.1:586
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lzip>"
msgstr "B<lzip>"
#. type: Plain text
-#: ../src/xz/xz.1:592
-msgid ""
-"Accept only B<.lz> files when decompressing. Compression is not supported."
-msgstr ""
-"Aceita apenas arquivos B<.lz> ao descompactar. Sem suporte a compactação."
+#: ../src/xz/xz.1
+msgid "Accept only B<.lz> files when decompressing. Compression is not supported."
+msgstr "Aceita apenas arquivos B<.lz> ao descompactar. Sem suporte a compactação."
#. type: Plain text
-#: ../src/xz/xz.1:605
-msgid ""
-"The B<.lz> format version 0 and the unextended version 1 are supported. "
-"Version 0 files were produced by B<lzip> 1.3 and older. Such files aren't "
-"common but may be found from file archives as a few source packages were "
-"released in this format. People might have old personal files in this "
-"format too. Decompression support for the format version 0 was removed in "
-"B<lzip> 1.18."
-msgstr ""
-"O formato B<.lz> versão 0 e a versão não estendida 1 são suportados. Os "
-"arquivos da versão 0 foram produzidos por B<lzip> 1.3 e anteriores. Esses "
-"arquivos não são comuns, mas podem ser encontrados em arquivos compactados, "
-"pois alguns pacotes de origem foram lançados nesse formato. As pessoas "
-"também podem ter arquivos pessoais antigos neste formato. O suporte de "
-"descompactação para o formato versão 0 foi removido em B<lzip> 1.18."
+#: ../src/xz/xz.1
+msgid "The B<.lz> format version 0 and the unextended version 1 are supported. Version 0 files were produced by B<lzip> 1.3 and older. Such files aren't common but may be found from file archives as a few source packages were released in this format. People might have old personal files in this format too. Decompression support for the format version 0 was removed in B<lzip> 1.18."
+msgstr "O formato B<.lz> versão 0 e a versão não estendida 1 são suportados. Os arquivos da versão 0 foram produzidos por B<lzip> 1.3 e anteriores. Esses arquivos não são comuns, mas podem ser encontrados em arquivos compactados, pois alguns pacotes de origem foram lançados nesse formato. As pessoas também podem ter arquivos pessoais antigos neste formato. O suporte de descompactação para o formato versão 0 foi removido em B<lzip> 1.18."
#. type: Plain text
-#: ../src/xz/xz.1:614
-msgid ""
-"B<lzip> 1.4 and later create files in the format version 1. The sync flush "
-"marker extension to the format version 1 was added in B<lzip> 1.6. This "
-"extension is rarely used and isn't supported by B<xz> (diagnosed as corrupt "
-"input)."
-msgstr ""
-"B<lzip> 1.4 e posteriores criam arquivos no formato versão 1. A extensão do "
-"marcador de descarga de sincronização para o formato versão 1 foi adicionada "
-"em B<lzip> 1.6. Esta extensão raramente é usada e não é suportada por B<xz> "
-"(diagnosticada como entrada corrompida)."
+#: ../src/xz/xz.1
+msgid "B<lzip> 1.4 and later create files in the format version 1. The sync flush marker extension to the format version 1 was added in B<lzip> 1.6. This extension is rarely used and isn't supported by B<xz> (diagnosed as corrupt input)."
+msgstr "B<lzip> 1.4 e posteriores criam arquivos no formato versão 1. A extensão do marcador de descarga de sincronização para o formato versão 1 foi adicionada em B<lzip> 1.6. Esta extensão raramente é usada e não é suportada por B<xz> (diagnosticada como entrada corrompida)."
#. type: TP
-#: ../src/xz/xz.1:614
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<raw>"
msgstr "B<raw>"
#. type: Plain text
-#: ../src/xz/xz.1:622
-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 ""
-"Compacta ou descompacta um fluxo bruto (sem cabeçalhos). Isso é destinado "
-"apenas a usuários avançados. Para decodificar fluxos brutos, você precisa "
-"usar B<--format=raw> e especificar explicitamente a cadeia de filtros, que "
-"normalmente seria armazenada nos cabeçalhos do contêiner."
+#: ../src/xz/xz.1
+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 "Compacta ou descompacta um fluxo bruto (sem cabeçalhos). Isso é destinado apenas a usuários avançados. Para decodificar fluxos brutos, você precisa usar B<--format=raw> e especificar explicitamente a cadeia de filtros, que normalmente seria armazenada nos cabeçalhos do contêiner."
#. type: TP
-#: ../src/xz/xz.1:623
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-C> I<check>, B<--check=>I<check>"
msgstr "B<-C> I<verificação>, B<--check=>I<verificação>"
#. type: Plain text
-#: ../src/xz/xz.1:638
-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 ""
-"Especifica o tipo de verificação de integridade. A verificação é calculada a "
-"partir dos dados descompactados e armazenados no arquivo B<.xz>. Esta opção "
-"tem efeito somente ao compactar no formato B<.xz>; o formato B<.lzma> não "
-"oferece suporte a verificações de integridade. A verificação de integridade "
-"(se for o caso) é verificada quando o arquivo B<.xz> é descompactado."
+#: ../src/xz/xz.1
+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 "Especifica o tipo de verificação de integridade. A verificação é calculada a partir dos dados descompactados e armazenados no arquivo B<.xz>. Esta opção tem efeito somente ao compactar no formato B<.xz>; o formato B<.lzma> não oferece suporte a verificações de integridade. A verificação de integridade (se for o caso) é verificada quando o arquivo B<.xz> é descompactado."
#. type: Plain text
-#: ../src/xz/xz.1:642
+#: ../src/xz/xz.1
msgid "Supported I<check> types:"
msgstr "Tipos de I<verificação> suportados:"
#. type: TP
-#: ../src/xz/xz.1:643
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<none>"
msgstr "B<none>"
#. type: Plain text
-#: ../src/xz/xz.1:649
-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 ""
-"Não calcula uma verificação de integridade. Isso geralmente é uma má ideia. "
-"Pode ser útil quando a integridade dos dados é verificada por outros meios."
+#: ../src/xz/xz.1
+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 "Não calcula uma verificação de integridade. Isso geralmente é uma má ideia. Pode ser útil quando a integridade dos dados é verificada por outros meios."
#. type: TP
-#: ../src/xz/xz.1:649
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<crc32>"
msgstr "B<crc32>"
#. type: Plain text
-#: ../src/xz/xz.1:652
+#: ../src/xz/xz.1
msgid "Calculate CRC32 using the polynomial from IEEE-802.3 (Ethernet)."
msgstr "Calcula CRC32 usando o polinômio do IEEE-802.3 (Ethernet)."
#. type: TP
-#: ../src/xz/xz.1:652
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<crc64>"
msgstr "B<crc64>"
#. type: Plain text
-#: ../src/xz/xz.1:657
-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 ""
-"Calcula CRC64 usando o polinômio de ECMA-182. Este é o padrão, pois é um "
-"pouco melhor que o CRC32 na detecção de arquivos danificados e a diferença "
-"de velocidade é insignificante."
+#: ../src/xz/xz.1
+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 "Calcula CRC64 usando o polinômio de ECMA-182. Este é o padrão, pois é um pouco melhor que o CRC32 na detecção de arquivos danificados e a diferença de velocidade é insignificante."
#. type: TP
-#: ../src/xz/xz.1:657
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<sha256>"
msgstr "B<sha256>"
#. type: Plain text
-#: ../src/xz/xz.1:661
+#: ../src/xz/xz.1
msgid "Calculate SHA-256. This is somewhat slower than CRC32 and CRC64."
msgstr "Calcula SHA-256. Isso é um pouco mais lento do que CRC32 e CRC64."
#. type: Plain text
-#: ../src/xz/xz.1:667
-msgid ""
-"Integrity of the B<.xz> headers is always verified with CRC32. It is not "
-"possible to change or disable it."
-msgstr ""
-"A integridade dos cabeçalhos de B<.xz> é sempre verificada com CRC32. Não é "
-"possível alterá-la ou desativá-la."
+#: ../src/xz/xz.1
+msgid "Integrity of the B<.xz> headers is always verified with CRC32. It is not possible to change or disable it."
+msgstr "A integridade dos cabeçalhos de B<.xz> é sempre verificada com CRC32. Não é possível alterá-la ou desativá-la."
#. type: TP
-#: ../src/xz/xz.1:667
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--ignore-check>"
msgstr "B<--ignore-check>"
# Enquanto verify=verificar, achei melhor alterar para conferir para evitar excesso de "verificar" e "verificação" -- Rafael
#. type: Plain text
-#: ../src/xz/xz.1:673
-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 ""
-"Não confere a verificação de integridade dos dados compactados ao "
-"descompactar. Os valores CRC32 nos cabeçalhos B<.xz> ainda serão conferidos "
-"normalmente."
+#: ../src/xz/xz.1
+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 "Não confere a verificação de integridade dos dados compactados ao descompactar. Os valores CRC32 nos cabeçalhos B<.xz> ainda serão conferidos normalmente."
#. type: Plain text
-#: ../src/xz/xz.1:676
-msgid ""
-"B<Do not use this option unless you know what you are doing.> Possible "
-"reasons to use this option:"
-msgstr ""
-"B<Não use esta opção a menos que saiba o que está fazendo.> Possíveis razões "
-"para usar esta opção:"
+#: ../src/xz/xz.1
+msgid "B<Do not use this option unless you know what you are doing.> Possible reasons to use this option:"
+msgstr "B<Não use esta opção a menos que saiba o que está fazendo.> Possíveis razões para usar esta opção:"
#. type: Plain text
-#: ../src/xz/xz.1:679
+#: ../src/xz/xz.1
msgid "Trying to recover data from a corrupt .xz file."
msgstr "Tentativa de recuperar dados de um arquivo .xz corrompido."
#. type: Plain text
-#: ../src/xz/xz.1:685
-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 ""
-"Acelerar a descompactação. Isso é importante principalmente com SHA-256 ou "
-"com arquivos extremamente bem compactados. É recomendável não usar essa "
-"opção para essa finalidade, a menos que a integridade do arquivo seja "
-"verificada externamente de alguma outra forma."
+#: ../src/xz/xz.1
+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 "Acelerar a descompactação. Isso é importante principalmente com SHA-256 ou com arquivos extremamente bem compactados. É recomendável não usar essa opção para essa finalidade, a menos que a integridade do arquivo seja verificada externamente de alguma outra forma."
#. type: TP
-#: ../src/xz/xz.1:686
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-0> ... B<-9>"
msgstr "B<-0> ... B<-9>"
#. type: Plain text
-#: ../src/xz/xz.1:695
-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 ""
-"Seleciona um nível de predefinição de compactação. O padrão é B<-6>. Se "
-"vários níveis de predefinição forem especificados, o último terá efeito. Se "
-"uma cadeia de filtro personalizada já foi especificada, especificar um nível "
-"de predefinição de compactação limpa a cadeia de filtro personalizada."
+#: ../src/xz/xz.1
+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 "Seleciona um nível de predefinição de compactação. O padrão é B<-6>. Se vários níveis de predefinição forem especificados, o último terá efeito. Se uma cadeia de filtro personalizada já foi especificada, especificar um nível de predefinição de compactação limpa a cadeia de filtro personalizada."
#. type: Plain text
-#: ../src/xz/xz.1:710
-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 ""
-"As diferenças entre as predefinições são mais significativas do que com "
-"B<gzip>(1) e B<bzip2>(1). As configurações de compactação selecionadas "
-"determinam os requisitos de memória do descompactador, portanto, usar um "
-"nível de predefinição muito alto pode dificultar a descompactação do arquivo "
-"em um sistema antigo com pouca RAM. Especificamente, B<não é uma boa ideia "
-"usar cegamente -9 para tudo> como costuma acontecer com B<gzip>(1) e "
-"B<bzip2>(1)."
+#: ../src/xz/xz.1
+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 "As diferenças entre as predefinições são mais significativas do que com B<gzip>(1) e B<bzip2>(1). As configurações de compactação selecionadas determinam os requisitos de memória do descompactador, portanto, usar um nível de predefinição muito alto pode dificultar a descompactação do arquivo em um sistema antigo com pouca RAM. Especificamente, B<não é uma boa ideia usar cegamente -9 para tudo> como costuma acontecer com B<gzip>(1) e B<bzip2>(1)."
#. type: TP
-#: ../src/xz/xz.1:711
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-0> ... B<-3>"
msgstr "B<-0> ... B<-3>"
#. type: Plain text
-#: ../src/xz/xz.1:723
-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 ""
-"Estas são predefinições um tanto rápidas. B<-0> às vezes é mais rápida que "
-"B<gzip -9> ao mesmo tempo que compacta muito melhor. As mais altas "
-"geralmente têm velocidade comparável ao B<bzip2>(1) com taxa de compactação "
-"comparável ou melhor, embora os resultados dependam muito do tipo de dados "
-"que estão sendo compactados."
+#: ../src/xz/xz.1
+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 "Estas são predefinições um tanto rápidas. B<-0> às vezes é mais rápida que B<gzip -9> ao mesmo tempo que compacta muito melhor. As mais altas geralmente têm velocidade comparável ao B<bzip2>(1) com taxa de compactação comparável ou melhor, embora os resultados dependam muito do tipo de dados que estão sendo compactados."
#. type: TP
-#: ../src/xz/xz.1:723
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-4> ... B<-6>"
msgstr "B<-4> ... B<-6>"
#. type: Plain text
-#: ../src/xz/xz.1:737
-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 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 ""
-"Compactação boa a muito boa, mantendo o uso de memória do descompactador "
-"razoável mesmo para sistemas antigos. B<-6> é o padrão, que geralmente é uma "
-"boa escolha para distribuir arquivos que precisam ser descompactáveis, mesmo "
-"em sistemas com apenas 16\\ MiB de RAM. (B<-5e> ou B<-6e> também vale a pena "
-"considerar. Veja B<--extreme>.)"
+#: ../src/xz/xz.1
+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 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 "Compactação boa a muito boa, mantendo o uso de memória do descompactador razoável mesmo para sistemas antigos. B<-6> é o padrão, que geralmente é uma boa escolha para distribuir arquivos que precisam ser descompactáveis, mesmo em sistemas com apenas 16\\ MiB de RAM. (B<-5e> ou B<-6e> também vale a pena considerar. Veja B<--extreme>.)"
#. type: TP
-#: ../src/xz/xz.1:737
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-7 ... -9>"
msgstr "B<-7 ... -9>"
#. type: Plain text
-#: ../src/xz/xz.1:744
-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 ""
-"Eles são como B<-6>, mas com requisitos de memória de compressor e "
-"descompressor mais altos. Eles são úteis apenas ao compactar arquivos "
-"maiores que 8\\ MiB, 16\\ MiB e 32\\ MiB, respectivamente."
+#: ../src/xz/xz.1
+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 "Eles são como B<-6>, mas com requisitos de memória de compressor e descompressor mais altos. Eles são úteis apenas ao compactar arquivos maiores que 8\\ MiB, 16\\ MiB e 32\\ MiB, respectivamente."
#. type: Plain text
-#: ../src/xz/xz.1:752
-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 ""
-"No mesmo hardware, a velocidade de descompactação é aproximadamente um "
-"número constante de bytes de dados compactados por segundo. Em outras "
-"palavras, quanto melhor a compactação, mais rápida será a descompactação. "
-"Isso também significa que a quantidade de saída não compactada produzida por "
-"segundo pode variar muito."
+#: ../src/xz/xz.1
+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 "No mesmo hardware, a velocidade de descompactação é aproximadamente um número constante de bytes de dados compactados por segundo. Em outras palavras, quanto melhor a compactação, mais rápida será a descompactação. Isso também significa que a quantidade de saída não compactada produzida por segundo pode variar muito."
#. type: Plain text
-#: ../src/xz/xz.1:754
+#: ../src/xz/xz.1
msgid "The following table summarises the features of the presets:"
msgstr "A tabela a seguir resume os recursos das predefinições:"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842 ../src/xz/xz.1:2839
+#: ../src/xz/xz.1
#, no-wrap
msgid "Preset"
msgstr "Predefinição"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842
+#: ../src/xz/xz.1
#, no-wrap
msgid "DictSize"
msgstr "DicTam"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842 ../src/xz/xz.1:2839
+#: ../src/xz/xz.1
#, no-wrap
msgid "CompCPU"
msgstr "CompCPU"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842
+#: ../src/xz/xz.1
#, no-wrap
msgid "CompMem"
msgstr "CompMem"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842
+#: ../src/xz/xz.1
#, no-wrap
msgid "DecMem"
msgstr "DecMem"
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:2450 ../src/xz/xz.1:2475
-#: ../src/xz/xz.1:2840
+#: ../src/xz/xz.1
#, no-wrap
msgid "-0"
msgstr "-0"
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:843 ../src/xz/xz.1:2450
+#: ../src/xz/xz.1
#, no-wrap
msgid "256 KiB"
msgstr "256 KiB"
#. type: TP
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:2840 ../src/scripts/xzgrep.1:82
+#: ../src/xz/xz.1 ../src/scripts/xzgrep.1
#, no-wrap
msgid "0"
msgstr "0"
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:764 ../src/xz/xz.1:845 ../src/xz/xz.1:2475
+#: ../src/xz/xz.1
#, no-wrap
msgid "3 MiB"
msgstr "3 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:763 ../src/xz/xz.1:843 ../src/xz/xz.1:844
-#: ../src/xz/xz.1:2451 ../src/xz/xz.1:2452 ../src/xz/xz.1:2454
+#: ../src/xz/xz.1
#, no-wrap
msgid "1 MiB"
msgstr "1 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:2451 ../src/xz/xz.1:2476
-#: ../src/xz/xz.1:2841
+#: ../src/xz/xz.1
#, no-wrap
msgid "-1"
msgstr "-1"
#. type: TP
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:1758 ../src/xz/xz.1:2841
-#: ../src/scripts/xzgrep.1:86
+#: ../src/xz/xz.1 ../src/scripts/xzgrep.1
#, no-wrap
msgid "1"
msgstr "1"
#. type: tbl table
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:767 ../src/xz/xz.1:768 ../src/xz/xz.1:848
-#: ../src/xz/xz.1:849 ../src/xz/xz.1:2476
+#: ../src/xz/xz.1
#, no-wrap
msgid "9 MiB"
msgstr "9 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:764 ../src/xz/xz.1:844 ../src/xz/xz.1:845
-#: ../src/xz/xz.1:2452 ../src/xz/xz.1:2455 ../src/xz/xz.1:2476
+#: ../src/xz/xz.1
#, no-wrap
msgid "2 MiB"
msgstr "2 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:764 ../src/xz/xz.1:2452 ../src/xz/xz.1:2477
-#: ../src/xz/xz.1:2842
+#: ../src/xz/xz.1
#, no-wrap
msgid "-2"
msgstr "-2"
#. type: tbl table
-#: ../src/xz/xz.1:764 ../src/xz/xz.1:1760 ../src/xz/xz.1:2842
+#: ../src/xz/xz.1
#, no-wrap
msgid "2"
msgstr "2"
#. type: tbl table
-#: ../src/xz/xz.1:764 ../src/xz/xz.1:769 ../src/xz/xz.1:850 ../src/xz/xz.1:2477
+#: ../src/xz/xz.1
#, no-wrap
msgid "17 MiB"
msgstr "17 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:2453 ../src/xz/xz.1:2478
-#: ../src/xz/xz.1:2843
+#: ../src/xz/xz.1
#, no-wrap
msgid "-3"
msgstr "-3"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:766 ../src/xz/xz.1:843 ../src/xz/xz.1:846
-#: ../src/xz/xz.1:847 ../src/xz/xz.1:2453 ../src/xz/xz.1:2454
-#: ../src/xz/xz.1:2456
+#: ../src/xz/xz.1
#, no-wrap
msgid "4 MiB"
msgstr "4 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:2843
+#: ../src/xz/xz.1
#, no-wrap
msgid "3"
msgstr "3"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:770 ../src/xz/xz.1:851 ../src/xz/xz.1:2458
-#: ../src/xz/xz.1:2459 ../src/xz/xz.1:2478
+#: ../src/xz/xz.1
#, no-wrap
msgid "32 MiB"
msgstr "32 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:766 ../src/xz/xz.1:846 ../src/xz/xz.1:847
+#: ../src/xz/xz.1
#, no-wrap
msgid "5 MiB"
msgstr "5 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:766 ../src/xz/xz.1:2454 ../src/xz/xz.1:2479
-#: ../src/xz/xz.1:2844
+#: ../src/xz/xz.1
#, no-wrap
msgid "-4"
msgstr "-4"
#. type: tbl table
-#: ../src/xz/xz.1:766 ../src/xz/xz.1:1759 ../src/xz/xz.1:1761
-#: ../src/xz/xz.1:1762 ../src/xz/xz.1:1764 ../src/xz/xz.1:2844
+#: ../src/xz/xz.1
#, no-wrap
msgid "4"
msgstr "4"
#. type: tbl table
-#: ../src/xz/xz.1:766 ../src/xz/xz.1:846 ../src/xz/xz.1:847 ../src/xz/xz.1:2479
+#: ../src/xz/xz.1
#, no-wrap
msgid "48 MiB"
msgstr "48 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:2455 ../src/xz/xz.1:2480
-#: ../src/xz/xz.1:2845
+#: ../src/xz/xz.1
#, no-wrap
msgid "-5"
msgstr "-5"
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:768 ../src/xz/xz.1:848 ../src/xz/xz.1:849
-#: ../src/xz/xz.1:2455 ../src/xz/xz.1:2456 ../src/xz/xz.1:2457
+#: ../src/xz/xz.1
#, no-wrap
msgid "8 MiB"
msgstr "8 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:2845
+#: ../src/xz/xz.1
#, no-wrap
msgid "5"
msgstr "5"
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:768 ../src/xz/xz.1:848 ../src/xz/xz.1:849
-#: ../src/xz/xz.1:2480 ../src/xz/xz.1:2481
+#: ../src/xz/xz.1
#, no-wrap
msgid "94 MiB"
msgstr "94 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:768 ../src/xz/xz.1:2456 ../src/xz/xz.1:2481
-#: ../src/xz/xz.1:2846
+#: ../src/xz/xz.1
#, no-wrap
msgid "-6"
msgstr "-6"
#. type: tbl table
-#: ../src/xz/xz.1:768 ../src/xz/xz.1:769 ../src/xz/xz.1:770 ../src/xz/xz.1:771
-#: ../src/xz/xz.1:2846
+#: ../src/xz/xz.1
#, no-wrap
msgid "6"
msgstr "6"
#. type: tbl table
-#: ../src/xz/xz.1:769 ../src/xz/xz.1:2457 ../src/xz/xz.1:2482
+#: ../src/xz/xz.1
#, no-wrap
msgid "-7"
msgstr "-7"
#. type: tbl table
-#: ../src/xz/xz.1:769 ../src/xz/xz.1:850 ../src/xz/xz.1:2457
-#: ../src/xz/xz.1:2458 ../src/xz/xz.1:2479
+#: ../src/xz/xz.1
#, no-wrap
msgid "16 MiB"
msgstr "16 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:769 ../src/xz/xz.1:850 ../src/xz/xz.1:2482
+#: ../src/xz/xz.1
#, no-wrap
msgid "186 MiB"
msgstr "186 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:770 ../src/xz/xz.1:2458 ../src/xz/xz.1:2483
+#: ../src/xz/xz.1
#, no-wrap
msgid "-8"
msgstr "-8"
#. type: tbl table
-#: ../src/xz/xz.1:770 ../src/xz/xz.1:851 ../src/xz/xz.1:2483
+#: ../src/xz/xz.1
#, no-wrap
msgid "370 MiB"
msgstr "370 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:770 ../src/xz/xz.1:851
+#: ../src/xz/xz.1
#, no-wrap
msgid "33 MiB"
msgstr "33 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:2459 ../src/xz/xz.1:2484
+#: ../src/xz/xz.1
#, no-wrap
msgid "-9"
msgstr "-9"
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:852 ../src/xz/xz.1:2459
+#: ../src/xz/xz.1
#, no-wrap
msgid "64 MiB"
msgstr "64 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:852 ../src/xz/xz.1:2484
+#: ../src/xz/xz.1
#, no-wrap
msgid "674 MiB"
msgstr "674 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:852
+#: ../src/xz/xz.1
#, no-wrap
msgid "65 MiB"
msgstr "65 MiB"
#. type: Plain text
-#: ../src/xz/xz.1:777
+#: ../src/xz/xz.1
msgid "Column descriptions:"
msgstr "Descrições das colunas:"
#. type: Plain text
-#: ../src/xz/xz.1:789
-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 ""
-"DicTam é o tamanho do dicionário LZMA2. É desperdício de memória usar um "
-"dicionário maior que o tamanho do arquivo descompactado. É por isso que é "
-"bom evitar usar as predefinições B<-7> ... B<-9> quando não há real "
-"necessidade deles. Em B<-6> e inferior, a quantidade de memória desperdiçada "
-"geralmente é baixa o suficiente para não importar."
+#: ../src/xz/xz.1
+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 "DicTam é o tamanho do dicionário LZMA2. É desperdício de memória usar um dicionário maior que o tamanho do arquivo descompactado. É por isso que é bom evitar usar as predefinições B<-7> ... B<-9> quando não há real necessidade deles. Em B<-6> e inferior, a quantidade de memória desperdiçada geralmente é baixa o suficiente para não importar."
#. type: Plain text
-#: ../src/xz/xz.1:798
-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 ""
-"CompCPU é uma representação simplificada das configurações LZMA2 que afetam "
-"a velocidade de compactação. O tamanho do dicionário também afeta a "
-"velocidade, portanto, embora o CompCPU seja o mesmo para os níveis B<-6> ... "
-"B<-9>, níveis mais altos ainda tendem a ser um pouco mais lentos. Para obter "
-"uma compactação ainda mais lenta e possivelmente melhor, consulte B<--"
-"extreme>."
+#: ../src/xz/xz.1
+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 "CompCPU é uma representação simplificada das configurações LZMA2 que afetam a velocidade de compactação. O tamanho do dicionário também afeta a velocidade, portanto, embora o CompCPU seja o mesmo para os níveis B<-6> ... B<-9>, níveis mais altos ainda tendem a ser um pouco mais lentos. Para obter uma compactação ainda mais lenta e possivelmente melhor, consulte B<--extreme>."
#. type: Plain text
-#: ../src/xz/xz.1:806
-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."
+#: ../src/xz/xz.1
+msgid "CompMem contains the compressor memory requirements in the single-threaded mode. It may vary slightly between B<xz> versions."
msgstr ""
-"CompMem contém os requisitos de memória do compactador no modo de thread "
-"única.Pode variar ligeiramente entre as versões B<xz>. Os requisitos de "
-"memória de alguns dos futuros modos de várias threads (multithread) podem "
-"ser dramaticamente maiores do que os do modo de thread única."
#. type: Plain text
-#: ../src/xz/xz.1:813
-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."
+#: ../src/xz/xz.1
+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 "DecMem contém os requisitos de memória do descompactador. Ou seja, as configurações de compactação determinam os requisitos de memória do descompactador. O uso exato da memória do descompactador é um pouco maior do que o tamanho do dicionário LZMA2, mas os valores na tabela foram arredondados para o próximo MiB completo."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Memory requirements of the multi-threaded mode are significantly higher than that of the single-threaded mode. With the default value of B<--block-size>, each thread needs 3*3*DictSize plus CompMem or DecMem. For example, four threads with preset B<-6> needs 660\\(en670\\ MiB of memory."
msgstr ""
-"DecMem contém os requisitos de memória do descompactador. Ou seja, as "
-"configurações de compactação determinam os requisitos de memória do "
-"descompactador. O uso exato da memória do descompactador é um pouco maior do "
-"que o tamanho do dicionário LZMA2, mas os valores na tabela foram "
-"arredondados para o próximo MiB completo."
#. type: TP
-#: ../src/xz/xz.1:814
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-e>, B<--extreme>"
msgstr "B<-e>, B<--extreme>"
#. type: Plain text
-#: ../src/xz/xz.1:823
-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 ""
-"Usa uma variante mais lenta do nível de predefinição de compactação "
-"selecionado (B<-0> ... B<-9>) para obter uma taxa de compactação um pouco "
-"melhor, mas, com azar, isso também pode piorar. O uso da memória do "
-"descompressor não é afetado, mas o uso da memória do compactador aumenta um "
-"pouco nos níveis de predefinição B<-0> ... B<-3>."
+#: ../src/xz/xz.1
+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 "Usa uma variante mais lenta do nível de predefinição de compactação selecionado (B<-0> ... B<-9>) para obter uma taxa de compactação um pouco melhor, mas, com azar, isso também pode piorar. O uso da memória do descompressor não é afetado, mas o uso da memória do compactador aumenta um pouco nos níveis de predefinição B<-0> ... B<-3>."
#. type: Plain text
-#: ../src/xz/xz.1:835
-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 ""
-"Como existem duas predefinições com tamanhos de dicionário 4\\ MiB e 8\\ "
-"MiB, as predefinições B<-3e> e B<-5e> usam configurações um pouco mais "
-"rápidas (CompCPU inferior) do que B<-4e> e B<-6e>, respectivamente. Dessa "
-"forma, não há duas predefinições idênticas."
+#: ../src/xz/xz.1
+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 "Como existem duas predefinições com tamanhos de dicionário 4\\ MiB e 8\\ MiB, as predefinições B<-3e> e B<-5e> usam configurações um pouco mais rápidas (CompCPU inferior) do que B<-4e> e B<-6e>, respectivamente. Dessa forma, não há duas predefinições idênticas."
#. type: tbl table
-#: ../src/xz/xz.1:843
+#: ../src/xz/xz.1
#, no-wrap
msgid "-0e"
msgstr "-0e"
#. type: tbl table
-#: ../src/xz/xz.1:843 ../src/xz/xz.1:844 ../src/xz/xz.1:845 ../src/xz/xz.1:847
-#: ../src/xz/xz.1:849 ../src/xz/xz.1:850 ../src/xz/xz.1:851 ../src/xz/xz.1:852
-#: ../src/xz/xz.1:2848
+#: ../src/xz/xz.1
#, no-wrap
msgid "8"
msgstr "8"
#. type: tbl table
-#: ../src/xz/xz.1:844
+#: ../src/xz/xz.1
#, no-wrap
msgid "-1e"
msgstr "-1e"
#. type: tbl table
-#: ../src/xz/xz.1:844
+#: ../src/xz/xz.1
#, no-wrap
msgid "13 MiB"
msgstr "13 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:845
+#: ../src/xz/xz.1
#, no-wrap
msgid "-2e"
msgstr "-2e"
#. type: tbl table
-#: ../src/xz/xz.1:845
+#: ../src/xz/xz.1
#, no-wrap
msgid "25 MiB"
msgstr "25 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:846
+#: ../src/xz/xz.1
#, no-wrap
msgid "-3e"
msgstr "-3e"
#. type: tbl table
-#: ../src/xz/xz.1:846 ../src/xz/xz.1:848 ../src/xz/xz.1:2847
+#: ../src/xz/xz.1
#, no-wrap
msgid "7"
msgstr "7"
#. type: tbl table
-#: ../src/xz/xz.1:847
+#: ../src/xz/xz.1
#, no-wrap
msgid "-4e"
msgstr "-4e"
#. type: tbl table
-#: ../src/xz/xz.1:848 ../src/xz/xz.1:2847
+#: ../src/xz/xz.1
#, no-wrap
msgid "-5e"
msgstr "-5e"
#. type: tbl table
-#: ../src/xz/xz.1:849 ../src/xz/xz.1:2848
+#: ../src/xz/xz.1
#, no-wrap
msgid "-6e"
msgstr "-6e"
#. type: tbl table
-#: ../src/xz/xz.1:850
+#: ../src/xz/xz.1
#, no-wrap
msgid "-7e"
msgstr "-7e"
#. type: tbl table
-#: ../src/xz/xz.1:851
+#: ../src/xz/xz.1
#, no-wrap
msgid "-8e"
msgstr "-8e"
#. type: tbl table
-#: ../src/xz/xz.1:852
+#: ../src/xz/xz.1
#, no-wrap
msgid "-9e"
msgstr "-9e"
#. type: Plain text
-#: ../src/xz/xz.1:864
-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 ""
-"Por exemplo, há um total de quatro predefinições que usam o dicionário 8\\ "
-"MiB, cuja ordem do mais rápido ao mais lento é B<-5>, B<-6>, B<-5e> e B<-6e>."
+#: ../src/xz/xz.1
+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 "Por exemplo, há um total de quatro predefinições que usam o dicionário 8\\ MiB, cuja ordem do mais rápido ao mais lento é B<-5>, B<-6>, B<-5e> e B<-6e>."
#. type: TP
-#: ../src/xz/xz.1:864
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--fast>"
msgstr "B<--fast>"
#. type: TP
-#: ../src/xz/xz.1:867
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--best>"
msgstr "B<--best>"
#. type: Plain text
-#: ../src/xz/xz.1:878
-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 ""
-"Esses são apelidos um tanto enganosos para B<-0> e B<-9>, respectivamente. "
-"Eles são fornecidos apenas para compatibilidade com versões anteriores do "
-"LZMA Utils. Evite usar essas opções."
+#: ../src/xz/xz.1
+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 "Esses são apelidos um tanto enganosos para B<-0> e B<-9>, respectivamente. Eles são fornecidos apenas para compatibilidade com versões anteriores do LZMA Utils. Evite usar essas opções."
#. type: TP
-#: ../src/xz/xz.1:878
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--block-size=>I<size>"
msgstr "B<--block-size=>I<tamanho>"
#. type: Plain text
-#: ../src/xz/xz.1:891
-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 ""
-"Ao compactar para o formato B<.xz>, divida os dados de entrada em blocos de "
-"I<tamanho> bytes. Os blocos são compactados independentemente uns dos "
-"outros, o que ajuda no multi-threading e torna possível a descompactação "
-"limitada de acesso aleatório. Essa opção normalmente é usada para substituir "
-"o tamanho de bloco padrão no modo multi-thread, mas também pode ser usada em "
-"thread única."
+#: ../src/xz/xz.1
+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 "Ao compactar para o formato B<.xz>, divida os dados de entrada em blocos de I<tamanho> bytes. Os blocos são compactados independentemente uns dos outros, o que ajuda no multi-threading e torna possível a descompactação limitada de acesso aleatório. Essa opção normalmente é usada para substituir o tamanho de bloco padrão no modo multi-thread, mas também pode ser usada em thread única."
#. type: Plain text
-#: ../src/xz/xz.1:909
-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\\(en4 times the size of the LZMA2 dictionary or at least 1 "
-"MiB. Using I<size> less than the LZMA2 dictionary size is waste of RAM "
-"because then the LZMA2 dictionary buffer will never get fully used. The "
-"sizes of the blocks are stored in the block headers, which a future version "
-"of B<xz> will use for multi-threaded decompression."
+#: ../src/xz/xz.1
+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\\(en4 times the size of the LZMA2 dictionary or at least 1 MiB. Using I<size> less than the LZMA2 dictionary size is waste of RAM because then the LZMA2 dictionary buffer will never get fully used. In multi-threaded mode, the sizes of the blocks are stored in the block headers. This size information is required for multi-threaded decompression."
msgstr ""
-"No modo multi-thread, cerca de três vezes I<tamanho> bytes serão alocados em "
-"cada thread para armazenar em buffer a entrada e a saída. O I<tamanho> "
-"padrão é três vezes o tamanho do dicionário LZMA2 ou 1 MiB, o que for maior. "
-"Normalmente, um bom valor é 2\\(en4 vezes o tamanho do dicionário LZMA2 ou "
-"pelo menos 1 MiB. Usar I<tamanho> menor que o tamanho do dicionário LZMA2 é "
-"um desperdício de RAM porque o buffer do dicionário LZMA2 nunca será "
-"totalmente usado. Os tamanhos dos blocos são armazenados nos cabeçalhos dos "
-"blocos, que uma versão futura do B<xz> usará para descompactação em multi-"
-"thread."
-
-#. type: Plain text
-#: ../src/xz/xz.1:918
-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."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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 B<xz> won't be able decompress the files in multi-threaded mode."
msgstr ""
-"No modo de thread única, nenhuma divisão de bloco é feita por padrão. "
-"Definir essa opção não afeta o uso da memória. Nenhuma informação de tamanho "
-"é armazenada nos cabeçalhos dos blocos, portanto, os arquivos criados no "
-"modo de thread única não serão idênticos aos arquivos criados no modo multi-"
-"thread. A falta de informações de tamanho também significa que uma versão "
-"futura do B<xz> não poderá descompactar os arquivos no modo multi-thread."
#. type: TP
-#: ../src/xz/xz.1:918
-#, no-wrap
-msgid "B<--block-list=>I<sizes>"
-msgstr "B<--block-list=>I<tamanhos>"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "B<--block-size=>I<size>"
+msgid "B<--block-list=>I<items>"
+msgstr "B<--block-size=>I<tamanho>"
#. type: Plain text
-#: ../src/xz/xz.1:924
-msgid ""
-"When compressing to the B<.xz> format, start a new block after the given "
-"intervals of uncompressed data."
+#: ../src/xz/xz.1
+msgid "When compressing to the B<.xz> format, start a new block with an optional custom filter chain after the given intervals of uncompressed data."
msgstr ""
-"Ao compactar para o formato B<.xz>, inicia um novo bloco após os intervalos "
-"fornecidos de dados não compactados."
#. type: Plain text
-#: ../src/xz/xz.1:930
-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."
+#: ../src/xz/xz.1
+msgid "The I<items> are a comma-separated list. Each item consists of an optional filter chain number between 0 and 9 followed by a colon (B<:>) and a required size of uncompressed data. Omitting an item (two or more consecutive commas) is a shorthand to use the size and filters of the previous item."
msgstr ""
-"Os I<tamanhos> não compactados dos blocos são especificados como uma lista "
-"separada por vírgulas. Omitir um tamanho (duas ou mais vírgulas "
-"consecutivas) é uma forma abreviada de usar o tamanho do bloco anterior."
#. type: Plain text
-#: ../src/xz/xz.1:940
-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."
+#: ../src/xz/xz.1
+msgid "If the input file is bigger than the sum of the sizes in I<items>, the last item is repeated until the end of the file. A special value of B<0> may be used as the last size to indicate that the rest of the file should be encoded as a single block."
msgstr ""
-"Se o arquivo de entrada for maior que a soma de I<tamanhos>, o último valor "
-"em I<tamanhos> é repetido até o final do arquivo. Um valor especial de B<0> "
-"pode ser usado como o último valor para indicar que o restante do arquivo "
-"deve ser codificado como um único bloco."
#. type: Plain text
-#: ../src/xz/xz.1:955
-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."
+#: ../src/xz/xz.1
+msgid "An alternative filter chain for each block can be specified in combination with the B<--filters1=>I<filters> \\&...\\& B<--filters9=>I<filters> options. These options define filter chains with an identifier between 1\\(en9. Filter chain 0 can be used to refer to the default filter chain, which is the same as not specifying a filter chain. The filter chain identifier can be used before the uncompressed size, followed by a colon (B<:>). For example, if one specifies B<--block-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB> then blocks will be created using:"
msgstr ""
-"Se alguém especificar I<tamanhos> que excedam o tamanho do bloco do "
-"codificador (seja o valor padrão no modo em threads ou o valor especificado "
-"com B<--block-size=>I<tamanho>), o codificador criará blocos adicionais "
-"enquanto mantém o limites especificados em I<tamanhos>. Por exemplo, se "
-"alguém especificar B<--block-size=10MiB> B<--block-"
-"list=5MiB,10MiB,8MiB,12MiB,24MiB> e o arquivo de entrada for 80 MiB, obterá "
-"11 blocos: 5, 10, 8, 10, 2, 10, 10, 4, 10, 10 e 1 MiB."
#. type: Plain text
-#: ../src/xz/xz.1:961
-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."
+#: ../src/xz/xz.1
+msgid "The filter chain specified by B<--filters1> and 2 MiB input"
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The filter chain specified by B<--filters3> and 2 MiB input"
msgstr ""
-"No modo multi-thread, os tamanhos dos blocos são armazenados nos cabeçalhos "
-"dos blocos. Isso não é feito no modo de thread única, portanto, a saída "
-"codificada não será idêntica à do modo multi-thread."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The filter chain specified by B<--filters2> and 4 MiB input"
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The default filter chain and 2 MiB input"
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The default filter chain and 4 MiB input for every block until end of input."
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "If one specifies a size that exceeds 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<items>. 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 ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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 "No modo multi-thread, os tamanhos dos blocos são armazenados nos cabeçalhos dos blocos. Isso não é feito no modo de thread única, portanto, a saída codificada não será idêntica à do modo multi-thread."
#. type: TP
-#: ../src/xz/xz.1:961
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--flush-timeout=>I<timeout>"
msgstr "B<--flush-timeout=>I<tempo_limite>"
#. type: Plain text
-#: ../src/xz/xz.1:978
-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 ""
-"Ao compactar, se mais de I<tempo_limite> milissegundos (um número inteiro "
-"positivo) se passaram desde a liberação anterior e a leitura de mais entrada "
-"seria bloqueada, todos os dados de entrada pendentes serão liberados do "
-"codificador e disponibilizados no fluxo de saída. Isso pode ser útil se "
-"B<xz> for usado para compactar dados transmitidos por uma rede. Valores "
-"I<tempo_limite> pequenos tornam os dados disponíveis na extremidade "
-"receptora com um pequeno atraso, mas valores I<tempo_limite> grandes "
-"oferecem melhor taxa de compactação."
+#: ../src/xz/xz.1
+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 "Ao compactar, se mais de I<tempo_limite> milissegundos (um número inteiro positivo) se passaram desde a liberação anterior e a leitura de mais entrada seria bloqueada, todos os dados de entrada pendentes serão liberados do codificador e disponibilizados no fluxo de saída. Isso pode ser útil se B<xz> for usado para compactar dados transmitidos por uma rede. Valores I<tempo_limite> pequenos tornam os dados disponíveis na extremidade receptora com um pequeno atraso, mas valores I<tempo_limite> grandes oferecem melhor taxa de compactação."
#. type: Plain text
-#: ../src/xz/xz.1:986
-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 ""
-"Esse recurso está desabilitado por padrão. Se esta opção for especificada "
-"mais de uma vez, a última terá efeito. O valor especial I<tempo_limite> de "
-"B<0> pode ser usado para desabilitar explicitamente esse recurso."
+#: ../src/xz/xz.1
+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 "Esse recurso está desabilitado por padrão. Se esta opção for especificada mais de uma vez, a última terá efeito. O valor especial I<tempo_limite> de B<0> pode ser usado para desabilitar explicitamente esse recurso."
#. type: Plain text
-#: ../src/xz/xz.1:988
+#: ../src/xz/xz.1
msgid "This feature is not available on non-POSIX systems."
msgstr "Este recurso não está disponível em sistemas não-POSIX."
#. FIXME
#. type: Plain text
-#: ../src/xz/xz.1:996
-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<Este recurso ainda é experimental.> Atualmente, B<xz> não é adequado para "
-"descompactar o fluxo em tempo real devido à forma como B<xz> faz o buffer."
+#: ../src/xz/xz.1
+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<Este recurso ainda é experimental.> Atualmente, B<xz> não é adequado para descompactar o fluxo em tempo real devido à forma como B<xz> faz o buffer."
#. type: TP
-#: ../src/xz/xz.1:996
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--memlimit-compress=>I<limit>"
msgstr "B<--memlimit-compress=>I<limite>"
#. type: Plain text
-#: ../src/xz/xz.1:1001
-msgid ""
-"Set a memory usage limit for compression. If this option is specified "
-"multiple times, the last one takes effect."
-msgstr ""
-"Define um limite de uso de memória para compactação. Se esta opção for "
-"especificada várias vezes, a última entrará em vigor."
+#: ../src/xz/xz.1
+msgid "Set a memory usage limit for compression. If this option is specified multiple times, the last one takes effect."
+msgstr "Define um limite de uso de memória para compactação. Se esta opção for especificada várias vezes, a última entrará em vigor."
#. type: Plain text
-#: ../src/xz/xz.1:1014
-msgid ""
-"If the compression settings exceed the I<limit>, B<xz> will attempt to "
-"adjust the settings downwards so that the limit is no longer exceeded and "
-"display a notice that automatic adjustment was done. The adjustments are "
-"done in this order: reducing the number of threads, switching to single-"
-"threaded mode if even one thread in multi-threaded mode exceeds the "
-"I<limit>, and finally reducing the LZMA2 dictionary size."
-msgstr ""
-"Se as configurações de compactação excederem o I<limite>, B<xz> tentará "
-"ajustar as configurações para baixo para que o limite não seja mais excedido "
-"e exibirá um aviso de que o ajuste automático foi feito. Os ajustes são "
-"feitos nesta ordem: reduzindo o número de encadeamentos, alternando para o "
-"modo sigle-thread se até mesmo uma thread no modo multi-thread exceder o "
-"I<limite> e, finalmente, reduzindo o tamanho do dicionário LZMA2."
+#: ../src/xz/xz.1
+msgid "If the compression settings exceed the I<limit>, B<xz> will attempt to adjust the settings downwards so that the limit is no longer exceeded and display a notice that automatic adjustment was done. The adjustments are done in this order: reducing the number of threads, switching to single-threaded mode if even one thread in multi-threaded mode exceeds the I<limit>, and finally reducing the LZMA2 dictionary size."
+msgstr "Se as configurações de compactação excederem o I<limite>, B<xz> tentará ajustar as configurações para baixo para que o limite não seja mais excedido e exibirá um aviso de que o ajuste automático foi feito. Os ajustes são feitos nesta ordem: reduzindo o número de encadeamentos, alternando para o modo sigle-thread se até mesmo uma thread no modo multi-thread exceder o I<limite> e, finalmente, reduzindo o tamanho do dicionário LZMA2."
#. type: Plain text
-#: ../src/xz/xz.1:1022
-msgid ""
-"When compressing with B<--format=raw> or if B<--no-adjust> has been "
-"specified, only the number of threads may be reduced since it can be done "
-"without affecting the compressed output."
-msgstr ""
-"Ao compactar com B<--format=raw> ou se B<--no-adjust> tiver sido "
-"especificado, apenas o número de threads pode ser reduzido, pois isso pode "
-"ser feito sem afetar a saída compactada."
+#: ../src/xz/xz.1
+msgid "When compressing with B<--format=raw> or if B<--no-adjust> has been specified, only the number of threads may be reduced since it can be done without affecting the compressed output."
+msgstr "Ao compactar com B<--format=raw> ou se B<--no-adjust> tiver sido especificado, apenas o número de threads pode ser reduzido, pois isso pode ser feito sem afetar a saída compactada."
#. type: Plain text
-#: ../src/xz/xz.1:1029
-msgid ""
-"If the I<limit> cannot be met even with the adjustments described above, an "
-"error is displayed and B<xz> will exit with exit status 1."
-msgstr ""
-"Se o I<limite> não puder ser alcançado mesmo com os ajustes descritos acima, "
-"um erro será exibido e B<xz> sairá com status de saída 1."
+#: ../src/xz/xz.1
+msgid "If the I<limit> cannot be met even with the adjustments described above, an error is displayed and B<xz> will exit with exit status 1."
+msgstr "Se o I<limite> não puder ser alcançado mesmo com os ajustes descritos acima, um erro será exibido e B<xz> sairá com status de saída 1."
#. type: Plain text
-#: ../src/xz/xz.1:1033
+#: ../src/xz/xz.1
msgid "The I<limit> can be specified in multiple ways:"
msgstr "O I<limite> pode ser especificado de várias maneiras:"
#. type: Plain text
-#: ../src/xz/xz.1:1043
-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 ""
-"O I<limite> pode ser um valor absoluto em bytes. Usar um sufixo inteiro como "
-"B<MiB> pode ser útil. Exemplo: B<--memlimit-compress=80MiB>"
+#: ../src/xz/xz.1
+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 "O I<limite> pode ser um valor absoluto em bytes. Usar um sufixo inteiro como B<MiB> pode ser útil. Exemplo: B<--memlimit-compress=80MiB>"
#. type: Plain text
-#: ../src/xz/xz.1:1055
-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 ""
-"O I<limite> pode ser especificado como uma porcentagem da memória física "
-"total (RAM). Isso pode ser útil especialmente ao definir a variável de "
-"ambiente B<XZ_DEFAULTS> em um script de inicialização de shell que é "
-"compartilhado entre diferentes computadores. Dessa forma o limite é "
-"automaticamente maior em sistemas com mais memória. Exemplo: B<--memlimit-"
-"compress=70%>"
+#: ../src/xz/xz.1
+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 "O I<limite> pode ser especificado como uma porcentagem da memória física total (RAM). Isso pode ser útil especialmente ao definir a variável de ambiente B<XZ_DEFAULTS> em um script de inicialização de shell que é compartilhado entre diferentes computadores. Dessa forma o limite é automaticamente maior em sistemas com mais memória. Exemplo: B<--memlimit-compress=70%>"
#. type: Plain text
-#: ../src/xz/xz.1:1065
-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)."
-msgstr ""
-"O I<limite> pode ser redefinido para seu valor padrão, definindo-o como "
-"B<0>. Atualmente, isso equivale a definir I<limite> como B<max> (sem limite "
-"de uso de memória)."
+#: ../src/xz/xz.1
+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)."
+msgstr "O I<limite> pode ser redefinido para seu valor padrão, definindo-o como B<0>. Atualmente, isso equivale a definir I<limite> como B<max> (sem limite de uso de memória)."
#. type: Plain text
-#: ../src/xz/xz.1:1089
-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>. On MIPS32 B<2000\\ "
-"MiB> is used instead. (The values B<0> and B<max> aren't affected by this. "
-"A similar feature doesn't exist for decompression.) This can be helpful "
-"when a 32-bit executable has access to 4\\ GiB address space (2 GiB on "
-"MIPS32) while hopefully doing no harm in other situations."
-msgstr ""
-"Para B<xz> de 32 bits, há um caso especial: se o I<limite> estiver acima de "
-"B<4020\\ MiB>, o I<limite> é definido como B<4020\\ MiB>. No MIPS32 B<2000\\ "
-"MiB> é usado em seu lugar. (Os valores B<0> e B<max> não são afetados por "
-"isso. Um recurso semelhante não existe para descompactação.) Isso pode ser "
-"útil quando um executável de 32 bits tem acesso a espaço de endereço de 4\\ "
-"GiB (2 GiB no MIPS32) enquanto espero não causar danos em outras situações."
+#: ../src/xz/xz.1
+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>. On MIPS32 B<2000\\ MiB> is used instead. (The values B<0> and B<max> aren't affected by this. A similar feature doesn't exist for decompression.) This can be helpful when a 32-bit executable has access to 4\\ GiB address space (2 GiB on MIPS32) while hopefully doing no harm in other situations."
+msgstr "Para B<xz> de 32 bits, há um caso especial: se o I<limite> estiver acima de B<4020\\ MiB>, o I<limite> é definido como B<4020\\ MiB>. No MIPS32 B<2000\\ MiB> é usado em seu lugar. (Os valores B<0> e B<max> não são afetados por isso. Um recurso semelhante não existe para descompactação.) Isso pode ser útil quando um executável de 32 bits tem acesso a espaço de endereço de 4\\ GiB (2 GiB no MIPS32) enquanto espero não causar danos em outras situações."
#. type: Plain text
-#: ../src/xz/xz.1:1092
+#: ../src/xz/xz.1
msgid "See also the section B<Memory usage>."
msgstr "Consulte também a seção B<Uso de memória>."
#. type: TP
-#: ../src/xz/xz.1:1092
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--memlimit-decompress=>I<limit>"
msgstr "B<--memlimit-decompress=>I<limite>"
#. type: Plain text
-#: ../src/xz/xz.1:1106
-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 ""
-"Define um limite de uso de memória para descompactação. Isso também afeta o "
-"modo B<--list>. Se a operação não for possível sem exceder o I<limite>, "
-"B<xz> exibirá um erro e a descompactação do arquivo falhará. Consulte B<--"
-"memlimit-compress=>I<limite> para possíveis maneiras de especificar o "
-"I<limite>."
+#: ../src/xz/xz.1
+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 "Define um limite de uso de memória para descompactação. Isso também afeta o modo B<--list>. Se a operação não for possível sem exceder o I<limite>, B<xz> exibirá um erro e a descompactação do arquivo falhará. Consulte B<--memlimit-compress=>I<limite> para possíveis maneiras de especificar o I<limite>."
#. type: TP
-#: ../src/xz/xz.1:1106
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--memlimit-mt-decompress=>I<limit>"
msgstr "B<--memlimit-mt-decompress=>I<limite>"
#. type: Plain text
-#: ../src/xz/xz.1:1128
-msgid ""
-"Set a memory usage limit for multi-threaded decompression. This can only "
-"affect the number of threads; this will never make B<xz> refuse to "
-"decompress a file. If I<limit> is too low to allow any multi-threading, the "
-"I<limit> is ignored and B<xz> will continue in single-threaded mode. Note "
-"that if also B<--memlimit-decompress> is used, it will always apply to both "
-"single-threaded and multi-threaded modes, and so the effective I<limit> for "
-"multi-threading will never be higher than the limit set with B<--memlimit-"
-"decompress>."
-msgstr ""
-"Define um limite de uso de memória para descompactação multi-thread. Isso "
-"pode afetar apenas o número de threads; isso nunca fará com que B<xz> se "
-"recuse a descompactar um arquivo. Se I<limite> for muito baixo para permitir "
-"qualquer multi-thread, o I<limite> será ignorado e B<xz> continuará no modo "
-"de thread única. Observe que se B<--memlimit-decompress> também for usado, "
-"ele sempre se aplicará aos modos de thread única e multi-thread e, portanto, "
-"o I<limite> efetivo para multi-threading nunca será maior que o limite "
-"definido com B<--memlimit-decompress>."
+#: ../src/xz/xz.1
+msgid "Set a memory usage limit for multi-threaded decompression. This can only affect the number of threads; this will never make B<xz> refuse to decompress a file. If I<limit> is too low to allow any multi-threading, the I<limit> is ignored and B<xz> will continue in single-threaded mode. Note that if also B<--memlimit-decompress> is used, it will always apply to both single-threaded and multi-threaded modes, and so the effective I<limit> for multi-threading will never be higher than the limit set with B<--memlimit-decompress>."
+msgstr "Define um limite de uso de memória para descompactação multi-thread. Isso pode afetar apenas o número de threads; isso nunca fará com que B<xz> se recuse a descompactar um arquivo. Se I<limite> for muito baixo para permitir qualquer multi-thread, o I<limite> será ignorado e B<xz> continuará no modo de thread única. Observe que se B<--memlimit-decompress> também for usado, ele sempre se aplicará aos modos de thread única e multi-thread e, portanto, o I<limite> efetivo para multi-threading nunca será maior que o limite definido com B<--memlimit-decompress>."
#. type: Plain text
-#: ../src/xz/xz.1:1135
-msgid ""
-"In contrast to the other memory usage limit options, B<--memlimit-mt-"
-"decompress=>I<limit> has a system-specific default I<limit>. B<xz --info-"
-"memory> can be used to see the current value."
-msgstr ""
-"Em contraste com as outras opções de limite de uso de memória, B<--memlimit-"
-"mt-decompress=>I<limite> tem um padrão I<limite> específico do sistema. B<xz "
-"--info-memory> pode ser usado para ver o valor atual."
+#: ../src/xz/xz.1
+msgid "In contrast to the other memory usage limit options, B<--memlimit-mt-decompress=>I<limit> has a system-specific default I<limit>. B<xz --info-memory> can be used to see the current value."
+msgstr "Em contraste com as outras opções de limite de uso de memória, B<--memlimit-mt-decompress=>I<limite> tem um padrão I<limite> específico do sistema. B<xz --info-memory> pode ser usado para ver o valor atual."
#. type: Plain text
-#: ../src/xz/xz.1:1151
-msgid ""
-"This option and its default value exist because without any limit the "
-"threaded decompressor could end up allocating an insane amount of memory "
-"with some input files. If the default I<limit> is too low on your system, "
-"feel free to increase the I<limit> but never set it to a value larger than "
-"the amount of usable RAM as with appropriate input files B<xz> will attempt "
-"to use that amount of memory even with a low number of threads. Running out "
-"of memory or swapping will not improve decompression performance."
-msgstr ""
-"Esta opção e seu valor padrão existem porque, sem qualquer limite, o "
-"descompactador usando threads pode acabar alocando uma quantidade insana de "
-"memória com alguns arquivos de entrada. Se o I<limite> padrão for muito "
-"baixo em seu sistema, sinta-se à vontade para aumentar o I<limite>, mas "
-"nunca defina-o para um valor maior que a quantidade de RAM utilizável, pois "
-"com os arquivos de entrada apropriados B<xz> tentará usar essa quantidade de "
-"memória mesmo com um baixo número de threads. Ficar sem memória ou trocar "
-"não melhorará o desempenho da descompactação."
+#: ../src/xz/xz.1
+msgid "This option and its default value exist because without any limit the threaded decompressor could end up allocating an insane amount of memory with some input files. If the default I<limit> is too low on your system, feel free to increase the I<limit> but never set it to a value larger than the amount of usable RAM as with appropriate input files B<xz> will attempt to use that amount of memory even with a low number of threads. Running out of memory or swapping will not improve decompression performance."
+msgstr "Esta opção e seu valor padrão existem porque, sem qualquer limite, o descompactador usando threads pode acabar alocando uma quantidade insana de memória com alguns arquivos de entrada. Se o I<limite> padrão for muito baixo em seu sistema, sinta-se à vontade para aumentar o I<limite>, mas nunca defina-o para um valor maior que a quantidade de RAM utilizável, pois com os arquivos de entrada apropriados B<xz> tentará usar essa quantidade de memória mesmo com um baixo número de threads. Ficar sem memória ou trocar não melhorará o desempenho da descompactação."
#. type: Plain text
-#: ../src/xz/xz.1:1163
-msgid ""
-"See B<--memlimit-compress=>I<limit> for possible ways to specify the "
-"I<limit>. Setting I<limit> to B<0> resets the I<limit> to the default "
-"system-specific value."
-msgstr ""
-"Consulte B<--memlimit-compress=>I<limite> para possíveis maneiras de "
-"especificar o I<limite>. Definir I<limite> como B<0> redefine I<limite> para "
-"o valor padrão específico do sistema."
+#: ../src/xz/xz.1
+msgid "See B<--memlimit-compress=>I<limit> for possible ways to specify the I<limit>. Setting I<limit> to B<0> resets the I<limit> to the default system-specific value."
+msgstr "Consulte B<--memlimit-compress=>I<limite> para possíveis maneiras de especificar o I<limite>. Definir I<limite> como B<0> redefine I<limite> para o valor padrão específico do sistema."
#. type: TP
-#: ../src/xz/xz.1:1163
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-M> I<limit>, B<--memlimit=>I<limit>, B<--memory=>I<limit>"
msgstr "B<-M> I<limite>, B<--memlimit=>I<limite>, B<--memory=>I<limite>"
#. type: Plain text
-#: ../src/xz/xz.1:1169
-msgid ""
-"This is equivalent to specifying B<--memlimit-compress=>I<limit> B<--"
-"memlimit-decompress=>I<limit> B<--memlimit-mt-decompress=>I<limit>."
-msgstr ""
-"Isso é equivalente a especificar B<--memlimit-compress=>I<limite> B<--"
-"memlimit-decompress=>I<limite> B<--memlimit-mt-decompress=>I<limite>."
+#: ../src/xz/xz.1
+msgid "This is equivalent to specifying B<--memlimit-compress=>I<limit> B<--memlimit-decompress=>I<limit> B<--memlimit-mt-decompress=>I<limit>."
+msgstr "Isso é equivalente a especificar B<--memlimit-compress=>I<limite> B<--memlimit-decompress=>I<limite> B<--memlimit-mt-decompress=>I<limite>."
#. type: TP
-#: ../src/xz/xz.1:1169
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--no-adjust>"
msgstr "B<--no-adjust>"
#. type: Plain text
-#: ../src/xz/xz.1:1179
-msgid ""
-"Display an error and exit if the memory usage limit cannot be met without "
-"adjusting settings that affect the compressed output. That is, this "
-"prevents B<xz> from switching the encoder from multi-threaded mode to single-"
-"threaded mode and from reducing the LZMA2 dictionary size. Even when this "
-"option is used the number of threads may be reduced to meet the memory usage "
-"limit as that won't affect the compressed output."
-msgstr ""
-"Exibe um erro e saia se o limite de uso de memória não puder ser atendido "
-"sem ajustar as configurações que afetam a saída compactada. Ou seja, isso "
-"evita que B<xz> alterne o codificador do modo multi-thread para o modo "
-"encadeado único e reduza o tamanho do dicionário LZMA2. Mesmo quando esta "
-"opção é usada, o número de threads pode ser reduzido para atender ao limite "
-"de uso de memória, pois isso não afetará a saída compactada."
+#: ../src/xz/xz.1
+msgid "Display an error and exit if the memory usage limit cannot be met without adjusting settings that affect the compressed output. That is, this prevents B<xz> from switching the encoder from multi-threaded mode to single-threaded mode and from reducing the LZMA2 dictionary size. Even when this option is used the number of threads may be reduced to meet the memory usage limit as that won't affect the compressed output."
+msgstr "Exibe um erro e saia se o limite de uso de memória não puder ser atendido sem ajustar as configurações que afetam a saída compactada. Ou seja, isso evita que B<xz> alterne o codificador do modo multi-thread para o modo encadeado único e reduza o tamanho do dicionário LZMA2. Mesmo quando esta opção é usada, o número de threads pode ser reduzido para atender ao limite de uso de memória, pois isso não afetará a saída compactada."
#. type: Plain text
-#: ../src/xz/xz.1:1182
-msgid ""
-"Automatic adjusting is always disabled when creating raw streams (B<--"
-"format=raw>)."
-msgstr ""
-"O ajuste automático é sempre desativado ao criar fluxos brutos (B<--"
-"format=raw>)."
+#: ../src/xz/xz.1
+msgid "Automatic adjusting is always disabled when creating raw streams (B<--format=raw>)."
+msgstr "O ajuste automático é sempre desativado ao criar fluxos brutos (B<--format=raw>)."
#. type: TP
-#: ../src/xz/xz.1:1182
+#: ../src/xz/xz.1
#, 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:1197
-msgid ""
-"Specify the number of worker threads to use. Setting I<threads> to a "
-"special value B<0> makes B<xz> use up to as many threads as the processor(s) "
-"on the system support. The actual number of threads can be fewer than "
-"I<threads> if the input file is not big enough for threading with the given "
-"settings or if using more threads would exceed the memory usage limit."
-msgstr ""
-"Especifica o número de threads de trabalho a serem usados. Definir "
-"I<threads> para um valor especial B<0> faz com que B<xz> use tantos threads "
-"quanto o(s) processador(es) no suporte do sistema. O número real de "
-"encadeamentos pode ser menor que I<threads> se o arquivo de entrada não for "
-"grande o suficiente para subdividir em threads com as configurações "
-"fornecidas ou se o uso de mais threads exceder o limite de uso de memória."
+#: ../src/xz/xz.1
+msgid "Specify the number of worker threads to use. Setting I<threads> to a special value B<0> makes B<xz> use up to as many threads as the processor(s) on the system support. The actual number of threads can be fewer than I<threads> if the input file is not big enough for threading with the given settings or if using more threads would exceed the memory usage limit."
+msgstr "Especifica o número de threads de trabalho a serem usados. Definir I<threads> para um valor especial B<0> faz com que B<xz> use tantos threads quanto o(s) processador(es) no suporte do sistema. O número real de encadeamentos pode ser menor que I<threads> se o arquivo de entrada não for grande o suficiente para subdividir em threads com as configurações fornecidas ou se o uso de mais threads exceder o limite de uso de memória."
#. type: Plain text
-#: ../src/xz/xz.1:1216
-msgid ""
-"The single-threaded and multi-threaded compressors produce different "
-"output. Single-threaded compressor will give the smallest file size but "
-"only the output from the multi-threaded compressor can be decompressed using "
-"multiple threads. Setting I<threads> to B<1> will use the single-threaded "
-"mode. Setting I<threads> to any other value, including B<0>, will use the "
-"multi-threaded compressor even if the system supports only one hardware "
-"thread. (B<xz> 5.2.x used single-threaded mode in this situation.)"
-msgstr ""
-"Os compactadores usando thread única e várias threads produzem saídas "
-"diferentes. O compactador de thread única fornecerá o menor tamanho de "
-"arquivo, mas apenas a saída do compactador de várias threads pode ser "
-"descompactada usando várias threads. Definir I<threads> como B<1> usará o "
-"modo de thread única. Definir I<threads> para qualquer outro valor, "
-"incluindo B<0>, usará o compressor de várias threads, mesmo que o sistema "
-"tenha suporte a apenas uma thread de hardware. (B<xz> 5.2.x usou o modo de "
-"thread única nesta situação.)"
+#: ../src/xz/xz.1
+msgid "The single-threaded and multi-threaded compressors produce different output. Single-threaded compressor will give the smallest file size but only the output from the multi-threaded compressor can be decompressed using multiple threads. Setting I<threads> to B<1> will use the single-threaded mode. Setting I<threads> to any other value, including B<0>, will use the multi-threaded compressor even if the system supports only one hardware thread. (B<xz> 5.2.x used single-threaded mode in this situation.)"
+msgstr "Os compactadores usando thread única e várias threads produzem saídas diferentes. O compactador de thread única fornecerá o menor tamanho de arquivo, mas apenas a saída do compactador de várias threads pode ser descompactada usando várias threads. Definir I<threads> como B<1> usará o modo de thread única. Definir I<threads> para qualquer outro valor, incluindo B<0>, usará o compressor de várias threads, mesmo que o sistema tenha suporte a apenas uma thread de hardware. (B<xz> 5.2.x usou o modo de thread única nesta situação.)"
#. type: Plain text
-#: ../src/xz/xz.1:1235
-msgid ""
-"To use multi-threaded mode with only one thread, set I<threads> to B<+1>. "
-"The B<+> prefix has no effect with values other than B<1>. A memory usage "
-"limit can still make B<xz> switch to single-threaded mode unless B<--no-"
-"adjust> is used. Support for the B<+> prefix was added in B<xz> 5.4.0."
-msgstr ""
-"Para usar o modo de várias threads com apenas uma thread, defina I<threads> "
-"como B<+1>. O prefixo B<+> não tem efeito com valores diferentes de B<1>. Um "
-"limite de uso de memória ainda pode fazer B<xz> alternar para o modo de "
-"thread única, a menos que B<--no-adjust> seja usado. O suporte para o "
-"prefixo B<+> foi adicionado no B<xz> 5.4.0."
+#: ../src/xz/xz.1
+msgid "To use multi-threaded mode with only one thread, set I<threads> to B<+1>. The B<+> prefix has no effect with values other than B<1>. A memory usage limit can still make B<xz> switch to single-threaded mode unless B<--no-adjust> is used. Support for the B<+> prefix was added in B<xz> 5.4.0."
+msgstr "Para usar o modo de várias threads com apenas uma thread, defina I<threads> como B<+1>. O prefixo B<+> não tem efeito com valores diferentes de B<1>. Um limite de uso de memória ainda pode fazer B<xz> alternar para o modo de thread única, a menos que B<--no-adjust> seja usado. O suporte para o prefixo B<+> foi adicionado no B<xz> 5.4.0."
#. type: Plain text
-#: ../src/xz/xz.1:1250
-msgid ""
-"If an automatic number of threads has been requested and no memory usage "
-"limit has been specified, then a system-specific default soft limit will be "
-"used to possibly limit the number of threads. It is a soft limit in sense "
-"that it is ignored if the number of threads becomes one, thus a soft limit "
-"will never stop B<xz> from compressing or decompressing. This default soft "
-"limit will not make B<xz> switch from multi-threaded mode to single-threaded "
-"mode. The active limits can be seen with B<xz --info-memory>."
-msgstr ""
-"Se um número automático de threads foi solicitado e nenhum limite de uso de "
-"memória foi especificado, um limite flexível padrão específico do sistema "
-"será usado para possivelmente limitar o número de threads. É um limite "
-"flexível no sentido de que é ignorado se o número de threads se tornar um, "
-"portanto, um limite flexível nunca impedirá B<xz> de compactar ou "
-"descompactar. Este limite flexível padrão não fará com que B<xz> alterne do "
-"modo de várias threads para o modo de thread única. Os limites ativos podem "
-"ser vistos com B<xz --info-memory>."
+#: ../src/xz/xz.1
+msgid "If an automatic number of threads has been requested and no memory usage limit has been specified, then a system-specific default soft limit will be used to possibly limit the number of threads. It is a soft limit in sense that it is ignored if the number of threads becomes one, thus a soft limit will never stop B<xz> from compressing or decompressing. This default soft limit will not make B<xz> switch from multi-threaded mode to single-threaded mode. The active limits can be seen with B<xz --info-memory>."
+msgstr "Se um número automático de threads foi solicitado e nenhum limite de uso de memória foi especificado, um limite flexível padrão específico do sistema será usado para possivelmente limitar o número de threads. É um limite flexível no sentido de que é ignorado se o número de threads se tornar um, portanto, um limite flexível nunca impedirá B<xz> de compactar ou descompactar. Este limite flexível padrão não fará com que B<xz> alterne do modo de várias threads para o modo de thread única. Os limites ativos podem ser vistos com B<xz --info-memory>."
#. type: Plain text
-#: ../src/xz/xz.1:1257
-msgid ""
-"Currently the only threading method is to split the input into blocks and "
-"compress them independently from each other. The default block size depends "
-"on the compression level and can be overridden with the B<--block-"
-"size=>I<size> option."
-msgstr ""
-"Atualmente, o único método de threading é dividir a entrada em blocos e "
-"comprimi-los independentemente um do outro. O tamanho padrão do bloco "
-"depende do nível de compactação e pode ser substituído com a opção B<--block-"
-"size=>I<tamanho>."
+#: ../src/xz/xz.1
+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 "Atualmente, o único método de threading é dividir a entrada em blocos e comprimi-los independentemente um do outro. O tamanho padrão do bloco depende do nível de compactação e pode ser substituído com a opção B<--block-size=>I<tamanho>."
#. type: Plain text
-#: ../src/xz/xz.1:1265
-msgid ""
-"Threaded decompression only works on files that contain multiple blocks with "
-"size information in block headers. All large enough files compressed in "
-"multi-threaded mode meet this condition, but files compressed in single-"
-"threaded mode don't even if B<--block-size=>I<size> has been used."
+#: ../src/xz/xz.1
+msgid "Threaded decompression only works on files that contain multiple blocks with size information in block headers. All large enough files compressed in multi-threaded mode meet this condition, but files compressed in single-threaded mode don't even if B<--block-size=>I<size> has been used."
+msgstr "A descompactação em threads funciona apenas em arquivos que contêm vários blocos com informações de tamanho nos cabeçalhos dos blocos. Todos os arquivos grandes o suficiente compactados no modo de várias thread atendem a essa condição, mas os arquivos compactados no modo de thread única não atendem, mesmo se B<--block-size=>I<tamanho> tiver sido usado."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The default value for I<threads> is B<0>. In B<xz> 5.4.x and older the default is B<1>."
msgstr ""
-"A descompactação em threads funciona apenas em arquivos que contêm vários "
-"blocos com informações de tamanho nos cabeçalhos dos blocos. Todos os "
-"arquivos grandes o suficiente compactados no modo de várias thread atendem a "
-"essa condição, mas os arquivos compactados no modo de thread única não "
-"atendem, mesmo se B<--block-size=>I<tamanho> tiver sido usado."
#. type: SS
-#: ../src/xz/xz.1:1266 ../src/xz/xz.1:2819
+#: ../src/xz/xz.1
#, no-wrap
msgid "Custom compressor filter chains"
msgstr "Cadeias de filtro de compressor personalizadas"
#. type: Plain text
-#: ../src/xz/xz.1:1282
-msgid ""
-"A custom filter chain allows specifying the compression settings in detail "
-"instead of relying on the settings associated to the presets. When a custom "
-"filter chain is specified, preset options (B<-0> \\&...\\& B<-9> and B<--"
-"extreme>) earlier on the command line are forgotten. If a preset option is "
-"specified after one or more custom filter chain options, the new preset "
-"takes effect and the custom filter chain options specified earlier are "
-"forgotten."
+#: ../src/xz/xz.1
+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 "Uma cadeia de filtro personalizada permite especificar as configurações de compactação em detalhes, em vez de confiar nas configurações associadas às predefinições. Quando uma cadeia de filtro personalizada é especificada, as opções predefinidas (B<-0> \\&...\\& B<-9> e B<--extreme>) anteriores na linha de comando são esquecidas. Se uma opção predefinida for especificada após uma ou mais opções de cadeia de filtros personalizados, a nova predefinição entrará em vigor e as opções de cadeia de filtros personalizados especificadas anteriormente serão esquecidas."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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 "Uma cadeia de filtro é comparável à tubulação na linha de comando. Ao compactar, a entrada descompactada vai para o primeiro filtro, cuja saída vai para o próximo filtro (se houver). A saída do último filtro é gravada no arquivo compactado. O número máximo de filtros na cadeia é quatro, mas normalmente uma cadeia de filtros tem apenas um ou dois filtros."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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 "Muitos filtros têm limitações sobre onde podem estar na cadeia de filtros: alguns filtros podem funcionar apenas como o último filtro na cadeia, alguns apenas como filtro não-último e alguns funcionam em qualquer posição na cadeia. Dependendo do filtro, essa limitação é inerente ao projeto do filtro ou existe para evitar problemas de segurança."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "A custom filter chain can be specified in two different ways. The options B<--filters=>I<filters> and B<--filters1=>I<filters> \\&...\\& B<--filters9=>I<filters> allow specifying an entire filter chain in one option using the liblzma filter string syntax. Alternatively, a filter chain can be specified by using one or more individual filter options in the order they are wanted in the filter chain. That is, the order of the individual filter options is significant! When decoding raw streams (B<--format=raw>), the filter chain must be specified in the same order as it was specified when compressing. Any individual filter or preset options specified before the full chain option (B<--filters=>I<filters>) will be forgotten. Individual filters specified after the full chain option will reset the filter chain."
msgstr ""
-"Uma cadeia de filtro personalizada permite especificar as configurações de "
-"compactação em detalhes, em vez de confiar nas configurações associadas às "
-"predefinições. Quando uma cadeia de filtro personalizada é especificada, as "
-"opções predefinidas (B<-0> \\&...\\& B<-9> e B<--extreme>) anteriores na "
-"linha de comando são esquecidas. Se uma opção predefinida for especificada "
-"após uma ou mais opções de cadeia de filtros personalizados, a nova "
-"predefinição entrará em vigor e as opções de cadeia de filtros "
-"personalizados especificadas anteriormente serão esquecidas."
#. type: Plain text
-#: ../src/xz/xz.1:1289
-msgid ""
-"A filter chain is comparable to piping on the command line. When "
-"compressing, the uncompressed input goes to the first filter, whose output "
-"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."
+#: ../src/xz/xz.1
+msgid "Both the full and individual filter options take filter-specific I<options> as a comma-separated list. Extra commas in I<options> are ignored. Every option has a default value, so specify those you want to change."
msgstr ""
-"Uma cadeia de filtro é comparável à tubulação na linha de comando. Ao "
-"compactar, a entrada descompactada vai para o primeiro filtro, cuja saída "
-"vai para o próximo filtro (se houver). A saída do último filtro é gravada no "
-"arquivo compactado. O número máximo de filtros na cadeia é quatro, mas "
-"normalmente uma cadeia de filtros tem apenas um ou dois filtros."
#. type: Plain text
-#: ../src/xz/xz.1:1297
-msgid ""
-"Many filters have limitations on where they can be in the filter chain: some "
-"filters can work only as the last filter in the chain, some only as a non-"
-"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."
+#: ../src/xz/xz.1
+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 "Para ver toda a cadeia de filtros e I<opções>, use B<xz -vv> (isto é, use B<--verbose> duas vezes). Isso também funciona para visualizar as opções da cadeia de filtros usadas pelas predefinições."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "B<--files>[B<=>I<file>]"
+msgid "B<--filters=>I<filters>"
+msgstr "B<--files>[B<=>I<arquivo>]"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Specify the full filter chain or a preset in a single option. Each filter can be separated by spaces or two dashes (B<-->). I<filters> may need to be quoted on the shell command line so it is parsed as a single option. To denote I<options>, use B<:> or B<=>. A preset can be prefixed with a B<-> and followed with zero or more flags. The only supported flag is B<e> to apply the same options as B<--extreme>."
+msgstr ""
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "B<--filters1>=I<filters> ... B<--filters9>=I<filters>"
msgstr ""
-"Muitos filtros têm limitações sobre onde podem estar na cadeia de filtros: "
-"alguns filtros podem funcionar apenas como o último filtro na cadeia, alguns "
-"apenas como filtro não-último e alguns funcionam em qualquer posição na "
-"cadeia. Dependendo do filtro, essa limitação é inerente ao projeto do filtro "
-"ou existe para evitar problemas de segurança."
#. type: Plain text
-#: ../src/xz/xz.1:1305
-msgid ""
-"A custom filter chain is specified by using one or more filter options in "
-"the order they are wanted in the filter chain. That is, the order of filter "
-"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."
+#: ../src/xz/xz.1
+msgid "Specify up to nine additional filter chains that can be used with B<--block-list>."
msgstr ""
-"Uma cadeia de filtro personalizada é especificada usando uma ou mais opções "
-"de filtro na ordem desejada na cadeia de filtro. Ou seja, a ordem das opções "
-"de filtro é significativa! Ao decodificar fluxos brutos (B<--format=raw>), a "
-"cadeia de filtros é especificada na mesma ordem em que foi especificada "
-"durante a compactação."
#. type: Plain text
-#: ../src/xz/xz.1:1314
-msgid ""
-"Filters take filter-specific I<options> as a comma-separated list. Extra "
-"commas in I<options> are ignored. Every option has a default value, so you "
-"need to specify only those you want to change."
+#: ../src/xz/xz.1
+msgid "For example, when compressing an archive with executable files followed by text files, the executable part could use a filter chain with a BCJ filter and the text part only the LZMA2 filter."
msgstr ""
-"Os filtros usam I<opções> específicas do filtro como uma lista separada por "
-"vírgulas. As vírgulas extras em I<opções> são ignoradas. Cada opção tem um "
-"valor padrão, portanto, você precisa especificar apenas aquelas que deseja "
-"alterar."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "B<-h>, B<--help>"
+msgid "B<--filters-help>"
+msgstr "B<-h>, B<--help>"
#. type: Plain text
-#: ../src/xz/xz.1:1323
-msgid ""
-"To see the whole filter chain and I<options>, use B<xz -vv> (that is, use "
-"B<--verbose> twice). This works also for viewing the filter chain options "
-"used by presets."
+#: ../src/xz/xz.1
+msgid "Display a help message describing how to specify presets and custom filter chains in the B<--filters> and B<--filters1=>I<filters> \\&...\\& B<--filters9=>I<filters> options, and exit successfully."
msgstr ""
-"Para ver toda a cadeia de filtros e I<opções>, use B<xz -vv> (isto é, use "
-"B<--verbose> duas vezes). Isso também funciona para visualizar as opções da "
-"cadeia de filtros usadas pelas predefinições."
#. type: TP
-#: ../src/xz/xz.1:1323
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--lzma1>[B<=>I<options>]"
msgstr "B<--lzma1>[B<=>I<opções>]"
#. type: TP
-#: ../src/xz/xz.1:1326
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--lzma2>[B<=>I<options>]"
msgstr "B<--lzma2>[B<=>I<opções>]"
#. type: Plain text
-#: ../src/xz/xz.1:1331
-msgid ""
-"Add LZMA1 or LZMA2 filter to the filter chain. These filters can be used "
-"only as the last filter in the chain."
-msgstr ""
-"Adiciona o filtro LZMA1 ou LZMA2 à cadeia de filtros. Esses filtros podem "
-"ser usados apenas como o último filtro na cadeia."
+#: ../src/xz/xz.1
+msgid "Add LZMA1 or LZMA2 filter to the filter chain. These filters can be used only as the last filter in the chain."
+msgstr "Adiciona o filtro LZMA1 ou LZMA2 à cadeia de filtros. Esses filtros podem ser usados apenas como o último filtro na cadeia."
#. type: Plain text
-#: ../src/xz/xz.1:1343
-msgid ""
-"LZMA1 is a legacy filter, which is supported almost solely due to the legacy "
-"B<.lzma> file format, which supports only LZMA1. LZMA2 is an updated "
-"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 é um filtro legado, que é suportado quase exclusivamente devido ao "
-"formato de arquivo legado B<.lzma>, que suporta apenas LZMA1. LZMA2 é uma "
-"versão atualizada do LZMA1 para corrigir alguns problemas práticos do LZMA1. "
-"O formato B<.xz> usa LZMA2 e não suporta LZMA1. A velocidade de compactação "
-"e as proporções de LZMA1 e LZMA2 são praticamente as mesmas."
+#: ../src/xz/xz.1
+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 é um filtro legado, que é suportado quase exclusivamente devido ao formato de arquivo legado B<.lzma>, que suporta apenas LZMA1. LZMA2 é uma versão atualizada do LZMA1 para corrigir alguns problemas práticos do LZMA1. O formato B<.xz> usa LZMA2 e não suporta LZMA1. A velocidade de compactação e as proporções de LZMA1 e LZMA2 são praticamente as mesmas."
#. type: Plain text
-#: ../src/xz/xz.1:1346
+#: ../src/xz/xz.1
msgid "LZMA1 and LZMA2 share the same set of I<options>:"
msgstr "LZMA1 e LZMA2 compartilham o mesmo conjunto de I<opções>:"
#. type: TP
-#: ../src/xz/xz.1:1347
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<preset=>I<preset>"
msgstr "B<preset=>I<predefinição>"
#. type: Plain text
-#: ../src/xz/xz.1:1374
-msgid ""
-"Reset all LZMA1 or LZMA2 I<options> to I<preset>. I<Preset> consist of an "
-"integer, which may be followed by single-letter preset modifiers. The "
-"integer can be from B<0> to B<9>, matching the command line options B<-0> "
-"\\&...\\& B<-9>. The only supported modifier is currently B<e>, which "
-"matches B<--extreme>. If no B<preset> is specified, the default values of "
-"LZMA1 or LZMA2 I<options> are taken from the preset B<6>."
-msgstr ""
-"Redefine todas as I<opções> de LZMA1 ou LZMA2 para I<predefinição>. "
-"I<Predefinição> consiste em um número inteiro, que pode ser seguido por "
-"modificadores de predefinição de uma única letra. O inteiro pode ser de B<0> "
-"a B<9>, correspondendo às opções de linha de comando B<-0> \\&...\\& B<-9>. "
-"O único modificador suportado atualmente é B<e>, que corresponde a B<--"
-"extreme>. Se nenhum B<preset> for especificado, os valores padrão das "
-"I<opções> LZMA1 ou LZMA2 serão obtidos da predefinição B<6>."
+#: ../src/xz/xz.1
+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 "Redefine todas as I<opções> de LZMA1 ou LZMA2 para I<predefinição>. I<Predefinição> consiste em um número inteiro, que pode ser seguido por modificadores de predefinição de uma única letra. O inteiro pode ser de B<0> a B<9>, correspondendo às opções de linha de comando B<-0> \\&...\\& B<-9>. O único modificador suportado atualmente é B<e>, que corresponde a B<--extreme>. Se nenhum B<preset> for especificado, os valores padrão das I<opções> LZMA1 ou LZMA2 serão obtidos da predefinição B<6>."
#. type: TP
-#: ../src/xz/xz.1:1374
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<dict=>I<size>"
msgstr "B<dict=>I<tamanho>"
#. type: Plain text
-#: ../src/xz/xz.1:1389
-msgid ""
-"Dictionary (history buffer) I<size> indicates how many bytes of the "
-"recently processed uncompressed data is kept in memory. The algorithm tries "
-"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 ""
-"O I<tamanho> do dicionário (buffer de histórico) indica quantos bytes dos "
-"dados não compactados processados recentemente são mantidos na memória. O "
-"algoritmo tenta encontrar sequências de bytes repetidos (correspondências) "
-"nos dados não compactados e substituí-los por referências aos dados "
-"atualmente no dicionário. Quanto maior o dicionário, maior a chance de "
-"encontrar uma correspondência. Portanto, aumentar o dicionário I<tamanho> "
-"geralmente melhora a taxa de compactação, mas um dicionário maior que o "
-"arquivo não compactado é um desperdício de memória."
+#: ../src/xz/xz.1
+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 "O I<tamanho> do dicionário (buffer de histórico) indica quantos bytes dos dados não compactados processados recentemente são mantidos na memória. O algoritmo tenta encontrar sequências de bytes repetidos (correspondências) nos dados não compactados e substituí-los por referências aos dados atualmente no dicionário. Quanto maior o dicionário, maior a chance de encontrar uma correspondência. Portanto, aumentar o dicionário I<tamanho> geralmente melhora a taxa de compactação, mas um dicionário maior que o arquivo não compactado é um desperdício de memória."
#. type: Plain text
-#: ../src/xz/xz.1:1398
-msgid ""
-"Typical dictionary I<size> is from 64\\ KiB to 64\\ MiB. The minimum is 4\\ "
-"KiB. The maximum for compression is currently 1.5\\ GiB (1536\\ MiB). The "
-"decompressor already supports dictionaries up to one byte less than 4\\ GiB, "
-"which is the maximum for the LZMA1 and LZMA2 stream formats."
-msgstr ""
-"Um I<tamanho> de dicionário típico é de 64\\ KiB a 64\\ MiB. O mínimo é 4\\ "
-"KiB. O máximo para compactação é atualmente 1,5\\ GiB (1536\\ MiB). O "
-"descompactador já oferece suporte a dicionários de até um byte a menos de "
-"4\\ GiB, que é o máximo para os formatos de fluxo LZMA1 e LZMA2."
+#: ../src/xz/xz.1
+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 "Um I<tamanho> de dicionário típico é de 64\\ KiB a 64\\ MiB. O mínimo é 4\\ KiB. O máximo para compactação é atualmente 1,5\\ GiB (1536\\ MiB). O descompactador já oferece suporte a dicionários de até um byte a menos de 4\\ GiB, que é o máximo para os formatos de fluxo LZMA1 e LZMA2."
#. type: Plain text
-#: ../src/xz/xz.1:1425
-msgid ""
-"Dictionary I<size> and match finder (I<mf>) together determine the memory "
-"usage of the LZMA1 or LZMA2 encoder. The same (or bigger) dictionary "
-"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 ""
-"O I<tamanho> de dicionário e o localizador de correspondência (I<mf>) juntos "
-"determinam o uso de memória do codificador LZMA1 ou LZMA2. O mesmo (ou "
-"maior) I<tamanho> de dicionário é necessário para descompactar que foi usado "
-"durante a compactação, portanto, o uso de memória do decodificador é "
-"determinado pelo tamanho do dicionário usado durante a compactação. Os "
-"cabeçalhos B<.xz> armazenam o I<tamanho> de dicionário como 2^I<n> ou 2^I<n> "
-"+ 2^(I<n>-1), então esses I<tamanhos> são um tanto preferidos para "
-"compactação. Outros I<tamanhos> serão arredondados quando armazenados nos "
-"cabeçalhos B<.xz>."
+#: ../src/xz/xz.1
+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 "O I<tamanho> de dicionário e o localizador de correspondência (I<mf>) juntos determinam o uso de memória do codificador LZMA1 ou LZMA2. O mesmo (ou maior) I<tamanho> de dicionário é necessário para descompactar que foi usado durante a compactação, portanto, o uso de memória do decodificador é determinado pelo tamanho do dicionário usado durante a compactação. Os cabeçalhos B<.xz> armazenam o I<tamanho> de dicionário como 2^I<n> ou 2^I<n> + 2^(I<n>-1), então esses I<tamanhos> são um tanto preferidos para compactação. Outros I<tamanhos> serão arredondados quando armazenados nos cabeçalhos B<.xz>."
#. type: TP
-#: ../src/xz/xz.1:1425
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lc=>I<lc>"
msgstr "B<lc=>I<lc>"
#. type: Plain text
-#: ../src/xz/xz.1:1434
-msgid ""
-"Specify the number of literal context bits. The minimum is 0 and the "
-"maximum is 4; the default is 3. In addition, the sum of I<lc> and I<lp> "
-"must not exceed 4."
-msgstr ""
-"Especifica o número de bits de contexto literais. O mínimo é 0 e o máximo é "
-"4; o padrão é 3. Além disso, a soma de I<lc> e I<lp> não deve exceder 4."
+#: ../src/xz/xz.1
+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 "Especifica o número de bits de contexto literais. O mínimo é 0 e o máximo é 4; o padrão é 3. Além disso, a soma de I<lc> e I<lp> não deve exceder 4."
#. type: Plain text
-#: ../src/xz/xz.1:1439
-msgid ""
-"All bytes that cannot be encoded as matches are encoded as literals. That "
-"is, literals are simply 8-bit bytes that are encoded one at a time."
-msgstr ""
-"Todos os bytes que não podem ser codificados como correspondências são "
-"codificados como literais. Ou seja, literais são simplesmente bytes de 8 "
-"bits que são codificados um de cada vez."
+#: ../src/xz/xz.1
+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 "Todos os bytes que não podem ser codificados como correspondências são codificados como literais. Ou seja, literais são simplesmente bytes de 8 bits que são codificados um de cada vez."
#. type: Plain text
-#: ../src/xz/xz.1:1453
-msgid ""
-"The literal coding makes an assumption that the highest I<lc> bits of the "
-"previous uncompressed byte correlate with the next byte. For example, in "
-"typical English text, an upper-case letter is often followed by a lower-case "
-"letter, and a lower-case letter is usually followed by another lower-case "
-"letter. In the US-ASCII character set, the highest three bits are 010 for "
-"upper-case letters and 011 for lower-case letters. When I<lc> is at least "
-"3, the literal coding can take advantage of this property in the "
-"uncompressed data."
-msgstr ""
-"A codificação literal assume que os bits I<lc> mais altos do byte não "
-"compactado anterior se correlacionam com o próximo byte. Por exemplo, em um "
-"texto típico em inglês, uma letra maiúscula geralmente é seguida por uma "
-"letra minúscula, e uma letra minúscula geralmente é seguida por outra letra "
-"minúscula. No conjunto de caracteres US-ASCII, os três bits mais altos são "
-"010 para letras maiúsculas e 011 para letras minúsculas. Quando I<lc> é pelo "
-"menos 3, a codificação literal pode aproveitar essa propriedade nos dados "
-"não compactados."
+#: ../src/xz/xz.1
+msgid "The literal coding makes an assumption that the highest I<lc> bits of the previous uncompressed byte correlate with the next byte. For example, in typical English text, an upper-case letter is often followed by a lower-case letter, and a lower-case letter is usually followed by another lower-case letter. In the US-ASCII character set, the highest three bits are 010 for upper-case letters and 011 for lower-case letters. When I<lc> is at least 3, the literal coding can take advantage of this property in the uncompressed data."
+msgstr "A codificação literal assume que os bits I<lc> mais altos do byte não compactado anterior se correlacionam com o próximo byte. Por exemplo, em um texto típico em inglês, uma letra maiúscula geralmente é seguida por uma letra minúscula, e uma letra minúscula geralmente é seguida por outra letra minúscula. No conjunto de caracteres US-ASCII, os três bits mais altos são 010 para letras maiúsculas e 011 para letras minúsculas. Quando I<lc> é pelo menos 3, a codificação literal pode aproveitar essa propriedade nos dados não compactados."
#. type: Plain text
-#: ../src/xz/xz.1:1462
-msgid ""
-"The default value (3) is usually good. If you want maximum compression, "
-"test B<lc=4>. Sometimes it helps a little, and sometimes it makes "
-"compression worse. If it makes it worse, test B<lc=2> too."
-msgstr ""
-"O valor padrão (3) geralmente é bom. Se você deseja compactação máxima, "
-"experimente B<lc=4>. Às vezes ajuda um pouco, às vezes piora a compactação. "
-"Se piorar, experimente B<lc=2> também."
+#: ../src/xz/xz.1
+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 B<lc=2> too."
+msgstr "O valor padrão (3) geralmente é bom. Se você deseja compactação máxima, experimente B<lc=4>. Às vezes ajuda um pouco, às vezes piora a compactação. Se piorar, experimente B<lc=2> também."
#. type: TP
-#: ../src/xz/xz.1:1462
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lp=>I<lp>"
msgstr "B<lp=>I<lp>"
#. type: Plain text
-#: ../src/xz/xz.1:1466
-msgid ""
-"Specify the number of literal position bits. The minimum is 0 and the "
-"maximum is 4; the default is 0."
-msgstr ""
-"Especifica o número de bits de posição literal. O mínimo é 0 e o máximo é 4; "
-"o padrão é 0."
+#: ../src/xz/xz.1
+msgid "Specify the number of literal position bits. The minimum is 0 and the maximum is 4; the default is 0."
+msgstr "Especifica o número de bits de posição literal. O mínimo é 0 e o máximo é 4; o padrão é 0."
#. type: Plain text
-#: ../src/xz/xz.1:1473
-msgid ""
-"I<Lp> affects what kind of alignment in the uncompressed data is assumed "
-"when encoding literals. See I<pb> below for more information about "
-"alignment."
-msgstr ""
-"I<Lp> afeta que tipo de alinhamento nos dados não compactados é assumido ao "
-"codificar literais. Consulte I<pb> abaixo para obter mais informações sobre "
-"alinhamento."
+#: ../src/xz/xz.1
+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> afeta que tipo de alinhamento nos dados não compactados é assumido ao codificar literais. Consulte I<pb> abaixo para obter mais informações sobre alinhamento."
#. type: TP
-#: ../src/xz/xz.1:1473
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<pb=>I<pb>"
msgstr "B<pb=>I<pb>"
#. type: Plain text
-#: ../src/xz/xz.1:1477
-msgid ""
-"Specify the number of position bits. The minimum is 0 and the maximum is 4; "
-"the default is 2."
-msgstr ""
-"Especifica o número de bits de posição. O mínimo é 0 e o máximo é 4; o "
-"padrão é 2."
+#: ../src/xz/xz.1
+msgid "Specify the number of position bits. The minimum is 0 and the maximum is 4; the default is 2."
+msgstr "Especifica o número de bits de posição. O mínimo é 0 e o máximo é 4; o padrão é 2."
#. type: Plain text
-#: ../src/xz/xz.1:1484
-msgid ""
-"I<Pb> affects what kind of alignment in the uncompressed data is assumed in "
-"general. The default means four-byte alignment (2^I<pb>=2^2=4), which is "
-"often a good choice when there's no better guess."
-msgstr ""
-"I<Pb> afeta que tipo de alinhamento nos dados não compactados é assumido em "
-"geral. O padrão significa alinhamento de quatro bytes (2^I<pb>=2^2=4), que "
-"geralmente é uma boa escolha quando não há melhor estimativa."
+#: ../src/xz/xz.1
+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> afeta que tipo de alinhamento nos dados não compactados é assumido em geral. O padrão significa alinhamento de quatro bytes (2^I<pb>=2^2=4), que geralmente é uma boa escolha quando não há melhor estimativa."
#. type: Plain text
-#: ../src/xz/xz.1:1498
-msgid ""
-"When the alignment is known, setting I<pb> accordingly may reduce the file "
-"size a little. For example, with text files having one-byte alignment (US-"
-"ASCII, ISO-8859-*, UTF-8), setting B<pb=0> can improve compression "
-"slightly. For UTF-16 text, B<pb=1> is a good choice. If the alignment is "
-"an odd number like 3 bytes, B<pb=0> might be the best choice."
-msgstr ""
-"Quando o alinhamento é conhecido, definir I<pb> adequadamente pode reduzir "
-"um pouco o tamanho do arquivo. Por exemplo, com arquivos de texto com "
-"alinhamento de um byte (US-ASCII, ISO-8859-*, UTF-8), a configuração B<pb=0> "
-"pode melhorar um pouco a compactação. Para texto UTF-16, B<pb=1> é uma boa "
-"escolha. Se o alinhamento for um número ímpar como 3 bytes, B<pb=0> pode ser "
-"a melhor escolha."
+#: ../src/xz/xz.1
+msgid "When the alignment is known, setting I<pb> accordingly may reduce the file size a little. For example, with text files having one-byte alignment (US-ASCII, ISO-8859-*, UTF-8), setting B<pb=0> can improve compression slightly. For UTF-16 text, B<pb=1> is a good choice. If the alignment is an odd number like 3 bytes, B<pb=0> might be the best choice."
+msgstr "Quando o alinhamento é conhecido, definir I<pb> adequadamente pode reduzir um pouco o tamanho do arquivo. Por exemplo, com arquivos de texto com alinhamento de um byte (US-ASCII, ISO-8859-*, UTF-8), a configuração B<pb=0> pode melhorar um pouco a compactação. Para texto UTF-16, B<pb=1> é uma boa escolha. Se o alinhamento for um número ímpar como 3 bytes, B<pb=0> pode ser a melhor escolha."
#. type: Plain text
-#: ../src/xz/xz.1:1506
-msgid ""
-"Even though the assumed alignment can be adjusted with I<pb> and I<lp>, "
-"LZMA1 and LZMA2 still slightly favor 16-byte alignment. It might be worth "
-"taking into account when designing file formats that are likely to be often "
-"compressed with LZMA1 or LZMA2."
-msgstr ""
-"Embora o alinhamento assumido possa ser ajustado com I<pb> e I<lp>, LZMA1 e "
-"LZMA2 ainda favorecem ligeiramente o alinhamento de 16 bytes. Pode valer a "
-"pena levar em consideração ao projetar formatos de arquivo que provavelmente "
-"serão compactados com LZMA1 ou LZMA2."
+#: ../src/xz/xz.1
+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 "Embora o alinhamento assumido possa ser ajustado com I<pb> e I<lp>, LZMA1 e LZMA2 ainda favorecem ligeiramente o alinhamento de 16 bytes. Pode valer a pena levar em consideração ao projetar formatos de arquivo que provavelmente serão compactados com LZMA1 ou LZMA2."
#. type: TP
-#: ../src/xz/xz.1:1506
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<mf=>I<mf>"
msgstr "B<mf=>I<mf>"
#. type: Plain text
-#: ../src/xz/xz.1:1521
-msgid ""
-"Match finder has a major effect on encoder speed, memory usage, and "
-"compression ratio. Usually Hash Chain match finders are faster than Binary "
-"Tree match finders. The default depends on the I<preset>: 0 uses B<hc3>, "
-"1\\(en3 use B<hc4>, and the rest use B<bt4>."
-msgstr ""
-"O localizador de correspondência tem um efeito importante na velocidade do "
-"codificador, uso de memória e taxa de compactação. Normalmente, os "
-"localizadores de correspondência de Hash Chain são mais rápidos do que os "
-"localizadores de correspondência de árvore binária. O padrão depende do "
-"I<predefinição>: 0 usa B<hc3>, 1\\(en3 usa B<hc4> e o resto usa B<bt4>."
+#: ../src/xz/xz.1
+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\\(en3 use B<hc4>, and the rest use B<bt4>."
+msgstr "O localizador de correspondência tem um efeito importante na velocidade do codificador, uso de memória e taxa de compactação. Normalmente, os localizadores de correspondência de Hash Chain são mais rápidos do que os localizadores de correspondência de árvore binária. O padrão depende do I<predefinição>: 0 usa B<hc3>, 1\\(en3 usa B<hc4> e o resto usa B<bt4>."
#. type: Plain text
-#: ../src/xz/xz.1:1527
-msgid ""
-"The following match finders are supported. The memory usage formulas below "
-"are rough approximations, which are closest to the reality when I<dict> is a "
-"power of two."
-msgstr ""
-"Os seguintes localizadores de correspondência são suportados. As fórmulas de "
-"uso de memória abaixo são aproximações aproximadas, que estão mais próximas "
-"da realidade quando I<dict> é uma potência de dois."
+#: ../src/xz/xz.1
+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 "Os seguintes localizadores de correspondência são suportados. As fórmulas de uso de memória abaixo são aproximações aproximadas, que estão mais próximas da realidade quando I<dict> é uma potência de dois."
#. type: TP
-#: ../src/xz/xz.1:1528
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<hc3>"
msgstr "B<hc3>"
#. type: Plain text
-#: ../src/xz/xz.1:1531
+#: ../src/xz/xz.1
msgid "Hash Chain with 2- and 3-byte hashing"
msgstr "Cadeia de hashs com hashing de 2 e 3 bytes"
#. type: Plain text
-#: ../src/xz/xz.1:1535 ../src/xz/xz.1:1584
+#: ../src/xz/xz.1
msgid "Minimum value for I<nice>: 3"
msgstr "Valor mínimo para I<nice>: 3"
#. type: Plain text
-#: ../src/xz/xz.1:1537 ../src/xz/xz.1:1556 ../src/xz/xz.1:1586
-#: ../src/xz/xz.1:1605
+#: ../src/xz/xz.1
msgid "Memory usage:"
msgstr "Uso de memória:"
#. type: Plain text
-#: ../src/xz/xz.1:1542
+#: ../src/xz/xz.1
msgid "I<dict> * 7.5 (if I<dict> E<lt>= 16 MiB);"
msgstr "I<dict> * 7.5 (if I<dict> E<lt>= 16 MiB);"
#. type: Plain text
-#: ../src/xz/xz.1:1547
+#: ../src/xz/xz.1
msgid "I<dict> * 5.5 + 64 MiB (if I<dict> E<gt> 16 MiB)"
msgstr "I<dict> * 5.5 + 64 MiB (if I<dict> E<gt> 16 MiB)"
#. type: TP
-#: ../src/xz/xz.1:1547
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<hc4>"
msgstr "B<hc4>"
#. type: Plain text
-#: ../src/xz/xz.1:1550
+#: ../src/xz/xz.1
msgid "Hash Chain with 2-, 3-, and 4-byte hashing"
msgstr "Cadeia de hashs com hashing de 2, 3 e 4 bytes"
#. type: Plain text
-#: ../src/xz/xz.1:1554 ../src/xz/xz.1:1603
+#: ../src/xz/xz.1
msgid "Minimum value for I<nice>: 4"
msgstr "Valor mínimo para I<nice>: 4"
#. type: Plain text
-#: ../src/xz/xz.1:1561
+#: ../src/xz/xz.1
msgid "I<dict> * 7.5 (if I<dict> E<lt>= 32 MiB);"
msgstr "I<dict> * 7.5 (if I<dict> E<lt>= 32 MiB);"
#. type: Plain text
-#: ../src/xz/xz.1:1566
+#: ../src/xz/xz.1
msgid "I<dict> * 6.5 (if I<dict> E<gt> 32 MiB)"
msgstr "I<dict> * 6.5 (if I<dict> E<gt> 32 MiB)"
#. type: TP
-#: ../src/xz/xz.1:1566
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<bt2>"
msgstr "B<bt2>"
#. type: Plain text
-#: ../src/xz/xz.1:1569
+#: ../src/xz/xz.1
msgid "Binary Tree with 2-byte hashing"
msgstr "Árvore binária com hashing de 2 bytes"
#. type: Plain text
-#: ../src/xz/xz.1:1573
+#: ../src/xz/xz.1
msgid "Minimum value for I<nice>: 2"
msgstr "Valor mínimo para I<nice>: 2"
#. type: Plain text
-#: ../src/xz/xz.1:1577
+#: ../src/xz/xz.1
msgid "Memory usage: I<dict> * 9.5"
msgstr "Uso de memória: I<dict> * 9.5"
#. type: TP
-#: ../src/xz/xz.1:1577
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<bt3>"
msgstr "B<bt3>"
#. type: Plain text
-#: ../src/xz/xz.1:1580
+#: ../src/xz/xz.1
msgid "Binary Tree with 2- and 3-byte hashing"
msgstr "Árvore binária com hashing de 2 e 3 bytes"
#. type: Plain text
-#: ../src/xz/xz.1:1591
+#: ../src/xz/xz.1
msgid "I<dict> * 11.5 (if I<dict> E<lt>= 16 MiB);"
msgstr "I<dict> * 11.5 (if I<dict> E<lt>= 16 MiB);"
#. type: Plain text
-#: ../src/xz/xz.1:1596
+#: ../src/xz/xz.1
msgid "I<dict> * 9.5 + 64 MiB (if I<dict> E<gt> 16 MiB)"
msgstr "I<dict> * 9.5 + 64 MiB (if I<dict> E<gt> 16 MiB)"
#. type: TP
-#: ../src/xz/xz.1:1596
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<bt4>"
msgstr "B<bt4>"
#. type: Plain text
-#: ../src/xz/xz.1:1599
+#: ../src/xz/xz.1
msgid "Binary Tree with 2-, 3-, and 4-byte hashing"
msgstr "Árvore binária com hashing de 2, 3 e 4 bytes"
#. type: Plain text
-#: ../src/xz/xz.1:1610
+#: ../src/xz/xz.1
msgid "I<dict> * 11.5 (if I<dict> E<lt>= 32 MiB);"
msgstr "I<dict> * 11.5 (if I<dict> E<lt>= 32 MiB);"
#. type: Plain text
-#: ../src/xz/xz.1:1615
+#: ../src/xz/xz.1
msgid "I<dict> * 10.5 (if I<dict> E<gt> 32 MiB)"
msgstr "I<dict> * 10.5 (if I<dict> E<gt> 32 MiB)"
#. type: TP
-#: ../src/xz/xz.1:1616
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<mode=>I<mode>"
msgstr "B<mode=>I<modo>"
#. type: Plain text
-#: ../src/xz/xz.1:1637
-msgid ""
-"Compression I<mode> specifies the method to analyze the data produced by the "
-"match finder. Supported I<modes> are B<fast> and B<normal>. The default is "
-"B<fast> for I<presets> 0\\(en3 and B<normal> for I<presets> 4\\(en9."
-msgstr ""
-"O I<modo> de compactação especifica o método para analisar os dados "
-"produzidos pelo localizador de correspondência. Os I<modos> suportados são "
-"B<fast> e B<normal>. O padrão é B<fast> para I<predefinições> 0\\(en3 e "
-"B<normal> para I<predefinições> 4\\(en9."
+#: ../src/xz/xz.1
+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\\(en3 and B<normal> for I<presets> 4\\(en9."
+msgstr "O I<modo> de compactação especifica o método para analisar os dados produzidos pelo localizador de correspondência. Os I<modos> suportados são B<fast> e B<normal>. O padrão é B<fast> para I<predefinições> 0\\(en3 e B<normal> para I<predefinições> 4\\(en9."
#. type: Plain text
-#: ../src/xz/xz.1:1646
-msgid ""
-"Usually B<fast> is used with Hash Chain match finders and B<normal> with "
-"Binary Tree match finders. This is also what the I<presets> do."
-msgstr ""
-"Normalmente, B<fast> é usado com localizadores de correspondência cadeia de "
-"hashs e B<normal> com localizadores de correspondência de árvore binária. "
-"Isso também é o que os I<predefinições> fazem."
+#: ../src/xz/xz.1
+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 "Normalmente, B<fast> é usado com localizadores de correspondência cadeia de hashs e B<normal> com localizadores de correspondência de árvore binária. Isso também é o que os I<predefinições> fazem."
#. type: TP
-#: ../src/xz/xz.1:1646
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<nice=>I<nice>"
msgstr "B<nice=>I<nice>"
#. type: Plain text
-#: ../src/xz/xz.1:1653
-msgid ""
-"Specify what is considered to be a nice length for a match. Once a match of "
-"at least I<nice> bytes is found, the algorithm stops looking for possibly "
-"better matches."
-msgstr ""
-"Especifica o que é considerado um bom comprimento para uma correspondência. "
-"Uma vez que uma correspondência de pelo menos I<nice> bytes é encontrada, o "
-"algoritmo para de procurar correspondências possivelmente melhores."
+#: ../src/xz/xz.1
+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 "Especifica o que é considerado um bom comprimento para uma correspondência. Uma vez que uma correspondência de pelo menos I<nice> bytes é encontrada, o algoritmo para de procurar correspondências possivelmente melhores."
#. type: Plain text
-#: ../src/xz/xz.1:1660
-msgid ""
-"I<Nice> can be 2\\(en273 bytes. Higher values tend to give better "
-"compression ratio at the expense of speed. The default depends on the "
-"I<preset>."
-msgstr ""
-"I<Nice> pode ser 2\\(en273 bytes. Valores mais altos tendem a fornecer "
-"melhor taxa de compactação em detrimento da velocidade. O padrão depende do "
-"I<predefinição>."
+#: ../src/xz/xz.1
+msgid "I<Nice> can be 2\\(en273 bytes. Higher values tend to give better compression ratio at the expense of speed. The default depends on the I<preset>."
+msgstr "I<Nice> pode ser 2\\(en273 bytes. Valores mais altos tendem a fornecer melhor taxa de compactação em detrimento da velocidade. O padrão depende do I<predefinição>."
#. type: TP
-#: ../src/xz/xz.1:1660
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<depth=>I<depth>"
msgstr "B<depth=>I<profundidade>"
#. type: Plain text
-#: ../src/xz/xz.1:1670
-msgid ""
-"Specify the maximum search depth in the match finder. The default is the "
-"special value of 0, which makes the compressor determine a reasonable "
-"I<depth> from I<mf> and I<nice>."
-msgstr ""
-"Especifica a profundidade máxima de pesquisa no localizador de "
-"correspondências. O padrão é o valor especial de 0, que faz com que o "
-"compressor determine um I<profundidade> razoável de I<mf> e I<nice>."
+#: ../src/xz/xz.1
+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 "Especifica a profundidade máxima de pesquisa no localizador de correspondências. O padrão é o valor especial de 0, que faz com que o compressor determine um I<profundidade> razoável de I<mf> e I<nice>."
#. type: Plain text
-#: ../src/xz/xz.1:1681
-msgid ""
-"Reasonable I<depth> for Hash Chains is 4\\(en100 and 16\\(en1000 for Binary "
-"Trees. Using very high values for I<depth> can make the encoder extremely "
-"slow with some files. Avoid setting the I<depth> over 1000 unless you are "
-"prepared to interrupt the compression in case it is taking far too long."
-msgstr ""
-"Uma I<profundidade> razoável para cadeias de hash é 4\\(en100 e 16\\(en1000 "
-"para árvores binárias. Usar valores muito altos para I<profundidade> pode "
-"tornar o codificador extremamente lento com alguns arquivos. Evite definir "
-"I<profundidade> acima de 1000 a menos que você esteja preparado para "
-"interromper a compactação caso ela esteja demorando muito."
+#: ../src/xz/xz.1
+msgid "Reasonable I<depth> for Hash Chains is 4\\(en100 and 16\\(en1000 for Binary Trees. Using very high values for I<depth> can make the encoder extremely slow with some files. Avoid setting the I<depth> over 1000 unless you are prepared to interrupt the compression in case it is taking far too long."
+msgstr "Uma I<profundidade> razoável para cadeias de hash é 4\\(en100 e 16\\(en1000 para árvores binárias. Usar valores muito altos para I<profundidade> pode tornar o codificador extremamente lento com alguns arquivos. Evite definir I<profundidade> acima de 1000 a menos que você esteja preparado para interromper a compactação caso ela esteja demorando muito."
#. type: Plain text
-#: ../src/xz/xz.1:1692
-msgid ""
-"When decoding raw streams (B<--format=raw>), LZMA2 needs only the dictionary "
-"I<size>. LZMA1 needs also I<lc>, I<lp>, and I<pb>."
-msgstr ""
-"Ao decodificar fluxos brutos (B<--format=raw>), o LZMA2 precisa apenas do "
-"dicionário I<tamanho>. LZMA1 também precisa de I<lc>, I<lp> e I<pb>."
+#: ../src/xz/xz.1
+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 "Ao decodificar fluxos brutos (B<--format=raw>), o LZMA2 precisa apenas do dicionário I<tamanho>. LZMA1 também precisa de I<lc>, I<lp> e I<pb>."
#. type: TP
-#: ../src/xz/xz.1:1692
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--x86>[B<=>I<options>]"
msgstr "B<--x86>[B<=>I<opções>]"
#. type: TP
-#: ../src/xz/xz.1:1695
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--arm>[B<=>I<options>]"
msgstr "B<--arm>[B<=>I<opções>]"
#. type: TP
-#: ../src/xz/xz.1:1697
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--armthumb>[B<=>I<options>]"
msgstr "B<--armthumb>[B<=>I<opções>]"
#. type: TP
-#: ../src/xz/xz.1:1699
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--arm64>[B<=>I<options>]"
msgstr "B<--arm64>[B<=>I<opções>]"
#. type: TP
-#: ../src/xz/xz.1:1701
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--powerpc>[B<=>I<options>]"
msgstr "B<--powerpc>[B<=>I<opções>]"
#. type: TP
-#: ../src/xz/xz.1:1703
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--ia64>[B<=>I<options>]"
msgstr "B<--ia64>[B<=>I<opções>]"
#. type: TP
-#: ../src/xz/xz.1:1705
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--sparc>[B<=>I<options>]"
msgstr "B<--sparc>[B<=>I<opções>]"
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "B<--riscv>[B<=>I<options>]"
+msgstr "B<--riscv>[B<=>I<opções>]"
+
#. type: Plain text
-#: ../src/xz/xz.1:1711
-msgid ""
-"Add a branch/call/jump (BCJ) filter to the filter chain. These filters can "
-"be used only as a non-last filter in the filter chain."
-msgstr ""
-"Adiciona um filtro de ramificação/chamada/salto (BCJ) à cadeia de filtros. "
-"Esses filtros podem ser usados apenas como um filtro não último na cadeia de "
-"filtros."
+#: ../src/xz/xz.1
+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 "Adiciona um filtro de ramificação/chamada/salto (BCJ) à cadeia de filtros. Esses filtros podem ser usados apenas como um filtro não último na cadeia de filtros."
#. type: Plain text
-#: ../src/xz/xz.1:1725
-msgid ""
-"A BCJ filter converts relative addresses in the machine code to their "
-"absolute counterparts. This doesn't change the size of the data but it "
-"increases redundancy, which can help LZMA2 to produce 0\\(en15\\ % smaller "
-"B<.xz> file. The BCJ filters are always reversible, so using a BCJ filter "
-"for wrong type of data doesn't cause any data loss, although it may make the "
-"compression ratio slightly worse. The BCJ filters are very fast and use an "
-"insignificant amount of memory."
-msgstr ""
-"Um filtro BCJ converte endereços relativos no código de máquina em suas "
-"contrapartes absolutas. Isso não altera o tamanho dos dados, mas aumenta a "
-"redundância, o que pode ajudar o LZMA2 a produzir um arquivo B<.xz> "
-"0\\(en15\\ % menor. Os filtros BCJ são sempre reversíveis, portanto, usar um "
-"filtro BCJ para o tipo errado de dados não causa nenhuma perda de dados, "
-"embora possa piorar um pouco a taxa de compactação.Os filtros BCJ são muito "
-"rápidos e usam uma quantidade insignificante de memória."
+#: ../src/xz/xz.1
+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\\(en15\\ % smaller B<.xz> file. The BCJ filters are always reversible, so using a BCJ filter for wrong type of data doesn't cause any data loss, although it may make the compression ratio slightly worse. The BCJ filters are very fast and use an insignificant amount of memory."
+msgstr "Um filtro BCJ converte endereços relativos no código de máquina em suas contrapartes absolutas. Isso não altera o tamanho dos dados, mas aumenta a redundância, o que pode ajudar o LZMA2 a produzir um arquivo B<.xz> 0\\(en15\\ % menor. Os filtros BCJ são sempre reversíveis, portanto, usar um filtro BCJ para o tipo errado de dados não causa nenhuma perda de dados, embora possa piorar um pouco a taxa de compactação.Os filtros BCJ são muito rápidos e usam uma quantidade insignificante de memória."
#. type: Plain text
-#: ../src/xz/xz.1:1728
+#: ../src/xz/xz.1
msgid "These BCJ filters have known problems related to the compression ratio:"
-msgstr ""
-"Esses filtros BCJ têm problemas conhecidos relacionados à taxa de "
-"compactação:"
+msgstr "Esses filtros BCJ têm problemas conhecidos relacionados à taxa de compactação:"
#. type: Plain text
-#: ../src/xz/xz.1:1735
-msgid ""
-"Some types of files containing executable code (for example, object files, "
-"static libraries, and Linux kernel modules) have the addresses in the "
-"instructions filled with filler values. These BCJ filters will still do the "
-"address conversion, which will make the compression worse with these files."
-msgstr ""
-"Alguns tipos de arquivos contendo código executável (por exemplo, arquivos "
-"de objeto, bibliotecas estáticas e módulos do kernel do Linux) têm os "
-"endereços nas instruções preenchidos com valores de preenchimento. Esses "
-"filtros BCJ ainda vão fazer a conversão de endereço, o que vai piorar a "
-"compactação desses arquivos."
+#: ../src/xz/xz.1
+msgid "Some types of files containing executable code (for example, object files, static libraries, and Linux kernel modules) have the addresses in the instructions filled with filler values. These BCJ filters will still do the address conversion, which will make the compression worse with these files."
+msgstr "Alguns tipos de arquivos contendo código executável (por exemplo, arquivos de objeto, bibliotecas estáticas e módulos do kernel do Linux) têm os endereços nas instruções preenchidos com valores de preenchimento. Esses filtros BCJ ainda vão fazer a conversão de endereço, o que vai piorar a compactação desses arquivos."
#. type: Plain text
-#: ../src/xz/xz.1:1745
-msgid ""
-"If a BCJ filter is applied on an archive, it is possible that it makes the "
-"compression ratio worse than not using a BCJ filter. For example, if there "
-"are similar or even identical executables then filtering will likely make "
-"the files less similar and thus compression is worse. The contents of non-"
-"executable files in the same archive can matter too. In practice one has to "
-"try with and without a BCJ filter to see which is better in each situation."
-msgstr ""
-"Se um filtro BCJ for aplicado em um arquivo, é possível que isso torne a "
-"taxa de compactação pior do que não usar um filtro BCJ. Por exemplo, se "
-"houver executáveis semelhantes ou mesmo idênticos, a filtragem provavelmente "
-"tornará os arquivos menos semelhantes e, portanto, a compactação será pior. "
-"O conteúdo de arquivos não executáveis no mesmo arquivo também pode ser "
-"importante. Na prática tem que tentar com e sem filtro BCJ para ver qual é "
-"melhor em cada situação."
+#: ../src/xz/xz.1
+msgid "If a BCJ filter is applied on an archive, it is possible that it makes the compression ratio worse than not using a BCJ filter. For example, if there are similar or even identical executables then filtering will likely make the files less similar and thus compression is worse. The contents of non-executable files in the same archive can matter too. In practice one has to try with and without a BCJ filter to see which is better in each situation."
+msgstr "Se um filtro BCJ for aplicado em um arquivo, é possível que isso torne a taxa de compactação pior do que não usar um filtro BCJ. Por exemplo, se houver executáveis semelhantes ou mesmo idênticos, a filtragem provavelmente tornará os arquivos menos semelhantes e, portanto, a compactação será pior. O conteúdo de arquivos não executáveis no mesmo arquivo também pode ser importante. Na prática tem que tentar com e sem filtro BCJ para ver qual é melhor em cada situação."
#. type: Plain text
-#: ../src/xz/xz.1:1750
-msgid ""
-"Different instruction sets have different alignment: the executable file "
-"must be aligned to a multiple of this value in the input data to make the "
-"filter work."
-msgstr ""
-"Conjuntos de instruções diferentes têm alinhamento diferente: o arquivo "
-"executável deve ser alinhado a um múltiplo desse valor nos dados de entrada "
-"para fazer o filtro funcionar."
+#: ../src/xz/xz.1
+msgid "Different instruction sets have different alignment: the executable file must be aligned to a multiple of this value in the input data to make the filter work."
+msgstr "Conjuntos de instruções diferentes têm alinhamento diferente: o arquivo executável deve ser alinhado a um múltiplo desse valor nos dados de entrada para fazer o filtro funcionar."
#. type: tbl table
-#: ../src/xz/xz.1:1757
+#: ../src/xz/xz.1
#, no-wrap
msgid "Filter"
msgstr "Filtro"
#. type: tbl table
-#: ../src/xz/xz.1:1757
+#: ../src/xz/xz.1
#, no-wrap
msgid "Alignment"
msgstr "Alinhamento"
#. type: tbl table
-#: ../src/xz/xz.1:1757
+#: ../src/xz/xz.1
#, no-wrap
msgid "Notes"
msgstr "Observações"
#. type: tbl table
-#: ../src/xz/xz.1:1758
+#: ../src/xz/xz.1
#, no-wrap
msgid "x86"
msgstr "x86"
#. type: tbl table
-#: ../src/xz/xz.1:1758
+#: ../src/xz/xz.1
#, no-wrap
msgid "32-bit or 64-bit x86"
msgstr "x86 32 bits ou 64 bits"
#. type: tbl table
-#: ../src/xz/xz.1:1759
+#: ../src/xz/xz.1
#, no-wrap
msgid "ARM"
msgstr "ARM"
#. type: tbl table
-#: ../src/xz/xz.1:1760
+#: ../src/xz/xz.1
#, no-wrap
msgid "ARM-Thumb"
msgstr "ARM-Thumb"
#. type: tbl table
-#: ../src/xz/xz.1:1761
+#: ../src/xz/xz.1
#, no-wrap
msgid "ARM64"
msgstr "ARM64"
#. type: tbl table
-#: ../src/xz/xz.1:1761
+#: ../src/xz/xz.1
#, no-wrap
msgid "4096-byte alignment is best"
msgstr ""
@@ -3047,1774 +1927,1315 @@ msgstr ""
";;é melhor"
#. type: tbl table
-#: ../src/xz/xz.1:1762
+#: ../src/xz/xz.1
#, no-wrap
msgid "PowerPC"
msgstr "PowerPC"
#. type: tbl table
-#: ../src/xz/xz.1:1762
+#: ../src/xz/xz.1
#, no-wrap
msgid "Big endian only"
msgstr "Somente big endian"
#. type: tbl table
-#: ../src/xz/xz.1:1763
+#: ../src/xz/xz.1
#, no-wrap
msgid "IA-64"
msgstr "IA-64"
#. type: tbl table
-#: ../src/xz/xz.1:1763
+#: ../src/xz/xz.1
#, no-wrap
msgid "16"
msgstr "16"
#. type: tbl table
-#: ../src/xz/xz.1:1763
+#: ../src/xz/xz.1
#, no-wrap
msgid "Itanium"
msgstr "Itanium"
#. type: tbl table
-#: ../src/xz/xz.1:1764
+#: ../src/xz/xz.1
#, no-wrap
msgid "SPARC"
msgstr "SPARC"
+#. type: tbl table
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "RISC-V"
+msgstr ""
+
#. type: Plain text
-#: ../src/xz/xz.1:1781
-msgid ""
-"Since the BCJ-filtered data is usually compressed with LZMA2, the "
-"compression ratio may be improved slightly if the LZMA2 options are set to "
-"match the alignment of the selected BCJ filter. For example, with the IA-64 "
-"filter, it's good to set B<pb=4> or even B<pb=4,lp=4,lc=0> with LZMA2 "
-"(2^4=16). The x86 filter is an exception; it's usually good to stick to "
-"LZMA2's default four-byte alignment when compressing x86 executables."
+#: ../src/xz/xz.1
+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. Examples:"
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "IA-64 filter has 16-byte alignment so B<pb=4,lp=4,lc=0> is good with LZMA2 (2^4=16)."
msgstr ""
-"Como os dados filtrados por BCJ geralmente são compactados com LZMA2, a taxa "
-"de compactação pode melhorar ligeiramente se as opções de LZMA2 forem "
-"definidas para corresponder ao alinhamento do filtro BCJ selecionado. Por "
-"exemplo, com o filtro IA-64, é bom definir B<pb=4> ou mesmo B<pb=4,lp=4,"
-"lc=0> com LZMA2 (2^4=16). O filtro x86 é uma exceção; geralmente é bom "
-"manter o alinhamento padrão de quatro bytes do LZMA2 ao compactar "
-"executáveis x86."
#. type: Plain text
-#: ../src/xz/xz.1:1784
+#: ../src/xz/xz.1
+msgid "RISC-V code has 2-byte or 4-byte alignment depending on whether the file contains 16-bit compressed instructions (the C extension). When 16-bit instructions are used, B<pb=2,lp=1,lc=3> or B<pb=1,lp=1,lc=3> is good. When 16-bit instructions aren't present, B<pb=2,lp=2,lc=2> is the best. B<readelf -h> can be used to check if \"RVC\" appears on the \"Flags\" line."
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "ARM64 is always 4-byte aligned so B<pb=2,lp=2,lc=2> is the best."
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The x86 filter is an exception. It's usually good to stick to LZMA2's defaults (B<pb=2,lp=0,lc=3>) when compressing x86 executables."
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
msgid "All BCJ filters support the same I<options>:"
msgstr "Todos os filtros BCJ suportam as mesmas I<opções>:"
#. type: TP
-#: ../src/xz/xz.1:1785
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<start=>I<offset>"
msgstr "B<start=>I<deslocamento>"
#. type: Plain text
-#: ../src/xz/xz.1:1799
-msgid ""
-"Specify the start I<offset> that is used when converting between relative "
-"and absolute addresses. The I<offset> must be a multiple of the alignment "
-"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 ""
-"Especifica o I<deslocamento> inicial que é usado na conversão entre "
-"endereços relativos e absolutos. O I<deslocamento> deve ser um múltiplo do "
-"alinhamento do filtro (ver tabela acima). O padrão é zero. Na prática, o "
-"padrão é bom; especificar um I<deslocamento> personalizado quase nunca é "
-"útil."
+#: ../src/xz/xz.1
+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 "Especifica o I<deslocamento> inicial que é usado na conversão entre endereços relativos e absolutos. O I<deslocamento> deve ser um múltiplo do alinhamento do filtro (ver tabela acima). O padrão é zero. Na prática, o padrão é bom; especificar um I<deslocamento> personalizado quase nunca é útil."
#. type: TP
-#: ../src/xz/xz.1:1800
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--delta>[B<=>I<options>]"
msgstr "B<--delta>[B<=>I<opções>]"
#. type: Plain text
-#: ../src/xz/xz.1:1805
-msgid ""
-"Add the Delta filter to the filter chain. The Delta filter can be only used "
-"as a non-last filter in the filter chain."
-msgstr ""
-"Adiciona o filtro Delta à cadeia de filtros. O filtro Delta só pode ser "
-"usado como filtro não-último na cadeia de filtros."
+#: ../src/xz/xz.1
+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 "Adiciona o filtro Delta à cadeia de filtros. O filtro Delta só pode ser usado como filtro não-último na cadeia de filtros."
#. type: Plain text
-#: ../src/xz/xz.1:1814
-msgid ""
-"Currently only simple byte-wise delta calculation is supported. It can be "
-"useful when compressing, for example, uncompressed bitmap images or "
-"uncompressed PCM audio. However, special purpose algorithms may give "
-"significantly better results than Delta + LZMA2. This is true especially "
-"with audio, which compresses faster and better, for example, with B<flac>(1)."
-msgstr ""
-"Atualmente, apenas o cálculo simples de delta byte a byte é suportado. Pode "
-"ser útil ao compactar, por exemplo, imagens bitmap não compactadas ou áudio "
-"PCM não compactado. No entanto, algoritmos de propósito especial podem "
-"fornecer resultados significativamente melhores do que Delta + LZMA2. Isso é "
-"verdade especialmente com áudio, que compacta mais rápido e melhor, por "
-"exemplo, com B<flac>(1)."
+#: ../src/xz/xz.1
+msgid "Currently only simple byte-wise delta calculation is supported. It can be useful when compressing, for example, uncompressed bitmap images or uncompressed PCM audio. However, special purpose algorithms may give significantly better results than Delta + LZMA2. This is true especially with audio, which compresses faster and better, for example, with B<flac>(1)."
+msgstr "Atualmente, apenas o cálculo simples de delta byte a byte é suportado. Pode ser útil ao compactar, por exemplo, imagens bitmap não compactadas ou áudio PCM não compactado. No entanto, algoritmos de propósito especial podem fornecer resultados significativamente melhores do que Delta + LZMA2. Isso é verdade especialmente com áudio, que compacta mais rápido e melhor, por exemplo, com B<flac>(1)."
#. type: Plain text
-#: ../src/xz/xz.1:1817
+#: ../src/xz/xz.1
msgid "Supported I<options>:"
msgstr "I<Opções> suportadas:"
#. type: TP
-#: ../src/xz/xz.1:1818
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<dist=>I<distance>"
msgstr "B<dist=>I<distância>"
#. type: Plain text
-#: ../src/xz/xz.1:1826
-msgid ""
-"Specify the I<distance> of the delta calculation in bytes. I<distance> must "
-"be 1\\(en256. The default is 1."
-msgstr ""
-"Especifica a I<distância> do cálculo delta em bytes. I<distância> deve ser "
-"1\\(en256. O padrão é 1."
+#: ../src/xz/xz.1
+msgid "Specify the I<distance> of the delta calculation in bytes. I<distance> must be 1\\(en256. The default is 1."
+msgstr "Especifica a I<distância> do cálculo delta em bytes. I<distância> deve ser 1\\(en256. O padrão é 1."
#. type: Plain text
-#: ../src/xz/xz.1:1831
-msgid ""
-"For example, with B<dist=2> and eight-byte input A1 B1 A2 B3 A3 B5 A4 B7, "
-"the output will be A1 B1 01 02 01 02 01 02."
-msgstr ""
-"Por exemplo, com B<dist=2> e entrada de oito bytes A1 B1 A2 B3 A3 B5 A4 B7, "
-"a saída será A1 B1 01 02 01 02 01 02."
+#: ../src/xz/xz.1
+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 "Por exemplo, com B<dist=2> e entrada de oito bytes A1 B1 A2 B3 A3 B5 A4 B7, a saída será A1 B1 01 02 01 02 01 02."
#. type: SS
-#: ../src/xz/xz.1:1833
+#: ../src/xz/xz.1
#, no-wrap
msgid "Other options"
msgstr "Outras opções"
#. type: TP
-#: ../src/xz/xz.1:1834 ../src/xzdec/xzdec.1:83
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-q>, B<--quiet>"
msgstr "B<-q>, B<--quiet>"
#. type: Plain text
-#: ../src/xz/xz.1:1841
-msgid ""
-"Suppress warnings and notices. Specify this twice to suppress errors too. "
-"This option has no effect on the exit status. That is, even if a warning "
-"was suppressed, the exit status to indicate a warning is still used."
-msgstr ""
-"Suprime avisos e avisos. Especifique isso duas vezes para suprimir erros "
-"também. Esta opção não tem efeito no status de saída. Ou seja, mesmo que um "
-"aviso tenha sido suprimido, o status de saída para indicar um aviso ainda é "
-"usado."
+#: ../src/xz/xz.1
+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 "Suprime avisos e avisos. Especifique isso duas vezes para suprimir erros também. Esta opção não tem efeito no status de saída. Ou seja, mesmo que um aviso tenha sido suprimido, o status de saída para indicar um aviso ainda é usado."
#. type: TP
-#: ../src/xz/xz.1:1841
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-v>, B<--verbose>"
msgstr "B<-v>, B<--verbose>"
#. type: Plain text
-#: ../src/xz/xz.1:1850
-msgid ""
-"Be verbose. If standard error is connected to a terminal, B<xz> will "
-"display a progress indicator. Specifying B<--verbose> twice will give even "
-"more verbose output."
-msgstr ""
-"Ser detalhado. Se o erro padrão estiver conectado a um terminal, B<xz> "
-"exibirá um indicador de progresso. Especifique B<--verbose> duas vezes dará "
-"uma saída ainda mais detalhada."
+#: ../src/xz/xz.1
+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 "Ser detalhado. Se o erro padrão estiver conectado a um terminal, B<xz> exibirá um indicador de progresso. Especifique B<--verbose> duas vezes dará uma saída ainda mais detalhada."
#. type: Plain text
-#: ../src/xz/xz.1:1852
+#: ../src/xz/xz.1
msgid "The progress indicator shows the following information:"
msgstr "O indicador de progresso mostra as seguintes informações:"
#. type: Plain text
-#: ../src/xz/xz.1:1857
-msgid ""
-"Completion percentage is shown if the size of the input file is known. That "
-"is, the percentage cannot be shown in pipes."
-msgstr ""
-"A porcentagem de conclusão é mostrada se o tamanho do arquivo de entrada for "
-"conhecido. Ou seja, a porcentagem não pode ser mostrada em encadeamentos "
-"(pipe)."
+#: ../src/xz/xz.1
+msgid "Completion percentage is shown if the size of the input file is known. That is, the percentage cannot be shown in pipes."
+msgstr "A porcentagem de conclusão é mostrada se o tamanho do arquivo de entrada for conhecido. Ou seja, a porcentagem não pode ser mostrada em encadeamentos (pipe)."
#. type: Plain text
-#: ../src/xz/xz.1:1860
-msgid ""
-"Amount of compressed data produced (compressing) or consumed "
-"(decompressing)."
-msgstr ""
-"Quantidade de dados compactados produzidos (compactando) ou consumidos "
-"(descompactando)."
+#: ../src/xz/xz.1
+msgid "Amount of compressed data produced (compressing) or consumed (decompressing)."
+msgstr "Quantidade de dados compactados produzidos (compactando) ou consumidos (descompactando)."
#. type: Plain text
-#: ../src/xz/xz.1:1863
-msgid ""
-"Amount of uncompressed data consumed (compressing) or produced "
-"(decompressing)."
-msgstr ""
-"Quantidade de dados não compactados consumidos (compactação) ou produzidos "
-"(descompactação)."
+#: ../src/xz/xz.1
+msgid "Amount of uncompressed data consumed (compressing) or produced (decompressing)."
+msgstr "Quantidade de dados não compactados consumidos (compactação) ou produzidos (descompactação)."
#. type: Plain text
-#: ../src/xz/xz.1:1867
-msgid ""
-"Compression ratio, which is calculated by dividing the amount of compressed "
-"data processed so far by the amount of uncompressed data processed so far."
-msgstr ""
-"Taxa de compactação, que é calculada dividindo a quantidade de dados "
-"compactados processados até o momento pela quantidade de dados não "
-"compactados processados até o momento."
+#: ../src/xz/xz.1
+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 "Taxa de compactação, que é calculada dividindo a quantidade de dados compactados processados até o momento pela quantidade de dados não compactados processados até o momento."
#. type: Plain text
-#: ../src/xz/xz.1:1874
-msgid ""
-"Compression or decompression speed. This is measured as the amount of "
-"uncompressed data consumed (compression) or produced (decompression) per "
-"second. It is shown after a few seconds have passed since B<xz> started "
-"processing the file."
-msgstr ""
-"Velocidade de compactação ou descompactação. Isso é medido como a quantidade "
-"de dados não compactados consumidos (compactação) ou produzidos "
-"(descompactação) por segundo. É mostrado após alguns segundos desde que "
-"B<xz> começou a processar o arquivo."
+#: ../src/xz/xz.1
+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 "Velocidade de compactação ou descompactação. Isso é medido como a quantidade de dados não compactados consumidos (compactação) ou produzidos (descompactação) por segundo. É mostrado após alguns segundos desde que B<xz> começou a processar o arquivo."
#. type: Plain text
-#: ../src/xz/xz.1:1876
+#: ../src/xz/xz.1
msgid "Elapsed time in the format M:SS or H:MM:SS."
msgstr "Tempo decorrido no formato M:SS ou H:MM:SS."
#. type: Plain text
-#: ../src/xz/xz.1:1884
-msgid ""
-"Estimated remaining time is shown only when the size of the input file is "
-"known and a couple of seconds have already passed since B<xz> started "
-"processing the file. The time is shown in a less precise format which never "
-"has any colons, for example, 2 min 30 s."
-msgstr ""
-"O tempo restante estimado é mostrado apenas quando o tamanho do arquivo de "
-"entrada é conhecido e alguns segundos já se passaram desde que B<xz> começou "
-"a processar o arquivo. A hora é mostrada em um formato menos preciso que "
-"nunca tem dois pontos, por exemplo, 2 min 30 s."
+#: ../src/xz/xz.1
+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, for example, 2 min 30 s."
+msgstr "O tempo restante estimado é mostrado apenas quando o tamanho do arquivo de entrada é conhecido e alguns segundos já se passaram desde que B<xz> começou a processar o arquivo. A hora é mostrada em um formato menos preciso que nunca tem dois pontos, por exemplo, 2 min 30 s."
#. type: Plain text
-#: ../src/xz/xz.1:1899
-msgid ""
-"When standard error is not a terminal, B<--verbose> will make B<xz> print "
-"the filename, compressed size, uncompressed size, compression ratio, and "
-"possibly also the speed and elapsed time on a single line to standard error "
-"after compressing or decompressing the file. The speed and elapsed time are "
-"included only when the operation took at least a few seconds. If the "
-"operation didn't finish, for example, due to user interruption, also the "
-"completion percentage is printed if the size of the input file is known."
-msgstr ""
-"Quando o erro padrão não é um terminal, B<--verbose> fará com que B<xz> "
-"imprima o nome do arquivo, tamanho compactado, tamanho não compactado, taxa "
-"de compactação e possivelmente também a velocidade e o tempo decorrido em "
-"uma única linha para o erro padrão após a compactação ou descompactando o "
-"arquivo. A velocidade e o tempo decorrido são incluídos apenas quando a "
-"operação leva pelo menos alguns segundos. Se a operação não foi concluída, "
-"por exemplo, devido à interrupção do usuário, também é impressa a "
-"porcentagem de conclusão se o tamanho do arquivo de entrada for conhecido."
+#: ../src/xz/xz.1
+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, for example, due to user interruption, also the completion percentage is printed if the size of the input file is known."
+msgstr "Quando o erro padrão não é um terminal, B<--verbose> fará com que B<xz> imprima o nome do arquivo, tamanho compactado, tamanho não compactado, taxa de compactação e possivelmente também a velocidade e o tempo decorrido em uma única linha para o erro padrão após a compactação ou descompactando o arquivo. A velocidade e o tempo decorrido são incluídos apenas quando a operação leva pelo menos alguns segundos. Se a operação não foi concluída, por exemplo, devido à interrupção do usuário, também é impressa a porcentagem de conclusão se o tamanho do arquivo de entrada for conhecido."
#. type: TP
-#: ../src/xz/xz.1:1899 ../src/xzdec/xzdec.1:89
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-Q>, B<--no-warn>"
msgstr "B<-Q>, B<--no-warn>"
#. type: Plain text
-#: ../src/xz/xz.1:1909
-msgid ""
-"Don't set the exit status to 2 even if a condition worth a warning was "
-"detected. This option doesn't affect the verbosity level, thus both B<--"
-"quiet> and B<--no-warn> have to be used to not display warnings and to not "
-"alter the exit status."
-msgstr ""
-"Não define o status de saída como 2, mesmo que uma condição digna de um "
-"aviso tenha sido detectada. Esta opção não afeta o nível de detalhamento, "
-"portanto, tanto B<--quiet> quanto B<--no-warn> devem ser usados para não "
-"exibir avisos e não alterar o status de saída."
+#: ../src/xz/xz.1
+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 "Não define o status de saída como 2, mesmo que uma condição digna de um aviso tenha sido detectada. Esta opção não afeta o nível de detalhamento, portanto, tanto B<--quiet> quanto B<--no-warn> devem ser usados para não exibir avisos e não alterar o status de saída."
#. type: TP
-#: ../src/xz/xz.1:1909
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--robot>"
msgstr "B<--robot>"
#. type: Plain text
-#: ../src/xz/xz.1:1921
-msgid ""
-"Print messages in a machine-parsable format. This is intended to ease "
-"writing frontends that want to use B<xz> instead of liblzma, which may be "
-"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 ""
-"Imprime mensagens em um formato analisável por máquina. Isso visa facilitar "
-"a criação de frontends que desejam usar B<xz> em vez de liblzma, o que pode "
-"ser o caso de vários scripts. A saída com esta opção habilitada deve ser "
-"estável em versões B<xz>. Consulte a seção B<MODO ROBÔ> para obter detalhes."
+#: ../src/xz/xz.1
+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 "Imprime mensagens em um formato analisável por máquina. Isso visa facilitar a criação de frontends que desejam usar B<xz> em vez de liblzma, o que pode ser o caso de vários scripts. A saída com esta opção habilitada deve ser estável em versões B<xz>. Consulte a seção B<MODO ROBÔ> para obter detalhes."
#. type: TP
-#: ../src/xz/xz.1:1921
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--info-memory>"
msgstr "B<--info-memory>"
#. type: Plain text
-#: ../src/xz/xz.1:1928
-msgid ""
-"Display, in human-readable format, how much physical memory (RAM) and how "
-"many processor threads B<xz> thinks the system has and the memory usage "
-"limits for compression and decompression, and exit successfully."
-msgstr ""
-"Exibe, em formato legível por humanos, quanta memória física (RAM) e quantos "
-"threads de processador B<xz> acredita que o sistema possui e os limites de "
-"uso de memória para compactação e descompactação e saia com êxito."
+#: ../src/xz/xz.1
+msgid "Display, in human-readable format, how much physical memory (RAM) and how many processor threads B<xz> thinks the system has and the memory usage limits for compression and decompression, and exit successfully."
+msgstr "Exibe, em formato legível por humanos, quanta memória física (RAM) e quantos threads de processador B<xz> acredita que o sistema possui e os limites de uso de memória para compactação e descompactação e saia com êxito."
#. type: TP
-#: ../src/xz/xz.1:1928 ../src/xzdec/xzdec.1:96
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-h>, B<--help>"
msgstr "B<-h>, B<--help>"
#. type: Plain text
-#: ../src/xz/xz.1:1932
-msgid ""
-"Display a help message describing the most commonly used options, and exit "
-"successfully."
-msgstr ""
-"Exibe uma mensagem de ajuda descrevendo as opções mais usadas e sai com "
-"sucesso."
+#: ../src/xz/xz.1
+msgid "Display a help message describing the most commonly used options, and exit successfully."
+msgstr "Exibe uma mensagem de ajuda descrevendo as opções mais usadas e sai com sucesso."
#. type: TP
-#: ../src/xz/xz.1:1932
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-H>, B<--long-help>"
msgstr "B<-H>, B<--long-help>"
#. type: Plain text
-#: ../src/xz/xz.1:1937
-msgid ""
-"Display a help message describing all features of B<xz>, and exit "
-"successfully"
-msgstr ""
-"Exibe uma mensagem de ajuda descrevendo todos os recursos de B<xz> e sai com "
-"sucesso"
+#: ../src/xz/xz.1
+msgid "Display a help message describing all features of B<xz>, and exit successfully"
+msgstr "Exibe uma mensagem de ajuda descrevendo todos os recursos de B<xz> e sai com sucesso"
#. type: TP
-#: ../src/xz/xz.1:1937 ../src/xzdec/xzdec.1:99
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-V>, B<--version>"
msgstr "B<-V>, B<--version>"
#. type: Plain text
-#: ../src/xz/xz.1:1946
-msgid ""
-"Display the version number of B<xz> and liblzma in human readable format. "
-"To get machine-parsable output, specify B<--robot> before B<--version>."
-msgstr ""
-"Exibe o número da versão de B<xz> e liblzma em formato legível por humanos. "
-"Para obter uma saída analisável por máquina, especifique B<--robot> antes de "
-"B<--version>."
+#: ../src/xz/xz.1
+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 "Exibe o número da versão de B<xz> e liblzma em formato legível por humanos. Para obter uma saída analisável por máquina, especifique B<--robot> antes de B<--version>."
#. type: SH
-#: ../src/xz/xz.1:1947
+#: ../src/xz/xz.1
#, no-wrap
msgid "ROBOT MODE"
msgstr "MODO ROBÔ"
#. type: Plain text
-#: ../src/xz/xz.1:1963
-msgid ""
-"The robot mode is activated with the B<--robot> option. It makes the output "
-"of B<xz> easier to parse by other programs. Currently B<--robot> is "
-"supported only together with B<--version>, B<--info-memory>, and B<--list>. "
-"It will be supported for compression and decompression in the future."
-msgstr ""
-"O modo robô é ativado com a opção B<--robot>. Isso torna a saída de B<xz> "
-"mais fácil de ser analisada por outros programas. Atualmente B<--robot> é "
-"suportado apenas junto com B<--version>, B<--info-memory> e B<--list>. Ele "
-"terá suporte para compactação e descompactação no futuro."
-
-#. type: SS
-#: ../src/xz/xz.1:1964
-#, no-wrap
-msgid "Version"
-msgstr "Versão"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1969
-#, fuzzy
-#| msgid ""
-#| "B<xz --robot --version> will print the version number of B<xz> and "
-#| "liblzma in the following format:"
-msgid ""
-"B<xz --robot --version> prints the version number of B<xz> and liblzma in "
-"the following format:"
-msgstr ""
-"B<xz --robot --version> imprimirá o número da versão de B<xz> e liblzma no "
-"seguinte formato:"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1971
-msgid "B<XZ_VERSION=>I<XYYYZZZS>"
-msgstr "B<XZ_VERSION=>I<XYYYZZZS>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1973
-msgid "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
-msgstr "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
-
-#. type: TP
-#: ../src/xz/xz.1:1973
-#, no-wrap
-msgid "I<X>"
-msgstr "I<X>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1976
-msgid "Major version."
-msgstr "Versão principal."
-
-#. type: TP
-#: ../src/xz/xz.1:1976
-#, no-wrap
-msgid "I<YYY>"
-msgstr "I<YYY>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1981
-msgid ""
-"Minor version. Even numbers are stable. Odd numbers are alpha or beta "
-"versions."
-msgstr ""
-"Versão menor. Números pares são estáveis. Os números ímpares são versões "
-"alfa ou beta."
-
-#. type: TP
-#: ../src/xz/xz.1:1981
-#, no-wrap
-msgid "I<ZZZ>"
-msgstr "I<ZZZ>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1985
-msgid ""
-"Patch level for stable releases or just a counter for development releases."
-msgstr ""
-"Nível de patch para versões estáveis ou apenas um contador para versões de "
-"desenvolvimento."
-
-#. type: TP
-#: ../src/xz/xz.1:1985
-#, no-wrap
-msgid "I<S>"
-msgstr "I<S>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1993
-msgid ""
-"Stability. 0 is alpha, 1 is beta, and 2 is stable. I<S> should be always 2 "
-"when I<YYY> is even."
-msgstr ""
-"Estabilidade. 0 é alfa, 1 é beta e 2 é estável. I<S> deve ser sempre 2 "
-"quando I<YYY> for par."
-
-#. type: Plain text
-#: ../src/xz/xz.1:1998
-msgid ""
-"I<XYYYZZZS> are the same on both lines if B<xz> and liblzma are from the "
-"same XZ Utils release."
-msgstr ""
-"I<XYYYZZZS> são iguais em ambas as linhas se B<xz> e liblzma forem da mesma "
-"versão do XZ Utils."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2004
-msgid "Examples: 4.999.9beta is B<49990091> and 5.0.0 is B<50000002>."
-msgstr "Exemplos: 4.999.9beta é B<49990091> e 5.0.0 é B<50000002>."
-
-#. type: SS
-#: ../src/xz/xz.1:2005
-#, no-wrap
-msgid "Memory limit information"
-msgstr "Informações de limite de memória"
-
-#. type: Plain text
-#: ../src/xz/xz.1:2008
-#, fuzzy
-#| msgid ""
-#| "B<xz --robot --info-memory> prints a single line with three tab-separated "
-#| "columns:"
-msgid ""
-"B<xz --robot --info-memory> prints a single line with multiple tab-separated "
-"columns:"
-msgstr ""
-"B<xz --robot --info-memory> imprime uma única linha com três colunas "
-"separadas por tabulações:"
-
-#. type: IP
-#: ../src/xz/xz.1:2008
-#, no-wrap
-msgid "1."
-msgstr "1."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2010
-msgid "Total amount of physical memory (RAM) in bytes."
-msgstr "Quantidade total de memória física (RAM) em bytes."
-
-#. type: IP
-#: ../src/xz/xz.1:2010 ../src/xz/xz.1:2125 ../src/xz/xz.1:2162
-#: ../src/xz/xz.1:2188 ../src/xz/xz.1:2258 ../src/xz/xz.1:2285
-#, no-wrap
-msgid "2."
-msgstr "2."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2017
-msgid ""
-"Memory usage limit for compression in bytes (B<--memlimit-compress>). A "
-"special value of B<0> indicates the default setting which for single-"
-"threaded mode is the same as no limit."
-msgstr ""
-"Limite de uso de memória para compactação em bytes (B<--memlimit-compress>). "
-"Um valor especial de B<0> indica a configuração padrão que para o modo de "
-"thread única é o mesmo que sem limite."
-
-#. type: IP
-#: ../src/xz/xz.1:2017 ../src/xz/xz.1:2127 ../src/xz/xz.1:2164
-#: ../src/xz/xz.1:2190 ../src/xz/xz.1:2263 ../src/xz/xz.1:2287
-#, no-wrap
-msgid "3."
-msgstr "3."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2024
-msgid ""
-"Memory usage limit for decompression in bytes (B<--memlimit-decompress>). A "
-"special value of B<0> indicates the default setting which for single-"
-"threaded mode is the same as no limit."
-msgstr ""
-"Limite de uso de memória para descompactação em bytes (B<--memlimit-"
-"decompress>). Um valor especial de B<0> indica a configuração padrão que "
-"para o modo de thread única é o mesmo que sem limite."
-
-#. type: IP
-#: ../src/xz/xz.1:2024 ../src/xz/xz.1:2129 ../src/xz/xz.1:2166
-#: ../src/xz/xz.1:2193 ../src/xz/xz.1:2273 ../src/xz/xz.1:2289
-#, no-wrap
-msgid "4."
-msgstr "4."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2036
-msgid ""
-"Since B<xz> 5.3.4alpha: Memory usage for multi-threaded decompression in "
-"bytes (B<--memlimit-mt-decompress>). This is never zero because a system-"
-"specific default value shown in the column 5 is used if no limit has been "
-"specified explicitly. This is also never greater than the value in the "
-"column 3 even if a larger value has been specified with B<--memlimit-mt-"
-"decompress>."
-msgstr ""
-"Desde B<xz> 5.3.4alpha: Uso de memória para descompactação com várias thread "
-"em bytes (B<--memlimit-mt-decompress>). Isso nunca é zero porque um valor "
-"padrão específico do sistema mostrado na coluna 5 é usado se nenhum limite "
-"for especificado explicitamente. Isso também nunca é maior que o valor na "
-"coluna 3, mesmo que um valor maior tenha sido especificado com B<--memlimit-"
-"mt-decompress>."
-
-#. type: IP
-#: ../src/xz/xz.1:2036 ../src/xz/xz.1:2131 ../src/xz/xz.1:2168
-#: ../src/xz/xz.1:2195 ../src/xz/xz.1:2291
-#, no-wrap
-msgid "5."
-msgstr "5."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2048
-msgid ""
-"Since B<xz> 5.3.4alpha: A system-specific default memory usage limit that is "
-"used to limit the number of threads when compressing with an automatic "
-"number of threads (B<--threads=0>) and no memory usage limit has been "
-"specified (B<--memlimit-compress>). This is also used as the default value "
-"for B<--memlimit-mt-decompress>."
-msgstr ""
-"Desde B<xz> 5.3.4alpha: Um limite de uso de memória padrão específico do "
-"sistema que é usado para limitar o número de threads ao compactar com um "
-"número automático de threads (B<--threads=0>) e nenhum limite de uso de "
-"memória foi especificado (B<--memlimit-compress>). Isso também é usado como "
-"o valor padrão para B<--memlimit-mt-decompress>."
-
-#. type: IP
-#: ../src/xz/xz.1:2048 ../src/xz/xz.1:2133 ../src/xz/xz.1:2170
-#: ../src/xz/xz.1:2197 ../src/xz/xz.1:2293
-#, no-wrap
-msgid "6."
-msgstr "6."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2053
-msgid "Since B<xz> 5.3.4alpha: Number of available processor threads."
-msgstr "Desde B<xz> 5.3.4alpha: Número de threads de processador disponíveis."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2057
-msgid ""
-"In the future, the output of B<xz --robot --info-memory> may have more "
-"columns, but never more than a single line."
+#: ../src/xz/xz.1
+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<--list>, B<--filters-help>, B<--info-memory>, and B<--version>. It will be supported for compression and decompression in the future."
msgstr ""
-"No futuro, a saída de B<xz --robot --info-memory> pode ter mais colunas, mas "
-"nunca mais do que uma única linha."
#. type: SS
-#: ../src/xz/xz.1:2058
+#: ../src/xz/xz.1
#, no-wrap
msgid "List mode"
msgstr "Modo lista"
#. type: Plain text
-#: ../src/xz/xz.1:2063
-msgid ""
-"B<xz --robot --list> uses tab-separated output. The first column of every "
-"line has a string that indicates the type of the information found on that "
-"line:"
-msgstr ""
-"B<xz --robot --list> usa saída separada por tabulações. A primeira coluna de "
-"cada linha possui uma string que indica o tipo de informação encontrada "
-"naquela linha:"
+#: ../src/xz/xz.1
+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> usa saída separada por tabulações. A primeira coluna de cada linha possui uma string que indica o tipo de informação encontrada naquela linha:"
#. type: TP
-#: ../src/xz/xz.1:2063
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<name>"
msgstr "B<name>"
#. type: Plain text
-#: ../src/xz/xz.1:2067
-msgid ""
-"This is always the first line when starting to list a file. The second "
-"column on the line is the filename."
-msgstr ""
-"Esta é sempre a primeira linha ao começar a listar um arquivo. A segunda "
-"coluna na linha é o nome do arquivo."
+#: ../src/xz/xz.1
+msgid "This is always the first line when starting to list a file. The second column on the line is the filename."
+msgstr "Esta é sempre a primeira linha ao começar a listar um arquivo. A segunda coluna na linha é o nome do arquivo."
#. type: TP
-#: ../src/xz/xz.1:2067
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<file>"
msgstr "B<file>"
#. type: Plain text
-#: ../src/xz/xz.1:2075
-msgid ""
-"This line contains overall information about the B<.xz> file. This line is "
-"always printed after the B<name> line."
-msgstr ""
-"Esta linha contém informações gerais sobre o arquivo B<.xz>. Esta linha é "
-"sempre impressa após a linha B<name>."
+#: ../src/xz/xz.1
+msgid "This line contains overall information about the B<.xz> file. This line is always printed after the B<name> line."
+msgstr "Esta linha contém informações gerais sobre o arquivo B<.xz>. Esta linha é sempre impressa após a linha B<name>."
#. type: TP
-#: ../src/xz/xz.1:2075
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<stream>"
msgstr "B<stream>"
#. type: Plain text
-#: ../src/xz/xz.1:2085
-msgid ""
-"This line type is used only when B<--verbose> was specified. There are as "
-"many B<stream> lines as there are streams in the B<.xz> file."
-msgstr ""
-"Este tipo de linha é usado somente quando B<--verbose> foi especificado. "
-"Existem tantas linhas de B<stream> quanto fluxos no arquivo B<.xz>."
+#: ../src/xz/xz.1
+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 "Este tipo de linha é usado somente quando B<--verbose> foi especificado. Existem tantas linhas de B<stream> quanto fluxos no arquivo B<.xz>."
#. type: TP
-#: ../src/xz/xz.1:2085
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<block>"
msgstr "B<block>"
#. type: Plain text
-#: ../src/xz/xz.1:2100
-msgid ""
-"This line type is used only when B<--verbose> was specified. There are as "
-"many B<block> lines as there are blocks in the B<.xz> file. The B<block> "
-"lines are shown after all the B<stream> lines; different line types are not "
-"interleaved."
-msgstr ""
-"Este tipo de linha é usado somente quando B<--verbose> foi especificado. "
-"Existem tantas linhas B<block> quanto blocos no arquivo B<.xz>. As linhas "
-"B<block> são mostradas após todas as linhas B<stream>; diferentes tipos de "
-"linha não são intercalados."
+#: ../src/xz/xz.1
+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 "Este tipo de linha é usado somente quando B<--verbose> foi especificado. Existem tantas linhas B<block> quanto blocos no arquivo B<.xz>. As linhas B<block> são mostradas após todas as linhas B<stream>; diferentes tipos de linha não são intercalados."
#. type: TP
-#: ../src/xz/xz.1:2100
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<summary>"
msgstr "B<summary>"
#. type: Plain text
-#: ../src/xz/xz.1:2115
-msgid ""
-"This line type is used only when B<--verbose> was specified twice. This "
-"line is printed after all B<block> lines. Like the B<file> line, the "
-"B<summary> line contains overall information about the B<.xz> file."
-msgstr ""
-"Este tipo de linha é usado apenas quando B<--verbose> foi especificado duas "
-"vezes. Esta linha é impressa após todas as linhas de B<block>. Assim como a "
-"linha B<arquivo>, a linha B<summary> contém informações gerais sobre o "
-"arquivo B<.xz>."
+#: ../src/xz/xz.1
+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 "Este tipo de linha é usado apenas quando B<--verbose> foi especificado duas vezes. Esta linha é impressa após todas as linhas de B<block>. Assim como a linha B<arquivo>, a linha B<summary> contém informações gerais sobre o arquivo B<.xz>."
#. type: TP
-#: ../src/xz/xz.1:2115
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<totals>"
msgstr "B<totals>"
#. type: Plain text
-#: ../src/xz/xz.1:2119
-msgid ""
-"This line is always the very last line of the list output. It shows the "
-"total counts and sizes."
-msgstr ""
-"Esta linha é sempre a última linha da saída da lista. Ele mostra as "
-"contagens totais e tamanhos."
+#: ../src/xz/xz.1
+msgid "This line is always the very last line of the list output. It shows the total counts and sizes."
+msgstr "Esta linha é sempre a última linha da saída da lista. Ele mostra as contagens totais e tamanhos."
#. type: Plain text
-#: ../src/xz/xz.1:2123
+#: ../src/xz/xz.1
msgid "The columns of the B<file> lines:"
msgstr "As colunas das linhas B<file>:"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "2."
+msgstr "2."
+
#. type: Plain text
-#: ../src/xz/xz.1:2127
+#: ../src/xz/xz.1
msgid "Number of streams in the file"
msgstr "Número de fluxos no arquivo"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "3."
+msgstr "3."
+
#. type: Plain text
-#: ../src/xz/xz.1:2129
+#: ../src/xz/xz.1
msgid "Total number of blocks in the stream(s)"
msgstr "Número total de blocos no(s) fluxo(s)"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "4."
+msgstr "4."
+
#. type: Plain text
-#: ../src/xz/xz.1:2131
+#: ../src/xz/xz.1
msgid "Compressed size of the file"
msgstr "Tamanho compactado do arquivo"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "5."
+msgstr "5."
+
#. type: Plain text
-#: ../src/xz/xz.1:2133
+#: ../src/xz/xz.1
msgid "Uncompressed size of the file"
msgstr "Uncompressed size of the file"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "6."
+msgstr "6."
+
#. type: Plain text
-#: ../src/xz/xz.1:2139
-msgid ""
-"Compression ratio, for example, B<0.123>. If ratio is over 9.999, three "
-"dashes (B<--->) are displayed instead of the ratio."
-msgstr ""
-"Taxa de compactação, por exemplo, B<0.123>. Se a proporção for superior a "
-"9.999, serão exibidos três traços (B<--->) em vez da proporção."
+#: ../src/xz/xz.1
+msgid "Compression ratio, for example, B<0.123>. If ratio is over 9.999, three dashes (B<--->) are displayed instead of the ratio."
+msgstr "Taxa de compactação, por exemplo, B<0.123>. Se a proporção for superior a 9.999, serão exibidos três traços (B<--->) em vez da proporção."
#. type: IP
-#: ../src/xz/xz.1:2139 ../src/xz/xz.1:2172 ../src/xz/xz.1:2199
-#: ../src/xz/xz.1:2295
+#: ../src/xz/xz.1
#, no-wrap
msgid "7."
msgstr "7."
#. type: Plain text
-#: ../src/xz/xz.1:2152
-msgid ""
-"Comma-separated list of integrity check names. The following strings are "
-"used for the known check types: B<None>, B<CRC32>, B<CRC64>, and "
-"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 ""
-"Lista separada por vírgulas de nomes de verificação de integridade. As "
-"seguintes strings são usadas para os tipos de verificação conhecidos: "
-"B<None>, B<CRC32>, B<CRC64> e B<SHA-256>. Para tipos de verificações "
-"desconhecidos, B<Unknown->I<N> é usado, onde I<N> é o ID do cheque como um "
-"número decimal (um ou dois dígitos)."
+#: ../src/xz/xz.1
+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 "Lista separada por vírgulas de nomes de verificação de integridade. As seguintes strings são usadas para os tipos de verificação conhecidos: B<None>, B<CRC32>, B<CRC64> e B<SHA-256>. Para tipos de verificações desconhecidos, B<Unknown->I<N> é usado, onde I<N> é o ID do cheque como um número decimal (um ou dois dígitos)."
#. type: IP
-#: ../src/xz/xz.1:2152 ../src/xz/xz.1:2174 ../src/xz/xz.1:2201
-#: ../src/xz/xz.1:2298
+#: ../src/xz/xz.1
#, no-wrap
msgid "8."
msgstr "8."
#. type: Plain text
-#: ../src/xz/xz.1:2154
+#: ../src/xz/xz.1
msgid "Total size of stream padding in the file"
msgstr "Tamanho total do preenchimento de fluxo no arquivo"
#. type: Plain text
-#: ../src/xz/xz.1:2160
+#: ../src/xz/xz.1
msgid "The columns of the B<stream> lines:"
msgstr "As colunas das linhas B<stream>:"
#. type: Plain text
-#: ../src/xz/xz.1:2164
+#: ../src/xz/xz.1
msgid "Stream number (the first stream is 1)"
msgstr "Número do fluxo (o primeiro fluxo é 1)"
#. type: Plain text
-#: ../src/xz/xz.1:2166
+#: ../src/xz/xz.1
msgid "Number of blocks in the stream"
msgstr "Número de blocos no fluxo"
#. type: Plain text
-#: ../src/xz/xz.1:2168
+#: ../src/xz/xz.1
msgid "Compressed start offset"
msgstr "Deslocamento inicial compactado"
#. type: Plain text
-#: ../src/xz/xz.1:2170
+#: ../src/xz/xz.1
msgid "Uncompressed start offset"
msgstr "Deslocamento inicial descompactado"
#. type: Plain text
-#: ../src/xz/xz.1:2172
+#: ../src/xz/xz.1
msgid "Compressed size (does not include stream padding)"
msgstr "Tamanho compactado (não inclui preenchimento de fluxo)"
#. type: Plain text
-#: ../src/xz/xz.1:2174 ../src/xz/xz.1:2203 ../src/xz/xz.1:2293
+#: ../src/xz/xz.1
msgid "Uncompressed size"
msgstr "Tamanho descompactado"
#. type: Plain text
-#: ../src/xz/xz.1:2176 ../src/xz/xz.1:2205
+#: ../src/xz/xz.1
msgid "Compression ratio"
msgstr "Taxa de compactação"
#. type: IP
-#: ../src/xz/xz.1:2176 ../src/xz/xz.1:2203 ../src/xz/xz.1:2300
+#: ../src/xz/xz.1
#, no-wrap
msgid "9."
msgstr "9."
#. type: Plain text
-#: ../src/xz/xz.1:2178 ../src/xz/xz.1:2207
+#: ../src/xz/xz.1
msgid "Name of the integrity check"
msgstr "Nome da verificação de integridade"
#. type: IP
-#: ../src/xz/xz.1:2178 ../src/xz/xz.1:2205 ../src/xz/xz.1:2316
+#: ../src/xz/xz.1
#, no-wrap
msgid "10."
msgstr "10."
#. type: Plain text
-#: ../src/xz/xz.1:2180
+#: ../src/xz/xz.1
msgid "Size of stream padding"
msgstr "Tamanho do preenchimento do fluxo"
#. type: Plain text
-#: ../src/xz/xz.1:2186
+#: ../src/xz/xz.1
msgid "The columns of the B<block> lines:"
msgstr "As colunas das linhas B<block>:"
#. type: Plain text
-#: ../src/xz/xz.1:2190
+#: ../src/xz/xz.1
msgid "Number of the stream containing this block"
msgstr "Número do fluxo que contém este bloco"
#. type: Plain text
-#: ../src/xz/xz.1:2193
-msgid ""
-"Block number relative to the beginning of the stream (the first block is 1)"
+#: ../src/xz/xz.1
+msgid "Block number relative to the beginning of the stream (the first block is 1)"
msgstr "Número do bloco relativo ao início do fluxo (o primeiro bloco é 1)"
#. type: Plain text
-#: ../src/xz/xz.1:2195
+#: ../src/xz/xz.1
msgid "Block number relative to the beginning of the file"
msgstr "Número do bloco relativo ao início do arquivo"
#. type: Plain text
-#: ../src/xz/xz.1:2197
+#: ../src/xz/xz.1
msgid "Compressed start offset relative to the beginning of the file"
msgstr "Deslocamento inicial compactado em relação ao início do arquivo"
#. type: Plain text
-#: ../src/xz/xz.1:2199
+#: ../src/xz/xz.1
msgid "Uncompressed start offset relative to the beginning of the file"
msgstr "Deslocamento inicial descompactado em relação ao início do arquivo"
#. type: Plain text
-#: ../src/xz/xz.1:2201
+#: ../src/xz/xz.1
msgid "Total compressed size of the block (includes headers)"
msgstr "Tamanho total compactado do bloco (inclui cabeçalhos)"
#. type: Plain text
-#: ../src/xz/xz.1:2219
-msgid ""
-"If B<--verbose> was specified twice, additional columns are included on the "
-"B<block> lines. These are not displayed with a single B<--verbose>, because "
-"getting this information requires many seeks and can thus be slow:"
-msgstr ""
-"Se B<--verbose> for especificado duas vezes, colunas adicionais serão "
-"incluídas nas linhas B<block>. Eles não são exibidos com um único B<--"
-"verbose>, porque obter essas informações requer muitas buscas e, portanto, "
-"pode ser lento:"
+#: ../src/xz/xz.1
+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 "Se B<--verbose> for especificado duas vezes, colunas adicionais serão incluídas nas linhas B<block>. Eles não são exibidos com um único B<--verbose>, porque obter essas informações requer muitas buscas e, portanto, pode ser lento:"
#. type: IP
-#: ../src/xz/xz.1:2221 ../src/xz/xz.1:2321
+#: ../src/xz/xz.1
#, no-wrap
msgid "11."
msgstr "11."
#. type: Plain text
-#: ../src/xz/xz.1:2223
+#: ../src/xz/xz.1
msgid "Value of the integrity check in hexadecimal"
msgstr "Valor da verificação de integridade em hexadecimal"
#. type: IP
-#: ../src/xz/xz.1:2223 ../src/xz/xz.1:2331
+#: ../src/xz/xz.1
#, no-wrap
msgid "12."
msgstr "12."
#. type: Plain text
-#: ../src/xz/xz.1:2225
+#: ../src/xz/xz.1
msgid "Block header size"
msgstr "Tamanho do cabeçalho do bloco"
#. type: IP
-#: ../src/xz/xz.1:2225
+#: ../src/xz/xz.1
#, no-wrap
msgid "13."
msgstr "13."
#. type: Plain text
-#: ../src/xz/xz.1:2235
-msgid ""
-"Block flags: B<c> indicates that compressed size is present, and B<u> "
-"indicates that uncompressed size is present. If the flag is not set, a dash "
-"(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 ""
-"Sinalizadores de bloco: B<c> indica que o tamanho compactado está presente e "
-"B<u> indica que o tamanho não compactado está presente. Se o sinalizador não "
-"estiver definido, um traço (B<->) será exibido para manter o comprimento da "
-"string fixo. Novos sinalizadores podem ser adicionados ao final da string no "
-"futuro."
+#: ../src/xz/xz.1
+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 "Sinalizadores de bloco: B<c> indica que o tamanho compactado está presente e B<u> indica que o tamanho não compactado está presente. Se o sinalizador não estiver definido, um traço (B<->) será exibido para manter o comprimento da string fixo. Novos sinalizadores podem ser adicionados ao final da string no futuro."
#. type: IP
-#: ../src/xz/xz.1:2235
+#: ../src/xz/xz.1
#, no-wrap
msgid "14."
msgstr "14."
#. type: Plain text
-#: ../src/xz/xz.1:2238
-msgid ""
-"Size of the actual compressed data in the block (this excludes the block "
-"header, block padding, and check fields)"
-msgstr ""
-"Tamanho dos dados reais compactados no bloco (isso exclui o cabeçalho do "
-"bloco, o preenchimento do bloco e os campos de verificação)"
+#: ../src/xz/xz.1
+msgid "Size of the actual compressed data in the block (this excludes the block header, block padding, and check fields)"
+msgstr "Tamanho dos dados reais compactados no bloco (isso exclui o cabeçalho do bloco, o preenchimento do bloco e os campos de verificação)"
#. type: IP
-#: ../src/xz/xz.1:2238
+#: ../src/xz/xz.1
#, no-wrap
msgid "15."
msgstr "15."
#. type: Plain text
-#: ../src/xz/xz.1:2243
-msgid ""
-"Amount of memory (in bytes) required to decompress this block with this "
-"B<xz> version"
-msgstr ""
-"Quantidade de memória (em bytes) necessária para descompactar este bloco com "
-"esta versão B<xz>"
+#: ../src/xz/xz.1
+msgid "Amount of memory (in bytes) required to decompress this block with this B<xz> version"
+msgstr "Quantidade de memória (em bytes) necessária para descompactar este bloco com esta versão B<xz>"
#. type: IP
-#: ../src/xz/xz.1:2243
+#: ../src/xz/xz.1
#, no-wrap
msgid "16."
msgstr "16."
#. type: Plain text
-#: ../src/xz/xz.1:2250
-msgid ""
-"Filter chain. Note that most of the options used at compression time cannot "
-"be known, because only the options that are needed for decompression are "
-"stored in the B<.xz> headers."
-msgstr ""
-"Cadeia de filtro. Observe que a maioria das opções usadas no momento da "
-"compactação não pode ser conhecida, pois apenas as opções necessárias para a "
-"descompactação são armazenadas nos cabeçalhos B<.xz>."
+#: ../src/xz/xz.1
+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 "Cadeia de filtro. Observe que a maioria das opções usadas no momento da compactação não pode ser conhecida, pois apenas as opções necessárias para a descompactação são armazenadas nos cabeçalhos B<.xz>."
#. type: Plain text
-#: ../src/xz/xz.1:2256
+#: ../src/xz/xz.1
msgid "The columns of the B<summary> lines:"
msgstr "As colunas das linhas B<summary>:"
#. type: Plain text
-#: ../src/xz/xz.1:2263
-msgid ""
-"Amount of memory (in bytes) required to decompress this file with this B<xz> "
-"version"
-msgstr ""
-"Quantidade de memória (em bytes) necessária para descompactar este arquivo "
-"com esta versão do B<xz>"
+#: ../src/xz/xz.1
+msgid "Amount of memory (in bytes) required to decompress this file with this B<xz> version"
+msgstr "Quantidade de memória (em bytes) necessária para descompactar este arquivo com esta versão do B<xz>"
#. type: Plain text
-#: ../src/xz/xz.1:2269 ../src/xz/xz.1:2327
-msgid ""
-"B<yes> or B<no> indicating if all block headers have both compressed size "
-"and uncompressed size stored in them"
-msgstr ""
-"B<yes> ou B<no> indicando se todos os cabeçalhos de bloco têm tamanho "
-"compactado e tamanho não compactado armazenados neles"
+#: ../src/xz/xz.1
+msgid "B<yes> or B<no> indicating if all block headers have both compressed size and uncompressed size stored in them"
+msgstr "B<yes> ou B<no> indicando se todos os cabeçalhos de bloco têm tamanho compactado e tamanho não compactado armazenados neles"
#. type: Plain text
-#: ../src/xz/xz.1:2273 ../src/xz/xz.1:2331
+#: ../src/xz/xz.1
msgid "I<Since> B<xz> I<5.1.2alpha:>"
msgstr "I<Desde> B<xz> I<5.1.2alpha:>"
#. type: Plain text
-#: ../src/xz/xz.1:2277 ../src/xz/xz.1:2335
+#: ../src/xz/xz.1
msgid "Minimum B<xz> version required to decompress the file"
msgstr "Versão mínima do B<xz> necessária para descompactar o arquivo"
#. type: Plain text
-#: ../src/xz/xz.1:2283
+#: ../src/xz/xz.1
msgid "The columns of the B<totals> line:"
msgstr "As colunas da linha B<totals>:"
#. type: Plain text
-#: ../src/xz/xz.1:2287
+#: ../src/xz/xz.1
msgid "Number of streams"
msgstr "Número de fluxos"
#. type: Plain text
-#: ../src/xz/xz.1:2289
+#: ../src/xz/xz.1
msgid "Number of blocks"
msgstr "Número de blocos"
#. type: Plain text
-#: ../src/xz/xz.1:2291
+#: ../src/xz/xz.1
msgid "Compressed size"
msgstr "Tamanho compactado"
#. type: Plain text
-#: ../src/xz/xz.1:2295
+#: ../src/xz/xz.1
msgid "Average compression ratio"
msgstr "Taxa de compactação média"
#. type: Plain text
-#: ../src/xz/xz.1:2298
-msgid ""
-"Comma-separated list of integrity check names that were present in the files"
-msgstr ""
-"Lista separada por vírgulas de nomes de verificação de integridade que "
-"estavam presentes nos arquivos"
+#: ../src/xz/xz.1
+msgid "Comma-separated list of integrity check names that were present in the files"
+msgstr "Lista separada por vírgulas de nomes de verificação de integridade que estavam presentes nos arquivos"
#. type: Plain text
-#: ../src/xz/xz.1:2300
+#: ../src/xz/xz.1
msgid "Stream padding size"
msgstr "Tamanho do preenchimento do fluxo"
#. type: Plain text
-#: ../src/xz/xz.1:2306
-msgid ""
-"Number of files. This is here to keep the order of the earlier columns the "
-"same as on B<file> lines."
+#: ../src/xz/xz.1
+msgid "Number of files. This is here to keep the order of the earlier columns the same as on B<file> lines."
+msgstr "Número de arquivos. Isso está aqui para manter a ordem das colunas anteriores a mesma das linhas B<file>."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "If B<--verbose> was specified twice, additional columns are included on the B<totals> line:"
+msgstr "Se B<--verbose> for especificado duas vezes, colunas adicionais serão incluídas na linha B<totals>:"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Maximum amount of memory (in bytes) required to decompress the files with this B<xz> version"
+msgstr "Quantidade máxima de memória (em bytes) necessária para descompactar os arquivos com esta versão do B<xz>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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 "Versões futuras podem adicionar novos tipos de linha e novas colunas podem ser adicionadas aos tipos de linha existentes, mas as colunas existentes não serão alteradas."
+
+#. type: SS
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "Filter"
+msgid "Filters help"
+msgstr "Filtro"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<xz --robot --filters-help> prints the supported filters in the following format:"
msgstr ""
-"Número de arquivos. Isso está aqui para manter a ordem das colunas "
-"anteriores a mesma das linhas B<file>."
#. type: Plain text
-#: ../src/xz/xz.1:2314
-msgid ""
-"If B<--verbose> was specified twice, additional columns are included on the "
-"B<totals> line:"
+#: ../src/xz/xz.1
+msgid "I<filter>B<:>I<option>B<=E<lt>>I<value>B<E<gt>,>I<option>B<=E<lt>>I<value>B<E<gt>>..."
msgstr ""
-"Se B<--verbose> for especificado duas vezes, colunas adicionais serão "
-"incluídas na linha B<totals>:"
+
+#. type: TP
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "B<file>"
+msgid "I<filter>"
+msgstr "B<file>"
#. type: Plain text
-#: ../src/xz/xz.1:2321
-msgid ""
-"Maximum amount of memory (in bytes) required to decompress the files with "
-"this B<xz> version"
+#: ../src/xz/xz.1
+#, fuzzy
+#| msgid "Name of the integrity check"
+msgid "Name of the filter"
+msgstr "Nome da verificação de integridade"
+
+#. type: TP
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "Supported I<options>:"
+msgid "I<option>"
+msgstr "I<Opções> suportadas:"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Name of a filter specific option"
+msgstr ""
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<value>"
msgstr ""
-"Quantidade máxima de memória (em bytes) necessária para descompactar os "
-"arquivos com esta versão do B<xz>"
#. type: Plain text
-#: ../src/xz/xz.1:2341
-msgid ""
-"Future versions may add new line types and new columns can be added to the "
-"existing line types, but the existing columns won't be changed."
+#: ../src/xz/xz.1
+msgid "Numeric I<value> ranges appear as B<E<lt>>I<min>B<->I<max>B<E<gt>>. String I<value> choices are shown within B<E<lt> E<gt>> and separated by a B<|> character."
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Each filter is printed on its own line."
+msgstr ""
+
+#. type: SS
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "Memory limit information"
+msgstr "Informações de limite de memória"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<xz --robot --info-memory> prints a single line with multiple tab-separated columns:"
msgstr ""
-"Versões futuras podem adicionar novos tipos de linha e novas colunas podem "
-"ser adicionadas aos tipos de linha existentes, mas as colunas existentes não "
-"serão alteradas."
+
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "1."
+msgstr "1."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Total amount of physical memory (RAM) in bytes."
+msgstr "Quantidade total de memória física (RAM) em bytes."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Memory usage limit for compression in bytes (B<--memlimit-compress>). A special value of B<0> indicates the default setting which for single-threaded mode is the same as no limit."
+msgstr "Limite de uso de memória para compactação em bytes (B<--memlimit-compress>). Um valor especial de B<0> indica a configuração padrão que para o modo de thread única é o mesmo que sem limite."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Memory usage limit for decompression in bytes (B<--memlimit-decompress>). A special value of B<0> indicates the default setting which for single-threaded mode is the same as no limit."
+msgstr "Limite de uso de memória para descompactação em bytes (B<--memlimit-decompress>). Um valor especial de B<0> indica a configuração padrão que para o modo de thread única é o mesmo que sem limite."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.3.4alpha: Memory usage for multi-threaded decompression in bytes (B<--memlimit-mt-decompress>). This is never zero because a system-specific default value shown in the column 5 is used if no limit has been specified explicitly. This is also never greater than the value in the column 3 even if a larger value has been specified with B<--memlimit-mt-decompress>."
+msgstr "Desde B<xz> 5.3.4alpha: Uso de memória para descompactação com várias thread em bytes (B<--memlimit-mt-decompress>). Isso nunca é zero porque um valor padrão específico do sistema mostrado na coluna 5 é usado se nenhum limite for especificado explicitamente. Isso também nunca é maior que o valor na coluna 3, mesmo que um valor maior tenha sido especificado com B<--memlimit-mt-decompress>."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.3.4alpha: A system-specific default memory usage limit that is used to limit the number of threads when compressing with an automatic number of threads (B<--threads=0>) and no memory usage limit has been specified (B<--memlimit-compress>). This is also used as the default value for B<--memlimit-mt-decompress>."
+msgstr "Desde B<xz> 5.3.4alpha: Um limite de uso de memória padrão específico do sistema que é usado para limitar o número de threads ao compactar com um número automático de threads (B<--threads=0>) e nenhum limite de uso de memória foi especificado (B<--memlimit-compress>). Isso também é usado como o valor padrão para B<--memlimit-mt-decompress>."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.3.4alpha: Number of available processor threads."
+msgstr "Desde B<xz> 5.3.4alpha: Número de threads de processador disponíveis."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "In the future, the output of B<xz --robot --info-memory> may have more columns, but never more than a single line."
+msgstr "No futuro, a saída de B<xz --robot --info-memory> pode ter mais colunas, mas nunca mais do que uma única linha."
+
+#. type: SS
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "Version"
+msgstr "Versão"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<xz --robot --version> prints the version number of B<xz> and liblzma in the following format:"
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<XZ_VERSION=>I<XYYYZZZS>"
+msgstr "B<XZ_VERSION=>I<XYYYZZZS>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
+msgstr "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<X>"
+msgstr "I<X>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Major version."
+msgstr "Versão principal."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<YYY>"
+msgstr "I<YYY>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Minor version. Even numbers are stable. Odd numbers are alpha or beta versions."
+msgstr "Versão menor. Números pares são estáveis. Os números ímpares são versões alfa ou beta."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<ZZZ>"
+msgstr "I<ZZZ>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Patch level for stable releases or just a counter for development releases."
+msgstr "Nível de patch para versões estáveis ou apenas um contador para versões de desenvolvimento."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<S>"
+msgstr "I<S>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Stability. 0 is alpha, 1 is beta, and 2 is stable. I<S> should be always 2 when I<YYY> is even."
+msgstr "Estabilidade. 0 é alfa, 1 é beta e 2 é estável. I<S> deve ser sempre 2 quando I<YYY> for par."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "I<XYYYZZZS> are the same on both lines if B<xz> and liblzma are from the same XZ Utils release."
+msgstr "I<XYYYZZZS> são iguais em ambas as linhas se B<xz> e liblzma forem da mesma versão do XZ Utils."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Examples: 4.999.9beta is B<49990091> and 5.0.0 is B<50000002>."
+msgstr "Exemplos: 4.999.9beta é B<49990091> e 5.0.0 é B<50000002>."
#. type: SH
-#: ../src/xz/xz.1:2342 ../src/xzdec/xzdec.1:104 ../src/lzmainfo/lzmainfo.1:44
-#: ../src/scripts/xzgrep.1:81
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1
#, no-wrap
msgid "EXIT STATUS"
msgstr "STATUS DE SAÍDA"
#. type: TP
-#: ../src/xz/xz.1:2343 ../src/xzdec/xzdec.1:105 ../src/lzmainfo/lzmainfo.1:45
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "B<0>"
msgstr "B<0>"
#. type: Plain text
-#: ../src/xz/xz.1:2346 ../src/lzmainfo/lzmainfo.1:48
+#: ../src/xz/xz.1 ../src/lzmainfo/lzmainfo.1
msgid "All is good."
msgstr "Está tudo bem."
#. type: TP
-#: ../src/xz/xz.1:2346 ../src/xzdec/xzdec.1:108 ../src/lzmainfo/lzmainfo.1:48
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "B<1>"
msgstr "B<1>"
#. type: Plain text
-#: ../src/xz/xz.1:2349 ../src/xzdec/xzdec.1:111 ../src/lzmainfo/lzmainfo.1:51
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
msgid "An error occurred."
msgstr "Ocorreu um erro."
#. type: TP
-#: ../src/xz/xz.1:2349
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<2>"
msgstr "B<2>"
#. type: Plain text
-#: ../src/xz/xz.1:2353
+#: ../src/xz/xz.1
msgid "Something worth a warning occurred, but no actual errors occurred."
msgstr "Algo digno de um aviso ocorreu, mas ocorreu nenhum erro real."
#. type: Plain text
-#: ../src/xz/xz.1:2356
-msgid ""
-"Notices (not warnings or errors) printed on standard error don't affect the "
-"exit status."
-msgstr ""
-"Observações (não avisos ou erros) impressas no erro padrão não afetam o "
-"status de saída."
+#: ../src/xz/xz.1
+msgid "Notices (not warnings or errors) printed on standard error don't affect the exit status."
+msgstr "Observações (não avisos ou erros) impressas no erro padrão não afetam o status de saída."
#. type: SH
-#: ../src/xz/xz.1:2357 ../src/scripts/xzgrep.1:94 ../src/scripts/xzless.1:52
+#: ../src/xz/xz.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "ENVIRONMENT"
msgstr "AMBIENTE"
#. type: Plain text
-#: ../src/xz/xz.1:2370
-msgid ""
-"B<xz> parses space-separated lists of options from the environment variables "
-"B<XZ_DEFAULTS> and B<XZ_OPT>, in this order, before parsing the options from "
-"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> analisa listas de opções separadas por espaços das variáveis de "
-"ambiente B<XZ_DEFAULTS> e B<XZ_OPT>, nesta ordem, antes de analisar as "
-"opções da linha de comando. Observe que apenas as opções são analisadas a "
-"partir das variáveis de ambiente; todas as não opções são silenciosamente "
-"ignoradas. A análise é feita com B<getopt_long>(3) que também é usado para "
-"os argumentos da linha de comando."
+#: ../src/xz/xz.1
+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> analisa listas de opções separadas por espaços das variáveis de ambiente B<XZ_DEFAULTS> e B<XZ_OPT>, nesta ordem, antes de analisar as opções da linha de comando. Observe que apenas as opções são analisadas a partir das variáveis de ambiente; todas as não opções são silenciosamente ignoradas. A análise é feita com B<getopt_long>(3) que também é usado para os argumentos da linha de comando."
#. type: TP
-#: ../src/xz/xz.1:2370
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<XZ_DEFAULTS>"
msgstr "B<XZ_DEFAULTS>"
#. type: Plain text
-#: ../src/xz/xz.1:2379
-msgid ""
-"User-specific or system-wide default options. Typically this is set in a "
-"shell initialization script to enable B<xz>'s memory usage limiter by "
-"default. Excluding shell initialization scripts and similar special cases, "
-"scripts must never set or unset B<XZ_DEFAULTS>."
-msgstr ""
-"Opções padrão específicas do usuário ou de todo o sistema. Normalmente, isso "
-"é definido em um script de inicialização do shell para habilitar o limitador "
-"de uso de memória do B<xz> por padrão. Excluindo scripts de inicialização de "
-"shell e casos especiais semelhantes, os scripts nunca devem definir ou "
-"remover a definição de B<XZ_DEFAULTS>."
+#: ../src/xz/xz.1
+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 "Opções padrão específicas do usuário ou de todo o sistema. Normalmente, isso é definido em um script de inicialização do shell para habilitar o limitador de uso de memória do B<xz> por padrão. Excluindo scripts de inicialização de shell e casos especiais semelhantes, os scripts nunca devem definir ou remover a definição de B<XZ_DEFAULTS>."
#. type: TP
-#: ../src/xz/xz.1:2379
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<XZ_OPT>"
msgstr "B<XZ_OPT>"
#. type: Plain text
-#: ../src/xz/xz.1:2390
-msgid ""
-"This is for passing options to B<xz> when it is not possible to set the "
-"options directly on the B<xz> command line. This is the case when B<xz> is "
-"run by a script or tool, for example, GNU B<tar>(1):"
-msgstr ""
-"Isso é para passar opções para B<xz> quando não é possível definir as opções "
-"diretamente na linha de comando B<xz>. Este é o caso quando B<xz> é "
-"executado por um script ou ferramenta, por exemplo, GNU B<tar>(1):"
+#: ../src/xz/xz.1
+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 when B<xz> is run by a script or tool, for example, GNU B<tar>(1):"
+msgstr "Isso é para passar opções para B<xz> quando não é possível definir as opções diretamente na linha de comando B<xz>. Este é o caso quando B<xz> é executado por um script ou ferramenta, por exemplo, GNU B<tar>(1):"
#. type: Plain text
-#: ../src/xz/xz.1:2396
-#, no-wrap
-msgid "CW<XZ_OPT=-2v tar caf foo.tar.xz foo>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<XZ_OPT=-2v tar caf foo.tar.xz foo>\n"
+msgid "\\f(CRXZ_OPT=-2v tar caf foo.tar.xz foo\\fR\n"
msgstr "CW<XZ_OPT=-2v tar caf foo.tar.xz foo>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2410
-msgid ""
-"Scripts may use B<XZ_OPT>, for example, to set script-specific default "
-"compression options. It is still recommended to allow users to override "
-"B<XZ_OPT> if that is reasonable. For example, in B<sh>(1) scripts one may "
-"use something like this:"
-msgstr ""
-"Os scripts podem usar B<XZ_OPT>, por exemplo, para definir opções de "
-"compactação padrão específicas do script. Ainda é recomendável permitir que "
-"os usuários substituam B<XZ_OPT> se isso for razoável. Por exemplo, em "
-"scripts B<sh>(1) pode-se usar algo assim:"
+#: ../src/xz/xz.1
+msgid "Scripts may use B<XZ_OPT>, for example, to set script-specific default compression options. It is still recommended to allow users to override B<XZ_OPT> if that is reasonable. For example, in B<sh>(1) scripts one may use something like this:"
+msgstr "Os scripts podem usar B<XZ_OPT>, por exemplo, para definir opções de compactação padrão específicas do script. Ainda é recomendável permitir que os usuários substituam B<XZ_OPT> se isso for razoável. Por exemplo, em scripts B<sh>(1) pode-se usar algo assim:"
#. type: Plain text
-#: ../src/xz/xz.1:2417
-#, no-wrap
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid ""
+#| "CW<XZ_OPT=${XZ_OPT-\"-7e\"}\n"
+#| "export XZ_OPT>\n"
msgid ""
-"CW<XZ_OPT=${XZ_OPT-\"-7e\"}\n"
-"export XZ_OPT>\n"
+"\\f(CRXZ_OPT=${XZ_OPT-\"-7e\"}\n"
+"export XZ_OPT\\fR\n"
msgstr ""
"CW<XZ_OPT=${XZ_OPT-\"-7e\"}\n"
"export XZ_OPT>\n"
#. type: SH
-#: ../src/xz/xz.1:2422
+#: ../src/xz/xz.1
#, no-wrap
msgid "LZMA UTILS COMPATIBILITY"
msgstr "COMPATIBILIDADE COM LZMA UTILS"
#. type: Plain text
-#: ../src/xz/xz.1:2435
-msgid ""
-"The command line syntax of B<xz> is practically a superset of B<lzma>, "
-"B<unlzma>, and B<lzcat> as found from LZMA Utils 4.32.x. In most cases, it "
-"is possible to replace LZMA Utils with XZ Utils without breaking existing "
-"scripts. There are some incompatibilities though, which may sometimes cause "
-"problems."
-msgstr ""
-"A sintaxe da linha de comando do B<xz> é praticamente um superconjunto de "
-"B<lzma>, B<unlzma> e B<lzcat> conforme encontrado no LZMA Utils 4.32.x. Na "
-"maioria dos casos, é possível substituir LZMA Utils por XZ Utils sem "
-"interromper os scripts existentes. Existem algumas incompatibilidades, "
-"porém, que às vezes podem causar problemas."
+#: ../src/xz/xz.1
+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 "A sintaxe da linha de comando do B<xz> é praticamente um superconjunto de B<lzma>, B<unlzma> e B<lzcat> conforme encontrado no LZMA Utils 4.32.x. Na maioria dos casos, é possível substituir LZMA Utils por XZ Utils sem interromper os scripts existentes. Existem algumas incompatibilidades, porém, que às vezes podem causar problemas."
#. type: SS
-#: ../src/xz/xz.1:2436
+#: ../src/xz/xz.1
#, no-wrap
msgid "Compression preset levels"
msgstr "Níveis de predefinição de compactação"
#. type: Plain text
-#: ../src/xz/xz.1:2443
-msgid ""
-"The numbering of the compression level presets is not identical in B<xz> and "
-"LZMA Utils. The most important difference is how dictionary sizes are "
-"mapped to different presets. Dictionary size is roughly equal to the "
-"decompressor memory usage."
-msgstr ""
-"A numeração das predefinições de nível de compactação não é idêntica em "
-"B<xz> e LZMA Utils. A diferença mais importante é como os tamanhos dos "
-"dicionários são mapeados para diferentes predefinições. O tamanho do "
-"dicionário é aproximadamente igual ao uso de memória do descompactador."
+#: ../src/xz/xz.1
+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 "A numeração das predefinições de nível de compactação não é idêntica em B<xz> e LZMA Utils. A diferença mais importante é como os tamanhos dos dicionários são mapeados para diferentes predefinições. O tamanho do dicionário é aproximadamente igual ao uso de memória do descompactador."
#. type: tbl table
-#: ../src/xz/xz.1:2449 ../src/xz/xz.1:2474
+#: ../src/xz/xz.1
#, no-wrap
msgid "Level"
msgstr "Nível"
#. type: tbl table
-#: ../src/xz/xz.1:2449 ../src/xz/xz.1:2474
+#: ../src/xz/xz.1
#, no-wrap
msgid "xz"
msgstr "xz"
#. type: tbl table
-#: ../src/xz/xz.1:2449
+#: ../src/xz/xz.1
#, no-wrap
msgid "LZMA Utils"
msgstr "LZMA Utils"
#. type: tbl table
-#: ../src/xz/xz.1:2450 ../src/xz/xz.1:2475
+#: ../src/xz/xz.1
#, no-wrap
msgid "N/A"
msgstr "N/D"
#. type: tbl table
-#: ../src/xz/xz.1:2451
+#: ../src/xz/xz.1
#, no-wrap
msgid "64 KiB"
msgstr "64 KiB"
#. type: tbl table
-#: ../src/xz/xz.1:2453
+#: ../src/xz/xz.1
#, no-wrap
msgid "512 KiB"
msgstr "512 KiB"
#. type: Plain text
-#: ../src/xz/xz.1:2468
-msgid ""
-"The dictionary size differences affect the compressor memory usage too, but "
-"there are some other differences between LZMA Utils and XZ Utils, which make "
-"the difference even bigger:"
-msgstr ""
-"As diferenças de tamanho do dicionário também afetam o uso da memória do "
-"compressor, mas existem algumas outras diferenças entre LZMA Utils e XZ "
-"Utils, que tornam a diferença ainda maior:"
+#: ../src/xz/xz.1
+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 "As diferenças de tamanho do dicionário também afetam o uso da memória do compressor, mas existem algumas outras diferenças entre LZMA Utils e XZ Utils, que tornam a diferença ainda maior:"
#. type: tbl table
-#: ../src/xz/xz.1:2474
+#: ../src/xz/xz.1
#, no-wrap
msgid "LZMA Utils 4.32.x"
msgstr "LZMA Utils 4.32.x"
#. type: tbl table
-#: ../src/xz/xz.1:2477 ../src/xz/xz.1:2478
+#: ../src/xz/xz.1
#, no-wrap
msgid "12 MiB"
msgstr "12 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:2480
+#: ../src/xz/xz.1
#, no-wrap
msgid "26 MiB"
msgstr "26 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:2481
+#: ../src/xz/xz.1
#, no-wrap
msgid "45 MiB"
msgstr "45 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:2482
+#: ../src/xz/xz.1
#, no-wrap
msgid "83 MiB"
msgstr "83 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:2483
+#: ../src/xz/xz.1
#, no-wrap
msgid "159 MiB"
msgstr "159 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:2484
+#: ../src/xz/xz.1
#, no-wrap
msgid "311 MiB"
msgstr "311 MiB"
#. type: Plain text
-#: ../src/xz/xz.1:2493
-msgid ""
-"The default preset level in LZMA Utils is B<-7> while in XZ Utils it is "
-"B<-6>, so both use an 8 MiB dictionary by default."
-msgstr ""
-"O nível de predefinição padrão no LZMA Utils é B<-7> enquanto no XZ Utils é "
-"B<-6>, então ambos usam um dicionário de 8 MiB por padrão."
+#: ../src/xz/xz.1
+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 "O nível de predefinição padrão no LZMA Utils é B<-7> enquanto no XZ Utils é B<-6>, então ambos usam um dicionário de 8 MiB por padrão."
#. type: SS
-#: ../src/xz/xz.1:2494
+#: ../src/xz/xz.1
#, no-wrap
msgid "Streamed vs. non-streamed .lzma files"
msgstr "Arquivos .lzma em um fluxo versus sem ser em um fluxo"
#. type: Plain text
-#: ../src/xz/xz.1:2504
-msgid ""
-"The uncompressed size of the file can be stored in the B<.lzma> header. "
-"LZMA Utils does that when compressing regular files. The alternative is to "
-"mark that uncompressed size is unknown and use end-of-payload marker to "
-"indicate where the decompressor should stop. LZMA Utils uses this method "
-"when uncompressed size isn't known, which is the case, for example, in pipes."
-msgstr ""
-"O tamanho descompactado do arquivo pode ser armazenado no cabeçalho de B<."
-"lzma>. O LZMA Utils faz isso ao compactar arquivos comuns. A alternativa é "
-"marcar que o tamanho não compactado é desconhecido e usar o marcador de fim "
-"de carga útil para indicar onde o descompactador deve parar. O LZMA Utils "
-"usa este método quando o tamanho não compactado não é conhecido, como é o "
-"caso, por exemplo, de encadeamentos (pipes)."
+#: ../src/xz/xz.1
+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 "O tamanho descompactado do arquivo pode ser armazenado no cabeçalho de B<.lzma>. O LZMA Utils faz isso ao compactar arquivos comuns. A alternativa é marcar que o tamanho não compactado é desconhecido e usar o marcador de fim de carga útil para indicar onde o descompactador deve parar. O LZMA Utils usa este método quando o tamanho não compactado não é conhecido, como é o caso, por exemplo, de encadeamentos (pipes)."
#. type: Plain text
-#: ../src/xz/xz.1:2525
-msgid ""
-"B<xz> supports decompressing B<.lzma> files with or without end-of-payload "
-"marker, but all B<.lzma> files created by B<xz> will use end-of-payload "
-"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> oferece suporte à descompactação de arquivos B<.lzma> com ou sem "
-"marcador de fim de carga útil, mas todos os arquivos B<.lzma> criados por "
-"B<xz> usarão marcador de fim de carga útil e terão o tamanho descompactado "
-"marcado como desconhecido no cabeçalho de B<.lzma>. Isso pode ser um "
-"problema em algumas situações incomuns. Por exemplo, um descompactador de B<."
-"lzma> em um dispositivo embarcado pode funcionar apenas com arquivos que "
-"tenham tamanho descompactado conhecido. Se você encontrar esse problema, "
-"precisará usar o LZMA Utils ou o LZMA SDK para criar arquivos B<.lzma> com "
-"tamanho descompactado conhecido."
+#: ../src/xz/xz.1
+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> oferece suporte à descompactação de arquivos B<.lzma> com ou sem marcador de fim de carga útil, mas todos os arquivos B<.lzma> criados por B<xz> usarão marcador de fim de carga útil e terão o tamanho descompactado marcado como desconhecido no cabeçalho de B<.lzma>. Isso pode ser um problema em algumas situações incomuns. Por exemplo, um descompactador de B<.lzma> em um dispositivo embarcado pode funcionar apenas com arquivos que tenham tamanho descompactado conhecido. Se você encontrar esse problema, precisará usar o LZMA Utils ou o LZMA SDK para criar arquivos B<.lzma> com tamanho descompactado conhecido."
#. type: SS
-#: ../src/xz/xz.1:2526
+#: ../src/xz/xz.1
#, no-wrap
msgid "Unsupported .lzma files"
msgstr "Arquivos .lzma não suportados"
#. type: Plain text
-#: ../src/xz/xz.1:2549
-msgid ""
-"The B<.lzma> format allows I<lc> values up to 8, and I<lp> values up to 4. "
-"LZMA Utils can decompress files with any I<lc> and I<lp>, but always creates "
-"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 ""
-"O formato B<.lzma> permite valores I<lc> até 8 e valores I<lp> até 4. LZMA "
-"Utils pode descompactar arquivos com qualquer I<lc> e I<lp>, mas sempre cria "
-"arquivos com B<lc=3> e B<lp=0>. Criar arquivos com outros I<lc> e I<lp> é "
-"possível com B<xz> e com LZMA SDK."
+#: ../src/xz/xz.1
+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 "O formato B<.lzma> permite valores I<lc> até 8 e valores I<lp> até 4. LZMA Utils pode descompactar arquivos com qualquer I<lc> e I<lp>, mas sempre cria arquivos com B<lc=3> e B<lp=0>. Criar arquivos com outros I<lc> e I<lp> é possível com B<xz> e com LZMA SDK."
#. type: Plain text
-#: ../src/xz/xz.1:2560
-msgid ""
-"The implementation of the LZMA1 filter in liblzma requires that the sum of "
-"I<lc> and I<lp> must not exceed 4. Thus, B<.lzma> files, which exceed this "
-"limitation, cannot be decompressed with B<xz>."
-msgstr ""
-"A implementação do filtro LZMA1 em liblzma requer que a soma de I<lc> e "
-"I<lp> não exceda 4. Assim, arquivos B<.lzma>, que excedam esta limitação, "
-"não podem ser descompactados com B<xz>."
+#: ../src/xz/xz.1
+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 "A implementação do filtro LZMA1 em liblzma requer que a soma de I<lc> e I<lp> não exceda 4. Assim, arquivos B<.lzma>, que excedam esta limitação, não podem ser descompactados com B<xz>."
#. type: Plain text
-#: ../src/xz/xz.1:2575
-msgid ""
-"LZMA Utils creates only B<.lzma> files which have a dictionary size of "
-"2^I<n> (a power of 2) but accepts files with any dictionary size. liblzma "
-"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 ""
-"LZMA Utils cria apenas arquivos B<.lzma> que possuem um tamanho de "
-"dicionário de 2^I<n> (uma potência de 2), mas aceita arquivos com qualquer "
-"tamanho de dicionário. liblzma aceita apenas arquivos B<.lzma> que tenham um "
-"tamanho de dicionário de 2^I<n> ou 2^I<n> + 2^(I<n>-1). Isso é para diminuir "
-"os falsos positivos ao detectar arquivos B<.lzma>."
+#: ../src/xz/xz.1
+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 "LZMA Utils cria apenas arquivos B<.lzma> que possuem um tamanho de dicionário de 2^I<n> (uma potência de 2), mas aceita arquivos com qualquer tamanho de dicionário. liblzma aceita apenas arquivos B<.lzma> que tenham um tamanho de dicionário de 2^I<n> ou 2^I<n> + 2^(I<n>-1). Isso é para diminuir os falsos positivos ao detectar arquivos B<.lzma>."
#. type: Plain text
-#: ../src/xz/xz.1:2580
-msgid ""
-"These limitations shouldn't be a problem in practice, since practically all "
-"B<.lzma> files have been compressed with settings that liblzma will accept."
-msgstr ""
-"Essas limitações não devem ser um problema na prática, já que praticamente "
-"todos os arquivos B<.lzma> foram compactados com configurações que o liblzma "
-"aceitará."
+#: ../src/xz/xz.1
+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 "Essas limitações não devem ser um problema na prática, já que praticamente todos os arquivos B<.lzma> foram compactados com configurações que o liblzma aceitará."
#. type: SS
-#: ../src/xz/xz.1:2581
+#: ../src/xz/xz.1
#, no-wrap
msgid "Trailing garbage"
msgstr "Lixo à direita"
#. type: Plain text
-#: ../src/xz/xz.1:2591
-msgid ""
-"When decompressing, LZMA Utils silently ignore everything after the first B<."
-"lzma> stream. In most situations, this is a bug. This also means that LZMA "
-"Utils don't support decompressing concatenated B<.lzma> files."
-msgstr ""
-"Ao descompactar, o LZMA Utils silenciosamente ignora tudo após o primeiro "
-"fluxo B<.lzma>. Na maioria das situações, isso é um bug. Isso também "
-"significa que o LZMA Utils não oferece suporte a descompactação de arquivos "
-"B<.lzma> concatenados."
+#: ../src/xz/xz.1
+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 "Ao descompactar, o LZMA Utils silenciosamente ignora tudo após o primeiro fluxo B<.lzma>. Na maioria das situações, isso é um bug. Isso também significa que o LZMA Utils não oferece suporte a descompactação de arquivos B<.lzma> concatenados."
#. type: Plain text
-#: ../src/xz/xz.1:2601
-msgid ""
-"If there is data left after the first B<.lzma> stream, B<xz> considers the "
-"file to be corrupt unless B<--single-stream> was used. This may break "
-"obscure scripts which have assumed that trailing garbage is ignored."
-msgstr ""
-"Se houver dados restantes após o primeiro fluxo de B<.lzma>, B<xz> considera "
-"o arquivo corrompido, a menos que B<--single-stream> tenha sido usado. Isso "
-"pode quebrar scripts obscuros que presumiram que o lixo à direita é ignorado."
+#: ../src/xz/xz.1
+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 "Se houver dados restantes após o primeiro fluxo de B<.lzma>, B<xz> considera o arquivo corrompido, a menos que B<--single-stream> tenha sido usado. Isso pode quebrar scripts obscuros que presumiram que o lixo à direita é ignorado."
#. type: SH
-#: ../src/xz/xz.1:2602 ../src/xzdec/xzdec.1:117
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "NOTES"
msgstr "NOTAS"
#. type: SS
-#: ../src/xz/xz.1:2604
+#: ../src/xz/xz.1
#, no-wrap
msgid "Compressed output may vary"
msgstr "A saída compactada pode variar"
#. type: Plain text
-#: ../src/xz/xz.1:2615
-msgid ""
-"The exact compressed output produced from the same uncompressed input file "
-"may vary between XZ Utils versions even if compression options are "
-"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 ""
-"A saída compactada exata produzida a partir do mesmo arquivo de entrada não "
-"compactado pode variar entre as versões do XZ Utils, mesmo se as opções de "
-"compactação forem idênticas. Isso ocorre porque o codificador pode ser "
-"aprimorado (compactação mais rápida ou melhor) sem afetar o formato do "
-"arquivo. A saída pode variar mesmo entre diferentes compilações da mesma "
-"versão do XZ Utils, se diferentes opções de compilação forem usadas."
+#: ../src/xz/xz.1
+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 "A saída compactada exata produzida a partir do mesmo arquivo de entrada não compactado pode variar entre as versões do XZ Utils, mesmo se as opções de compactação forem idênticas. Isso ocorre porque o codificador pode ser aprimorado (compactação mais rápida ou melhor) sem afetar o formato do arquivo. A saída pode variar mesmo entre diferentes compilações da mesma versão do XZ Utils, se diferentes opções de compilação forem usadas."
#. type: Plain text
-#: ../src/xz/xz.1:2625
-msgid ""
-"The above means that once B<--rsyncable> has been implemented, the resulting "
-"files won't necessarily be rsyncable unless both old and new files have been "
-"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 ""
-"A informação acima significa que, uma vez que B<--rsyncable> tenha sido "
-"implementado, os arquivos resultantes não serão necessariamente "
-"\"rsyncáveis\", a menos que os arquivos antigos e novos tenham sido "
-"compactados com a mesma versão xz. Esse problema pode ser corrigido se uma "
-"parte da implementação do codificador for congelada para manter a saída de "
-"rsyncable estável nas versões do xz."
+#: ../src/xz/xz.1
+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 "A informação acima significa que, uma vez que B<--rsyncable> tenha sido implementado, os arquivos resultantes não serão necessariamente \"rsyncáveis\", a menos que os arquivos antigos e novos tenham sido compactados com a mesma versão xz. Esse problema pode ser corrigido se uma parte da implementação do codificador for congelada para manter a saída de rsyncable estável nas versões do xz."
#. type: SS
-#: ../src/xz/xz.1:2626
+#: ../src/xz/xz.1
#, no-wrap
msgid "Embedded .xz decompressors"
msgstr "Descompactadores .xz embarcados"
#. type: Plain text
-#: ../src/xz/xz.1:2643
-msgid ""
-"Embedded B<.xz> decompressor implementations like XZ Embedded don't "
-"necessarily support files created with integrity I<check> types other than "
-"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 ""
-"As implementações do descompactador B<.xz> embarcados, como o XZ Embedded, "
-"não oferecem necessariamente suporte a arquivos criados com tipos de "
-"I<verificações> de integridade diferentes de B<none> e B<crc32>. Como o "
-"padrão é B<--check=crc64>, você deve usar B<--check=none> ou B<--"
-"check=crc32> ao criar arquivos para sistemas embarcados."
+#: ../src/xz/xz.1
+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 "As implementações do descompactador B<.xz> embarcados, como o XZ Embedded, não oferecem necessariamente suporte a arquivos criados com tipos de I<verificações> de integridade diferentes de B<none> e B<crc32>. Como o padrão é B<--check=crc64>, você deve usar B<--check=none> ou B<--check=crc32> ao criar arquivos para sistemas embarcados."
#. type: Plain text
-#: ../src/xz/xz.1:2653
-msgid ""
-"Outside embedded systems, all B<.xz> format decompressors support all the "
-"I<check> types, or at least are able to decompress the file without "
-"verifying the integrity check if the particular I<check> is not supported."
-msgstr ""
-"Fora dos sistemas embarcados, todos os descompactadores de formato B<.xz> "
-"oferecem suporte a todos os tipos de I<verificação> ou, pelo menos, são "
-"capazes de descompactar o arquivo sem verificar a verificação de integridade "
-"se a I<verificação> específica não for suportada."
+#: ../src/xz/xz.1
+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 "Fora dos sistemas embarcados, todos os descompactadores de formato B<.xz> oferecem suporte a todos os tipos de I<verificação> ou, pelo menos, são capazes de descompactar o arquivo sem verificar a verificação de integridade se a I<verificação> específica não for suportada."
#. type: Plain text
-#: ../src/xz/xz.1:2656
-msgid ""
-"XZ Embedded supports BCJ filters, but only with the default start offset."
-msgstr ""
-"XZ Embedded oferece suporte a filtros BCJ, mas apenas com o deslocamento "
-"inicial padrão."
+#: ../src/xz/xz.1
+msgid "XZ Embedded supports BCJ filters, but only with the default start offset."
+msgstr "XZ Embedded oferece suporte a filtros BCJ, mas apenas com o deslocamento inicial padrão."
#. type: SH
-#: ../src/xz/xz.1:2657
+#: ../src/xz/xz.1
#, no-wrap
msgid "EXAMPLES"
msgstr "EXEMPLOS"
#. type: SS
-#: ../src/xz/xz.1:2659
+#: ../src/xz/xz.1
#, no-wrap
msgid "Basics"
msgstr "Básico"
#. type: Plain text
-#: ../src/xz/xz.1:2669
-msgid ""
-"Compress the file I<foo> into I<foo.xz> using the default compression level "
-"(B<-6>), and remove I<foo> if compression is successful:"
-msgstr ""
-"Compactar o arquivo I<foo> em I<foo.xz> usando o nível de compactação padrão "
-"(B<-6>) e remover I<foo> se a compactação for bem-sucedida:"
+#: ../src/xz/xz.1
+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 "Compactar o arquivo I<foo> em I<foo.xz> usando o nível de compactação padrão (B<-6>) e remover I<foo> se a compactação for bem-sucedida:"
#. type: Plain text
-#: ../src/xz/xz.1:2674
-#, no-wrap
-msgid "CW<xz foo>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz foo>\n"
+msgid "\\f(CRxz foo\\fR\n"
msgstr "CW<xz foo>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2685
-msgid ""
-"Decompress I<bar.xz> into I<bar> and don't remove I<bar.xz> even if "
-"decompression is successful:"
-msgstr ""
-"Descompactar I<bar.xz> em I<bar> e não remover I<bar.xz> mesmo se a "
-"descompactação for bem-sucedida:"
+#: ../src/xz/xz.1
+msgid "Decompress I<bar.xz> into I<bar> and don't remove I<bar.xz> even if decompression is successful:"
+msgstr "Descompactar I<bar.xz> em I<bar> e não remover I<bar.xz> mesmo se a descompactação for bem-sucedida:"
#. type: Plain text
-#: ../src/xz/xz.1:2690
-#, no-wrap
-msgid "CW<xz -dk bar.xz>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz -dk bar.xz>\n"
+msgid "\\f(CRxz -dk bar.xz\\fR\n"
msgstr "CW<xz -dk bar.xz>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2703
-msgid ""
-"Create I<baz.tar.xz> with the preset B<-4e> (B<-4 --extreme>), which is "
-"slower than the default B<-6>, but needs less memory for compression and "
-"decompression (48\\ MiB and 5\\ MiB, respectively):"
-msgstr ""
-"Criar I<baz.tar.xz> com a predefinição B<-4e> (B<-4 --extreme>), que é mais "
-"lenta que o padrão B<-6>, mas precisa de menos memória para compactação e "
-"descompactação (48 \\ MiB e 5\\ MiB, respectivamente):"
+#: ../src/xz/xz.1
+msgid "Create I<baz.tar.xz> with the preset B<-4e> (B<-4 --extreme>), which is slower than the default B<-6>, but needs less memory for compression and decompression (48\\ MiB and 5\\ MiB, respectively):"
+msgstr "Criar I<baz.tar.xz> com a predefinição B<-4e> (B<-4 --extreme>), que é mais lenta que o padrão B<-6>, mas precisa de menos memória para compactação e descompactação (48 \\ MiB e 5\\ MiB, respectivamente):"
#. type: Plain text
-#: ../src/xz/xz.1:2708
-#, no-wrap
-msgid "CW<tar cf - baz | xz -4e E<gt> baz.tar.xz>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<tar cf - baz | xz -4e E<gt> baz.tar.xz>\n"
+msgid "\\f(CRtar cf - baz | xz -4e E<gt> baz.tar.xz\\fR\n"
msgstr "CW<tar cf - baz | xz -4e E<gt> baz.tar.xz>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2714
-msgid ""
-"A mix of compressed and uncompressed files can be decompressed to standard "
-"output with a single command:"
-msgstr ""
-"Uma mistura de arquivos compactados e descompactados pode ser descompactada "
-"para a saída padrão com um único comando:"
+#: ../src/xz/xz.1
+msgid "A mix of compressed and uncompressed files can be decompressed to standard output with a single command:"
+msgstr "Uma mistura de arquivos compactados e descompactados pode ser descompactada para a saída padrão com um único comando:"
#. type: Plain text
-#: ../src/xz/xz.1:2719
-#, no-wrap
-msgid "CW<xz -dcf a.txt b.txt.xz c.txt d.txt.lzma E<gt> abcd.txt>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz -dcf a.txt b.txt.xz c.txt d.txt.lzma E<gt> abcd.txt>\n"
+msgid "\\f(CRxz -dcf a.txt b.txt.xz c.txt d.txt.lzma E<gt> abcd.txt\\fR\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:2723
+#: ../src/xz/xz.1
#, no-wrap
msgid "Parallel compression of many files"
msgstr "Compactação paralela de muitos arquivos"
#. type: Plain text
-#: ../src/xz/xz.1:2729
-msgid ""
-"On GNU and *BSD, B<find>(1) and B<xargs>(1) can be used to parallelize "
-"compression of many files:"
-msgstr ""
-"No GNU e *BSD, B<find>(1) e B<xargs>(1) podem ser usados para paralelizar a "
-"compactação de muitos arquivos:"
+#: ../src/xz/xz.1
+msgid "On GNU and *BSD, B<find>(1) and B<xargs>(1) can be used to parallelize compression of many files:"
+msgstr "No GNU e *BSD, B<find>(1) e B<xargs>(1) podem ser usados para paralelizar a compactação de muitos arquivos:"
#. type: Plain text
-#: ../src/xz/xz.1:2735
-#, no-wrap
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid ""
+#| "CW<find . -type f \\e! -name '*.xz' -print0 \\e\n"
+#| " | xargs -0r -P4 -n16 xz -T1>\n"
msgid ""
-"CW<find . -type f \\e! -name '*.xz' -print0 \\e\n"
-" | xargs -0r -P4 -n16 xz -T1>\n"
+"\\f(CRfind . -type f \\e! -name '*.xz' -print0 \\e\n"
+" | xargs -0r -P4 -n16 xz -T1\\fR\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:2757
-msgid ""
-"The B<-P> option to B<xargs>(1) sets the number of parallel B<xz> "
-"processes. The best value for the B<-n> option depends on how many files "
-"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 ""
-"A opção B<-P> para B<xargs>(1) define o número de processos paralelos do "
-"B<xz>. O melhor valor para a opção B<-n> depende de quantos arquivos devem "
-"ser compactados. Se houver apenas alguns arquivos, o valor provavelmente "
-"deve ser 1; com dezenas de milhares de arquivos, 100 ou até mais podem ser "
-"apropriados para reduzir o número de processos de B<xz> que B<xargs>(1) "
-"eventualmente criará."
+#: ../src/xz/xz.1
+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 "A opção B<-P> para B<xargs>(1) define o número de processos paralelos do B<xz>. O melhor valor para a opção B<-n> depende de quantos arquivos devem ser compactados. Se houver apenas alguns arquivos, o valor provavelmente deve ser 1; com dezenas de milhares de arquivos, 100 ou até mais podem ser apropriados para reduzir o número de processos de B<xz> que B<xargs>(1) eventualmente criará."
#. type: Plain text
-#: ../src/xz/xz.1:2765
-msgid ""
-"The option B<-T1> for B<xz> is there to force it to single-threaded mode, "
-"because B<xargs>(1) is used to control the amount of parallelization."
-msgstr ""
-"A opção B<-T1> para B<xz> existe para forçá-lo ao modo de thread única, "
-"porque B<xargs>(1) é usado para controlar a quantidade de paralelização."
+#: ../src/xz/xz.1
+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 "A opção B<-T1> para B<xz> existe para forçá-lo ao modo de thread única, porque B<xargs>(1) é usado para controlar a quantidade de paralelização."
#. type: SS
-#: ../src/xz/xz.1:2766
+#: ../src/xz/xz.1
#, no-wrap
msgid "Robot mode"
msgstr "Modo robô"
#. type: Plain text
-#: ../src/xz/xz.1:2769
-msgid ""
-"Calculate how many bytes have been saved in total after compressing multiple "
-"files:"
-msgstr ""
-"Calcular quantos bytes foram salvos no total depois de compactar vários "
-"arquivos:"
+#: ../src/xz/xz.1
+msgid "Calculate how many bytes have been saved in total after compressing multiple files:"
+msgstr "Calcular quantos bytes foram salvos no total depois de compactar vários arquivos:"
#. type: Plain text
-#: ../src/xz/xz.1:2774
-#, no-wrap
-msgid "CW<xz --robot --list *.xz | awk '/^totals/{print $5-$4}'>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --robot --list *.xz | awk '/^totals/{print $5-$4}'>\n"
+msgid "\\f(CRxz --robot --list *.xz | awk '/^totals/{print $5-$4}'\\fR\n"
msgstr "CW<xz --robot --list *.xz | awk '/^totals/{print $5-$4}'>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2789
-msgid ""
-"A script may want to know that it is using new enough B<xz>. The following "
-"B<sh>(1) script checks that the version number of the B<xz> tool is at "
-"least 5.0.0. This method is compatible with old beta versions, which didn't "
-"support the B<--robot> option:"
-msgstr ""
-"Um script pode querer saber que está usando B<xz> novo o suficiente. O "
-"seguinte script B<sh>(1) verifica se o número da versão da ferramenta B<xz> "
-"é pelo menos 5.0.0. Este método é compatível com versões beta antigas, que "
-"não suportavam a opção B<--robot>:"
+#: ../src/xz/xz.1
+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 "Um script pode querer saber que está usando B<xz> novo o suficiente. O seguinte script B<sh>(1) verifica se o número da versão da ferramenta B<xz> é pelo menos 5.0.0. Este método é compatível com versões beta antigas, que não suportavam a opção B<--robot>:"
#. type: Plain text
-#: ../src/xz/xz.1:2798
-#, no-wrap
+#: ../src/xz/xz.1
+#, fuzzy, 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"
msgid ""
-"CW<if ! eval \"$(xz --robot --version 2E<gt> /dev/null)\" ||\n"
+"\\f(CRif ! 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"
+"unset XZ_VERSION LIBLZMA_VERSION\\fR\n"
msgstr ""
"CW<if ! eval \"$(xz --robot --version 2E<gt> /dev/null)\" ||\n"
" [ \"$XZ_VERSION\" -lt 50000002 ]; then\n"
@@ -4823,24 +3244,27 @@ msgstr ""
"unset XZ_VERSION LIBLZMA_VERSION>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2805
-msgid ""
-"Set a memory usage limit for decompression using B<XZ_OPT>, but if a limit "
-"has already been set, don't increase it:"
-msgstr ""
-"Definir um limite de uso de memória para descompactação usando B<XZ_OPT>, "
-"mas se um limite já tiver sido definido, não o aumentar:"
+#: ../src/xz/xz.1
+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 "Definir um limite de uso de memória para descompactação usando B<XZ_OPT>, mas se um limite já tiver sido definido, não o aumentar:"
#. type: Plain text
-#: ../src/xz/xz.1:2815
-#, no-wrap
-msgid ""
-"CW<NEWLIM=$((123 E<lt>E<lt> 20))\\ \\ # 123 MiB\n"
+#: ../src/xz/xz.1
+#, fuzzy, 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"
+msgid ""
+"\\f(CRNEWLIM=$((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"
+"fi\\fR\n"
msgstr ""
"CW<NEWLIM=$((123 E<lt>E<lt> 20))\\ \\ # 123 MiB\n"
"OLDLIM=$(xz --robot --info-memory | cut -f3)\n"
@@ -4850,899 +3274,649 @@ msgstr ""
"fi>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2825
-msgid ""
-"The simplest use for custom filter chains is customizing a LZMA2 preset. "
-"This can be useful, because the presets cover only a subset of the "
-"potentially useful combinations of compression settings."
-msgstr ""
-"O uso mais simples para cadeias de filtro personalizadas é personalizar uma "
-"predefinição LZMA2. Isso pode ser útil, porque as predefinições abrangem "
-"apenas um subconjunto das combinações potencialmente úteis de configurações "
-"de compactação."
+#: ../src/xz/xz.1
+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 "O uso mais simples para cadeias de filtro personalizadas é personalizar uma predefinição LZMA2. Isso pode ser útil, porque as predefinições abrangem apenas um subconjunto das combinações potencialmente úteis de configurações de compactação."
#. type: Plain text
-#: ../src/xz/xz.1:2833
-msgid ""
-"The CompCPU columns of the tables from the descriptions of the options "
-"B<-0> ... B<-9> and B<--extreme> are useful when customizing LZMA2 presets. "
-"Here are the relevant parts collected from those two tables:"
-msgstr ""
-"As colunas CompCPU das tabelas das descrições das opções B<-0> ... B<-9> e "
-"B<--extreme> são úteis ao personalizar as predefinições LZMA2. Aqui estão as "
-"partes relevantes coletadas dessas duas tabelas:"
+#: ../src/xz/xz.1
+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 "As colunas CompCPU das tabelas das descrições das opções B<-0> ... B<-9> e B<--extreme> são úteis ao personalizar as predefinições LZMA2. Aqui estão as partes relevantes coletadas dessas duas tabelas:"
#. type: Plain text
-#: ../src/xz/xz.1:2858
-msgid ""
-"If you know that a file requires somewhat big dictionary (for example, 32\\ "
-"MiB) to compress well, but you want to compress it quicker than B<xz -8> "
-"would do, a preset with a low CompCPU value (for example, 1) can be "
-"modified to use a bigger dictionary:"
-msgstr ""
-"Se você sabe que um arquivo requer um dicionário um tanto grande (por "
-"exemplo, 32\\ MiB) para compactar bem, mas deseja comprimi-lo mais "
-"rapidamente do que B<xz -8> faria, uma predefinição com um valor CompCPU "
-"baixo (por exemplo, 1) pode ser modificado para usar um dicionário maior:"
+#: ../src/xz/xz.1
+msgid "If you know that a file requires somewhat big dictionary (for example, 32\\ MiB) to compress well, but you want to compress it quicker than B<xz -8> would do, a preset with a low CompCPU value (for example, 1) can be modified to use a bigger dictionary:"
+msgstr "Se você sabe que um arquivo requer um dicionário um tanto grande (por exemplo, 32\\ MiB) para compactar bem, mas deseja comprimi-lo mais rapidamente do que B<xz -8> faria, uma predefinição com um valor CompCPU baixo (por exemplo, 1) pode ser modificado para usar um dicionário maior:"
#. type: Plain text
-#: ../src/xz/xz.1:2863
-#, no-wrap
-msgid "CW<xz --lzma2=preset=1,dict=32MiB foo.tar>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --lzma2=preset=1,dict=32MiB foo.tar>\n"
+msgid "\\f(CRxz --lzma2=preset=1,dict=32MiB foo.tar\\fR\n"
msgstr "CW<xz --lzma2=preset=1,dict=32MiB foo.tar>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2879
-msgid ""
-"With certain files, the above command may be faster than B<xz -6> while "
-"compressing significantly better. However, it must be emphasized that only "
-"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 ""
-"Com certos arquivos, o comando acima pode ser mais rápido que B<xz -6> "
-"enquanto compacta significativamente melhor. No entanto, deve-se enfatizar "
-"que apenas alguns arquivos se beneficiam de um grande dicionário, mantendo o "
-"valor CompCPU baixo. A situação mais óbvia, onde um grande dicionário pode "
-"ajudar muito, é um arquivo contendo arquivos muito semelhantes de pelo menos "
-"alguns megabytes cada. O tamanho do dicionário deve ser significativamente "
-"maior do que qualquer arquivo individual para permitir que o LZMA2 aproveite "
-"ao máximo as semelhanças entre arquivos consecutivos."
+#: ../src/xz/xz.1
+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 "Com certos arquivos, o comando acima pode ser mais rápido que B<xz -6> enquanto compacta significativamente melhor. No entanto, deve-se enfatizar que apenas alguns arquivos se beneficiam de um grande dicionário, mantendo o valor CompCPU baixo. A situação mais óbvia, onde um grande dicionário pode ajudar muito, é um arquivo contendo arquivos muito semelhantes de pelo menos alguns megabytes cada. O tamanho do dicionário deve ser significativamente maior do que qualquer arquivo individual para permitir que o LZMA2 aproveite ao máximo as semelhanças entre arquivos consecutivos."
#. type: Plain text
-#: ../src/xz/xz.1:2886
-msgid ""
-"If very high compressor and decompressor memory usage is fine, and the file "
-"being compressed is at least several hundred megabytes, it may be useful to "
-"use an even bigger dictionary than the 64 MiB that B<xz -9> would use:"
-msgstr ""
-"Se o uso muito alto de memória do compactador e do descompactador for bom e "
-"o arquivo que está sendo compactado tiver pelo menos várias centenas de "
-"megabytes, pode ser útil usar um dicionário ainda maior do que os 64 MiB que "
-"o B<xz -9> usaria:"
+#: ../src/xz/xz.1
+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 "Se o uso muito alto de memória do compactador e do descompactador for bom e o arquivo que está sendo compactado tiver pelo menos várias centenas de megabytes, pode ser útil usar um dicionário ainda maior do que os 64 MiB que o B<xz -9> usaria:"
#. type: Plain text
-#: ../src/xz/xz.1:2891
-#, no-wrap
-msgid "CW<xz -vv --lzma2=dict=192MiB big_foo.tar>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz -vv --lzma2=dict=192MiB big_foo.tar>\n"
+msgid "\\f(CRxz -vv --lzma2=dict=192MiB big_foo.tar\\fR\n"
msgstr "CW<xz -vv --lzma2=dict=192MiB big_foo.tar>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2904
-msgid ""
-"Using B<-vv> (B<--verbose --verbose>) like in the above example can be "
-"useful to see the memory requirements of the compressor and decompressor. "
-"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 ""
-"Usar B<-vv> (B<--verbose --verbose>) como no exemplo acima pode ser útil "
-"para ver os requisitos de memória do compactador e do descompactador. Lembre-"
-"se que usar um dicionário maior que o tamanho do arquivo descompactado é "
-"desperdício de memória, então o comando acima não é útil para arquivos "
-"pequenos."
+#: ../src/xz/xz.1
+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 "Usar B<-vv> (B<--verbose --verbose>) como no exemplo acima pode ser útil para ver os requisitos de memória do compactador e do descompactador. Lembre-se que usar um dicionário maior que o tamanho do arquivo descompactado é desperdício de memória, então o comando acima não é útil para arquivos pequenos."
#. type: Plain text
-#: ../src/xz/xz.1:2916
-msgid ""
-"Sometimes the compression time doesn't matter, but the decompressor memory "
-"usage has to be kept low, for example, to make it possible to decompress the "
-"file on an embedded system. The following command uses B<-6e> (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 ""
-"Às vezes, o tempo de compactação não importa, mas o uso de memória do "
-"descompactador deve ser mantido baixo, por exemplo, para possibilitar a "
-"descompactação do arquivo em um sistema embarcado. O comando a seguir usa "
-"B<-6e> (B<-6 --extreme>) como base e define o dicionário como apenas 64\\ "
-"KiB. O arquivo resultante pode ser descompactado com XZ Embedded (é por isso "
-"que existe B<--check=crc32>) usando cerca de 100\\ KiB de memória."
+#: ../src/xz/xz.1
+msgid "Sometimes the compression time doesn't matter, but the decompressor memory usage has to be kept low, for example, to make it possible to decompress the file on an embedded system. The following command uses B<-6e> (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 "Às vezes, o tempo de compactação não importa, mas o uso de memória do descompactador deve ser mantido baixo, por exemplo, para possibilitar a descompactação do arquivo em um sistema embarcado. O comando a seguir usa B<-6e> (B<-6 --extreme>) como base e define o dicionário como apenas 64\\ KiB. O arquivo resultante pode ser descompactado com XZ Embedded (é por isso que existe B<--check=crc32>) usando cerca de 100\\ KiB de memória."
#. type: Plain text
-#: ../src/xz/xz.1:2921
-#, no-wrap
-msgid "CW<xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo>\n"
+msgid "\\f(CRxz --check=crc32 --lzma2=preset=6e,dict=64KiB foo\\fR\n"
msgstr "CW<xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2944
-msgid ""
-"If you want to squeeze out as many bytes as possible, adjusting the number "
-"of literal context bits (I<lc>) and number of position bits (I<pb>) can "
-"sometimes help. Adjusting the number of literal position bits (I<lp>) "
-"might help too, but usually I<lc> and I<pb> are more important. For "
-"example, a source code archive contains mostly US-ASCII text, so something "
-"like the following might give slightly (like 0.1\\ %) smaller file than B<xz "
-"-6e> (try also without B<lc=4>):"
-msgstr ""
-"Se você deseja espremer o máximo de bytes possível, ajustar o número de bits "
-"de contexto literal (I<lc>) e o número de bits de posição (I<pb>) às vezes "
-"pode ajudar. Ajustar o número de bits de posição literal (I<lp>) também pode "
-"ajudar, mas geralmente I<lc> e I<pb> são mais importantes. Por exemplo, um "
-"arquivo de código-fonte contém principalmente texto US-ASCII, então algo "
-"como o seguinte pode fornecer um arquivo ligeiramente (como 0,1\\ %) menor "
-"que B<xz -6e> (tente também sem B<lc=4>):"
+#: ../src/xz/xz.1
+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. For example, a source code archive contains mostly US-ASCII text, so something like the following might give slightly (like 0.1\\ %) smaller file than B<xz -6e> (try also without B<lc=4>):"
+msgstr "Se você deseja espremer o máximo de bytes possível, ajustar o número de bits de contexto literal (I<lc>) e o número de bits de posição (I<pb>) às vezes pode ajudar. Ajustar o número de bits de posição literal (I<lp>) também pode ajudar, mas geralmente I<lc> e I<pb> são mais importantes. Por exemplo, um arquivo de código-fonte contém principalmente texto US-ASCII, então algo como o seguinte pode fornecer um arquivo ligeiramente (como 0,1\\ %) menor que B<xz -6e> (tente também sem B<lc=4>):"
#. type: Plain text
-#: ../src/xz/xz.1:2949
-#, no-wrap
-msgid "CW<xz --lzma2=preset=6e,pb=0,lc=4 source_code.tar>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --lzma2=preset=6e,pb=0,lc=4 source_code.tar>\n"
+msgid "\\f(CRxz --lzma2=preset=6e,pb=0,lc=4 source_code.tar\\fR\n"
msgstr "CW<xz --lzma2=preset=6e,pb=0,lc=4 source_code.tar>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2957
-msgid ""
-"Using another filter together with LZMA2 can improve compression with "
-"certain file types. For example, to compress a x86-32 or x86-64 shared "
-"library using the x86 BCJ filter:"
-msgstr ""
-"O uso de outro filtro junto com o LZMA2 pode melhorar a compactação com "
-"determinados tipos de arquivo. Por exemplo, para compactar uma biblioteca "
-"compartilhada x86-32 ou x86-64 usando o filtro x86 BCJ:"
+#: ../src/xz/xz.1
+msgid "Using another filter together with LZMA2 can improve compression with certain file types. For example, to compress a x86-32 or x86-64 shared library using the x86 BCJ filter:"
+msgstr "O uso de outro filtro junto com o LZMA2 pode melhorar a compactação com determinados tipos de arquivo. Por exemplo, para compactar uma biblioteca compartilhada x86-32 ou x86-64 usando o filtro x86 BCJ:"
#. type: Plain text
-#: ../src/xz/xz.1:2962
-#, no-wrap
-msgid "CW<xz --x86 --lzma2 libfoo.so>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --x86 --lzma2 libfoo.so>\n"
+msgid "\\f(CRxz --x86 --lzma2 libfoo.so\\fR\n"
msgstr "CW<xz --x86 --lzma2 libfoo.so>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2976
-msgid ""
-"Note that the order of the filter options is significant. If B<--x86> is "
-"specified after B<--lzma2>, B<xz> will give an error, because there cannot "
-"be any filter after LZMA2, and also because the x86 BCJ filter cannot be "
-"used as the last filter in the chain."
-msgstr ""
-"Observe que a ordem das opções de filtro é significativa. Se B<--x86> for "
-"especificado após B<--lzma2>, B<xz> dará um erro, porque não pode haver "
-"nenhum filtro após LZMA2 e também porque o filtro x86 BCJ não pode ser usado "
-"como o último filtro em a corrente."
+#: ../src/xz/xz.1
+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 "Observe que a ordem das opções de filtro é significativa. Se B<--x86> for especificado após B<--lzma2>, B<xz> dará um erro, porque não pode haver nenhum filtro após LZMA2 e também porque o filtro x86 BCJ não pode ser usado como o último filtro em a corrente."
#. type: Plain text
-#: ../src/xz/xz.1:2982
-msgid ""
-"The Delta filter together with LZMA2 can give good results with bitmap "
-"images. It should usually beat PNG, which has a few more advanced filters "
-"than simple delta but uses Deflate for the actual compression."
-msgstr ""
-"O filtro Delta junto com LZMA2 pode dar bons resultados com imagens bitmap. "
-"Ele geralmente deve superar o PNG, que possui alguns filtros mais avançados "
-"do que o delta simples, mas usa Deflate para a compactação real."
+#: ../src/xz/xz.1
+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 "O filtro Delta junto com LZMA2 pode dar bons resultados com imagens bitmap. Ele geralmente deve superar o PNG, que possui alguns filtros mais avançados do que o delta simples, mas usa Deflate para a compactação real."
#. type: Plain text
-#: ../src/xz/xz.1:2992
-msgid ""
-"The image has to be saved in uncompressed format, for example, as "
-"uncompressed TIFF. The distance parameter of the Delta filter is set to "
-"match the number of bytes per pixel in the image. For example, 24-bit RGB "
-"bitmap needs B<dist=3>, and it is also good to pass B<pb=0> to LZMA2 to "
-"accommodate the three-byte alignment:"
-msgstr ""
-"A imagem deve ser salva em formato não compactado, por exemplo, como TIFF "
-"não compactado. O parâmetro de distância do filtro Delta é definido para "
-"corresponder ao número de bytes por pixel na imagem. Por exemplo, bitmap RGB "
-"de 24 bits precisa de B<dist=3>, e também é bom passar B<pb=0> para LZMA2 "
-"para acomodar o alinhamento de três bytes:"
+#: ../src/xz/xz.1
+msgid "The image has to be saved in uncompressed format, for example, as uncompressed TIFF. The distance parameter of the Delta filter is set to match the number of bytes per pixel in the image. For example, 24-bit RGB bitmap needs B<dist=3>, and it is also good to pass B<pb=0> to LZMA2 to accommodate the three-byte alignment:"
+msgstr "A imagem deve ser salva em formato não compactado, por exemplo, como TIFF não compactado. O parâmetro de distância do filtro Delta é definido para corresponder ao número de bytes por pixel na imagem. Por exemplo, bitmap RGB de 24 bits precisa de B<dist=3>, e também é bom passar B<pb=0> para LZMA2 para acomodar o alinhamento de três bytes:"
#. type: Plain text
-#: ../src/xz/xz.1:2997
-#, no-wrap
-msgid "CW<xz --delta=dist=3 --lzma2=pb=0 foo.tiff>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --delta=dist=3 --lzma2=pb=0 foo.tiff>\n"
+msgid "\\f(CRxz --delta=dist=3 --lzma2=pb=0 foo.tiff\\fR\n"
msgstr "CW<xz --delta=dist=3 --lzma2=pb=0 foo.tiff>\n"
#. type: Plain text
-#: ../src/xz/xz.1:3005
-msgid ""
-"If multiple images have been put into a single archive (for example, B<."
-"tar>), the Delta filter will work on that too as long as all images have the "
-"same number of bytes per pixel."
-msgstr ""
-"Se várias imagens foram colocadas em um único arquivo (por exemplo, B<."
-"tar>), o filtro Delta também funcionará, desde que todas as imagens tenham o "
-"mesmo número de bytes por pixel."
+#: ../src/xz/xz.1
+msgid "If multiple images have been put into a single archive (for example, B<.tar>), the Delta filter will work on that too as long as all images have the same number of bytes per pixel."
+msgstr "Se várias imagens foram colocadas em um único arquivo (por exemplo, B<.tar>), o filtro Delta também funcionará, desde que todas as imagens tenham o mesmo número de bytes por pixel."
#. type: SH
-#: ../src/xz/xz.1:3006 ../src/xzdec/xzdec.1:143 ../src/lzmainfo/lzmainfo.1:59
-#: ../src/scripts/xzdiff.1:65 ../src/scripts/xzgrep.1:106
-#: ../src/scripts/xzless.1:65 ../src/scripts/xzmore.1:51
+#: ../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
#, no-wrap
msgid "SEE ALSO"
msgstr "VEJA TAMBÉM"
#. type: Plain text
-#: ../src/xz/xz.1:3015
-msgid ""
-"B<xzdec>(1), B<xzdiff>(1), B<xzgrep>(1), B<xzless>(1), B<xzmore>(1), "
-"B<gzip>(1), B<bzip2>(1), B<7z>(1)"
-msgstr ""
-"B<xzdec>(1), B<xzdiff>(1), B<xzgrep>(1), B<xzless>(1), B<xzmore>(1), "
-"B<gzip>(1), B<bzip2>(1), B<7z>(1)"
+#: ../src/xz/xz.1
+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:3017
+#: ../src/xz/xz.1
msgid "XZ Utils: E<lt>https://tukaani.org/xz/E<gt>"
-msgstr "XZ Utils: E<lt>https://tukaani.org/xz/E<gt>"
+msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:3019 ../src/xzdec/xzdec.1:146
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
msgid "XZ Embedded: E<lt>https://tukaani.org/xz/embedded.htmlE<gt>"
-msgstr "XZ Embedded: E<lt>https://tukaani.org/xz/embedded.htmlE<gt>"
+msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:3020
-#, fuzzy
-#| msgid "LZMA SDK: E<lt>http://7-zip.org/sdk.htmlE<gt>"
+#: ../src/xz/xz.1
msgid "LZMA SDK: E<lt>https://7-zip.org/sdk.htmlE<gt>"
-msgstr "LZMA SDK: E<lt>http://7-zip.org/sdk.htmlE<gt>"
+msgstr ""
#. type: TH
-#: ../src/xzdec/xzdec.1:7
+#: ../src/xzdec/xzdec.1
#, no-wrap
msgid "XZDEC"
msgstr "XZDEC"
-#. type: TH
-#: ../src/xzdec/xzdec.1:7
-#, no-wrap
-msgid "2017-04-19"
-msgstr "2017-04-19"
-
#. type: Plain text
-#: ../src/xzdec/xzdec.1:10
+#: ../src/xzdec/xzdec.1
msgid "xzdec, lzmadec - Small .xz and .lzma decompressors"
msgstr "xzdec, lzmadec - Pequenos descompactadores .xz e .lzma"
#. type: Plain text
-#: ../src/xzdec/xzdec.1:14
+#: ../src/xzdec/xzdec.1
msgid "B<xzdec> [I<option...>] [I<file...>]"
msgstr "B<xzdec> [I<opção...>] [I<arquivo...>]"
#. type: Plain text
-#: ../src/xzdec/xzdec.1:18
+#: ../src/xzdec/xzdec.1
msgid "B<lzmadec> [I<option...>] [I<file...>]"
msgstr "B<lzmadec> [I<opção...>] [I<arquivo...>]"
#. 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> é uma ferramenta de descompactação baseada em liblzma somente para "
-"arquivos B<.xz> (e somente B<.xz>). B<xzdec> destina-se a funcionar como um "
-"substituto para B<xz>(1) nas situações mais comuns em que um script foi "
-"escrito para usar B<xz --decompress --stdout> (e possivelmente alguns outras "
-"opções comumente usadas) para descompactar arquivos B<.xz>. B<lzmadec> é "
-"idêntico a B<xzdec> exceto que B<lzmadec> tem suporte a arquivos B<.lzma> em "
-"vez de arquivos B<.xz>."
+#: ../src/xzdec/xzdec.1
+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> é uma ferramenta de descompactação baseada em liblzma somente para arquivos B<.xz> (e somente B<.xz>). B<xzdec> destina-se a funcionar como um substituto para B<xz>(1) nas situações mais comuns em que um script foi escrito para usar B<xz --decompress --stdout> (e possivelmente alguns outras opções comumente usadas) para descompactar arquivos B<.xz>. B<lzmadec> é idêntico a B<xzdec> exceto que B<lzmadec> tem suporte a arquivos B<.lzma> em vez de arquivos B<.xz>."
#. 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 ""
-"Para reduzir o tamanho do executável, B<xzdec> não tem suporte ao uso de "
-"várias threads ou a localização, e não lê opções de variáveis de ambiente "
-"B<XZ_DEFAULTS> e B<XZ_OPT>. B<xzdec> não tem suporte à exibição de "
-"informações de progresso intermediárias: enviar B<SIGINFO> para B<xzdec> não "
-"faz nada, mas enviar B<SIGUSR1> encerra o processo em vez de exibir "
-"informações de progresso."
+#: ../src/xzdec/xzdec.1
+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 "Para reduzir o tamanho do executável, B<xzdec> não tem suporte ao uso de várias threads ou a localização, e não lê opções de variáveis de ambiente B<XZ_DEFAULTS> e B<XZ_OPT>. B<xzdec> não tem suporte à exibição de informações de progresso intermediárias: enviar B<SIGINFO> para B<xzdec> não faz nada, mas enviar B<SIGUSR1> encerra o processo em vez de exibir informações de progresso."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:69
-msgid ""
-"Ignored for B<xz>(1) compatibility. B<xzdec> supports only decompression."
-msgstr ""
-"Ignorada para compatibilidade B<xz>(1). B<xzdec> tem suporte a apenas "
-"descompactação."
+#: ../src/xzdec/xzdec.1
+msgid "Ignored for B<xz>(1) compatibility. B<xzdec> supports only decompression."
+msgstr "Ignorada para compatibilidade B<xz>(1). B<xzdec> tem suporte a apenas descompactação."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:76
-msgid ""
-"Ignored for B<xz>(1) compatibility. B<xzdec> never creates or removes any "
-"files."
-msgstr ""
-"Ignorada para compatibilidade B<xz>(1). B<xzdec> nunca cria ou remove "
-"quaisquer arquivos."
+#: ../src/xzdec/xzdec.1
+msgid "Ignored for B<xz>(1) compatibility. B<xzdec> never creates or removes any files."
+msgstr "Ignorada para compatibilidade B<xz>(1). B<xzdec> nunca cria ou remove quaisquer arquivos."
#. 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 ""
-"Ignorada para compatibilidade B<xz>(1). B<xzdec> sempre grava os dados "
-"descompactados para a saída padrão."
+#: ../src/xzdec/xzdec.1
+msgid "Ignored for B<xz>(1) compatibility. B<xzdec> always writes the decompressed data to standard output."
+msgstr "Ignorada para compatibilidade B<xz>(1). B<xzdec> sempre grava os dados descompactados para a saída padrão."
#. 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 ""
-"Especificar isso uma vez não faz nada, pois B<xzdec> nunca exibe nenhum "
-"aviso ou notificação. Especifique isso duas vezes para suprimir erros."
+#: ../src/xzdec/xzdec.1
+msgid "Specifying this once does nothing since B<xzdec> never displays any warnings or notices. Specify this twice to suppress errors."
+msgstr "Especificar isso uma vez não faz nada, pois B<xzdec> nunca exibe nenhum aviso ou notificação. Especifique isso duas vezes para suprimir erros."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:96
-msgid ""
-"Ignored for B<xz>(1) compatibility. B<xzdec> never uses the exit status 2."
-msgstr ""
-"Ignorada para compatibilidade B<xz>(1). B<xzdec> nunca usa o status de saída "
-"2."
+#: ../src/xzdec/xzdec.1
+msgid "Ignored for B<xz>(1) compatibility. B<xzdec> never uses the exit status 2."
+msgstr "Ignorada para compatibilidade B<xz>(1). B<xzdec> nunca usa o status de saída 2."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:99
+#: ../src/xzdec/xzdec.1
msgid "Display a help message and exit successfully."
msgstr "Exibe uma mensagem de ajuda e sai com sucesso."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:104
+#: ../src/xzdec/xzdec.1
msgid "Display the version number of B<xzdec> and liblzma."
msgstr "Mostra o número da versão do B<xzdec> e liblzma."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:108
+#: ../src/xzdec/xzdec.1
msgid "All was good."
msgstr "Correu tudo bem."
#. 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> não possui nenhuma mensagem de aviso como o B<xz>(1), portanto, o "
-"status de saída 2 não é usado por B<xzdec>."
+#: ../src/xzdec/xzdec.1
+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> não possui nenhuma mensagem de aviso como o B<xz>(1), portanto, o status de saída 2 não é usado por B<xzdec>."
#. 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 ""
-"Use B<xz>(1) em vez de B<xzdec> ou B<lzmadec> para uso diário normal. "
-"B<xzdec> ou B<lzmadec> destinam-se apenas a situações em que é importante "
-"ter um descompactador menor do que o B<xz>(1) completo."
+#: ../src/xzdec/xzdec.1
+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 "Use B<xz>(1) em vez de B<xzdec> ou B<lzmadec> para uso diário normal. B<xzdec> ou B<lzmadec> destinam-se apenas a situações em que é importante ter um descompactador menor do que o B<xz>(1) completo."
#. 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> e B<lzmadec> não são realmente tão pequenos. O tamanho pode ser "
-"reduzido ainda mais eliminando recursos do liblzma no tempo de compilação, "
-"mas isso geralmente não deve ser feito para executáveis distribuídos em "
-"distribuições típicas de sistemas operacionais não embarcados. Se você "
-"precisa de um descompactador B<.xz> realmente pequeno, considere usar o XZ "
-"Embedded."
+#: ../src/xzdec/xzdec.1
+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> e B<lzmadec> não são realmente tão pequenos. O tamanho pode ser reduzido ainda mais eliminando recursos do liblzma no tempo de compilação, mas isso geralmente não deve ser feito para executáveis distribuídos em distribuições típicas de sistemas operacionais não embarcados. Se você precisa de um descompactador B<.xz> realmente pequeno, considere usar o XZ Embedded."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:145 ../src/lzmainfo/lzmainfo.1:60
+#: ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
msgid "B<xz>(1)"
msgstr "B<xz>(1)"
#. type: TH
-#: ../src/lzmainfo/lzmainfo.1:7
+#: ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "LZMAINFO"
msgstr "LZMAINFO"
#. type: TH
-#: ../src/lzmainfo/lzmainfo.1:7 ../src/scripts/xzmore.1:7
+#: ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "2013-06-30"
msgstr "2013-06-30"
#. type: Plain text
-#: ../src/lzmainfo/lzmainfo.1:10
+#: ../src/lzmainfo/lzmainfo.1
msgid "lzmainfo - show information stored in the .lzma file header"
-msgstr ""
-"lzmainfo - mostra informações armazenadas no cabeçalho do arquivo .lzma"
+msgstr "lzmainfo - mostra informações armazenadas no cabeçalho do arquivo .lzma"
#. type: Plain text
-#: ../src/lzmainfo/lzmainfo.1:15
+#: ../src/lzmainfo/lzmainfo.1
msgid "B<lzmainfo> [B<--help>] [B<--version>] [I<file...>]"
msgstr "B<lzmainfo> [B<--help>] [B<--version>] [I<arquivo...>]"
#. 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> mostra as informações armazenadas no cabeçalho do arquivo B<."
-"lzma>. Ele lê os primeiros 13 bytes do I<arquivo> especificado, decodifica o "
-"cabeçalho e o imprime na saída padrão em formato legível por humanos. Se "
-"nenhum I<arquivo> for fornecido ou I<arquivo> for B<->, a entrada padrão "
-"será lida."
+#: ../src/lzmainfo/lzmainfo.1
+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> mostra as informações armazenadas no cabeçalho do arquivo B<.lzma>. Ele lê os primeiros 13 bytes do I<arquivo> especificado, decodifica o cabeçalho e o imprime na saída padrão em formato legível por humanos. Se nenhum I<arquivo> for fornecido ou I<arquivo> for B<->, a entrada padrão será lida."
#. 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 ""
-"Normalmente, as informações mais interessantes são o tamanho descompactado e "
-"o tamanho do dicionário. O tamanho não compactado pode ser mostrado apenas "
-"se o arquivo estiver na variante de formato B<.lzma> não transmitido. A "
-"quantidade de memória necessária para descompactar o arquivo é de algumas "
-"dezenas de kilobytes mais o tamanho do dicionário."
+#: ../src/lzmainfo/lzmainfo.1
+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 "Normalmente, as informações mais interessantes são o tamanho descompactado e o tamanho do dicionário. O tamanho não compactado pode ser mostrado apenas se o arquivo estiver na variante de formato B<.lzma> não transmitido. A quantidade de memória necessária para descompactar o arquivo é de algumas dezenas de kilobytes mais o tamanho do dicionário."
#. 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> está incluído no XZ Utils principalmente para compatibilidade "
-"com versões anteriores do LZMA Utils."
+#: ../src/lzmainfo/lzmainfo.1
+msgid "B<lzmainfo> is included in XZ Utils primarily for backward compatibility with LZMA Utils."
+msgstr "B<lzmainfo> está incluído no XZ Utils principalmente para compatibilidade com versões anteriores do LZMA Utils."
#. type: SH
-#: ../src/lzmainfo/lzmainfo.1:51 ../src/scripts/xzdiff.1:74
+#: ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "BUGS"
msgstr "BUGS"
#. 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> usa B<MB> enquanto o sufixo correto seria B<MiB> (2^20 bytes). "
-"Isso é para manter a saída compatível com LZMA Utils."
+#: ../src/lzmainfo/lzmainfo.1
+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> usa B<MB> enquanto o sufixo correto seria B<MiB> (2^20 bytes). Isso é para manter a saída compatível com LZMA Utils."
#. type: TH
-#: ../src/scripts/xzdiff.1:9
+#: ../src/scripts/xzdiff.1
#, no-wrap
msgid "XZDIFF"
msgstr "XZDIFF"
#. type: TH
-#: ../src/scripts/xzdiff.1:9
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1
#, no-wrap
-msgid "2021-06-04"
-msgstr "2021-06-04"
+msgid "2024-02-13"
+msgstr ""
#. type: Plain text
-#: ../src/scripts/xzdiff.1:12
+#: ../src/scripts/xzdiff.1
msgid "xzcmp, xzdiff, lzcmp, lzdiff - compare compressed files"
msgstr "xzcmp, xzdiff, lzcmp, lzdiff - compara arquivos compactados"
#. type: Plain text
-#: ../src/scripts/xzdiff.1:15
-msgid "B<xzcmp> [I<cmp_options>] I<file1> [I<file2>]"
-msgstr "B<xzcmp> [I<opções_cmd>] I<arquivo1> [I<arquivo2>]"
+#: ../src/scripts/xzdiff.1
+#, fuzzy
+#| msgid "B<xz> [I<option...>] [I<file...>]"
+msgid "B<xzcmp> [I<option...>] I<file1> [I<file2>]"
+msgstr "B<xz> [I<opção...>] [I<arquivo...>]"
#. type: Plain text
-#: ../src/scripts/xzdiff.1:18
-msgid "B<xzdiff> [I<diff_options>] I<file1> [I<file2>]"
-msgstr "B<xzdiff> [I<opções_diff>] I<arquivo1> [I<arquivo2>]"
+#: ../src/scripts/xzdiff.1
+#, fuzzy
+#| msgid "B<xzfgrep> \\&..."
+msgid "B<xzdiff> \\&..."
+msgstr "B<xzfgrep> \\&..."
#. type: Plain text
-#: ../src/scripts/xzdiff.1:21
-msgid "B<lzcmp> [I<cmp_options>] I<file1> [I<file2>]"
-msgstr "B<lzcmp> [I<opções_cmp>] I<arquivo1> [I<arquivo2>]"
+#: ../src/scripts/xzdiff.1
+#, fuzzy
+#| msgid "B<lzgrep> \\&..."
+msgid "B<lzcmp> \\&..."
+msgstr "B<lzgrep> \\&..."
#. type: Plain text
-#: ../src/scripts/xzdiff.1:24
-msgid "B<lzdiff> [I<diff_options>] I<file1> [I<file2>]"
-msgstr "B<lzdiff> [I<opções_diff>] I<arquivo1> [I<arquivo2>]"
+#: ../src/scripts/xzdiff.1
+#, fuzzy
+#| msgid "B<lzfgrep> \\&..."
+msgid "B<lzdiff> \\&..."
+msgstr "B<lzfgrep> \\&..."
#. type: Plain text
-#: ../src/scripts/xzdiff.1:59
-msgid ""
-"B<xzcmp> and B<xzdiff> invoke B<cmp>(1) or B<diff>(1) on files compressed "
-"with B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), or "
-"B<zstd>(1). All options specified are passed directly to B<cmp>(1) or "
-"B<diff>(1). If only one file is specified, then the files compared are "
-"I<file1> (which must have a suffix of a supported compression format) and "
-"I<file1> from which the compression format suffix has been stripped. If two "
-"files are specified, then they are uncompressed if necessary and fed to "
-"B<cmp>(1) or B<diff>(1). The exit status from B<cmp>(1) or B<diff>(1) is "
-"preserved unless a decompression error occurs; then exit status is 2."
+#: ../src/scripts/xzdiff.1
+msgid "B<xzcmp> and B<xzdiff> compare uncompressed contents of two files. Uncompressed data and options are passed to B<cmp>(1) or B<diff>(1) unless B<--help> or B<--version> is specified."
msgstr ""
-"B<xzcmp> e B<xzdiff> invocam B<cmp>(1) ou B<diff>(1) em arquivos compactados "
-"com B<xz>(1), B<lzma>(1), B<gzip>( 1), B<bzip2>(1), B<lzop>(1) ou "
-"B<zstd>(1). Todas as opções especificadas são passadas diretamente para "
-"B<cmp>(1) ou B<diff>(1). Se apenas um arquivo for especificado, os arquivos "
-"comparados serão I<arquivo1> (que deve ter um sufixo de um formato de "
-"compactação compatível) e I<arquivo1> do qual o sufixo do formato de "
-"compactação foi removido. Se dois arquivos forem especificados, eles serão "
-"descompactados, se necessário, e enviados para B<cmp>(1) ou B<diff>(1). O "
-"status de saída de B<cmp>(1) ou B<diff>(1) é preservado, a menos que ocorra "
-"um erro de descompactação; então o status de saída é 2."
-
-#. type: Plain text
-#: ../src/scripts/xzdiff.1:65
-msgid ""
-"The names B<lzcmp> and B<lzdiff> are provided for backward compatibility "
-"with LZMA Utils."
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1
+msgid "If both I<file1> and I<file2> are specified, they can be uncompressed files or files in formats that B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), or B<lz4>(1) can decompress. The required decompression commands are determined from the filename suffixes of I<file1> and I<file2>. A file with an unknown suffix is assumed to be either uncompressed or in a format that B<xz>(1) can decompress."
msgstr ""
-"Os nomes B<lzcmp> e B<lzdiff> são fornecidos para compatibilidade com "
-"versões anteriores do LZMA Utils."
#. type: Plain text
-#: ../src/scripts/xzdiff.1:74
-msgid ""
-"B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), "
-"B<zstd>(1), B<zdiff>(1)"
+#: ../src/scripts/xzdiff.1
+msgid "If only one filename is provided, I<file1> must have a suffix of a supported compression format and the name for I<file2> is assumed to be I<file1> with the compression format suffix removed."
msgstr ""
-"B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), "
-"B<zstd>(1), B<zdiff>(1)"
#. type: Plain text
-#: ../src/scripts/xzdiff.1:79
-msgid ""
-"Messages from the B<cmp>(1) or B<diff>(1) programs refer to temporary "
-"filenames instead of those specified."
+#: ../src/scripts/xzdiff.1
+#, fuzzy
+#| msgid "The command named B<lzless> is provided for backward compatibility with LZMA Utils."
+msgid "The commands B<lzcmp> and B<lzdiff> are provided for backward compatibility with LZMA Utils."
+msgstr "O comando denominado B<lzless> é fornecido para compatibilidade com versões anteriores do LZMA Utils."
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1
+msgid "If a decompression error occurs, the exit status is B<2>. Otherwise the exit status of B<cmp>(1) or B<diff>(1) is used."
msgstr ""
-"As mensagens dos programas B<cmp>(1) ou B<diff>(1) referem-se a nomes de "
-"arquivos temporários em vez daqueles especificados."
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1
+#, fuzzy
+#| 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)"
+msgid "B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), B<lz4>(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: TH
-#: ../src/scripts/xzgrep.1:9
+#: ../src/scripts/xzgrep.1
#, no-wrap
msgid "XZGREP"
msgstr "XZGREP"
-#. type: TH
-#: ../src/scripts/xzgrep.1:9
-#, no-wrap
-msgid "2022-07-19"
-msgstr "2022-07-19"
-
#. type: Plain text
-#: ../src/scripts/xzgrep.1:12
-msgid "xzgrep - search compressed files for a regular expression"
-msgstr "xzgrep - pesquisa arquivos compactados para uma expressão regular"
+#: ../src/scripts/xzgrep.1
+msgid "xzgrep - search possibly-compressed files for patterns"
+msgstr ""
#. type: Plain text
-#: ../src/scripts/xzgrep.1:18
-msgid "B<xzgrep> [I<grep_options>] [B<-e>] I<pattern> [I<file...>]"
-msgstr "B<xzgrep> [I<opções_grep>] [B<-e>] I<padrão> [I<arquivo...>]"
+#: ../src/scripts/xzgrep.1
+#, fuzzy
+#| msgid "B<xz> [I<option...>] [I<file...>]"
+msgid "B<xzgrep> [I<option...>] [I<pattern_list>] [I<file...>]"
+msgstr "B<xz> [I<opção...>] [I<arquivo...>]"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:21
+#: ../src/scripts/xzgrep.1
msgid "B<xzegrep> \\&..."
msgstr "B<xzegrep> \\&..."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:24
+#: ../src/scripts/xzgrep.1
msgid "B<xzfgrep> \\&..."
msgstr "B<xzfgrep> \\&..."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:27
+#: ../src/scripts/xzgrep.1
msgid "B<lzgrep> \\&..."
msgstr "B<lzgrep> \\&..."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:30
+#: ../src/scripts/xzgrep.1
msgid "B<lzegrep> \\&..."
msgstr "B<lzegrep> \\&..."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:33
+#: ../src/scripts/xzgrep.1
msgid "B<lzfgrep> \\&..."
msgstr "B<lzfgrep> \\&..."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:49
-msgid ""
-"B<xzgrep> invokes B<grep>(1) on I<files> which may be either uncompressed "
-"or compressed with B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), "
-"B<lzop>(1), or B<zstd>(1). All options specified are passed directly to "
-"B<grep>(1)."
+#: ../src/scripts/xzgrep.1
+msgid "B<xzgrep> invokes B<grep>(1) on uncompressed contents of files. The formats of the I<files> are determined from the filename suffixes. Any I<file> with a suffix supported by B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), or B<lz4>(1) will be decompressed; all other files are assumed to be uncompressed."
msgstr ""
-"B<xzgrep> invoca B<grep>(1) em I<arquivos> que podem ser descompactados ou "
-"compactados com B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), "
-"ou B<zstd>(1). Todas as opções especificadas são passadas diretamente para "
-"B<grep>(1)."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:62
-msgid ""
-"If no I<file> is specified, then standard input is decompressed if necessary "
-"and fed to B<grep>(1). When reading from standard input, B<gzip>(1), "
-"B<bzip2>(1), B<lzop>(1), and B<zstd>(1) compressed files are not supported."
+#: ../src/scripts/xzgrep.1
+msgid "If no I<files> are specified or I<file> is B<-> then standard input is read. When reading from standard input, only files supported by B<xz>(1) are decompressed. Other files are assumed to be in uncompressed form already."
msgstr ""
-"Se nenhum I<arquivo> for especificado, a entrada padrão será descompactada, "
-"se necessário, e enviada para B<grep>(1). Ao ler da entrada padrão, os "
-"arquivos compactados B<gzip>(1), B<bzip2>(1), B<lzop>(1) e B<zstd>(1) não "
-"são suportados."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:81
-msgid ""
-"If B<xzgrep> is invoked as B<xzegrep> or B<xzfgrep> then B<grep -E> or "
-"B<grep -F> is used instead of B<grep>(1). The same applies to names "
-"B<lzgrep>, B<lzegrep>, and B<lzfgrep>, which are provided for backward "
-"compatibility with LZMA Utils."
+#: ../src/scripts/xzgrep.1
+msgid "Most I<options> of B<grep>(1) are supported. However, the following options are not supported:"
msgstr ""
-"Se B<xzgrep> for chamado como B<xzegrep> ou B<xzfgrep>, então B<grep -E> ou "
-"B<grep -F> será usado em vez de B<grep>(1). O mesmo se aplica aos nomes "
-"B<lzgrep>, B<lzegrep> e B<lzfgrep>, que são fornecidos para compatibilidade "
-"com versões anteriores do LZMA Utils."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:86
-msgid ""
-"At least one match was found from at least one of the input files. No "
-"errors occurred."
+#: ../src/scripts/xzgrep.1
+#, fuzzy
+#| msgid "B<-v>, B<--verbose>"
+msgid "B<-r>, B<--recursive>"
+msgstr "B<-v>, B<--verbose>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+#, fuzzy
+#| msgid "B<-f>, B<--force>"
+msgid "B<-R>, B<--dereference-recursive>"
+msgstr "B<-f>, B<--force>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+#, fuzzy
+#| msgid "B<-V>, B<--version>"
+msgid "B<-d>, B<--directories=>I<action>"
+msgstr "B<-V>, B<--version>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+#, fuzzy
+#| msgid "B<-l>, B<--list>"
+msgid "B<-Z>, B<--null>"
+msgstr "B<-l>, B<--list>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+#, fuzzy
+#| msgid "B<-l>, B<--list>"
+msgid "B<-z>, B<--null-data>"
+msgstr "B<-l>, B<--list>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+#, fuzzy
+#| msgid "B<--files>[B<=>I<file>]"
+msgid "B<--include=>I<glob>"
+msgstr "B<--files>[B<=>I<arquivo>]"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<--exclude=>I<glob>"
msgstr ""
-"Pelo menos uma correspondência foi encontrada em pelo menos um dos arquivos "
-"de entrada. Nenhum erro ocorreu."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:90
-msgid "No matches were found from any of the input files. No errors occurred."
+#: ../src/scripts/xzgrep.1
+#, fuzzy
+#| msgid "B<--files>[B<=>I<file>]"
+msgid "B<--exclude-from=>I<file>"
+msgstr "B<--files>[B<=>I<arquivo>]"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<--exclude-dir=>I<glob>"
+msgstr ""
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<xzegrep> is an alias for B<xzgrep -E>. B<xzfgrep> is an alias for B<xzgrep -F>."
msgstr ""
-"Nenhuma correspondência foi encontrada em nenhum dos arquivos de entrada. "
-"Nenhum erro ocorreu."
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+#, fuzzy
+#| msgid "The command named B<lzless> is provided for backward compatibility with LZMA Utils."
+msgid "The commands B<lzgrep>, B<lzegrep>, and B<lzfgrep> are provided for backward compatibility with LZMA Utils."
+msgstr "O comando denominado B<lzless> é fornecido para compatibilidade com versões anteriores do LZMA Utils."
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "At least one match was found from at least one of the input files. No errors occurred."
+msgstr "Pelo menos uma correspondência foi encontrada em pelo menos um dos arquivos de entrada. Nenhum erro ocorreu."
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "No matches were found from any of the input files. No errors occurred."
+msgstr "Nenhuma correspondência foi encontrada em nenhum dos arquivos de entrada. Nenhum erro ocorreu."
#. type: TP
-#: ../src/scripts/xzgrep.1:90
+#: ../src/scripts/xzgrep.1
#, no-wrap
msgid "E<gt>1"
msgstr "E<gt>1"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:94
+#: ../src/scripts/xzgrep.1
msgid "One or more errors occurred. It is unknown if matches were found."
-msgstr ""
-"Ocorreu um ou mais erros. Não se sabe se foram encontradas correspondências."
+msgstr "Ocorreu um ou mais erros. Não se sabe se foram encontradas correspondências."
#. type: TP
-#: ../src/scripts/xzgrep.1:95
+#: ../src/scripts/xzgrep.1
#, no-wrap
msgid "B<GREP>"
msgstr "B<GREP>"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:106
-msgid ""
-"If the B<GREP> environment variable is set, B<xzgrep> uses it instead of "
-"B<grep>(1), B<grep -E>, or B<grep -F>."
+#: ../src/scripts/xzgrep.1
+msgid "If B<GREP> is set to a non-empty value, it is used instead of B<grep>, B<grep -E>, or B<grep -F>."
msgstr ""
-"Se a variável de ambiente B<GREP> for definida, B<xzgrep> a usará em vez de "
-"B<grep>(1), B<grep -E> ou B<grep -F>."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:113
-msgid ""
-"B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), "
-"B<zgrep>(1)"
-msgstr ""
-"B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), "
-"B<zgrep>(1)"
+#: ../src/scripts/xzgrep.1
+#, fuzzy
+#| 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)"
+msgid "B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), B<lz4>(1), B<zgrep>(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: TH
-#: ../src/scripts/xzless.1:10
+#: ../src/scripts/xzless.1
#, no-wrap
msgid "XZLESS"
msgstr "XZLESS"
#. type: TH
-#: ../src/scripts/xzless.1:10
+#: ../src/scripts/xzless.1 ../src/scripts/xzmore.1
#, no-wrap
-msgid "2010-09-27"
-msgstr "2010-09-27"
+msgid "2024-02-12"
+msgstr ""
#. type: Plain text
-#: ../src/scripts/xzless.1:13
+#: ../src/scripts/xzless.1
msgid "xzless, lzless - view xz or lzma compressed (text) files"
msgstr "xzless, lzless - visualiza arquivos (texto) compactados em xz ou lzma"
#. type: Plain text
-#: ../src/scripts/xzless.1:16
+#: ../src/scripts/xzless.1
msgid "B<xzless> [I<file>...]"
msgstr "B<xzless> [I<arquivo>...]"
#. type: Plain text
-#: ../src/scripts/xzless.1:19
+#: ../src/scripts/xzless.1
msgid "B<lzless> [I<file>...]"
msgstr "B<lzless> [I<arquivo>...]"
#. 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."
+#: ../src/scripts/xzless.1
+msgid "B<xzless> is a filter that displays text from compressed files to a terminal. Files supported by B<xz>(1) are decompressed; other files are assumed to be in uncompressed form already. If no I<files> are given, B<xzless> reads from standard input."
msgstr ""
-"B<xzless> é um filtro que exibe texto de arquivos compactados em um "
-"terminal. Ele funciona em arquivos compactados com B<xz>(1) ou B<lzma>(1). "
-"Se nenhum I<files> for fornecido, B<xzless> lê da entrada padrão."
#. 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> usa B<less>(1) para apresentar sua saída. Ao contrário de "
-"B<xzmore>, sua escolha de pager não pode ser alterada pela configuração de "
-"uma variável de ambiente. Os comandos são baseados em B<more>(1) e B<vi>(1) "
-"e permitem movimento e busca para frente e para trás. Consulte o manual "
-"B<less>(1) para obter mais informações."
+#: ../src/scripts/xzless.1
+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> usa B<less>(1) para apresentar sua saída. Ao contrário de B<xzmore>, sua escolha de pager não pode ser alterada pela configuração de uma variável de ambiente. Os comandos são baseados em B<more>(1) e B<vi>(1) e permitem movimento e busca para frente e para trás. Consulte o manual B<less>(1) para obter mais informações."
#. type: Plain text
-#: ../src/scripts/xzless.1:52
-msgid ""
-"The command named B<lzless> is provided for backward compatibility with LZMA "
-"Utils."
-msgstr ""
-"O comando denominado B<lzless> é fornecido para compatibilidade com versões "
-"anteriores do LZMA Utils."
+#: ../src/scripts/xzless.1
+msgid "The command named B<lzless> is provided for backward compatibility with LZMA Utils."
+msgstr "O comando denominado B<lzless> é fornecido para compatibilidade com versões anteriores do LZMA Utils."
#. type: TP
-#: ../src/scripts/xzless.1:53
+#: ../src/scripts/xzless.1
#, 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 ""
-"Uma lista de caracteres especiais para o shell. Definido por B<xzless> a "
-"menos que já esteja definido no ambiente."
+#: ../src/scripts/xzless.1
+msgid "A list of characters special to the shell. Set by B<xzless> unless it is already set in the environment."
+msgstr "Uma lista de caracteres especiais para o shell. Definido por B<xzless> a menos que já esteja definido no ambiente."
#. type: TP
-#: ../src/scripts/xzless.1:59
+#: ../src/scripts/xzless.1
#, 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 ""
-"Defina como uma linha de comando para invocar o descompactador B<xz>(1) para "
-"pré-processar os arquivos de entrada para B<less>(1)."
+#: ../src/scripts/xzless.1
+msgid "Set to a command line to invoke the B<xz>(1) decompressor for preprocessing the input files to B<less>(1)."
+msgstr "Defina como uma linha de comando para invocar o descompactador B<xz>(1) para pré-processar os arquivos de entrada para B<less>(1)."
#. type: Plain text
-#: ../src/scripts/xzless.1:69
+#: ../src/scripts/xzless.1
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
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "XZMORE"
msgstr "XZMORE"
#. type: Plain text
-#: ../src/scripts/xzmore.1:10
+#: ../src/scripts/xzmore.1
msgid "xzmore, lzmore - view xz or lzma compressed (text) files"
msgstr "xzmore, lzmore - visualiza arquivos (texto) compactados em xz ou lzma"
#. type: Plain text
-#: ../src/scripts/xzmore.1:13
-msgid "B<xzmore> [I<file...>]"
-msgstr "B<xzmore> [I<arquivo...>]"
+#: ../src/scripts/xzmore.1
+#, fuzzy
+#| msgid "B<xzless> [I<file>...]"
+msgid "B<xzmore> [I<file>...]"
+msgstr "B<xzless> [I<arquivo>...]"
#. type: Plain text
-#: ../src/scripts/xzmore.1:16
-msgid "B<lzmore> [I<file...>]"
-msgstr "B<lzmore> [I<arquivo...>]"
+#: ../src/scripts/xzmore.1
+#, fuzzy
+#| msgid "B<lzless> [I<file>...]"
+msgid "B<lzmore> [I<file>...]"
+msgstr "B<lzless> [I<arquivo>...]"
#. 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."
+#: ../src/scripts/xzmore.1
+msgid "B<xzmore> displays text from compressed files to a terminal using B<more>(1). Files supported by B<xz>(1) are decompressed; other files are assumed to be in uncompressed form already. If no I<files> are given, B<xzmore> reads from standard input. See the B<more>(1) manual for the keyboard commands."
msgstr ""
-"B<xzmore> é um filtro que permite o exame de arquivos de texto compactados "
-"B<xz>(1) ou B<lzma>(1) uma tela por vez em um terminal de cópia eletrônica."
#. 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."
+#: ../src/scripts/xzmore.1
+msgid "Note that scrolling backwards might not be possible depending on the implementation of B<more>(1). This is because B<xzmore> uses a pipe to pass the decompressed data to B<more>(1). B<xzless>(1) uses B<less>(1) which provides more advanced features."
msgstr ""
-"Para usar um pager diferente do padrão B<more,> defina a variável de "
-"ambiente B<PAGER> para o nome do programa desejado. O nome B<lzmore> é "
-"fornecido para compatibilidade com versões anteriores do LZMA Utils."
-
-#. type: TP
-#: ../src/scripts/xzmore.1:33
-#, no-wrap
-msgid "B<e> or B<q>"
-msgstr "B<e> ou 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 ""
-"Quando o prompt --More--(Next file: I<arquivo>) é impresso, esse comando faz "
-"com que B<xzmore> saia."
+#: ../src/scripts/xzmore.1
+#, fuzzy
+#| msgid "The command named B<lzless> is provided for backward compatibility with LZMA Utils."
+msgid "The command B<lzmore> is provided for backward compatibility with LZMA Utils."
+msgstr "O comando denominado B<lzless> é fornecido para compatibilidade com versões anteriores do LZMA Utils."
#. type: TP
-#: ../src/scripts/xzmore.1:40
+#: ../src/scripts/xzmore.1
#, 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."
+msgid "B<PAGER>"
msgstr ""
-"Quando o prompt --More--(Next file: I<arquivo>) é impresso, esse comando faz "
-"com que B<xzmore> pule o próximo arquivo e continue."
#. 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)."
+#: ../src/scripts/xzmore.1
+msgid "If B<PAGER> is set, its value is used as the pager instead of B<more>(1)."
msgstr ""
-"Para obter uma lista de comandos de teclado suportados durante a exibição "
-"real do conteúdo de um arquivo, consulte o manual do paginador que você usa, "
-"geralmente B<more>(1)."
#. type: Plain text
-#: ../src/scripts/xzmore.1:55
+#: ../src/scripts/xzmore.1
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)"
-
-#, no-wrap
-#~ msgid "2022-12-01"
-#~ msgstr "2022-12-01"
diff --git a/po4a/ro.po b/po4a/ro.po
index 3048997..9b7f870 100644
--- a/po4a/ro.po
+++ b/po4a/ro.po
@@ -1,327 +1,217 @@
-# Mesajele în limba română pentru pachetul xz-man.
-# This file is put in the public domain.
+# SPDX-License-Identifier: 0BSD
#
-# Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>, 2022 - 2023.
+# Romanian translation for xz-man.
+# Mesajele în limba română pentru manualul pachetului XZ Utils.
+# This file is published under the BSD Zero Clause License.
+#
+# Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>, 2022 - 2024.
#
# Cronologia traducerii fișierului „xz-man”:
# Traducerea inițială, făcută de R-GC, pentru versiunea xz-man 5.4.0-pre1.
# Actualizare a traducerii pentru versiunea 5.4.0-pre2, făcută de R-GC, dec-2022.
# Actualizare a traducerii pentru versiunea 5.4.3, făcută de R-GC, mai-2023.
# Actualizare a traducerii pentru versiunea 5.4.4-pre1, făcută de R-GC, iul-2023.
+# Actualizare a traducerii pentru versiunea 5.6.0-pre1, făcută de R-GC, feb-2024.
+# Actualizare a traducerii pentru versiunea 5.6.0-pre2, făcută de R-GC, feb-2024.
# Actualizare a traducerii pentru versiunea Y, făcută de X, Z(luna-anul).
#
msgid ""
msgstr ""
-"Project-Id-Version: xz-man 5.4.4-pre1\n"
-"POT-Creation-Date: 2023-11-01 20:27+0800\n"
-"PO-Revision-Date: 2023-07-19 19:29+0200\n"
+"Project-Id-Version: xz-man 5.6.0-pre2\n"
+"POT-Creation-Date: 2024-05-29 17:45+0300\n"
+"PO-Revision-Date: 2024-02-16 14:15+0100\n"
"Last-Translator: Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>\n"
"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
"Language: ro\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: plural=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
-"20)) ? 1 : 2);\n"
+"Plural-Forms: plural=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2);\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"X-Generator: Poedit 3.2.2\n"
#. type: TH
-#: ../src/xz/xz.1:9
+#: ../src/xz/xz.1
#, no-wrap
msgid "XZ"
msgstr "XZ"
#. type: TH
-#: ../src/xz/xz.1:9
-#, no-wrap
-msgid "2023-07-17"
-msgstr "17.07.2023"
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
+#, fuzzy, no-wrap
+#| msgid "2024-02-25"
+msgid "2024-04-08"
+msgstr "25 februarie 2024"
#. type: TH
-#: ../src/xz/xz.1:9 ../src/xzdec/xzdec.1:7 ../src/lzmainfo/lzmainfo.1:7
-#: ../src/scripts/xzdiff.1:9 ../src/scripts/xzgrep.1:9
-#: ../src/scripts/xzless.1:10 ../src/scripts/xzmore.1:7
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "Tukaani"
msgstr "Tukaani"
#. type: TH
-#: ../src/xz/xz.1:9 ../src/xzdec/xzdec.1:7 ../src/lzmainfo/lzmainfo.1:7
-#: ../src/scripts/xzdiff.1:9 ../src/scripts/xzgrep.1:9
-#: ../src/scripts/xzless.1:10 ../src/scripts/xzmore.1:7
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "XZ Utils"
msgstr "Utilități XZ"
#. type: SH
-#: ../src/xz/xz.1:11 ../src/xzdec/xzdec.1:8 ../src/lzmainfo/lzmainfo.1:8
-#: ../src/scripts/xzdiff.1:10 ../src/scripts/xzgrep.1:10
-#: ../src/scripts/xzless.1:11 ../src/scripts/xzmore.1:8
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "NAME"
msgstr "NUME"
#. type: Plain text
-#: ../src/xz/xz.1:13
-msgid ""
-"xz, unxz, xzcat, lzma, unlzma, lzcat - Compress or decompress .xz and .lzma "
-"files"
-msgstr ""
-"xz, unxz, xzcat, lzma, unlzma, lzcat - Comprimă sau decomprimă fișiere .xz "
-"și .lzma"
+#: ../src/xz/xz.1
+msgid "xz, unxz, xzcat, lzma, unlzma, lzcat - Compress or decompress .xz and .lzma files"
+msgstr "xz, unxz, xzcat, lzma, unlzma, lzcat - Comprimă sau decomprimă fișiere .xz și .lzma"
#. type: SH
-#: ../src/xz/xz.1:14 ../src/xzdec/xzdec.1:10 ../src/lzmainfo/lzmainfo.1:10
-#: ../src/scripts/xzdiff.1:12 ../src/scripts/xzgrep.1:12
-#: ../src/scripts/xzless.1:13 ../src/scripts/xzmore.1:10
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "SYNOPSIS"
msgstr "REZUMAT"
#. type: Plain text
-#: ../src/xz/xz.1:18
+#: ../src/xz/xz.1
msgid "B<xz> [I<option...>] [I<file...>]"
msgstr "B<xz> [I<opțiune...>] [I<fișier...>]"
#. type: SH
-#: ../src/xz/xz.1:19
+#: ../src/xz/xz.1
#, no-wrap
msgid "COMMAND ALIASES"
msgstr "ALIAS COMENZI"
#. type: Plain text
-#: ../src/xz/xz.1:23
+#: ../src/xz/xz.1
msgid "B<unxz> is equivalent to B<xz --decompress>."
msgstr "B<unxz> este echivalent cu B<xz --decompress>."
#. type: Plain text
-#: ../src/xz/xz.1:27
+#: ../src/xz/xz.1
msgid "B<xzcat> is equivalent to B<xz --decompress --stdout>."
msgstr "B<xzcat> este echivalent cu B<xz --decompress --stdout>."
#. type: Plain text
-#: ../src/xz/xz.1:31
+#: ../src/xz/xz.1
msgid "B<lzma> is equivalent to B<xz --format=lzma>."
msgstr "B<lzma> este echivalent cu B<xz --format=lzma>."
#. type: Plain text
-#: ../src/xz/xz.1:35
+#: ../src/xz/xz.1
msgid "B<unlzma> is equivalent to B<xz --format=lzma --decompress>."
msgstr "B<unlzma> este echivalent cu B<xz --format=lzma --decompress>."
#. type: Plain text
-#: ../src/xz/xz.1:39
+#: ../src/xz/xz.1
msgid "B<lzcat> is equivalent to B<xz --format=lzma --decompress --stdout>."
msgstr "B<lzcat> este echivalent cu B<xz --format=lzma --decompress --stdout>."
#. type: Plain text
-#: ../src/xz/xz.1:51
-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 ""
-"Când scrieți scripturi care trebuie să decomprime fișiere, este recomandat "
-"să folosiți întotdeauna comanda B<xz> cu argumentele adecvate (B<xz -d> sau "
-"B<xz -dc>) în loc de comenzile B<unxz> și B<xzcat>."
+#: ../src/xz/xz.1
+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 "Când scrieți scripturi care trebuie să decomprime fișiere, este recomandat să folosiți întotdeauna comanda B<xz> cu argumentele adecvate (B<xz -d> sau B<xz -dc>) în loc de comenzile B<unxz> și B<xzcat>."
#. type: SH
-#: ../src/xz/xz.1:52 ../src/xzdec/xzdec.1:18 ../src/lzmainfo/lzmainfo.1:15
-#: ../src/scripts/xzdiff.1:24 ../src/scripts/xzgrep.1:33
-#: ../src/scripts/xzless.1:19 ../src/scripts/xzmore.1:16
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "DESCRIPTION"
msgstr "DESCRIERE"
#. type: Plain text
-#: ../src/xz/xz.1:71
-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. In "
-"addition, decompression of the B<.lz> format used by B<lzip> is supported."
-msgstr ""
-"B<xz> este un instrument de comprimare a datelor de uz general cu sintaxă de "
-"linie de comandă similară cu B<gzip>(1) și B<bzip2>(1). Formatul de fișier "
-"nativ este formatul B<.xz>, dar formatul vechi B<.lzma> folosit de LZMA "
-"Utils și fluxurile comprimate brute fără anteturi de format container sunt "
-"de asemenea acceptate. În plus, este acceptată decomprimarea formatului B<."
-"lz> folosit de B<lzip>."
+#: ../src/xz/xz.1
+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. In addition, decompression of the B<.lz> format used by B<lzip> is supported."
+msgstr "B<xz> este un instrument de comprimare a datelor de uz general cu sintaxă de linie de comandă similară cu B<gzip>(1) și B<bzip2>(1). Formatul de fișier nativ este formatul B<.xz>, dar formatul vechi B<.lzma> folosit de LZMA Utils și fluxurile comprimate brute fără anteturi de format container sunt de asemenea acceptate. În plus, este acceptată decomprimarea formatului B<.lz> folosit de B<lzip>."
#. type: Plain text
-#: ../src/xz/xz.1:93
-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> comprimă sau decomprimă fiecare I<fișier> în funcție de modul de "
-"operare selectat. Dacă nu sunt date I<fișiere> sau I<fișier> este B<->, "
-"B<xz> citește de la intrarea standard și scrie datele procesate la ieșirea "
-"standard. B<xz> va refuza (afișează o eroare și omite I<fișier>) să scrie "
-"date comprimate la ieșirea standard dacă este un terminal. În mod similar, "
-"B<xz> va refuza să citească datele comprimate de la intrarea standard dacă "
-"este un terminal."
+#: ../src/xz/xz.1
+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> comprimă sau decomprimă fiecare I<fișier> în funcție de modul de operare selectat. Dacă nu sunt date I<fișiere> sau I<fișier> este B<->, B<xz> citește de la intrarea standard și scrie datele procesate la ieșirea standard. B<xz> va refuza (afișează o eroare și omite I<fișier>) să scrie date comprimate la ieșirea standard dacă este un terminal. În mod similar, B<xz> va refuza să citească datele comprimate de la intrarea standard dacă este un terminal."
#. type: Plain text
-#: ../src/xz/xz.1:103
-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 ""
-"Cu excepția cazului în care este specificată opțiunea B<--stdout>, "
-"I<fișierele> altele decât B<-> sunt scrise într-un fișier nou al cărui nume "
-"este derivat din numele I<fișierului> sursă:"
+#: ../src/xz/xz.1
+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 "Cu excepția cazului în care este specificată opțiunea B<--stdout>, I<fișierele> altele decât B<-> sunt scrise într-un fișier nou al cărui nume este derivat din numele I<fișierului> sursă:"
#. type: IP
-#: ../src/xz/xz.1:103 ../src/xz/xz.1:109 ../src/xz/xz.1:134 ../src/xz/xz.1:139
-#: ../src/xz/xz.1:142 ../src/xz/xz.1:145 ../src/xz/xz.1:161 ../src/xz/xz.1:422
-#: ../src/xz/xz.1:425 ../src/xz/xz.1:432 ../src/xz/xz.1:677 ../src/xz/xz.1:679
-#: ../src/xz/xz.1:778 ../src/xz/xz.1:789 ../src/xz/xz.1:798 ../src/xz/xz.1:806
-#: ../src/xz/xz.1:1034 ../src/xz/xz.1:1043 ../src/xz/xz.1:1055
-#: ../src/xz/xz.1:1729 ../src/xz/xz.1:1735 ../src/xz/xz.1:1853
-#: ../src/xz/xz.1:1857 ../src/xz/xz.1:1860 ../src/xz/xz.1:1863
-#: ../src/xz/xz.1:1867 ../src/xz/xz.1:1874 ../src/xz/xz.1:1876
+#: ../src/xz/xz.1
#, no-wrap
msgid "\\(bu"
msgstr "\\(bu"
#. type: Plain text
-#: ../src/xz/xz.1:109
-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 ""
-"La comprimare, sufixul formatului de fișier țintă (B<.xz> sau B<.lzma>) "
-"este atașat la numele fișierului sursă pentru a se obține numele fișierului "
-"țintă."
+#: ../src/xz/xz.1
+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 "La comprimare, sufixul formatului de fișier țintă (B<.xz> sau B<.lzma>) este atașat la numele fișierului sursă pentru a se obține numele fișierului țintă."
#. type: Plain text
-#: ../src/xz/xz.1:124
-msgid ""
-"When decompressing, the B<.xz>, B<.lzma>, or B<.lz> suffix is removed from "
-"the filename to get the target filename. B<xz> also recognizes the suffixes "
-"B<.txz> and B<.tlz>, and replaces them with the B<.tar> suffix."
-msgstr ""
-"La decomprimare, sufixul B<.xz>, B<.lzma> sau B<.lz> este eliminat din "
-"numele fișierului pentru a se obține numele fișierului țintă. B<xz> "
-"recunoaște și sufixele B<.txz> și B<.tlz> și le înlocuiește cu sufixul B<."
-"tar>."
+#: ../src/xz/xz.1
+msgid "When decompressing, the B<.xz>, B<.lzma>, or B<.lz> suffix is removed from the filename to get the target filename. B<xz> also recognizes the suffixes B<.txz> and B<.tlz>, and replaces them with the B<.tar> suffix."
+msgstr "La decomprimare, sufixul B<.xz>, B<.lzma> sau B<.lz> este eliminat din numele fișierului pentru a se obține numele fișierului țintă. B<xz> recunoaște și sufixele B<.txz> și B<.tlz> și le înlocuiește cu sufixul B<.tar>."
#. type: Plain text
-#: ../src/xz/xz.1:128
-msgid ""
-"If the target file already exists, an error is displayed and the I<file> is "
-"skipped."
-msgstr ""
-"Dacă fișierul țintă există deja, este afișată o eroare și I<fișier> este "
-"omis."
+#: ../src/xz/xz.1
+msgid "If the target file already exists, an error is displayed and the I<file> is skipped."
+msgstr "Dacă fișierul țintă există deja, este afișată o eroare și I<fișier> este omis."
#. type: Plain text
-#: ../src/xz/xz.1:134
-msgid ""
-"Unless writing to standard output, B<xz> will display a warning and skip the "
-"I<file> if any of the following applies:"
-msgstr ""
-"Cu excepția cazului în care scrie la ieșirea standard, B<xz> va afișa un "
-"avertisment și va omite I<fișier>ul dacă se aplică oricare dintre "
-"următoarele:"
+#: ../src/xz/xz.1
+msgid "Unless writing to standard output, B<xz> will display a warning and skip the I<file> if any of the following applies:"
+msgstr "Cu excepția cazului în care scrie la ieșirea standard, B<xz> va afișa un avertisment și va omite I<fișier>ul dacă se aplică oricare dintre următoarele:"
#. type: Plain text
-#: ../src/xz/xz.1:139
-msgid ""
-"I<File> is not a regular file. Symbolic links are not followed, and thus "
-"they are not considered to be regular files."
-msgstr ""
-"I<Fișierul> nu este un fișier obișnuit. Legăturile simbolice nu sunt urmate "
-"și, prin urmare, nu sunt considerate fișiere obișnuite."
+#: ../src/xz/xz.1
+msgid "I<File> is not a regular file. Symbolic links are not followed, and thus they are not considered to be regular files."
+msgstr "I<Fișierul> nu este un fișier obișnuit. Legăturile simbolice nu sunt urmate și, prin urmare, nu sunt considerate fișiere obișnuite."
#. type: Plain text
-#: ../src/xz/xz.1:142
+#: ../src/xz/xz.1
msgid "I<File> has more than one hard link."
msgstr "I<Fișierul> are mai mult de o legătură dură."
#. type: Plain text
-#: ../src/xz/xz.1:145
+#: ../src/xz/xz.1
msgid "I<File> has setuid, setgid, or sticky bit set."
-msgstr ""
-"I<Fișierul> are activat bitul «setuid», «setgid» sau cel lipicios(sticky)."
+msgstr "I<Fișierul> are activat bitul «setuid», «setgid» sau cel lipicios(sticky)."
#. type: Plain text
-#: ../src/xz/xz.1:161
-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 ""
-"Modul de operare este stabilit la comprimare și I<fișier> are deja un sufix "
-"al formatului de fișier țintă (B<.xz> sau B<.txz> când se comprimă în "
-"formatul B<.xz> și B<.lzma> sau B<.tlz> când se comprimă în formatul B<."
-"lzma>)."
+#: ../src/xz/xz.1
+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 "Modul de operare este stabilit la comprimare și I<fișier> are deja un sufix al formatului de fișier țintă (B<.xz> sau B<.txz> când se comprimă în formatul B<.xz> și B<.lzma> sau B<.tlz> când se comprimă în formatul B<.lzma>)."
#. type: Plain text
-#: ../src/xz/xz.1:171
-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>, B<."
-"tlz>, or B<.lz>)."
-msgstr ""
-"Modul de operare este stabilit la decomprimare și I<fișierul> nu are un "
-"sufix al niciunui format de fișier acceptat (B<.xz>, B<.txz>, B<.lzma>, B<."
-"tlz>, sau B<.lz>)."
+#: ../src/xz/xz.1
+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>, B<.tlz>, or B<.lz>)."
+msgstr "Modul de operare este stabilit la decomprimare și I<fișierul> nu are un sufix al niciunui format de fișier acceptat (B<.xz>, B<.txz>, B<.lzma>, B<.tlz>, sau B<.lz>)."
#. type: Plain text
-#: ../src/xz/xz.1:186
-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 ""
-"După comprimarea sau decomprimarea cu succes a I<fișierului>, B<xz> copiază "
-"proprietarul, grupul, permisiunile, timpul de acces și timpul de modificare "
-"din I<fișierul> sursă în fișierul țintă. Dacă copierea grupului eșuează, "
-"permisiunile sunt modificate astfel încât fișierul țintă să nu devină "
-"accesibil utilizatorilor care nu aveau permisiunea de a accesa I<fișierul> "
-"sursă. B<xz> nu acceptă încă copierea altor metadate, cum ar fi listele de "
-"control al accesului sau atributele extinse."
+#: ../src/xz/xz.1
+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 "După comprimarea sau decomprimarea cu succes a I<fișierului>, B<xz> copiază proprietarul, grupul, permisiunile, timpul de acces și timpul de modificare din I<fișierul> sursă în fișierul țintă. Dacă copierea grupului eșuează, permisiunile sunt modificate astfel încât fișierul țintă să nu devină accesibil utilizatorilor care nu aveau permisiunea de a accesa I<fișierul> sursă. B<xz> nu acceptă încă copierea altor metadate, cum ar fi listele de control al accesului sau atributele extinse."
#. type: Plain text
-#: ../src/xz/xz.1:196
-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 or if an error occurs."
-msgstr ""
-"Odată ce fișierul țintă a fost închis cu succes, I<fișierul> sursă este "
-"eliminat dacă nu a fost specificată opțiunea B<--keep>. I<Fișierul> sursă "
-"nu este niciodată eliminat dacă rezultatul este scris la ieșirea standard "
-"sau dacă apare o eroare."
+#: ../src/xz/xz.1
+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 or if an error occurs."
+msgstr "Odată ce fișierul țintă a fost închis cu succes, I<fișierul> sursă este eliminat dacă nu a fost specificată opțiunea B<--keep>. I<Fișierul> sursă nu este niciodată eliminat dacă rezultatul este scris la ieșirea standard sau dacă apare o eroare."
#. type: Plain text
-#: ../src/xz/xz.1:208
-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 ""
-"Trimiterea unui semnal B<SIGINFO> sau B<SIGUSR1> către procesul B<xz> face "
-"ca acesta să imprime informații despre progres la ieșirea de eroare "
-"standard. Acest lucru are o utilizare limitată, deoarece atunci când "
-"ieșirea de eroare standard este un terminal, folosind opțiunea B<--verbose> "
-"va afișa un indicator de progres de actualizare automată."
+#: ../src/xz/xz.1
+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 "Trimiterea unui semnal B<SIGINFO> sau B<SIGUSR1> către procesul B<xz> face ca acesta să imprime informații despre progres la ieșirea de eroare standard. Acest lucru are o utilizare limitată, deoarece atunci când ieșirea de eroare standard este un terminal, folosind opțiunea B<--verbose> va afișa un indicator de progres de actualizare automată."
#. type: SS
-#: ../src/xz/xz.1:209
+#: ../src/xz/xz.1
#, no-wrap
msgid "Memory usage"
msgstr "Utilizarea memoriei"
@@ -333,2756 +223,1701 @@ msgstr "Utilizarea memoriei"
# va vedea utilizatorul la afișarea acestui mesaj,
# va fi: „5% la 20%”, și nu: „5 % la 20 %”
#. type: Plain text
-#: ../src/xz/xz.1:225
-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 ""
-"Cantitatea de memorie utilizată de B<xz> variază de la câteva sute de "
-"kiloocteți la câțiva gigaocteți, în funcție de opțiunile de comprimare. "
-"Opțiunile utilizate la comprimarea unui fișier determină cerințele de "
-"memorie ale instrumentului de decomprimare. De obicei, instrumentul de "
-"decomprimare are nevoie de 5% până la 20% din cantitatea de memorie de care "
-"a avut nevoie instrumentul de comprimare la crearea fișierului. De exemplu, "
-"decomprimarea unui fișier creat cu B<xz -9> necesită în prezent 65Mio de "
-"memorie. Totuși, este posibil să aveți fișiere B<.xz> care necesită câțiva "
-"gigaocteți de memorie pentru decomprimare."
-
-#. type: Plain text
-#: ../src/xz/xz.1:237
-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 (for example, using "
-"B<ulimit>(1) to limit virtual memory tends to cripple B<mmap>(2))."
-msgstr ""
-"În special utilizatorii de sisteme mai vechi pot considera deranjantă "
-"posibilitatea unei utilizări foarte mari a memoriei. Pentru a preveni "
-"surprizele neplăcute, B<xz> are încorporat un limitator de utilizare a "
-"memoriei, care este dezactivat implicit. În timp ce unele sisteme de "
-"operare oferă modalități de a limita utilizarea memoriei proceselor, bazarea "
-"pe aceasta nu a fost considerată a fi suficient de flexibilă (de exemplu, "
-"utilizarea B<ulimit>(1) pentru a limita memoria virtuală tinde să paralizeze "
-"B<mmap>(2))."
+#: ../src/xz/xz.1
+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 "Cantitatea de memorie utilizată de B<xz> variază de la câteva sute de kiloocteți la câțiva gigaocteți, în funcție de opțiunile de comprimare. Opțiunile utilizate la comprimarea unui fișier determină cerințele de memorie ale instrumentului de decomprimare. De obicei, instrumentul de decomprimare are nevoie de 5% până la 20% din cantitatea de memorie de care a avut nevoie instrumentul de comprimare la crearea fișierului. De exemplu, decomprimarea unui fișier creat cu B<xz -9> necesită în prezent 65Mio de memorie. Totuși, este posibil să aveți fișiere B<.xz> care necesită câțiva gigaocteți de memorie pentru decomprimare."
#. type: Plain text
-#: ../src/xz/xz.1:259
-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>, for example, "
-"B<XZ_DEFAULTS=--memlimit=150MiB>. It is possible to set the limits "
-"separately for compression and decompression by using B<--memlimit-"
-"compress=>I<limit> and B<--memlimit-decompress=>I<limit>. Using these two "
-"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 ""
-"Limitatorul de utilizare a memoriei poate fi activat cu opțiunea din linia "
-"de comandă B<--memlimit=>I<limita>. Adesea este mai convenabil să activați "
-"limitatorul în mod implicit prin definirea variabilei de mediu "
-"B<XZ_DEFAULTS>, de exemplu, B<XZ_DEFAULTS=--memlimit=150MiB>. Este posibil "
-"să stabiliți limitele separat pentru comprimare și decomprimare folosind B<--"
-"memlimit-compress=>I<limita> și B<--memlimit-decompress=>I<limita>. "
-"Utilizarea acestor două opțiuni în afara B<XZ_DEFAULTS> este foarte rar "
-"utilă, deoarece o singură rulare a B<xz> nu poate face atât comprimarea, cât "
-"și decomprimarea și B<--memlimit=>I<limita> (sau B<-M> I<limita> ) este mai "
-"scurt de tastat pe linia de comandă."
-
-#. type: Plain text
-#: ../src/xz/xz.1:278
-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, for example, if the limit is only slightly less "
-"than the amount required for B<xz -9>, the settings will be scaled down only "
-"a little, not all the way down to B<xz -8>."
-msgstr ""
-"Dacă limita de utilizare a memoriei specificată este depășită la "
-"decomprimare, B<xz> va afișa o eroare și decomprimarea fișierului va eșua. "
-"Dacă limita este depășită la comprimare, B<xz> va încerca să reducă valorile "
-"stabilite astfel încât limita să nu mai fie depășită (cu excepția cazului în "
-"care se utilizează opțiunea B<--format=raw> sau B<--no-adjust>). În acest "
-"fel, operațiunea nu va eșua decât dacă limita stabilită este foarte mică. "
-"Scalarea valorilor stabilite se face în pași care nu se potrivesc cu "
-"valorile prestabilite ale nivelului de comprimare, de exemplu, dacă limita "
-"este doar puțin mai mică decât cantitatea necesară pentru B<xz -9>, valorile "
-"stabilite vor fi reduse doar puțin , nu până la valoarea prestabilită a lui "
-"B<xz -8>."
+#: ../src/xz/xz.1
+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 (for example, using B<ulimit>(1) to limit virtual memory tends to cripple B<mmap>(2))."
+msgstr "În special utilizatorii de sisteme mai vechi pot considera deranjantă posibilitatea unei utilizări foarte mari a memoriei. Pentru a preveni surprizele neplăcute, B<xz> are încorporat un limitator de utilizare a memoriei, care este dezactivat implicit. În timp ce unele sisteme de operare oferă modalități de a limita utilizarea memoriei proceselor, bazarea pe aceasta nu a fost considerată a fi suficient de flexibilă (de exemplu, utilizarea B<ulimit>(1) pentru a limita memoria virtuală tinde să paralizeze B<mmap>(2))."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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>, for example, B<XZ_DEFAULTS=--memlimit=150MiB>. It is possible to set the limits separately for compression and decompression by using B<--memlimit-compress=>I<limit> and B<--memlimit-decompress=>I<limit>. Using these two 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 "Limitatorul de utilizare a memoriei poate fi activat cu opțiunea din linia de comandă B<--memlimit=>I<limita>. Adesea este mai convenabil să activați limitatorul în mod implicit prin definirea variabilei de mediu B<XZ_DEFAULTS>, de exemplu, B<XZ_DEFAULTS=--memlimit=150MiB>. Este posibil să stabiliți limitele separat pentru comprimare și decomprimare folosind B<--memlimit-compress=>I<limita> și B<--memlimit-decompress=>I<limita>. Utilizarea acestor două opțiuni în afara B<XZ_DEFAULTS> este foarte rar utilă, deoarece o singură rulare a B<xz> nu poate face atât comprimarea, cât și decomprimarea și B<--memlimit=>I<limita> (sau B<-M> I<limita> ) este mai scurt de tastat pe linia de comandă."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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, for example, if the limit is only slightly less than the amount required for B<xz -9>, the settings will be scaled down only a little, not all the way down to B<xz -8>."
+msgstr "Dacă limita de utilizare a memoriei specificată este depășită la decomprimare, B<xz> va afișa o eroare și decomprimarea fișierului va eșua. Dacă limita este depășită la comprimare, B<xz> va încerca să reducă valorile stabilite astfel încât limita să nu mai fie depășită (cu excepția cazului în care se utilizează opțiunea B<--format=raw> sau B<--no-adjust>). În acest fel, operațiunea nu va eșua decât dacă limita stabilită este foarte mică. Scalarea valorilor stabilite se face în pași care nu se potrivesc cu valorile prestabilite ale nivelului de comprimare, de exemplu, dacă limita este doar puțin mai mică decât cantitatea necesară pentru B<xz -9>, valorile stabilite vor fi reduse doar puțin , nu până la valoarea prestabilită a lui B<xz -8>."
#. type: SS
-#: ../src/xz/xz.1:279
+#: ../src/xz/xz.1
#, no-wrap
msgid "Concatenation and padding with .xz files"
msgstr "Concatenare și completare (prin umplere cu octeți nuli) cu fișiere .xz"
#. type: Plain text
-#: ../src/xz/xz.1:287
-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 ""
-"Este posibil să concatenați fișierele B<.xz> așa cum sunt. B<xz> va "
-"decomprima astfel de fișiere ca și cum ar fi un singur fișier B<.xz>."
+#: ../src/xz/xz.1
+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 "Este posibil să concatenați fișierele B<.xz> așa cum sunt. B<xz> va decomprima astfel de fișiere ca și cum ar fi un singur fișier B<.xz>."
#. type: Plain text
-#: ../src/xz/xz.1:296
-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, for example, "
-"if the B<.xz> file is stored on a medium that measures file sizes in 512-"
-"byte blocks."
-msgstr ""
-"Este posibil să se introducă umplutură între părțile concatenate sau după "
-"ultima parte. Umplutura trebuie să fie compusă din octeți nuli, iar "
-"dimensiunea umpluturii trebuie să fie un multiplu de patru octeți. Acest "
-"lucru poate fi util, de exemplu, dacă fișierul B<.xz> este stocat pe un "
-"mediu care măsoară dimensiunile fișierelor în blocuri de 512 de octeți."
+#: ../src/xz/xz.1
+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, for example, if the B<.xz> file is stored on a medium that measures file sizes in 512-byte blocks."
+msgstr "Este posibil să se introducă umplutură între părțile concatenate sau după ultima parte. Umplutura trebuie să fie compusă din octeți nuli, iar dimensiunea umpluturii trebuie să fie un multiplu de patru octeți. Acest lucru poate fi util, de exemplu, dacă fișierul B<.xz> este stocat pe un mediu care măsoară dimensiunile fișierelor în blocuri de 512 de octeți."
#. type: Plain text
-#: ../src/xz/xz.1:300
-msgid ""
-"Concatenation and padding are not allowed with B<.lzma> files or raw streams."
-msgstr ""
-"Concatenarea și completarea nu sunt permise cu fișierele B<.lzma> sau "
-"fluxurile brute."
+#: ../src/xz/xz.1
+msgid "Concatenation and padding are not allowed with B<.lzma> files or raw streams."
+msgstr "Concatenarea și completarea nu sunt permise cu fișierele B<.lzma> sau fluxurile brute."
#. type: SH
-#: ../src/xz/xz.1:301 ../src/xzdec/xzdec.1:61
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "OPTIONS"
msgstr "OPȚIUNI"
#. type: SS
-#: ../src/xz/xz.1:303
+#: ../src/xz/xz.1
#, no-wrap
msgid "Integer suffixes and special values"
msgstr "Sufixe de numere întregi și valori speciale"
#. type: Plain text
-#: ../src/xz/xz.1:307
-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 ""
-"În majoritatea locurilor în care este de așteptat un număr întreg ca "
-"argument, un sufix opțional este acceptat pentru a indica cu ușurință "
-"numerele întregi mari. Nu trebuie să existe spațiu între numărul întreg și "
-"sufix."
+#: ../src/xz/xz.1
+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 "În majoritatea locurilor în care este de așteptat un număr întreg ca argument, un sufix opțional este acceptat pentru a indica cu ușurință numerele întregi mari. Nu trebuie să existe spațiu între numărul întreg și sufix."
#. type: TP
-#: ../src/xz/xz.1:307
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<KiB>"
msgstr "B<KiB>"
#. type: Plain text
-#: ../src/xz/xz.1:318
-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 ""
-"Înmulțește numărul întreg cu 1.024 (2^10). B<Ki>, B<k>, B<kB>, B<K> și "
-"B<KB> sunt acceptate ca sinonime pentru B<KiB>."
+#: ../src/xz/xz.1
+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 "Înmulțește numărul întreg cu 1.024 (2^10). B<Ki>, B<k>, B<kB>, B<K> și B<KB> sunt acceptate ca sinonime pentru B<KiB>."
#. type: TP
-#: ../src/xz/xz.1:318
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<MiB>"
msgstr "B<MiB>"
#. type: Plain text
-#: ../src/xz/xz.1:328
-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 ""
-"Înmulțește numărul întreg cu 1,048,576 (2^20). B<Mi>, B<m>, B<M>, și B<MB> "
-"sunt acceptate ca sinonime pentru B<MiB>."
+#: ../src/xz/xz.1
+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 "Înmulțește numărul întreg cu 1,048,576 (2^20). B<Mi>, B<m>, B<M>, și B<MB> sunt acceptate ca sinonime pentru B<MiB>."
#. type: TP
-#: ../src/xz/xz.1:328
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<GiB>"
msgstr "B<GiB>"
#. type: Plain text
-#: ../src/xz/xz.1:338
-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 ""
-"Înmulțește numărul întreg cu 1,073,741,824 (2^30). B<Gi>, B<g>, B<G>, și "
-"B<GB> sunt acceptate ca sinonime pentru B<GiB>."
+#: ../src/xz/xz.1
+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 "Înmulțește numărul întreg cu 1,073,741,824 (2^30). B<Gi>, B<g>, B<G>, și B<GB> sunt acceptate ca sinonime pentru B<GiB>."
#. type: Plain text
-#: ../src/xz/xz.1:343
-msgid ""
-"The special value B<max> can be used to indicate the maximum integer value "
-"supported by the option."
-msgstr ""
-"Valoarea specială B<max> poate fi utilizată pentru a indica valoarea maximă "
-"întreagă suportată de opțiune."
+#: ../src/xz/xz.1
+msgid "The special value B<max> can be used to indicate the maximum integer value supported by the option."
+msgstr "Valoarea specială B<max> poate fi utilizată pentru a indica valoarea maximă întreagă suportată de opțiune."
#. type: SS
-#: ../src/xz/xz.1:344
+#: ../src/xz/xz.1
#, no-wrap
msgid "Operation mode"
msgstr "Mod de operare"
#. type: Plain text
-#: ../src/xz/xz.1:347
-msgid ""
-"If multiple operation mode options are given, the last one takes effect."
-msgstr ""
-"Dacă sunt date mai multe opțiuni de mod de funcționare, ultima dintre ele, "
-"este cea care va avea efect."
+#: ../src/xz/xz.1
+msgid "If multiple operation mode options are given, the last one takes effect."
+msgstr "Dacă sunt date mai multe opțiuni de mod de funcționare, ultima dintre ele, este cea care va avea efect."
#. type: TP
-#: ../src/xz/xz.1:347
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-z>, B<--compress>"
msgstr "B<-z>, B<--compress>"
#. type: Plain text
-#: ../src/xz/xz.1:356
-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 ""
-"Comprimare. Acesta este modul de operare implicit atunci când nu este "
-"specificată nicio opțiune de mod de funcționare și nici un alt mod de "
-"operare nu este implicat din numele comenzii (de exemplu, B<unxz> implică "
-"B<--decompress>)."
+#: ../src/xz/xz.1
+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 "Comprimare. Acesta este modul de operare implicit atunci când nu este specificată nicio opțiune de mod de funcționare și nici un alt mod de operare nu este implicat din numele comenzii (de exemplu, B<unxz> implică B<--decompress>)."
#. type: TP
-#: ../src/xz/xz.1:356 ../src/xzdec/xzdec.1:62
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-d>, B<--decompress>, B<--uncompress>"
msgstr "B<-d>, B<--decompress>, B<--uncompress>"
#. type: Plain text
-#: ../src/xz/xz.1:359
+#: ../src/xz/xz.1
msgid "Decompress."
msgstr "Decomprimare."
#. type: TP
-#: ../src/xz/xz.1:359
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-t>, B<--test>"
msgstr "B<-t>, B<--test>"
#. type: Plain text
-#: ../src/xz/xz.1:368
-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 ""
-"Testează integritatea I<fișierelor> comprimate. Această opțiune este "
-"echivalentă cu B<--decompress --stdout> cu excepția faptului că datele "
-"decomprimate sunt înlăturate în loc să fie scrise la ieșirea standard. Nu "
-"sunt create sau eliminate fișiere."
+#: ../src/xz/xz.1
+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 "Testează integritatea I<fișierelor> comprimate. Această opțiune este echivalentă cu B<--decompress --stdout> cu excepția faptului că datele decomprimate sunt înlăturate în loc să fie scrise la ieșirea standard. Nu sunt create sau eliminate fișiere."
#. type: TP
-#: ../src/xz/xz.1:368
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-l>, B<--list>"
msgstr "B<-l>, B<--list>"
#. type: Plain text
-#: ../src/xz/xz.1:377
-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 ""
-"Afișează informații despre I<fișiere> comprimate. Nu are loc nicio "
-"decomprimare la ieșire și nu sunt create sau eliminate fișiere. În modul "
-"listă, programul nu poate citi datele comprimate din intrarea standard sau "
-"din alte surse care nu pot fi căutate."
+#: ../src/xz/xz.1
+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 "Afișează informații despre I<fișiere> comprimate. Nu are loc nicio decomprimare la ieșire și nu sunt create sau eliminate fișiere. În modul listă, programul nu poate citi datele comprimate din intrarea standard sau din alte surse care nu pot fi căutate."
#. type: Plain text
-#: ../src/xz/xz.1:392
-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, for "
-"example, B<less\\ -S> may be convenient if the terminal isn't wide enough."
-msgstr ""
-"Listarea implicită arată informații de bază despre I<fișiere>, câte un "
-"fișier pe linie. Pentru a obține informații mai detaliate, utilizați și "
-"opțiunea B<--verbose>. Pentru și mai multe informații, utilizați opțiunea "
-"B<--verbose> de două ori, dar rețineți că acest lucru poate fi lent, "
-"deoarece obținerea tuturor informațiilor suplimentare necesită multe "
-"căutări. Lățimea ieșirii detaliate depășește 80 de caractere, deci "
-"canalizarea ieșirii către, de exemplu, B<less\\ -S> poate fi convenabilă "
-"dacă terminalul nu este suficient de lat."
+#: ../src/xz/xz.1
+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, for example, B<less\\ -S> may be convenient if the terminal isn't wide enough."
+msgstr "Listarea implicită arată informații de bază despre I<fișiere>, câte un fișier pe linie. Pentru a obține informații mai detaliate, utilizați și opțiunea B<--verbose>. Pentru și mai multe informații, utilizați opțiunea B<--verbose> de două ori, dar rețineți că acest lucru poate fi lent, deoarece obținerea tuturor informațiilor suplimentare necesită multe căutări. Lățimea ieșirii detaliate depășește 80 de caractere, deci canalizarea ieșirii către, de exemplu, B<less\\ -S> poate fi convenabilă dacă terminalul nu este suficient de lat."
#. type: Plain text
-#: ../src/xz/xz.1:399
-msgid ""
-"The exact output may vary between B<xz> versions and different locales. For "
-"machine-readable output, B<--robot --list> should be used."
-msgstr ""
-"Ieșirea exactă poate varia între versiunile B<xz> și diferitele "
-"localizări(configurările regionale). Pentru ieșiri care pot fi citite de "
-"mașină, ar trebui utilizată opțiunea B<--robot --list>."
+#: ../src/xz/xz.1
+msgid "The exact output may vary between B<xz> versions and different locales. For machine-readable output, B<--robot --list> should be used."
+msgstr "Ieșirea exactă poate varia între versiunile B<xz> și diferitele localizări(configurările regionale). Pentru ieșiri care pot fi citite de mașină, ar trebui utilizată opțiunea B<--robot --list>."
#. type: SS
-#: ../src/xz/xz.1:400
+#: ../src/xz/xz.1
#, no-wrap
msgid "Operation modifiers"
msgstr "Modificatori de operare"
#. type: TP
-#: ../src/xz/xz.1:401 ../src/xzdec/xzdec.1:69
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-k>, B<--keep>"
msgstr "B<-k>, B<--keep>"
#. type: Plain text
-#: ../src/xz/xz.1:404
+#: ../src/xz/xz.1
msgid "Don't delete the input files."
msgstr "Nu șterge fișierele de intrare."
#. type: Plain text
-#: ../src/xz/xz.1:418
-msgid ""
-"Since B<xz> 5.2.6, this option also makes B<xz> compress or decompress even "
-"if the input is a symbolic link to a regular file, has more than one hard "
-"link, or has the setuid, setgid, or sticky bit set. The setuid, setgid, and "
-"sticky bits are not copied to the target file. In earlier versions this was "
-"only done with B<--force>."
-msgstr ""
-"Începând cu B<xz> 5.2.6, această opțiune face ca B<xz> să comprime sau să "
-"decomprime, chiar dacă intrarea este o legătură simbolică către un fișier "
-"obișnuit, are mai mult de-o legătură dură sau are marcați biții setuid, "
-"setgid sau bitul lipicios. Biții setuid, setgid și bitul lipicios nu sunt "
-"copiați în fișierul țintă. În versiunile anterioare acest lucru se făcea "
-"numai cu ajutorul opțiunii B<--force>."
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.2.6, this option also makes B<xz> compress or decompress even if the input is a symbolic link to a regular file, has more than one hard link, or has the setuid, setgid, or sticky bit set. The setuid, setgid, and sticky bits are not copied to the target file. In earlier versions this was only done with B<--force>."
+msgstr "Începând cu B<xz> 5.2.6, această opțiune face ca B<xz> să comprime sau să decomprime, chiar dacă intrarea este o legătură simbolică către un fișier obișnuit, are mai mult de-o legătură dură sau are marcați biții setuid, setgid sau bitul lipicios. Biții setuid, setgid și bitul lipicios nu sunt copiați în fișierul țintă. În versiunile anterioare acest lucru se făcea numai cu ajutorul opțiunii B<--force>."
#. type: TP
-#: ../src/xz/xz.1:418
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-f>, B<--force>"
msgstr "B<-f>, B<--force>"
#. type: Plain text
-#: ../src/xz/xz.1:421
+#: ../src/xz/xz.1
msgid "This option has several effects:"
msgstr "Această opțiune are mai multe efecte:"
#. type: Plain text
-#: ../src/xz/xz.1:425
-msgid ""
-"If the target file already exists, delete it before compressing or "
-"decompressing."
-msgstr ""
-"Dacă fișierul țintă există deja, îl șterge înainte de comprimare sau "
-"decomprimare."
+#: ../src/xz/xz.1
+msgid "If the target file already exists, delete it before compressing or decompressing."
+msgstr "Dacă fișierul țintă există deja, îl șterge înainte de comprimare sau decomprimare."
#. type: Plain text
-#: ../src/xz/xz.1:432
-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 ""
-"Comprimă sau decomprimă chiar dacă intrarea este o legătură simbolică către "
-"un fișier obișnuit, are mai mult de-o legătură dură sau are marcați biții "
-"setuid, setgid sau bitul lipicios. Biții setuid, setgid și bitul lipicios nu "
-"sunt copiați în fișierul țintă."
+#: ../src/xz/xz.1
+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 "Comprimă sau decomprimă chiar dacă intrarea este o legătură simbolică către un fișier obișnuit, are mai mult de-o legătură dură sau are marcați biții setuid, setgid sau bitul lipicios. Biții setuid, setgid și bitul lipicios nu sunt copiați în fișierul țintă."
#. type: Plain text
-#: ../src/xz/xz.1:457
-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 ""
-"Când este utilizată cu opțiunile B<--decompress> și B<--stdout>, comanda "
-"B<xz> nu poate recunoaște tipul fișierului sursă, și copiază fișierul sursă "
-"așa cum este la ieșirea standard. Acest lucru permite comenzii B<xzcat> B<--"
-"force> să fie folosită drept comanda B<cat>(1) pentru fișierele care nu au "
-"fost comprimate cu B<xz>. Rețineți că, în viitor, B<xz> ar putea să accepte "
-"noi formate de fișiere comprimate, ceea ce poate face ca B<xz> să decomprime "
-"mai multe tipuri de fișiere în loc să le copieze așa cum sunt la ieșirea "
-"standard. Opțiunea B<--format=>I<format> poate fi folosită pentru a "
-"restricționa B<xz> să decomprime doar un singur format de fișier."
+#: ../src/xz/xz.1
+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 "Când este utilizată cu opțiunile B<--decompress> și B<--stdout>, comanda B<xz> nu poate recunoaște tipul fișierului sursă, și copiază fișierul sursă așa cum este la ieșirea standard. Acest lucru permite comenzii B<xzcat> B<--force> să fie folosită drept comanda B<cat>(1) pentru fișierele care nu au fost comprimate cu B<xz>. Rețineți că, în viitor, B<xz> ar putea să accepte noi formate de fișiere comprimate, ceea ce poate face ca B<xz> să decomprime mai multe tipuri de fișiere în loc să le copieze așa cum sunt la ieșirea standard. Opțiunea B<--format=>I<format> poate fi folosită pentru a restricționa B<xz> să decomprime doar un singur format de fișier."
#. type: TP
-#: ../src/xz/xz.1:458 ../src/xzdec/xzdec.1:76
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, 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:464
-msgid ""
-"Write the compressed or decompressed data to standard output instead of a "
-"file. This implies B<--keep>."
-msgstr ""
-"Scrie datele comprimate sau decomprimate la ieșirea standard în loc de într-"
-"un fișier. Aceasta implică B<--keep>."
+#: ../src/xz/xz.1
+msgid "Write the compressed or decompressed data to standard output instead of a file. This implies B<--keep>."
+msgstr "Scrie datele comprimate sau decomprimate la ieșirea standard în loc de într-un fișier. Aceasta implică B<--keep>."
#. type: TP
-#: ../src/xz/xz.1:464
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--single-stream>"
msgstr "B<--single-stream>"
#. type: Plain text
-#: ../src/xz/xz.1:473
-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 ""
-"Decomprimă numai primul flux B<.xz> și ignoră în tăcere posibilele date de "
-"intrare rămase în urma fluxului. În mod normal, astfel de resturi rămase "
-"face ca B<xz> să afișeze o eroare."
+#: ../src/xz/xz.1
+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 "Decomprimă numai primul flux B<.xz> și ignoră în tăcere posibilele date de intrare rămase în urma fluxului. În mod normal, astfel de resturi rămase face ca B<xz> să afișeze o eroare."
#. type: Plain text
-#: ../src/xz/xz.1:482
-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> nu decomprimă niciodată mai mult de un flux din fișierele B<.lzma> sau "
-"din fluxurile brute, dar această opțiune face ca B<xz> să ignore posibilele "
-"resturi de date rămase după fișierul B<.lzma> sau fluxul brut."
+#: ../src/xz/xz.1
+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> nu decomprimă niciodată mai mult de un flux din fișierele B<.lzma> sau din fluxurile brute, dar această opțiune face ca B<xz> să ignore posibilele resturi de date rămase după fișierul B<.lzma> sau fluxul brut."
#. type: Plain text
-#: ../src/xz/xz.1:487
-msgid ""
-"This option has no effect if the operation mode is not B<--decompress> or "
-"B<--test>."
-msgstr ""
-"Această opțiune nu are efect dacă modul de funcționare nu este B<--"
-"decompress> sau B<--test>."
+#: ../src/xz/xz.1
+msgid "This option has no effect if the operation mode is not B<--decompress> or B<--test>."
+msgstr "Această opțiune nu are efect dacă modul de funcționare nu este B<--decompress> sau B<--test>."
#. type: TP
-#: ../src/xz/xz.1:487
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--no-sparse>"
msgstr "B<--no-sparse>"
#. type: Plain text
-#: ../src/xz/xz.1:499
-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 ""
-"Dezactivează crearea de fișiere dispersate. În mod implicit, dacă "
-"decomprimă într-un fișier obișnuit, B<xz> încearcă să facă fișierul "
-"dispersat dacă datele decomprimate conțin secvențe lungi de zerouri binare. "
-"De asemenea, funcționează atunci când scrie la ieșirea standard, atâta timp "
-"cât ieșirea standard este conectată la un fișier obișnuit și sunt "
-"îndeplinite anumite condiții suplimentare pentru a o face în siguranță. "
-"Crearea de fișiere dispersate poate economisi spațiu pe disc și poate "
-"accelera decomprimarea prin reducerea cantității de date de In/Ieș pe disc."
+#: ../src/xz/xz.1
+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 "Dezactivează crearea de fișiere dispersate. În mod implicit, dacă decomprimă într-un fișier obișnuit, B<xz> încearcă să facă fișierul dispersat dacă datele decomprimate conțin secvențe lungi de zerouri binare. De asemenea, funcționează atunci când scrie la ieșirea standard, atâta timp cât ieșirea standard este conectată la un fișier obișnuit și sunt îndeplinite anumite condiții suplimentare pentru a o face în siguranță. Crearea de fișiere dispersate poate economisi spațiu pe disc și poate accelera decomprimarea prin reducerea cantității de date de In/Ieș pe disc."
#. type: TP
-#: ../src/xz/xz.1:499
+#: ../src/xz/xz.1
#, 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:511
-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 ""
-"Când comprimă, utilizează I<.suf> ca sufix pentru fișierul țintă în loc de "
-"B<.xz> sau B<.lzma>. Dacă nu scrie la ieșirea standard și fișierul sursă "
-"are deja sufixul I<.suf>, este afișat un avertisment și fișierul este omis."
+#: ../src/xz/xz.1
+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 "Când comprimă, utilizează I<.suf> ca sufix pentru fișierul țintă în loc de B<.xz> sau B<.lzma>. Dacă nu scrie la ieșirea standard și fișierul sursă are deja sufixul I<.suf>, este afișat un avertisment și fișierul este omis."
#. type: Plain text
-#: ../src/xz/xz.1:525
-msgid ""
-"When decompressing, recognize files with the suffix I<.suf> in addition to "
-"files with the B<.xz>, B<.txz>, B<.lzma>, B<.tlz>, or B<.lz> suffix. If the "
-"source file has the suffix I<.suf>, the suffix is removed to get the target "
-"filename."
-msgstr ""
-"Când decomprimă, recunoaște fișierele cu sufixul I<.suf> în plus față de "
-"fișierele cu sufixul B<.xz>, B<.txz>, B<.lzma>, B<.tlz> sau B<.lz>. Dacă "
-"fișierul sursă are sufixul I<.suf>, sufixul este eliminat pentru a obține "
-"numele fișierului țintă."
+#: ../src/xz/xz.1
+msgid "When decompressing, recognize files with the suffix I<.suf> in addition to files with the B<.xz>, B<.txz>, B<.lzma>, B<.tlz>, or B<.lz> suffix. If the source file has the suffix I<.suf>, the suffix is removed to get the target filename."
+msgstr "Când decomprimă, recunoaște fișierele cu sufixul I<.suf> în plus față de fișierele cu sufixul B<.xz>, B<.txz>, B<.lzma>, B<.tlz> sau B<.lz>. Dacă fișierul sursă are sufixul I<.suf>, sufixul este eliminat pentru a obține numele fișierului țintă."
#. type: Plain text
-#: ../src/xz/xz.1:531
-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 ""
-"La comprimarea sau decomprimarea fluxurilor brute (B<--format=raw>), sufixul "
-"trebuie să fie întotdeauna specificat, cu excepția cazului în care se scrie "
-"la ieșirea standard, deoarece nu există un sufix implicit pentru fluxurile "
-"brute."
+#: ../src/xz/xz.1
+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 "La comprimarea sau decomprimarea fluxurilor brute (B<--format=raw>), sufixul trebuie să fie întotdeauna specificat, cu excepția cazului în care se scrie la ieșirea standard, deoarece nu există un sufix implicit pentru fluxurile brute."
#. type: TP
-#: ../src/xz/xz.1:531
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--files>[B<=>I<file>]"
msgstr "B<--files>[B<=>I<fișier>]"
#. type: Plain text
-#: ../src/xz/xz.1:545
-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 ""
-"Citește numele fișierelor de procesat din I<fișier>; dacă I<fișierul> este "
-"omis, numele fișierelor sunt citite de la intrarea standard. Numele de "
-"fișiere trebuie să fie terminate cu caracterul de linie nouă. O liniuță (B<-"
-">) este luată ca nume de fișier obișnuit; nu înseamnă intrarea standard. "
-"Dacă numele de fișiere sunt date și ca argumente în linia de comandă, ele "
-"sunt procesate înainte ca numele fișierelor să fie citite din I<fișier>."
+#: ../src/xz/xz.1
+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 "Citește numele fișierelor de procesat din I<fișier>; dacă I<fișierul> este omis, numele fișierelor sunt citite de la intrarea standard. Numele de fișiere trebuie să fie terminate cu caracterul de linie nouă. O liniuță (B<->) este luată ca nume de fișier obișnuit; nu înseamnă intrarea standard. Dacă numele de fișiere sunt date și ca argumente în linia de comandă, ele sunt procesate înainte ca numele fișierelor să fie citite din I<fișier>."
#. type: TP
-#: ../src/xz/xz.1:545
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--files0>[B<=>I<file>]"
msgstr "B<--files0>[B<=>I<fișier>]"
#. type: Plain text
-#: ../src/xz/xz.1:549
-msgid ""
-"This is identical to B<--files>[B<=>I<file>] except that each filename must "
-"be terminated with the null character."
-msgstr ""
-"Această opțiune este identică cu B<--files>[B<=>I<fișier>], cu excepția "
-"faptului că fiecare nume de fișier trebuie să fie terminat cu caracterul nul."
+#: ../src/xz/xz.1
+msgid "This is identical to B<--files>[B<=>I<file>] except that each filename must be terminated with the null character."
+msgstr "Această opțiune este identică cu B<--files>[B<=>I<fișier>], cu excepția faptului că fiecare nume de fișier trebuie să fie terminat cu caracterul nul."
#. type: SS
-#: ../src/xz/xz.1:550
+#: ../src/xz/xz.1
#, no-wrap
msgid "Basic file format and compression options"
msgstr "Formatul de bază al fișierului și opțiunile de comprimare"
#. type: TP
-#: ../src/xz/xz.1:551
+#: ../src/xz/xz.1
#, 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:556
+#: ../src/xz/xz.1
msgid "Specify the file I<format> to compress or decompress:"
msgstr "Specifică I<formatul> fișierului pentru comprimare sau decomprimare:"
#. type: TP
-#: ../src/xz/xz.1:557
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<auto>"
msgstr "B<auto>"
#. type: Plain text
-#: ../src/xz/xz.1:569
-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 ""
-"Aceasta este valoarea implicită. La comprimare, B<auto> este echivalent cu "
-"B<xz>. La decomprimare, formatul fișierului de intrare este detectat "
-"automat. Rețineți că fluxurile brute (create cu B<--format=raw>) nu pot fi "
-"detectate automat."
+#: ../src/xz/xz.1
+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 "Aceasta este valoarea implicită. La comprimare, B<auto> este echivalent cu B<xz>. La decomprimare, formatul fișierului de intrare este detectat automat. Rețineți că fluxurile brute (create cu B<--format=raw>) nu pot fi detectate automat."
#. type: TP
-#: ../src/xz/xz.1:569
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<xz>"
msgstr "B<xz>"
#. type: Plain text
-#: ../src/xz/xz.1:576
-msgid ""
-"Compress to the B<.xz> file format, or accept only B<.xz> files when "
-"decompressing."
-msgstr ""
-"Comprimă în formatul de fișier B<.xz> sau acceptă numai fișierele B<.xz> "
-"când decomprimă."
+#: ../src/xz/xz.1
+msgid "Compress to the B<.xz> file format, or accept only B<.xz> files when decompressing."
+msgstr "Comprimă în formatul de fișier B<.xz> sau acceptă numai fișierele B<.xz> când decomprimă."
#. type: TP
-#: ../src/xz/xz.1:576
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lzma>, B<alone>"
msgstr "B<lzma>, B<alone>"
#. type: Plain text
-#: ../src/xz/xz.1:586
-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 ""
-"Comprimă în formatul de fișier B<.lzma> vechi sau acceptă numai fișierele B<."
-"lzma> când decomprimă. Numele alternativ B<alone> este furnizat pentru "
-"compatibilitatea cu versiunile mai vechi de LZMA Utils."
+#: ../src/xz/xz.1
+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 "Comprimă în formatul de fișier B<.lzma> vechi sau acceptă numai fișierele B<.lzma> când decomprimă. Numele alternativ B<alone> este furnizat pentru compatibilitatea cu versiunile mai vechi de LZMA Utils."
#. type: TP
-#: ../src/xz/xz.1:586
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lzip>"
msgstr "B<lzip>"
#. type: Plain text
-#: ../src/xz/xz.1:592
-msgid ""
-"Accept only B<.lz> files when decompressing. Compression is not supported."
-msgstr ""
-"Acceptă numai fișierele B<.lz> când decomprimă. Comprimarea nu este "
-"acceptată."
+#: ../src/xz/xz.1
+msgid "Accept only B<.lz> files when decompressing. Compression is not supported."
+msgstr "Acceptă numai fișierele B<.lz> când decomprimă. Comprimarea nu este acceptată."
#. type: Plain text
-#: ../src/xz/xz.1:605
-msgid ""
-"The B<.lz> format version 0 and the unextended version 1 are supported. "
-"Version 0 files were produced by B<lzip> 1.3 and older. Such files aren't "
-"common but may be found from file archives as a few source packages were "
-"released in this format. People might have old personal files in this "
-"format too. Decompression support for the format version 0 was removed in "
-"B<lzip> 1.18."
-msgstr ""
-"Formatul B<.lz> versiunea 0 și versiunea neextinsă 1 sunt acceptate. "
-"Fișierele versiunea 0 au fost produse de B<lzip> cu versiunea 1.3 sau mai "
-"veche. Astfel de fișiere nu sunt obișnuite, dar pot fi găsite în arhivele "
-"de fișiere, deoarece câteva pachete sursă au fost lansate în acest format. "
-"Oamenii ar putea avea și fișiere personale vechi în acest format. Suportul "
-"de decomprimare pentru versiunea de format 0 a fost eliminat în B<lzip> 1.18."
+#: ../src/xz/xz.1
+msgid "The B<.lz> format version 0 and the unextended version 1 are supported. Version 0 files were produced by B<lzip> 1.3 and older. Such files aren't common but may be found from file archives as a few source packages were released in this format. People might have old personal files in this format too. Decompression support for the format version 0 was removed in B<lzip> 1.18."
+msgstr "Formatul B<.lz> versiunea 0 și versiunea neextinsă 1 sunt acceptate. Fișierele versiunea 0 au fost produse de B<lzip> cu versiunea 1.3 sau mai veche. Astfel de fișiere nu sunt obișnuite, dar pot fi găsite în arhivele de fișiere, deoarece câteva pachete sursă au fost lansate în acest format. Oamenii ar putea avea și fișiere personale vechi în acest format. Suportul de decomprimare pentru versiunea de format 0 a fost eliminat în B<lzip> 1.18."
#. type: Plain text
-#: ../src/xz/xz.1:614
-msgid ""
-"B<lzip> 1.4 and later create files in the format version 1. The sync flush "
-"marker extension to the format version 1 was added in B<lzip> 1.6. This "
-"extension is rarely used and isn't supported by B<xz> (diagnosed as corrupt "
-"input)."
-msgstr ""
-"B<lzip> 1.4 și versiunile ulterioare creează fișiere în formatul versiunea "
-"1. Extensia „sync flush marker” pentru versiunea 1 de format a fost "
-"adăugată în B<lzip> 1.6. Această extensie este folosită rar și nu este "
-"acceptată de B<xz> (diagnosticată ca intrare coruptă)."
+#: ../src/xz/xz.1
+msgid "B<lzip> 1.4 and later create files in the format version 1. The sync flush marker extension to the format version 1 was added in B<lzip> 1.6. This extension is rarely used and isn't supported by B<xz> (diagnosed as corrupt input)."
+msgstr "B<lzip> 1.4 și versiunile ulterioare creează fișiere în formatul versiunea 1. Extensia „sync flush marker” pentru versiunea 1 de format a fost adăugată în B<lzip> 1.6. Această extensie este folosită rar și nu este acceptată de B<xz> (diagnosticată ca intrare coruptă)."
#. type: TP
-#: ../src/xz/xz.1:614
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<raw>"
msgstr "B<raw>"
#. type: Plain text
-#: ../src/xz/xz.1:622
-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 ""
-"Comprimă sau decomprimă un flux brut (fără anteturi). Acest lucru este "
-"destinat doar utilizatorilor avansați. Pentru a decodifica fluxurile brute, "
-"trebuie să utilizați opțiunea B<--format=raw> și să specificați în mod "
-"explicit lanțul de filtre, care în mod normal ar fi fost stocat în "
-"anteturile containerului."
+#: ../src/xz/xz.1
+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 "Comprimă sau decomprimă un flux brut (fără anteturi). Acest lucru este destinat doar utilizatorilor avansați. Pentru a decodifica fluxurile brute, trebuie să utilizați opțiunea B<--format=raw> și să specificați în mod explicit lanțul de filtre, care în mod normal ar fi fost stocat în anteturile containerului."
#. type: TP
-#: ../src/xz/xz.1:623
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-C> I<check>, B<--check=>I<check>"
msgstr "B<-C> I<verificarea>, B<--check=>I<verificarea>"
#. type: Plain text
-#: ../src/xz/xz.1:638
-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 ""
-"Specifică tipul verificării integrității. Verificarea este calculată din "
-"datele necomprimate și stocată în fișierul B<.xz>. Această opțiune are "
-"efect numai la comprimarea în format B<.xz>; formatul B<.lzma> nu acceptă "
-"verificări de integritate. Verificarea integrității (dacă există) este "
-"efectuată atunci când fișierul B<.xz> este decomprimat."
+#: ../src/xz/xz.1
+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 "Specifică tipul verificării integrității. Verificarea este calculată din datele necomprimate și stocată în fișierul B<.xz>. Această opțiune are efect numai la comprimarea în format B<.xz>; formatul B<.lzma> nu acceptă verificări de integritate. Verificarea integrității (dacă există) este efectuată atunci când fișierul B<.xz> este decomprimat."
#. type: Plain text
-#: ../src/xz/xz.1:642
+#: ../src/xz/xz.1
msgid "Supported I<check> types:"
msgstr "Tipuri de I<verificare> acceptate:"
#. type: TP
-#: ../src/xz/xz.1:643
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<none>"
msgstr "B<none>"
#. type: Plain text
-#: ../src/xz/xz.1:649
-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 ""
-"Nu calculează deloc o verificare a integrității. Aceasta este de obicei o "
-"idee proastă. Acest lucru poate fi util atunci când integritatea datelor "
-"este oricum verificată prin alte mijloace."
+#: ../src/xz/xz.1
+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 "Nu calculează deloc o verificare a integrității. Aceasta este de obicei o idee proastă. Acest lucru poate fi util atunci când integritatea datelor este oricum verificată prin alte mijloace."
#. type: TP
-#: ../src/xz/xz.1:649
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<crc32>"
msgstr "B<crc32>"
#. type: Plain text
-#: ../src/xz/xz.1:652
+#: ../src/xz/xz.1
msgid "Calculate CRC32 using the polynomial from IEEE-802.3 (Ethernet)."
msgstr "Calculează CRC32 folosind polinomul din IEEE-802.3 (Ethernet)."
#. type: TP
-#: ../src/xz/xz.1:652
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<crc64>"
msgstr "B<crc64>"
#. type: Plain text
-#: ../src/xz/xz.1:657
-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 ""
-"Calculează CRC64 folosind polinomul din ECMA-182. Aceasta este valoarea "
-"implicită, deoarece este ceva mai bună decât CRC32 la detectarea fișierelor "
-"deteriorate, iar diferența de viteză este neglijabilă."
+#: ../src/xz/xz.1
+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 "Calculează CRC64 folosind polinomul din ECMA-182. Aceasta este valoarea implicită, deoarece este ceva mai bună decât CRC32 la detectarea fișierelor deteriorate, iar diferența de viteză este neglijabilă."
#. type: TP
-#: ../src/xz/xz.1:657
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<sha256>"
msgstr "B<sha256>"
#. type: Plain text
-#: ../src/xz/xz.1:661
+#: ../src/xz/xz.1
msgid "Calculate SHA-256. This is somewhat slower than CRC32 and CRC64."
-msgstr ""
-"Calculează SHA-256. Acest lucru este oarecum mai lent decât CRC32 și CRC64."
+msgstr "Calculează SHA-256. Acest lucru este oarecum mai lent decât CRC32 și CRC64."
#. type: Plain text
-#: ../src/xz/xz.1:667
-msgid ""
-"Integrity of the B<.xz> headers is always verified with CRC32. It is not "
-"possible to change or disable it."
-msgstr ""
-"Integritatea antetelor B<.xz> este întotdeauna verificată cu CRC32. Nu este "
-"posibilă modificarea sau dezactivarea acesteia."
+#: ../src/xz/xz.1
+msgid "Integrity of the B<.xz> headers is always verified with CRC32. It is not possible to change or disable it."
+msgstr "Integritatea antetelor B<.xz> este întotdeauna verificată cu CRC32. Nu este posibilă modificarea sau dezactivarea acesteia."
#. type: TP
-#: ../src/xz/xz.1:667
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--ignore-check>"
msgstr "B<--ignore-check>"
#. type: Plain text
-#: ../src/xz/xz.1:673
-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 ""
-"Nu efectuează verificarea integrității datelor comprimate la decomprimare. "
-"Valorile CRC32 din antetele B<.xz> vor fi însă verificate normal."
+#: ../src/xz/xz.1
+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 "Nu efectuează verificarea integrității datelor comprimate la decomprimare. Valorile CRC32 din antetele B<.xz> vor fi însă verificate normal."
#. type: Plain text
-#: ../src/xz/xz.1:676
-msgid ""
-"B<Do not use this option unless you know what you are doing.> Possible "
-"reasons to use this option:"
-msgstr ""
-"B<Nu utilizați această opțiune decât dacă știți ce faceți.> Motive posibile "
-"pentru a utiliza această opțiune:"
+#: ../src/xz/xz.1
+msgid "B<Do not use this option unless you know what you are doing.> Possible reasons to use this option:"
+msgstr "B<Nu utilizați această opțiune decât dacă știți ce faceți>. Motive posibile pentru a utiliza această opțiune:"
#. type: Plain text
-#: ../src/xz/xz.1:679
+#: ../src/xz/xz.1
msgid "Trying to recover data from a corrupt .xz file."
msgstr "Încercarea de a recupera datele dintr-un fișier .xz corupt."
#. type: Plain text
-#: ../src/xz/xz.1:685
-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 ""
-"Accelerarea decomprimării. Acest lucru contează mai ales cu SHA-256 sau cu "
-"fișierele care s-au comprimat extrem de bine. Este recomandat să nu "
-"utilizați această opțiune în acest scop decât dacă integritatea fișierului "
-"este verificată extern într-un alt mod."
+#: ../src/xz/xz.1
+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 "Accelerarea decomprimării. Acest lucru contează mai ales cu SHA-256 sau cu fișierele care s-au comprimat extrem de bine. Este recomandat să nu utilizați această opțiune în acest scop decât dacă integritatea fișierului este verificată extern într-un alt mod."
#. type: TP
-#: ../src/xz/xz.1:686
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-0> ... B<-9>"
msgstr "B<-0> ... B<-9>"
#. type: Plain text
-#: ../src/xz/xz.1:695
-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 ""
-"Selectează un nivel prestabilit de comprimare. Valoarea implicită este "
-"B<-6>. Dacă sunt specificate mai multe niveluri prestabilite, ultimul are "
-"efect. Dacă a fost deja specificat un lanț de filtre personalizat, "
-"specificarea unui nivel prestabilit de comprimare șterge lanțul de filtre "
-"personalizat."
+#: ../src/xz/xz.1
+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 "Selectează un nivel prestabilit de comprimare. Valoarea implicită este B<-6>. Dacă sunt specificate mai multe niveluri prestabilite, ultimul are efect. Dacă a fost deja specificat un lanț de filtre personalizat, specificarea unui nivel prestabilit de comprimare șterge lanțul de filtre personalizat."
#. type: Plain text
-#: ../src/xz/xz.1:710
-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 ""
-"Diferențele dintre valorile prestabilite sunt mai semnificative decât cu "
-"B<gzip>(1) și B<bzip2>(1). Valorile de comprimare selectate determină "
-"cerințele de memorie ale instrumentului de decomprimare, astfel încât "
-"utilizarea unui nivel prea mare prestabilit ar putea face „dureroasă” "
-"decomprimarea fișierului pe un sistem vechi cu puțină memorie RAM. Mai "
-"exact, B<nu este o idee bună să folosiți orbește -9 pentru tot> așa cum se "
-"întâmplă adesea cu B<gzip>(1) și B<bzip2>(1)."
+#: ../src/xz/xz.1
+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 "Diferențele dintre valorile prestabilite sunt mai semnificative decât cu B<gzip>(1) și B<bzip2>(1). Valorile de comprimare selectate determină cerințele de memorie ale instrumentului de decomprimare, astfel încât utilizarea unui nivel prea mare prestabilit ar putea face „dureroasă” decomprimarea fișierului pe un sistem vechi cu puțină memorie RAM. Mai exact, B<nu este o idee bună să folosiți orbește -9 pentru tot> așa cum se întâmplă adesea cu B<gzip>(1) și B<bzip2>(1)."
#. type: TP
-#: ../src/xz/xz.1:711
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-0> ... B<-3>"
msgstr "B<-0> ... B<-3>"
#. type: Plain text
-#: ../src/xz/xz.1:723
-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 ""
-"Acestea sunt valorile prestabilite oarecum rapide. B<-0> este uneori mai "
-"rapid decât B<gzip -9> în timp ce comprimă mult mai bine. Cele mai ridicate "
-"au adesea viteza comparabilă cu B<bzip2>(1) cu un raport de comprimare "
-"comparabil sau mai bun, deși rezultatele depind foarte mult de tipul de date "
-"care sunt comprimate."
+#: ../src/xz/xz.1
+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 "Acestea sunt valorile prestabilite oarecum rapide. B<-0> este uneori mai rapid decât B<gzip -9> în timp ce comprimă mult mai bine. Cele mai ridicate au adesea viteza comparabilă cu B<bzip2>(1) cu un raport de comprimare comparabil sau mai bun, deși rezultatele depind foarte mult de tipul de date care sunt comprimate."
#. type: TP
-#: ../src/xz/xz.1:723
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-4> ... B<-6>"
msgstr "B<-4> ... B<-6>"
#. type: Plain text
-#: ../src/xz/xz.1:737
-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 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 ""
-"Comprimare bună spre foarte bună, păstrând în același timp utilizarea "
-"memoriei de către instrumentul de decomprimare la un nivel rezonabil chiar "
-"și pentru sistemele vechi. B<-6> este valoarea implicită, care este de "
-"obicei o alegere bună pentru distribuirea fișierelor care trebuie să poată "
-"fi decomprimate chiar și pe sisteme cu doar 16Mio de memorie RAM. Opțiunile "
-"(B<-5e> sau B<-6e> ar putea fi demne de luat în considerare. A se vedea "
-"opțiunea B<--extreme>.)"
+#: ../src/xz/xz.1
+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 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 "Comprimare bună spre foarte bună, păstrând în același timp utilizarea memoriei de către instrumentul de decomprimare la un nivel rezonabil chiar și pentru sistemele vechi. B<-6> este valoarea implicită, care este de obicei o alegere bună pentru distribuirea fișierelor care trebuie să poată fi decomprimate chiar și pe sisteme cu doar 16Mio de memorie RAM. Opțiunile (B<-5e> sau B<-6e> ar putea fi demne de luat în considerare. A se vedea opțiunea B<--extreme>.)"
#. type: TP
-#: ../src/xz/xz.1:737
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-7 ... -9>"
msgstr "B<-7 ... -9>"
#. type: Plain text
-#: ../src/xz/xz.1:744
-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 ""
-"Acestea sunt precum B<-6>, dar cu cerințe mai mari de memorie pentru "
-"comprimare și decomprimare. Acestea sunt utile numai atunci când comprimați "
-"fișiere mai mari de 8Mio, 16Mio și, respectiv, 32Mio."
+#: ../src/xz/xz.1
+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 "Acestea sunt precum B<-6>, dar cu cerințe mai mari de memorie pentru comprimare și decomprimare. Acestea sunt utile numai atunci când comprimați fișiere mai mari de 8Mio, 16Mio și, respectiv, 32Mio."
#. type: Plain text
-#: ../src/xz/xz.1:752
-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 ""
-"Pe același hardware, viteza de decomprimare este aproximativ un număr "
-"constant de octeți de date comprimate pe secundă. Cu alte cuvinte, cu cât "
-"comprimarea este mai bună, cu atât decomprimarea va fi de obicei mai "
-"rapidă. Aceasta înseamnă, de asemenea, că valoarea de la ieșire a "
-"cantității de date necomprimate produsă pe secundă poate varia foarte mult."
+#: ../src/xz/xz.1
+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 "Pe același hardware, viteza de decomprimare este aproximativ un număr constant de octeți de date comprimate pe secundă. Cu alte cuvinte, cu cât comprimarea este mai bună, cu atât decomprimarea va fi de obicei mai rapidă. Aceasta înseamnă, de asemenea, că valoarea de la ieșire a cantității de date necomprimate produsă pe secundă poate varia foarte mult."
#. type: Plain text
-#: ../src/xz/xz.1:754
+#: ../src/xz/xz.1
msgid "The following table summarises the features of the presets:"
msgstr "Următorul tabel rezumă caracteristicile valorilor prestabilite:"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842 ../src/xz/xz.1:2839
+#: ../src/xz/xz.1
#, no-wrap
msgid "Preset"
msgstr "ValPrestab"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842
+#: ../src/xz/xz.1
#, no-wrap
msgid "DictSize"
msgstr "DimDict"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842 ../src/xz/xz.1:2839
+#: ../src/xz/xz.1
#, no-wrap
msgid "CompCPU"
msgstr "CPUComp"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842
+#: ../src/xz/xz.1
#, no-wrap
msgid "CompMem"
msgstr "MemComp"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842
+#: ../src/xz/xz.1
#, no-wrap
msgid "DecMem"
msgstr "MemDec"
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:2450 ../src/xz/xz.1:2475
-#: ../src/xz/xz.1:2840
+#: ../src/xz/xz.1
#, no-wrap
msgid "-0"
msgstr "-0"
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:843 ../src/xz/xz.1:2450
+#: ../src/xz/xz.1
#, no-wrap
msgid "256 KiB"
msgstr "256 KiB"
#. type: TP
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:2840 ../src/scripts/xzgrep.1:82
+#: ../src/xz/xz.1 ../src/scripts/xzgrep.1
#, no-wrap
msgid "0"
msgstr "0"
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:764 ../src/xz/xz.1:845 ../src/xz/xz.1:2475
+#: ../src/xz/xz.1
#, no-wrap
msgid "3 MiB"
msgstr "3 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:763 ../src/xz/xz.1:843 ../src/xz/xz.1:844
-#: ../src/xz/xz.1:2451 ../src/xz/xz.1:2452 ../src/xz/xz.1:2454
+#: ../src/xz/xz.1
#, no-wrap
msgid "1 MiB"
msgstr "1 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:2451 ../src/xz/xz.1:2476
-#: ../src/xz/xz.1:2841
+#: ../src/xz/xz.1
#, no-wrap
msgid "-1"
msgstr "-1"
#. type: TP
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:1758 ../src/xz/xz.1:2841
-#: ../src/scripts/xzgrep.1:86
+#: ../src/xz/xz.1 ../src/scripts/xzgrep.1
#, no-wrap
msgid "1"
msgstr "1"
#. type: tbl table
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:767 ../src/xz/xz.1:768 ../src/xz/xz.1:848
-#: ../src/xz/xz.1:849 ../src/xz/xz.1:2476
+#: ../src/xz/xz.1
#, no-wrap
msgid "9 MiB"
msgstr "9 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:764 ../src/xz/xz.1:844 ../src/xz/xz.1:845
-#: ../src/xz/xz.1:2452 ../src/xz/xz.1:2455 ../src/xz/xz.1:2476
+#: ../src/xz/xz.1
#, no-wrap
msgid "2 MiB"
msgstr "2 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:764 ../src/xz/xz.1:2452 ../src/xz/xz.1:2477
-#: ../src/xz/xz.1:2842
+#: ../src/xz/xz.1
#, no-wrap
msgid "-2"
msgstr "-2"
#. type: tbl table
-#: ../src/xz/xz.1:764 ../src/xz/xz.1:1760 ../src/xz/xz.1:2842
+#: ../src/xz/xz.1
#, no-wrap
msgid "2"
msgstr "2"
#. type: tbl table
-#: ../src/xz/xz.1:764 ../src/xz/xz.1:769 ../src/xz/xz.1:850 ../src/xz/xz.1:2477
+#: ../src/xz/xz.1
#, no-wrap
msgid "17 MiB"
msgstr "17 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:2453 ../src/xz/xz.1:2478
-#: ../src/xz/xz.1:2843
+#: ../src/xz/xz.1
#, no-wrap
msgid "-3"
msgstr "-3"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:766 ../src/xz/xz.1:843 ../src/xz/xz.1:846
-#: ../src/xz/xz.1:847 ../src/xz/xz.1:2453 ../src/xz/xz.1:2454
-#: ../src/xz/xz.1:2456
+#: ../src/xz/xz.1
#, no-wrap
msgid "4 MiB"
msgstr "4 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:2843
+#: ../src/xz/xz.1
#, no-wrap
msgid "3"
msgstr "3"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:770 ../src/xz/xz.1:851 ../src/xz/xz.1:2458
-#: ../src/xz/xz.1:2459 ../src/xz/xz.1:2478
+#: ../src/xz/xz.1
#, no-wrap
msgid "32 MiB"
msgstr "32 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:766 ../src/xz/xz.1:846 ../src/xz/xz.1:847
+#: ../src/xz/xz.1
#, no-wrap
msgid "5 MiB"
msgstr "5 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:766 ../src/xz/xz.1:2454 ../src/xz/xz.1:2479
-#: ../src/xz/xz.1:2844
+#: ../src/xz/xz.1
#, no-wrap
msgid "-4"
msgstr "-4"
#. type: tbl table
-#: ../src/xz/xz.1:766 ../src/xz/xz.1:1759 ../src/xz/xz.1:1761
-#: ../src/xz/xz.1:1762 ../src/xz/xz.1:1764 ../src/xz/xz.1:2844
+#: ../src/xz/xz.1
#, no-wrap
msgid "4"
msgstr "4"
#. type: tbl table
-#: ../src/xz/xz.1:766 ../src/xz/xz.1:846 ../src/xz/xz.1:847 ../src/xz/xz.1:2479
+#: ../src/xz/xz.1
#, no-wrap
msgid "48 MiB"
msgstr "48 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:2455 ../src/xz/xz.1:2480
-#: ../src/xz/xz.1:2845
+#: ../src/xz/xz.1
#, no-wrap
msgid "-5"
msgstr "-5"
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:768 ../src/xz/xz.1:848 ../src/xz/xz.1:849
-#: ../src/xz/xz.1:2455 ../src/xz/xz.1:2456 ../src/xz/xz.1:2457
+#: ../src/xz/xz.1
#, no-wrap
msgid "8 MiB"
msgstr "8 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:2845
+#: ../src/xz/xz.1
#, no-wrap
msgid "5"
msgstr "5"
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:768 ../src/xz/xz.1:848 ../src/xz/xz.1:849
-#: ../src/xz/xz.1:2480 ../src/xz/xz.1:2481
+#: ../src/xz/xz.1
#, no-wrap
msgid "94 MiB"
msgstr "94 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:768 ../src/xz/xz.1:2456 ../src/xz/xz.1:2481
-#: ../src/xz/xz.1:2846
+#: ../src/xz/xz.1
#, no-wrap
msgid "-6"
msgstr "-6"
#. type: tbl table
-#: ../src/xz/xz.1:768 ../src/xz/xz.1:769 ../src/xz/xz.1:770 ../src/xz/xz.1:771
-#: ../src/xz/xz.1:2846
+#: ../src/xz/xz.1
#, no-wrap
msgid "6"
msgstr "6"
#. type: tbl table
-#: ../src/xz/xz.1:769 ../src/xz/xz.1:2457 ../src/xz/xz.1:2482
+#: ../src/xz/xz.1
#, no-wrap
msgid "-7"
msgstr "-7"
#. type: tbl table
-#: ../src/xz/xz.1:769 ../src/xz/xz.1:850 ../src/xz/xz.1:2457
-#: ../src/xz/xz.1:2458 ../src/xz/xz.1:2479
+#: ../src/xz/xz.1
#, no-wrap
msgid "16 MiB"
msgstr "16 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:769 ../src/xz/xz.1:850 ../src/xz/xz.1:2482
+#: ../src/xz/xz.1
#, no-wrap
msgid "186 MiB"
msgstr "186 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:770 ../src/xz/xz.1:2458 ../src/xz/xz.1:2483
+#: ../src/xz/xz.1
#, no-wrap
msgid "-8"
msgstr "-8"
#. type: tbl table
-#: ../src/xz/xz.1:770 ../src/xz/xz.1:851 ../src/xz/xz.1:2483
+#: ../src/xz/xz.1
#, no-wrap
msgid "370 MiB"
msgstr "370 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:770 ../src/xz/xz.1:851
+#: ../src/xz/xz.1
#, no-wrap
msgid "33 MiB"
msgstr "33 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:2459 ../src/xz/xz.1:2484
+#: ../src/xz/xz.1
#, no-wrap
msgid "-9"
msgstr "-9"
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:852 ../src/xz/xz.1:2459
+#: ../src/xz/xz.1
#, no-wrap
msgid "64 MiB"
msgstr "64 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:852 ../src/xz/xz.1:2484
+#: ../src/xz/xz.1
#, no-wrap
msgid "674 MiB"
msgstr "674 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:852
+#: ../src/xz/xz.1
#, no-wrap
msgid "65 MiB"
msgstr "65 MiB"
#. type: Plain text
-#: ../src/xz/xz.1:777
+#: ../src/xz/xz.1
msgid "Column descriptions:"
msgstr "Descrieri coloane:"
#. type: Plain text
-#: ../src/xz/xz.1:789
-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 ""
-"DimDict este dimensiunea dicționarului LZMA2. Este o risipă de memorie să "
-"folosești un dicționar mai mare decât dimensiunea fișierului necomprimat. "
-"De aceea este bine să evitați utilizarea valorilor prestabilite B<-7> ... "
-"B<-9> atunci când nu este nevoie cu adevărat de ele. Pentru valoarea "
-"prestabilită B<-6> sau alta mai mică, cantitatea de memorie irosită este de "
-"obicei suficient de mică pentru a nu conta."
+#: ../src/xz/xz.1
+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 "DimDict este dimensiunea dicționarului LZMA2. Este o risipă de memorie să folosești un dicționar mai mare decât dimensiunea fișierului necomprimat. De aceea este bine să evitați utilizarea valorilor prestabilite B<-7> ... B<-9> atunci când nu este nevoie cu adevărat de ele. Pentru valoarea prestabilită B<-6> sau alta mai mică, cantitatea de memorie irosită este de obicei suficient de mică pentru a nu conta."
#. type: Plain text
-#: ../src/xz/xz.1:798
-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 ""
-"CPUComp este o reprezentare simplificată a configurărilor LZMA2 care "
-"afectează viteza de comprimare. Dimensiunea dicționarului afectează și "
-"viteza, așa că, în timp ce CPUComp este aceeași pentru nivelurile B<-6> ... "
-"B<-9>, nivelurile mai mari tind să fie puțin mai lente. Pentru a obține o "
-"comprimare și mai lentă și, astfel, posibil mai bună, consultați opțiunea "
-"B<--extreme>."
+#: ../src/xz/xz.1
+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 "CPUComp este o reprezentare simplificată a configurărilor LZMA2 care afectează viteza de comprimare. Dimensiunea dicționarului afectează și viteza, așa că, în timp ce CPUComp este aceeași pentru nivelurile B<-6> ... B<-9>, nivelurile mai mari tind să fie puțin mai lente. Pentru a obține o comprimare și mai lentă și, astfel, posibil mai bună, consultați opțiunea B<--extreme>."
#. type: Plain text
-#: ../src/xz/xz.1:806
-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 ""
-"MemComp conține cerințele de memorie ale comprimării în modul cu un singur "
-"fir de execuție. Poate varia ușor între versiunile B<xz>. Cerințele de "
-"memorie ale unora dintre viitoarele moduri cu mai multe fire de execuție pot "
-"să fie din nefericire cu mult mai mari decât cele ale modului cu un singur "
-"fir."
+#: ../src/xz/xz.1
+msgid "CompMem contains the compressor memory requirements in the single-threaded mode. It may vary slightly between B<xz> versions."
+msgstr "MemComp conține cerințele de memorie ale comprimării în modul cu un singur fir de execuție. Poate varia ușor între versiunile B<xz>."
#. type: Plain text
-#: ../src/xz/xz.1:813
-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 ""
-"MemDec conține cerințele de memorie pentru decomprimare. Adică, "
-"configurările de comprimare determină cerințele de memorie ale "
-"decomprimării. Cantitatea exactă a memoriei utilizate la decomprimare este "
-"puțin mai mare decât dimensiunea dicționarului LZMA2, dar valorile din tabel "
-"au fost rotunjite la următorul Mio."
+#: ../src/xz/xz.1
+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 "MemDec conține cerințele de memorie pentru decomprimare. Adică, configurările de comprimare determină cerințele de memorie ale decomprimării. Cantitatea exactă a memoriei utilizate la decomprimare este puțin mai mare decât dimensiunea dicționarului LZMA2, dar valorile din tabel au fost rotunjite la următorul Mio."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Memory requirements of the multi-threaded mode are significantly higher than that of the single-threaded mode. With the default value of B<--block-size>, each thread needs 3*3*DictSize plus CompMem or DecMem. For example, four threads with preset B<-6> needs 660\\(en670\\ MiB of memory."
+msgstr "Cerințele de memorie ale modului cu mai multe fire de execuție sunt semnificativ mai mari decât cele ale modului cu un singur fir de execuție. Cu valoarea implicită a lui B<--block-size>, fiecare fir are nevoie de 3*3*DictSize plus MemComp sau MemDec. De exemplu, patru fire de execuție cu valoarea prestabilită B<-6> au nevoie de 660\\(en670\\ Mio de memorie."
#. type: TP
-#: ../src/xz/xz.1:814
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-e>, B<--extreme>"
msgstr "B<-e>, B<--extreme>"
#. type: Plain text
-#: ../src/xz/xz.1:823
-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 ""
-"Utilizează o variantă mai lentă a nivelului prestabilit de comprimare "
-"selectat (B<-0> ... B<-9>) pentru a obține un raport de comprimare puțin mai "
-"bun, dar din nefericire, acest lucru îl poate înrăutăți. Utilizarea "
-"memoriei pentru decomprimare nu este afectată, dar utilizarea memoriei la "
-"comprimare crește puțin la nivelurile prestabilite B<-0> ... B<-3>."
+#: ../src/xz/xz.1
+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 "Utilizează o variantă mai lentă a nivelului prestabilit de comprimare selectat (B<-0> ... B<-9>) pentru a obține un raport de comprimare puțin mai bun, dar din nefericire, acest lucru îl poate înrăutăți. Utilizarea memoriei pentru decomprimare nu este afectată, dar utilizarea memoriei la comprimare crește puțin la nivelurile prestabilite B<-0> ... B<-3>."
#. type: Plain text
-#: ../src/xz/xz.1:835
-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 ""
-"Deoarece există două valori prestabilite cu dimensiuni ale dicționarului de "
-"4Mio și 8Mio, valorile prestabilite B<-3e> și B<-5e> folosesc configurări "
-"puțin mai rapide (CPUComp mai mic) decât B<-4e> și B<-6e>, respectiv. În "
-"acest fel, nu există două nivele prestabilite identice."
+#: ../src/xz/xz.1
+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 "Deoarece există două valori prestabilite cu dimensiuni ale dicționarului de 4Mio și 8Mio, valorile prestabilite B<-3e> și B<-5e> folosesc configurări puțin mai rapide (CPUComp mai mic) decât B<-4e> și B<-6e>, respectiv. În acest fel, nu există două nivele prestabilite identice."
#. type: tbl table
-#: ../src/xz/xz.1:843
+#: ../src/xz/xz.1
#, no-wrap
msgid "-0e"
msgstr "-0e"
#. type: tbl table
-#: ../src/xz/xz.1:843 ../src/xz/xz.1:844 ../src/xz/xz.1:845 ../src/xz/xz.1:847
-#: ../src/xz/xz.1:849 ../src/xz/xz.1:850 ../src/xz/xz.1:851 ../src/xz/xz.1:852
-#: ../src/xz/xz.1:2848
+#: ../src/xz/xz.1
#, no-wrap
msgid "8"
msgstr "8"
#. type: tbl table
-#: ../src/xz/xz.1:844
+#: ../src/xz/xz.1
#, no-wrap
msgid "-1e"
msgstr "-1e"
#. type: tbl table
-#: ../src/xz/xz.1:844
+#: ../src/xz/xz.1
#, no-wrap
msgid "13 MiB"
msgstr "13 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:845
+#: ../src/xz/xz.1
#, no-wrap
msgid "-2e"
msgstr "-2e"
#. type: tbl table
-#: ../src/xz/xz.1:845
+#: ../src/xz/xz.1
#, no-wrap
msgid "25 MiB"
msgstr "25 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:846
+#: ../src/xz/xz.1
#, no-wrap
msgid "-3e"
msgstr "-3e"
#. type: tbl table
-#: ../src/xz/xz.1:846 ../src/xz/xz.1:848 ../src/xz/xz.1:2847
+#: ../src/xz/xz.1
#, no-wrap
msgid "7"
msgstr "7"
#. type: tbl table
-#: ../src/xz/xz.1:847
+#: ../src/xz/xz.1
#, no-wrap
msgid "-4e"
msgstr "-4e"
#. type: tbl table
-#: ../src/xz/xz.1:848 ../src/xz/xz.1:2847
+#: ../src/xz/xz.1
#, no-wrap
msgid "-5e"
msgstr "-5e"
#. type: tbl table
-#: ../src/xz/xz.1:849 ../src/xz/xz.1:2848
+#: ../src/xz/xz.1
#, no-wrap
msgid "-6e"
msgstr "-6e"
#. type: tbl table
-#: ../src/xz/xz.1:850
+#: ../src/xz/xz.1
#, no-wrap
msgid "-7e"
msgstr "-7e"
#. type: tbl table
-#: ../src/xz/xz.1:851
+#: ../src/xz/xz.1
#, no-wrap
msgid "-8e"
msgstr "-8e"
#. type: tbl table
-#: ../src/xz/xz.1:852
+#: ../src/xz/xz.1
#, no-wrap
msgid "-9e"
msgstr "-9e"
#. type: Plain text
-#: ../src/xz/xz.1:864
-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 ""
-"De exemplu, există un total de patru nivele prestabilite care folosesc "
-"dicționarul 8Mio, a căror ordine de la cel mai rapid la cel mai lent este "
-"B<-5>, B<-6>, B<-5e> și B<-6e> ."
+#: ../src/xz/xz.1
+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 "De exemplu, există un total de patru nivele prestabilite care folosesc dicționarul 8Mio, a căror ordine de la cel mai rapid la cel mai lent este B<-5>, B<-6>, B<-5e> și B<-6e> ."
#. type: TP
-#: ../src/xz/xz.1:864
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--fast>"
msgstr "B<--fast>"
#. type: TP
-#: ../src/xz/xz.1:867
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--best>"
msgstr "B<--best>"
#. type: Plain text
-#: ../src/xz/xz.1:878
-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 ""
-"Acestea sunt alias de opțiuni, oarecum înșelătoare pentru B<-0> și, "
-"respectiv, B<-9>. Acestea sunt furnizate numai pentru compatibilitatea cu "
-"LZMA Utils. Evitați utilizarea acestor opțiuni."
+#: ../src/xz/xz.1
+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 "Acestea sunt alias de opțiuni, oarecum înșelătoare pentru B<-0> și, respectiv, B<-9>. Acestea sunt furnizate numai pentru compatibilitatea cu LZMA Utils. Evitați utilizarea acestor opțiuni."
#. type: TP
-#: ../src/xz/xz.1:878
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--block-size=>I<size>"
msgstr "B<--block-size=>I<dimensiunea>"
#. type: Plain text
-#: ../src/xz/xz.1:891
-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 ""
-"Când comprimă în formatul B<.xz>, împarte datele de intrare în blocuri de "
-"I<dimensiunea> octeți. Blocurile sunt comprimate independent unul de "
-"celălalt, ceea ce ajută în modul cu mai multe fire de execuție și face "
-"posibilă decomprimarea cu acces aleatoriu limitat. Această opțiune este de "
-"obicei folosită pentru a suprascrie dimensiunea implicită a blocului în "
-"modul cu mai multe fire de execuție, dar această opțiune poate fi folosită "
-"și în modul cu un singur fir de execuție."
+#: ../src/xz/xz.1
+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 "Când comprimă în formatul B<.xz>, împarte datele de intrare în blocuri de I<dimensiunea> octeți. Blocurile sunt comprimate independent unul de celălalt, ceea ce ajută în modul cu mai multe fire de execuție și face posibilă decomprimarea cu acces aleatoriu limitat. Această opțiune este de obicei folosită pentru a suprascrie dimensiunea implicită a blocului în modul cu mai multe fire de execuție, dar această opțiune poate fi folosită și în modul cu un singur fir de execuție."
#. type: Plain text
-#: ../src/xz/xz.1:909
-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\\(en4 times the size of the LZMA2 dictionary or at least 1 "
-"MiB. Using I<size> less than the LZMA2 dictionary size is waste of RAM "
-"because then the LZMA2 dictionary buffer will never get fully used. The "
-"sizes of the blocks are stored in the block headers, which a future version "
-"of B<xz> will use for multi-threaded decompression."
-msgstr ""
-"În modul cu mai multe fire de execuție, aproximativ de trei ori "
-"I<dimensiunea> de octeți vor fi alocați în fiecare fir pentru stocarea "
-"intrării și ieșirii. I<Dimensiunea> implicită este de trei ori dimensiunea "
-"dicționarului LZMA2 sau 1Mio, oricare dintre acestea este mai mare. În mod "
-"obișnuit, o valoare bună este de două la patru ori dimensiunea dicționarului "
-"LZMA2 sau de cel puțin 1Mio. Utilizarea unei I<dimensiuni> mai mici decât "
-"dimensiunea dicționarului LZMA2 este o risipă de memorie RAM, deoarece "
-"atunci memoria tampon a dicționarului LZMA2 nu va fi niciodată utilizată pe "
-"deplin. Dimensiunile blocurilor sunt stocate în antetele blocurilor, pe "
-"care o versiune viitoare a B<xz> le va folosi pentru decomprimarea cu mai "
-"multe fire de execuție."
-
-#. type: Plain text
-#: ../src/xz/xz.1:918
-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 ""
-"În modul cu un singur fir de execuție, nicio divizare a blocurilor nu se "
-"face în mod implicit. Folosirea acestei opțiuni nu afectează utilizarea "
-"memoriei. Nu sunt stocate informații despre dimensiune în antetele "
-"blocurilor, astfel încât fișierele create în modul cu un singur fir de "
-"execuție nu vor fi identice cu fișierele create în modul cu mai multe fire "
-"de execuție. Lipsa informațiilor despre dimensiune înseamnă, de asemenea, "
-"că o versiune viitoare de B<xz> nu va putea decomprima fișierele în modul cu "
-"mai multe fire de execuție."
+#: ../src/xz/xz.1
+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\\(en4 times the size of the LZMA2 dictionary or at least 1 MiB. Using I<size> less than the LZMA2 dictionary size is waste of RAM because then the LZMA2 dictionary buffer will never get fully used. In multi-threaded mode, the sizes of the blocks are stored in the block headers. This size information is required for multi-threaded decompression."
+msgstr "În modul cu mai multe fire de execuție, aproximativ de trei ori I<dimensiunea> de octeți vor fi alocați în fiecare fir pentru stocarea intrării și ieșirii. I<Dimensiunea> implicită este de trei ori dimensiunea dicționarului LZMA2 sau 1Mio, oricare dintre acestea este mai mare. În mod obișnuit, o valoare bună este de două la patru ori dimensiunea dicționarului LZMA2 sau de cel puțin 1Mio. Utilizarea unei I<dimensiuni> mai mici decât dimensiunea dicționarului LZMA2 este o risipă de memorie RAM, deoarece atunci memoria tampon a dicționarului LZMA2 nu va fi niciodată utilizată pe deplin. În modul cu mai multe fire de execuție, dimensiunile blocurilor sunt stocate în anteturile blocurilor. Aceste informații privind dimensiunea sunt necesare pentru decomprimarea cu mai multe fire."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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 B<xz> won't be able decompress the files in multi-threaded mode."
+msgstr "În modul cu un singur fir de execuție, nicio divizare a blocurilor nu se face în mod implicit. Folosirea acestei opțiuni nu afectează utilizarea memoriei. Nu sunt stocate informații despre dimensiune în antetele blocurilor, astfel încât fișierele create în modul cu un singur fir de execuție nu vor fi identice cu fișierele create în modul cu mai multe fire de execuție. Lipsa informațiilor privind dimensiunea înseamnă, de asemenea, că B<xz> nu va putea decomprima fișierele în modul cu mai multe fire. de execuție."
#. type: TP
-#: ../src/xz/xz.1:918
+#: ../src/xz/xz.1
#, no-wrap
-msgid "B<--block-list=>I<sizes>"
-msgstr "B<--block-list=>I<dimensiuni>"
+msgid "B<--block-list=>I<items>"
+msgstr "B<--block-list=>I<elemente>"
#. type: Plain text
-#: ../src/xz/xz.1:924
-msgid ""
-"When compressing to the B<.xz> format, start a new block after the given "
-"intervals of uncompressed data."
-msgstr ""
-"Atunci când comprimă în formatul B<.xz>, începe un nou bloc după intervalele "
-"specificate, de date necomprimate."
+#: ../src/xz/xz.1
+msgid "When compressing to the B<.xz> format, start a new block with an optional custom filter chain after the given intervals of uncompressed data."
+msgstr "Când comprimă în formatul B<.xz>, începe un nou bloc cu un lanț de filtre personalizat opțional după intervalele specificate de date necomprimate."
#. type: Plain text
-#: ../src/xz/xz.1:930
-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 ""
-"I<Dimensiunile> necomprimate ale blocurilor sunt specificate ca o listă "
-"separată prin virgule. Omiterea unei dimensiuni (două sau mai multe virgule "
-"consecutive) este o prescurtare pentru a folosi dimensiunea blocului "
-"anterior."
+#: ../src/xz/xz.1
+msgid "The I<items> are a comma-separated list. Each item consists of an optional filter chain number between 0 and 9 followed by a colon (B<:>) and a required size of uncompressed data. Omitting an item (two or more consecutive commas) is a shorthand to use the size and filters of the previous item."
+msgstr "I<elementele> sunt o listă separată prin virgule. Fiecare element este format dintr-un număr opțional de lanț de filtrare între 0 și 9, urmat de două puncte (B<:>) și de o dimensiune cerută a datelor necomprimate. Omiterea unui element (două sau mai multe virgule consecutive) este o prescurtare pentru a utiliza dimensiunea și filtrele din elementul anterior."
#. type: Plain text
-#: ../src/xz/xz.1:940
-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 ""
-"Dacă fișierul de intrare este mai mare decât suma I<dimensiuni>lor, ultima "
-"valoare din I<dimensiuni> se repetă până la sfârșitul fișierului. O valoare "
-"specială de B<0> poate fi utilizată ca ultima valoare pentru a indica faptul "
-"că restul fișierului ar trebui să fie codificat ca un singur bloc."
+#: ../src/xz/xz.1
+msgid "If the input file is bigger than the sum of the sizes in I<items>, the last item is repeated until the end of the file. A special value of B<0> may be used as the last size to indicate that the rest of the file should be encoded as a single block."
+msgstr "În cazul în care fișierul de intrare este mai mare decât suma dimensiunilor din I<elemente>, ultimul element se repetă până la sfârșitul fișierului. O valoare specială de B<0> poate fi utilizată ca ultimă dimensiune pentru a indica faptul că restul fișierului trebuie să fie codificat ca un singur bloc."
+
+# R-GC, scrie:
+# în acest mesaj, mărimile „MiB” nu au fost
+# traduse ca „Mio”, cum era normal, pentru
+# că aici se indică cum trebuie să treacă seria
+# de parametrii în linia de comandă, utilizatorul,
+# pentru ca utilitățile xz să „înțeleagă” despre
+# ce este vorba...
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "An alternative filter chain for each block can be specified in combination with the B<--filters1=>I<filters> \\&...\\& B<--filters9=>I<filters> options. These options define filter chains with an identifier between 1\\(en9. Filter chain 0 can be used to refer to the default filter chain, which is the same as not specifying a filter chain. The filter chain identifier can be used before the uncompressed size, followed by a colon (B<:>). For example, if one specifies B<--block-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB> then blocks will be created using:"
+msgstr "Un lanț de filtre alternativ pentru fiecare bloc poate fi specificat în combinație cu opțiunile B<--filters1=>I<filtre> \\&...\\& B<--filters9=>I<filtre>. Aceste opțiuni definesc lanțuri de filtre cu un identificator cuprins între 1\\(en9. Lanțul de filtre 0 poate fi utilizat pentru a se referi la lanțul de filtre implicit, ceea ce este același lucru cu a nu specifica un lanț de filtre. Identificatorul lanțului de filtre poate fi utilizat înaintea dimensiunii necomprimate, urmat de două puncte (B<:>). De exemplu, dacă se specifică B<--block-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB>, atunci blocurile vor fi create folosind:"
#. type: Plain text
-#: ../src/xz/xz.1:955
-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 ""
-"Dacă se specifică I<dimensiuni> care depășesc dimensiunea blocului "
-"codificatorului (fie valoarea implicită în modul fire de execuție, fie "
-"valoarea specificată cu opțiunea B<--block-size=>I<dimensiune>), "
-"codificatorul va crea blocuri suplimentare păstrând în același timp limitele "
-"specificate în I<dimensiuni>. De exemplu, dacă se specifică B<--block-"
-"size=10MiB> B<--block-list=5MiB,10MiB,8MiB,12MiB,24MiB> iar fișierul de "
-"intrare este de 80Mio, se vor obține 11 blocuri de: 5, 10, 8, 10, 2, 10, 10, "
-"4, 10, 10 și 1Mio."
+#: ../src/xz/xz.1
+msgid "The filter chain specified by B<--filters1> and 2 MiB input"
+msgstr "Lanțul de filtre specificat de B<--filters1> și 2 Mio de intrare"
#. type: Plain text
-#: ../src/xz/xz.1:961
-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 ""
-"În modul cu mai multe fire de execuție, dimensiunile blocurilor sunt stocate "
-"în antetele blocurilor. Acest lucru nu se face în modul cu un singur fir de "
-"execuție, astfel încât ieșirea codificată nu va fi identică cu cea a modului "
-"cu mai multe fire de execuție."
+#: ../src/xz/xz.1
+msgid "The filter chain specified by B<--filters3> and 2 MiB input"
+msgstr "Lanțul de filtre specificat de B<--filters3> și 2 Mio de intrare"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The filter chain specified by B<--filters2> and 4 MiB input"
+msgstr "Lanțul de filtre specificat de B<--filters2> și 4 Mio de intrare"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The default filter chain and 2 MiB input"
+msgstr "Lanțul de filtre implicit și 2 MiB de intrare"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The default filter chain and 4 MiB input for every block until end of input."
+msgstr "Lanțul de filtre implicit și 4 MiB de intrare pentru fiecare bloc până la sfârșitul intrării."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "If one specifies a size that exceeds 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<items>. 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 "Dacă se specifică o dimensiune care depășește dimensiunea blocului codificatorului (fie valoarea implicită în modul cu fire de execuție, fie valoarea specificată cu B<--block-size=>I<dimensiune>), codificatorul va crea blocuri suplimentare, păstrând limitele specificate în I<elemente>. De exemplu, dacă se specifică B<--block-size=10MiB> B<--block-list=5MiB,10MiB,8MiB,12MiB,24MiB> și fișierul de intrare este de 80 MiB, se vor obține 11 blocuri: 5, 10, 8, 10, 10, 2, 10, 10, 10, 4, 10, 10, 10 și 1 Mio."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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 "În modul cu mai multe fire de execuție, dimensiunile blocurilor sunt stocate în antetele blocurilor. Acest lucru nu se face în modul cu un singur fir de execuție, astfel încât ieșirea codificată nu va fi identică cu cea a modului cu mai multe fire de execuție."
#. type: TP
-#: ../src/xz/xz.1:961
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--flush-timeout=>I<timeout>"
msgstr "B<--flush-timeout=>I<timp_limită>"
#. type: Plain text
-#: ../src/xz/xz.1:978
-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 ""
-"La comprimare, dacă au trecut mai mult de I<timp_limită> milisecunde (un "
-"întreg pozitiv) de la curățarea anterioară și citirea mai multor intrări s-"
-"ar bloca, toate datele de intrare în așteptare sunt eliminate din "
-"codificator și puse la dispoziție în fluxul de ieșire. Acest lucru poate să "
-"fie util dacă B<xz> este utilizat pentru a comprima datele care sunt "
-"transmise în flux printr-o rețea. Valorile mici de I<timp_limită> fac "
-"datele disponibile la capătul de recepție cu o mică întârziere, dar valorile "
-"mari de I<timp_limită> oferă un raport de comprimare mai bun."
+#: ../src/xz/xz.1
+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 "La comprimare, dacă au trecut mai mult de I<timp_limită> milisecunde (un întreg pozitiv) de la curățarea anterioară și citirea mai multor intrări s-ar bloca, toate datele de intrare în așteptare sunt eliminate din codificator și puse la dispoziție în fluxul de ieșire. Acest lucru poate să fie util dacă B<xz> este utilizat pentru a comprima datele care sunt transmise în flux printr-o rețea. Valorile mici de I<timp_limită> fac datele disponibile la capătul de recepție cu o mică întârziere, dar valorile mari de I<timp_limită> oferă un raport de comprimare mai bun."
#. type: Plain text
-#: ../src/xz/xz.1:986
-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 ""
-"Această caracteristică este dezactivată în mod implicit. Dacă această "
-"opțiune este specificată de mai multe ori, ultima este cea care se ia în "
-"considerare. Valoarea specială a lui I<timp_limită> de B<0>, poate fi "
-"utilizată pentru a dezactiva în mod explicit această caracteristică."
+#: ../src/xz/xz.1
+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 "Această caracteristică este dezactivată în mod implicit. Dacă această opțiune este specificată de mai multe ori, ultima este cea care se ia în considerare. Valoarea specială a lui I<timp_limită> de B<0>, poate fi utilizată pentru a dezactiva în mod explicit această caracteristică."
#. type: Plain text
-#: ../src/xz/xz.1:988
+#: ../src/xz/xz.1
msgid "This feature is not available on non-POSIX systems."
msgstr "Această caracteristică nu este disponibilă în sistemele non-POSIX."
#. FIXME
#. type: Plain text
-#: ../src/xz/xz.1:996
-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<Această caracteristică este încă experimentală.> În prezent, B<xz> este "
-"nepotrivit pentru decomprimarea fluxului în timp real datorită modului în "
-"care B<xz> utilizează memoria tampon."
+#: ../src/xz/xz.1
+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<Această caracteristică este încă experimentală>. În prezent, B<xz> este nepotrivit pentru decomprimarea fluxului în timp real datorită modului în care B<xz> utilizează memoria tampon."
#. type: TP
-#: ../src/xz/xz.1:996
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--memlimit-compress=>I<limit>"
msgstr "B<--memlimit-compress=>I<limita>"
#. type: Plain text
-#: ../src/xz/xz.1:1001
-msgid ""
-"Set a memory usage limit for compression. If this option is specified "
-"multiple times, the last one takes effect."
-msgstr ""
-"Stabilește o limită de utilizare a memoriei pentru comprimare. Dacă această "
-"opțiune este specificată de mai multe ori, ultima va avea efect."
+#: ../src/xz/xz.1
+msgid "Set a memory usage limit for compression. If this option is specified multiple times, the last one takes effect."
+msgstr "Stabilește o limită de utilizare a memoriei pentru comprimare. Dacă această opțiune este specificată de mai multe ori, ultima va avea efect."
#. type: Plain text
-#: ../src/xz/xz.1:1014
-msgid ""
-"If the compression settings exceed the I<limit>, B<xz> will attempt to "
-"adjust the settings downwards so that the limit is no longer exceeded and "
-"display a notice that automatic adjustment was done. The adjustments are "
-"done in this order: reducing the number of threads, switching to single-"
-"threaded mode if even one thread in multi-threaded mode exceeds the "
-"I<limit>, and finally reducing the LZMA2 dictionary size."
-msgstr ""
-"Dacă parametrii de comprimare depășesc I<limita>, B<xz> va încerca să "
-"ajusteze parametrii scăzând valorile acestora, astfel încât limita să nu mai "
-"fie depășită și va afișa o notificare că ajustarea automată a fost "
-"efectuată. Ajustările se fac în această ordine: reducerea numărului de "
-"fire, trecerea la modul un singur fir de execuție dacă chiar și un singur "
-"fir în modul cu mai multe fire de execuție depășește I<limita> și, în final, "
-"reducerea dimensiunii dicționarului LZMA2."
+#: ../src/xz/xz.1
+msgid "If the compression settings exceed the I<limit>, B<xz> will attempt to adjust the settings downwards so that the limit is no longer exceeded and display a notice that automatic adjustment was done. The adjustments are done in this order: reducing the number of threads, switching to single-threaded mode if even one thread in multi-threaded mode exceeds the I<limit>, and finally reducing the LZMA2 dictionary size."
+msgstr "Dacă parametrii de comprimare depășesc I<limita>, B<xz> va încerca să ajusteze parametrii scăzând valorile acestora, astfel încât limita să nu mai fie depășită și va afișa o notificare că ajustarea automată a fost efectuată. Ajustările se fac în această ordine: reducerea numărului de fire, trecerea la modul un singur fir de execuție dacă chiar și un singur fir în modul cu mai multe fire de execuție depășește I<limita> și, în final, reducerea dimensiunii dicționarului LZMA2."
#. type: Plain text
-#: ../src/xz/xz.1:1022
-msgid ""
-"When compressing with B<--format=raw> or if B<--no-adjust> has been "
-"specified, only the number of threads may be reduced since it can be done "
-"without affecting the compressed output."
-msgstr ""
-"Când comprimă cu opțiunea B<--format=raw> sau dacă a fost specificată "
-"opțiunea B<--no-adjust>, numai numărul de fire poate fi redus, deoarece se "
-"poate face fără a afecta rezultatul comprimării."
+#: ../src/xz/xz.1
+msgid "When compressing with B<--format=raw> or if B<--no-adjust> has been specified, only the number of threads may be reduced since it can be done without affecting the compressed output."
+msgstr "Când comprimă cu opțiunea B<--format=raw> sau dacă a fost specificată opțiunea B<--no-adjust>, numai numărul de fire poate fi redus, deoarece se poate face fără a afecta rezultatul comprimării."
#. type: Plain text
-#: ../src/xz/xz.1:1029
-msgid ""
-"If the I<limit> cannot be met even with the adjustments described above, an "
-"error is displayed and B<xz> will exit with exit status 1."
-msgstr ""
-"Dacă I<limita> nu poate fi îndeplinită chiar și cu ajustările descrise mai "
-"sus, este afișată o eroare și B<xz> va ieși cu starea de ieșire 1."
+#: ../src/xz/xz.1
+msgid "If the I<limit> cannot be met even with the adjustments described above, an error is displayed and B<xz> will exit with exit status 1."
+msgstr "Dacă I<limita> nu poate fi îndeplinită chiar și cu ajustările descrise mai sus, este afișată o eroare și B<xz> va ieși cu starea de ieșire 1."
#. type: Plain text
-#: ../src/xz/xz.1:1033
+#: ../src/xz/xz.1
msgid "The I<limit> can be specified in multiple ways:"
msgstr "I<Limita> poate fi specificata în mai multe moduri:"
#. type: Plain text
-#: ../src/xz/xz.1:1043
-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 ""
-"I<Limita> poate fi o valoare absolută în octeți. Utilizarea unui sufix "
-"întreg precum B<MiB> poate fi utilă. De exemplu: B<--memlimit-"
-"compress=80MiB>"
+#: ../src/xz/xz.1
+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 "I<Limita> poate fi o valoare absolută în octeți. Utilizarea unui sufix întreg precum B<MiB> poate fi utilă. De exemplu: B<--memlimit-compress=80MiB>"
#. type: Plain text
-#: ../src/xz/xz.1:1055
-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 ""
-"I<Limita> poate fi specificată ca procent din memoria fizică totală (RAM). "
-"Acest lucru poate fi util mai ales atunci când definiți variabila de mediu "
-"B<XZ_DEFAULTS> într-un script de inițializare shell care este partajat între "
-"diferite calculatoare. În acest fel, limita este automat mai mare pe "
-"sistemele cu mai multă memorie. De exemplu: B<--memlimit-compress=70%>"
+#: ../src/xz/xz.1
+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 "I<Limita> poate fi specificată ca procent din memoria fizică totală (RAM). Acest lucru poate fi util mai ales atunci când definiți variabila de mediu B<XZ_DEFAULTS> într-un script de inițializare shell care este partajat între diferite calculatoare. În acest fel, limita este automat mai mare pe sistemele cu mai multă memorie. De exemplu: B<--memlimit-compress=70%>"
#. type: Plain text
-#: ../src/xz/xz.1:1065
-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)."
-msgstr ""
-"I<Limita> poate fi restabilită la valoarea implicită dându-i valoarea B<0>. "
-"În prezent, aceasta este echivalentă cu stabilirea I<limitei> la B<max> "
-"(fără limită de utilizare a memoriei)."
+#: ../src/xz/xz.1
+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)."
+msgstr "I<Limita> poate fi restabilită la valoarea implicită dându-i valoarea B<0>. În prezent, aceasta este echivalentă cu stabilirea I<limitei> la B<max> (fără limită de utilizare a memoriei)."
#. type: Plain text
-#: ../src/xz/xz.1:1089
-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>. On MIPS32 B<2000\\ "
-"MiB> is used instead. (The values B<0> and B<max> aren't affected by this. "
-"A similar feature doesn't exist for decompression.) This can be helpful "
-"when a 32-bit executable has access to 4\\ GiB address space (2 GiB on "
-"MIPS32) while hopefully doing no harm in other situations."
-msgstr ""
-"Pentru B<xz> pe 32 de biți există un caz special: dacă I<limita> ar fi peste "
-"B<4020MiB>, I<limita> este stabilită la B<4020MiB>. Pe MIPS32 este "
-"stabilită în schimb la B<2000MiB>. (Valorile B<0> și B<max> nu sunt "
-"afectate de acest lucru. O caracteristică similară nu există pentru "
-"decomprimare.) Acest lucru poate fi util atunci când un executabil pe 32 de "
-"biți are acces la un spațiu de adrese de 4Gio (2Gio pe MIPS32), se speră că "
-"nu produce daune în alte situații."
+#: ../src/xz/xz.1
+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>. On MIPS32 B<2000\\ MiB> is used instead. (The values B<0> and B<max> aren't affected by this. A similar feature doesn't exist for decompression.) This can be helpful when a 32-bit executable has access to 4\\ GiB address space (2 GiB on MIPS32) while hopefully doing no harm in other situations."
+msgstr "Pentru B<xz> pe 32 de biți există un caz special: dacă I<limita> ar fi peste B<4020MiB>, I<limita> este stabilită la B<4020MiB>. Pe MIPS32 este stabilită în schimb la B<2000MiB>; (valorile B<0> și B<max> nu sunt afectate de acest lucru -- o caracteristică similară nu există pentru decomprimare). Acest lucru poate fi util atunci când un executabil pe 32 de biți are acces la un spațiu de adrese de 4Gio (2Gio pe MIPS32), se speră că nu produce daune în alte situații."
#. type: Plain text
-#: ../src/xz/xz.1:1092
+#: ../src/xz/xz.1
msgid "See also the section B<Memory usage>."
msgstr "Consultați și secțiunea B<Utilizarea memoriei>."
#. type: TP
-#: ../src/xz/xz.1:1092
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--memlimit-decompress=>I<limit>"
msgstr "B<--memlimit-decompress=>I<limita>"
#. type: Plain text
-#: ../src/xz/xz.1:1106
-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 ""
-"Stabilește o limită de utilizare a memoriei pentru decomprimare. Acest "
-"lucru afectează și modul B<--list>. Dacă operațiunea nu este posibilă fără "
-"a depăși I<limita>, B<xz> va afișa o eroare și decomprimarea fișierului va "
-"eșua. Consultați B<--memlimit-compress=>I<limita> pentru modalitățile "
-"posibile de a specifica I<limita>."
+#: ../src/xz/xz.1
+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 "Stabilește o limită de utilizare a memoriei pentru decomprimare. Acest lucru afectează și modul B<--list>. Dacă operațiunea nu este posibilă fără a depăși I<limita>, B<xz> va afișa o eroare și decomprimarea fișierului va eșua. Consultați B<--memlimit-compress=>I<limita> pentru modalitățile posibile de a specifica I<limita>."
#. type: TP
-#: ../src/xz/xz.1:1106
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--memlimit-mt-decompress=>I<limit>"
msgstr "B<--memlimit-mt-decompress=>I<limita>"
#. type: Plain text
-#: ../src/xz/xz.1:1128
-msgid ""
-"Set a memory usage limit for multi-threaded decompression. This can only "
-"affect the number of threads; this will never make B<xz> refuse to "
-"decompress a file. If I<limit> is too low to allow any multi-threading, the "
-"I<limit> is ignored and B<xz> will continue in single-threaded mode. Note "
-"that if also B<--memlimit-decompress> is used, it will always apply to both "
-"single-threaded and multi-threaded modes, and so the effective I<limit> for "
-"multi-threading will never be higher than the limit set with B<--memlimit-"
-"decompress>."
-msgstr ""
-"Stabilește o limită de utilizare a memoriei pentru decomprimarea cu mai "
-"multe fire de execuție. Acest lucru poate afecta doar numărul de fire de "
-"execuție; acest lucru nu îl va face niciodată pe B<xz> să refuze "
-"decomprimarea unui fișier. Dacă I<limita> este prea scăzută pentru a "
-"permite orice mod cu mai multe fire de execuție, I<limita> este ignorată și "
-"B<xz> va continua în modul cu un singur fir de execuție. Rețineți că, dacă "
-"se folosește și opțiunea B<--memlimit-decompress>, se va aplica întotdeauna "
-"atât modurilor cu un singur fir de execuție, cât și modurilor cu mai multe "
-"fire de execuție și astfel I<limita> efectivă pentru modul cu mai multe fire "
-"de execuție nu va fi niciodată mai mare decât limita stabilită cu opțiunea "
-"B<--memlimit-decompress>."
-
-#. type: Plain text
-#: ../src/xz/xz.1:1135
-msgid ""
-"In contrast to the other memory usage limit options, B<--memlimit-mt-"
-"decompress=>I<limit> has a system-specific default I<limit>. B<xz --info-"
-"memory> can be used to see the current value."
-msgstr ""
-"Spre deosebire de celelalte opțiuni de limită de utilizare a memoriei, "
-"opțiunea B<--memlimit-mt-decompress=>I<limita> are o I<limită> implicită "
-"specifică sistemului. Comanda B<xz --info-memory> poate fi folosită pentru "
-"a vedea valoarea curentă."
+#: ../src/xz/xz.1
+msgid "Set a memory usage limit for multi-threaded decompression. This can only affect the number of threads; this will never make B<xz> refuse to decompress a file. If I<limit> is too low to allow any multi-threading, the I<limit> is ignored and B<xz> will continue in single-threaded mode. Note that if also B<--memlimit-decompress> is used, it will always apply to both single-threaded and multi-threaded modes, and so the effective I<limit> for multi-threading will never be higher than the limit set with B<--memlimit-decompress>."
+msgstr "Stabilește o limită de utilizare a memoriei pentru decomprimarea cu mai multe fire de execuție. Acest lucru poate afecta doar numărul de fire de execuție; acest lucru nu îl va face niciodată pe B<xz> să refuze decomprimarea unui fișier. Dacă I<limita> este prea scăzută pentru a permite orice mod cu mai multe fire de execuție, I<limita> este ignorată și B<xz> va continua în modul cu un singur fir de execuție. Rețineți că, dacă se folosește și opțiunea B<--memlimit-decompress>, se va aplica întotdeauna atât modurilor cu un singur fir de execuție, cât și modurilor cu mai multe fire de execuție și astfel I<limita> efectivă pentru modul cu mai multe fire de execuție nu va fi niciodată mai mare decât limita stabilită cu opțiunea B<--memlimit-decompress>."
#. type: Plain text
-#: ../src/xz/xz.1:1151
-msgid ""
-"This option and its default value exist because without any limit the "
-"threaded decompressor could end up allocating an insane amount of memory "
-"with some input files. If the default I<limit> is too low on your system, "
-"feel free to increase the I<limit> but never set it to a value larger than "
-"the amount of usable RAM as with appropriate input files B<xz> will attempt "
-"to use that amount of memory even with a low number of threads. Running out "
-"of memory or swapping will not improve decompression performance."
-msgstr ""
-"Această opțiune și valoarea ei implicită există deoarece, fără nicio limită, "
-"decomprimarea cu (mai multe) fire de execuție ar putea ajunge să aloce o "
-"cantitate „nebună” de memorie cu unele fișiere de intrare. Dacă I<limita> "
-"implicită este prea scăzută pe sistemul dumneavoastră, nu ezitați să "
-"creșteți I<limita>, dar niciodată să nu o stabiliți la o valoare mai mare "
-"decât cantitatea de memorie RAM utilizabilă și cu niște fișiere de intrare "
-"adecvate, B<xz> va încerca să utilizeze acea cantitate de memorie chiar și "
-"cu un număr redus de fire de execuție. Rularea lui B<xz> cu depășirea "
-"cantității de memorie fizice(RAM) sau a celei de interschimb(swap) nu va "
-"îmbunătăți performanța de decomprimare."
-
-#. type: Plain text
-#: ../src/xz/xz.1:1163
-msgid ""
-"See B<--memlimit-compress=>I<limit> for possible ways to specify the "
-"I<limit>. Setting I<limit> to B<0> resets the I<limit> to the default "
-"system-specific value."
-msgstr ""
-"Consultați opțiunea B<--memlimit-compress=>I<limita> pentru modalități "
-"posibile de a specifica I<limita>. Stabilirea I<limitei> la B<0> "
-"restabilește I<limita> la valoarea implicită specifică sistemului."
+#: ../src/xz/xz.1
+msgid "In contrast to the other memory usage limit options, B<--memlimit-mt-decompress=>I<limit> has a system-specific default I<limit>. B<xz --info-memory> can be used to see the current value."
+msgstr "Spre deosebire de celelalte opțiuni de limită de utilizare a memoriei, opțiunea B<--memlimit-mt-decompress=>I<limita> are o I<limită> implicită specifică sistemului. Comanda B<xz --info-memory> poate fi folosită pentru a vedea valoarea curentă."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "This option and its default value exist because without any limit the threaded decompressor could end up allocating an insane amount of memory with some input files. If the default I<limit> is too low on your system, feel free to increase the I<limit> but never set it to a value larger than the amount of usable RAM as with appropriate input files B<xz> will attempt to use that amount of memory even with a low number of threads. Running out of memory or swapping will not improve decompression performance."
+msgstr "Această opțiune și valoarea ei implicită există deoarece, fără nicio limită, decomprimarea cu (mai multe) fire de execuție ar putea ajunge să aloce o cantitate „nebună” de memorie cu unele fișiere de intrare. Dacă I<limita> implicită este prea scăzută pe sistemul dumneavoastră, nu ezitați să creșteți I<limita>, dar niciodată să nu o stabiliți la o valoare mai mare decât cantitatea de memorie RAM utilizabilă și cu niște fișiere de intrare adecvate, B<xz> va încerca să utilizeze acea cantitate de memorie chiar și cu un număr redus de fire de execuție. Rularea lui B<xz> cu depășirea cantității de memorie fizice(RAM) sau a celei de interschimb(swap) nu va îmbunătăți performanța de decomprimare."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "See B<--memlimit-compress=>I<limit> for possible ways to specify the I<limit>. Setting I<limit> to B<0> resets the I<limit> to the default system-specific value."
+msgstr "Consultați opțiunea B<--memlimit-compress=>I<limita> pentru modalități posibile de a specifica I<limita>. Stabilirea I<limitei> la B<0> restabilește I<limita> la valoarea implicită specifică sistemului."
#. type: TP
-#: ../src/xz/xz.1:1163
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-M> I<limit>, B<--memlimit=>I<limit>, B<--memory=>I<limit>"
msgstr "B<-M> I<limita>, B<--memlimit=>I<limita>, B<--memory=>I<limita>"
#. type: Plain text
-#: ../src/xz/xz.1:1169
-msgid ""
-"This is equivalent to specifying B<--memlimit-compress=>I<limit> B<--"
-"memlimit-decompress=>I<limit> B<--memlimit-mt-decompress=>I<limit>."
-msgstr ""
-"Aceasta este echivalentă cu specificarea opțiunilor: B<--memlimit-"
-"compress=>I<limita> B<--memlimit-decompress=>I<limita> B<--memlimit-mt-"
-"decompress=>I<limita>."
+#: ../src/xz/xz.1
+msgid "This is equivalent to specifying B<--memlimit-compress=>I<limit> B<--memlimit-decompress=>I<limit> B<--memlimit-mt-decompress=>I<limit>."
+msgstr "Aceasta este echivalentă cu specificarea opțiunilor: B<--memlimit-compress=>I<limita> B<--memlimit-decompress=>I<limita> B<--memlimit-mt-decompress=>I<limita>."
#. type: TP
-#: ../src/xz/xz.1:1169
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--no-adjust>"
msgstr "B<--no-adjust>"
#. type: Plain text
-#: ../src/xz/xz.1:1179
-msgid ""
-"Display an error and exit if the memory usage limit cannot be met without "
-"adjusting settings that affect the compressed output. That is, this "
-"prevents B<xz> from switching the encoder from multi-threaded mode to single-"
-"threaded mode and from reducing the LZMA2 dictionary size. Even when this "
-"option is used the number of threads may be reduced to meet the memory usage "
-"limit as that won't affect the compressed output."
-msgstr ""
-"Afișează o eroare și iese dacă limita de utilizare a memoriei nu poate fi "
-"îndeplinită fără ajustarea parametrilor care afectează ieșirea comprimată. "
-"Adică, acest lucru împiedică B<xz> să comute codificatorul din modul cu mai "
-"multe fire de execuție în modul cu un singur fir de execuție și să reducă "
-"dimensiunea dicționarului LZMA2. Chiar și atunci când această opțiune este "
-"utilizată, numărul de fire de execuție poate fi redus pentru a îndeplini "
-"limita de utilizare a memoriei, deoarece aceasta nu va afecta comprimarea."
+#: ../src/xz/xz.1
+msgid "Display an error and exit if the memory usage limit cannot be met without adjusting settings that affect the compressed output. That is, this prevents B<xz> from switching the encoder from multi-threaded mode to single-threaded mode and from reducing the LZMA2 dictionary size. Even when this option is used the number of threads may be reduced to meet the memory usage limit as that won't affect the compressed output."
+msgstr "Afișează o eroare și iese dacă limita de utilizare a memoriei nu poate fi îndeplinită fără ajustarea parametrilor care afectează ieșirea comprimată. Adică, acest lucru împiedică B<xz> să comute codificatorul din modul cu mai multe fire de execuție în modul cu un singur fir de execuție și să reducă dimensiunea dicționarului LZMA2. Chiar și atunci când această opțiune este utilizată, numărul de fire de execuție poate fi redus pentru a îndeplini limita de utilizare a memoriei, deoarece aceasta nu va afecta comprimarea."
#. type: Plain text
-#: ../src/xz/xz.1:1182
-msgid ""
-"Automatic adjusting is always disabled when creating raw streams (B<--"
-"format=raw>)."
-msgstr ""
-"Ajustarea automată este întotdeauna dezactivată la crearea fluxurilor brute "
-"(B<--format=raw>)."
+#: ../src/xz/xz.1
+msgid "Automatic adjusting is always disabled when creating raw streams (B<--format=raw>)."
+msgstr "Ajustarea automată este întotdeauna dezactivată la crearea fluxurilor brute (B<--format=raw>)."
#. type: TP
-#: ../src/xz/xz.1:1182
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-T> I<threads>, B<--threads=>I<threads>"
msgstr "B<-T> I<număr>, B<--threads=>I<număr>"
#. type: Plain text
-#: ../src/xz/xz.1:1197
-msgid ""
-"Specify the number of worker threads to use. Setting I<threads> to a "
-"special value B<0> makes B<xz> use up to as many threads as the processor(s) "
-"on the system support. The actual number of threads can be fewer than "
-"I<threads> if the input file is not big enough for threading with the given "
-"settings or if using more threads would exceed the memory usage limit."
-msgstr ""
-"Specifică numărul de fire de execuție de utilizat. Stabilirea I<numărului> "
-"la valoarea specială B<0>, face ca B<xz> să utilizeze până la atâtea fire de "
-"execuție câte procesoare sunt în sistem. Numărul real de fire de execuție "
-"poate fi mai mic decât I<număr> dacă fișierul de intrare nu este suficient "
-"de mare pentru a trece la modul cu mai multe fire de execuție cu parametrii "
-"dați, sau dacă folosirea mai multor fire de execuție ar depăși limita de "
-"utilizare a memoriei."
+#: ../src/xz/xz.1
+msgid "Specify the number of worker threads to use. Setting I<threads> to a special value B<0> makes B<xz> use up to as many threads as the processor(s) on the system support. The actual number of threads can be fewer than I<threads> if the input file is not big enough for threading with the given settings or if using more threads would exceed the memory usage limit."
+msgstr "Specifică numărul de fire de execuție de utilizat. Stabilirea I<numărului> la valoarea specială B<0>, face ca B<xz> să utilizeze până la atâtea fire de execuție câte procesoare sunt în sistem. Numărul real de fire de execuție poate fi mai mic decât I<număr> dacă fișierul de intrare nu este suficient de mare pentru a trece la modul cu mai multe fire de execuție cu parametrii dați, sau dacă folosirea mai multor fire de execuție ar depăși limita de utilizare a memoriei."
#. type: Plain text
-#: ../src/xz/xz.1:1216
-msgid ""
-"The single-threaded and multi-threaded compressors produce different "
-"output. Single-threaded compressor will give the smallest file size but "
-"only the output from the multi-threaded compressor can be decompressed using "
-"multiple threads. Setting I<threads> to B<1> will use the single-threaded "
-"mode. Setting I<threads> to any other value, including B<0>, will use the "
-"multi-threaded compressor even if the system supports only one hardware "
-"thread. (B<xz> 5.2.x used single-threaded mode in this situation.)"
-msgstr ""
-"Operațiile de comprimare cu un singur fir de execuție și cele cu mai multe "
-"fire de execuție produc ieșiri diferite. Comprimarea cu un singur fir de "
-"execuție va oferi cea mai mică dimensiune a fișierului, dar numai ieșirea de "
-"la comprimarea cu mai multe fire de execuție poate fi decomprimată folosind "
-"mai multe fire. Stabilirea I<numărului> la B<1> va determina ca B<xz> să "
-"folosească modul cu un singur fir de execuție. Stabilirea I<numărului> la "
-"orice altă valoare, inclusiv B<0>, va determina ca B<xz> să folosească "
-"comprimarea cu mai multe fire de execuție chiar dacă sistemul acceptă doar "
-"un fir hardware. (B<xz> 5.2.x folosește modul cu un singur fir de execuție "
-"în această situație.)"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1235
-msgid ""
-"To use multi-threaded mode with only one thread, set I<threads> to B<+1>. "
-"The B<+> prefix has no effect with values other than B<1>. A memory usage "
-"limit can still make B<xz> switch to single-threaded mode unless B<--no-"
-"adjust> is used. Support for the B<+> prefix was added in B<xz> 5.4.0."
-msgstr ""
-"Pentru a utiliza modul cu mai multe fire de execuție cu un singur fir, "
-"stabiliți I<numărul> la B<+1>. Prefixul B<+> nu are efect cu alte valori "
-"decât B<1>. O limită de utilizare a memoriei poate face în continuare B<xz> "
-"să treacă în modul cu un singur fir, cu excepția cazului în care este "
-"utilizată opțiunea B<--no-adjust>. Suportul pentru prefixul B<+> a fost "
-"adăugat în B<xz> 5.4.0."
+#: ../src/xz/xz.1
+msgid "The single-threaded and multi-threaded compressors produce different output. Single-threaded compressor will give the smallest file size but only the output from the multi-threaded compressor can be decompressed using multiple threads. Setting I<threads> to B<1> will use the single-threaded mode. Setting I<threads> to any other value, including B<0>, will use the multi-threaded compressor even if the system supports only one hardware thread. (B<xz> 5.2.x used single-threaded mode in this situation.)"
+msgstr "Operațiile de comprimare cu un singur fir de execuție și cele cu mai multe fire de execuție produc ieșiri diferite. Comprimarea cu un singur fir de execuție va oferi cea mai mică dimensiune a fișierului, dar numai ieșirea de la comprimarea cu mai multe fire de execuție poate fi decomprimată folosind mai multe fire. Stabilirea I<numărului> la B<1> va determina ca B<xz> să folosească modul cu un singur fir de execuție. Stabilirea I<numărului> la orice altă valoare, inclusiv B<0>, va determina ca B<xz> să folosească comprimarea cu mai multe fire de execuție chiar dacă sistemul acceptă doar un fir hardware; (B<xz> 5.2.x folosește modul cu un singur fir de execuție în această situație)."
#. type: Plain text
-#: ../src/xz/xz.1:1250
-msgid ""
-"If an automatic number of threads has been requested and no memory usage "
-"limit has been specified, then a system-specific default soft limit will be "
-"used to possibly limit the number of threads. It is a soft limit in sense "
-"that it is ignored if the number of threads becomes one, thus a soft limit "
-"will never stop B<xz> from compressing or decompressing. This default soft "
-"limit will not make B<xz> switch from multi-threaded mode to single-threaded "
-"mode. The active limits can be seen with B<xz --info-memory>."
-msgstr ""
-"Dacă a fost solicitat un număr automat de fire și nu a fost specificată "
-"nicio limită de utilizare a memoriei, atunci o limită „maleabilă” implicită "
-"specifică sistemului va fi utilizată pentru a limita eventual numărul de "
-"fire de execuție. Este o limită „maleabilă” în sensul că este ignorată dacă "
-"numărul de fire devine unul, astfel o limită „maleabilă” nu va opri "
-"niciodată B<xz> să comprime sau să decomprime. Această limită „maleabilă” "
-"implicită nu va face B<xz> să treacă de la modul cu mai multe fire de "
-"execuție la modul cu un singur fir de execuție. Limitele active pot fi "
-"văzute rulând comanda B<xz --info-memory>."
-
-#. type: Plain text
-#: ../src/xz/xz.1:1257
-msgid ""
-"Currently the only threading method is to split the input into blocks and "
-"compress them independently from each other. The default block size depends "
-"on the compression level and can be overridden with the B<--block-"
-"size=>I<size> option."
-msgstr ""
-"În prezent, singura metodă de procesare cu fire de execuție este împărțirea "
-"intrării în blocuri și comprimarea lor independent unul de celălalt. "
-"Dimensiunea implicită a blocului depinde de nivelul de comprimare și poate "
-"fi înlocuită cu opțiunea B<--block-size=>I<dimensiune>."
+#: ../src/xz/xz.1
+msgid "To use multi-threaded mode with only one thread, set I<threads> to B<+1>. The B<+> prefix has no effect with values other than B<1>. A memory usage limit can still make B<xz> switch to single-threaded mode unless B<--no-adjust> is used. Support for the B<+> prefix was added in B<xz> 5.4.0."
+msgstr "Pentru a utiliza modul cu mai multe fire de execuție cu un singur fir, stabiliți I<numărul> la B<+1>. Prefixul B<+> nu are efect cu alte valori decât B<1>. O limită de utilizare a memoriei poate face în continuare B<xz> să treacă în modul cu un singur fir, cu excepția cazului în care este utilizată opțiunea B<--no-adjust>. Suportul pentru prefixul B<+> a fost adăugat în B<xz> 5.4.0."
#. type: Plain text
-#: ../src/xz/xz.1:1265
-msgid ""
-"Threaded decompression only works on files that contain multiple blocks with "
-"size information in block headers. All large enough files compressed in "
-"multi-threaded mode meet this condition, but files compressed in single-"
-"threaded mode don't even if B<--block-size=>I<size> has been used."
-msgstr ""
-"Decomprimarea cu fire de execuție funcționează numai pe fișierele care "
-"conțin mai multe blocuri cu informații despre dimensiune în antetele "
-"blocurilor. Toate fișierele suficient de mari comprimate în modul cu mai "
-"multe fire de execuție îndeplinesc această condiție, dar fișierele "
-"comprimate în modul cu un singur fir de execuție nu o îndeplinesc chiar dacă "
-"a fost folosită opțiunea B<--block-size=>I<dimensiune>."
+#: ../src/xz/xz.1
+msgid "If an automatic number of threads has been requested and no memory usage limit has been specified, then a system-specific default soft limit will be used to possibly limit the number of threads. It is a soft limit in sense that it is ignored if the number of threads becomes one, thus a soft limit will never stop B<xz> from compressing or decompressing. This default soft limit will not make B<xz> switch from multi-threaded mode to single-threaded mode. The active limits can be seen with B<xz --info-memory>."
+msgstr "Dacă a fost solicitat un număr automat de fire și nu a fost specificată nicio limită de utilizare a memoriei, atunci o limită „maleabilă” implicită specifică sistemului va fi utilizată pentru a limita eventual numărul de fire de execuție. Este o limită „maleabilă” în sensul că este ignorată dacă numărul de fire devine unul, astfel o limită „maleabilă” nu va opri niciodată B<xz> să comprime sau să decomprime. Această limită „maleabilă” implicită nu va face B<xz> să treacă de la modul cu mai multe fire de execuție la modul cu un singur fir de execuție. Limitele active pot fi văzute rulând comanda B<xz --info-memory>."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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 "În prezent, singura metodă de procesare cu fire de execuție este împărțirea intrării în blocuri și comprimarea lor independent unul de celălalt. Dimensiunea implicită a blocului depinde de nivelul de comprimare și poate fi înlocuită cu opțiunea B<--block-size=>I<dimensiune>."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Threaded decompression only works on files that contain multiple blocks with size information in block headers. All large enough files compressed in multi-threaded mode meet this condition, but files compressed in single-threaded mode don't even if B<--block-size=>I<size> has been used."
+msgstr "Decomprimarea cu fire de execuție funcționează numai pe fișierele care conțin mai multe blocuri cu informații despre dimensiune în antetele blocurilor. Toate fișierele suficient de mari comprimate în modul cu mai multe fire de execuție îndeplinesc această condiție, dar fișierele comprimate în modul cu un singur fir de execuție nu o îndeplinesc chiar dacă a fost folosită opțiunea B<--block-size=>I<dimensiune>."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The default value for I<threads> is B<0>. In B<xz> 5.4.x and older the default is B<1>."
+msgstr "Valoarea implicită pentru I<fire de execuție> este B<0>. În B<xz> 5.4.x și mai vechi, valoarea implicită este B<1>."
#. type: SS
-#: ../src/xz/xz.1:1266 ../src/xz/xz.1:2819
+#: ../src/xz/xz.1
#, no-wrap
msgid "Custom compressor filter chains"
msgstr "Lanțuri de filtrare personalizate pentru instrumentul de comprimare"
#. type: Plain text
-#: ../src/xz/xz.1:1282
-msgid ""
-"A custom filter chain allows specifying the compression settings in detail "
-"instead of relying on the settings associated to the presets. When a custom "
-"filter chain is specified, preset options (B<-0> \\&...\\& B<-9> and B<--"
-"extreme>) earlier on the command line are forgotten. If a preset option is "
-"specified after one or more custom filter chain options, the new preset "
-"takes effect and the custom filter chain options specified earlier are "
-"forgotten."
-msgstr ""
-"Un lanț de filtrare personalizat permite specificarea parametrilor de "
-"comprimare în detaliu, în loc să se bazeze pe cei asociați opțiunilor "
-"prestabilite. Când este specificat un lanț de filtrare personalizat, "
-"opțiunile prestabilite (B<-0> \\&...\\& B<-9> și B<--extreme>) de mai "
-"devreme din linia de comandă sunt uitate. Dacă o opțiune prestabilită este "
-"specificată după una sau mai multe opțiuni de lanț de filtrare personalizat, "
-"noua prestabilire intră în vigoare și opțiunile lanțului de filtrare "
-"personalizat, specificate mai devreme sunt uitate."
+#: ../src/xz/xz.1
+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 "Un lanț de filtrare personalizat permite specificarea parametrilor de comprimare în detaliu, în loc să se bazeze pe cei asociați opțiunilor prestabilite. Când este specificat un lanț de filtrare personalizat, opțiunile prestabilite (B<-0> \\&...\\& B<-9> și B<--extreme>) de mai devreme din linia de comandă sunt uitate. Dacă o opțiune prestabilită este specificată după una sau mai multe opțiuni de lanț de filtrare personalizat, noua prestabilire intră în vigoare și opțiunile lanțului de filtrare personalizat, specificate mai devreme sunt uitate."
#. type: Plain text
-#: ../src/xz/xz.1:1289
-msgid ""
-"A filter chain is comparable to piping on the command line. When "
-"compressing, the uncompressed input goes to the first filter, whose output "
-"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 ""
-"Un lanț de filtrare este comparabil cu conductele din linia de comandă. La "
-"comprimare, intrarea necomprimată merge la primul filtru, a cărui ieșire "
-"merge la următorul filtru (dacă există). Ieșirea ultimului filtru este "
-"scrisă în fișierul comprimat. Numărul maxim de filtre din lanț este de "
-"patru, dar de obicei un lanț de filtrare are doar unul sau două filtre."
+#: ../src/xz/xz.1
+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 "Un lanț de filtrare este comparabil cu conductele din linia de comandă. La comprimare, intrarea necomprimată merge la primul filtru, a cărui ieșire merge la următorul filtru (dacă există). Ieșirea ultimului filtru este scrisă în fișierul comprimat. Numărul maxim de filtre din lanț este de patru, dar de obicei un lanț de filtrare are doar unul sau două filtre."
#. type: Plain text
-#: ../src/xz/xz.1:1297
-msgid ""
-"Many filters have limitations on where they can be in the filter chain: some "
-"filters can work only as the last filter in the chain, some only as a non-"
-"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 ""
-"Multe filtre au limitări în ceea ce privește locul în care se pot afla în "
-"lanțul de filtrare: unele filtre pot funcționa doar ca ultimul filtru din "
-"lanț, altele doar ca non-ultim filtru și unele funcționează în orice poziție "
-"din lanț. În funcție de filtru, această limitare este fie inerentă "
-"proiectării filtrului, fie există pentru a preveni problemele de securitate."
+#: ../src/xz/xz.1
+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 "Multe filtre au limitări în ceea ce privește locul în care se pot afla în lanțul de filtrare: unele filtre pot funcționa doar ca ultimul filtru din lanț, altele doar ca non-ultim filtru și unele funcționează în orice poziție din lanț. În funcție de filtru, această limitare este fie inerentă proiectării filtrului, fie există pentru a preveni problemele de securitate."
#. type: Plain text
-#: ../src/xz/xz.1:1305
-msgid ""
-"A custom filter chain is specified by using one or more filter options in "
-"the order they are wanted in the filter chain. That is, the order of filter "
-"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 ""
-"Un lanț de filtrare personalizat este specificat utilizând una sau mai multe "
-"opțiuni de filtrare în ordinea în care sunt cerute în lanțul de filtrare. "
-"Adică, ordinea opțiunilor de filtrare este semnificativă! La decodificarea "
-"fluxurilor brute (B<--format=raw>), lanțul de filtrare este specificat în "
-"aceeași ordine în care a fost specificat la comprimare."
+#: ../src/xz/xz.1
+msgid "A custom filter chain can be specified in two different ways. The options B<--filters=>I<filters> and B<--filters1=>I<filters> \\&...\\& B<--filters9=>I<filters> allow specifying an entire filter chain in one option using the liblzma filter string syntax. Alternatively, a filter chain can be specified by using one or more individual filter options in the order they are wanted in the filter chain. That is, the order of the individual filter options is significant! When decoding raw streams (B<--format=raw>), the filter chain must be specified in the same order as it was specified when compressing. Any individual filter or preset options specified before the full chain option (B<--filters=>I<filters>) will be forgotten. Individual filters specified after the full chain option will reset the filter chain."
+msgstr "Un lanț de filtre personalizat poate fi specificat în două moduri diferite. Opțiunile B<--filters=>I<filtre> și B<--filters1=>I<filtre> \\&...\\& B<--filters9=>I<filtre> permit specificarea unui întreg lanț de filtre într-o singură opțiune, folosind sintaxa șirului de filtre liblzma. Alternativ, un lanț de filtre poate fi specificat prin utilizarea uneia sau mai multor opțiuni de filtrare individuale în ordinea în care sunt dorite în lanțul de filtre. Adică, ordinea opțiunilor de filtrare individuale este semnificativă! La decodificarea fluxurilor brute (B<--format=raw>), lanțul de filtre trebuie să fie specificat în aceeași ordine în care a fost specificat la comprimare. Orice filtru individual sau opțiuni presetate specificate înainte de opțiunea de lanț complet (B<--filters=>I<filtre>) vor fi uitate. Filtrele individuale specificate după opțiunea „lanț complet” vor reinițializa lanțul de filtre."
#. type: Plain text
-#: ../src/xz/xz.1:1314
-msgid ""
-"Filters take filter-specific I<options> as a comma-separated list. Extra "
-"commas in I<options> are ignored. Every option has a default value, so you "
-"need to specify only those you want to change."
-msgstr ""
-"Filtrele iau I<opțiuni> specifice filtrului ca o listă separată prin "
-"virgule. Virgulele suplimentare din I<opțiuni> sunt ignorate. Fiecare "
-"opțiune are o valoare implicită, așa că trebuie să specificați numai cele pe "
-"care doriți să le modificați."
+#: ../src/xz/xz.1
+msgid "Both the full and individual filter options take filter-specific I<options> as a comma-separated list. Extra commas in I<options> are ignored. Every option has a default value, so specify those you want to change."
+msgstr "Atât opțiunile de filtrare completă, cât și cele de filtrare individuală acceptă I<opțiuni> specifice filtrului sub forma unei liste separate prin virgule. Se ignoră virgulele suplimentare din I<opțiuni>. Fiecare opțiune are o valoare implicită, deci specificați-le pe cele pe care doriți să le modificați."
#. type: Plain text
-#: ../src/xz/xz.1:1323
-msgid ""
-"To see the whole filter chain and I<options>, use B<xz -vv> (that is, use "
-"B<--verbose> twice). This works also for viewing the filter chain options "
-"used by presets."
-msgstr ""
-"Pentru a vedea întregul lanț de filtre și I<opțiuni>, utilizați B<xz -vv> "
-"(adică folosiți B<--verbose> de două ori). Acest lucru funcționează și "
-"pentru vizualizarea opțiunilor lanțului de filtre utilizate de valorile "
-"prestabilite."
+#: ../src/xz/xz.1
+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 "Pentru a vedea întregul lanț de filtre și I<opțiuni>, utilizați B<xz -vv> (adică folosiți B<--verbose> de două ori). Acest lucru funcționează și pentru vizualizarea opțiunilor lanțului de filtre utilizate de valorile prestabilite."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "B<--filters=>I<filters>"
+msgstr "B<--filters=>I<filtre>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Specify the full filter chain or a preset in a single option. Each filter can be separated by spaces or two dashes (B<-->). I<filters> may need to be quoted on the shell command line so it is parsed as a single option. To denote I<options>, use B<:> or B<=>. A preset can be prefixed with a B<-> and followed with zero or more flags. The only supported flag is B<e> to apply the same options as B<--extreme>."
+msgstr "Specificați întregul lanț de filtre sau o presetare într-o singură opțiune. Fiecare filtru poate fi separat prin spații sau două liniuțe (B<-->). Este posibil să fie necesar ca I<filtrele> să fie puse între ghilimele în linia de comandă a shell-ului pentru a fi analizate ca o singură opțiune. Pentru a indica I<opțiuni>, utilizați B<:> sau B<=>. O presetare poate fi prefixată cu un B<-> și urmată de zero sau mai multe indicatoare. Singurul indicator suportat este B<e> pentru a aplica aceleași opțiuni ca și B<--extreme>."
#. type: TP
-#: ../src/xz/xz.1:1323
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "B<--filters1>=I<filters> ... B<--filters9>=I<filters>"
+msgstr "B<--filters1>=I<filtre> ... B<--filters9>=I<filtre>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Specify up to nine additional filter chains that can be used with B<--block-list>."
+msgstr "Specifică până la nouă lanțuri de filtre suplimentare care pot fi utilizate cu B<--block-list>."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "For example, when compressing an archive with executable files followed by text files, the executable part could use a filter chain with a BCJ filter and the text part only the LZMA2 filter."
+msgstr "De exemplu, atunci când se comprimă o arhivă cu fișiere executabile urmate de fișiere text, partea executabilă ar putea utiliza un lanț de filtre cu un filtru BCJ, iar partea de text doar filtrul LZMA2."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "B<--filters-help>"
+msgstr "B<--filters-help>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Display a help message describing how to specify presets and custom filter chains in the B<--filters> and B<--filters1=>I<filters> \\&...\\& B<--filters9=>I<filters> options, and exit successfully."
+msgstr "Afișează un mesaj de ajutor care descrie modul de specificare a presetărilor și a lanțurilor de filtre personalizate în opțiunile B<--filters> și B<--filters1=>I<filtre> \\&...\\& B<--filters9=>I<filtre> și iese."
+
+#. type: TP
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--lzma1>[B<=>I<options>]"
msgstr "B<--lzma1>[B<=>I<opțiuni>]"
#. type: TP
-#: ../src/xz/xz.1:1326
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--lzma2>[B<=>I<options>]"
msgstr "B<--lzma2>[B<=>I<opțiuni>]"
#. type: Plain text
-#: ../src/xz/xz.1:1331
-msgid ""
-"Add LZMA1 or LZMA2 filter to the filter chain. These filters can be used "
-"only as the last filter in the chain."
-msgstr ""
-"Adaugă filtrul LZMA1 sau LZMA2 la lanțul de filtre. Aceste filtre pot fi "
-"folosite doar ca ultimul filtru din lanț."
+#: ../src/xz/xz.1
+msgid "Add LZMA1 or LZMA2 filter to the filter chain. These filters can be used only as the last filter in the chain."
+msgstr "Adaugă filtrul LZMA1 sau LZMA2 la lanțul de filtre. Aceste filtre pot fi folosite doar ca ultimul filtru din lanț."
#. type: Plain text
-#: ../src/xz/xz.1:1343
-msgid ""
-"LZMA1 is a legacy filter, which is supported almost solely due to the legacy "
-"B<.lzma> file format, which supports only LZMA1. LZMA2 is an updated "
-"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 este un filtru vechi, care este acceptat aproape exclusiv datorită "
-"formatului de fișier vechi B<.lzma>, care acceptă numai LZMA1. LZMA2 este o "
-"versiune actualizată a LZMA1 pentru a rezolva unele probleme practice ale "
-"LZMA1. Formatul B<.xz> folosește LZMA2 și nu acceptă deloc LZMA1. Viteza "
-"de comprimare și rapoartele LZMA1 și LZMA2 sunt practic aceleași."
+#: ../src/xz/xz.1
+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 este un filtru vechi, care este acceptat aproape exclusiv datorită formatului de fișier vechi B<.lzma>, care acceptă numai LZMA1. LZMA2 este o versiune actualizată a LZMA1 pentru a rezolva unele probleme practice ale LZMA1. Formatul B<.xz> folosește LZMA2 și nu acceptă deloc LZMA1. Viteza de comprimare și rapoartele LZMA1 și LZMA2 sunt practic aceleași."
#. type: Plain text
-#: ../src/xz/xz.1:1346
+#: ../src/xz/xz.1
msgid "LZMA1 and LZMA2 share the same set of I<options>:"
msgstr "LZMA1 și LZMA2 au același set de I<opțiuni>:"
#. type: TP
-#: ../src/xz/xz.1:1347
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<preset=>I<preset>"
msgstr "B<preset=>I<prestabilit>"
#. type: Plain text
-#: ../src/xz/xz.1:1374
-msgid ""
-"Reset all LZMA1 or LZMA2 I<options> to I<preset>. I<Preset> consist of an "
-"integer, which may be followed by single-letter preset modifiers. The "
-"integer can be from B<0> to B<9>, matching the command line options B<-0> "
-"\\&...\\& B<-9>. The only supported modifier is currently B<e>, which "
-"matches B<--extreme>. If no B<preset> is specified, the default values of "
-"LZMA1 or LZMA2 I<options> are taken from the preset B<6>."
-msgstr ""
-"Reconfigurează toate I<opțiunile> LZMA1 sau LZMA2 la I<prestabilit>. "
-"I<Prestabilit> constă dintr-un număr întreg, care poate fi urmat de "
-"modificatori prestabiliți cu o singură literă. Numărul întreg poate fi de "
-"la B<0> la B<9>, potrivindu-se cu opțiunile liniei de comandă B<-0> \\&..."
-"\\& B<-9>. Singurul modificator acceptat în prezent este B<e>, care se "
-"potrivește cu B<--extreme>. Dacă nu este specificat B<prestabilit>, "
-"valorile implicite ale I<opțiunilor> LZMA1 sau LZMA2 sunt preluate din "
-"prestabilirea B<6>."
+#: ../src/xz/xz.1
+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 "Reconfigurează toate I<opțiunile> LZMA1 sau LZMA2 la I<prestabilit>. I<prestabilit> constă dintr-un număr întreg, care poate fi urmat de modificatori prestabiliți cu o singură literă. Numărul întreg poate fi de la B<0> la B<9>, potrivindu-se cu opțiunile liniei de comandă B<-0> \\&...\\& B<-9>. Singurul modificator acceptat în prezent este B<e>, care se potrivește cu B<--extreme>. Dacă nu este specificat B<prestabilit>, valorile implicite ale I<opțiunilor> LZMA1 sau LZMA2 sunt preluate din prestabilirea B<6>."
#. type: TP
-#: ../src/xz/xz.1:1374
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<dict=>I<size>"
msgstr "B<dict=>I<dimensiunea>"
#. type: Plain text
-#: ../src/xz/xz.1:1389
-msgid ""
-"Dictionary (history buffer) I<size> indicates how many bytes of the "
-"recently processed uncompressed data is kept in memory. The algorithm tries "
-"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 ""
-"I<Dimensiunea> dicționarului (istoricul memoriei tampon) indică câți octeți "
-"din datele necomprimate recent procesate sunt păstrați în memorie. "
-"Algoritmul încearcă să găsească secvențe de octeți care se repetă "
-"(potriviri) în datele necomprimate și să le înlocuiască cu referințe la "
-"datele aflate în prezent în dicționar. Cu cât dicționarul este mai mare, cu "
-"atât este mai mare șansa de a găsi o potrivire. Astfel, creșterea "
-"I<dimensiunii> dicționarului îmbunătățește de obicei raportul de comprimare, "
-"dar un dicționar mai mare decât fișierul necomprimat este risipă de memorie."
+#: ../src/xz/xz.1
+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 "I<Dimensiunea> dicționarului (istoricul memoriei tampon) indică câți octeți din datele necomprimate recent procesate sunt păstrați în memorie. Algoritmul încearcă să găsească secvențe de octeți care se repetă (potriviri) în datele necomprimate și să le înlocuiască cu referințe la datele aflate în prezent în dicționar. Cu cât dicționarul este mai mare, cu atât este mai mare șansa de a găsi o potrivire. Astfel, creșterea I<dimensiunii> dicționarului îmbunătățește de obicei raportul de comprimare, dar un dicționar mai mare decât fișierul necomprimat este risipă de memorie."
#. type: Plain text
-#: ../src/xz/xz.1:1398
-msgid ""
-"Typical dictionary I<size> is from 64\\ KiB to 64\\ MiB. The minimum is 4\\ "
-"KiB. The maximum for compression is currently 1.5\\ GiB (1536\\ MiB). The "
-"decompressor already supports dictionaries up to one byte less than 4\\ GiB, "
-"which is the maximum for the LZMA1 and LZMA2 stream formats."
-msgstr ""
-"I<Dimensiunea>tipică a dicționarului este de la 64Kio până la 64Mio. "
-"Minimul este de 4Kio. Maximul pentru compresie este în prezent de 1,5Gio "
-"(1536Mio). Decomprimarea acceptă deja dicționare cu până la un octet mai "
-"puțin de 4Gio, care este maximul pentru formatele de flux LZMA1 și LZMA2."
+#: ../src/xz/xz.1
+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 "I<Dimensiunea>tipică a dicționarului este de la 64Kio până la 64Mio. Minimul este de 4Kio. Maximul pentru compresie este în prezent de 1,5Gio (1536Mio). Decomprimarea acceptă deja dicționare cu până la un octet mai puțin de 4Gio, care este maximul pentru formatele de flux LZMA1 și LZMA2."
#. type: Plain text
-#: ../src/xz/xz.1:1425
-msgid ""
-"Dictionary I<size> and match finder (I<mf>) together determine the memory "
-"usage of the LZMA1 or LZMA2 encoder. The same (or bigger) dictionary "
-"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 ""
-"I<Dimensiunea> dicționarului și găsitorul de potriviri (match finder) → "
-"(I<mf>) determină împreună utilizarea memoriei de către codificatorul LZMA1 "
-"sau LZMA2. Aceeași I<dimensiune> a dicționarului (sau mai mare) care a fost "
-"utilizată la comprimare, este necesară pentru decomprimare, astfel încât "
-"utilizarea memoriei de către decodificator este determinată de dimensiunea "
-"dicționarului utilizată la comprimare. Antetele B<.xz> stochează "
-"I<dimensiunea> dicționarului fie ca 2^I<n>, fie ca 2^I<n> + 2^(I<n>-1), deci "
-"aceste I<dimensiuni> sunt oarecum preferate pentru comprimare. Alte "
-"I<dimensiuni> vor fi rotunjite atunci când sunt stocate în anteturile B<.xz>."
+#: ../src/xz/xz.1
+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 "I<Dimensiunea> dicționarului și găsitorul de potriviri (match finder) → (I<mf>) determină împreună utilizarea memoriei de către codificatorul LZMA1 sau LZMA2. Aceeași I<dimensiune> a dicționarului (sau mai mare) care a fost utilizată la comprimare, este necesară pentru decomprimare, astfel încât utilizarea memoriei de către decodificator este determinată de dimensiunea dicționarului utilizată la comprimare. Antetele B<.xz> stochează I<dimensiunea> dicționarului fie ca 2^I<n>, fie ca 2^I<n> + 2^(I<n>-1), deci aceste I<dimensiuni> sunt oarecum preferate pentru comprimare. Alte I<dimensiuni> vor fi rotunjite atunci când sunt stocate în anteturile B<.xz>."
#. type: TP
-#: ../src/xz/xz.1:1425
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lc=>I<lc>"
msgstr "B<lc=>I<lc>"
#. type: Plain text
-#: ../src/xz/xz.1:1434
-msgid ""
-"Specify the number of literal context bits. The minimum is 0 and the "
-"maximum is 4; the default is 3. In addition, the sum of I<lc> and I<lp> "
-"must not exceed 4."
-msgstr ""
-"Specifică numărul de biți de context literal. Minimul este 0 și maximul "
-"este 4; implicit este 3. În plus, suma I<lc> și I<lp> nu trebuie să "
-"depășească 4."
+#: ../src/xz/xz.1
+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 "Specifică numărul de biți de context literal. Minimul este 0 și maximul este 4; implicit este 3. În plus, suma I<lc> și I<lp> nu trebuie să depășească 4."
#. type: Plain text
-#: ../src/xz/xz.1:1439
-msgid ""
-"All bytes that cannot be encoded as matches are encoded as literals. That "
-"is, literals are simply 8-bit bytes that are encoded one at a time."
-msgstr ""
-"Toți octeții care nu pot fi codificați ca potriviri sunt codificați ca "
-"literali. Adică, literalii sunt pur și simplu octeți de 8 biți care sunt "
-"codificați unul câte unul."
+#: ../src/xz/xz.1
+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 "Toți octeții care nu pot fi codificați ca potriviri sunt codificați ca literali. Adică, literalii sunt pur și simplu octeți de 8 biți care sunt codificați unul câte unul."
#. type: Plain text
-#: ../src/xz/xz.1:1453
-msgid ""
-"The literal coding makes an assumption that the highest I<lc> bits of the "
-"previous uncompressed byte correlate with the next byte. For example, in "
-"typical English text, an upper-case letter is often followed by a lower-case "
-"letter, and a lower-case letter is usually followed by another lower-case "
-"letter. In the US-ASCII character set, the highest three bits are 010 for "
-"upper-case letters and 011 for lower-case letters. When I<lc> is at least "
-"3, the literal coding can take advantage of this property in the "
-"uncompressed data."
-msgstr ""
-"Codificarea literală presupune că cei mai mari biți I<lc> ai octetului "
-"anterior necomprimat se corelează cu octetul următor. De exemplu, în textul "
-"tipic englezesc, o literă mare este adesea urmată de o literă mică, iar o "
-"literă mică este urmată de obicei de o altă literă mică. În setul de "
-"caractere US-ASCII, cei mai mari trei biți sunt 010 pentru literele mari și "
-"011 pentru literele mici. Când I<lc> este cel puțin 3, codificarea literală "
-"poate profita de această proprietate în datele necomprimate."
+#: ../src/xz/xz.1
+msgid "The literal coding makes an assumption that the highest I<lc> bits of the previous uncompressed byte correlate with the next byte. For example, in typical English text, an upper-case letter is often followed by a lower-case letter, and a lower-case letter is usually followed by another lower-case letter. In the US-ASCII character set, the highest three bits are 010 for upper-case letters and 011 for lower-case letters. When I<lc> is at least 3, the literal coding can take advantage of this property in the uncompressed data."
+msgstr "Codificarea literală presupune că cei mai mari biți I<lc> ai octetului anterior necomprimat se corelează cu octetul următor. De exemplu, în textul tipic englezesc, o literă mare este adesea urmată de o literă mică, iar o literă mică este urmată de obicei de o altă literă mică. În setul de caractere US-ASCII, cei mai mari trei biți sunt 010 pentru literele mari și 011 pentru literele mici. Când I<lc> este cel puțin 3, codificarea literală poate profita de această proprietate în datele necomprimate."
#. type: Plain text
-#: ../src/xz/xz.1:1462
-msgid ""
-"The default value (3) is usually good. If you want maximum compression, "
-"test B<lc=4>. Sometimes it helps a little, and sometimes it makes "
-"compression worse. If it makes it worse, test B<lc=2> too."
-msgstr ""
-"Valoarea implicită (3) este de obicei bună. Dacă doriți o comprimare "
-"maximă, testați B<lc=4>. Uneori ajută puțin, iar uneori înrăutățește "
-"comprimarea . Dacă o agravează, încercați de-asemeni cu B<lc=2>."
+#: ../src/xz/xz.1
+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 B<lc=2> too."
+msgstr "Valoarea implicită (3) este de obicei bună. Dacă doriți o comprimare maximă, testați B<lc=4>. Uneori ajută puțin, iar uneori înrăutățește comprimarea . Dacă o agravează, încercați de-asemeni cu B<lc=2>."
#. type: TP
-#: ../src/xz/xz.1:1462
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lp=>I<lp>"
msgstr "B<lp=>I<lp>"
#. type: Plain text
-#: ../src/xz/xz.1:1466
-msgid ""
-"Specify the number of literal position bits. The minimum is 0 and the "
-"maximum is 4; the default is 0."
-msgstr ""
-"Specifică numărul de biți de poziție literală. Minimul este 0 și maximul "
-"este 4; implicit este 0."
+#: ../src/xz/xz.1
+msgid "Specify the number of literal position bits. The minimum is 0 and the maximum is 4; the default is 0."
+msgstr "Specifică numărul de biți de poziție literală. Minimul este 0 și maximul este 4; implicit este 0."
#. type: Plain text
-#: ../src/xz/xz.1:1473
-msgid ""
-"I<Lp> affects what kind of alignment in the uncompressed data is assumed "
-"when encoding literals. See I<pb> below for more information about "
-"alignment."
-msgstr ""
-"I<Lp> afectează ce fel de aliniere în datele necomprimate este presupusă la "
-"codificarea literalelor. Consultați argumentul I<pb> de mai jos pentru mai "
-"multe informații despre aliniere."
+#: ../src/xz/xz.1
+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> afectează ce fel de aliniere în datele necomprimate este presupusă la codificarea literalelor. Consultați argumentul I<pb> de mai jos pentru mai multe informații despre aliniere."
#. type: TP
-#: ../src/xz/xz.1:1473
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<pb=>I<pb>"
msgstr "B<pb=>I<pb>"
#. type: Plain text
-#: ../src/xz/xz.1:1477
-msgid ""
-"Specify the number of position bits. The minimum is 0 and the maximum is 4; "
-"the default is 2."
-msgstr ""
-"Specifică numărul de biți de poziție. Minimul este 0 și maximul este 4; "
-"implicit este 2."
+#: ../src/xz/xz.1
+msgid "Specify the number of position bits. The minimum is 0 and the maximum is 4; the default is 2."
+msgstr "Specifică numărul de biți de poziție. Minimul este 0 și maximul este 4; implicit este 2."
#. type: Plain text
-#: ../src/xz/xz.1:1484
-msgid ""
-"I<Pb> affects what kind of alignment in the uncompressed data is assumed in "
-"general. The default means four-byte alignment (2^I<pb>=2^2=4), which is "
-"often a good choice when there's no better guess."
-msgstr ""
-"I<Pb> afectează ce fel de aliniere în datele necomprimate este presupusă în "
-"general. Valoarea implicită înseamnă alinierea pe patru octeți "
-"(2^I<pb>=2^2=4), care este adesea o alegere bună atunci când nu există o "
-"ipoteză mai bună."
+#: ../src/xz/xz.1
+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> afectează ce fel de aliniere în datele necomprimate este presupusă în general. Valoarea implicită înseamnă alinierea pe patru octeți (2^I<pb>=2^2=4), care este adesea o alegere bună atunci când nu există o ipoteză mai bună."
#. type: Plain text
-#: ../src/xz/xz.1:1498
-msgid ""
-"When the alignment is known, setting I<pb> accordingly may reduce the file "
-"size a little. For example, with text files having one-byte alignment (US-"
-"ASCII, ISO-8859-*, UTF-8), setting B<pb=0> can improve compression "
-"slightly. For UTF-16 text, B<pb=1> is a good choice. If the alignment is "
-"an odd number like 3 bytes, B<pb=0> might be the best choice."
-msgstr ""
-"Când alinierea este cunoscută, definirea lui I<pb> în mod corespunzător "
-"poate reduce puțin dimensiunea fișierului. De exemplu, cu fișierele text cu "
-"aliniere pe un octet (US-ASCII, ISO-8859-*, UTF-8), definirea B<pb=0> poate "
-"îmbunătăți ușor comprimarea. Pentru textul UTF-16, B<pb=1> este o alegere "
-"bună. Dacă alinierea este un număr impar, cum ar fi 3 octeți, B<pb=0> ar "
-"putea fi cea mai bună alegere."
+#: ../src/xz/xz.1
+msgid "When the alignment is known, setting I<pb> accordingly may reduce the file size a little. For example, with text files having one-byte alignment (US-ASCII, ISO-8859-*, UTF-8), setting B<pb=0> can improve compression slightly. For UTF-16 text, B<pb=1> is a good choice. If the alignment is an odd number like 3 bytes, B<pb=0> might be the best choice."
+msgstr "Când alinierea este cunoscută, definirea lui I<pb> în mod corespunzător poate reduce puțin dimensiunea fișierului. De exemplu, cu fișierele text cu aliniere pe un octet (US-ASCII, ISO-8859-*, UTF-8), definirea B<pb=0> poate îmbunătăți ușor comprimarea. Pentru textul UTF-16, B<pb=1> este o alegere bună. Dacă alinierea este un număr impar, cum ar fi 3 octeți, B<pb=0> ar putea fi cea mai bună alegere."
#. type: Plain text
-#: ../src/xz/xz.1:1506
-msgid ""
-"Even though the assumed alignment can be adjusted with I<pb> and I<lp>, "
-"LZMA1 and LZMA2 still slightly favor 16-byte alignment. It might be worth "
-"taking into account when designing file formats that are likely to be often "
-"compressed with LZMA1 or LZMA2."
-msgstr ""
-"Chiar dacă alinierea presupusă poate fi ajustată cu I<pb> și I<lp>, LZMA1 și "
-"LZMA2 încă favorizează ușor alinierea pe 16 octeți. Ar putea fi demn de "
-"luat în considerare atunci când proiectați formate de fișiere care pot fi "
-"adesea comprimate cu LZMA1 sau LZMA2."
+#: ../src/xz/xz.1
+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 "Chiar dacă alinierea presupusă poate fi ajustată cu I<pb> și I<lp>, LZMA1 și LZMA2 încă favorizează ușor alinierea pe 16 octeți. Ar putea fi demn de luat în considerare atunci când proiectați formate de fișiere care pot fi adesea comprimate cu LZMA1 sau LZMA2."
#. type: TP
-#: ../src/xz/xz.1:1506
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<mf=>I<mf>"
msgstr "B<mf=>I<mf>"
#. type: Plain text
-#: ../src/xz/xz.1:1521
-msgid ""
-"Match finder has a major effect on encoder speed, memory usage, and "
-"compression ratio. Usually Hash Chain match finders are faster than Binary "
-"Tree match finders. The default depends on the I<preset>: 0 uses B<hc3>, "
-"1\\(en3 use B<hc4>, and the rest use B<bt4>."
-msgstr ""
-"Căutarea potrivirilor are un efect major asupra vitezei codificatorului, "
-"utilizării memoriei și raportului de comprimare. De obicei, găsitorii de "
-"potriviri din lanțul sumelor de control sunt mai rapizi decât găsitorii de "
-"potriviri din arborele binar. Valoarea implicită depinde de I<prestabilit>: "
-"0 folosește B<hc3>, 1\\(en3 folosește B<hc4>, iar restul folosește B<bt4>."
+#: ../src/xz/xz.1
+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\\(en3 use B<hc4>, and the rest use B<bt4>."
+msgstr "Căutarea potrivirilor are un efect major asupra vitezei codificatorului, utilizării memoriei și raportului de comprimare. De obicei, găsitorii de potriviri din lanțul sumelor de control sunt mai rapizi decât găsitorii de potriviri din arborele binar. Valoarea implicită depinde de I<prestabilit>: 0 folosește B<hc3>, 1\\(en3 folosește B<hc4>, iar restul folosește B<bt4>."
#. type: Plain text
-#: ../src/xz/xz.1:1527
-msgid ""
-"The following match finders are supported. The memory usage formulas below "
-"are rough approximations, which are closest to the reality when I<dict> is a "
-"power of two."
-msgstr ""
-"Sunt acceptate următoarele opțiuni de căutare de potriviri. Formulele de "
-"utilizare a memoriei de mai jos sunt aproximări estimative, care se apropie "
-"cel mai mult de realitate atunci când I<dict> este o putere a lui doi."
+#: ../src/xz/xz.1
+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 "Sunt acceptate următoarele opțiuni de căutare de potriviri. Formulele de utilizare a memoriei de mai jos sunt aproximări estimative, care se apropie cel mai mult de realitate atunci când I<dict> este o putere a lui doi."
#. type: TP
-#: ../src/xz/xz.1:1528
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<hc3>"
msgstr "B<hc3>"
#. type: Plain text
-#: ../src/xz/xz.1:1531
+#: ../src/xz/xz.1
msgid "Hash Chain with 2- and 3-byte hashing"
msgstr "Lanț de sumă de control, cu suma de control de 2 și 3 octeți"
#. type: Plain text
-#: ../src/xz/xz.1:1535 ../src/xz/xz.1:1584
+#: ../src/xz/xz.1
msgid "Minimum value for I<nice>: 3"
msgstr "Valoarea minimă pentru I<nice>: 3"
#. type: Plain text
-#: ../src/xz/xz.1:1537 ../src/xz/xz.1:1556 ../src/xz/xz.1:1586
-#: ../src/xz/xz.1:1605
+#: ../src/xz/xz.1
msgid "Memory usage:"
msgstr "Utilizarea memoriei:"
#. type: Plain text
-#: ../src/xz/xz.1:1542
+#: ../src/xz/xz.1
msgid "I<dict> * 7.5 (if I<dict> E<lt>= 16 MiB);"
msgstr "I<dict> * 7.5 (dacă I<dict> E<lt>= 16 Mio);"
#. type: Plain text
-#: ../src/xz/xz.1:1547
+#: ../src/xz/xz.1
msgid "I<dict> * 5.5 + 64 MiB (if I<dict> E<gt> 16 MiB)"
msgstr "I<dict> * 5.5 + 64 MiB (dacă I<dict> E<gt> 16 Mio)"
#. type: TP
-#: ../src/xz/xz.1:1547
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<hc4>"
msgstr "B<hc4>"
#. type: Plain text
-#: ../src/xz/xz.1:1550
+#: ../src/xz/xz.1
msgid "Hash Chain with 2-, 3-, and 4-byte hashing"
msgstr "Lanț de sumă de control, cu suma de control de 2, 3 și 4 octeți"
#. type: Plain text
-#: ../src/xz/xz.1:1554 ../src/xz/xz.1:1603
+#: ../src/xz/xz.1
msgid "Minimum value for I<nice>: 4"
msgstr "Valoarea minimă pentru I<nice>: 4"
#. type: Plain text
-#: ../src/xz/xz.1:1561
+#: ../src/xz/xz.1
msgid "I<dict> * 7.5 (if I<dict> E<lt>= 32 MiB);"
msgstr "I<dict> * 7.5 (dacă I<dict> E<lt>= 32 Mio);"
#. type: Plain text
-#: ../src/xz/xz.1:1566
+#: ../src/xz/xz.1
msgid "I<dict> * 6.5 (if I<dict> E<gt> 32 MiB)"
msgstr "I<dict> * 6.5 (dacă I<dict> E<gt> 32 Mio)"
#. type: TP
-#: ../src/xz/xz.1:1566
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<bt2>"
msgstr "B<bt2>"
#. type: Plain text
-#: ../src/xz/xz.1:1569
+#: ../src/xz/xz.1
msgid "Binary Tree with 2-byte hashing"
msgstr "Arbore binar cu suma de control de 2 octeți"
#. type: Plain text
-#: ../src/xz/xz.1:1573
+#: ../src/xz/xz.1
msgid "Minimum value for I<nice>: 2"
msgstr "Valoarea minimă pentru I<nice>: 2"
#. type: Plain text
-#: ../src/xz/xz.1:1577
+#: ../src/xz/xz.1
msgid "Memory usage: I<dict> * 9.5"
msgstr "Utilizarea memoriei: I<dict> * 9.5"
#. type: TP
-#: ../src/xz/xz.1:1577
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<bt3>"
msgstr "B<bt3>"
#. type: Plain text
-#: ../src/xz/xz.1:1580
+#: ../src/xz/xz.1
msgid "Binary Tree with 2- and 3-byte hashing"
msgstr "Arbore binar cu suma de control de 2 și 3 octeți"
#. type: Plain text
-#: ../src/xz/xz.1:1591
+#: ../src/xz/xz.1
msgid "I<dict> * 11.5 (if I<dict> E<lt>= 16 MiB);"
msgstr "I<dict> * 11.5 (dacă I<dict> E<lt>= 16 Mio);"
#. type: Plain text
-#: ../src/xz/xz.1:1596
+#: ../src/xz/xz.1
msgid "I<dict> * 9.5 + 64 MiB (if I<dict> E<gt> 16 MiB)"
msgstr "I<dict> * 9.5 + 64 MiB (dacă I<dict> E<gt> 16 Mio)"
#. type: TP
-#: ../src/xz/xz.1:1596
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<bt4>"
msgstr "B<bt4>"
#. type: Plain text
-#: ../src/xz/xz.1:1599
+#: ../src/xz/xz.1
msgid "Binary Tree with 2-, 3-, and 4-byte hashing"
msgstr "Arbore binar cu suma de control de 2, 3 și 4 octeți"
#. type: Plain text
-#: ../src/xz/xz.1:1610
+#: ../src/xz/xz.1
msgid "I<dict> * 11.5 (if I<dict> E<lt>= 32 MiB);"
msgstr "I<dict> * 11.5 (dacă I<dict> E<lt>= 32 Mio);"
#. type: Plain text
-#: ../src/xz/xz.1:1615
+#: ../src/xz/xz.1
msgid "I<dict> * 10.5 (if I<dict> E<gt> 32 MiB)"
msgstr "I<dict> * 10.5 (dacă I<dict> E<gt> 32 Mio)"
#. type: TP
-#: ../src/xz/xz.1:1616
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<mode=>I<mode>"
msgstr "B<mode=>I<mod>"
#. type: Plain text
-#: ../src/xz/xz.1:1637
-msgid ""
-"Compression I<mode> specifies the method to analyze the data produced by the "
-"match finder. Supported I<modes> are B<fast> and B<normal>. The default is "
-"B<fast> for I<presets> 0\\(en3 and B<normal> for I<presets> 4\\(en9."
-msgstr ""
-"Comprimarea I<mod> specifică metoda de analiză a datelor produse de "
-"găsitorul de potriviri. I<Modurile> acceptate sunt B<fast>(rapid) și "
-"B<normal>. Valoarea implicită este B<fast> pentru I<prestabiliri> 0\\(en3 "
-"și B<normal> pentru I<prestabiliri> 4\\(en9."
+#: ../src/xz/xz.1
+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\\(en3 and B<normal> for I<presets> 4\\(en9."
+msgstr "Comprimarea I<mod> specifică metoda de analiză a datelor produse de găsitorul de potriviri. I<Modurile> acceptate sunt B<fast>(rapid) și B<normal>. Valoarea implicită este B<fast> pentru I<prestabiliri> 0\\(en3 și B<normal> pentru I<prestabiliri> 4\\(en9."
#. type: Plain text
-#: ../src/xz/xz.1:1646
-msgid ""
-"Usually B<fast> is used with Hash Chain match finders and B<normal> with "
-"Binary Tree match finders. This is also what the I<presets> do."
-msgstr ""
-"De obicei, B<fast> este folosit cu instrumentele de căutare de potriviri ale "
-"lanțului de sume de control, și B<normal> cu instrumentele de căutare de "
-"potriviri din arborele binar. Aceasta este și ceea ce fac I<prestabiririle>."
+#: ../src/xz/xz.1
+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 "De obicei, B<fast> este folosit cu instrumentele de căutare de potriviri ale lanțului de sume de control, și B<normal> cu instrumentele de căutare de potriviri din arborele binar. Aceasta este și ceea ce fac I<prestabiririle>."
#. type: TP
-#: ../src/xz/xz.1:1646
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<nice=>I<nice>"
msgstr "B<nice=>I<nice>"
#. type: Plain text
-#: ../src/xz/xz.1:1653
-msgid ""
-"Specify what is considered to be a nice length for a match. Once a match of "
-"at least I<nice> bytes is found, the algorithm stops looking for possibly "
-"better matches."
-msgstr ""
-"Specifică ceea ce este considerat a fi o lungime bună(nice) pentru o "
-"potrivire. Odată ce este găsită o potrivire de cel puțin I<nice> octeți, "
-"algoritmul nu mai caută după potriviri posibile mai bune."
+#: ../src/xz/xz.1
+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 "Specifică ceea ce este considerat a fi o lungime bună(nice) pentru o potrivire. Odată ce este găsită o potrivire de cel puțin I<nice> octeți, algoritmul nu mai caută după potriviri posibile mai bune."
#. type: Plain text
-#: ../src/xz/xz.1:1660
-msgid ""
-"I<Nice> can be 2\\(en273 bytes. Higher values tend to give better "
-"compression ratio at the expense of speed. The default depends on the "
-"I<preset>."
-msgstr ""
-"I<Nice> poate fi de 2\\(en273 octeți. Valorile mai mari tind să ofere un "
-"raport de comprimare mai bun în detrimentul vitezei. Valoarea implicită "
-"depinde de I<prestabilit>."
+#: ../src/xz/xz.1
+msgid "I<Nice> can be 2\\(en273 bytes. Higher values tend to give better compression ratio at the expense of speed. The default depends on the I<preset>."
+msgstr "I<Nice> poate fi de 2\\(en273 octeți. Valorile mai mari tind să ofere un raport de comprimare mai bun în detrimentul vitezei. Valoarea implicită depinde de I<prestabilit>."
#. type: TP
-#: ../src/xz/xz.1:1660
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<depth=>I<depth>"
msgstr "B<depth=>I<adâncimea>"
#. type: Plain text
-#: ../src/xz/xz.1:1670
-msgid ""
-"Specify the maximum search depth in the match finder. The default is the "
-"special value of 0, which makes the compressor determine a reasonable "
-"I<depth> from I<mf> and I<nice>."
-msgstr ""
-"Specifică adâncimea maximă de căutare în găsitorul de potriviri. Valoarea "
-"implicită este valoarea specială de 0, ceea ce face ca instrumentul de "
-"comprimare să determine o I<adâncime> rezonabilă pornind de la valorile "
-"I<mf> și I<nice>."
+#: ../src/xz/xz.1
+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 "Specifică adâncimea maximă de căutare în găsitorul de potriviri. Valoarea implicită este valoarea specială de 0, ceea ce face ca instrumentul de comprimare să determine o I<adâncime> rezonabilă pornind de la valorile I<mf> și I<nice>."
#. type: Plain text
-#: ../src/xz/xz.1:1681
-msgid ""
-"Reasonable I<depth> for Hash Chains is 4\\(en100 and 16\\(en1000 for Binary "
-"Trees. Using very high values for I<depth> can make the encoder extremely "
-"slow with some files. Avoid setting the I<depth> over 1000 unless you are "
-"prepared to interrupt the compression in case it is taking far too long."
-msgstr ""
-"I<Adâncimea> rezonabilă pentru lanțuri de sumă de control este 4\\(en100 și "
-"16\\(en1000 pentru arbori binari. Folosirea unor valori foarte mari pentru "
-"I<adâncime> poate face codificatorul extrem de lent cu unele fișiere. "
-"Evitați să stabiliți I<adâncimea> la valori peste 1000, cu excepția cazului "
-"în care sunteți pregătit să întrerupeți comprimarea în cazul în care durează "
-"prea mult."
+#: ../src/xz/xz.1
+msgid "Reasonable I<depth> for Hash Chains is 4\\(en100 and 16\\(en1000 for Binary Trees. Using very high values for I<depth> can make the encoder extremely slow with some files. Avoid setting the I<depth> over 1000 unless you are prepared to interrupt the compression in case it is taking far too long."
+msgstr "I<Adâncimea> rezonabilă pentru lanțuri de sumă de control este 4\\(en100 și 16\\(en1000 pentru arbori binari. Folosirea unor valori foarte mari pentru I<adâncime> poate face codificatorul extrem de lent cu unele fișiere. Evitați să stabiliți I<adâncimea> la valori peste 1000, cu excepția cazului în care sunteți pregătit să întrerupeți comprimarea în cazul în care durează prea mult."
#. type: Plain text
-#: ../src/xz/xz.1:1692
-msgid ""
-"When decoding raw streams (B<--format=raw>), LZMA2 needs only the dictionary "
-"I<size>. LZMA1 needs also I<lc>, I<lp>, and I<pb>."
-msgstr ""
-"La decodificarea fluxurilor brute (B<--format=raw>), LZMA2 are nevoie doar "
-"de I<dimensiunea> dicționarului. LZMA1 are nevoie de asemenea de I<lc>, "
-"I<lp> și I<pb>."
+#: ../src/xz/xz.1
+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 "La decodificarea fluxurilor brute (B<--format=raw>), LZMA2 are nevoie doar de I<dimensiunea> dicționarului. LZMA1 are nevoie de asemenea de I<lc>, I<lp> și I<pb>."
#. type: TP
-#: ../src/xz/xz.1:1692
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--x86>[B<=>I<options>]"
msgstr "B<--x86>[B<=>I<opțiuni>]"
#. type: TP
-#: ../src/xz/xz.1:1695
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--arm>[B<=>I<options>]"
msgstr "B<--arm>[B<=>I<opțiuni>]"
#. type: TP
-#: ../src/xz/xz.1:1697
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--armthumb>[B<=>I<options>]"
msgstr "B<--armthumb>[B<=>I<opțiuni>]"
#. type: TP
-#: ../src/xz/xz.1:1699
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--arm64>[B<=>I<options>]"
msgstr "B<--arm64>[B<=>I<opțiuni>]"
#. type: TP
-#: ../src/xz/xz.1:1701
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--powerpc>[B<=>I<options>]"
msgstr "B<--powerpc>[B<=>I<opțiuni>]"
#. type: TP
-#: ../src/xz/xz.1:1703
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--ia64>[B<=>I<options>]"
msgstr "B<--ia64>[B<=>I<opțiuni>]"
#. type: TP
-#: ../src/xz/xz.1:1705
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--sparc>[B<=>I<options>]"
msgstr "B<--sparc>[B<=>I<opțiuni>]"
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "B<--riscv>[B<=>I<options>]"
+msgstr "B<--riscv>[B<=>I<opțiuni>]"
+
#. type: Plain text
-#: ../src/xz/xz.1:1711
-msgid ""
-"Add a branch/call/jump (BCJ) filter to the filter chain. These filters can "
-"be used only as a non-last filter in the filter chain."
-msgstr ""
-"Adaugă un filtru de ramură/apel/salt (branch/call/jump ⟶ „BCJ”) la lanțul de "
-"filtre. Aceste filtre pot fi utilizate numai ca un filtru care nu este "
-"ultimul din lanțul de filtrare."
+#: ../src/xz/xz.1
+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 "Adaugă un filtru de ramură/apel/salt (branch/call/jump ⟶ „BCJ”) la lanțul de filtre. Aceste filtre pot fi utilizate numai ca un filtru care nu este ultimul din lanțul de filtrare."
#. type: Plain text
-#: ../src/xz/xz.1:1725
-msgid ""
-"A BCJ filter converts relative addresses in the machine code to their "
-"absolute counterparts. This doesn't change the size of the data but it "
-"increases redundancy, which can help LZMA2 to produce 0\\(en15\\ % smaller "
-"B<.xz> file. The BCJ filters are always reversible, so using a BCJ filter "
-"for wrong type of data doesn't cause any data loss, although it may make the "
-"compression ratio slightly worse. The BCJ filters are very fast and use an "
-"insignificant amount of memory."
-msgstr ""
-"Un filtru BCJ convertește adresele relative din codul mașinii în omoloagele "
-"lor absolute. Acest lucru nu modifică dimensiunea datelor, dar crește "
-"redundanța, ceea ce poate ajuta LZMA2 să producă fișier B<.xz> cu 0\\(en15\\ "
-"% mai mic. Filtrele BCJ sunt întotdeauna reversibile, deci folosind un "
-"filtru BCJ pentru tipul greșit de date nu provoacă nicio pierdere de date, "
-"deși poate înrăutăți puțin raportul de comprimare. Filtrele BCJ sunt foarte "
-"rapide și folosesc o cantitate nesemnificativă de memorie."
+#: ../src/xz/xz.1
+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\\(en15\\ % smaller B<.xz> file. The BCJ filters are always reversible, so using a BCJ filter for wrong type of data doesn't cause any data loss, although it may make the compression ratio slightly worse. The BCJ filters are very fast and use an insignificant amount of memory."
+msgstr "Un filtru BCJ convertește adresele relative din codul mașinii în omoloagele lor absolute. Acest lucru nu modifică dimensiunea datelor, dar crește redundanța, ceea ce poate ajuta LZMA2 să producă fișier B<.xz> cu 0\\(en15\\ % mai mic. Filtrele BCJ sunt întotdeauna reversibile, deci folosind un filtru BCJ pentru tipul greșit de date nu provoacă nicio pierdere de date, deși poate înrăutăți puțin raportul de comprimare. Filtrele BCJ sunt foarte rapide și folosesc o cantitate nesemnificativă de memorie."
#. type: Plain text
-#: ../src/xz/xz.1:1728
+#: ../src/xz/xz.1
msgid "These BCJ filters have known problems related to the compression ratio:"
-msgstr ""
-"Aceste filtre BCJ au probleme cunoscute legate de raportul de comprimare:"
+msgstr "Aceste filtre BCJ au probleme cunoscute legate de raportul de comprimare:"
#. type: Plain text
-#: ../src/xz/xz.1:1735
-msgid ""
-"Some types of files containing executable code (for example, object files, "
-"static libraries, and Linux kernel modules) have the addresses in the "
-"instructions filled with filler values. These BCJ filters will still do the "
-"address conversion, which will make the compression worse with these files."
-msgstr ""
-"Unele tipuri de fișiere care conțin cod executabil (de exemplu, fișiere "
-"obiect, biblioteci statice și module de kernel Linux) au adresele din "
-"instrucțiuni completate cu valori de umplere. Aceste filtre BCJ vor face în "
-"continuare conversia adresei, ceea ce va înrăutăți comprimarea cu aceste "
-"fișiere."
+#: ../src/xz/xz.1
+msgid "Some types of files containing executable code (for example, object files, static libraries, and Linux kernel modules) have the addresses in the instructions filled with filler values. These BCJ filters will still do the address conversion, which will make the compression worse with these files."
+msgstr "Unele tipuri de fișiere care conțin cod executabil (de exemplu, fișiere obiect, biblioteci statice și module de kernel Linux) au adresele din instrucțiuni completate cu valori de umplere. Aceste filtre BCJ vor face în continuare conversia adresei, ceea ce va înrăutăți comprimarea cu aceste fișiere."
#. type: Plain text
-#: ../src/xz/xz.1:1745
-msgid ""
-"If a BCJ filter is applied on an archive, it is possible that it makes the "
-"compression ratio worse than not using a BCJ filter. For example, if there "
-"are similar or even identical executables then filtering will likely make "
-"the files less similar and thus compression is worse. The contents of non-"
-"executable files in the same archive can matter too. In practice one has to "
-"try with and without a BCJ filter to see which is better in each situation."
-msgstr ""
-"Dacă pe o arhivă este aplicat un filtru BCJ, este posibil ca raportul de "
-"comprimare să fie mai rău decât la neutilizarea unui filtru BCJ. De "
-"exemplu, dacă există executabile similare sau chiar identice, filtrarea va "
-"face probabil fișierele mai puțin asemănătoare și astfel comprimarea este "
-"mai proastă. Conținutul fișierelor neexecutabile din aceeași arhivă poate "
-"conta și el. În practică, trebuie să încercați cu și fără filtru BCJ pentru "
-"a vedea care rezultat este mai bun în fiecare situație."
+#: ../src/xz/xz.1
+msgid "If a BCJ filter is applied on an archive, it is possible that it makes the compression ratio worse than not using a BCJ filter. For example, if there are similar or even identical executables then filtering will likely make the files less similar and thus compression is worse. The contents of non-executable files in the same archive can matter too. In practice one has to try with and without a BCJ filter to see which is better in each situation."
+msgstr "Dacă pe o arhivă este aplicat un filtru BCJ, este posibil ca raportul de comprimare să fie mai rău decât la neutilizarea unui filtru BCJ. De exemplu, dacă există executabile similare sau chiar identice, filtrarea va face probabil fișierele mai puțin asemănătoare și astfel comprimarea este mai proastă. Conținutul fișierelor neexecutabile din aceeași arhivă poate conta și el. În practică, trebuie să încercați cu și fără filtru BCJ pentru a vedea care rezultat este mai bun în fiecare situație."
#. type: Plain text
-#: ../src/xz/xz.1:1750
-msgid ""
-"Different instruction sets have different alignment: the executable file "
-"must be aligned to a multiple of this value in the input data to make the "
-"filter work."
-msgstr ""
-"Seturi de instrucțiuni diferite au o aliniere diferită: fișierul executabil "
-"trebuie aliniat la un multiplu al acestei valori în datele de intrare pentru "
-"ca filtrul să funcționeze."
+#: ../src/xz/xz.1
+msgid "Different instruction sets have different alignment: the executable file must be aligned to a multiple of this value in the input data to make the filter work."
+msgstr "Seturi de instrucțiuni diferite au o aliniere diferită: fișierul executabil trebuie aliniat la un multiplu al acestei valori în datele de intrare pentru ca filtrul să funcționeze."
#. type: tbl table
-#: ../src/xz/xz.1:1757
+#: ../src/xz/xz.1
#, no-wrap
msgid "Filter"
msgstr "Filtru"
#. type: tbl table
-#: ../src/xz/xz.1:1757
+#: ../src/xz/xz.1
#, no-wrap
msgid "Alignment"
msgstr "Aliniere"
#. type: tbl table
-#: ../src/xz/xz.1:1757
+#: ../src/xz/xz.1
#, no-wrap
msgid "Notes"
msgstr "Note"
#. type: tbl table
-#: ../src/xz/xz.1:1758
+#: ../src/xz/xz.1
#, no-wrap
msgid "x86"
msgstr "x86"
#. type: tbl table
-#: ../src/xz/xz.1:1758
+#: ../src/xz/xz.1
#, no-wrap
msgid "32-bit or 64-bit x86"
msgstr ""
@@ -3090,25 +1925,25 @@ msgstr ""
";;sau 64 de biți"
#. type: tbl table
-#: ../src/xz/xz.1:1759
+#: ../src/xz/xz.1
#, no-wrap
msgid "ARM"
msgstr "ARM"
#. type: tbl table
-#: ../src/xz/xz.1:1760
+#: ../src/xz/xz.1
#, no-wrap
msgid "ARM-Thumb"
msgstr "ARM-Thumb"
#. type: tbl table
-#: ../src/xz/xz.1:1761
+#: ../src/xz/xz.1
#, no-wrap
msgid "ARM64"
msgstr "ARM64"
#. type: tbl table
-#: ../src/xz/xz.1:1761
+#: ../src/xz/xz.1
#, no-wrap
msgid "4096-byte alignment is best"
msgstr ""
@@ -3116,1783 +1951,1310 @@ msgstr ""
";;este cea mai bună"
#. type: tbl table
-#: ../src/xz/xz.1:1762
+#: ../src/xz/xz.1
#, no-wrap
msgid "PowerPC"
msgstr "PowerPC"
#. type: tbl table
-#: ../src/xz/xz.1:1762
+#: ../src/xz/xz.1
#, no-wrap
msgid "Big endian only"
msgstr "Doar big endian"
#. type: tbl table
-#: ../src/xz/xz.1:1763
+#: ../src/xz/xz.1
#, no-wrap
msgid "IA-64"
msgstr "IA-64"
#. type: tbl table
-#: ../src/xz/xz.1:1763
+#: ../src/xz/xz.1
#, no-wrap
msgid "16"
msgstr "16"
#. type: tbl table
-#: ../src/xz/xz.1:1763
+#: ../src/xz/xz.1
#, no-wrap
msgid "Itanium"
msgstr "Itanium"
#. type: tbl table
-#: ../src/xz/xz.1:1764
+#: ../src/xz/xz.1
#, no-wrap
msgid "SPARC"
msgstr "SPARC"
+#. type: tbl table
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "RISC-V"
+msgstr "RISC-V"
+
#. type: Plain text
-#: ../src/xz/xz.1:1781
-msgid ""
-"Since the BCJ-filtered data is usually compressed with LZMA2, the "
-"compression ratio may be improved slightly if the LZMA2 options are set to "
-"match the alignment of the selected BCJ filter. For example, with the IA-64 "
-"filter, it's good to set B<pb=4> or even B<pb=4,lp=4,lc=0> with LZMA2 "
-"(2^4=16). The x86 filter is an exception; it's usually good to stick to "
-"LZMA2's default four-byte alignment when compressing x86 executables."
-msgstr ""
-"Deoarece datele filtrate prin BCJ sunt de obicei comprimate cu LZMA2, "
-"raportul de comprimare poate fi ușor îmbunătățit dacă opțiunile LZMA2 sunt "
-"definite pentru a se potrivi cu alinierea filtrului BCJ selectat. De "
-"exemplu, cu filtrul IA-64, este bine să stabiliți B<pb=4> sau chiar B<pb=4,"
-"lp=4,lc=0> cu LZMA2 (2^4=16). Filtrul x86 este o excepție; de obicei, este "
-"bine să rămână la alinierea implicită de patru octeți a LZMA2 atunci când se "
-"comprimă executabile x86."
+#: ../src/xz/xz.1
+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. Examples:"
+msgstr "Deoarece datele filtrate prin BCJ sunt de obicei comprimate cu LZMA2, raportul de comprimare poate fi ușor îmbunătățit dacă opțiunile LZMA2 sunt definite pentru a se potrivi cu alinierea filtrului BCJ selectat. Exemple:"
#. type: Plain text
-#: ../src/xz/xz.1:1784
+#: ../src/xz/xz.1
+msgid "IA-64 filter has 16-byte alignment so B<pb=4,lp=4,lc=0> is good with LZMA2 (2^4=16)."
+msgstr "Filtrul IA-64 are o aliniere de 16 octeți, astfel încât B<pb=4,lp=4,lc=0> este alegere adecvată cu LZMA2 (2^4=16)."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "RISC-V code has 2-byte or 4-byte alignment depending on whether the file contains 16-bit compressed instructions (the C extension). When 16-bit instructions are used, B<pb=2,lp=1,lc=3> or B<pb=1,lp=1,lc=3> is good. When 16-bit instructions aren't present, B<pb=2,lp=2,lc=2> is the best. B<readelf -h> can be used to check if \"RVC\" appears on the \"Flags\" line."
+msgstr "Codul RISC-V are o aliniere pe 2 sau 4 octeți, depinzând de faptul că fișierul conține instrucțiuni comprimate pe 16 biți (extensia C) sau nu. Atunci când se utilizează instrucțiuni pe 16 biți, B<pb=2,lp=1,lc=3> sau B<pb=1,lp=1,lc=3> este o alegere bună. Atunci când nu sunt prezente instrucțiuni pe 16 biți, B<pb=2,lp=2,lc=2> este cea mai bună alegere. B<readelf -h> poate fi utilizată pentru a verifica dacă „RVC” apare în linia „Indicatori\"."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "ARM64 is always 4-byte aligned so B<pb=2,lp=2,lc=2> is the best."
+msgstr "ARM64 este întotdeauna aliniat pe 4 octeți, astfel încât B<pb=2,lp=2,lc=2> este cea mai bună alegere."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The x86 filter is an exception. It's usually good to stick to LZMA2's defaults (B<pb=2,lp=0,lc=3>) when compressing x86 executables."
+msgstr "Filtrul x86 este o excepție. De obicei, este bine să rămâneți la valorile implicite ale LZMA2 (B<pb=2,lp=0,lc=3>) atunci când comprimați executabile x86."
+
+#. type: Plain text
+#: ../src/xz/xz.1
msgid "All BCJ filters support the same I<options>:"
msgstr "Toate filtrele BCJ acceptă același I<opțiuni>:"
#. type: TP
-#: ../src/xz/xz.1:1785
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<start=>I<offset>"
msgstr "B<start=>I<poziție>"
#. type: Plain text
-#: ../src/xz/xz.1:1799
-msgid ""
-"Specify the start I<offset> that is used when converting between relative "
-"and absolute addresses. The I<offset> must be a multiple of the alignment "
-"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 ""
-"Specifică I<poziția> de pornire care este utilizată la conversia între "
-"adresele relative și absolute. I<Poziția> trebuie să fie un multiplu al "
-"alinierii filtrului (consultați tabelul de mai sus). Valoarea implicită "
-"este zero. În practică, valoarea implicită este bună; specificarea unei "
-"I<poziții> personalizate nu este aproape niciodată utilă."
+#: ../src/xz/xz.1
+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 "Specifică I<poziția> de pornire care este utilizată la conversia între adresele relative și absolute. I<Poziția> trebuie să fie un multiplu al alinierii filtrului (consultați tabelul de mai sus). Valoarea implicită este zero. În practică, valoarea implicită este bună; specificarea unei I<poziții> personalizate nu este aproape niciodată utilă."
#. type: TP
-#: ../src/xz/xz.1:1800
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--delta>[B<=>I<options>]"
msgstr "B<--delta>[B<=>I<opțiuni>]"
#. type: Plain text
-#: ../src/xz/xz.1:1805
-msgid ""
-"Add the Delta filter to the filter chain. The Delta filter can be only used "
-"as a non-last filter in the filter chain."
-msgstr ""
-"Adaugă filtrul Delta în lanțul de filtrare. Filtrul Delta poate fi folosit "
-"doar ca un filtru care nu este ultimul în lanțul de filtrare."
+#: ../src/xz/xz.1
+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 "Adaugă filtrul Delta în lanțul de filtrare. Filtrul Delta poate fi folosit doar ca un filtru care nu este ultimul în lanțul de filtrare."
#. type: Plain text
-#: ../src/xz/xz.1:1814
-msgid ""
-"Currently only simple byte-wise delta calculation is supported. It can be "
-"useful when compressing, for example, uncompressed bitmap images or "
-"uncompressed PCM audio. However, special purpose algorithms may give "
-"significantly better results than Delta + LZMA2. This is true especially "
-"with audio, which compresses faster and better, for example, with B<flac>(1)."
-msgstr ""
-"În prezent, este acceptat doar calculul delta simplu de octeți. Poate fi "
-"util la comprimarea, de exemplu, a imaginilor bitmap necomprimate sau a "
-"sunetului PCM necomprimat. Cu toate acestea, algoritmii cu scop special pot "
-"da rezultate semnificativ mai bune decât Delta + LZMA2. Acest lucru este "
-"valabil mai ales în cazul audio, care se comprimă mai repede și mai bine, de "
-"exemplu, cu B<flac>(1)."
+#: ../src/xz/xz.1
+msgid "Currently only simple byte-wise delta calculation is supported. It can be useful when compressing, for example, uncompressed bitmap images or uncompressed PCM audio. However, special purpose algorithms may give significantly better results than Delta + LZMA2. This is true especially with audio, which compresses faster and better, for example, with B<flac>(1)."
+msgstr "În prezent, este acceptat doar calculul delta simplu de octeți. Poate fi util la comprimarea, de exemplu, a imaginilor bitmap necomprimate sau a sunetului PCM necomprimat. Cu toate acestea, algoritmii cu scop special pot da rezultate semnificativ mai bune decât Delta + LZMA2. Acest lucru este valabil mai ales în cazul audio, care se comprimă mai repede și mai bine, de exemplu, cu B<flac>(1)."
#. type: Plain text
-#: ../src/xz/xz.1:1817
+#: ../src/xz/xz.1
msgid "Supported I<options>:"
msgstr "I<Opțiuni> acceptate:"
#. type: TP
-#: ../src/xz/xz.1:1818
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<dist=>I<distance>"
msgstr "B<dist=>I<distanța>"
#. type: Plain text
-#: ../src/xz/xz.1:1826
-msgid ""
-"Specify the I<distance> of the delta calculation in bytes. I<distance> must "
-"be 1\\(en256. The default is 1."
-msgstr ""
-"Specifică I<distanța> calculului delta în octeți. I<Distanța> trebuie să "
-"fie 1\\(en256. Valoarea implicită este 1."
+#: ../src/xz/xz.1
+msgid "Specify the I<distance> of the delta calculation in bytes. I<distance> must be 1\\(en256. The default is 1."
+msgstr "Specifică I<distanța> calculului delta în octeți. I<Distanța> trebuie să fie 1\\(en256. Valoarea implicită este 1."
#. type: Plain text
-#: ../src/xz/xz.1:1831
-msgid ""
-"For example, with B<dist=2> and eight-byte input A1 B1 A2 B3 A3 B5 A4 B7, "
-"the output will be A1 B1 01 02 01 02 01 02."
-msgstr ""
-"De exemplu, cu B<dist=2> și intrare de opt octeți: A1 B1 A2 B3 A3 B5 A4 B7, "
-"ieșirea va fi: A1 B1 01 02 01 02 01 02."
+#: ../src/xz/xz.1
+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 "De exemplu, cu B<dist=2> și intrare de opt octeți: A1 B1 A2 B3 A3 B5 A4 B7, ieșirea va fi: A1 B1 01 02 01 02 01 02."
#. type: SS
-#: ../src/xz/xz.1:1833
+#: ../src/xz/xz.1
#, no-wrap
msgid "Other options"
msgstr "Alte opțiuni"
#. type: TP
-#: ../src/xz/xz.1:1834 ../src/xzdec/xzdec.1:83
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-q>, B<--quiet>"
msgstr "B<-q>, B<--quiet>"
#. type: Plain text
-#: ../src/xz/xz.1:1841
-msgid ""
-"Suppress warnings and notices. Specify this twice to suppress errors too. "
-"This option has no effect on the exit status. That is, even if a warning "
-"was suppressed, the exit status to indicate a warning is still used."
-msgstr ""
-"Suprimă avertismentele și notificările. Specificați acest lucru de două ori "
-"pentru a suprima și erorile. Această opțiune nu are niciun efect asupra "
-"stării de ieșire. Adică, chiar dacă o avertizare a fost suprimată, starea "
-"de ieșire pentru a indica o avertizare este încă utilizată."
+#: ../src/xz/xz.1
+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 "Suprimă avertismentele și notificările. Specificați acest lucru de două ori pentru a suprima și erorile. Această opțiune nu are niciun efect asupra stării de ieșire. Adică, chiar dacă o avertizare a fost suprimată, starea de ieșire pentru a indica o avertizare este încă utilizată."
#. type: TP
-#: ../src/xz/xz.1:1841
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-v>, B<--verbose>"
msgstr "B<-v>, B<--verbose>"
#. type: Plain text
-#: ../src/xz/xz.1:1850
-msgid ""
-"Be verbose. If standard error is connected to a terminal, B<xz> will "
-"display a progress indicator. Specifying B<--verbose> twice will give even "
-"more verbose output."
-msgstr ""
-"Oferă informații detaliate. Dacă ieșirea de eroare standard este conectată "
-"la un terminal, B<xz> va afișa un indicator de progres. Specificarea "
-"opțiunii B<--verbose> de două ori, va avea ca rezultat oferirea de "
-"informații și mai detaliate."
+#: ../src/xz/xz.1
+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 "Oferă informații detaliate. Dacă ieșirea de eroare standard este conectată la un terminal, B<xz> va afișa un indicator de progres. Specificarea opțiunii B<--verbose> de două ori, va avea ca rezultat oferirea de informații și mai detaliate."
#. type: Plain text
-#: ../src/xz/xz.1:1852
+#: ../src/xz/xz.1
msgid "The progress indicator shows the following information:"
msgstr "Indicatorul de progres afișează următoarele informații:"
#. type: Plain text
-#: ../src/xz/xz.1:1857
-msgid ""
-"Completion percentage is shown if the size of the input file is known. That "
-"is, the percentage cannot be shown in pipes."
-msgstr ""
-"Procentul de completare este afișat dacă se cunoaște dimensiunea fișierului "
-"de intrare. Adică, procentul nu poate fi afișat la procesarea fișierului "
-"prin conducte(pipe)."
+#: ../src/xz/xz.1
+msgid "Completion percentage is shown if the size of the input file is known. That is, the percentage cannot be shown in pipes."
+msgstr "Procentul de completare este afișat dacă se cunoaște dimensiunea fișierului de intrare. Adică, procentul nu poate fi afișat la procesarea fișierului prin conducte(pipe)."
#. type: Plain text
-#: ../src/xz/xz.1:1860
-msgid ""
-"Amount of compressed data produced (compressing) or consumed "
-"(decompressing)."
-msgstr ""
-"Cantitatea de date comprimate produse (comprimare) sau consumate "
-"(decomprimare)."
+#: ../src/xz/xz.1
+msgid "Amount of compressed data produced (compressing) or consumed (decompressing)."
+msgstr "Cantitatea de date comprimate produse (comprimare) sau consumate (decomprimare)."
#. type: Plain text
-#: ../src/xz/xz.1:1863
-msgid ""
-"Amount of uncompressed data consumed (compressing) or produced "
-"(decompressing)."
-msgstr ""
-"Cantitatea de date necomprimate consumate (comprimare) sau produse "
-"(decomprimare)."
+#: ../src/xz/xz.1
+msgid "Amount of uncompressed data consumed (compressing) or produced (decompressing)."
+msgstr "Cantitatea de date necomprimate consumate (comprimare) sau produse (decomprimare)."
#. type: Plain text
-#: ../src/xz/xz.1:1867
-msgid ""
-"Compression ratio, which is calculated by dividing the amount of compressed "
-"data processed so far by the amount of uncompressed data processed so far."
-msgstr ""
-"Raportul de comprimare, care se calculează împărțind cantitatea de date "
-"comprimate procesate până acum la cantitatea de date necomprimate procesate "
-"până acum."
+#: ../src/xz/xz.1
+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 "Raportul de comprimare, care se calculează împărțind cantitatea de date comprimate procesate până acum la cantitatea de date necomprimate procesate până acum."
#. type: Plain text
-#: ../src/xz/xz.1:1874
-msgid ""
-"Compression or decompression speed. This is measured as the amount of "
-"uncompressed data consumed (compression) or produced (decompression) per "
-"second. It is shown after a few seconds have passed since B<xz> started "
-"processing the file."
-msgstr ""
-"Viteza de comprimare sau decomprimare. Aceasta este măsurată drept "
-"cantitatea de date necomprimate consumate (comprimare) sau produse "
-"(decomprimare) pe secundă. Este afișată după ce au trecut câteva secunde de "
-"când B<xz> a început procesarea fișierului."
+#: ../src/xz/xz.1
+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 "Viteza de comprimare sau decomprimare. Aceasta este măsurată drept cantitatea de date necomprimate consumate (comprimare) sau produse (decomprimare) pe secundă. Este afișată după ce au trecut câteva secunde de când B<xz> a început procesarea fișierului."
#. type: Plain text
-#: ../src/xz/xz.1:1876
+#: ../src/xz/xz.1
msgid "Elapsed time in the format M:SS or H:MM:SS."
msgstr "Timpul scurs în format M:SS sau H:MM:SS."
#. type: Plain text
-#: ../src/xz/xz.1:1884
-msgid ""
-"Estimated remaining time is shown only when the size of the input file is "
-"known and a couple of seconds have already passed since B<xz> started "
-"processing the file. The time is shown in a less precise format which never "
-"has any colons, for example, 2 min 30 s."
-msgstr ""
-"Timpul rămas estimat este afișat numai atunci când dimensiunea fișierului de "
-"intrare este cunoscută și au trecut deja câteva secunde de când B<xz> a "
-"început procesarea fișierului. Ora este afișată într-un format mai puțin "
-"precis, care nu are niciodată două puncte, de exemplu, 2 min 30 s."
+#: ../src/xz/xz.1
+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, for example, 2 min 30 s."
+msgstr "Timpul rămas estimat este afișat numai atunci când dimensiunea fișierului de intrare este cunoscută și au trecut deja câteva secunde de când B<xz> a început procesarea fișierului. Ora este afișată într-un format mai puțin precis, care nu are niciodată două puncte, de exemplu, 2 min 30 s."
#. type: Plain text
-#: ../src/xz/xz.1:1899
-msgid ""
-"When standard error is not a terminal, B<--verbose> will make B<xz> print "
-"the filename, compressed size, uncompressed size, compression ratio, and "
-"possibly also the speed and elapsed time on a single line to standard error "
-"after compressing or decompressing the file. The speed and elapsed time are "
-"included only when the operation took at least a few seconds. If the "
-"operation didn't finish, for example, due to user interruption, also the "
-"completion percentage is printed if the size of the input file is known."
-msgstr ""
-"Când ieșirea de eroare standard nu este un terminal, B<--verbose> va face "
-"B<xz> să imprime numele fișierului, dimensiunea comprimată, dimensiunea "
-"necomprimată, raportul de comprimare și, eventual, de asemenea, viteza și "
-"timpul scurs pe o singură linie la ieșirea de eroare standard după "
-"comprimarea sau decomprimarea fișierului. Viteza și timpul scurs sunt "
-"incluse numai atunci când operațiunea a durat cel puțin câteva secunde. "
-"Dacă operațiunea nu s-a încheiat, de exemplu, din cauza întreruperii din "
-"partea utilizatorului, se imprimă și procentul de completare dacă se "
-"cunoaște dimensiunea fișierului de intrare."
+#: ../src/xz/xz.1
+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, for example, due to user interruption, also the completion percentage is printed if the size of the input file is known."
+msgstr "Când ieșirea de eroare standard nu este un terminal, B<--verbose> va face B<xz> să imprime numele fișierului, dimensiunea comprimată, dimensiunea necomprimată, raportul de comprimare și, eventual, de asemenea, viteza și timpul scurs pe o singură linie la ieșirea de eroare standard după comprimarea sau decomprimarea fișierului. Viteza și timpul scurs sunt incluse numai atunci când operațiunea a durat cel puțin câteva secunde. Dacă operațiunea nu s-a încheiat, de exemplu, din cauza întreruperii din partea utilizatorului, se imprimă și procentul de completare dacă se cunoaște dimensiunea fișierului de intrare."
#. type: TP
-#: ../src/xz/xz.1:1899 ../src/xzdec/xzdec.1:89
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-Q>, B<--no-warn>"
msgstr "B<-Q>, B<--no-warn>"
#. type: Plain text
-#: ../src/xz/xz.1:1909
-msgid ""
-"Don't set the exit status to 2 even if a condition worth a warning was "
-"detected. This option doesn't affect the verbosity level, thus both B<--"
-"quiet> and B<--no-warn> have to be used to not display warnings and to not "
-"alter the exit status."
-msgstr ""
-"Nu comută starea de ieșire la 2 chiar dacă a fost detectată o condiție care "
-"merită avertizată. Această opțiune nu afectează nivelul de detaliere al "
-"informațiilor, astfel încât atât B<--quiet> cât și B<--no-warn> trebuie "
-"folosite pentru a nu afișa avertismente și pentru a nu modifica starea de "
-"ieșire."
+#: ../src/xz/xz.1
+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 "Nu comută starea de ieșire la 2 chiar dacă a fost detectată o condiție care merită avertizată. Această opțiune nu afectează nivelul de detaliere al informațiilor, astfel încât atât B<--quiet> cât și B<--no-warn> trebuie folosite pentru a nu afișa avertismente și pentru a nu modifica starea de ieșire."
#. type: TP
-#: ../src/xz/xz.1:1909
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--robot>"
msgstr "B<--robot>"
#. type: Plain text
-#: ../src/xz/xz.1:1921
-msgid ""
-"Print messages in a machine-parsable format. This is intended to ease "
-"writing frontends that want to use B<xz> instead of liblzma, which may be "
-"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 ""
-"Afișează mesajele într-un format care poate fi analizat de mașină. Acest "
-"lucru are scopul de a ușura scrierea interfețelor în care se dorește să se "
-"folosească B<xz> în loc de liblzma, ceea ce poate fi cazul cu diferite "
-"scripturi. Ieșirea cu această opțiune activată este menită să fie stabilă "
-"în toate versiunile B<xz>. Consultați secțiunea B<MOD ROBOT> pentru detalii."
+#: ../src/xz/xz.1
+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 "Afișează mesajele într-un format care poate fi analizat de mașină. Acest lucru are scopul de a ușura scrierea interfețelor în care se dorește să se folosească B<xz> în loc de liblzma, ceea ce poate fi cazul cu diferite scripturi. Ieșirea cu această opțiune activată este menită să fie stabilă în toate versiunile B<xz>. Consultați secțiunea B<MOD ROBOT> pentru detalii."
#. type: TP
-#: ../src/xz/xz.1:1921
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--info-memory>"
msgstr "B<--info-memory>"
#. type: Plain text
-#: ../src/xz/xz.1:1928
-msgid ""
-"Display, in human-readable format, how much physical memory (RAM) and how "
-"many processor threads B<xz> thinks the system has and the memory usage "
-"limits for compression and decompression, and exit successfully."
-msgstr ""
-"Afișează, într-un format care poate fi citit de om, câtă memorie fizică "
-"(RAM) și câte fire de execuție de procesor B<xz> crede că are sistemul și "
-"limitele de utilizare a memoriei pentru comprimare și decomprimare și iese "
-"cu succes."
+#: ../src/xz/xz.1
+msgid "Display, in human-readable format, how much physical memory (RAM) and how many processor threads B<xz> thinks the system has and the memory usage limits for compression and decompression, and exit successfully."
+msgstr "Afișează, într-un format care poate fi citit de om, câtă memorie fizică (RAM) și câte fire de execuție de procesor B<xz> crede că are sistemul și limitele de utilizare a memoriei pentru comprimare și decomprimare și iese cu succes."
#. type: TP
-#: ../src/xz/xz.1:1928 ../src/xzdec/xzdec.1:96
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-h>, B<--help>"
msgstr "B<-h>, B<--help>"
#. type: Plain text
-#: ../src/xz/xz.1:1932
-msgid ""
-"Display a help message describing the most commonly used options, and exit "
-"successfully."
-msgstr ""
-"Afișează un mesaj de ajutor care descrie opțiunile cele mai frecvent "
-"utilizate și iese cu succes."
+#: ../src/xz/xz.1
+msgid "Display a help message describing the most commonly used options, and exit successfully."
+msgstr "Afișează un mesaj de ajutor care descrie opțiunile cele mai frecvent utilizate și iese cu succes."
#. type: TP
-#: ../src/xz/xz.1:1932
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-H>, B<--long-help>"
msgstr "B<-H>, B<--long-help>"
#. type: Plain text
-#: ../src/xz/xz.1:1937
-msgid ""
-"Display a help message describing all features of B<xz>, and exit "
-"successfully"
-msgstr ""
-"Afișează un mesaj de ajutor care descrie toate caracteristicile B<xz> și "
-"iese cu succes"
+#: ../src/xz/xz.1
+msgid "Display a help message describing all features of B<xz>, and exit successfully"
+msgstr "Afișează un mesaj de ajutor care descrie toate caracteristicile B<xz> și iese cu succes"
#. type: TP
-#: ../src/xz/xz.1:1937 ../src/xzdec/xzdec.1:99
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-V>, B<--version>"
msgstr "B<-V>, B<--version>"
#. type: Plain text
-#: ../src/xz/xz.1:1946
-msgid ""
-"Display the version number of B<xz> and liblzma in human readable format. "
-"To get machine-parsable output, specify B<--robot> before B<--version>."
-msgstr ""
-"Afișează numărul versiunii B<xz> și liblzma într-un format care poate fi "
-"citit de om. Pentru a obține rezultate analizabile de mașină, specificați "
-"B<--robot> înainte de B<--version>."
+#: ../src/xz/xz.1
+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 "Afișează numărul versiunii B<xz> și liblzma într-un format care poate fi citit de om. Pentru a obține rezultate analizabile de mașină, specificați B<--robot> înainte de B<--version>."
#. type: SH
-#: ../src/xz/xz.1:1947
+#: ../src/xz/xz.1
#, no-wrap
msgid "ROBOT MODE"
msgstr "MOD ROBOT"
#. type: Plain text
-#: ../src/xz/xz.1:1963
-msgid ""
-"The robot mode is activated with the B<--robot> option. It makes the output "
-"of B<xz> easier to parse by other programs. Currently B<--robot> is "
-"supported only together with B<--version>, B<--info-memory>, and B<--list>. "
-"It will be supported for compression and decompression in the future."
-msgstr ""
-"Modul robot este activat cu opțiunea B<--robot>. Face ieșirea lui B<xz> mai "
-"ușor de analizat de către alte programe. În prezent, opțiunea B<--robot> "
-"este acceptată numai împreună cu opțiunile B<--version>, B<--info-memory> și "
-"B<--list>. Va fi acceptată pentru comprimare și decomprimare în viitor."
-
-#. type: SS
-#: ../src/xz/xz.1:1964
-#, no-wrap
-msgid "Version"
-msgstr "Versiunea"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1969
-msgid ""
-"B<xz --robot --version> prints the version number of B<xz> and liblzma in "
-"the following format:"
-msgstr ""
-"B<xz --robot --version> va afișa numărul versiunii B<xz> și liblzma în "
-"următorul format:"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1971
-msgid "B<XZ_VERSION=>I<XYYYZZZS>"
-msgstr "B<XZ_VERSION=>I<XYYYZZZS>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1973
-msgid "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
-msgstr "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
-
-#. type: TP
-#: ../src/xz/xz.1:1973
-#, no-wrap
-msgid "I<X>"
-msgstr "I<X>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1976
-msgid "Major version."
-msgstr "Versiunea majoră."
-
-#. type: TP
-#: ../src/xz/xz.1:1976
-#, no-wrap
-msgid "I<YYY>"
-msgstr "I<YYY>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1981
-msgid ""
-"Minor version. Even numbers are stable. Odd numbers are alpha or beta "
-"versions."
-msgstr ""
-"Versiunea minoră. Numerele pare sunt prezente în versiunile stabile. "
-"Numerele impare sunt prezente în versiunile alfa sau beta."
-
-#. type: TP
-#: ../src/xz/xz.1:1981
-#, no-wrap
-msgid "I<ZZZ>"
-msgstr "I<ZZZ>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1985
-msgid ""
-"Patch level for stable releases or just a counter for development releases."
-msgstr ""
-"Nivelul de plasture(patch) pentru versiunile stabile sau doar un contor "
-"pentru versiunile de dezvoltare."
-
-#. type: TP
-#: ../src/xz/xz.1:1985
-#, no-wrap
-msgid "I<S>"
-msgstr "I<S>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1993
-msgid ""
-"Stability. 0 is alpha, 1 is beta, and 2 is stable. I<S> should be always 2 "
-"when I<YYY> is even."
-msgstr ""
-"Stabilitate. 0 este alfa, 1 este beta și 2 este stabil. I<S> trebuie să "
-"fie întotdeauna 2 atunci când I<AAA> este par."
-
-#. type: Plain text
-#: ../src/xz/xz.1:1998
-msgid ""
-"I<XYYYZZZS> are the same on both lines if B<xz> and liblzma are from the "
-"same XZ Utils release."
-msgstr ""
-"I<XYYYZZZS> sunt aceleași pe ambele linii dacă B<xz> și liblzma sunt din "
-"aceeași versiune XZ Utils."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2004
-msgid "Examples: 4.999.9beta is B<49990091> and 5.0.0 is B<50000002>."
-msgstr "Exemple: 4.999.9beta este B<49990091> și 5.0.0 este B<50000002>."
+#: ../src/xz/xz.1
+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<--list>, B<--filters-help>, B<--info-memory>, and B<--version>. It will be supported for compression and decompression in the future."
+msgstr "Modul robot este activat cu opțiunea B<--robot>. Face ieșirea lui B<xz> mai ușor de analizat de către alte programe. În prezent, opțiunea B<--robot> este acceptată numai împreună cu opțiunile B<--list>, B<--filters-help>, B<--info-memory>, și B<--version>. Va fi acceptată pentru comprimare și decomprimare în viitor."
#. type: SS
-#: ../src/xz/xz.1:2005
-#, no-wrap
-msgid "Memory limit information"
-msgstr "Informații privind limita memoriei"
-
-#. type: Plain text
-#: ../src/xz/xz.1:2008
-msgid ""
-"B<xz --robot --info-memory> prints a single line with multiple tab-separated "
-"columns:"
-msgstr ""
-"B<xz --robot --info-memory> afișează o singură linie cu multiple coloane "
-"separate prin tabulatoare:"
-
-#. type: IP
-#: ../src/xz/xz.1:2008
-#, no-wrap
-msgid "1."
-msgstr "1."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2010
-msgid "Total amount of physical memory (RAM) in bytes."
-msgstr "Cantitatea totală de memorie fizică (RAM) în octeți."
-
-#. type: IP
-#: ../src/xz/xz.1:2010 ../src/xz/xz.1:2125 ../src/xz/xz.1:2162
-#: ../src/xz/xz.1:2188 ../src/xz/xz.1:2258 ../src/xz/xz.1:2285
-#, no-wrap
-msgid "2."
-msgstr "2."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2017
-msgid ""
-"Memory usage limit for compression in bytes (B<--memlimit-compress>). A "
-"special value of B<0> indicates the default setting which for single-"
-"threaded mode is the same as no limit."
-msgstr ""
-"Limita de utilizare a memoriei pentru comprimare în octeți (B<--memlimit-"
-"compress>). O valoare specială de B<0> indică configurarea implicită, care "
-"pentru modul cu un singur fir este la fel ca fără limită."
-
-#. type: IP
-#: ../src/xz/xz.1:2017 ../src/xz/xz.1:2127 ../src/xz/xz.1:2164
-#: ../src/xz/xz.1:2190 ../src/xz/xz.1:2263 ../src/xz/xz.1:2287
-#, no-wrap
-msgid "3."
-msgstr "3."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2024
-msgid ""
-"Memory usage limit for decompression in bytes (B<--memlimit-decompress>). A "
-"special value of B<0> indicates the default setting which for single-"
-"threaded mode is the same as no limit."
-msgstr ""
-"Limita de utilizare a memoriei pentru decomprimare în octeți (B<--memlimit-"
-"decompress>). O valoare specială de B<0> indică configurarea implicită, "
-"care pentru modul cu un singur fir este la fel ca fără limită."
-
-#. type: IP
-#: ../src/xz/xz.1:2024 ../src/xz/xz.1:2129 ../src/xz/xz.1:2166
-#: ../src/xz/xz.1:2193 ../src/xz/xz.1:2273 ../src/xz/xz.1:2289
-#, no-wrap
-msgid "4."
-msgstr "4."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2036
-msgid ""
-"Since B<xz> 5.3.4alpha: Memory usage for multi-threaded decompression in "
-"bytes (B<--memlimit-mt-decompress>). This is never zero because a system-"
-"specific default value shown in the column 5 is used if no limit has been "
-"specified explicitly. This is also never greater than the value in the "
-"column 3 even if a larger value has been specified with B<--memlimit-mt-"
-"decompress>."
-msgstr ""
-"Începând cu B<xz> 5.3.4alpha: Utilizarea memoriei pentru decomprimarea cu "
-"mai multe fire în octeți (B<--memlimit-mt-decompress>). Acesta nu este "
-"niciodată zero, deoarece o valoare implicită specifică sistemului afișată în "
-"coloana 5 este utilizată dacă nu a fost specificată în mod explicit nicio "
-"limită. De asemenea, aceasta nu este niciodată mai mare decât valoarea din "
-"coloana 3, chiar dacă a fost specificată o valoare mai mare cu B<--memlimit-"
-"mt-decompress>."
-
-#. type: IP
-#: ../src/xz/xz.1:2036 ../src/xz/xz.1:2131 ../src/xz/xz.1:2168
-#: ../src/xz/xz.1:2195 ../src/xz/xz.1:2291
-#, no-wrap
-msgid "5."
-msgstr "5."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2048
-msgid ""
-"Since B<xz> 5.3.4alpha: A system-specific default memory usage limit that is "
-"used to limit the number of threads when compressing with an automatic "
-"number of threads (B<--threads=0>) and no memory usage limit has been "
-"specified (B<--memlimit-compress>). This is also used as the default value "
-"for B<--memlimit-mt-decompress>."
-msgstr ""
-"Începând cu B<xz> 5.3.4alpha: o limită implicită de utilizare a memoriei "
-"specifică sistemului, care este utilizată pentru a limita numărul de fire de "
-"execuție atunci când se comprimă cu un număr automat de fire de execuție "
-"(B<--threads=0>) și nicio limită de utilizare a memoriei nu fost specificată "
-"cu (B<--memlimit-compress>). Aceasta este, de asemenea, utilizată ca "
-"valoare implicită pentru B<--memlimit-mt-decompress>."
-
-#. type: IP
-#: ../src/xz/xz.1:2048 ../src/xz/xz.1:2133 ../src/xz/xz.1:2170
-#: ../src/xz/xz.1:2197 ../src/xz/xz.1:2293
-#, no-wrap
-msgid "6."
-msgstr "6."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2053
-msgid "Since B<xz> 5.3.4alpha: Number of available processor threads."
-msgstr ""
-"Începând cu B<xz> 5.3.4alpha: numărul de fire de execuție de procesor "
-"disponibile."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2057
-msgid ""
-"In the future, the output of B<xz --robot --info-memory> may have more "
-"columns, but never more than a single line."
-msgstr ""
-"În viitor, rezultatul B<xz --robot --info-memory> poate avea mai multe "
-"coloane, dar niciodată mai mult de o singură linie."
-
-#. type: SS
-#: ../src/xz/xz.1:2058
+#: ../src/xz/xz.1
#, no-wrap
msgid "List mode"
msgstr "Modul listă"
#. type: Plain text
-#: ../src/xz/xz.1:2063
-msgid ""
-"B<xz --robot --list> uses tab-separated output. The first column of every "
-"line has a string that indicates the type of the information found on that "
-"line:"
-msgstr ""
-"B<xz --robot --list> utilizează o ieșire separată de tabulatori. Prima "
-"coloană a fiecărei linii are un șir care indică tipul de informații găsite "
-"pe acea linie:"
+#: ../src/xz/xz.1
+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> utilizează o ieșire separată de tabulatori. Prima coloană a fiecărei linii are un șir care indică tipul de informații găsite pe acea linie:"
#. type: TP
-#: ../src/xz/xz.1:2063
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<name>"
msgstr "B<name>"
#. type: Plain text
-#: ../src/xz/xz.1:2067
-msgid ""
-"This is always the first line when starting to list a file. The second "
-"column on the line is the filename."
-msgstr ""
-"Aceasta este întotdeauna prima linie când începe să se listeze un fișier. A "
-"doua coloană de pe linie este numele fișierului."
+#: ../src/xz/xz.1
+msgid "This is always the first line when starting to list a file. The second column on the line is the filename."
+msgstr "Aceasta este întotdeauna prima linie când începe să se listeze un fișier. A doua coloană de pe linie este numele fișierului."
#. type: TP
-#: ../src/xz/xz.1:2067
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<file>"
msgstr "B<file>"
#. type: Plain text
-#: ../src/xz/xz.1:2075
-msgid ""
-"This line contains overall information about the B<.xz> file. This line is "
-"always printed after the B<name> line."
-msgstr ""
-"Această linie conține informații generale despre fișierul B<.xz>. Această "
-"linie este întotdeauna tipărită după linia B<name>."
+#: ../src/xz/xz.1
+msgid "This line contains overall information about the B<.xz> file. This line is always printed after the B<name> line."
+msgstr "Această linie conține informații generale despre fișierul B<.xz>. Această linie este întotdeauna tipărită după linia B<name>."
#. type: TP
-#: ../src/xz/xz.1:2075
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<stream>"
msgstr "B<stream>"
#. type: Plain text
-#: ../src/xz/xz.1:2085
-msgid ""
-"This line type is used only when B<--verbose> was specified. There are as "
-"many B<stream> lines as there are streams in the B<.xz> file."
-msgstr ""
-"Acest tip de linie este utilizat numai atunci când a fost specificată "
-"opțiunea B<--verbose>. Există tot atâtea linii B<stream> câte fluxuri "
-"există în fișierul B<.xz>."
+#: ../src/xz/xz.1
+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 "Acest tip de linie este utilizat numai atunci când a fost specificată opțiunea B<--verbose>. Există tot atâtea linii B<stream> câte fluxuri există în fișierul B<.xz>."
#. type: TP
-#: ../src/xz/xz.1:2085
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<block>"
msgstr "B<block>"
#. type: Plain text
-#: ../src/xz/xz.1:2100
-msgid ""
-"This line type is used only when B<--verbose> was specified. There are as "
-"many B<block> lines as there are blocks in the B<.xz> file. The B<block> "
-"lines are shown after all the B<stream> lines; different line types are not "
-"interleaved."
-msgstr ""
-"Acest tip de linie este utilizat numai atunci când a fost specificată "
-"opțiunea B<--verbose>. Există tot atâtea linii B<block> câte blocuri există "
-"în fișierul B<.xz>. Liniile B<block> sunt afișate după toate liniile "
-"B<stream>; tipurile diferite de linii nu sunt intercalate."
+#: ../src/xz/xz.1
+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 "Acest tip de linie este utilizat numai atunci când a fost specificată opțiunea B<--verbose>. Există tot atâtea linii B<block> câte blocuri există în fișierul B<.xz>. Liniile B<block> sunt afișate după toate liniile B<stream>; tipurile diferite de linii nu sunt intercalate."
#. type: TP
-#: ../src/xz/xz.1:2100
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<summary>"
msgstr "B<summary>"
#. type: Plain text
-#: ../src/xz/xz.1:2115
-msgid ""
-"This line type is used only when B<--verbose> was specified twice. This "
-"line is printed after all B<block> lines. Like the B<file> line, the "
-"B<summary> line contains overall information about the B<.xz> file."
-msgstr ""
-"Acest tip de linie este folosit numai atunci când opțiunea B<--verbose> a "
-"fost specificată de două ori. Această linie este afișată după toate liniile "
-"B<block>. Ca și linia B<file>, linia B<summary> conține informații generale "
-"despre fișierul B<.xz>."
+#: ../src/xz/xz.1
+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 "Acest tip de linie este folosit numai atunci când opțiunea B<--verbose> a fost specificată de două ori. Această linie este afișată după toate liniile B<block>. Ca și linia B<file>, linia B<summary> conține informații generale despre fișierul B<.xz>."
#. type: TP
-#: ../src/xz/xz.1:2115
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<totals>"
msgstr "B<totals>"
#. type: Plain text
-#: ../src/xz/xz.1:2119
-msgid ""
-"This line is always the very last line of the list output. It shows the "
-"total counts and sizes."
-msgstr ""
-"Această linie este întotdeauna ultima linie din lista afișată la ieșire. "
-"Aceasta arată numărul total și dimensiunile."
+#: ../src/xz/xz.1
+msgid "This line is always the very last line of the list output. It shows the total counts and sizes."
+msgstr "Această linie este întotdeauna ultima linie din lista afișată la ieșire. Aceasta arată numărul total și dimensiunile."
#. type: Plain text
-#: ../src/xz/xz.1:2123
+#: ../src/xz/xz.1
msgid "The columns of the B<file> lines:"
msgstr "Coloanele din liniile B<file>:"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "2."
+msgstr "2."
+
#. type: Plain text
-#: ../src/xz/xz.1:2127
+#: ../src/xz/xz.1
msgid "Number of streams in the file"
msgstr "Numărul de fluxuri din fișier"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "3."
+msgstr "3."
+
#. type: Plain text
-#: ../src/xz/xz.1:2129
+#: ../src/xz/xz.1
msgid "Total number of blocks in the stream(s)"
msgstr "Numărul total de blocuri din fluxuri"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "4."
+msgstr "4."
+
#. type: Plain text
-#: ../src/xz/xz.1:2131
+#: ../src/xz/xz.1
msgid "Compressed size of the file"
msgstr "Dimensiunea comprimată a fișierului"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "5."
+msgstr "5."
+
#. type: Plain text
-#: ../src/xz/xz.1:2133
+#: ../src/xz/xz.1
msgid "Uncompressed size of the file"
msgstr "Dimensiunea necomprimată a fișierului"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "6."
+msgstr "6."
+
#. type: Plain text
-#: ../src/xz/xz.1:2139
-msgid ""
-"Compression ratio, for example, B<0.123>. If ratio is over 9.999, three "
-"dashes (B<--->) are displayed instead of the ratio."
-msgstr ""
-"Raportul de comprimare, de exemplu, B<0,123>. Dacă raportul este peste "
-"9,999, în locul raportului sunt afișate trei liniuțe (B<--->)."
+#: ../src/xz/xz.1
+msgid "Compression ratio, for example, B<0.123>. If ratio is over 9.999, three dashes (B<--->) are displayed instead of the ratio."
+msgstr "Raportul de comprimare, de exemplu, B<0,123>. Dacă raportul este peste 9,999, în locul raportului sunt afișate trei liniuțe (B<--->)."
#. type: IP
-#: ../src/xz/xz.1:2139 ../src/xz/xz.1:2172 ../src/xz/xz.1:2199
-#: ../src/xz/xz.1:2295
+#: ../src/xz/xz.1
#, no-wrap
msgid "7."
msgstr "7."
#. type: Plain text
-#: ../src/xz/xz.1:2152
-msgid ""
-"Comma-separated list of integrity check names. The following strings are "
-"used for the known check types: B<None>, B<CRC32>, B<CRC64>, and "
-"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 ""
-"Lista de nume de verificare a integrității, separate prin virgule. "
-"Următoarele șiruri sunt utilizate pentru tipurile de verificare cunoscute: "
-"B<None>, B<CRC32>, B<CRC64> și B<SHA-256>. Pentru tipurile de verificări "
-"necunoscute, se utilizează B<None->I<N>, unde I<N> este ID-ul de verificare "
-"ca număr zecimal (una sau două cifre)."
+#: ../src/xz/xz.1
+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 "Lista de nume de verificare a integrității, separate prin virgule. Următoarele șiruri sunt utilizate pentru tipurile de verificare cunoscute: B<None>, B<CRC32>, B<CRC64> și B<SHA-256>. Pentru tipurile de verificări necunoscute, se utilizează B<None->I<N>, unde I<N> este ID-ul de verificare ca număr zecimal (una sau două cifre)."
#. type: IP
-#: ../src/xz/xz.1:2152 ../src/xz/xz.1:2174 ../src/xz/xz.1:2201
-#: ../src/xz/xz.1:2298
+#: ../src/xz/xz.1
#, no-wrap
msgid "8."
msgstr "8."
#. type: Plain text
-#: ../src/xz/xz.1:2154
+#: ../src/xz/xz.1
msgid "Total size of stream padding in the file"
msgstr "Dimensiunea totală a umpluturii fluxului din fișier"
#. type: Plain text
-#: ../src/xz/xz.1:2160
+#: ../src/xz/xz.1
msgid "The columns of the B<stream> lines:"
msgstr "Coloanele din liniile B<stream>:"
#. type: Plain text
-#: ../src/xz/xz.1:2164
+#: ../src/xz/xz.1
msgid "Stream number (the first stream is 1)"
msgstr "Numărul fluxului (primul flux este 1)"
#. type: Plain text
-#: ../src/xz/xz.1:2166
+#: ../src/xz/xz.1
msgid "Number of blocks in the stream"
msgstr "Numărul de blocuri din flux"
#. type: Plain text
-#: ../src/xz/xz.1:2168
+#: ../src/xz/xz.1
msgid "Compressed start offset"
msgstr "Poziția de pornire a comprimării"
#. type: Plain text
-#: ../src/xz/xz.1:2170
+#: ../src/xz/xz.1
msgid "Uncompressed start offset"
msgstr "Poziția de pornire a decomprimării"
#. type: Plain text
-#: ../src/xz/xz.1:2172
+#: ../src/xz/xz.1
msgid "Compressed size (does not include stream padding)"
msgstr "Dimensiune comprimată (nu include umplutura fluxului)"
#. type: Plain text
-#: ../src/xz/xz.1:2174 ../src/xz/xz.1:2203 ../src/xz/xz.1:2293
+#: ../src/xz/xz.1
msgid "Uncompressed size"
msgstr "Dimensiune necomprimată"
#. type: Plain text
-#: ../src/xz/xz.1:2176 ../src/xz/xz.1:2205
+#: ../src/xz/xz.1
msgid "Compression ratio"
msgstr "Raport de comprimare"
#. type: IP
-#: ../src/xz/xz.1:2176 ../src/xz/xz.1:2203 ../src/xz/xz.1:2300
+#: ../src/xz/xz.1
#, no-wrap
msgid "9."
msgstr "9."
#. type: Plain text
-#: ../src/xz/xz.1:2178 ../src/xz/xz.1:2207
+#: ../src/xz/xz.1
msgid "Name of the integrity check"
msgstr "Numele verificării de integritate"
#. type: IP
-#: ../src/xz/xz.1:2178 ../src/xz/xz.1:2205 ../src/xz/xz.1:2316
+#: ../src/xz/xz.1
#, no-wrap
msgid "10."
msgstr "10."
#. type: Plain text
-#: ../src/xz/xz.1:2180
+#: ../src/xz/xz.1
msgid "Size of stream padding"
msgstr "Dimensiunea umpluturii fluxului"
#. type: Plain text
-#: ../src/xz/xz.1:2186
+#: ../src/xz/xz.1
msgid "The columns of the B<block> lines:"
msgstr "Coloanele din liniile B<block>:"
#. type: Plain text
-#: ../src/xz/xz.1:2190
+#: ../src/xz/xz.1
msgid "Number of the stream containing this block"
msgstr "Numărul fluxului care conține acest bloc"
#. type: Plain text
-#: ../src/xz/xz.1:2193
-msgid ""
-"Block number relative to the beginning of the stream (the first block is 1)"
+#: ../src/xz/xz.1
+msgid "Block number relative to the beginning of the stream (the first block is 1)"
msgstr "Numărul blocului în raport cu începutul fluxului (primul bloc este 1)"
#. type: Plain text
-#: ../src/xz/xz.1:2195
+#: ../src/xz/xz.1
msgid "Block number relative to the beginning of the file"
msgstr "Numărul blocului în raport cu începutul fișierului"
#. type: Plain text
-#: ../src/xz/xz.1:2197
+#: ../src/xz/xz.1
msgid "Compressed start offset relative to the beginning of the file"
msgstr "Poziția de pornire a comprimării în raport cu începutul fișierului"
#. type: Plain text
-#: ../src/xz/xz.1:2199
+#: ../src/xz/xz.1
msgid "Uncompressed start offset relative to the beginning of the file"
msgstr "Poziția de pornire necomprimată în raport cu începutul fișierului"
#. type: Plain text
-#: ../src/xz/xz.1:2201
+#: ../src/xz/xz.1
msgid "Total compressed size of the block (includes headers)"
msgstr "Dimensiunea totală comprimată a blocului (include antetele)"
#. type: Plain text
-#: ../src/xz/xz.1:2219
-msgid ""
-"If B<--verbose> was specified twice, additional columns are included on the "
-"B<block> lines. These are not displayed with a single B<--verbose>, because "
-"getting this information requires many seeks and can thus be slow:"
-msgstr ""
-"Dacă opțiunea B<--verbose> a fost specificată de două ori, coloane "
-"suplimentare sunt incluse pe liniile B<block>. Acestea nu sunt afișate cu o "
-"singură specificare a opțiunii B<--verbose>, deoarece obținerea acestor "
-"informații necesită multe căutări și, prin urmare, poate fi lentă:"
+#: ../src/xz/xz.1
+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 "Dacă opțiunea B<--verbose> a fost specificată de două ori, coloane suplimentare sunt incluse pe liniile B<block>. Acestea nu sunt afișate cu o singură specificare a opțiunii B<--verbose>, deoarece obținerea acestor informații necesită multe căutări și, prin urmare, poate fi lentă:"
#. type: IP
-#: ../src/xz/xz.1:2221 ../src/xz/xz.1:2321
+#: ../src/xz/xz.1
#, no-wrap
msgid "11."
msgstr "11."
#. type: Plain text
-#: ../src/xz/xz.1:2223
+#: ../src/xz/xz.1
msgid "Value of the integrity check in hexadecimal"
msgstr "Valoarea verificării integrității în hexazecimal"
#. type: IP
-#: ../src/xz/xz.1:2223 ../src/xz/xz.1:2331
+#: ../src/xz/xz.1
#, no-wrap
msgid "12."
msgstr "12."
#. type: Plain text
-#: ../src/xz/xz.1:2225
+#: ../src/xz/xz.1
msgid "Block header size"
msgstr "Dimensiunea antetului blocului"
#. type: IP
-#: ../src/xz/xz.1:2225
+#: ../src/xz/xz.1
#, no-wrap
msgid "13."
msgstr "13."
#. type: Plain text
-#: ../src/xz/xz.1:2235
-msgid ""
-"Block flags: B<c> indicates that compressed size is present, and B<u> "
-"indicates that uncompressed size is present. If the flag is not set, a dash "
-"(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 ""
-"Indicatori de bloc: B<c> indică faptul că este prezentă dimensiunea "
-"comprimată, iar B<u> indică faptul că este prezentă dimensiunea "
-"necomprimată. Dacă indicatorul nu este determinat, este afișată o liniuță "
-"(B<->) pentru a menține lungimea șirului fixă. Pot fi adăugate noi "
-"indicatoare la sfârșitul șirului, în viitor."
+#: ../src/xz/xz.1
+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 "Indicatori de bloc: B<c> indică faptul că este prezentă dimensiunea comprimată, iar B<u> indică faptul că este prezentă dimensiunea necomprimată. Dacă indicatorul nu este determinat, este afișată o liniuță (B<->) pentru a menține lungimea șirului fixă. Pot fi adăugate noi indicatoare la sfârșitul șirului, în viitor."
#. type: IP
-#: ../src/xz/xz.1:2235
+#: ../src/xz/xz.1
#, no-wrap
msgid "14."
msgstr "14."
#. type: Plain text
-#: ../src/xz/xz.1:2238
-msgid ""
-"Size of the actual compressed data in the block (this excludes the block "
-"header, block padding, and check fields)"
-msgstr ""
-"Dimensiunea datelor comprimate reale din bloc (acest lucru exclude antetul "
-"blocului, umplutura blocului și câmpurile de verificare)"
+#: ../src/xz/xz.1
+msgid "Size of the actual compressed data in the block (this excludes the block header, block padding, and check fields)"
+msgstr "Dimensiunea datelor comprimate reale din bloc (acest lucru exclude antetul blocului, umplutura blocului și câmpurile de verificare)"
#. type: IP
-#: ../src/xz/xz.1:2238
+#: ../src/xz/xz.1
#, no-wrap
msgid "15."
msgstr "15."
#. type: Plain text
-#: ../src/xz/xz.1:2243
-msgid ""
-"Amount of memory (in bytes) required to decompress this block with this "
-"B<xz> version"
-msgstr ""
-"Cantitatea de memorie (în octeți) necesară pentru a decomprima acest bloc cu "
-"această versiune B<xz>"
+#: ../src/xz/xz.1
+msgid "Amount of memory (in bytes) required to decompress this block with this B<xz> version"
+msgstr "Cantitatea de memorie (în octeți) necesară pentru a decomprima acest bloc cu această versiune B<xz>"
#. type: IP
-#: ../src/xz/xz.1:2243
+#: ../src/xz/xz.1
#, no-wrap
msgid "16."
msgstr "16."
#. type: Plain text
-#: ../src/xz/xz.1:2250
-msgid ""
-"Filter chain. Note that most of the options used at compression time cannot "
-"be known, because only the options that are needed for decompression are "
-"stored in the B<.xz> headers."
-msgstr ""
-"Lanț de filtrare. Rețineți că majoritatea opțiunilor utilizate în timpul "
-"comprimării nu pot fi cunoscute, deoarece doar opțiunile necesare pentru "
-"decomprimare sunt stocate în anteturile B<.xz>."
+#: ../src/xz/xz.1
+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 "Lanț de filtrare. Rețineți că majoritatea opțiunilor utilizate în timpul comprimării nu pot fi cunoscute, deoarece doar opțiunile necesare pentru decomprimare sunt stocate în anteturile B<.xz>."
#. type: Plain text
-#: ../src/xz/xz.1:2256
+#: ../src/xz/xz.1
msgid "The columns of the B<summary> lines:"
msgstr "Coloanele din liniile B<summary>:"
#. type: Plain text
-#: ../src/xz/xz.1:2263
-msgid ""
-"Amount of memory (in bytes) required to decompress this file with this B<xz> "
-"version"
-msgstr ""
-"Cantitatea de memorie (în octeți) necesară pentru a decomprima acest fișier "
-"cu această versiune B<xz>"
+#: ../src/xz/xz.1
+msgid "Amount of memory (in bytes) required to decompress this file with this B<xz> version"
+msgstr "Cantitatea de memorie (în octeți) necesară pentru a decomprima acest fișier cu această versiune B<xz>"
#. type: Plain text
-#: ../src/xz/xz.1:2269 ../src/xz/xz.1:2327
-msgid ""
-"B<yes> or B<no> indicating if all block headers have both compressed size "
-"and uncompressed size stored in them"
-msgstr ""
-"B<yes> sau B<no> indicând dacă toate antetele blocurilor au atât dimensiunea "
-"comprimată, cât și dimensiunea necomprimată stocate în ele"
+#: ../src/xz/xz.1
+msgid "B<yes> or B<no> indicating if all block headers have both compressed size and uncompressed size stored in them"
+msgstr "B<yes> sau B<no> indicând dacă toate antetele blocurilor au atât dimensiunea comprimată, cât și dimensiunea necomprimată stocate în ele"
#. type: Plain text
-#: ../src/xz/xz.1:2273 ../src/xz/xz.1:2331
+#: ../src/xz/xz.1
msgid "I<Since> B<xz> I<5.1.2alpha:>"
msgstr "I<Începând cu> B<xz> I<5.1.2alpha:>"
#. type: Plain text
-#: ../src/xz/xz.1:2277 ../src/xz/xz.1:2335
+#: ../src/xz/xz.1
msgid "Minimum B<xz> version required to decompress the file"
msgstr "Versiunea B<xz> minimă necesară pentru a decomprima fișierul"
#. type: Plain text
-#: ../src/xz/xz.1:2283
+#: ../src/xz/xz.1
msgid "The columns of the B<totals> line:"
msgstr "Coloanele din linia B<totals>:"
#. type: Plain text
-#: ../src/xz/xz.1:2287
+#: ../src/xz/xz.1
msgid "Number of streams"
msgstr "Numărul de fluxuri"
#. type: Plain text
-#: ../src/xz/xz.1:2289
+#: ../src/xz/xz.1
msgid "Number of blocks"
msgstr "Numărul de blocuri"
#. type: Plain text
-#: ../src/xz/xz.1:2291
+#: ../src/xz/xz.1
msgid "Compressed size"
msgstr "Dimensiunea comprimată"
#. type: Plain text
-#: ../src/xz/xz.1:2295
+#: ../src/xz/xz.1
msgid "Average compression ratio"
msgstr "Raportul mediu de comprimare"
#. type: Plain text
-#: ../src/xz/xz.1:2298
-msgid ""
-"Comma-separated list of integrity check names that were present in the files"
-msgstr ""
-"Lista de nume de verificare a integrității, separate prin virgule, care au "
-"fost prezente în fișiere"
+#: ../src/xz/xz.1
+msgid "Comma-separated list of integrity check names that were present in the files"
+msgstr "Lista de nume de verificare a integrității, separate prin virgule, care au fost prezente în fișiere"
#. type: Plain text
-#: ../src/xz/xz.1:2300
+#: ../src/xz/xz.1
msgid "Stream padding size"
msgstr "Dimensiunea umpluturii fluxului"
#. type: Plain text
-#: ../src/xz/xz.1:2306
-msgid ""
-"Number of files. This is here to keep the order of the earlier columns the "
-"same as on B<file> lines."
-msgstr ""
-"Numărul de fișiere. Aceasta este aici pentru a păstra ordinea coloanelor "
-"anterioare la fel ca pe liniile B<file>."
+#: ../src/xz/xz.1
+msgid "Number of files. This is here to keep the order of the earlier columns the same as on B<file> lines."
+msgstr "Numărul de fișiere. Aceasta este aici pentru a păstra ordinea coloanelor anterioare la fel ca pe liniile B<file>."
#. type: Plain text
-#: ../src/xz/xz.1:2314
-msgid ""
-"If B<--verbose> was specified twice, additional columns are included on the "
-"B<totals> line:"
-msgstr ""
-"Dacă opțiunea B<--verbose> a fost specificată de două ori, pe linia "
-"B<totals> sunt incluse coloane suplimentare:"
+#: ../src/xz/xz.1
+msgid "If B<--verbose> was specified twice, additional columns are included on the B<totals> line:"
+msgstr "Dacă opțiunea B<--verbose> a fost specificată de două ori, pe linia B<totals> sunt incluse coloane suplimentare:"
#. type: Plain text
-#: ../src/xz/xz.1:2321
-msgid ""
-"Maximum amount of memory (in bytes) required to decompress the files with "
-"this B<xz> version"
-msgstr ""
-"Cantitatea maximă de memorie (în octeți) necesară pentru a decomprima "
-"fișierele cu această versiune B<xz>"
+#: ../src/xz/xz.1
+msgid "Maximum amount of memory (in bytes) required to decompress the files with this B<xz> version"
+msgstr "Cantitatea maximă de memorie (în octeți) necesară pentru a decomprima fișierele cu această versiune B<xz>"
#. type: Plain text
-#: ../src/xz/xz.1:2341
-msgid ""
-"Future versions may add new line types and new columns can be added to the "
-"existing line types, but the existing columns won't be changed."
-msgstr ""
-"Versiunile viitoare pot adăuga noi tipuri de linii și pot fi adăugate "
-"coloane noi la tipurile de linii existente, dar coloanele existente nu vor "
-"fi modificate."
+#: ../src/xz/xz.1
+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 "Versiunile viitoare pot adăuga noi tipuri de linii și pot fi adăugate coloane noi la tipurile de linii existente, dar coloanele existente nu vor fi modificate."
+
+#. type: SS
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "Filters help"
+msgstr "Ajutor pentru filtrare"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<xz --robot --filters-help> prints the supported filters in the following format:"
+msgstr "B<xz --robot --filters-help> afișează filtrele acceptate în următorul format:"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "I<filter>B<:>I<option>B<=E<lt>>I<value>B<E<gt>,>I<option>B<=E<lt>>I<value>B<E<gt>>..."
+msgstr "I<filtru>B<:>I<opțiune>B<=E<lt>>I<valoare>B<E<gt>,>I<opțiune>B<=E<lt>>I<valoare>B<E<gt>>..."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<filter>"
+msgstr "B<filtru>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Name of the filter"
+msgstr "Numele filtrului"
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<option>"
+msgstr "I<opțiune>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Name of a filter specific option"
+msgstr "Numele unei opțiuni specifice unui filtru"
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<value>"
+msgstr "I<valoare>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Numeric I<value> ranges appear as B<E<lt>>I<min>B<->I<max>B<E<gt>>. String I<value> choices are shown within B<E<lt> E<gt>> and separated by a B<|> character."
+msgstr "Intervalele numerice I<valoare> apar ca B<E<lt>>I<min>B<->I<max>B<E<gt>>. Alegerile I<valoare> de tip șir de caractere sunt afișate în cadrul B<E<lt> E<gt>> și separate de un caracter B<|>."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Each filter is printed on its own line."
+msgstr "Fiecare filtru este afișat pe propria linie."
+
+#. type: SS
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "Memory limit information"
+msgstr "Informații privind limita memoriei"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<xz --robot --info-memory> prints a single line with multiple tab-separated columns:"
+msgstr "B<xz --robot --info-memory> afișează o singură linie cu multiple coloane separate prin tabulatoare:"
+
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "1."
+msgstr "1."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Total amount of physical memory (RAM) in bytes."
+msgstr "Cantitatea totală de memorie fizică (RAM) în octeți."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Memory usage limit for compression in bytes (B<--memlimit-compress>). A special value of B<0> indicates the default setting which for single-threaded mode is the same as no limit."
+msgstr "Limita de utilizare a memoriei pentru comprimare în octeți (B<--memlimit-compress>). O valoare specială de B<0> indică configurarea implicită, care pentru modul cu un singur fir este la fel ca fără limită."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Memory usage limit for decompression in bytes (B<--memlimit-decompress>). A special value of B<0> indicates the default setting which for single-threaded mode is the same as no limit."
+msgstr "Limita de utilizare a memoriei pentru decomprimare în octeți (B<--memlimit-decompress>). O valoare specială de B<0> indică configurarea implicită, care pentru modul cu un singur fir este la fel ca fără limită."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.3.4alpha: Memory usage for multi-threaded decompression in bytes (B<--memlimit-mt-decompress>). This is never zero because a system-specific default value shown in the column 5 is used if no limit has been specified explicitly. This is also never greater than the value in the column 3 even if a larger value has been specified with B<--memlimit-mt-decompress>."
+msgstr "Începând cu B<xz> 5.3.4alpha: Utilizarea memoriei pentru decomprimarea cu mai multe fire în octeți (B<--memlimit-mt-decompress>). Acesta nu este niciodată zero, deoarece o valoare implicită specifică sistemului afișată în coloana 5 este utilizată dacă nu a fost specificată în mod explicit nicio limită. De asemenea, aceasta nu este niciodată mai mare decât valoarea din coloana 3, chiar dacă a fost specificată o valoare mai mare cu B<--memlimit-mt-decompress>."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.3.4alpha: A system-specific default memory usage limit that is used to limit the number of threads when compressing with an automatic number of threads (B<--threads=0>) and no memory usage limit has been specified (B<--memlimit-compress>). This is also used as the default value for B<--memlimit-mt-decompress>."
+msgstr "Începând cu B<xz> 5.3.4alpha: o limită implicită de utilizare a memoriei specifică sistemului, care este utilizată pentru a limita numărul de fire de execuție atunci când se comprimă cu un număr automat de fire de execuție (B<--threads=0>) și nicio limită de utilizare a memoriei nu fost specificată cu (B<--memlimit-compress>). Aceasta este, de asemenea, utilizată ca valoare implicită pentru B<--memlimit-mt-decompress>."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.3.4alpha: Number of available processor threads."
+msgstr "Începând cu B<xz> 5.3.4alpha: numărul de fire de execuție de procesor disponibile."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "In the future, the output of B<xz --robot --info-memory> may have more columns, but never more than a single line."
+msgstr "În viitor, rezultatul B<xz --robot --info-memory> poate avea mai multe coloane, dar niciodată mai mult de o singură linie."
+
+#. type: SS
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "Version"
+msgstr "Versiunea"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<xz --robot --version> prints the version number of B<xz> and liblzma in the following format:"
+msgstr "B<xz --robot --version> va afișa numărul versiunii B<xz> și liblzma în următorul format:"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<XZ_VERSION=>I<XYYYZZZS>"
+msgstr "B<XZ_VERSION=>I<XYYYZZZS>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
+msgstr "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<X>"
+msgstr "I<X>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Major version."
+msgstr "Versiunea majoră."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<YYY>"
+msgstr "I<YYY>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Minor version. Even numbers are stable. Odd numbers are alpha or beta versions."
+msgstr "Versiunea minoră. Numerele pare sunt prezente în versiunile stabile. Numerele impare sunt prezente în versiunile alfa sau beta."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<ZZZ>"
+msgstr "I<ZZZ>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Patch level for stable releases or just a counter for development releases."
+msgstr "Nivelul de plasture(patch) pentru versiunile stabile sau doar un contor pentru versiunile de dezvoltare."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<S>"
+msgstr "I<S>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Stability. 0 is alpha, 1 is beta, and 2 is stable. I<S> should be always 2 when I<YYY> is even."
+msgstr "Stabilitate. 0 este alfa, 1 este beta și 2 este stabil. I<S> trebuie să fie întotdeauna 2 atunci când I<AAA> este par."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "I<XYYYZZZS> are the same on both lines if B<xz> and liblzma are from the same XZ Utils release."
+msgstr "I<XYYYZZZS> sunt aceleași pe ambele linii dacă B<xz> și liblzma sunt din aceeași versiune XZ Utils."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Examples: 4.999.9beta is B<49990091> and 5.0.0 is B<50000002>."
+msgstr "Exemple: 4.999.9beta este B<49990091> și 5.0.0 este B<50000002>."
#. type: SH
-#: ../src/xz/xz.1:2342 ../src/xzdec/xzdec.1:104 ../src/lzmainfo/lzmainfo.1:44
-#: ../src/scripts/xzgrep.1:81
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1
#, no-wrap
msgid "EXIT STATUS"
msgstr "STARE DE IEȘIRE"
#. type: TP
-#: ../src/xz/xz.1:2343 ../src/xzdec/xzdec.1:105 ../src/lzmainfo/lzmainfo.1:45
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "B<0>"
msgstr "B<0>"
#. type: Plain text
-#: ../src/xz/xz.1:2346 ../src/lzmainfo/lzmainfo.1:48
+#: ../src/xz/xz.1 ../src/lzmainfo/lzmainfo.1
msgid "All is good."
msgstr "Totul este bine."
#. type: TP
-#: ../src/xz/xz.1:2346 ../src/xzdec/xzdec.1:108 ../src/lzmainfo/lzmainfo.1:48
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "B<1>"
msgstr "B<1>"
#. type: Plain text
-#: ../src/xz/xz.1:2349 ../src/xzdec/xzdec.1:111 ../src/lzmainfo/lzmainfo.1:51
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
msgid "An error occurred."
msgstr "A apărut o eroare."
#. type: TP
-#: ../src/xz/xz.1:2349
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<2>"
msgstr "B<2>"
#. type: Plain text
-#: ../src/xz/xz.1:2353
+#: ../src/xz/xz.1
msgid "Something worth a warning occurred, but no actual errors occurred."
-msgstr ""
-"A apărut ceva care merită să fie avertizat, dar nu au apărut erori reale."
+msgstr "A apărut ceva care merită să fie avertizat, dar nu au apărut erori reale."
#. type: Plain text
-#: ../src/xz/xz.1:2356
-msgid ""
-"Notices (not warnings or errors) printed on standard error don't affect the "
-"exit status."
-msgstr ""
-"Notificările (nu avertismentele sau erorile) afișate la ieșirea de eroare "
-"standard nu afectează starea de ieșire."
+#: ../src/xz/xz.1
+msgid "Notices (not warnings or errors) printed on standard error don't affect the exit status."
+msgstr "Notificările (nu avertismentele sau erorile) afișate la ieșirea de eroare standard nu afectează starea de ieșire."
#. type: SH
-#: ../src/xz/xz.1:2357 ../src/scripts/xzgrep.1:94 ../src/scripts/xzless.1:52
+#: ../src/xz/xz.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "ENVIRONMENT"
msgstr "VARIABILE DE MEDIU"
#. type: Plain text
-#: ../src/xz/xz.1:2370
-msgid ""
-"B<xz> parses space-separated lists of options from the environment variables "
-"B<XZ_DEFAULTS> and B<XZ_OPT>, in this order, before parsing the options from "
-"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> analizează liste de opțiuni separate prin spații din variabilele de "
-"mediu B<XZ_DEFAULTS> și B<XZ_OPT>, în această ordine, înainte de a analiza "
-"opțiunile din linia de comandă. Rețineți că numai opțiunile sunt analizate "
-"din variabilele de mediu; toate non-opțiunile sunt ignorate în tăcere. "
-"Analiza se face cu funcția B<getopt_long>(3) care este folosită și pentru "
-"argumentele liniei de comandă."
+#: ../src/xz/xz.1
+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> analizează liste de opțiuni separate prin spații din variabilele de mediu B<XZ_DEFAULTS> și B<XZ_OPT>, în această ordine, înainte de a analiza opțiunile din linia de comandă. Rețineți că numai opțiunile sunt analizate din variabilele de mediu; toate non-opțiunile sunt ignorate în tăcere. Analiza se face cu funcția B<getopt_long>(3) care este folosită și pentru argumentele liniei de comandă."
#. type: TP
-#: ../src/xz/xz.1:2370
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<XZ_DEFAULTS>"
msgstr "B<XZ_DEFAULTS>"
#. type: Plain text
-#: ../src/xz/xz.1:2379
-msgid ""
-"User-specific or system-wide default options. Typically this is set in a "
-"shell initialization script to enable B<xz>'s memory usage limiter by "
-"default. Excluding shell initialization scripts and similar special cases, "
-"scripts must never set or unset B<XZ_DEFAULTS>."
-msgstr ""
-"Opțiuni implicite specifice utilizatorului sau la nivelul întregului "
-"sistem. De obicei, acest lucru este specificat într-un script de "
-"inițializare shell pentru a activa limitatorul de utilizare a memoriei lui "
-"B<xz> implicit. Excluzând scripturile de inițializare shell și cazurile "
-"speciale similare, scripturile nu trebuie niciodată să modifice sau să "
-"dezactiveze B<XZ_DEFAULTS>."
+#: ../src/xz/xz.1
+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 "Opțiuni implicite specifice utilizatorului sau la nivelul întregului sistem. De obicei, acest lucru este specificat într-un script de inițializare shell pentru a activa limitatorul de utilizare a memoriei lui B<xz> implicit. Excluzând scripturile de inițializare shell și cazurile speciale similare, scripturile nu trebuie niciodată să modifice sau să dezactiveze B<XZ_DEFAULTS>."
#. type: TP
-#: ../src/xz/xz.1:2379
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<XZ_OPT>"
msgstr "B<XZ_OPT>"
#. type: Plain text
-#: ../src/xz/xz.1:2390
-msgid ""
-"This is for passing options to B<xz> when it is not possible to set the "
-"options directly on the B<xz> command line. This is the case when B<xz> is "
-"run by a script or tool, for example, GNU B<tar>(1):"
-msgstr ""
-"Acest lucru este pentru transmiterea opțiunilor către B<xz> atunci când nu "
-"este posibil să definiți opțiunile direct în linia de comandă a B<xz>. "
-"Acesta este cazul când B<xz> este rulat de un script sau de un instrument, "
-"de exemplu, GNU B<tar>(1):"
+#: ../src/xz/xz.1
+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 when B<xz> is run by a script or tool, for example, GNU B<tar>(1):"
+msgstr "Acest lucru este pentru transmiterea opțiunilor către B<xz> atunci când nu este posibil să definiți opțiunile direct în linia de comandă a B<xz>. Acesta este cazul când B<xz> este rulat de un script sau de un instrument, de exemplu, GNU B<tar>(1):"
#. type: Plain text
-#: ../src/xz/xz.1:2396
-#, no-wrap
-msgid "CW<XZ_OPT=-2v tar caf foo.tar.xz foo>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<XZ_OPT=-2v tar caf foo.tar.xz foo>\n"
+msgid "\\f(CRXZ_OPT=-2v tar caf foo.tar.xz foo\\fR\n"
msgstr "CW<XZ_OPT=-2v tar caf foo.tar.xz foo>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2410
-msgid ""
-"Scripts may use B<XZ_OPT>, for example, to set script-specific default "
-"compression options. It is still recommended to allow users to override "
-"B<XZ_OPT> if that is reasonable. For example, in B<sh>(1) scripts one may "
-"use something like this:"
-msgstr ""
-"Scripturile pot folosi B<XZ_OPT>, de exemplu, pentru a configura opțiunile "
-"implicite de comprimare specifice scriptului. Se recomandă totuși să se "
-"permită utilizatorilor să înlocuiască B<XZ_OPT> dacă acest lucru este "
-"rezonabil. De exemplu, în scripturile B<sh>(1) se poate folosi ceva de "
-"genul acesta:"
+#: ../src/xz/xz.1
+msgid "Scripts may use B<XZ_OPT>, for example, to set script-specific default compression options. It is still recommended to allow users to override B<XZ_OPT> if that is reasonable. For example, in B<sh>(1) scripts one may use something like this:"
+msgstr "Scripturile pot folosi B<XZ_OPT>, de exemplu, pentru a configura opțiunile implicite de comprimare specifice scriptului. Se recomandă totuși să se permită utilizatorilor să înlocuiască B<XZ_OPT> dacă acest lucru este rezonabil. De exemplu, în scripturile B<sh>(1) se poate folosi ceva de genul acesta:"
#. type: Plain text
-#: ../src/xz/xz.1:2417
-#, no-wrap
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid ""
+#| "CW<XZ_OPT=${XZ_OPT-\"-7e\"}\n"
+#| "export XZ_OPT>\n"
msgid ""
-"CW<XZ_OPT=${XZ_OPT-\"-7e\"}\n"
-"export XZ_OPT>\n"
+"\\f(CRXZ_OPT=${XZ_OPT-\"-7e\"}\n"
+"export XZ_OPT\\fR\n"
msgstr ""
"CW<XZ_OPT=${XZ_OPT-\"-7e\"}\n"
"export XZ_OPT>\n"
#. type: SH
-#: ../src/xz/xz.1:2422
+#: ../src/xz/xz.1
#, no-wrap
msgid "LZMA UTILS COMPATIBILITY"
msgstr "COMPATIBILITATE CU LZMA-UTILS"
#. type: Plain text
-#: ../src/xz/xz.1:2435
-msgid ""
-"The command line syntax of B<xz> is practically a superset of B<lzma>, "
-"B<unlzma>, and B<lzcat> as found from LZMA Utils 4.32.x. In most cases, it "
-"is possible to replace LZMA Utils with XZ Utils without breaking existing "
-"scripts. There are some incompatibilities though, which may sometimes cause "
-"problems."
-msgstr ""
-"Sintaxa liniei de comandă a lui B<xz> este practic o super-colecție de "
-"B<lzma>, B<unlzma> și B<lzcat> așa cum se găsește în LZMA Utils 4.32.x. În "
-"cele mai multe cazuri, este posibil să înlocuiți LZMA Utils cu XZ Utils fără "
-"a întrerupe scripturile existente. Există totuși unele incompatibilități, "
-"care uneori pot cauza probleme."
+#: ../src/xz/xz.1
+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 "Sintaxa liniei de comandă a lui B<xz> este practic o super-colecție de B<lzma>, B<unlzma> și B<lzcat> așa cum se găsește în LZMA Utils 4.32.x. În cele mai multe cazuri, este posibil să înlocuiți LZMA Utils cu XZ Utils fără a întrerupe scripturile existente. Există totuși unele incompatibilități, care uneori pot cauza probleme."
#. type: SS
-#: ../src/xz/xz.1:2436
+#: ../src/xz/xz.1
#, no-wrap
msgid "Compression preset levels"
msgstr "Niveluri de comprimare prestabilite"
#. type: Plain text
-#: ../src/xz/xz.1:2443
-msgid ""
-"The numbering of the compression level presets is not identical in B<xz> and "
-"LZMA Utils. The most important difference is how dictionary sizes are "
-"mapped to different presets. Dictionary size is roughly equal to the "
-"decompressor memory usage."
-msgstr ""
-"Numerotarea nivelurilor de comprimare prestabilite nu este identică în B<xz> "
-"și LZMA Utils. Cea mai importantă diferență este modul în care dimensiunile "
-"dicționarului sunt atribuite diferitelor niveluri prestabilite. Dimensiunea "
-"dicționarului este aproximativ egală cu memoria utilizată la decomprimare."
+#: ../src/xz/xz.1
+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 "Numerotarea nivelurilor de comprimare prestabilite nu este identică în B<xz> și LZMA Utils. Cea mai importantă diferență este modul în care dimensiunile dicționarului sunt atribuite diferitelor niveluri prestabilite. Dimensiunea dicționarului este aproximativ egală cu memoria utilizată la decomprimare."
#. type: tbl table
-#: ../src/xz/xz.1:2449 ../src/xz/xz.1:2474
+#: ../src/xz/xz.1
#, no-wrap
msgid "Level"
msgstr "Nivel"
#. type: tbl table
-#: ../src/xz/xz.1:2449 ../src/xz/xz.1:2474
+#: ../src/xz/xz.1
#, no-wrap
msgid "xz"
msgstr "xz"
#. type: tbl table
-#: ../src/xz/xz.1:2449
+#: ../src/xz/xz.1
#, no-wrap
msgid "LZMA Utils"
msgstr "LZMA Utils"
#. type: tbl table
-#: ../src/xz/xz.1:2450 ../src/xz/xz.1:2475
+#: ../src/xz/xz.1
#, no-wrap
msgid "N/A"
msgstr "N/A"
#. type: tbl table
-#: ../src/xz/xz.1:2451
+#: ../src/xz/xz.1
#, no-wrap
msgid "64 KiB"
msgstr "64 KiB"
#. type: tbl table
-#: ../src/xz/xz.1:2453
+#: ../src/xz/xz.1
#, no-wrap
msgid "512 KiB"
msgstr "512 KiB"
#. type: Plain text
-#: ../src/xz/xz.1:2468
-msgid ""
-"The dictionary size differences affect the compressor memory usage too, but "
-"there are some other differences between LZMA Utils and XZ Utils, which make "
-"the difference even bigger:"
-msgstr ""
-"Diferențele de dimensiune a dicționarului afectează deasemenea cantitatea de "
-"memorie utilizată la comprimare dar există și alte diferențe între LZMA "
-"Utils și XZ Utils, care fac diferența și mai mare:"
+#: ../src/xz/xz.1
+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 "Diferențele de dimensiune a dicționarului afectează deasemenea cantitatea de memorie utilizată la comprimare dar există și alte diferențe între LZMA Utils și XZ Utils, care fac diferența și mai mare:"
#. type: tbl table
-#: ../src/xz/xz.1:2474
+#: ../src/xz/xz.1
#, no-wrap
msgid "LZMA Utils 4.32.x"
msgstr "LZMA Utils 4.32.x"
#. type: tbl table
-#: ../src/xz/xz.1:2477 ../src/xz/xz.1:2478
+#: ../src/xz/xz.1
#, no-wrap
msgid "12 MiB"
msgstr "12 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:2480
+#: ../src/xz/xz.1
#, no-wrap
msgid "26 MiB"
msgstr "26 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:2481
+#: ../src/xz/xz.1
#, no-wrap
msgid "45 MiB"
msgstr "45 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:2482
+#: ../src/xz/xz.1
#, no-wrap
msgid "83 MiB"
msgstr "83 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:2483
+#: ../src/xz/xz.1
#, no-wrap
msgid "159 MiB"
msgstr "159 MiB"
#. type: tbl table
-#: ../src/xz/xz.1:2484
+#: ../src/xz/xz.1
#, no-wrap
msgid "311 MiB"
msgstr "311 MiB"
#. type: Plain text
-#: ../src/xz/xz.1:2493
-msgid ""
-"The default preset level in LZMA Utils is B<-7> while in XZ Utils it is "
-"B<-6>, so both use an 8 MiB dictionary by default."
-msgstr ""
-"Nivelul prestabilit implicit în LZMA Utils este B<-7>, în timp ce în XZ "
-"Utils este B<-6>, deci ambele folosesc un dicționar de 8Mio în mod implicit."
+#: ../src/xz/xz.1
+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 "Nivelul prestabilit implicit în LZMA Utils este B<-7>, în timp ce în XZ Utils este B<-6>, deci ambele folosesc un dicționar de 8Mio în mod implicit."
#. type: SS
-#: ../src/xz/xz.1:2494
+#: ../src/xz/xz.1
#, no-wrap
msgid "Streamed vs. non-streamed .lzma files"
msgstr "Fișiere .lzma transmise în flux vs. netransmise în flux"
#. type: Plain text
-#: ../src/xz/xz.1:2504
-msgid ""
-"The uncompressed size of the file can be stored in the B<.lzma> header. "
-"LZMA Utils does that when compressing regular files. The alternative is to "
-"mark that uncompressed size is unknown and use end-of-payload marker to "
-"indicate where the decompressor should stop. LZMA Utils uses this method "
-"when uncompressed size isn't known, which is the case, for example, in pipes."
-msgstr ""
-"Dimensiunea necomprimată a fișierului poate fi stocată în antetul B<.lzma>. "
-"LZMA Utils face asta atunci când comprimă fișiere obișnuite. Alternativa "
-"este să marcați că dimensiunea necomprimată este necunoscută și să folosiți "
-"marcajul de sfârșit de încărcare pentru a indica unde ar trebui să se "
-"oprească decomprimarea. LZMA Utils folosește această metodă atunci când "
-"dimensiunea necomprimată nu este cunoscută, ceea ce este cazul, de exemplu, "
-"când se folosesc conducte."
+#: ../src/xz/xz.1
+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 "Dimensiunea necomprimată a fișierului poate fi stocată în antetul B<.lzma>. LZMA Utils face asta atunci când comprimă fișiere obișnuite. Alternativa este să marcați că dimensiunea necomprimată este necunoscută și să folosiți marcajul de sfârșit de încărcare pentru a indica unde ar trebui să se oprească decomprimarea. LZMA Utils folosește această metodă atunci când dimensiunea necomprimată nu este cunoscută, ceea ce este cazul, de exemplu, când se folosesc conducte."
#. type: Plain text
-#: ../src/xz/xz.1:2525
-msgid ""
-"B<xz> supports decompressing B<.lzma> files with or without end-of-payload "
-"marker, but all B<.lzma> files created by B<xz> will use end-of-payload "
-"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> acceptă decomprimarea fișierelor B<.lzma> cu sau fără marcaj de "
-"sfârșit de încărcare, dar toate fișierele B<.lzma> create de B<xz> vor "
-"folosi marcajul de sfârșit de încărcare și vor avea dimensiunea necomprimată "
-"marcată ca necunoscută în antetul B<.lzma>. Aceasta poate fi o problemă în "
-"unele situații mai puțin frecvente. De exemplu, un instrument de "
-"decomprimare B<.lzma> încorporat într-un dispozitiv poate funcționa numai cu "
-"fișiere care au dimensiunea necomprimată cunoscută. Dacă întâmpinați "
-"această problemă, trebuie să utilizați LZMA Utils sau LZMA SDK pentru a crea "
-"fișiere B<.lzma> cu dimensiunea necomprimată cunoscută."
+#: ../src/xz/xz.1
+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> acceptă decomprimarea fișierelor B<.lzma> cu sau fără marcaj de sfârșit de încărcare, dar toate fișierele B<.lzma> create de B<xz> vor folosi marcajul de sfârșit de încărcare și vor avea dimensiunea necomprimată marcată ca necunoscută în antetul B<.lzma>. Aceasta poate fi o problemă în unele situații mai puțin frecvente. De exemplu, un instrument de decomprimare B<.lzma> încorporat într-un dispozitiv poate funcționa numai cu fișiere care au dimensiunea necomprimată cunoscută. Dacă întâmpinați această problemă, trebuie să utilizați LZMA Utils sau LZMA SDK pentru a crea fișiere B<.lzma> cu dimensiunea necomprimată cunoscută."
#. type: SS
-#: ../src/xz/xz.1:2526
+#: ../src/xz/xz.1
#, no-wrap
msgid "Unsupported .lzma files"
msgstr "Fișiere .lzma neacceptate"
#. type: Plain text
-#: ../src/xz/xz.1:2549
-msgid ""
-"The B<.lzma> format allows I<lc> values up to 8, and I<lp> values up to 4. "
-"LZMA Utils can decompress files with any I<lc> and I<lp>, but always creates "
-"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 ""
-"Formatul B<.lzma> permite valori I<lc> de până la 8 și valori I<lp> de până "
-"la 4. LZMA Utils poate decomprima fișiere cu orice I<lc> și I<lp>, dar "
-"creează întotdeauna fișiere cu B<lc=3> și B<lp=0>. Crearea de fișiere cu "
-"alte I<lc> și I<lp> este posibilă cu B<xz> și cu LZMA SDK."
+#: ../src/xz/xz.1
+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 "Formatul B<.lzma> permite valori I<lc> de până la 8 și valori I<lp> de până la 4. LZMA Utils poate decomprima fișiere cu orice I<lc> și I<lp>, dar creează întotdeauna fișiere cu B<lc=3> și B<lp=0>. Crearea de fișiere cu alte I<lc> și I<lp> este posibilă cu B<xz> și cu LZMA SDK."
#. type: Plain text
-#: ../src/xz/xz.1:2560
-msgid ""
-"The implementation of the LZMA1 filter in liblzma requires that the sum of "
-"I<lc> and I<lp> must not exceed 4. Thus, B<.lzma> files, which exceed this "
-"limitation, cannot be decompressed with B<xz>."
-msgstr ""
-"Implementarea filtrului LZMA1 în liblzma necesită ca suma I<lc> și I<lp> să "
-"nu depășească 4. Altfel, fișierele B<.lzma>, care depășesc această "
-"limitare, nu pot fi decomprimate cu B<xz>."
+#: ../src/xz/xz.1
+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 "Implementarea filtrului LZMA1 în liblzma necesită ca suma I<lc> și I<lp> să nu depășească 4. Altfel, fișierele B<.lzma>, care depășesc această limitare, nu pot fi decomprimate cu B<xz>."
#. type: Plain text
-#: ../src/xz/xz.1:2575
-msgid ""
-"LZMA Utils creates only B<.lzma> files which have a dictionary size of "
-"2^I<n> (a power of 2) but accepts files with any dictionary size. liblzma "
-"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 ""
-"LZMA Utils creează numai fișiere B<.lzma> care au o dimensiune de dicționar "
-"de 2^I<n> (o putere de 2), dar acceptă fișiere cu orice dimensiune de "
-"dicționar. liblzma acceptă numai fișierele B<.lzma> care au dimensiunea de "
-"dicționar de 2^I<n> sau 2^I<n> + 2^(I<n>-1). Acest lucru este pentru a "
-"reduce numărul de „fals pozitiv” atunci când se detectează fișiere B<.lzma>."
+#: ../src/xz/xz.1
+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 "LZMA Utils creează numai fișiere B<.lzma> care au o dimensiune de dicționar de 2^I<n> (o putere de 2), dar acceptă fișiere cu orice dimensiune de dicționar. liblzma acceptă numai fișierele B<.lzma> care au dimensiunea de dicționar de 2^I<n> sau 2^I<n> + 2^(I<n>-1). Acest lucru este pentru a reduce numărul de „fals pozitiv” atunci când se detectează fișiere B<.lzma>."
#. type: Plain text
-#: ../src/xz/xz.1:2580
-msgid ""
-"These limitations shouldn't be a problem in practice, since practically all "
-"B<.lzma> files have been compressed with settings that liblzma will accept."
-msgstr ""
-"Aceste limitări nu ar trebui să fie o problemă în practică, deoarece practic "
-"toate fișierele B<.lzma> au fost comprimate cu opțiuni pe care liblzma le va "
-"accepta."
+#: ../src/xz/xz.1
+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 "Aceste limitări nu ar trebui să fie o problemă în practică, deoarece practic toate fișierele B<.lzma> au fost comprimate cu opțiuni pe care liblzma le va accepta."
#. type: SS
-#: ../src/xz/xz.1:2581
+#: ../src/xz/xz.1
#, no-wrap
msgid "Trailing garbage"
msgstr "Resturi rămase"
#. type: Plain text
-#: ../src/xz/xz.1:2591
-msgid ""
-"When decompressing, LZMA Utils silently ignore everything after the first B<."
-"lzma> stream. In most situations, this is a bug. This also means that LZMA "
-"Utils don't support decompressing concatenated B<.lzma> files."
-msgstr ""
-"Când decomprimă, LZMA Utils ignoră în tăcere totul după primul flux B<."
-"lzma>. În majoritatea situațiilor, aceasta este o eroare. Aceasta "
-"înseamnă, de asemenea, că LZMA Utils nu acceptă decomprimarea fișierelor B<."
-"lzma> concatenate."
+#: ../src/xz/xz.1
+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 "Când decomprimă, LZMA Utils ignoră în tăcere totul după primul flux B<.lzma>. În majoritatea situațiilor, aceasta este o eroare. Aceasta înseamnă, de asemenea, că LZMA Utils nu acceptă decomprimarea fișierelor B<.lzma> concatenate."
#. type: Plain text
-#: ../src/xz/xz.1:2601
-msgid ""
-"If there is data left after the first B<.lzma> stream, B<xz> considers the "
-"file to be corrupt unless B<--single-stream> was used. This may break "
-"obscure scripts which have assumed that trailing garbage is ignored."
-msgstr ""
-"Dacă au rămas date după primul flux B<.lzma>, B<xz> consideră că fișierul "
-"este corupt, cu excepția cazului în care a fost utilizată opțiunea B<--"
-"single-stream>. Acest lucru poate rupe scripturile obscure(scrise "
-"deficitar) care presupun că resturile rămase sunt ignorate."
+#: ../src/xz/xz.1
+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 "Dacă au rămas date după primul flux B<.lzma>, B<xz> consideră că fișierul este corupt, cu excepția cazului în care a fost utilizată opțiunea B<--single-stream>. Acest lucru poate rupe scripturile obscure(scrise deficitar) care presupun că resturile rămase sunt ignorate."
#. type: SH
-#: ../src/xz/xz.1:2602 ../src/xzdec/xzdec.1:117
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "NOTES"
msgstr "NOTE"
#. type: SS
-#: ../src/xz/xz.1:2604
+#: ../src/xz/xz.1
#, no-wrap
msgid "Compressed output may vary"
msgstr "Rezultatul comprimării poate varia"
#. type: Plain text
-#: ../src/xz/xz.1:2615
-msgid ""
-"The exact compressed output produced from the same uncompressed input file "
-"may vary between XZ Utils versions even if compression options are "
-"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 ""
-"Ieșirea exactă comprimată produsă din același fișier de intrare necomprimat "
-"poate varia între versiunile XZ Utils, chiar dacă opțiunile de comprimare "
-"sunt identice. Acest lucru se datorează faptului că instrumentul "
-"codificator poate fi îmbunătățit (comprimare mai rapidă sau mai bună) fără a "
-"afecta formatul fișierului. Ieșirea poate varia chiar și între compilările "
-"diferite ale aceleiași versiuni XZ Utils, dacă sunt utilizate opțiuni "
-"diferite de compilare."
+#: ../src/xz/xz.1
+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 "Ieșirea exactă comprimată produsă din același fișier de intrare necomprimat poate varia între versiunile XZ Utils, chiar dacă opțiunile de comprimare sunt identice. Acest lucru se datorează faptului că instrumentul codificator poate fi îmbunătățit (comprimare mai rapidă sau mai bună) fără a afecta formatul fișierului. Ieșirea poate varia chiar și între compilările diferite ale aceleiași versiuni XZ Utils, dacă sunt utilizate opțiuni diferite de compilare."
#. type: Plain text
-#: ../src/xz/xz.1:2625
-msgid ""
-"The above means that once B<--rsyncable> has been implemented, the resulting "
-"files won't necessarily be rsyncable unless both old and new files have been "
-"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 ""
-"Cele de mai sus înseamnă că odată ce opțiunea B<--rsyncable> a fost "
-"utilizată, fișierele rezultate nu vor fi neapărat sincronizate cu rsync "
-"decât dacă atât fișierele vechi, cât și cele noi au fost comprimate cu "
-"aceeași versiune xz. Această problemă poate fi remediată dacă o parte a "
-"implementării codificatorului este înghețată pentru a menține stabilă "
-"ieșirea „rsyncabilă” între versiunile xz."
+#: ../src/xz/xz.1
+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 "Cele de mai sus înseamnă că odată ce opțiunea B<--rsyncable> a fost utilizată, fișierele rezultate nu vor fi neapărat sincronizate cu rsync decât dacă atât fișierele vechi, cât și cele noi au fost comprimate cu aceeași versiune xz. Această problemă poate fi remediată dacă o parte a implementării codificatorului este înghețată pentru a menține stabilă ieșirea „rsyncabilă” între versiunile xz."
#. type: SS
-#: ../src/xz/xz.1:2626
+#: ../src/xz/xz.1
#, no-wrap
msgid "Embedded .xz decompressors"
msgstr "Instrumente de decomprimare .xz încorporate"
#. type: Plain text
-#: ../src/xz/xz.1:2643
-msgid ""
-"Embedded B<.xz> decompressor implementations like XZ Embedded don't "
-"necessarily support files created with integrity I<check> types other than "
-"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 ""
-"Implementările instrumentului de decomprimare B<.xz> încorporat, cum ar fi "
-"XZ Embedded, nu acceptă neapărat fișiere create cu tipuri de I<verificare> a "
-"integrității, altele decât B<none> și B<crc32>. Deoarece valoarea implicită "
-"este B<--check=crc64>, trebuie să utilizați B<--check=none> sau B<--"
-"check=crc32> atunci când creați fișiere pentru sistemele încorporate."
+#: ../src/xz/xz.1
+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 "Implementările instrumentului de decomprimare B<.xz> încorporat, cum ar fi XZ Embedded, nu acceptă neapărat fișiere create cu tipuri de I<verificare> a integrității, altele decât B<none> și B<crc32>. Deoarece valoarea implicită este B<--check=crc64>, trebuie să utilizați B<--check=none> sau B<--check=crc32> atunci când creați fișiere pentru sistemele încorporate."
#. type: Plain text
-#: ../src/xz/xz.1:2653
-msgid ""
-"Outside embedded systems, all B<.xz> format decompressors support all the "
-"I<check> types, or at least are able to decompress the file without "
-"verifying the integrity check if the particular I<check> is not supported."
-msgstr ""
-"În afara sistemelor încorporate, toate instrumentele de decomprimare în "
-"format B<.xz> acceptă toate tipurile de I<verificare> sau cel puțin pot "
-"decomprima fișierul fără a efectua verificarea integrității dacă acel tip de "
-"I<verificare> nu este acceptat."
+#: ../src/xz/xz.1
+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 "În afara sistemelor încorporate, toate instrumentele de decomprimare în format B<.xz> acceptă toate tipurile de I<verificare> sau cel puțin pot decomprima fișierul fără a efectua verificarea integrității dacă acel tip de I<verificare> nu este acceptat."
#. type: Plain text
-#: ../src/xz/xz.1:2656
-msgid ""
-"XZ Embedded supports BCJ filters, but only with the default start offset."
-msgstr ""
-"XZ Embedded acceptă filtre BCJ, dar numai cu poziție de pornire implicită."
+#: ../src/xz/xz.1
+msgid "XZ Embedded supports BCJ filters, but only with the default start offset."
+msgstr "XZ Embedded acceptă filtre BCJ, dar numai cu poziție de pornire implicită."
#. type: SH
-#: ../src/xz/xz.1:2657
+#: ../src/xz/xz.1
#, no-wrap
msgid "EXAMPLES"
msgstr "EXEMPLE"
#. type: SS
-#: ../src/xz/xz.1:2659
+#: ../src/xz/xz.1
#, no-wrap
msgid "Basics"
msgstr "Bazice"
#. type: Plain text
-#: ../src/xz/xz.1:2669
-msgid ""
-"Compress the file I<foo> into I<foo.xz> using the default compression level "
-"(B<-6>), and remove I<foo> if compression is successful:"
-msgstr ""
-"Comprimă fișierul I<foo> în I<foo.xz> folosind nivelul de comprimare "
-"implicit (B<-6>) și elimină fișierul I<foo> dacă comprimarea are succes:"
+#: ../src/xz/xz.1
+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 "Comprimă fișierul I<foo> în I<foo.xz> folosind nivelul de comprimare implicit (B<-6>) și elimină fișierul I<foo> dacă comprimarea are succes:"
#. type: Plain text
-#: ../src/xz/xz.1:2674
-#, no-wrap
-msgid "CW<xz foo>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz foo>\n"
+msgid "\\f(CRxz foo\\fR\n"
msgstr "CW<xz foo>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2685
-msgid ""
-"Decompress I<bar.xz> into I<bar> and don't remove I<bar.xz> even if "
-"decompression is successful:"
-msgstr ""
-"Decomprimă I<bar.xz> în I<bar> și nu elimină I<bar.xz> chiar dacă "
-"decomprimarea este efectuată cu succes:"
+#: ../src/xz/xz.1
+msgid "Decompress I<bar.xz> into I<bar> and don't remove I<bar.xz> even if decompression is successful:"
+msgstr "Decomprimă I<bar.xz> în I<bar> și nu elimină I<bar.xz> chiar dacă decomprimarea este efectuată cu succes:"
#. type: Plain text
-#: ../src/xz/xz.1:2690
-#, no-wrap
-msgid "CW<xz -dk bar.xz>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz -dk bar.xz>\n"
+msgid "\\f(CRxz -dk bar.xz\\fR\n"
msgstr "CW<xz -dk bar.xz>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2703
-msgid ""
-"Create I<baz.tar.xz> with the preset B<-4e> (B<-4 --extreme>), which is "
-"slower than the default B<-6>, but needs less memory for compression and "
-"decompression (48\\ MiB and 5\\ MiB, respectively):"
-msgstr ""
-"Creează I<baz.tar.xz> cu nivelul prestabilit B<-4e> (B<-4 --extreme>), care "
-"este mai lent decât nivelul prestabilit implicit B<-6>, dar necesită mai "
-"puțină memorie pentru comprimare și decomprimare (48Mio și, respectiv, 5Mio):"
+#: ../src/xz/xz.1
+msgid "Create I<baz.tar.xz> with the preset B<-4e> (B<-4 --extreme>), which is slower than the default B<-6>, but needs less memory for compression and decompression (48\\ MiB and 5\\ MiB, respectively):"
+msgstr "Creează I<baz.tar.xz> cu nivelul prestabilit B<-4e> (B<-4 --extreme>), care este mai lent decât nivelul prestabilit implicit B<-6>, dar necesită mai puțină memorie pentru comprimare și decomprimare (48Mio și, respectiv, 5Mio):"
#. type: Plain text
-#: ../src/xz/xz.1:2708
-#, no-wrap
-msgid "CW<tar cf - baz | xz -4e E<gt> baz.tar.xz>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<tar cf - baz | xz -4e E<gt> baz.tar.xz>\n"
+msgid "\\f(CRtar cf - baz | xz -4e E<gt> baz.tar.xz\\fR\n"
msgstr "CW<tar cf - baz | xz -4e E<gt> baz.tar.xz>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2714
-msgid ""
-"A mix of compressed and uncompressed files can be decompressed to standard "
-"output with a single command:"
-msgstr ""
-"Un amestec de fișiere comprimate și necomprimate poate fi decomprimat la "
-"ieșirea standard cu o singură comandă:"
+#: ../src/xz/xz.1
+msgid "A mix of compressed and uncompressed files can be decompressed to standard output with a single command:"
+msgstr "Un amestec de fișiere comprimate și necomprimate poate fi decomprimat la ieșirea standard cu o singură comandă:"
#. type: Plain text
-#: ../src/xz/xz.1:2719
-#, no-wrap
-msgid "CW<xz -dcf a.txt b.txt.xz c.txt d.txt.lzma E<gt> abcd.txt>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz -dcf a.txt b.txt.xz c.txt d.txt.lzma E<gt> abcd.txt>\n"
+msgid "\\f(CRxz -dcf a.txt b.txt.xz c.txt d.txt.lzma E<gt> abcd.txt\\fR\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:2723
+#: ../src/xz/xz.1
#, no-wrap
msgid "Parallel compression of many files"
msgstr "Comprimarea în paralel a mai multor fișiere"
#. type: Plain text
-#: ../src/xz/xz.1:2729
-msgid ""
-"On GNU and *BSD, B<find>(1) and B<xargs>(1) can be used to parallelize "
-"compression of many files:"
-msgstr ""
-"În sisteme GNU și *BSD, B<find>(1) și B<xargs>(1) pot fi utilizate pentru a "
-"paraleliza comprimarea mai multor fișiere:"
+#: ../src/xz/xz.1
+msgid "On GNU and *BSD, B<find>(1) and B<xargs>(1) can be used to parallelize compression of many files:"
+msgstr "În sisteme GNU și *BSD, B<find>(1) și B<xargs>(1) pot fi utilizate pentru a paraleliza comprimarea mai multor fișiere:"
#. type: Plain text
-#: ../src/xz/xz.1:2735
-#, no-wrap
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid ""
+#| "CW<find . -type f \\e! -name '*.xz' -print0 \\e\n"
+#| " | xargs -0r -P4 -n16 xz -T1>\n"
msgid ""
-"CW<find . -type f \\e! -name '*.xz' -print0 \\e\n"
-" | xargs -0r -P4 -n16 xz -T1>\n"
+"\\f(CRfind . -type f \\e! -name '*.xz' -print0 \\e\n"
+" | xargs -0r -P4 -n16 xz -T1\\fR\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:2757
-msgid ""
-"The B<-P> option to B<xargs>(1) sets the number of parallel B<xz> "
-"processes. The best value for the B<-n> option depends on how many files "
-"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 ""
-"Opțiunea B<-P> pentru comanda B<xargs>(1) stabilește numărul de procese "
-"paralele B<xz>. Cea mai bună valoare pentru opțiunea B<-n> depinde de câte "
-"fișiere trebuie să fie comprimate. Dacă există doar câteva fișiere, "
-"valoarea ar trebui probabil să fie 1; cu zeci de mii de fișiere, 100 sau "
-"chiar mai mult poate să fie valoarea potrivită pentru a reduce numărul de "
-"procese B<xz> pe care B<xargs>(1) le va crea în final."
+#: ../src/xz/xz.1
+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 "Opțiunea B<-P> pentru comanda B<xargs>(1) stabilește numărul de procese paralele B<xz>. Cea mai bună valoare pentru opțiunea B<-n> depinde de câte fișiere trebuie să fie comprimate. Dacă există doar câteva fișiere, valoarea ar trebui probabil să fie 1; cu zeci de mii de fișiere, 100 sau chiar mai mult poate să fie valoarea potrivită pentru a reduce numărul de procese B<xz> pe care B<xargs>(1) le va crea în final."
#. type: Plain text
-#: ../src/xz/xz.1:2765
-msgid ""
-"The option B<-T1> for B<xz> is there to force it to single-threaded mode, "
-"because B<xargs>(1) is used to control the amount of parallelization."
-msgstr ""
-"Opțiunea B<-T1> pentru B<xz> este acolo pentru a-l forța să ruleze în modul "
-"cu un singur fir de execuție, deoarece B<xargs>(1) este folosit pentru a "
-"controla cantitatea de paralelizare."
+#: ../src/xz/xz.1
+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 "Opțiunea B<-T1> pentru B<xz> este acolo pentru a-l forța să ruleze în modul cu un singur fir de execuție, deoarece B<xargs>(1) este folosit pentru a controla cantitatea de paralelizare."
#. type: SS
-#: ../src/xz/xz.1:2766
+#: ../src/xz/xz.1
#, no-wrap
msgid "Robot mode"
msgstr "Modul robot"
#. type: Plain text
-#: ../src/xz/xz.1:2769
-msgid ""
-"Calculate how many bytes have been saved in total after compressing multiple "
-"files:"
-msgstr ""
-"Calculează câți octeți au fost salvați în total după comprimarea mai multor "
-"fișiere:"
+#: ../src/xz/xz.1
+msgid "Calculate how many bytes have been saved in total after compressing multiple files:"
+msgstr "Calculează câți octeți au fost salvați în total după comprimarea mai multor fișiere:"
#. type: Plain text
-#: ../src/xz/xz.1:2774
-#, no-wrap
-msgid "CW<xz --robot --list *.xz | awk '/^totals/{print $5-$4}'>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --robot --list *.xz | awk '/^totals/{print $5-$4}'>\n"
+msgid "\\f(CRxz --robot --list *.xz | awk '/^totals/{print $5-$4}'\\fR\n"
msgstr "CW<xz --robot --list *.xz | awk '/^totals/{print $5-$4}'>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2789
-msgid ""
-"A script may want to know that it is using new enough B<xz>. The following "
-"B<sh>(1) script checks that the version number of the B<xz> tool is at "
-"least 5.0.0. This method is compatible with old beta versions, which didn't "
-"support the B<--robot> option:"
-msgstr ""
-"Un script poate dori să afle dacă folosește o versiune B<xz> suficient de "
-"nouă. Următorul script B<sh>(1) verifică dacă numărul versiunii "
-"instrumentului B<xz> este cel puțin 5.0.0. Această metodă este compatibilă "
-"cu versiunile beta vechi, care nu acceptau opțiunea B<--robot>:"
+#: ../src/xz/xz.1
+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 "Un script poate dori să afle dacă folosește o versiune B<xz> suficient de nouă. Următorul script B<sh>(1) verifică dacă numărul versiunii instrumentului B<xz> este cel puțin 5.0.0. Această metodă este compatibilă cu versiunile beta vechi, care nu acceptau opțiunea B<--robot>:"
#. type: Plain text
-#: ../src/xz/xz.1:2798
-#, no-wrap
+#: ../src/xz/xz.1
+#, fuzzy, 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"
msgid ""
-"CW<if ! eval \"$(xz --robot --version 2E<gt> /dev/null)\" ||\n"
+"\\f(CRif ! 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"
+"unset XZ_VERSION LIBLZMA_VERSION\\fR\n"
msgstr ""
"CW<if ! eval \"$(xz --robot --version 2E<gt> /dev/null)\" ||\n"
" [ \"$XZ_VERSION\" -lt 50000002 ]; then\n"
@@ -4901,25 +3263,27 @@ msgstr ""
"unset XZ_VERSION LIBLZMA_VERSION>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2805
-msgid ""
-"Set a memory usage limit for decompression using B<XZ_OPT>, but if a limit "
-"has already been set, don't increase it:"
-msgstr ""
-"Stabilește o limită de utilizare a memoriei pentru decomprimare folosind "
-"variabila de mediu B<XZ_OPT>, dar dacă o limită a fost deja stabilită, nu o "
-"mărește:"
+#: ../src/xz/xz.1
+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 "Stabilește o limită de utilizare a memoriei pentru decomprimare folosind variabila de mediu B<XZ_OPT>, dar dacă o limită a fost deja stabilită, nu o mărește:"
#. type: Plain text
-#: ../src/xz/xz.1:2815
-#, no-wrap
+#: ../src/xz/xz.1
+#, fuzzy, 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"
msgid ""
-"CW<NEWLIM=$((123 E<lt>E<lt> 20))\\ \\ # 123 MiB\n"
+"\\f(CRNEWLIM=$((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"
+"fi\\fR\n"
msgstr ""
"CW<NEWLIM=$((123 E<lt>E<lt> 20))\\ \\ # 123 MiB\n"
"OLDLIM=$(xz --robot --info-memory | cut -f3)\n"
@@ -4929,910 +3293,615 @@ msgstr ""
"fi>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2825
-msgid ""
-"The simplest use for custom filter chains is customizing a LZMA2 preset. "
-"This can be useful, because the presets cover only a subset of the "
-"potentially useful combinations of compression settings."
-msgstr ""
-"Cea mai simplă utilizare a lanțurilor de filtrare personalizate este "
-"personalizarea unei opțiuni prestabilite LZMA2. Acest lucru poate fi util, "
-"deoarece opțiunile prestabilite acoperă doar un subset al combinațiilor "
-"potențial utile de opțiuni de comprimare."
+#: ../src/xz/xz.1
+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 "Cea mai simplă utilizare a lanțurilor de filtrare personalizate este personalizarea unei opțiuni prestabilite LZMA2. Acest lucru poate fi util, deoarece opțiunile prestabilite acoperă doar un subset al combinațiilor potențial utile de opțiuni de comprimare."
#. type: Plain text
-#: ../src/xz/xz.1:2833
-msgid ""
-"The CompCPU columns of the tables from the descriptions of the options "
-"B<-0> ... B<-9> and B<--extreme> are useful when customizing LZMA2 presets. "
-"Here are the relevant parts collected from those two tables:"
-msgstr ""
-"Coloanele CPUComp din tabelele de descriere a opțiunilor B<-0> ... B<-9> și "
-"B<--extreme> sunt utile atunci când personalizați opțiunilor prestabilite "
-"LZMA2. Iată părțile relevante colectate din aceste două tabele:"
+#: ../src/xz/xz.1
+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 "Coloanele CPUComp din tabelele de descriere a opțiunilor B<-0> ... B<-9> și B<--extreme> sunt utile atunci când personalizați opțiunilor prestabilite LZMA2. Iată părțile relevante colectate din aceste două tabele:"
#. type: Plain text
-#: ../src/xz/xz.1:2858
-msgid ""
-"If you know that a file requires somewhat big dictionary (for example, 32\\ "
-"MiB) to compress well, but you want to compress it quicker than B<xz -8> "
-"would do, a preset with a low CompCPU value (for example, 1) can be "
-"modified to use a bigger dictionary:"
-msgstr ""
-"Dacă știți că un fișier necesită un dicționar oarecum mare (de exemplu, "
-"32Mio) pentru a se comprima bine, dar doriți să-l comprimați mai repede "
-"decât ar face B<xz -8>, o opțiune prestabilită cu o valoare CPUComp scăzută "
-"(de exemplu, 1) poate fi modificată pentru a utiliza un dicționar mai mare:"
+#: ../src/xz/xz.1
+msgid "If you know that a file requires somewhat big dictionary (for example, 32\\ MiB) to compress well, but you want to compress it quicker than B<xz -8> would do, a preset with a low CompCPU value (for example, 1) can be modified to use a bigger dictionary:"
+msgstr "Dacă știți că un fișier necesită un dicționar oarecum mare (de exemplu, 32Mio) pentru a se comprima bine, dar doriți să-l comprimați mai repede decât ar face B<xz -8>, o opțiune prestabilită cu o valoare CPUComp scăzută (de exemplu, 1) poate fi modificată pentru a utiliza un dicționar mai mare:"
#. type: Plain text
-#: ../src/xz/xz.1:2863
-#, no-wrap
-msgid "CW<xz --lzma2=preset=1,dict=32MiB foo.tar>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --lzma2=preset=1,dict=32MiB foo.tar>\n"
+msgid "\\f(CRxz --lzma2=preset=1,dict=32MiB foo.tar\\fR\n"
msgstr "CW<xz --lzma2=preset=1,dict=32MiB foo.tar>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2879
-msgid ""
-"With certain files, the above command may be faster than B<xz -6> while "
-"compressing significantly better. However, it must be emphasized that only "
-"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 ""
-"Cu anumite fișiere, comanda de mai sus poate fi mai rapidă decât B<xz -6> în "
-"timp ce comprimă semnificativ mai bine. Cu toate acestea, trebuie subliniat "
-"că doar unele fișiere se beneficiază de un dicționar mare, păstrând în "
-"același timp valoarea CPUComp scăzută. Cea mai evidentă situație, în care "
-"un dicționar mare poate ajuta foarte mult, este o arhivă care conține "
-"fișiere foarte asemănătoare de cel puțin câțiva megaocteți fiecare. "
-"Dimensiunea dicționarului trebuie să fie semnificativ mai mare decât orice "
-"fișier individual pentru a permite LZMA2 să profite din plin de asemănările "
-"dintre fișierele consecutive."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2886
-msgid ""
-"If very high compressor and decompressor memory usage is fine, and the file "
-"being compressed is at least several hundred megabytes, it may be useful to "
-"use an even bigger dictionary than the 64 MiB that B<xz -9> would use:"
-msgstr ""
-"Dacă utilizarea unei mari cantități de memorie pentru comprimare și "
-"decomprimare este în regulă, iar fișierul comprimat are cel puțin câteva "
-"sute de megaocteți, poate fi util să folosiți un dicționar și mai mare decât "
-"cei 64Mio pe care i-ar folosi B<xz -9>:"
+#: ../src/xz/xz.1
+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 "Cu anumite fișiere, comanda de mai sus poate fi mai rapidă decât B<xz -6> în timp ce comprimă semnificativ mai bine. Cu toate acestea, trebuie subliniat că doar unele fișiere se beneficiază de un dicționar mare, păstrând în același timp valoarea CPUComp scăzută. Cea mai evidentă situație, în care un dicționar mare poate ajuta foarte mult, este o arhivă care conține fișiere foarte asemănătoare de cel puțin câțiva megaocteți fiecare. Dimensiunea dicționarului trebuie să fie semnificativ mai mare decât orice fișier individual pentru a permite LZMA2 să profite din plin de asemănările dintre fișierele consecutive."
#. type: Plain text
-#: ../src/xz/xz.1:2891
-#, no-wrap
-msgid "CW<xz -vv --lzma2=dict=192MiB big_foo.tar>\n"
+#: ../src/xz/xz.1
+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 "Dacă utilizarea unei mari cantități de memorie pentru comprimare și decomprimare este în regulă, iar fișierul comprimat are cel puțin câteva sute de megaocteți, poate fi util să folosiți un dicționar și mai mare decât cei 64Mio pe care i-ar folosi B<xz -9>:"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz -vv --lzma2=dict=192MiB big_foo.tar>\n"
+msgid "\\f(CRxz -vv --lzma2=dict=192MiB big_foo.tar\\fR\n"
msgstr "CW<xz -vv --lzma2=dict=192MiB big_foo.tar>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2904
-msgid ""
-"Using B<-vv> (B<--verbose --verbose>) like in the above example can be "
-"useful to see the memory requirements of the compressor and decompressor. "
-"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 ""
-"Utilizarea opțiunii B<-vv> (B<--verbose --verbose>) ca în exemplul de mai "
-"sus, poate fi utilă pentru a vedea cerințele de memorie la comprimare și "
-"decomprimare. Amintiți-vă că utilizarea unui dicționar mai mare decât "
-"dimensiunea fișierului necomprimat este risipă de memorie, de aceea, comanda "
-"de mai sus nu este utilă pentru fișiere mici."
+#: ../src/xz/xz.1
+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 "Utilizarea opțiunii B<-vv> (B<--verbose --verbose>) ca în exemplul de mai sus, poate fi utilă pentru a vedea cerințele de memorie la comprimare și decomprimare. Amintiți-vă că utilizarea unui dicționar mai mare decât dimensiunea fișierului necomprimat este risipă de memorie, de aceea, comanda de mai sus nu este utilă pentru fișiere mici."
#. type: Plain text
-#: ../src/xz/xz.1:2916
-msgid ""
-"Sometimes the compression time doesn't matter, but the decompressor memory "
-"usage has to be kept low, for example, to make it possible to decompress the "
-"file on an embedded system. The following command uses B<-6e> (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 ""
-"Uneori, timpul de comprimare nu contează, dar utilizarea memoriei la "
-"decomprimare trebuie menținută la un nivel scăzut, de exemplu, pentru a face "
-"posibilă decomprimarea fișierului pe un sistem încorporat. Următoarea "
-"comandă folosește B<-6e> (B<-6 --extreme>) ca bază și fixează dimensiunea "
-"dicționarului la doar 64Kio. Fișierul rezultat poate fi decomprimat cu XZ "
-"Embedded (de aceea există B<--check=crc32>) folosind aproximativ 100Kio de "
-"memorie."
+#: ../src/xz/xz.1
+msgid "Sometimes the compression time doesn't matter, but the decompressor memory usage has to be kept low, for example, to make it possible to decompress the file on an embedded system. The following command uses B<-6e> (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 "Uneori, timpul de comprimare nu contează, dar utilizarea memoriei la decomprimare trebuie menținută la un nivel scăzut, de exemplu, pentru a face posibilă decomprimarea fișierului pe un sistem încorporat. Următoarea comandă folosește B<-6e> (B<-6 --extreme>) ca bază și fixează dimensiunea dicționarului la doar 64Kio. Fișierul rezultat poate fi decomprimat cu XZ Embedded (de aceea există B<--check=crc32>) folosind aproximativ 100Kio de memorie."
#. type: Plain text
-#: ../src/xz/xz.1:2921
-#, no-wrap
-msgid "CW<xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo>\n"
+msgid "\\f(CRxz --check=crc32 --lzma2=preset=6e,dict=64KiB foo\\fR\n"
msgstr "CW<xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2944
-msgid ""
-"If you want to squeeze out as many bytes as possible, adjusting the number "
-"of literal context bits (I<lc>) and number of position bits (I<pb>) can "
-"sometimes help. Adjusting the number of literal position bits (I<lp>) "
-"might help too, but usually I<lc> and I<pb> are more important. For "
-"example, a source code archive contains mostly US-ASCII text, so something "
-"like the following might give slightly (like 0.1\\ %) smaller file than B<xz "
-"-6e> (try also without B<lc=4>):"
-msgstr ""
-"Dacă doriți să stoarceți cât mai mulți octeți posibil, ajustarea numărului "
-"de biți de context literal (I<lc>) și a numărului de biți de poziție (I<pb>) "
-"poate ajuta uneori. Ajustarea numărului de biți de poziție literală (I<lp>) "
-"ar putea ajuta, de asemenea, dar de obicei I<lc> și I<pb> sunt mai "
-"importante. De exemplu, o arhivă de cod sursă conține în mare parte text US-"
-"ASCII, așa că ceva precum comanda următoare, ar putea oferi un fișier „mai "
-"slăbuț” (aproximativ cu 0,1%) mai mic decât cu B<xz -6e> (încercați și fără "
-"B<lc=4>):"
+#: ../src/xz/xz.1
+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. For example, a source code archive contains mostly US-ASCII text, so something like the following might give slightly (like 0.1\\ %) smaller file than B<xz -6e> (try also without B<lc=4>):"
+msgstr "Dacă doriți să stoarceți cât mai mulți octeți posibil, ajustarea numărului de biți de context literal (I<lc>) și a numărului de biți de poziție (I<pb>) poate ajuta uneori. Ajustarea numărului de biți de poziție literală (I<lp>) ar putea ajuta, de asemenea, dar de obicei I<lc> și I<pb> sunt mai importante. De exemplu, o arhivă de cod sursă conține în mare parte text US-ASCII, așa că ceva precum comanda următoare, ar putea oferi un fișier „mai slăbuț” (aproximativ cu 0,1%) mai mic decât cu B<xz -6e> (încercați și fără B<lc=4>):"
#. type: Plain text
-#: ../src/xz/xz.1:2949
-#, no-wrap
-msgid "CW<xz --lzma2=preset=6e,pb=0,lc=4 source_code.tar>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --lzma2=preset=6e,pb=0,lc=4 source_code.tar>\n"
+msgid "\\f(CRxz --lzma2=preset=6e,pb=0,lc=4 source_code.tar\\fR\n"
msgstr "CW<xz --lzma2=preset=6e,pb=0,lc=4 fișierul_sursă.tar>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2957
-msgid ""
-"Using another filter together with LZMA2 can improve compression with "
-"certain file types. For example, to compress a x86-32 or x86-64 shared "
-"library using the x86 BCJ filter:"
-msgstr ""
-"Utilizarea unui alt filtru împreună cu LZMA2 poate îmbunătăți comprimarea cu "
-"anumite tipuri de fișiere. De exemplu, pentru a comprima o bibliotecă "
-"partajată x86 pe 32 de biți sau x86 pe 64 de biți folosind filtrul BCJ x86:"
+#: ../src/xz/xz.1
+msgid "Using another filter together with LZMA2 can improve compression with certain file types. For example, to compress a x86-32 or x86-64 shared library using the x86 BCJ filter:"
+msgstr "Utilizarea unui alt filtru împreună cu LZMA2 poate îmbunătăți comprimarea cu anumite tipuri de fișiere. De exemplu, pentru a comprima o bibliotecă partajată x86 pe 32 de biți sau x86 pe 64 de biți folosind filtrul BCJ x86:"
#. type: Plain text
-#: ../src/xz/xz.1:2962
-#, no-wrap
-msgid "CW<xz --x86 --lzma2 libfoo.so>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --x86 --lzma2 libfoo.so>\n"
+msgid "\\f(CRxz --x86 --lzma2 libfoo.so\\fR\n"
msgstr "CW<xz --x86 --lzma2 libfoo.so>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2976
-msgid ""
-"Note that the order of the filter options is significant. If B<--x86> is "
-"specified after B<--lzma2>, B<xz> will give an error, because there cannot "
-"be any filter after LZMA2, and also because the x86 BCJ filter cannot be "
-"used as the last filter in the chain."
-msgstr ""
-"Rețineți că ordinea opțiunilor de filtrare este semnificativă. Dacă B<--"
-"x86> este specificată după B<--lzma2>, B<xz> va da o eroare, deoarece nu "
-"poate exista niciun filtru după LZMA2 și, de asemenea, pentru că filtrul x86 "
-"BCJ nu poate fi utilizat ca ultimul filtru din lanțul de filtrare."
+#: ../src/xz/xz.1
+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 "Rețineți că ordinea opțiunilor de filtrare este semnificativă. Dacă B<--x86> este specificată după B<--lzma2>, B<xz> va da o eroare, deoarece nu poate exista niciun filtru după LZMA2 și, de asemenea, pentru că filtrul x86 BCJ nu poate fi utilizat ca ultimul filtru din lanțul de filtrare."
#. type: Plain text
-#: ../src/xz/xz.1:2982
-msgid ""
-"The Delta filter together with LZMA2 can give good results with bitmap "
-"images. It should usually beat PNG, which has a few more advanced filters "
-"than simple delta but uses Deflate for the actual compression."
-msgstr ""
-"Filtrul Delta împreună cu LZMA2 pot da rezultate bune cu imagini bitmap. De "
-"obicei, ar trebui să întreacă comprimarea PNG, care are câteva filtre mai "
-"avansate decât delta simplă, dar utilizează Deflate pentru comprimarea reală."
+#: ../src/xz/xz.1
+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 "Filtrul Delta împreună cu LZMA2 pot da rezultate bune cu imagini bitmap. De obicei, ar trebui să întreacă comprimarea PNG, care are câteva filtre mai avansate decât delta simplă, dar utilizează Deflate pentru comprimarea reală."
#. type: Plain text
-#: ../src/xz/xz.1:2992
-msgid ""
-"The image has to be saved in uncompressed format, for example, as "
-"uncompressed TIFF. The distance parameter of the Delta filter is set to "
-"match the number of bytes per pixel in the image. For example, 24-bit RGB "
-"bitmap needs B<dist=3>, and it is also good to pass B<pb=0> to LZMA2 to "
-"accommodate the three-byte alignment:"
-msgstr ""
-"Imaginea trebuie să fie salvată în format necomprimat, de exemplu, ca TIFF "
-"necomprimat. Parametrul de distanță al filtrului Delta este fixat să se "
-"potrivească cu numărul de octeți per pixel din imagine. De exemplu, bitmap-"
-"ul RGB pe 24 de biți necesită B<dist=3> și este, de asemenea, bine să pasați "
-"B<pb=0> la LZMA2 pentru a se adapta alinierii pe trei octeți:"
+#: ../src/xz/xz.1
+msgid "The image has to be saved in uncompressed format, for example, as uncompressed TIFF. The distance parameter of the Delta filter is set to match the number of bytes per pixel in the image. For example, 24-bit RGB bitmap needs B<dist=3>, and it is also good to pass B<pb=0> to LZMA2 to accommodate the three-byte alignment:"
+msgstr "Imaginea trebuie să fie salvată în format necomprimat, de exemplu, ca TIFF necomprimat. Parametrul de distanță al filtrului Delta este fixat să se potrivească cu numărul de octeți per pixel din imagine. De exemplu, bitmap-ul RGB pe 24 de biți necesită B<dist=3> și este, de asemenea, bine să pasați B<pb=0> la LZMA2 pentru a se adapta alinierii pe trei octeți:"
#. type: Plain text
-#: ../src/xz/xz.1:2997
-#, no-wrap
-msgid "CW<xz --delta=dist=3 --lzma2=pb=0 foo.tiff>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --delta=dist=3 --lzma2=pb=0 foo.tiff>\n"
+msgid "\\f(CRxz --delta=dist=3 --lzma2=pb=0 foo.tiff\\fR\n"
msgstr "CW<xz --delta=dist=3 --lzma2=pb=0 foo.tiff>\n"
#. type: Plain text
-#: ../src/xz/xz.1:3005
-msgid ""
-"If multiple images have been put into a single archive (for example, B<."
-"tar>), the Delta filter will work on that too as long as all images have the "
-"same number of bytes per pixel."
-msgstr ""
-"Dacă mai multe imagini au fost introduse într-o singură arhivă (de exemplu, "
-"B<.tar>), filtrul Delta va funcționa și pe aceasta atâta timp cât toate "
-"imaginile au același număr de octeți per pixel."
+#: ../src/xz/xz.1
+msgid "If multiple images have been put into a single archive (for example, B<.tar>), the Delta filter will work on that too as long as all images have the same number of bytes per pixel."
+msgstr "Dacă mai multe imagini au fost introduse într-o singură arhivă (de exemplu, B<.tar>), filtrul Delta va funcționa și pe aceasta atâta timp cât toate imaginile au același număr de octeți per pixel."
#. type: SH
-#: ../src/xz/xz.1:3006 ../src/xzdec/xzdec.1:143 ../src/lzmainfo/lzmainfo.1:59
-#: ../src/scripts/xzdiff.1:65 ../src/scripts/xzgrep.1:106
-#: ../src/scripts/xzless.1:65 ../src/scripts/xzmore.1:51
+#: ../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
#, no-wrap
msgid "SEE ALSO"
msgstr "CONSULTAȚI ȘI"
#. type: Plain text
-#: ../src/xz/xz.1:3015
-msgid ""
-"B<xzdec>(1), B<xzdiff>(1), B<xzgrep>(1), B<xzless>(1), B<xzmore>(1), "
-"B<gzip>(1), B<bzip2>(1), B<7z>(1)"
-msgstr ""
-"B<xzdec>(1), B<xzdiff>(1), B<xzgrep>(1), B<xzless>(1), B<xzmore>(1), "
-"B<gzip>(1), B<bzip2>(1), B<7z>(1)"
+#: ../src/xz/xz.1
+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:3017
+#: ../src/xz/xz.1
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:3019 ../src/xzdec/xzdec.1:146
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
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:3020
+#: ../src/xz/xz.1
msgid "LZMA SDK: E<lt>https://7-zip.org/sdk.htmlE<gt>"
msgstr "LZMA SDK: E<lt>https://7-zip.org/sdk.htmlE<gt>"
#. type: TH
-#: ../src/xzdec/xzdec.1:7
+#: ../src/xzdec/xzdec.1
#, no-wrap
msgid "XZDEC"
msgstr "XZDEC"
-#. type: TH
-#: ../src/xzdec/xzdec.1:7
-#, no-wrap
-msgid "2017-04-19"
-msgstr "19.04.2017"
-
#. type: Plain text
-#: ../src/xzdec/xzdec.1:10
+#: ../src/xzdec/xzdec.1
msgid "xzdec, lzmadec - Small .xz and .lzma decompressors"
msgstr "xzdec, lzmadec - Programe de decomprimare mici de fișiere .xz și .lzma"
#. type: Plain text
-#: ../src/xzdec/xzdec.1:14
+#: ../src/xzdec/xzdec.1
msgid "B<xzdec> [I<option...>] [I<file...>]"
msgstr "B<xzdec> [I<opțiune...>] [I<fișier...>]"
#. type: Plain text
-#: ../src/xzdec/xzdec.1:18
+#: ../src/xzdec/xzdec.1
msgid "B<lzmadec> [I<option...>] [I<file...>]"
msgstr "B<lzmadec> [I<opțiune...>] [I<fișier...>]"
#. 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> este un instrument de decomprimare bazat pe liblzma pentru "
-"fișierele B<.xz> (și numai B<.xz>). B<xzdec> este destinat să funcționeze "
-"ca un înlocuitor pentru B<xz>(1) în cele mai frecvente situații în care un "
-"script a fost scris pentru a utiliza B<xz --decompress --stdout> (și posibil "
-"câteva alte opțiuni frecvent utilizate) pentru a decomprima fișierele B<."
-"xz>. B<lzmadec> este identic cu B<xzdec> cu excepția faptului că B<lzmadec> "
-"acceptă fișierele B<.lzma> în loc de fișierele B<.xz>."
+#: ../src/xzdec/xzdec.1
+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> este un instrument de decomprimare bazat pe liblzma pentru fișierele B<.xz> (și numai B<.xz>). B<xzdec> este destinat să funcționeze ca un înlocuitor pentru B<xz>(1) în cele mai frecvente situații în care un script a fost scris pentru a utiliza B<xz --decompress --stdout> (și posibil câteva alte opțiuni frecvent utilizate) pentru a decomprima fișierele B<.xz>. B<lzmadec> este identic cu B<xzdec> cu excepția faptului că B<lzmadec> acceptă fișierele B<.lzma> în loc de fișierele B<.xz>."
#. 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 ""
-"Pentru a reduce dimensiunea executabilului, B<xzdec> nu acceptă modul cu mai "
-"multe fire de execuție sau localizarea(afișarea mesajelor în limba stabilită "
-"de configurările regionale) și nu citește opțiunile din variabilele de mediu "
-"B<XZ_DEFAULTS> și B<XZ_OPT>. B<xzdec> nu acceptă afișarea informațiilor "
-"intermediare de progres: trimiterea semnalului B<SIGINFO> la B<xzdec> nu "
-"face nimic, iar trimiterea semnalului B<SIGUSR1> încheie procesul în loc să "
-"afișeze informații despre progres."
+#: ../src/xzdec/xzdec.1
+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 "Pentru a reduce dimensiunea executabilului, B<xzdec> nu acceptă modul cu mai multe fire de execuție sau localizarea(afișarea mesajelor în limba stabilită de configurările regionale) și nu citește opțiunile din variabilele de mediu B<XZ_DEFAULTS> și B<XZ_OPT>. B<xzdec> nu acceptă afișarea informațiilor intermediare de progres: trimiterea semnalului B<SIGINFO> la B<xzdec> nu face nimic, iar trimiterea semnalului B<SIGUSR1> încheie procesul în loc să afișeze informații despre progres."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:69
-msgid ""
-"Ignored for B<xz>(1) compatibility. B<xzdec> supports only decompression."
-msgstr ""
-"Ignorat pentru compatibilitate cu B<xz>(1). B<xzdec> acceptă numai "
-"decomprimarea."
+#: ../src/xzdec/xzdec.1
+msgid "Ignored for B<xz>(1) compatibility. B<xzdec> supports only decompression."
+msgstr "Ignorat pentru compatibilitate cu B<xz>(1). B<xzdec> acceptă numai decomprimarea."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:76
-msgid ""
-"Ignored for B<xz>(1) compatibility. B<xzdec> never creates or removes any "
-"files."
-msgstr ""
-"Ignorat pentru compatibilitate cu B<xz>(1). B<xzdec> nu creează sau elimină "
-"niciodată niciun fișier."
+#: ../src/xzdec/xzdec.1
+msgid "Ignored for B<xz>(1) compatibility. B<xzdec> never creates or removes any files."
+msgstr "Ignorat pentru compatibilitate cu B<xz>(1). B<xzdec> nu creează sau elimină niciodată niciun fișier."
#. 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 ""
-"Ignorat pentru compatibilitate cu B<xz>(1). B<xzdec> scrie întotdeauna "
-"datele decomprimate la ieșirea standard."
+#: ../src/xzdec/xzdec.1
+msgid "Ignored for B<xz>(1) compatibility. B<xzdec> always writes the decompressed data to standard output."
+msgstr "Ignorat pentru compatibilitate cu B<xz>(1). B<xzdec> scrie întotdeauna datele decomprimate la ieșirea standard."
#. 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 ""
-"Specificarea acestui lucru o dată nu face nimic, deoarece B<xzdec> nu "
-"afișează niciodată avertismente sau notificări. Specificați acest lucru de "
-"două ori pentru a suprima erorile."
+#: ../src/xzdec/xzdec.1
+msgid "Specifying this once does nothing since B<xzdec> never displays any warnings or notices. Specify this twice to suppress errors."
+msgstr "Specificarea acestui lucru o dată nu face nimic, deoarece B<xzdec> nu afișează niciodată avertismente sau notificări. Specificați acest lucru de două ori pentru a suprima erorile."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:96
-msgid ""
-"Ignored for B<xz>(1) compatibility. B<xzdec> never uses the exit status 2."
-msgstr ""
-"Ignorat pentru compatibilitate cu B<xz>(1). B<xzdec> nu folosește niciodată "
-"starea de ieșire 2."
+#: ../src/xzdec/xzdec.1
+msgid "Ignored for B<xz>(1) compatibility. B<xzdec> never uses the exit status 2."
+msgstr "Ignorat pentru compatibilitate cu B<xz>(1). B<xzdec> nu folosește niciodată starea de ieșire 2."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:99
+#: ../src/xzdec/xzdec.1
msgid "Display a help message and exit successfully."
msgstr "Afișează un mesaj de ajutor și iese cu succes."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:104
+#: ../src/xzdec/xzdec.1
msgid "Display the version number of B<xzdec> and liblzma."
msgstr "Afișează numărul versiunii B<xzdec> și liblzma."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:108
+#: ../src/xzdec/xzdec.1
msgid "All was good."
msgstr "Toate au fost bine."
#. 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> nu are niciun mesaj de avertizare precum B<xz>(1), astfel că starea "
-"de ieșire 2 nu este folosită de B<xzdec>."
+#: ../src/xzdec/xzdec.1
+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> nu are niciun mesaj de avertizare precum B<xz>(1), astfel că starea de ieșire 2 nu este folosită de B<xzdec>."
#. 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 ""
-"Utilizați B<xz>(1) în loc de B<xzdec> sau B<lzmadec> pentru utilizarea "
-"normală de zi cu zi. B<xzdec> sau B<lzmadec> sunt destinate numai "
-"situațiilor în care este important să aveți un instrument de decomprimare "
-"mai mic decât B<xz>(1), cu funcții complete."
+#: ../src/xzdec/xzdec.1
+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 "Utilizați B<xz>(1) în loc de B<xzdec> sau B<lzmadec> pentru utilizarea normală de zi cu zi. B<xzdec> sau B<lzmadec> sunt destinate numai situațiilor în care este important să aveți un instrument de decomprimare mai mic decât B<xz>(1), cu funcții complete."
#. 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> și B<lzmadec> nu sunt chiar atât de mici. Dimensiunea poate fi "
-"redusă și mai mult prin eliminarea caracteristicilor din liblzma în timpul "
-"compilării, dar acest lucru nu ar trebui să se facă de obicei pentru "
-"executabilele distribuite în distribuții tipice de sisteme de operare "
-"neîncorporate. Dacă aveți nevoie de un instrument de decomprimare B<.xz> cu "
-"adevărat mic, luați în considerare utilizarea XZ Embedded."
+#: ../src/xzdec/xzdec.1
+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> și B<lzmadec> nu sunt chiar atât de mici. Dimensiunea poate fi redusă și mai mult prin eliminarea caracteristicilor din liblzma în timpul compilării, dar acest lucru nu ar trebui să se facă de obicei pentru executabilele distribuite în distribuții tipice de sisteme de operare neîncorporate. Dacă aveți nevoie de un instrument de decomprimare B<.xz> cu adevărat mic, luați în considerare utilizarea XZ Embedded."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:145 ../src/lzmainfo/lzmainfo.1:60
+#: ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
msgid "B<xz>(1)"
msgstr "B<xz>(1)"
#. type: TH
-#: ../src/lzmainfo/lzmainfo.1:7
+#: ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "LZMAINFO"
msgstr "LZMAINFO"
#. type: TH
-#: ../src/lzmainfo/lzmainfo.1:7 ../src/scripts/xzmore.1:7
+#: ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "2013-06-30"
msgstr "30.06.2013"
#. type: Plain text
-#: ../src/lzmainfo/lzmainfo.1:10
+#: ../src/lzmainfo/lzmainfo.1
msgid "lzmainfo - show information stored in the .lzma file header"
msgstr "lzmainfo - afișează informațiile stocate în antetul fișierului .lzma"
#. type: Plain text
-#: ../src/lzmainfo/lzmainfo.1:15
+#: ../src/lzmainfo/lzmainfo.1
msgid "B<lzmainfo> [B<--help>] [B<--version>] [I<file...>]"
msgstr "B<lzmainfo> [B<--help>] [B<--version>] [I<fișier...>]"
#. 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> afișează informațiile stocate în antetul fișierului B<.lzma>. "
-"Citește primii 13 octeți din I<fișierul> specificat, decodifică antetul și "
-"îl afișează la ieșirea standard în format care poate fi citit de om. Dacă "
-"nu sunt date I<fișiere> sau dacă I<fișier> este B<->, se citește intrarea "
-"standard."
+#: ../src/lzmainfo/lzmainfo.1
+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> afișează informațiile stocate în antetul fișierului B<.lzma>. Citește primii 13 octeți din I<fișierul> specificat, decodifică antetul și îl afișează la ieșirea standard în format care poate fi citit de om. Dacă nu sunt date I<fișiere> sau dacă I<fișier> este B<->, se citește intrarea standard."
#. 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 ""
-"De obicei, cele mai interesante informații sunt dimensiunea necomprimată și "
-"dimensiunea dicționarului. Dimensiunea necomprimată poate fi afișată numai "
-"dacă fișierul este în varianta formatului B<.lzma> netransmis în flux. "
-"Cantitatea de memorie necesară pentru a decomprima fișierul este de câteva "
-"zeci de kiloocteți plus dimensiunea dicționarului."
+#: ../src/lzmainfo/lzmainfo.1
+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 "De obicei, cele mai interesante informații sunt dimensiunea necomprimată și dimensiunea dicționarului. Dimensiunea necomprimată poate fi afișată numai dacă fișierul este în varianta formatului B<.lzma> netransmis în flux. Cantitatea de memorie necesară pentru a decomprima fișierul este de câteva zeci de kiloocteți plus dimensiunea dicționarului."
#. 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> este inclus în XZ Utils în primul rând pentru compatibilitatea "
-"cu LZMA Utils."
+#: ../src/lzmainfo/lzmainfo.1
+msgid "B<lzmainfo> is included in XZ Utils primarily for backward compatibility with LZMA Utils."
+msgstr "B<lzmainfo> este inclus în XZ Utils în primul rând pentru compatibilitatea cu LZMA Utils."
#. type: SH
-#: ../src/lzmainfo/lzmainfo.1:51 ../src/scripts/xzdiff.1:74
+#: ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "BUGS"
msgstr "ERORI"
#. 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> folosește sufixul B<MB> în timp ce sufixul corect ar fi B<MiB> "
-"(2^20 octeți). Acest lucru este pentru a menține ieșirea compatibilă cu "
-"LZMA Utils."
+#: ../src/lzmainfo/lzmainfo.1
+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> folosește sufixul B<MB> în timp ce sufixul corect ar fi B<MiB> (2^20 octeți). Acest lucru este pentru a menține ieșirea compatibilă cu LZMA Utils."
#. type: TH
-#: ../src/scripts/xzdiff.1:9
+#: ../src/scripts/xzdiff.1
#, no-wrap
msgid "XZDIFF"
msgstr "XZDIFF"
#. type: TH
-#: ../src/scripts/xzdiff.1:9
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1
#, no-wrap
-msgid "2021-06-04"
-msgstr "04.06.2021"
+msgid "2024-02-13"
+msgstr "13 februarie 2024"
#. type: Plain text
-#: ../src/scripts/xzdiff.1:12
+#: ../src/scripts/xzdiff.1
msgid "xzcmp, xzdiff, lzcmp, lzdiff - compare compressed files"
msgstr "xzcmp, xzdiff, lzcmp, lzdiff - compară fișierele comprimate"
#. type: Plain text
-#: ../src/scripts/xzdiff.1:15
-msgid "B<xzcmp> [I<cmp_options>] I<file1> [I<file2>]"
-msgstr "B<xzcmp> [I<opțiuni_comparare>] I<fișier1> [I<fișier2>]"
+#: ../src/scripts/xzdiff.1
+msgid "B<xzcmp> [I<option...>] I<file1> [I<file2>]"
+msgstr "B<xzcmp> [I<opțiune...>] I<fișier1> [I<fișier2>]"
#. type: Plain text
-#: ../src/scripts/xzdiff.1:18
-msgid "B<xzdiff> [I<diff_options>] I<file1> [I<file2>]"
-msgstr "B<xzdiff> [I<opțiuni_diferențe>] I<fișier1> [I<fișier2>]"
+#: ../src/scripts/xzdiff.1
+msgid "B<xzdiff> \\&..."
+msgstr "B<xzdiff> \\&..."
#. type: Plain text
-#: ../src/scripts/xzdiff.1:21
-msgid "B<lzcmp> [I<cmp_options>] I<file1> [I<file2>]"
-msgstr "B<lzcmp> [I<opțiuni_comparare>] I<fișier1> [I<fișier2>]"
+#: ../src/scripts/xzdiff.1
+msgid "B<lzcmp> \\&..."
+msgstr "B<lzcmp> \\&..."
#. type: Plain text
-#: ../src/scripts/xzdiff.1:24
-msgid "B<lzdiff> [I<diff_options>] I<file1> [I<file2>]"
-msgstr "B<lzdiff> [I<opțiuni_diferențe>] I<fișier1> [I<fișier2>]"
+#: ../src/scripts/xzdiff.1
+msgid "B<lzdiff> \\&..."
+msgstr "B<lzdiff> \\&..."
#. type: Plain text
-#: ../src/scripts/xzdiff.1:59
-msgid ""
-"B<xzcmp> and B<xzdiff> invoke B<cmp>(1) or B<diff>(1) on files compressed "
-"with B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), or "
-"B<zstd>(1). All options specified are passed directly to B<cmp>(1) or "
-"B<diff>(1). If only one file is specified, then the files compared are "
-"I<file1> (which must have a suffix of a supported compression format) and "
-"I<file1> from which the compression format suffix has been stripped. If two "
-"files are specified, then they are uncompressed if necessary and fed to "
-"B<cmp>(1) or B<diff>(1). The exit status from B<cmp>(1) or B<diff>(1) is "
-"preserved unless a decompression error occurs; then exit status is 2."
-msgstr ""
-"B<xzcmp> și B<xzdiff> invocă B<cmp>(1) sau B<diff>(1) pentru fișierele "
-"comprimate cu B<xz>(1), B<lzma>(1), B<gzip>( 1), B<bzip2>(1), B<lzop>(1) sau "
-"B<zstd>(1). Toate opțiunile specificate sunt transmise direct către "
-"B<cmp>(1) sau B<diff>(1). Dacă este specificat un singur fișier, atunci "
-"fișierele comparate sunt I<fișier1> (care trebuie să aibă un sufix al unui "
-"format de comprimare acceptat) și I<fișier1> din care a fost eliminat "
-"sufixul formatului de comprimare. Dacă sunt specificate două fișiere, "
-"atunci acestea sunt decomprimate dacă este necesar și introduse în B<cmp>(1) "
-"sau B<diff>(1). Starea de ieșire din B<cmp>(1) sau B<diff>(1) este păstrată "
-"cu excepția cazului în care apare o eroare de decomprimare; atunci starea de "
-"ieșire este 2."
-
-#. type: Plain text
-#: ../src/scripts/xzdiff.1:65
-msgid ""
-"The names B<lzcmp> and B<lzdiff> are provided for backward compatibility "
-"with LZMA Utils."
-msgstr ""
-"Numele B<lzcmp> și B<lzdiff> sunt furnizate pentru compatibilitatea cu LZMA "
-"Utils."
+#: ../src/scripts/xzdiff.1
+msgid "B<xzcmp> and B<xzdiff> compare uncompressed contents of two files. Uncompressed data and options are passed to B<cmp>(1) or B<diff>(1) unless B<--help> or B<--version> is specified."
+msgstr "B<xzcmp> și B<xzdiff> compară conținutul necomprimat a două fișiere. Datele necomprimate și opțiunile sunt transmise la B<cmp>(1) sau B<diff>(1), cu excepția cazului în care se specifică B<--help> sau B<--version>."
#. type: Plain text
-#: ../src/scripts/xzdiff.1:74
-msgid ""
-"B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), "
-"B<zstd>(1), B<zdiff>(1)"
-msgstr ""
-"B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), "
-"B<zstd>(1), B<zdiff>(1)"
+#: ../src/scripts/xzdiff.1
+msgid "If both I<file1> and I<file2> are specified, they can be uncompressed files or files in formats that B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), or B<lz4>(1) can decompress. The required decompression commands are determined from the filename suffixes of I<file1> and I<file2>. A file with an unknown suffix is assumed to be either uncompressed or in a format that B<xz>(1) can decompress."
+msgstr "Dacă sunt specificate atât I<fișier1>, cât și I<fișier2>, acestea pot fi fișiere necomprimate sau fișiere în formate pe care B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1) sau B<lz4>(1) le poate decomprima. Comenzile de decomprimare necesare sunt determinate de sufixele numelor de fișiere I<fișier1> și I<fișier2>. Se presupune că un fișier cu un sufix necunoscut este fie necomprimat, fie într-un format pe care B<xz>(1) îl poate decomprima."
#. type: Plain text
-#: ../src/scripts/xzdiff.1:79
-msgid ""
-"Messages from the B<cmp>(1) or B<diff>(1) programs refer to temporary "
-"filenames instead of those specified."
-msgstr ""
-"Mesajele din programele B<cmp>(1) sau B<diff>(1) se referă la nume de "
-"fișiere temporare în loc de cele specificate."
+#: ../src/scripts/xzdiff.1
+msgid "If only one filename is provided, I<file1> must have a suffix of a supported compression format and the name for I<file2> is assumed to be I<file1> with the compression format suffix removed."
+msgstr "În cazul în care se furnizează un singur nume de fișier, I<fișier1> trebuie să aibă un sufix al unui format de comprimare acceptat, iar numele pentru I<fișier2> se presupune că este I<fișier1> fără sufixul formatului de comprimare."
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1
+msgid "The commands B<lzcmp> and B<lzdiff> are provided for backward compatibility with LZMA Utils."
+msgstr "Comenzile B<lzcmp> și B<lzdiff> sunt furnizate pentru compatibilitate retroactivă cu LZMA Utils."
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1
+msgid "If a decompression error occurs, the exit status is B<2>. Otherwise the exit status of B<cmp>(1) or B<diff>(1) is used."
+msgstr "În cazul în care apare o eroare de decomprimare, starea de ieșire este B<2>. În caz contrar, se utilizează starea de ieșire B<cmp>(1) sau B<diff>(1)."
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1
+msgid "B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), B<lz4>(1)"
+msgstr "B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), B<lz4>(1)"
#. type: TH
-#: ../src/scripts/xzgrep.1:9
+#: ../src/scripts/xzgrep.1
#, no-wrap
msgid "XZGREP"
msgstr "XZGREP"
-#. type: TH
-#: ../src/scripts/xzgrep.1:9
-#, no-wrap
-msgid "2022-07-19"
-msgstr "19.07.2022"
-
#. type: Plain text
-#: ../src/scripts/xzgrep.1:12
-msgid "xzgrep - search compressed files for a regular expression"
-msgstr "xzgrep - caută în fișierele comprimate pentru o expresie regulată"
+#: ../src/scripts/xzgrep.1
+msgid "xzgrep - search possibly-compressed files for patterns"
+msgstr "xzgrep - caută modele în fișiere posibil comprimate"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:18
-msgid "B<xzgrep> [I<grep_options>] [B<-e>] I<pattern> [I<file...>]"
-msgstr "B<xzgrep> [I<opțiuni_grep>] [B<-e>] I<model> [I<fișier...>]"
+#: ../src/scripts/xzgrep.1
+msgid "B<xzgrep> [I<option...>] [I<pattern_list>] [I<file...>]"
+msgstr "B<xzgrep> [I<opțiune...>] I<listă-modele> [I<fișier...>]"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:21
+#: ../src/scripts/xzgrep.1
msgid "B<xzegrep> \\&..."
msgstr "B<xzegrep> \\&..."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:24
+#: ../src/scripts/xzgrep.1
msgid "B<xzfgrep> \\&..."
msgstr "B<xzfgrep> \\&..."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:27
+#: ../src/scripts/xzgrep.1
msgid "B<lzgrep> \\&..."
msgstr "B<lzgrep> \\&..."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:30
+#: ../src/scripts/xzgrep.1
msgid "B<lzegrep> \\&..."
msgstr "B<lzegrep> \\&..."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:33
+#: ../src/scripts/xzgrep.1
msgid "B<lzfgrep> \\&..."
msgstr "B<lzfgrep> \\&..."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:49
-msgid ""
-"B<xzgrep> invokes B<grep>(1) on I<files> which may be either uncompressed "
-"or compressed with B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), "
-"B<lzop>(1), or B<zstd>(1). All options specified are passed directly to "
-"B<grep>(1)."
-msgstr ""
-"B<xzgrep> invocă B<grep>(1) pentru I<fișiere> care pot să fie decomprimate "
-"sau comprimate cu B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1) "
-"sau B<zstd>(1). Toate opțiunile specificate sunt transmise direct către "
-"B<grep>(1)."
+#: ../src/scripts/xzgrep.1
+msgid "B<xzgrep> invokes B<grep>(1) on uncompressed contents of files. The formats of the I<files> are determined from the filename suffixes. Any I<file> with a suffix supported by B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), or B<lz4>(1) will be decompressed; all other files are assumed to be uncompressed."
+msgstr "B<xzgrep> invocă B<grep>(1) asupra conținutului necomprimat al fișierelor. Formatele I<fișierelor> sunt determinate de sufixele numelor de fișiere. Orice I<fișier> cu un sufix acceptat de B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1) sau B<lz4>(1) va fi decomprimat; toate celelalte fișiere sunt presupuse a fi necomprimate."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:62
-msgid ""
-"If no I<file> is specified, then standard input is decompressed if necessary "
-"and fed to B<grep>(1). When reading from standard input, B<gzip>(1), "
-"B<bzip2>(1), B<lzop>(1), and B<zstd>(1) compressed files are not supported."
-msgstr ""
-"Dacă nu este specificat I<fișier>, atunci intrarea standard este "
-"decomprimată dacă este necesar și alimentează B<grep>(1). La citirea din "
-"intrarea standard, fișierele comprimate B<gzip>(1), B<bzip2>(1), B<lzop>(1) "
-"și B<zstd>(1) nu sunt acceptate."
+#: ../src/scripts/xzgrep.1
+msgid "If no I<files> are specified or I<file> is B<-> then standard input is read. When reading from standard input, only files supported by B<xz>(1) are decompressed. Other files are assumed to be in uncompressed form already."
+msgstr "Dacă nu se specifică niciun I<fișier> sau dacă I<fișier> este B<->, se citește intrarea standard. Atunci când se citește de la intrarea standard, sunt decomprimate numai fișierele acceptate de B<xz>(1). Se presupune că celelalte fișiere sunt deja în format necomprimat."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:81
-msgid ""
-"If B<xzgrep> is invoked as B<xzegrep> or B<xzfgrep> then B<grep -E> or "
-"B<grep -F> is used instead of B<grep>(1). The same applies to names "
-"B<lzgrep>, B<lzegrep>, and B<lzfgrep>, which are provided for backward "
-"compatibility with LZMA Utils."
-msgstr ""
-"Dacă B<xzgrep> este invocat ca B<xzegrep> sau B<xzfgrep>, atunci este "
-"folosit B<grep -E> sau B<grep -F> în loc de B<grep>(1). Același lucru este "
-"valabil și pentru comenzile B<lzgrep>, B<lzegrep> și B<lzfgrep>, care sunt "
-"furnizate pentru compatibilitate cu LZMA Utils."
+#: ../src/scripts/xzgrep.1
+msgid "Most I<options> of B<grep>(1) are supported. However, the following options are not supported:"
+msgstr "Sunt acceptate majoritatea I<opțiunilor> din B<grep>(1). Cu toate acestea, următoarele opțiuni nu sunt acceptate:"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:86
-msgid ""
-"At least one match was found from at least one of the input files. No "
-"errors occurred."
-msgstr ""
-"A fost găsită cel puțin o potrivire din cel puțin unul dintre fișierele de "
-"la intrare. Nu au apărut erori."
+#: ../src/scripts/xzgrep.1
+msgid "B<-r>, B<--recursive>"
+msgstr "B<-r>, B<--recursive>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<-R>, B<--dereference-recursive>"
+msgstr "B<-R>, B<--dereference-recursive>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<-d>, B<--directories=>I<action>"
+msgstr "B<-d>, B<--directories=>I<acțiune>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<-Z>, B<--null>"
+msgstr "B<-Z>, B<--null>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<-z>, B<--null-data>"
+msgstr "B<-z>, B<--null-data>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<--include=>I<glob>"
+msgstr "B<--include=>I<global>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<--exclude=>I<glob>"
+msgstr "B<--exclude=>I<global>"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:90
+#: ../src/scripts/xzgrep.1
+msgid "B<--exclude-from=>I<file>"
+msgstr "B<--exclude-from=>I<fișier>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<--exclude-dir=>I<glob>"
+msgstr "B<--exclude-dir=>I<global>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<xzegrep> is an alias for B<xzgrep -E>. B<xzfgrep> is an alias for B<xzgrep -F>."
+msgstr "B<xzegrep> este un alias pentru B<xzgrep -E>. B<xzfgrep> este un alias pentru B<xzgrep -F>."
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "The commands B<lzgrep>, B<lzegrep>, and B<lzfgrep> are provided for backward compatibility with LZMA Utils."
+msgstr "Comenzile B<lzgrep>, B<lzegrep> și B<lzfgrep> sunt furnizate pentru compatibilitate retroactivă cu LZMA Utils."
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "At least one match was found from at least one of the input files. No errors occurred."
+msgstr "A fost găsită cel puțin o potrivire din cel puțin unul dintre fișierele de la intrare. Nu au apărut erori."
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
msgid "No matches were found from any of the input files. No errors occurred."
-msgstr ""
-"Nu au fost găsite potriviri din niciunul dintre fișierele de la intrare. Nu "
-"au apărut erori."
+msgstr "Nu au fost găsite potriviri din niciunul dintre fișierele de la intrare. Nu au apărut erori."
#. type: TP
-#: ../src/scripts/xzgrep.1:90
+#: ../src/scripts/xzgrep.1
#, no-wrap
msgid "E<gt>1"
msgstr "E<gt>1"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:94
+#: ../src/scripts/xzgrep.1
msgid "One or more errors occurred. It is unknown if matches were found."
-msgstr ""
-"A apărut una sau mai multe erori. Nu se cunoaște dacă au fost găsite "
-"potriviri."
+msgstr "A apărut una sau mai multe erori. Nu se cunoaște dacă au fost găsite potriviri."
#. type: TP
-#: ../src/scripts/xzgrep.1:95
+#: ../src/scripts/xzgrep.1
#, no-wrap
msgid "B<GREP>"
msgstr "B<GREP>"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:106
-msgid ""
-"If the B<GREP> environment variable is set, B<xzgrep> uses it instead of "
-"B<grep>(1), B<grep -E>, or B<grep -F>."
-msgstr ""
-"Dacă variabila de mediu B<GREP> este definită, B<xzgrep> o folosește în loc "
-"de B<grep>(1), B<grep -E> sau B<grep -F>."
+#: ../src/scripts/xzgrep.1
+msgid "If B<GREP> is set to a non-empty value, it is used instead of B<grep>, B<grep -E>, or B<grep -F>."
+msgstr "Dacă variabila de mediu B<GREP> este stabilită la o valoare nevidă, aceasta este utilizată în locul lui B<grep>, B<grep -E> sau B<grep -F>."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:113
-msgid ""
-"B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), "
-"B<zgrep>(1)"
-msgstr ""
-"B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), "
-"B<zgrep>(1)"
+#: ../src/scripts/xzgrep.1
+msgid "B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), B<lz4>(1), B<zgrep>(1)"
+msgstr "B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), B<lz4>(1), B<zgrep>(1)"
#. type: TH
-#: ../src/scripts/xzless.1:10
+#: ../src/scripts/xzless.1
#, no-wrap
msgid "XZLESS"
msgstr "XZLESS"
#. type: TH
-#: ../src/scripts/xzless.1:10
+#: ../src/scripts/xzless.1 ../src/scripts/xzmore.1
#, no-wrap
-msgid "2010-09-27"
-msgstr "27.09.2010"
+msgid "2024-02-12"
+msgstr "12 februarie 2024"
#. type: Plain text
-#: ../src/scripts/xzless.1:13
+#: ../src/scripts/xzless.1
msgid "xzless, lzless - view xz or lzma compressed (text) files"
msgstr "xzless, lzless - vizualizează fișierele (text) comprimate xz sau lzma"
#. type: Plain text
-#: ../src/scripts/xzless.1:16
+#: ../src/scripts/xzless.1
msgid "B<xzless> [I<file>...]"
msgstr "B<xzless> [I<fișier>...]"
#. type: Plain text
-#: ../src/scripts/xzless.1:19
+#: ../src/scripts/xzless.1
msgid "B<lzless> [I<file>...]"
msgstr "B<lzless> [I<fișier>...]"
#. 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> este un filtru care afișează textul din fișierele comprimate pe un "
-"terminal. Funcționează pentru fișiere comprimate cu B<xz>(1) sau "
-"B<lzma>(1). Dacă nu sunt date I<fișiere>, B<xzless> citește de la intrarea "
-"standard."
+#: ../src/scripts/xzless.1
+msgid "B<xzless> is a filter that displays text from compressed files to a terminal. Files supported by B<xz>(1) are decompressed; other files are assumed to be in uncompressed form already. If no I<files> are given, B<xzless> reads from standard input."
+msgstr "B<xzless> este un filtru care afișează textul din fișierele comprimate pe un terminal. Fișierele acceptate de B<xz>(1) sunt decomprimate; se presupune că celelalte fișiere sunt deja în format necomprimat. Dacă nu se dă nici un I<fișier>, B<xzless> citește de la intrarea standard."
#. 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> folosește B<less>(1) pentru a-și prezenta rezultatul. Spre "
-"deosebire de B<xzmore>, alegerea sa de pager nu poate fi modificată prin "
-"definirea unei variabile de mediu. Comenzile se bazează atât pe B<more>(1) "
-"cât și pe B<vi>(1) și permit mișcarea înainte și înapoi și căutarea. "
-"Consultați manualul B<less>(1) pentru mai multe informații."
+#: ../src/scripts/xzless.1
+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> folosește B<less>(1) pentru a-și prezenta rezultatul. Spre deosebire de B<xzmore>, alegerea sa de pager nu poate fi modificată prin definirea unei variabile de mediu. Comenzile se bazează atât pe B<more>(1) cât și pe B<vi>(1) și permit mișcarea înainte și înapoi și căutarea. Consultați manualul B<less>(1) pentru mai multe informații."
#. type: Plain text
-#: ../src/scripts/xzless.1:52
-msgid ""
-"The command named B<lzless> is provided for backward compatibility with LZMA "
-"Utils."
-msgstr ""
-"Comanda numită B<lzless> este furnizată pentru compatibilitatea cu LZMA "
-"Utils."
+#: ../src/scripts/xzless.1
+msgid "The command named B<lzless> is provided for backward compatibility with LZMA Utils."
+msgstr "Comanda numită B<lzless> este furnizată pentru compatibilitatea cu LZMA Utils."
#. type: TP
-#: ../src/scripts/xzless.1:53
+#: ../src/scripts/xzless.1
#, 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 ""
-"O listă de caractere speciale pentru shell. Definită de B<xzless>, cu "
-"excepția cazului în care este deja definită în mediu."
+#: ../src/scripts/xzless.1
+msgid "A list of characters special to the shell. Set by B<xzless> unless it is already set in the environment."
+msgstr "O listă de caractere speciale pentru shell. Definită de B<xzless>, cu excepția cazului în care este deja definită în mediu."
#. type: TP
-#: ../src/scripts/xzless.1:59
+#: ../src/scripts/xzless.1
#, 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 ""
-"Aceasta este definită în linia de comandă pentru a invoca instrumentul de "
-"decomprimare B<xz>(1) pentru preprocesarea fișierelor de intrare pentru "
-"B<less>(1)."
+#: ../src/scripts/xzless.1
+msgid "Set to a command line to invoke the B<xz>(1) decompressor for preprocessing the input files to B<less>(1)."
+msgstr "Aceasta este definită în linia de comandă pentru a invoca instrumentul de decomprimare B<xz>(1) pentru preprocesarea fișierelor de intrare pentru B<less>(1)."
#. type: Plain text
-#: ../src/scripts/xzless.1:69
+#: ../src/scripts/xzless.1
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
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "XZMORE"
msgstr "XZMORE"
#. type: Plain text
-#: ../src/scripts/xzmore.1:10
+#: ../src/scripts/xzmore.1
msgid "xzmore, lzmore - view xz or lzma compressed (text) files"
msgstr "xzmore, lzmore - vizualizează fișierele (text) comprimate xz sau lzma"
#. type: Plain text
-#: ../src/scripts/xzmore.1:13
-msgid "B<xzmore> [I<file...>]"
-msgstr "B<xzmore> [I<fișier...>]"
+#: ../src/scripts/xzmore.1
+msgid "B<xzmore> [I<file>...]"
+msgstr "B<xzmore> [I<fișier>...]"
#. type: Plain text
-#: ../src/scripts/xzmore.1:16
-msgid "B<lzmore> [I<file...>]"
-msgstr "B<lzmore> [I<fișier...>]"
+#: ../src/scripts/xzmore.1
+msgid "B<lzmore> [I<file>...]"
+msgstr "B<lzmore> [I<fișier>...]"
#. 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> este un filtru care vă permite să examinați conținutul fișierelor "
-"text comprimate B<xz>(1) sau B<lzma>(1), câte o pagină pe ecran, pe un "
-"terminal."
+#: ../src/scripts/xzmore.1
+msgid "B<xzmore> displays text from compressed files to a terminal using B<more>(1). Files supported by B<xz>(1) are decompressed; other files are assumed to be in uncompressed form already. If no I<files> are given, B<xzmore> reads from standard input. See the B<more>(1) manual for the keyboard commands."
+msgstr "B<xzmore> afișează textul din fișierele comprimate pe un terminal folosind B<more>(1). Fișierele acceptate de B<xz>(1) sunt decomprimate; se presupune că celelalte fișiere sunt deja în format necomprimat. Dacă nu se dă nici un I<fișiere>, B<xzmore> citește de la intrarea standard. Consultați manualul B<more>(1) pentru comenzile de la tastatură."
#. 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 ""
-"Pentru a utiliza un paginator, altul decât paginatorul implicit B<more>, "
-"definiți variabila de mediu B<PAGER> cu numele programului dorit. Comanda "
-"B<lzmore> este furnizată pentru compatibilitatea cu LZMA Utils."
-
-#. type: TP
-#: ../src/scripts/xzmore.1:33
-#, no-wrap
-msgid "B<e> or B<q>"
-msgstr "B<e> sau B<q>"
+#: ../src/scripts/xzmore.1
+msgid "Note that scrolling backwards might not be possible depending on the implementation of B<more>(1). This is because B<xzmore> uses a pipe to pass the decompressed data to B<more>(1). B<xzless>(1) uses B<less>(1) which provides more advanced features."
+msgstr "Rețineți că este posibil ca derularea înapoi să nu fie posibilă în funcție de implementarea lui B<more>(1). Acest lucru se datorează faptului că B<xzmore> utilizează o conductă pentru a transmite datele decomprimate către B<more>(1). B<xzless>(1) utilizează B<less>(1) care oferă caracteristici mai avansate."
#. 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 ""
-"Când linia --More--(Fișierul următor: I<fișier>) este afișată, această "
-"comandă face ca B<xzmore> să iasă."
+#: ../src/scripts/xzmore.1
+msgid "The command B<lzmore> is provided for backward compatibility with LZMA Utils."
+msgstr "Comanda B<lzmore> este furnizată pentru compatibilitate retroactivă cu LZMA Utils."
#. type: TP
-#: ../src/scripts/xzmore.1:40
+#: ../src/scripts/xzmore.1
#, 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 ""
-"Când linia --More--(Fișierul următor: I<fișier>) este afișată, această "
-"comandă face ca B<xzmore> să omită următorul fișier și să continue."
+msgid "B<PAGER>"
+msgstr "B<PAGER>"
#. 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 ""
-"Pentru lista comenzilor de la tastatură acceptate în timp ce vizualizați "
-"conținutul unui fișier, consultați manualul paginatorului pe care îl "
-"utilizați, de obicei B<more>(1)."
+#: ../src/scripts/xzmore.1
+msgid "If B<PAGER> is set, its value is used as the pager instead of B<more>(1)."
+msgstr "Dacă variabila de mediu B<PAGER>, este definită, valoarea sa este utilizată ca paginator în loc de B<more>(1)."
#. type: Plain text
-#: ../src/scripts/xzmore.1:55
+#: ../src/scripts/xzmore.1
msgid "B<more>(1), B<xz>(1), B<xzless>(1), B<zmore>(1)"
msgstr "B<more>(1), B<xz>(1), B<xzless>(1), B<zmore>(1)"
-#~ msgid "2022-12-01"
-#~ msgstr "01.12.2022"
-
-#~ msgid "2020-02-01"
-#~ msgstr "01.02.2020"
+#, no-wrap
+#~ msgid "2024-01-19"
+#~ msgstr "19 ianuarie 2024"
diff --git a/po4a/uk.po b/po4a/uk.po
index 0aa366a..c317988 100644
--- a/po4a/uk.po
+++ b/po4a/uk.po
@@ -1,13 +1,15 @@
+# SPDX-License-Identifier: 0BSD
+#
# Ukrainian translation for xz-man.
-# This file is distributed under the same license as the XZ Utils package.
-# This file is put in the public domain.
+# This file is distributed under the same license as the xz-man package.
+# Copyright (C) The XZ Utils authors and contributors
#
-# Yuri Chornoivan <yurchor@ukr.net>, 2022, 2023.
+# Yuri Chornoivan <yurchor@ukr.net>, 2019, 2022, 2023, 2024.
msgid ""
msgstr ""
-"Project-Id-Version: xz-man-5.4.4-pre1\n"
-"POT-Creation-Date: 2023-11-01 20:27+0800\n"
-"PO-Revision-Date: 2023-07-19 20:55+0300\n"
+"Project-Id-Version: xz-man-5.6.0-pre2\n"
+"POT-Creation-Date: 2024-05-29 17:45+0300\n"
+"PO-Revision-Date: 2024-02-15 17:53+0200\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
"Language: uk\n"
@@ -15,3057 +17,1908 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Lokalize 20.12.0\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Lokalize 23.04.1\n"
#. type: TH
-#: ../src/xz/xz.1:9
+#: ../src/xz/xz.1
#, no-wrap
msgid "XZ"
msgstr "XZ"
#. type: TH
-#: ../src/xz/xz.1:9
-#, no-wrap
-msgid "2023-07-17"
-msgstr "17 липня 2023 року"
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
+#, fuzzy, no-wrap
+#| msgid "2024-02-25"
+msgid "2024-04-08"
+msgstr "25 лютого 2024 року"
#. type: TH
-#: ../src/xz/xz.1:9 ../src/xzdec/xzdec.1:7 ../src/lzmainfo/lzmainfo.1:7
-#: ../src/scripts/xzdiff.1:9 ../src/scripts/xzgrep.1:9
-#: ../src/scripts/xzless.1:10 ../src/scripts/xzmore.1:7
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "Tukaani"
msgstr "Tukaani"
#. type: TH
-#: ../src/xz/xz.1:9 ../src/xzdec/xzdec.1:7 ../src/lzmainfo/lzmainfo.1:7
-#: ../src/scripts/xzdiff.1:9 ../src/scripts/xzgrep.1:9
-#: ../src/scripts/xzless.1:10 ../src/scripts/xzmore.1:7
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "XZ Utils"
msgstr "XZ Utils"
#. type: SH
-#: ../src/xz/xz.1:11 ../src/xzdec/xzdec.1:8 ../src/lzmainfo/lzmainfo.1:8
-#: ../src/scripts/xzdiff.1:10 ../src/scripts/xzgrep.1:10
-#: ../src/scripts/xzless.1:11 ../src/scripts/xzmore.1:8
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "NAME"
msgstr "НАЗВА"
#. type: Plain text
-#: ../src/xz/xz.1:13
-msgid ""
-"xz, unxz, xzcat, lzma, unlzma, lzcat - Compress or decompress .xz and .lzma "
-"files"
-msgstr ""
-"xz, unxz, xzcat, lzma, unlzma, lzcat — стискання та розпаковування файлів ."
-"xz і .lzma"
+#: ../src/xz/xz.1
+msgid "xz, unxz, xzcat, lzma, unlzma, lzcat - Compress or decompress .xz and .lzma files"
+msgstr "xz, unxz, xzcat, lzma, unlzma, lzcat — стискання та розпаковування файлів .xz і .lzma"
#. type: SH
-#: ../src/xz/xz.1:14 ../src/xzdec/xzdec.1:10 ../src/lzmainfo/lzmainfo.1:10
-#: ../src/scripts/xzdiff.1:12 ../src/scripts/xzgrep.1:12
-#: ../src/scripts/xzless.1:13 ../src/scripts/xzmore.1:10
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "SYNOPSIS"
msgstr "КОРОТКИЙ ОПИС"
#. type: Plain text
-#: ../src/xz/xz.1:18
+#: ../src/xz/xz.1
msgid "B<xz> [I<option...>] [I<file...>]"
msgstr "B<xz> [I<параметр...>] [I<файл...>]"
#. type: SH
-#: ../src/xz/xz.1:19
+#: ../src/xz/xz.1
#, no-wrap
msgid "COMMAND ALIASES"
msgstr "СКОРОЧЕННЯ КОМАНД"
#. type: Plain text
-#: ../src/xz/xz.1:23
+#: ../src/xz/xz.1
msgid "B<unxz> is equivalent to B<xz --decompress>."
msgstr "B<unxz> є рівноцінним до B<xz --decompress>."
#. type: Plain text
-#: ../src/xz/xz.1:27
+#: ../src/xz/xz.1
msgid "B<xzcat> is equivalent to B<xz --decompress --stdout>."
msgstr "B<xzcat> є рівноцінним до B<xz --decompress --stdout>."
#. type: Plain text
-#: ../src/xz/xz.1:31
+#: ../src/xz/xz.1
msgid "B<lzma> is equivalent to B<xz --format=lzma>."
msgstr "B<lzma> є рівноцінним до B<xz --format=lzma>."
#. type: Plain text
-#: ../src/xz/xz.1:35
+#: ../src/xz/xz.1
msgid "B<unlzma> is equivalent to B<xz --format=lzma --decompress>."
msgstr "B<unlzma> є рівноцінним до B<xz --format=lzma --decompress>."
#. type: Plain text
-#: ../src/xz/xz.1:39
+#: ../src/xz/xz.1
msgid "B<lzcat> is equivalent to B<xz --format=lzma --decompress --stdout>."
msgstr "B<lzcat> є рівноцінним до B<xz --format=lzma --decompress --stdout>."
#. type: Plain text
-#: ../src/xz/xz.1:51
-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 ""
-"При написанні скриптів, де потрібно розпаковувати файли, рекомендуємо завжди "
-"використовувати B<xz> із відповідними аргументами (B<xz -d> або B<xz -dc>), "
-"замість B<unxz> і B<xzcat>."
+#: ../src/xz/xz.1
+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 "При написанні скриптів, де потрібно розпаковувати файли, рекомендуємо завжди використовувати B<xz> із відповідними аргументами (B<xz -d> або B<xz -dc>), замість B<unxz> і B<xzcat>."
#. type: SH
-#: ../src/xz/xz.1:52 ../src/xzdec/xzdec.1:18 ../src/lzmainfo/lzmainfo.1:15
-#: ../src/scripts/xzdiff.1:24 ../src/scripts/xzgrep.1:33
-#: ../src/scripts/xzless.1:19 ../src/scripts/xzmore.1:16
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "DESCRIPTION"
msgstr "ОПИС"
#. type: Plain text
-#: ../src/xz/xz.1:71
-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. In "
-"addition, decompression of the B<.lz> format used by B<lzip> is supported."
-msgstr ""
-"B<xz> інструмент загального призначення для стискання даних із синтаксисом "
-"командного рядка, подібним для B<gzip>(1) і B<bzip2>(1). Власним форматом "
-"файлів є B<.xz>, але передбачено підтримку застарілого формату B<.lzma>, "
-"який було використано у LZMA Utils, та необроблених потоків стиснених даних "
-"без заголовків формату контейнера. Крім того, передбачено підтримку "
-"розпаковування формату B<.lz>, який використано у B<lzip>."
+#: ../src/xz/xz.1
+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. In addition, decompression of the B<.lz> format used by B<lzip> is supported."
+msgstr "B<xz> інструмент загального призначення для стискання даних із синтаксисом командного рядка, подібним для B<gzip>(1) і B<bzip2>(1). Власним форматом файлів є B<.xz>, але передбачено підтримку застарілого формату B<.lzma>, який було використано у LZMA Utils, та необроблених потоків стиснених даних без заголовків формату контейнера. Крім того, передбачено підтримку розпаковування формату B<.lz>, який використано у B<lzip>."
#. type: Plain text
-#: ../src/xz/xz.1:93
-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> стискає або розпаковує кожен I<файл> відповідно до вибраного режиму "
-"дій. Якщо I<файли> не задано або якщо I<файлом> є B<->, B<xz> читатиме дані "
-"зі стандартного джерела вхідних даних і записуватиме оброблені дані до "
-"стандартного виведення. B<xz> відмовить (покаже повідомлення про помилку і "
-"пропустить I<файл>) у записів стиснених даних до стандартного виведення, "
-"якщо це термінал. Так само, B<xz> відмовить у читанні стиснених даних зі "
-"стандартного джерела вхідних даних, якщо це термінал."
+#: ../src/xz/xz.1
+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> стискає або розпаковує кожен I<файл> відповідно до вибраного режиму дій. Якщо I<файли> не задано або якщо I<файлом> є B<->, B<xz> читатиме дані зі стандартного джерела вхідних даних і записуватиме оброблені дані до стандартного виведення. B<xz> відмовить (покаже повідомлення про помилку і пропустить I<файл>) у записів стиснених даних до стандартного виведення, якщо це термінал. Так само, B<xz> відмовить у читанні стиснених даних зі стандартного джерела вхідних даних, якщо це термінал."
#. type: Plain text
-#: ../src/xz/xz.1:103
-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 ""
-"Якщо не вказано B<--stdout>, I<файли>, відмінні від B<->, буде записано до "
-"нового файла, чию назву буде визначено з назви початкового I<файла>:"
+#: ../src/xz/xz.1
+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 "Якщо не вказано B<--stdout>, I<файли>, відмінні від B<->, буде записано до нового файла, чию назву буде визначено з назви початкового I<файла>:"
#. type: IP
-#: ../src/xz/xz.1:103 ../src/xz/xz.1:109 ../src/xz/xz.1:134 ../src/xz/xz.1:139
-#: ../src/xz/xz.1:142 ../src/xz/xz.1:145 ../src/xz/xz.1:161 ../src/xz/xz.1:422
-#: ../src/xz/xz.1:425 ../src/xz/xz.1:432 ../src/xz/xz.1:677 ../src/xz/xz.1:679
-#: ../src/xz/xz.1:778 ../src/xz/xz.1:789 ../src/xz/xz.1:798 ../src/xz/xz.1:806
-#: ../src/xz/xz.1:1034 ../src/xz/xz.1:1043 ../src/xz/xz.1:1055
-#: ../src/xz/xz.1:1729 ../src/xz/xz.1:1735 ../src/xz/xz.1:1853
-#: ../src/xz/xz.1:1857 ../src/xz/xz.1:1860 ../src/xz/xz.1:1863
-#: ../src/xz/xz.1:1867 ../src/xz/xz.1:1874 ../src/xz/xz.1:1876
+#: ../src/xz/xz.1
#, no-wrap
msgid "\\(bu"
msgstr "\\(bu"
#. type: Plain text
-#: ../src/xz/xz.1:109
-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 ""
-"При стисканні суфікс формату файла призначення (B<.xz> або B<.lzma>) буде "
-"дописано до назви початкового файла для отримання назви файла призначення."
+#: ../src/xz/xz.1
+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 "При стисканні суфікс формату файла призначення (B<.xz> або B<.lzma>) буде дописано до назви початкового файла для отримання назви файла призначення."
#. type: Plain text
-#: ../src/xz/xz.1:124
-msgid ""
-"When decompressing, the B<.xz>, B<.lzma>, or B<.lz> suffix is removed from "
-"the filename to get the target filename. B<xz> also recognizes the suffixes "
-"B<.txz> and B<.tlz>, and replaces them with the B<.tar> suffix."
-msgstr ""
-"При розпаковуванні суфікс B<.xz>, B<.lzma> або B<.lz> буде вилучено з назви "
-"файла для отримання назви файла призначення. Крім того, B<xz> розпізнає "
-"суфікси B<.txz> і B<.tlz> і замінює їх на суфікс B<.tar>."
+#: ../src/xz/xz.1
+msgid "When decompressing, the B<.xz>, B<.lzma>, or B<.lz> suffix is removed from the filename to get the target filename. B<xz> also recognizes the suffixes B<.txz> and B<.tlz>, and replaces them with the B<.tar> suffix."
+msgstr "При розпаковуванні суфікс B<.xz>, B<.lzma> або B<.lz> буде вилучено з назви файла для отримання назви файла призначення. Крім того, B<xz> розпізнає суфікси B<.txz> і B<.tlz> і замінює їх на суфікс B<.tar>."
#. type: Plain text
-#: ../src/xz/xz.1:128
-msgid ""
-"If the target file already exists, an error is displayed and the I<file> is "
-"skipped."
-msgstr ""
-"Якщо файл призначення вже існує, буде показано повідомлення про помилку, а "
-"I<файл> буде пропущено."
+#: ../src/xz/xz.1
+msgid "If the target file already exists, an error is displayed and the I<file> is skipped."
+msgstr "Якщо файл призначення вже існує, буде показано повідомлення про помилку, а I<файл> буде пропущено."
#. type: Plain text
-#: ../src/xz/xz.1:134
-msgid ""
-"Unless writing to standard output, B<xz> will display a warning and skip the "
-"I<file> if any of the following applies:"
-msgstr ""
-"Окрім випадку запису до стандартного виведення, B<xz> покаже попередження і "
-"пропустить обробку I<файла>, якщо буде виконано будь-яку з таких умов:"
+#: ../src/xz/xz.1
+msgid "Unless writing to standard output, B<xz> will display a warning and skip the I<file> if any of the following applies:"
+msgstr "Окрім випадку запису до стандартного виведення, B<xz> покаже попередження і пропустить обробку I<файла>, якщо буде виконано будь-яку з таких умов:"
#. type: Plain text
-#: ../src/xz/xz.1:139
-msgid ""
-"I<File> is not a regular file. Symbolic links are not followed, and thus "
-"they are not considered to be regular files."
-msgstr ""
-"I<Файл> не є звичайним файлом. Програма не переходитиме за символічними "
-"посиланнями, а отже, не вважатиме їх звичайними файлами."
+#: ../src/xz/xz.1
+msgid "I<File> is not a regular file. Symbolic links are not followed, and thus they are not considered to be regular files."
+msgstr "I<Файл> не є звичайним файлом. Програма не переходитиме за символічними посиланнями, а отже, не вважатиме їх звичайними файлами."
#. type: Plain text
-#: ../src/xz/xz.1:142
+#: ../src/xz/xz.1
msgid "I<File> has more than one hard link."
msgstr "На I<файл> існує декілька жорстких посилань."
#. type: Plain text
-#: ../src/xz/xz.1:145
+#: ../src/xz/xz.1
msgid "I<File> has setuid, setgid, or sticky bit set."
msgstr "Для I<файла> встановлено setuid, setgid або «липкий» біт."
#. type: Plain text
-#: ../src/xz/xz.1:161
-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 ""
-"Режим дій встановлено у значення «стискання», і I<файл> вже має суфікс назви "
-"формату файла призначення (B<.xz> або B<.txz> при стисканні до формату B<."
-"xz>, і B<.lzma> або B<.tlz> при стисканні до формату B<.lzma>)."
+#: ../src/xz/xz.1
+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 "Режим дій встановлено у значення «стискання», і I<файл> вже має суфікс назви формату файла призначення (B<.xz> або B<.txz> при стисканні до формату B<.xz>, і B<.lzma> або B<.tlz> при стисканні до формату B<.lzma>)."
#. type: Plain text
-#: ../src/xz/xz.1:171
-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>, B<."
-"tlz>, or B<.lz>)."
-msgstr ""
-"Режим дій встановлено у значення «розпаковування», і I<файл> не має суфікса "
-"назви жодного з підтримуваних форматів (B<.xz>, B<.txz>, B<.lzma>, B<.tlz> "
-"або B<.lz>)."
+#: ../src/xz/xz.1
+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>, B<.tlz>, or B<.lz>)."
+msgstr "Режим дій встановлено у значення «розпаковування», і I<файл> не має суфікса назви жодного з підтримуваних форматів (B<.xz>, B<.txz>, B<.lzma>, B<.tlz> або B<.lz>)."
#. type: Plain text
-#: ../src/xz/xz.1:186
-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 ""
-"Після успішного стискання або розпаковування I<файла>, B<xz> копіює дані "
-"щодо власника, групи, прав доступу, часу доступу та моменту внесення змін з "
-"початкового I<файла> до файла призначення. Якщо копіювання даних щодо групи "
-"зазнає невдачі, права доступу буде змінено так, що файл призначення стане "
-"недоступним для користувачів, які не мають права доступу до початкового "
-"I<файла>. В B<xz> ще не передбачено підтримки копіювання інших метаданих, "
-"зокрема списків керування доступом або розширених атрибутів."
+#: ../src/xz/xz.1
+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 "Після успішного стискання або розпаковування I<файла>, B<xz> копіює дані щодо власника, групи, прав доступу, часу доступу та моменту внесення змін з початкового I<файла> до файла призначення. Якщо копіювання даних щодо групи зазнає невдачі, права доступу буде змінено так, що файл призначення стане недоступним для користувачів, які не мають права доступу до початкового I<файла>. В B<xz> ще не передбачено підтримки копіювання інших метаданих, зокрема списків керування доступом або розширених атрибутів."
#. type: Plain text
-#: ../src/xz/xz.1:196
-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 or if an error occurs."
-msgstr ""
-"Щойно файл призначення буде успішно закрито, початковий I<файл> буде "
-"вилучено, якщо не вказано параметра B<--keep>. Початковий I<файл> ніколи не "
-"буде вилучено, якщо виведені дані буде записано до стандартного виведення "
-"або якщо станеться помилка."
+#: ../src/xz/xz.1
+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 or if an error occurs."
+msgstr "Щойно файл призначення буде успішно закрито, початковий I<файл> буде вилучено, якщо не вказано параметра B<--keep>. Початковий I<файл> ніколи не буде вилучено, якщо виведені дані буде записано до стандартного виведення або якщо станеться помилка."
#. type: Plain text
-#: ../src/xz/xz.1:208
-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 ""
-"Надсилання B<SIGINFO> або B<SIGUSR1> до процесу B<xz> призводить до "
-"виведення даних щодо поступу до стандартного виведення помилок. Це має лише "
-"обмежене використання, оскільки якщо стандартним виведенням помилок є "
-"термінал, використання B<--verbose> призведе до показу автоматично "
-"оновлюваного індикатора поступу."
+#: ../src/xz/xz.1
+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 "Надсилання B<SIGINFO> або B<SIGUSR1> до процесу B<xz> призводить до виведення даних щодо поступу до стандартного виведення помилок. Це має лише обмежене використання, оскільки якщо стандартним виведенням помилок є термінал, використання B<--verbose> призведе до показу автоматично оновлюваного індикатора поступу."
#. type: SS
-#: ../src/xz/xz.1:209
+#: ../src/xz/xz.1
#, no-wrap
msgid "Memory usage"
msgstr "Використання пам'яті"
#. type: Plain text
-#: ../src/xz/xz.1:225
-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 ""
-"Використання B<xz> пам'яті може бути різним: від декількох сотень кілобайтів "
-"до декількох гігабайтів, залежно від параметрів стискання. Параметри, які "
-"використано при стисканні файла, визначають вимоги до об'єму пам'яті при "
-"розпакуванні. Типово, засобу розпаковування потрібно від 5\\ % до 20\\ % "
-"об'єму пам'яті, якого засіб стискання потребує при створенні файла. "
-"Наприклад, розпаковування файла, який створено з використанням B<xz -9>, у "
-"поточній версії потребує 65\\ МіБ пам'яті. Втім, можливе створення файлів B<."
-"xz>, які потребуватимуть для розпаковування декількох гігабайтів пам'яті."
+#: ../src/xz/xz.1
+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 "Використання B<xz> пам'яті може бути різним: від декількох сотень кілобайтів до декількох гігабайтів, залежно від параметрів стискання. Параметри, які використано при стисканні файла, визначають вимоги до об'єму пам'яті при розпакуванні. Типово, засобу розпаковування потрібно від 5\\ % до 20\\ % об'єму пам'яті, якого засіб стискання потребує при створенні файла. Наприклад, розпаковування файла, який створено з використанням B<xz -9>, у поточній версії потребує 65\\ МіБ пам'яті. Втім, можливе створення файлів B<.xz>, які потребуватимуть для розпаковування декількох гігабайтів пам'яті."
#. type: Plain text
-#: ../src/xz/xz.1:237
-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 (for example, using "
-"B<ulimit>(1) to limit virtual memory tends to cripple B<mmap>(2))."
-msgstr ""
-"Ймовірність високого рівня використання пам'яті може бути особливо "
-"дошкульною для користувачів застарілих комп'ютерів. Щоб запобігти прикрим "
-"несподіванкам, у B<xz> передбачено вбудований обмежувач пам'яті, який типово "
-"вимкнено. Хоча у деяких операційних системах передбачено спосіб обмежити "
-"використання пам'яті процесами, сподівання на його ефективність не є аж "
-"надто гнучким (наприклад, використання B<ulimit>(1) для обмеження "
-"віртуальної пам'яті призводить до викривлення даних B<mmap>(2))."
+#: ../src/xz/xz.1
+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 (for example, using B<ulimit>(1) to limit virtual memory tends to cripple B<mmap>(2))."
+msgstr "Ймовірність високого рівня використання пам'яті може бути особливо дошкульною для користувачів застарілих комп'ютерів. Щоб запобігти прикрим несподіванкам, у B<xz> передбачено вбудований обмежувач пам'яті, який типово вимкнено. Хоча у деяких операційних системах передбачено спосіб обмежити використання пам'яті процесами, сподівання на його ефективність не є аж надто гнучким (наприклад, використання B<ulimit>(1) для обмеження віртуальної пам'яті призводить до викривлення даних B<mmap>(2))."
#. type: Plain text
-#: ../src/xz/xz.1:259
-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>, for example, "
-"B<XZ_DEFAULTS=--memlimit=150MiB>. It is possible to set the limits "
-"separately for compression and decompression by using B<--memlimit-"
-"compress=>I<limit> and B<--memlimit-decompress=>I<limit>. Using these two "
-"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 ""
-"Обмежувач пам'яті можна увімкнути за допомогою параметра командного рядка "
-"B<--memlimit=>I<обмеження>. Часто, зручніше увімкнути обмежувач на типовому "
-"рівні, встановивши значення для змінної середовища B<XZ_DEFAULTS>, "
-"наприклад, B<XZ_DEFAULTS=--memlimit=150MiB>. Можна встановити обмеження "
-"окремо для стискання і розпакування за допомогою B<--memlimit-"
-"compress=>I<limit> and B<--memlimit-decompress=>I<обмеження>. Використання "
-"цих двох параметрів поза B<XZ_DEFAULTS> не таке вже і корисне, оскільки "
-"одноразовий запуск B<xz> не може одночасно призводити до стискання та "
-"розпаковування, а набрати у командному рядку B<--memlimit=>I<обмеження> (або "
-"B<-M> I<обмеження>) набагато швидше."
-
-#. type: Plain text
-#: ../src/xz/xz.1:278
-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, for example, if the limit is only slightly less "
-"than the amount required for B<xz -9>, the settings will be scaled down only "
-"a little, not all the way down to B<xz -8>."
-msgstr ""
-"Якщо під час розпаковування вказане обмеження буде перевищено, B<xz> покаже "
-"повідомлення про помилку, а розпаковування файла зазнає невдачі. Якщо "
-"обмеження буде перевищено при стисканні, B<xz> спробує масштабувати "
-"параметри так, щоб не перевищувати обмеження (окрім випадків використання "
-"B<--format=raw> або B<--no-adjust>). Отже, дію буде виконано, якщо обмеження "
-"не є надто жорстким. Масштабування параметрів буде виконано кроками, які не "
-"збігаються із рівнями шаблонів стискання. Наприклад, якщо обмеження лише "
-"трохи не вкладається у об'єм потрібний для B<xz -9>, параметри буде змінено "
-"лише трохи, не до рівня B<xz -8>."
+#: ../src/xz/xz.1
+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>, for example, B<XZ_DEFAULTS=--memlimit=150MiB>. It is possible to set the limits separately for compression and decompression by using B<--memlimit-compress=>I<limit> and B<--memlimit-decompress=>I<limit>. Using these two 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 "Обмежувач пам'яті можна увімкнути за допомогою параметра командного рядка B<--memlimit=>I<обмеження>. Часто, зручніше увімкнути обмежувач на типовому рівні, встановивши значення для змінної середовища B<XZ_DEFAULTS>, наприклад, B<XZ_DEFAULTS=--memlimit=150MiB>. Можна встановити обмеження окремо для стискання і розпакування за допомогою B<--memlimit-compress=>I<limit> and B<--memlimit-decompress=>I<обмеження>. Використання цих двох параметрів поза B<XZ_DEFAULTS> не таке вже і корисне, оскільки одноразовий запуск B<xz> не може одночасно призводити до стискання та розпаковування, а набрати у командному рядку B<--memlimit=>I<обмеження> (або B<-M> I<обмеження>) набагато швидше."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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, for example, if the limit is only slightly less than the amount required for B<xz -9>, the settings will be scaled down only a little, not all the way down to B<xz -8>."
+msgstr "Якщо під час розпаковування вказане обмеження буде перевищено, B<xz> покаже повідомлення про помилку, а розпаковування файла зазнає невдачі. Якщо обмеження буде перевищено при стисканні, B<xz> спробує масштабувати параметри так, щоб не перевищувати обмеження (окрім випадків використання B<--format=raw> або B<--no-adjust>). Отже, дію буде виконано, якщо обмеження не є надто жорстким. Масштабування параметрів буде виконано кроками, які не збігаються із рівнями шаблонів стискання. Наприклад, якщо обмеження лише трохи не вкладається у об'єм потрібний для B<xz -9>, параметри буде змінено лише трохи, не до рівня B<xz -8>."
#. type: SS
-#: ../src/xz/xz.1:279
+#: ../src/xz/xz.1
#, no-wrap
msgid "Concatenation and padding with .xz files"
msgstr "Поєднання і заповнення з файлами .xz"
#. type: Plain text
-#: ../src/xz/xz.1:287
-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 ""
-"Можна поєднати файли B<.xz> без додаткової обробки. B<xz> розпакує такі "
-"файли так, наче вони є єдиним файлом B<.xz>."
+#: ../src/xz/xz.1
+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 "Можна поєднати файли B<.xz> без додаткової обробки. B<xz> розпакує такі файли так, наче вони є єдиним файлом B<.xz>."
#. type: Plain text
-#: ../src/xz/xz.1:296
-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, for example, "
-"if the B<.xz> file is stored on a medium that measures file sizes in 512-"
-"byte blocks."
-msgstr ""
-"Можна додати доповнення між з'єднаними частинами або після останньої "
-"частини. Доповнення має складатися із нульових байтів і мати розмір, який є "
-"кратним до чотирьох байтів. Це може бути корисним, наприклад, якщо файл B<."
-"xz> зберігається на носії даних, де розміри файла вимірюються у 512-байтових "
-"блоках."
+#: ../src/xz/xz.1
+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, for example, if the B<.xz> file is stored on a medium that measures file sizes in 512-byte blocks."
+msgstr "Можна додати доповнення між з'єднаними частинами або після останньої частини. Доповнення має складатися із нульових байтів і мати розмір, який є кратним до чотирьох байтів. Це може бути корисним, наприклад, якщо файл B<.xz> зберігається на носії даних, де розміри файла вимірюються у 512-байтових блоках."
#. type: Plain text
-#: ../src/xz/xz.1:300
-msgid ""
-"Concatenation and padding are not allowed with B<.lzma> files or raw streams."
-msgstr ""
-"Поєднання та заповнення не можна використовувати для файлів B<.lzma> або "
-"потоків необроблених даних."
+#: ../src/xz/xz.1
+msgid "Concatenation and padding are not allowed with B<.lzma> files or raw streams."
+msgstr "Поєднання та заповнення не можна використовувати для файлів B<.lzma> або потоків необроблених даних."
#. type: SH
-#: ../src/xz/xz.1:301 ../src/xzdec/xzdec.1:61
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "OPTIONS"
msgstr "ПАРАМЕТРИ"
#. type: SS
-#: ../src/xz/xz.1:303
+#: ../src/xz/xz.1
#, no-wrap
msgid "Integer suffixes and special values"
msgstr "Цілочисельні суфікси і спеціальні значення"
#. type: Plain text
-#: ../src/xz/xz.1:307
-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 ""
-"У більшості місць, де потрібен цілочисельний аргумент, передбачено підтримку "
-"необов'язкового суфікса для простого визначення великих цілих чисел. Між "
-"цілим числом і суфіксом не повинно бути пробілів."
+#: ../src/xz/xz.1
+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 "У більшості місць, де потрібен цілочисельний аргумент, передбачено підтримку необов'язкового суфікса для простого визначення великих цілих чисел. Між цілим числом і суфіксом не повинно бути пробілів."
#. type: TP
-#: ../src/xz/xz.1:307
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<KiB>"
msgstr "B<KiB>"
#. type: Plain text
-#: ../src/xz/xz.1:318
-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 ""
-"Помножити ціле число на 1024 (2^10). Синонімами B<KiB> є B<Ki>, B<k>, B<kB>, "
-"B<K> та B<KB>."
+#: ../src/xz/xz.1
+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 "Помножити ціле число на 1024 (2^10). Синонімами B<KiB> є B<Ki>, B<k>, B<kB>, B<K> та B<KB>."
#. type: TP
-#: ../src/xz/xz.1:318
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<MiB>"
msgstr "B<MiB>"
#. type: Plain text
-#: ../src/xz/xz.1:328
-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 ""
-"Помножити ціле число на 1048576 (2^20). Синонімами B<MiB> є B, B<Mi>, B<m>, "
-"B<M> та B<MB>."
+#: ../src/xz/xz.1
+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 "Помножити ціле число на 1048576 (2^20). Синонімами B<MiB> є B, B<Mi>, B<m>, B<M> та B<MB>."
#. type: TP
-#: ../src/xz/xz.1:328
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<GiB>"
msgstr "B<GiB>"
#. type: Plain text
-#: ../src/xz/xz.1:338
-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 ""
-"Помножити ціле число на 1073741824 (2^30). Синонімами B<GiB> є B, B<Gi>, "
-"B<g>, B<G> та B<GB>."
+#: ../src/xz/xz.1
+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 "Помножити ціле число на 1073741824 (2^30). Синонімами B<GiB> є B, B<Gi>, B<g>, B<G> та B<GB>."
#. type: Plain text
-#: ../src/xz/xz.1:343
-msgid ""
-"The special value B<max> can be used to indicate the maximum integer value "
-"supported by the option."
-msgstr ""
-"Можна скористатися особливим значенням B<max> для позначення максимального "
-"цілого значення, підтримку якого передбачено для параметра."
+#: ../src/xz/xz.1
+msgid "The special value B<max> can be used to indicate the maximum integer value supported by the option."
+msgstr "Можна скористатися особливим значенням B<max> для позначення максимального цілого значення, підтримку якого передбачено для параметра."
#. type: SS
-#: ../src/xz/xz.1:344
+#: ../src/xz/xz.1
#, no-wrap
msgid "Operation mode"
msgstr "Режим операції"
#. type: Plain text
-#: ../src/xz/xz.1:347
-msgid ""
-"If multiple operation mode options are given, the last one takes effect."
-msgstr ""
-"Якщо вказано декілька параметрів режиму дій, буде використано лише останній "
-"з них."
+#: ../src/xz/xz.1
+msgid "If multiple operation mode options are given, the last one takes effect."
+msgstr "Якщо вказано декілька параметрів режиму дій, буде використано лише останній з них."
#. type: TP
-#: ../src/xz/xz.1:347
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-z>, B<--compress>"
msgstr "B<-z>, B<--compress>"
#. type: Plain text
-#: ../src/xz/xz.1:356
-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 ""
-"Стиснути. Це типовий режим дій, якщо не вказано параметр режиму дій, а назва "
-"команди неявним чином не визначає іншого режиму дій (наприклад, B<unxz> "
-"неявно визначає B<--decompress>)."
+#: ../src/xz/xz.1
+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 "Стиснути. Це типовий режим дій, якщо не вказано параметр режиму дій, а назва команди неявним чином не визначає іншого режиму дій (наприклад, B<unxz> неявно визначає B<--decompress>)."
#. type: TP
-#: ../src/xz/xz.1:356 ../src/xzdec/xzdec.1:62
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-d>, B<--decompress>, B<--uncompress>"
msgstr "B<-d>, B<--decompress>, B<--uncompress>"
#. type: Plain text
-#: ../src/xz/xz.1:359
+#: ../src/xz/xz.1
msgid "Decompress."
msgstr "Розпакувати."
#. type: TP
-#: ../src/xz/xz.1:359
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-t>, B<--test>"
msgstr "B<-t>, B<--test>"
#. type: Plain text
-#: ../src/xz/xz.1:368
-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 ""
-"Перевірити цілісність стиснених файлів I<файли>. Цей параметр еквівалентний "
-"до B<--decompress --stdout>, але розпаковані дані буде відкинуто, замість "
-"запису до стандартного виведення. Жодних файлів не буде створено або "
-"вилучено."
+#: ../src/xz/xz.1
+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 "Перевірити цілісність стиснених файлів I<файли>. Цей параметр еквівалентний до B<--decompress --stdout>, але розпаковані дані буде відкинуто, замість запису до стандартного виведення. Жодних файлів не буде створено або вилучено."
#. type: TP
-#: ../src/xz/xz.1:368
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-l>, B<--list>"
msgstr "B<-l>, B<--list>"
#. type: Plain text
-#: ../src/xz/xz.1:377
-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 ""
-"Вивести відомості щодо стиснених файлів I<файли>. Розпакування даних не "
-"виконуватиметься, жодних файлів не буде створено або вилучено. У режимі "
-"списку програма не може читати дані зі стандартного введення або з інших "
-"джерел, де неможливе позиціювання."
+#: ../src/xz/xz.1
+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 "Вивести відомості щодо стиснених файлів I<файли>. Розпакування даних не виконуватиметься, жодних файлів не буде створено або вилучено. У режимі списку програма не може читати дані зі стандартного введення або з інших джерел, де неможливе позиціювання."
#. type: Plain text
-#: ../src/xz/xz.1:392
-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, for "
-"example, B<less\\ -S> may be convenient if the terminal isn't wide enough."
-msgstr ""
-"У типовому списку буде показано базові відомості щодо файлів I<файли>, по "
-"одному файлу на рядок. Щоб отримати докладніші відомості, скористайтеся "
-"параметром B<--verbose>. Щоб розширити спектр відомостей, скористайтеся "
-"параметром B<--verbose> двічі, але зауважте, що це може призвести до "
-"значного уповільнення роботи, оскільки отримання додаткових відомостей "
-"потребує великої кількості позиціювань. Ширина області докладного виведення "
-"даних перевищує 80 символів, тому передавання конвеєром виведених даних, "
-"наприклад, до B<less\\ -S>, може бути зручним способом перегляду даних, якщо "
-"термінал недостатньо широкий."
-
-#. type: Plain text
-#: ../src/xz/xz.1:399
-msgid ""
-"The exact output may vary between B<xz> versions and different locales. For "
-"machine-readable output, B<--robot --list> should be used."
-msgstr ""
-"Виведені дані залежать від версії B<xz> та використаної локалі. Для "
-"отримання даних, які будуть придатні до обробки комп'ютером, слід "
-"скористатися параметрами B<--robot --list>."
+#: ../src/xz/xz.1
+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, for example, B<less\\ -S> may be convenient if the terminal isn't wide enough."
+msgstr "У типовому списку буде показано базові відомості щодо файлів I<файли>, по одному файлу на рядок. Щоб отримати докладніші відомості, скористайтеся параметром B<--verbose>. Щоб розширити спектр відомостей, скористайтеся параметром B<--verbose> двічі, але зауважте, що це може призвести до значного уповільнення роботи, оскільки отримання додаткових відомостей потребує великої кількості позиціювань. Ширина області докладного виведення даних перевищує 80 символів, тому передавання конвеєром виведених даних, наприклад, до B<less\\ -S>, може бути зручним способом перегляду даних, якщо термінал недостатньо широкий."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The exact output may vary between B<xz> versions and different locales. For machine-readable output, B<--robot --list> should be used."
+msgstr "Виведені дані залежать від версії B<xz> та використаної локалі. Для отримання даних, які будуть придатні до обробки комп'ютером, слід скористатися параметрами B<--robot --list>."
#. type: SS
-#: ../src/xz/xz.1:400
+#: ../src/xz/xz.1
#, no-wrap
msgid "Operation modifiers"
msgstr "Модифікатори режиму роботи"
#. type: TP
-#: ../src/xz/xz.1:401 ../src/xzdec/xzdec.1:69
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-k>, B<--keep>"
msgstr "B<-k>, B<--keep>"
#. type: Plain text
-#: ../src/xz/xz.1:404
+#: ../src/xz/xz.1
msgid "Don't delete the input files."
msgstr "Не вилучати вхідні файли."
#. type: Plain text
-#: ../src/xz/xz.1:418
-msgid ""
-"Since B<xz> 5.2.6, this option also makes B<xz> compress or decompress even "
-"if the input is a symbolic link to a regular file, has more than one hard "
-"link, or has the setuid, setgid, or sticky bit set. The setuid, setgid, and "
-"sticky bits are not copied to the target file. In earlier versions this was "
-"only done with B<--force>."
-msgstr ""
-"Починаючи з версії B<xz> 5.2.6, використання цього параметра також наказує "
-"B<xz> виконувати стискання або розпаковування, навіть якщо вхідними даними є "
-"символічне посилання на звичайний файл, файл, який має декілька жорстких "
-"посилань, або файл, для якого встановлено setuid, setgid або липкий біт. "
-"setuid, setgid та липкий біт не буде скопійовано до файла-результату. У "
-"попередніх версіях, ці дії виконувалися, лише якщо було використано параметр "
-"B<--force>."
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.2.6, this option also makes B<xz> compress or decompress even if the input is a symbolic link to a regular file, has more than one hard link, or has the setuid, setgid, or sticky bit set. The setuid, setgid, and sticky bits are not copied to the target file. In earlier versions this was only done with B<--force>."
+msgstr "Починаючи з версії B<xz> 5.2.6, використання цього параметра також наказує B<xz> виконувати стискання або розпаковування, навіть якщо вхідними даними є символічне посилання на звичайний файл, файл, який має декілька жорстких посилань, або файл, для якого встановлено setuid, setgid або липкий біт. setuid, setgid та липкий біт не буде скопійовано до файла-результату. У попередніх версіях, ці дії виконувалися, лише якщо було використано параметр B<--force>."
#. type: TP
-#: ../src/xz/xz.1:418
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-f>, B<--force>"
msgstr "B<-f>, B<--force>"
#. type: Plain text
-#: ../src/xz/xz.1:421
+#: ../src/xz/xz.1
msgid "This option has several effects:"
msgstr "Результатів використання цього параметра буде декілька:"
#. type: Plain text
-#: ../src/xz/xz.1:425
-msgid ""
-"If the target file already exists, delete it before compressing or "
-"decompressing."
-msgstr ""
-"Якщо файл-результат вже існує, вилучити його до стискання або розпаковування."
+#: ../src/xz/xz.1
+msgid "If the target file already exists, delete it before compressing or decompressing."
+msgstr "Якщо файл-результат вже існує, вилучити його до стискання або розпаковування."
#. type: Plain text
-#: ../src/xz/xz.1:432
-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 ""
-"Виконувати стискання або розпаковування, навіть якщо вхідними даними є "
-"символічне посилання на звичайний файл, файл, який має декілька жорстких "
-"посилань, або файл, для якого встановлено setuid, setgid або липкий біт "
-"setuid, setgid та липкий біт не буде скопійовано до файла-результату."
+#: ../src/xz/xz.1
+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 "Виконувати стискання або розпаковування, навіть якщо вхідними даними є символічне посилання на звичайний файл, файл, який має декілька жорстких посилань, або файл, для якого встановлено setuid, setgid або липкий біт setuid, setgid та липкий біт не буде скопійовано до файла-результату."
#. type: Plain text
-#: ../src/xz/xz.1:457
-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 ""
-"Якщо використано разом із B<--decompress>, B<--stdout>, і B<xz> не зможе "
-"розпізнати тип початкового файла, копіювати початковий файл без змін до "
-"стандартного виведення. Це надає змогу користуватися B<xzcat> B<--force> "
-"подібно до B<cat>(1) для файлів, які не було стиснено за допомогою B<xz>. "
-"Зауважте, що у майбутньому у B<xz> може бути реалізовано підтримку нових "
-"форматів стиснених файлів, замість копіювання їх без змін до стандартного "
-"виведення. Можна скористатися B<--format=>I<формат> для обмеження стискання "
-"у B<xz> єдиним форматом файлів."
+#: ../src/xz/xz.1
+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 "Якщо використано разом із B<--decompress>, B<--stdout>, і B<xz> не зможе розпізнати тип початкового файла, копіювати початковий файл без змін до стандартного виведення. Це надає змогу користуватися B<xzcat> B<--force> подібно до B<cat>(1) для файлів, які не було стиснено за допомогою B<xz>. Зауважте, що у майбутньому у B<xz> може бути реалізовано підтримку нових форматів стиснених файлів, замість копіювання їх без змін до стандартного виведення. Можна скористатися B<--format=>I<формат> для обмеження стискання у B<xz> єдиним форматом файлів."
#. type: TP
-#: ../src/xz/xz.1:458 ../src/xzdec/xzdec.1:76
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, 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:464
-msgid ""
-"Write the compressed or decompressed data to standard output instead of a "
-"file. This implies B<--keep>."
-msgstr ""
-"Записати стиснені або розпаковані дані до стандартного виведення, а не до "
-"файла. Неявним чином встановлює B<--keep>."
+#: ../src/xz/xz.1
+msgid "Write the compressed or decompressed data to standard output instead of a file. This implies B<--keep>."
+msgstr "Записати стиснені або розпаковані дані до стандартного виведення, а не до файла. Неявним чином встановлює B<--keep>."
#. type: TP
-#: ../src/xz/xz.1:464
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--single-stream>"
msgstr "B<--single-stream>"
#. type: Plain text
-#: ../src/xz/xz.1:473
-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 ""
-"Розпакувати лише перший потік даних B<.xz> і без повідомлень проігнорувати "
-"решту вхідних даних, які слідують за цим потоком. Зазвичай, такі зайві дані "
-"наприкінці файла призводять до показу B<xz> повідомлення про помилку."
+#: ../src/xz/xz.1
+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 "Розпакувати лише перший потік даних B<.xz> і без повідомлень проігнорувати решту вхідних даних, які слідують за цим потоком. Зазвичай, такі зайві дані наприкінці файла призводять до показу B<xz> повідомлення про помилку."
#. type: Plain text
-#: ../src/xz/xz.1:482
-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> ніколи не виконуватиме спроби видобути декілька потоків даних з файлів "
-"B<.lzma> або необроблених потоків даних, але використання цього параметра "
-"все одно наказує B<xz> ігнорувати можливі кінцеві дані після файла B<.lzma> "
-"або необробленого потоку даних."
+#: ../src/xz/xz.1
+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> ніколи не виконуватиме спроби видобути декілька потоків даних з файлів B<.lzma> або необроблених потоків даних, але використання цього параметра все одно наказує B<xz> ігнорувати можливі кінцеві дані після файла B<.lzma> або необробленого потоку даних."
#. type: Plain text
-#: ../src/xz/xz.1:487
-msgid ""
-"This option has no effect if the operation mode is not B<--decompress> or "
-"B<--test>."
-msgstr ""
-"Цей параметр нічого не змінює, якщо режимом дій не є B<--decompress> або B<--"
-"test>."
+#: ../src/xz/xz.1
+msgid "This option has no effect if the operation mode is not B<--decompress> or B<--test>."
+msgstr "Цей параметр нічого не змінює, якщо режимом дій не є B<--decompress> або B<--test>."
#. type: TP
-#: ../src/xz/xz.1:487
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--no-sparse>"
msgstr "B<--no-sparse>"
#. type: Plain text
-#: ../src/xz/xz.1:499
-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 ""
-"Вимкнути створення розріджених файлів. Типово, якщо видобування виконується "
-"до звичайного файла, B<xz> намагається створити розріджений файл, якщо "
-"розпаковані дані містять довгі послідовності двійкових нулів. Це також "
-"працює, коли виконується запис до стандартного виведення, доки стандартне "
-"виведення з'єднано зі звичайним файлом і виконуються певні додаткові умови, "
-"які убезпечують роботу. Створення розріджених файлів може заощадити місце на "
-"диску і пришвидшити розпаковування шляхом зменшення кількості дій введення "
-"та виведення даних на диску."
+#: ../src/xz/xz.1
+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 "Вимкнути створення розріджених файлів. Типово, якщо видобування виконується до звичайного файла, B<xz> намагається створити розріджений файл, якщо розпаковані дані містять довгі послідовності двійкових нулів. Це також працює, коли виконується запис до стандартного виведення, доки стандартне виведення з'єднано зі звичайним файлом і виконуються певні додаткові умови, які убезпечують роботу. Створення розріджених файлів може заощадити місце на диску і пришвидшити розпаковування шляхом зменшення кількості дій введення та виведення даних на диску."
#. type: TP
-#: ../src/xz/xz.1:499
+#: ../src/xz/xz.1
#, 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:511
-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 ""
-"При стисканні використати суфікс I<.suf> для файлів призначення, замість "
-"суфікса B<.xz> або B<.lzma>. Якщо записування виконується не до стандартного "
-"виведення і початковий файл вже має суфікс назви I<.suf>, буде показано "
-"попередження, а файл буде пропущено під час обробки."
+#: ../src/xz/xz.1
+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 "При стисканні використати суфікс I<.suf> для файлів призначення, замість суфікса B<.xz> або B<.lzma>. Якщо записування виконується не до стандартного виведення і початковий файл вже має суфікс назви I<.suf>, буде показано попередження, а файл буде пропущено під час обробки."
#. type: Plain text
-#: ../src/xz/xz.1:525
-msgid ""
-"When decompressing, recognize files with the suffix I<.suf> in addition to "
-"files with the B<.xz>, B<.txz>, B<.lzma>, B<.tlz>, or B<.lz> suffix. If the "
-"source file has the suffix I<.suf>, the suffix is removed to get the target "
-"filename."
-msgstr ""
-"При розпаковуванні розпізнавати файли із суфіксом назви I<.suf>, окрім "
-"файлів із суфіксами назв B<.xz>, B<.txz>, B<.lzma>, B<.tlz> або B<.lz>. Якщо "
-"початковий файл мав суфікс назви I<.suf>, для отримання назви файла "
-"призначення цей суфікс буде вилучено."
+#: ../src/xz/xz.1
+msgid "When decompressing, recognize files with the suffix I<.suf> in addition to files with the B<.xz>, B<.txz>, B<.lzma>, B<.tlz>, or B<.lz> suffix. If the source file has the suffix I<.suf>, the suffix is removed to get the target filename."
+msgstr "При розпаковуванні розпізнавати файли із суфіксом назви I<.suf>, окрім файлів із суфіксами назв B<.xz>, B<.txz>, B<.lzma>, B<.tlz> або B<.lz>. Якщо початковий файл мав суфікс назви I<.suf>, для отримання назви файла призначення цей суфікс буде вилучено."
#. type: Plain text
-#: ../src/xz/xz.1:531
-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 ""
-"При стисканні або розпакуванні необроблених потоків даних (B<--format=raw>) "
-"суфікс слід вказувати завжди, якщо запис не виконується до стандартного "
-"виведення, оскільки типового суфікса назви для необроблених потоків даних не "
-"передбачено."
+#: ../src/xz/xz.1
+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 "При стисканні або розпакуванні необроблених потоків даних (B<--format=raw>) суфікс слід вказувати завжди, якщо запис не виконується до стандартного виведення, оскільки типового суфікса назви для необроблених потоків даних не передбачено."
#. type: TP
-#: ../src/xz/xz.1:531
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--files>[B<=>I<file>]"
msgstr "B<--files>[B<=>I<файл>]"
#. type: Plain text
-#: ../src/xz/xz.1:545
-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 ""
-"Прочитати назви файлів для обробки з файла I<файл>; якщо I<file> не вказано, "
-"назви файлів буде прочитано зі стандартного потоку вхідних даних. Назви "
-"файлів має бути відокремлено символом нового рядка. Символ дефіса (B<->) "
-"буде оброблено як звичайну назву файла; він не позначатиме стандартного "
-"джерела вхідних даних. Якщо також буде вказано назви файлів у аргументах "
-"рядка команди, файли з цими назвами буде оброблено до обробки файлів, назви "
-"яких було прочитано з файла I<файл>."
+#: ../src/xz/xz.1
+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 "Прочитати назви файлів для обробки з файла I<файл>; якщо I<file> не вказано, назви файлів буде прочитано зі стандартного потоку вхідних даних. Назви файлів має бути відокремлено символом нового рядка. Символ дефіса (B<->) буде оброблено як звичайну назву файла; він не позначатиме стандартного джерела вхідних даних. Якщо також буде вказано назви файлів у аргументах рядка команди, файли з цими назвами буде оброблено до обробки файлів, назви яких було прочитано з файла I<файл>."
#. type: TP
-#: ../src/xz/xz.1:545
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--files0>[B<=>I<file>]"
msgstr "B<--files0>[B<=>I<файл>]"
#. type: Plain text
-#: ../src/xz/xz.1:549
-msgid ""
-"This is identical to B<--files>[B<=>I<file>] except that each filename must "
-"be terminated with the null character."
-msgstr ""
-"Те саме, що і B<--files>[B<=>I<файл>], але файли у списку має бути "
-"відокремлено нульовим символом."
+#: ../src/xz/xz.1
+msgid "This is identical to B<--files>[B<=>I<file>] except that each filename must be terminated with the null character."
+msgstr "Те саме, що і B<--files>[B<=>I<файл>], але файли у списку має бути відокремлено нульовим символом."
#. type: SS
-#: ../src/xz/xz.1:550
+#: ../src/xz/xz.1
#, no-wrap
msgid "Basic file format and compression options"
msgstr "Параметри базового формату файлів та стискання"
#. type: TP
-#: ../src/xz/xz.1:551
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-F> I<format>, B<--format=>I<format>"
msgstr "B<-F> I<format>, B<--format=>I<формат>"
#. type: Plain text
-#: ../src/xz/xz.1:556
+#: ../src/xz/xz.1
msgid "Specify the file I<format> to compress or decompress:"
msgstr "Вказати файл I<формат> для стискання або розпакування:"
#. type: TP
-#: ../src/xz/xz.1:557
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<auto>"
msgstr "B<auto>"
#. type: Plain text
-#: ../src/xz/xz.1:569
-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 ""
-"Типовий варіант. При стисканні B<auto> є еквівалентом B<xz>. При "
-"розпакуванні формат файла вхідних даних буде виявлено автоматично. Зауважте, "
-"що автоматичне виявлення необроблених потоків даних (створених за допомогою "
-"B<--format=raw>) неможливе."
+#: ../src/xz/xz.1
+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 "Типовий варіант. При стисканні B<auto> є еквівалентом B<xz>. При розпакуванні формат файла вхідних даних буде виявлено автоматично. Зауважте, що автоматичне виявлення необроблених потоків даних (створених за допомогою B<--format=raw>) неможливе."
#. type: TP
-#: ../src/xz/xz.1:569
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<xz>"
msgstr "B<xz>"
#. type: Plain text
-#: ../src/xz/xz.1:576
-msgid ""
-"Compress to the B<.xz> file format, or accept only B<.xz> files when "
-"decompressing."
-msgstr ""
-"Стиснути до формату B<.xz> або приймати лише файли B<.xz> при розпаковуванні."
+#: ../src/xz/xz.1
+msgid "Compress to the B<.xz> file format, or accept only B<.xz> files when decompressing."
+msgstr "Стиснути до формату B<.xz> або приймати лише файли B<.xz> при розпаковуванні."
#. type: TP
-#: ../src/xz/xz.1:576
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lzma>, B<alone>"
msgstr "B<lzma>, B<alone>"
#. type: Plain text
-#: ../src/xz/xz.1:586
-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 ""
-"Стиснути дані до застарілого формату файлів B<.lzma> або приймати лише файли "
-"B<.lzma> при розпаковуванні. Альтернативну назву B<alone> може бути "
-"використано для зворотної сумісності із LZMA Utils."
+#: ../src/xz/xz.1
+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 "Стиснути дані до застарілого формату файлів B<.lzma> або приймати лише файли B<.lzma> при розпаковуванні. Альтернативну назву B<alone> може бути використано для зворотної сумісності із LZMA Utils."
#. type: TP
-#: ../src/xz/xz.1:586
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lzip>"
msgstr "B<lzip>"
#. type: Plain text
-#: ../src/xz/xz.1:592
-msgid ""
-"Accept only B<.lz> files when decompressing. Compression is not supported."
-msgstr ""
-"Приймати лише файли B<.lz> при розпакуванні. Підтримки стискання не "
-"передбачено."
+#: ../src/xz/xz.1
+msgid "Accept only B<.lz> files when decompressing. Compression is not supported."
+msgstr "Приймати лише файли B<.lz> при розпакуванні. Підтримки стискання не передбачено."
#. type: Plain text
-#: ../src/xz/xz.1:605
-msgid ""
-"The B<.lz> format version 0 and the unextended version 1 are supported. "
-"Version 0 files were produced by B<lzip> 1.3 and older. Such files aren't "
-"common but may be found from file archives as a few source packages were "
-"released in this format. People might have old personal files in this "
-"format too. Decompression support for the format version 0 was removed in "
-"B<lzip> 1.18."
-msgstr ""
-"Передбачено підтримку версії формату B<.lz> 0 та нерозширеної версії 1. "
-"Файли версії 0 було створено B<lzip> 1.3 та старішими версіями. Такі файли "
-"не є поширеними, але їх можна знайти у файлових архівах, оскільки певну "
-"незначну кількість пакунків із початковим кодом було випущено у цьому "
-"форматі. Також можуть існувати особисті файли у цьому форматі. Підтримку "
-"розпаковування для формату версії 0 було вилучено у B<lzip> 1.18."
+#: ../src/xz/xz.1
+msgid "The B<.lz> format version 0 and the unextended version 1 are supported. Version 0 files were produced by B<lzip> 1.3 and older. Such files aren't common but may be found from file archives as a few source packages were released in this format. People might have old personal files in this format too. Decompression support for the format version 0 was removed in B<lzip> 1.18."
+msgstr "Передбачено підтримку версії формату B<.lz> 0 та нерозширеної версії 1. Файли версії 0 було створено B<lzip> 1.3 та старішими версіями. Такі файли не є поширеними, але їх можна знайти у файлових архівах, оскільки певну незначну кількість пакунків із початковим кодом було випущено у цьому форматі. Також можуть існувати особисті файли у цьому форматі. Підтримку розпаковування для формату версії 0 було вилучено у B<lzip> 1.18."
#. type: Plain text
-#: ../src/xz/xz.1:614
-msgid ""
-"B<lzip> 1.4 and later create files in the format version 1. The sync flush "
-"marker extension to the format version 1 was added in B<lzip> 1.6. This "
-"extension is rarely used and isn't supported by B<xz> (diagnosed as corrupt "
-"input)."
-msgstr ""
-"B<lzip> 1.4 і пізніші версії створюють файли у форматі версії 1. Розширення "
-"синхронізації позначки витирання до формату версії 1 було додано у B<lzip> "
-"1.6. Це розширення використовують не часто, його підтримки у B<xz> не "
-"передбачено (програма повідомлятиме про пошкоджені вхідні дані)."
+#: ../src/xz/xz.1
+msgid "B<lzip> 1.4 and later create files in the format version 1. The sync flush marker extension to the format version 1 was added in B<lzip> 1.6. This extension is rarely used and isn't supported by B<xz> (diagnosed as corrupt input)."
+msgstr "B<lzip> 1.4 і пізніші версії створюють файли у форматі версії 1. Розширення синхронізації позначки витирання до формату версії 1 було додано у B<lzip> 1.6. Це розширення використовують не часто, його підтримки у B<xz> не передбачено (програма повідомлятиме про пошкоджені вхідні дані)."
#. type: TP
-#: ../src/xz/xz.1:614
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<raw>"
msgstr "B<raw>"
#. type: Plain text
-#: ../src/xz/xz.1:622
-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 ""
-"Стиснути або розпакувати потік необроблених даних (лез заголовків). Цей "
-"параметр призначено лише для досвідчених користувачів. Для розпаковування "
-"необроблених потоків даних слід користуватися параметром B<--format=raw> і "
-"явно вказати ланцюжок фільтрування, який за звичайних умов мало б бути "
-"збережено у заголовках контейнера."
+#: ../src/xz/xz.1
+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 "Стиснути або розпакувати потік необроблених даних (лез заголовків). Цей параметр призначено лише для досвідчених користувачів. Для розпаковування необроблених потоків даних слід користуватися параметром B<--format=raw> і явно вказати ланцюжок фільтрування, який за звичайних умов мало б бути збережено у заголовках контейнера."
#. type: TP
-#: ../src/xz/xz.1:623
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-C> I<check>, B<--check=>I<check>"
msgstr "B<-C> I<перевірка>, B<--check=>I<перевірка>"
#. type: Plain text
-#: ../src/xz/xz.1:638
-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 ""
-"Вказати тип перевірки цілісності. Контрольну суму буде обчислено на основі "
-"нестиснених даних і збережено у файлі B<.xz>. Цей параметр працюватиме, лише "
-"якщо дані стиснено до файла у форматі B<.xz>; для формату файлів B<.lzma> "
-"підтримки перевірки цілісності не передбачено. Перевірку контрольної суми "
-"(якщо така є) буде виконано під час розпаковування файла B<.xz>."
+#: ../src/xz/xz.1
+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 "Вказати тип перевірки цілісності. Контрольну суму буде обчислено на основі нестиснених даних і збережено у файлі B<.xz>. Цей параметр працюватиме, лише якщо дані стиснено до файла у форматі B<.xz>; для формату файлів B<.lzma> підтримки перевірки цілісності не передбачено. Перевірку контрольної суми (якщо така є) буде виконано під час розпаковування файла B<.xz>."
#. type: Plain text
-#: ../src/xz/xz.1:642
+#: ../src/xz/xz.1
msgid "Supported I<check> types:"
msgstr "Підтримувані типи I<перевірок>:"
#. type: TP
-#: ../src/xz/xz.1:643
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<none>"
msgstr "B<none>"
#. type: Plain text
-#: ../src/xz/xz.1:649
-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 ""
-"Не обчислювати контрольну суму взагалі. Зазвичай, не варто цього робити. Цим "
-"варіантом слід скористатися, якщо цілісність даних буде перевірено в інший "
-"спосіб."
+#: ../src/xz/xz.1
+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 "Не обчислювати контрольну суму взагалі. Зазвичай, не варто цього робити. Цим варіантом слід скористатися, якщо цілісність даних буде перевірено в інший спосіб."
#. type: TP
-#: ../src/xz/xz.1:649
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<crc32>"
msgstr "B<crc32>"
#. type: Plain text
-#: ../src/xz/xz.1:652
+#: ../src/xz/xz.1
msgid "Calculate CRC32 using the polynomial from IEEE-802.3 (Ethernet)."
msgstr "Обчислити CRC32 за допомогою полінома з IEEE-802.3 (Ethernet)."
#. type: TP
-#: ../src/xz/xz.1:652
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<crc64>"
msgstr "B<crc64>"
#. type: Plain text
-#: ../src/xz/xz.1:657
-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 ""
-"Обчислити CRC64 за допомогою полінома з ECMA-182. Це типовий варіант, "
-"оскільки він дещо кращий за CRC32 при виявленні пошкоджених файлів, а "
-"різниця у швидкості є незрачною."
+#: ../src/xz/xz.1
+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 "Обчислити CRC64 за допомогою полінома з ECMA-182. Це типовий варіант, оскільки він дещо кращий за CRC32 при виявленні пошкоджених файлів, а різниця у швидкості є незрачною."
#. type: TP
-#: ../src/xz/xz.1:657
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<sha256>"
msgstr "B<sha256>"
#. type: Plain text
-#: ../src/xz/xz.1:661
+#: ../src/xz/xz.1
msgid "Calculate SHA-256. This is somewhat slower than CRC32 and CRC64."
msgstr "Обчислити SHA-256. Цей варіант дещо повільніший за CRC32 і CRC64."
#. type: Plain text
-#: ../src/xz/xz.1:667
-msgid ""
-"Integrity of the B<.xz> headers is always verified with CRC32. It is not "
-"possible to change or disable it."
-msgstr ""
-"Цілісність заголовків B<.xz> завжди перевіряють за допомогою CRC32. Таку "
-"перевірку не можна змінити або скасувати."
+#: ../src/xz/xz.1
+msgid "Integrity of the B<.xz> headers is always verified with CRC32. It is not possible to change or disable it."
+msgstr "Цілісність заголовків B<.xz> завжди перевіряють за допомогою CRC32. Таку перевірку не можна змінити або скасувати."
#. type: TP
-#: ../src/xz/xz.1:667
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--ignore-check>"
msgstr "B<--ignore-check>"
#. type: Plain text
-#: ../src/xz/xz.1:673
-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 ""
-"Не перевіряти цілісність стиснених даних при розпаковуванні. Значення CRC32 "
-"у заголовках B<.xz> буде у звичайний спосіб перевірено попри цей параметр."
+#: ../src/xz/xz.1
+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 "Не перевіряти цілісність стиснених даних при розпаковуванні. Значення CRC32 у заголовках B<.xz> буде у звичайний спосіб перевірено попри цей параметр."
#. type: Plain text
-#: ../src/xz/xz.1:676
-msgid ""
-"B<Do not use this option unless you know what you are doing.> Possible "
-"reasons to use this option:"
-msgstr ""
-"B<Не користуйтеся цим параметром, якщо ви не усвідомлюєте наслідків ваших "
-"дій.> Можливі причини скористатися цим параметром:"
+#: ../src/xz/xz.1
+msgid "B<Do not use this option unless you know what you are doing.> Possible reasons to use this option:"
+msgstr "B<Не користуйтеся цим параметром, якщо ви не усвідомлюєте наслідків ваших дій.> Можливі причини скористатися цим параметром:"
#. type: Plain text
-#: ../src/xz/xz.1:679
+#: ../src/xz/xz.1
msgid "Trying to recover data from a corrupt .xz file."
msgstr "Спроба отримання даних з пошкодженого файла .xz."
#. type: Plain text
-#: ../src/xz/xz.1:685
-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 ""
-"Пришвидшення розпакування. Це, здебільшого, стосується SHA-256 або файлів із "
-"надзвичайно високим рівнем пакування. Не рекомендуємо користуватися цим "
-"параметром з цією метою, якщо цілісність файлів не буде перевірено у якийсь "
-"інший спосіб."
+#: ../src/xz/xz.1
+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 "Пришвидшення розпакування. Це, здебільшого, стосується SHA-256 або файлів із надзвичайно високим рівнем пакування. Не рекомендуємо користуватися цим параметром з цією метою, якщо цілісність файлів не буде перевірено у якийсь інший спосіб."
#. type: TP
-#: ../src/xz/xz.1:686
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-0> ... B<-9>"
msgstr "B<-0> ... B<-9>"
#. type: Plain text
-#: ../src/xz/xz.1:695
-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 ""
-"Вибрати рівень стискання. Типовим є B<-6>. Якщо буде вказано декілька рівнів "
-"стискання, програма використає останній вказаний. Якщо вже було вказано "
-"нетиповий ланцюжок фільтрів, встановлення рівня стискання призведе до "
-"нехтування цим нетиповим ланцюжком фільтрів."
+#: ../src/xz/xz.1
+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 "Вибрати рівень стискання. Типовим є B<-6>. Якщо буде вказано декілька рівнів стискання, програма використає останній вказаний. Якщо вже було вказано нетиповий ланцюжок фільтрів, встановлення рівня стискання призведе до нехтування цим нетиповим ланцюжком фільтрів."
#. type: Plain text
-#: ../src/xz/xz.1:710
-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 ""
-"Різниця між рівнями є суттєвішою, ніж у B<gzip>(1) і B<bzip2>(1). Вибрані "
-"параметри стискання визначають вимоги до пам'яті під час розпаковування, "
-"отже використання надто високого рівня стискання може призвести до проблем "
-"під час розпаковування файла на застарілих комп'ютерах із невеликим обсягом "
-"оперативної пам'яті. Зокрема, B<не варто використовувати -9 для усього>, як "
-"це часто буває для B<gzip>(1) і B<bzip2>(1)."
+#: ../src/xz/xz.1
+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 "Різниця між рівнями є суттєвішою, ніж у B<gzip>(1) і B<bzip2>(1). Вибрані параметри стискання визначають вимоги до пам'яті під час розпаковування, отже використання надто високого рівня стискання може призвести до проблем під час розпаковування файла на застарілих комп'ютерах із невеликим обсягом оперативної пам'яті. Зокрема, B<не варто використовувати -9 для усього>, як це часто буває для B<gzip>(1) і B<bzip2>(1)."
#. type: TP
-#: ../src/xz/xz.1:711
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-0> ... B<-3>"
msgstr "B<-0> ... B<-3>"
#. type: Plain text
-#: ../src/xz/xz.1:723
-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 ""
-"Це дещо швидші набори налаштувань. B<-0> іноді є швидшим за B<gzip -9>, "
-"забезпечуючи набагато більший коефіцієнт стискання. Вищі рівні часто мають "
-"швидкість, яку можна порівняти з B<bzip2>(1) із подібним або кращим "
-"коефіцієнтом стискання, хоча результати значно залежать від типу даних, які "
-"стискають."
+#: ../src/xz/xz.1
+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 "Це дещо швидші набори налаштувань. B<-0> іноді є швидшим за B<gzip -9>, забезпечуючи набагато більший коефіцієнт стискання. Вищі рівні часто мають швидкість, яку можна порівняти з B<bzip2>(1) із подібним або кращим коефіцієнтом стискання, хоча результати значно залежать від типу даних, які стискають."
#. type: TP
-#: ../src/xz/xz.1:723
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-4> ... B<-6>"
msgstr "B<-4> ... B<-6>"
#. type: Plain text
-#: ../src/xz/xz.1:737
-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 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 ""
-"Стискання від доброго до дуже доброго рівня із одночасним підтриманням "
-"помірного рівня споживання пам'яті засобом розпаковування, навіть для "
-"застарілих системи. Типовим є значення B<-6>, яке є добрим варіантом для "
-"поширення файлів, які мають бути придатними до розпаковування навіть у "
-"системах із лише 16\\ МіБ оперативної пам'яті. (Також можна розглянути "
-"варіанти B<-5e> і B<-6e>. Див. B<--extreme>.)"
+#: ../src/xz/xz.1
+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 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 "Стискання від доброго до дуже доброго рівня із одночасним підтриманням помірного рівня споживання пам'яті засобом розпаковування, навіть для застарілих системи. Типовим є значення B<-6>, яке є добрим варіантом для поширення файлів, які мають бути придатними до розпаковування навіть у системах із лише 16\\ МіБ оперативної пам'яті. (Також можна розглянути варіанти B<-5e> і B<-6e>. Див. B<--extreme>.)"
#. type: TP
-#: ../src/xz/xz.1:737
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-7 ... -9>"
msgstr "B<-7 ... -9>"
#. type: Plain text
-#: ../src/xz/xz.1:744
-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 ""
-"Ці варіанти подібні до B<-6>, але із вищими вимогами щодо пам'яті для "
-"стискання і розпаковування. Можуть бути корисними лише для стискання файлів "
-"з розміром, що перевищує 8\\ МіБ, 16\\ МіБ та 32\\ МіБ, відповідно."
+#: ../src/xz/xz.1
+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 "Ці варіанти подібні до B<-6>, але із вищими вимогами щодо пам'яті для стискання і розпаковування. Можуть бути корисними лише для стискання файлів з розміром, що перевищує 8\\ МіБ, 16\\ МіБ та 32\\ МіБ, відповідно."
#. type: Plain text
-#: ../src/xz/xz.1:752
-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 ""
-"На однаковому обладнанні швидкість розпакування є приблизно сталою кількістю "
-"байтів стиснених даних за секунду. Іншими словами, чим кращим є стискання, "
-"тим швидшим буде, зазвичай, розпаковування. Це також означає, що об'єм "
-"розпакованих виведених даних, які видає програма за секунду, може коливатися "
-"у широкому діапазоні."
+#: ../src/xz/xz.1
+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 "На однаковому обладнанні швидкість розпакування є приблизно сталою кількістю байтів стиснених даних за секунду. Іншими словами, чим кращим є стискання, тим швидшим буде, зазвичай, розпаковування. Це також означає, що об'єм розпакованих виведених даних, які видає програма за секунду, може коливатися у широкому діапазоні."
#. type: Plain text
-#: ../src/xz/xz.1:754
+#: ../src/xz/xz.1
msgid "The following table summarises the features of the presets:"
msgstr "У наведеній нижче таблиці підсумовано можливості шаблонів:"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842 ../src/xz/xz.1:2839
+#: ../src/xz/xz.1
#, no-wrap
msgid "Preset"
msgstr "Шаблон"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842
+#: ../src/xz/xz.1
#, no-wrap
msgid "DictSize"
msgstr "DictSize"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842 ../src/xz/xz.1:2839
+#: ../src/xz/xz.1
#, no-wrap
msgid "CompCPU"
msgstr "CompCPU"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842
+#: ../src/xz/xz.1
#, no-wrap
msgid "CompMem"
msgstr "CompMem"
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842
+#: ../src/xz/xz.1
#, no-wrap
msgid "DecMem"
msgstr "DecMem"
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:2450 ../src/xz/xz.1:2475
-#: ../src/xz/xz.1:2840
+#: ../src/xz/xz.1
#, no-wrap
msgid "-0"
msgstr "-0"
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:843 ../src/xz/xz.1:2450
+#: ../src/xz/xz.1
#, no-wrap
msgid "256 KiB"
msgstr "256 КіБ"
#. type: TP
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:2840 ../src/scripts/xzgrep.1:82
+#: ../src/xz/xz.1 ../src/scripts/xzgrep.1
#, no-wrap
msgid "0"
msgstr "0"
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:764 ../src/xz/xz.1:845 ../src/xz/xz.1:2475
+#: ../src/xz/xz.1
#, no-wrap
msgid "3 MiB"
msgstr "3 МіБ"
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:763 ../src/xz/xz.1:843 ../src/xz/xz.1:844
-#: ../src/xz/xz.1:2451 ../src/xz/xz.1:2452 ../src/xz/xz.1:2454
+#: ../src/xz/xz.1
#, no-wrap
msgid "1 MiB"
msgstr "1 МіБ"
#. type: tbl table
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:2451 ../src/xz/xz.1:2476
-#: ../src/xz/xz.1:2841
+#: ../src/xz/xz.1
#, no-wrap
msgid "-1"
msgstr "-1"
#. type: TP
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:1758 ../src/xz/xz.1:2841
-#: ../src/scripts/xzgrep.1:86
+#: ../src/xz/xz.1 ../src/scripts/xzgrep.1
#, no-wrap
msgid "1"
msgstr "1"
#. type: tbl table
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:767 ../src/xz/xz.1:768 ../src/xz/xz.1:848
-#: ../src/xz/xz.1:849 ../src/xz/xz.1:2476
+#: ../src/xz/xz.1
#, no-wrap
msgid "9 MiB"
msgstr "9 МіБ"
#. type: tbl table
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:764 ../src/xz/xz.1:844 ../src/xz/xz.1:845
-#: ../src/xz/xz.1:2452 ../src/xz/xz.1:2455 ../src/xz/xz.1:2476
+#: ../src/xz/xz.1
#, no-wrap
msgid "2 MiB"
msgstr "2 МіБ"
#. type: tbl table
-#: ../src/xz/xz.1:764 ../src/xz/xz.1:2452 ../src/xz/xz.1:2477
-#: ../src/xz/xz.1:2842
+#: ../src/xz/xz.1
#, no-wrap
msgid "-2"
msgstr "-2"
#. type: tbl table
-#: ../src/xz/xz.1:764 ../src/xz/xz.1:1760 ../src/xz/xz.1:2842
+#: ../src/xz/xz.1
#, no-wrap
msgid "2"
msgstr "2"
#. type: tbl table
-#: ../src/xz/xz.1:764 ../src/xz/xz.1:769 ../src/xz/xz.1:850 ../src/xz/xz.1:2477
+#: ../src/xz/xz.1
#, no-wrap
msgid "17 MiB"
msgstr "17 МіБ"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:2453 ../src/xz/xz.1:2478
-#: ../src/xz/xz.1:2843
+#: ../src/xz/xz.1
#, no-wrap
msgid "-3"
msgstr "-3"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:766 ../src/xz/xz.1:843 ../src/xz/xz.1:846
-#: ../src/xz/xz.1:847 ../src/xz/xz.1:2453 ../src/xz/xz.1:2454
-#: ../src/xz/xz.1:2456
+#: ../src/xz/xz.1
#, no-wrap
msgid "4 MiB"
msgstr "4 МіБ"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:2843
+#: ../src/xz/xz.1
#, no-wrap
msgid "3"
msgstr "3"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:770 ../src/xz/xz.1:851 ../src/xz/xz.1:2458
-#: ../src/xz/xz.1:2459 ../src/xz/xz.1:2478
+#: ../src/xz/xz.1
#, no-wrap
msgid "32 MiB"
msgstr "32 МіБ"
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:766 ../src/xz/xz.1:846 ../src/xz/xz.1:847
+#: ../src/xz/xz.1
#, no-wrap
msgid "5 MiB"
msgstr "5 МіБ"
#. type: tbl table
-#: ../src/xz/xz.1:766 ../src/xz/xz.1:2454 ../src/xz/xz.1:2479
-#: ../src/xz/xz.1:2844
+#: ../src/xz/xz.1
#, no-wrap
msgid "-4"
msgstr "-4"
#. type: tbl table
-#: ../src/xz/xz.1:766 ../src/xz/xz.1:1759 ../src/xz/xz.1:1761
-#: ../src/xz/xz.1:1762 ../src/xz/xz.1:1764 ../src/xz/xz.1:2844
+#: ../src/xz/xz.1
#, no-wrap
msgid "4"
msgstr "4"
#. type: tbl table
-#: ../src/xz/xz.1:766 ../src/xz/xz.1:846 ../src/xz/xz.1:847 ../src/xz/xz.1:2479
+#: ../src/xz/xz.1
#, no-wrap
msgid "48 MiB"
msgstr "48 МіБ"
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:2455 ../src/xz/xz.1:2480
-#: ../src/xz/xz.1:2845
+#: ../src/xz/xz.1
#, no-wrap
msgid "-5"
msgstr "-5"
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:768 ../src/xz/xz.1:848 ../src/xz/xz.1:849
-#: ../src/xz/xz.1:2455 ../src/xz/xz.1:2456 ../src/xz/xz.1:2457
+#: ../src/xz/xz.1
#, no-wrap
msgid "8 MiB"
msgstr "8 МіБ"
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:2845
+#: ../src/xz/xz.1
#, no-wrap
msgid "5"
msgstr "5"
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:768 ../src/xz/xz.1:848 ../src/xz/xz.1:849
-#: ../src/xz/xz.1:2480 ../src/xz/xz.1:2481
+#: ../src/xz/xz.1
#, no-wrap
msgid "94 MiB"
msgstr "94 МіБ"
#. type: tbl table
-#: ../src/xz/xz.1:768 ../src/xz/xz.1:2456 ../src/xz/xz.1:2481
-#: ../src/xz/xz.1:2846
+#: ../src/xz/xz.1
#, no-wrap
msgid "-6"
msgstr "-6"
#. type: tbl table
-#: ../src/xz/xz.1:768 ../src/xz/xz.1:769 ../src/xz/xz.1:770 ../src/xz/xz.1:771
-#: ../src/xz/xz.1:2846
+#: ../src/xz/xz.1
#, no-wrap
msgid "6"
msgstr "6"
#. type: tbl table
-#: ../src/xz/xz.1:769 ../src/xz/xz.1:2457 ../src/xz/xz.1:2482
+#: ../src/xz/xz.1
#, no-wrap
msgid "-7"
msgstr "-7"
#. type: tbl table
-#: ../src/xz/xz.1:769 ../src/xz/xz.1:850 ../src/xz/xz.1:2457
-#: ../src/xz/xz.1:2458 ../src/xz/xz.1:2479
+#: ../src/xz/xz.1
#, no-wrap
msgid "16 MiB"
msgstr "16 МіБ"
#. type: tbl table
-#: ../src/xz/xz.1:769 ../src/xz/xz.1:850 ../src/xz/xz.1:2482
+#: ../src/xz/xz.1
#, no-wrap
msgid "186 MiB"
msgstr "186 МіБ"
#. type: tbl table
-#: ../src/xz/xz.1:770 ../src/xz/xz.1:2458 ../src/xz/xz.1:2483
+#: ../src/xz/xz.1
#, no-wrap
msgid "-8"
msgstr "-8"
#. type: tbl table
-#: ../src/xz/xz.1:770 ../src/xz/xz.1:851 ../src/xz/xz.1:2483
+#: ../src/xz/xz.1
#, no-wrap
msgid "370 MiB"
msgstr "370 МіБ"
#. type: tbl table
-#: ../src/xz/xz.1:770 ../src/xz/xz.1:851
+#: ../src/xz/xz.1
#, no-wrap
msgid "33 MiB"
msgstr "33 МіБ"
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:2459 ../src/xz/xz.1:2484
+#: ../src/xz/xz.1
#, no-wrap
msgid "-9"
msgstr "-9"
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:852 ../src/xz/xz.1:2459
+#: ../src/xz/xz.1
#, no-wrap
msgid "64 MiB"
msgstr "64 МіБ"
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:852 ../src/xz/xz.1:2484
+#: ../src/xz/xz.1
#, no-wrap
msgid "674 MiB"
msgstr "674 МіБ"
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:852
+#: ../src/xz/xz.1
#, no-wrap
msgid "65 MiB"
msgstr "65 МіБ"
#. type: Plain text
-#: ../src/xz/xz.1:777
+#: ../src/xz/xz.1
msgid "Column descriptions:"
msgstr "Описи стовпчиків:"
#. type: Plain text
-#: ../src/xz/xz.1:789
-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 ""
-"DictSize є розміром словника LZMA2. Використання словника, розмір якого "
-"перевищує розмір нестисненого файла, — проста витрата пам'яті. Ось чому не "
-"варто використовувати шаблони B<-7> ... B<-9>, якщо у них немає реальної "
-"потреби. Для B<-6> та нижчих рівнів об'єм витраченої пам'яті, зазвичай, "
-"такий низький, що цей фактор ні на що не впливає."
+#: ../src/xz/xz.1
+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 "DictSize є розміром словника LZMA2. Використання словника, розмір якого перевищує розмір нестисненого файла, — проста витрата пам'яті. Ось чому не варто використовувати шаблони B<-7> ... B<-9>, якщо у них немає реальної потреби. Для B<-6> та нижчих рівнів об'єм витраченої пам'яті, зазвичай, такий низький, що цей фактор ні на що не впливає."
#. type: Plain text
-#: ../src/xz/xz.1:798
-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 ""
-"CompCPU є спрощеним представленням параметрів LZMA2, які впливають на "
-"швидкість стискання. Розмір словника також впливає на швидкість, тому, хоча "
-"значення CompCPU є однаковим для рівнів B<-6> ... B<-9>, обробка на вищих "
-"рівнях все одно є трошки повільнішою. Що отримати повільніше і, ймовірно, "
-"краще стискання, див. B<--extreme>."
+#: ../src/xz/xz.1
+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 "CompCPU є спрощеним представленням параметрів LZMA2, які впливають на швидкість стискання. Розмір словника також впливає на швидкість, тому, хоча значення CompCPU є однаковим для рівнів B<-6> ... B<-9>, обробка на вищих рівнях все одно є трошки повільнішою. Що отримати повільніше і, ймовірно, краще стискання, див. B<--extreme>."
#. type: Plain text
-#: ../src/xz/xz.1:806
-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 ""
-"CompMem містить вимоги до пам'яті засобу стискання у однопотоковому режимі. "
-"Значення можуть бути дещо різними для різних версій B<xz>. Вимоги до пам'яті "
-"деяких майбутніх багатопотокових режимів можуть бути набагато вищими, ніж "
-"вимоги у однопотоковому режимі."
+#: ../src/xz/xz.1
+msgid "CompMem contains the compressor memory requirements in the single-threaded mode. It may vary slightly between B<xz> versions."
+msgstr "CompMem містить вимоги до пам'яті засобу стискання у однопотоковому режимі. Значення можуть бути дещо різними для різних версій B<xz>."
#. type: Plain text
-#: ../src/xz/xz.1:813
-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 ""
-"У DecMem містяться вимоги до пам'яті при розпаковуванні. Тобто параметри "
-"засобу стискання визначають вимоги до пам'яті при розпаковуванні. Точний "
-"об'єм пам'яті, яка потрібна для розпаковування, дещо перевищує розмір "
-"словника LZMA2, але значення у таблиці було округлено до наступного цілого "
-"значення МіБ."
+#: ../src/xz/xz.1
+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 "У DecMem містяться вимоги до пам'яті при розпаковуванні. Тобто параметри засобу стискання визначають вимоги до пам'яті при розпаковуванні. Точний об'єм пам'яті, яка потрібна для розпаковування, дещо перевищує розмір словника LZMA2, але значення у таблиці було округлено до наступного цілого значення МіБ."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Memory requirements of the multi-threaded mode are significantly higher than that of the single-threaded mode. With the default value of B<--block-size>, each thread needs 3*3*DictSize plus CompMem or DecMem. For example, four threads with preset B<-6> needs 660\\(en670\\ MiB of memory."
+msgstr "Вимоги до пам'яті у багатопотоковому режимі є значно вищими, ніж у однопотоковому. З типовим значенням B<--block-size> для кожного потоку треба 3*3*DictSize плюс CompMem або DecMem. Наприклад, для чотирьох потоків з шаблоном B<-6> потрібно 660\\(en670\\ МіБ пам'яті."
#. type: TP
-#: ../src/xz/xz.1:814
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-e>, B<--extreme>"
msgstr "B<-e>, B<--extreme>"
#. type: Plain text
-#: ../src/xz/xz.1:823
-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 ""
-"Використати повільніший варіант вибраного рівня стискання (B<-0> ... B<-9>) "
-"у сподіванні отримати трохи кращий коефіцієнт стискання, але, якщо не "
-"поталанить, можна його і погіршити. Не впливає на використання пам'яті при "
-"розпаковуванні, але використання пам'яті при стисканні дещо збільшиться на "
-"рівнях B<-0> ... B<-3>."
+#: ../src/xz/xz.1
+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 "Використати повільніший варіант вибраного рівня стискання (B<-0> ... B<-9>) у сподіванні отримати трохи кращий коефіцієнт стискання, але, якщо не поталанить, можна його і погіршити. Не впливає на використання пам'яті при розпаковуванні, але використання пам'яті при стисканні дещо збільшиться на рівнях B<-0> ... B<-3>."
#. type: Plain text
-#: ../src/xz/xz.1:835
-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 ""
-"Оскільки існує два набори налаштувань із розмірами словників 4\\ МіБ та 8\\ "
-"МіБ, у наборах B<-3e> і B<-5e> використано трошки швидші параметри (нижче "
-"CompCPU), ніж у наборах B<-4e> і B<-6e>, відповідно. Тому двох однакових "
-"наборів у списку немає."
+#: ../src/xz/xz.1
+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 "Оскільки існує два набори налаштувань із розмірами словників 4\\ МіБ та 8\\ МіБ, у наборах B<-3e> і B<-5e> використано трошки швидші параметри (нижче CompCPU), ніж у наборах B<-4e> і B<-6e>, відповідно. Тому двох однакових наборів у списку немає."
#. type: tbl table
-#: ../src/xz/xz.1:843
+#: ../src/xz/xz.1
#, no-wrap
msgid "-0e"
msgstr "-0e"
#. type: tbl table
-#: ../src/xz/xz.1:843 ../src/xz/xz.1:844 ../src/xz/xz.1:845 ../src/xz/xz.1:847
-#: ../src/xz/xz.1:849 ../src/xz/xz.1:850 ../src/xz/xz.1:851 ../src/xz/xz.1:852
-#: ../src/xz/xz.1:2848
+#: ../src/xz/xz.1
#, no-wrap
msgid "8"
msgstr "8"
#. type: tbl table
-#: ../src/xz/xz.1:844
+#: ../src/xz/xz.1
#, no-wrap
msgid "-1e"
msgstr "-1e"
#. type: tbl table
-#: ../src/xz/xz.1:844
+#: ../src/xz/xz.1
#, no-wrap
msgid "13 MiB"
msgstr "13 МіБ"
#. type: tbl table
-#: ../src/xz/xz.1:845
+#: ../src/xz/xz.1
#, no-wrap
msgid "-2e"
msgstr "-2e"
#. type: tbl table
-#: ../src/xz/xz.1:845
+#: ../src/xz/xz.1
#, no-wrap
msgid "25 MiB"
msgstr "25 МіБ"
#. type: tbl table
-#: ../src/xz/xz.1:846
+#: ../src/xz/xz.1
#, no-wrap
msgid "-3e"
msgstr "-3e"
#. type: tbl table
-#: ../src/xz/xz.1:846 ../src/xz/xz.1:848 ../src/xz/xz.1:2847
+#: ../src/xz/xz.1
#, no-wrap
msgid "7"
msgstr "7"
#. type: tbl table
-#: ../src/xz/xz.1:847
+#: ../src/xz/xz.1
#, no-wrap
msgid "-4e"
msgstr "-4e"
#. type: tbl table
-#: ../src/xz/xz.1:848 ../src/xz/xz.1:2847
+#: ../src/xz/xz.1
#, no-wrap
msgid "-5e"
msgstr "-5e"
#. type: tbl table
-#: ../src/xz/xz.1:849 ../src/xz/xz.1:2848
+#: ../src/xz/xz.1
#, no-wrap
msgid "-6e"
msgstr "-6e"
#. type: tbl table
-#: ../src/xz/xz.1:850
+#: ../src/xz/xz.1
#, no-wrap
msgid "-7e"
msgstr "-7e"
#. type: tbl table
-#: ../src/xz/xz.1:851
+#: ../src/xz/xz.1
#, no-wrap
msgid "-8e"
msgstr "-8e"
#. type: tbl table
-#: ../src/xz/xz.1:852
+#: ../src/xz/xz.1
#, no-wrap
msgid "-9e"
msgstr "-9e"
#. type: Plain text
-#: ../src/xz/xz.1:864
-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 ""
-"Наприклад, передбачено загалом чотири набори налаштувань із використанням "
-"словника у 8\\ МіБ, порядок яких від найшвидшого до найповільнішого є таким: "
-"B<-5>, B<-6>, B<-5e> і B<-6e>."
+#: ../src/xz/xz.1
+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 "Наприклад, передбачено загалом чотири набори налаштувань із використанням словника у 8\\ МіБ, порядок яких від найшвидшого до найповільнішого є таким: B<-5>, B<-6>, B<-5e> і B<-6e>."
#. type: TP
-#: ../src/xz/xz.1:864
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--fast>"
msgstr "B<--fast>"
#. type: TP
-#: ../src/xz/xz.1:867
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--best>"
msgstr "B<--best>"
#. type: Plain text
-#: ../src/xz/xz.1:878
-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 ""
-"Це дещо оманливі альтернативні варіанти для B<-0> і B<-9>, відповідно. "
-"Реалізовано лише для забезпечення зворотної сумісності із LZMA Utils. "
-"Намагайтеся не користуватися цими варіантами параметрів."
+#: ../src/xz/xz.1
+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 "Це дещо оманливі альтернативні варіанти для B<-0> і B<-9>, відповідно. Реалізовано лише для забезпечення зворотної сумісності із LZMA Utils. Намагайтеся не користуватися цими варіантами параметрів."
#. type: TP
-#: ../src/xz/xz.1:878
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--block-size=>I<size>"
msgstr "B<--block-size=>I<розмір>"
#. type: Plain text
-#: ../src/xz/xz.1:891
-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 ""
-"При стисканні до формату B<.xz> поділити вхідні дані на блоки у I<розмір> "
-"байтів. Ці блоки буде стиснуто незалежно один від одного, що допоможе у "
-"багатопотоковій обробці і зробить можливим обмежене розпакування для доступу "
-"до будь-яких даних. Цим параметром слід типово користуватися для "
-"перевизначення типового розміру блоку у багатопотоковому режимі обробки, але "
-"цим параметром можна також скористатися в однопотоковому режимі обробки."
+#: ../src/xz/xz.1
+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 "При стисканні до формату B<.xz> поділити вхідні дані на блоки у I<розмір> байтів. Ці блоки буде стиснуто незалежно один від одного, що допоможе у багатопотоковій обробці і зробить можливим обмежене розпакування для доступу до будь-яких даних. Цим параметром слід типово користуватися для перевизначення типового розміру блоку у багатопотоковому режимі обробки, але цим параметром можна також скористатися в однопотоковому режимі обробки."
#. type: Plain text
-#: ../src/xz/xz.1:909
-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\\(en4 times the size of the LZMA2 dictionary or at least 1 "
-"MiB. Using I<size> less than the LZMA2 dictionary size is waste of RAM "
-"because then the LZMA2 dictionary buffer will never get fully used. The "
-"sizes of the blocks are stored in the block headers, which a future version "
-"of B<xz> will use for multi-threaded decompression."
-msgstr ""
-"У багатопотоковому режимі для кожного потоку буде отримано для буферів "
-"вхідних і вихідних даних майже утричі більше за I<розмір> байтів. Типовий "
-"I<розмір> утричі більший за розмір словника LZMA2 або дорівнює 1 МіБ, буде "
-"вибрано більше значення. Типовим добрим значенням буде значення, яке у "
-"2\\(en4 рази перевищує розмір словника LZMA2 або дорівнює принаймні 1 МіБ. "
-"Використання значення I<розмір>, яке є меншим за розмір словника LZMA2, має "
-"наслідком марну витрату оперативної пам'яті, оскільки його використання "
-"призводить до того, що буфер словника LZMA2 ніколи не буде використано "
-"повністю. Розміри блоків зберігатимуться у заголовках блоків, які майбутня "
-"версія B<xz> використовуватиме для багатопотокового розпаковування."
-
-#. type: Plain text
-#: ../src/xz/xz.1:918
-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 ""
-"У однопотоковому режимі поділ на блоки типово не виконуватиметься. "
-"Встановлення значення для цього параметра не впливатиме на використання "
-"пам'яті. У заголовках блоків не зберігатимуться дані щодо розміру, отже "
-"файли, які створено в однопотоковому режимі не будуть ідентичними до файлів, "
-"які створено у багатопотоковому режимі. Те, що у заголовках блоків не "
-"зберігатимуться дані щодо розміру також означає, що майбутні версії B<xz> не "
-"зможуть розпаковувати такі файли у багатопотоковому режимі."
+#: ../src/xz/xz.1
+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\\(en4 times the size of the LZMA2 dictionary or at least 1 MiB. Using I<size> less than the LZMA2 dictionary size is waste of RAM because then the LZMA2 dictionary buffer will never get fully used. In multi-threaded mode, the sizes of the blocks are stored in the block headers. This size information is required for multi-threaded decompression."
+msgstr "У багатопотоковому режимі для кожного потоку буде отримано для буферів вхідних і вихідних даних майже утричі більше за I<розмір> байтів. Типовий I<розмір> утричі більший за розмір словника LZMA2 або дорівнює 1 МіБ, буде вибрано більше значення. Типовим добрим значенням буде значення, яке у 2\\(en4 рази перевищує розмір словника LZMA2 або дорівнює принаймні 1 МіБ. Використання значення I<розмір>, яке є меншим за розмір словника LZMA2, має наслідком марну витрату оперативної пам'яті, оскільки його використання призводить до того, що буфер словника LZMA2 ніколи не буде використано повністю. У багатопотоковому режимі розміри блоків зберігатимуться у заголовках блоків. Ці дані потрібні для багатопотокового розпаковування."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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 B<xz> won't be able decompress the files in multi-threaded mode."
+msgstr "У однопотоковому режимі поділ на блоки типово не виконуватиметься. Встановлення значення для цього параметра не впливатиме на використання пам'яті. У заголовках блоків не зберігатимуться дані щодо розміру, отже файли, які створено в однопотоковому режимі не будуть ідентичними до файлів, які створено у багатопотоковому режимі. Те, що у заголовках блоків не зберігатимуться дані щодо розміру також означає, що B<xz> не зможе розпаковувати такі файли у багатопотоковому режимі."
#. type: TP
-#: ../src/xz/xz.1:918
+#: ../src/xz/xz.1
#, no-wrap
-msgid "B<--block-list=>I<sizes>"
-msgstr "B<--block-list=>I<розміри>"
+msgid "B<--block-list=>I<items>"
+msgstr "B<--block-list=>I<записи>"
#. type: Plain text
-#: ../src/xz/xz.1:924
-msgid ""
-"When compressing to the B<.xz> format, start a new block after the given "
-"intervals of uncompressed data."
-msgstr ""
-"При стисканні у форматі B<.xz> починати новий блок після вказаної кількості "
-"інтервалів нестиснених даних."
+#: ../src/xz/xz.1
+msgid "When compressing to the B<.xz> format, start a new block with an optional custom filter chain after the given intervals of uncompressed data."
+msgstr "При стисканні у форматі B<.xz> починати новий блок із необов'язковим ланцюжком фільтрів після вказаної кількості інтервалів нестиснених даних."
#. type: Plain text
-#: ../src/xz/xz.1:930
-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 ""
-"Значення I<розмірів> розпакованих блоків слід задавати у форматі списку "
-"відокремлених комами значень. Якщо розмір пропущено (дві або декілька "
-"послідовних коми), буде використано розмір попереднього блоку."
+#: ../src/xz/xz.1
+msgid "The I<items> are a comma-separated list. Each item consists of an optional filter chain number between 0 and 9 followed by a colon (B<:>) and a required size of uncompressed data. Omitting an item (two or more consecutive commas) is a shorthand to use the size and filters of the previous item."
+msgstr "I<записи> є списком відокремлених комами значень. Кожен запис складається з необов'язкового номера ланцюжка фільтрів від 0 до 9, після якого йде двокрапка (B<:>) і необхідний розмір нестиснутих даних. Пропущення запису (дві або більше послідовних ком) є скороченим варіантом визначення використання розміру та фільтрів попереднього запису."
#. type: Plain text
-#: ../src/xz/xz.1:940
-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 ""
-"Якщо файл вхідних даних є більшим за розміром за суму I<розмірів>, останнє "
-"значення у I<розмірах> буде повторено до кінця файла. Особливе значення B<0> "
-"може бути використано як останнє значення, щоб позначити, що решту файла має "
-"бути закодовано як єдиний блок."
+#: ../src/xz/xz.1
+msgid "If the input file is bigger than the sum of the sizes in I<items>, the last item is repeated until the end of the file. A special value of B<0> may be used as the last size to indicate that the rest of the file should be encoded as a single block."
+msgstr "Якщо файл вхідних даних є більшим за розміром за суму розмірів I<записів>, останнє значення у I<розмірах> буде повторено до кінця файла. Особливе значення B<0> може бути використано як останній розмір, щоб позначити, що решту файла має бути закодовано як єдиний блок."
#. type: Plain text
-#: ../src/xz/xz.1:955
-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 ""
-"Якщо вказати I<розміри>, які перевищують розмір блоку кодувальника (або "
-"типове значення у режимі із потоками обробки, або значення, яке встановлено "
-"за допомогою B<--block-size=>I<розмір>), засіб кодування створить додаткові "
-"блоки, зберігаючи межі, які вказано у I<розмірах>. Наприклад, якщо вказати "
-"B<--block-size=10MiB> B<--block-list=5MiB,10MiB,8MiB,12MiB,24MiB>, а файл "
-"вхідних даних має розмір 80 МіБ, буде отримано такі 11 блоків: 5, 10, 8, 10, "
-"2, 10, 10, 4, 10, 10 і 1 МіБ."
+#: ../src/xz/xz.1
+msgid "An alternative filter chain for each block can be specified in combination with the B<--filters1=>I<filters> \\&...\\& B<--filters9=>I<filters> options. These options define filter chains with an identifier between 1\\(en9. Filter chain 0 can be used to refer to the default filter chain, which is the same as not specifying a filter chain. The filter chain identifier can be used before the uncompressed size, followed by a colon (B<:>). For example, if one specifies B<--block-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB> then blocks will be created using:"
+msgstr "Альтернативний ланцюжок фільтрів для кожного блоку можна вказати в поєднанні з параметрами B<--filters1=>I<фільтри> \\&...\\& B<--filters9=>I<фільтри>. Ці параметри визначають ланцюжки фільтрів з ідентифікатором у діапазоні 1\\(en9. Ланцюжок фільтрів 0 можна використовувати для посилання на типовий ланцюжок фільтрів — це те саме, що не вказувати ланцюжок фільтрів. Ідентифікатор ланцюжка фільтрів можна використовувати перед нестисненим розміром, після якого йде двокрапка (B<:>). Наприклад, якщо вказати B<--block-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB>, блоки будуть створені так:"
#. type: Plain text
-#: ../src/xz/xz.1:961
-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 ""
-"У багатопотоковому режимі розмір блоків буде збережено у заголовках блоків. "
-"Програма не зберігатиме ці дані у однопотоковому режимі, отже закодований "
-"результат не буде ідентичним до отриманого у багатопотоковому режимі."
+#: ../src/xz/xz.1
+msgid "The filter chain specified by B<--filters1> and 2 MiB input"
+msgstr "Ланцюжок фільтрів задано B<--filters1> із вхідними даними у 2 МіБ"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The filter chain specified by B<--filters3> and 2 MiB input"
+msgstr "Ланцюжок фільтрів задано B<--filters3> із вхідними даними у 2 МіБ"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The filter chain specified by B<--filters2> and 4 MiB input"
+msgstr "Ланцюжок фільтрів задано B<--filters2> із вхідними даними у 4 МіБ"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The default filter chain and 2 MiB input"
+msgstr "Типовий ланцюжок даних і вхідні дані у 2 МіБ"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The default filter chain and 4 MiB input for every block until end of input."
+msgstr "Типовий ланцюжок фільтрів та вхідні дані у 4 МіБ для кожного блоку до кінця вхідних даних."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "If one specifies a size that exceeds 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<items>. 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 "Якщо вказати розмір, який перевищує розмір блоку кодувальника (або типове значення у режимі із потоками обробки, або значення, яке встановлено за допомогою B<--block-size=>I<розмір>), засіб кодування створить додаткові блоки, зберігаючи межі, які вказано у I<записах>. Наприклад, якщо вказати B<--block-size=10MiB> B<--block-list=5MiB,10MiB,8MiB,12MiB,24MiB>, а файл вхідних даних має розмір 80 МіБ, буде отримано такі 11 блоків: 5, 10, 8, 10, 2, 10, 10, 4, 10, 10 і 1 МіБ."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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 "У багатопотоковому режимі розмір блоків буде збережено у заголовках блоків. Програма не зберігатиме ці дані у однопотоковому режимі, отже закодований результат не буде ідентичним до отриманого у багатопотоковому режимі."
#. type: TP
-#: ../src/xz/xz.1:961
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--flush-timeout=>I<timeout>"
msgstr "B<--flush-timeout=>I<час_очікування>"
#. type: Plain text
-#: ../src/xz/xz.1:978
-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 ""
-"При стискання, якщо з моменту попереднього витирання мине понад "
-"I<час_очікування> мілісекунд (додатне ціле значення) і читання додаткових "
-"даних буде заблоковано, усі вхідні дані у черзі обробки буде витерто з "
-"кодувальника і зроблено доступним у потоці вихідних даних. Це може бути "
-"корисним, якщо B<xz> використовують для стискання даних, які передають "
-"потоком мережею. Невеликі значення аргументу I<час_очікування> зроблять дані "
-"доступними на боці отримання із малою затримкою, а великі значення аргумент "
-"I<час_очікування> уможливлять кращий коефіцієнт стискання."
+#: ../src/xz/xz.1
+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 "При стискання, якщо з моменту попереднього витирання мине понад I<час_очікування> мілісекунд (додатне ціле значення) і читання додаткових даних буде заблоковано, усі вхідні дані у черзі обробки буде витерто з кодувальника і зроблено доступним у потоці вихідних даних. Це може бути корисним, якщо B<xz> використовують для стискання даних, які передають потоком мережею. Невеликі значення аргументу I<час_очікування> зроблять дані доступними на боці отримання із малою затримкою, а великі значення аргумент I<час_очікування> уможливлять кращий коефіцієнт стискання."
#. type: Plain text
-#: ../src/xz/xz.1:986
-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 ""
-"Типово, цю можливість вимкнено. Якщо цей параметр вказано декілька разів, "
-"буде використано лише останнє вказане значення. Особливим значенням "
-"аргументу I<час_очікування>, рівним B<0>, можна скористатися для вимикання "
-"цієї можливості явним чином."
+#: ../src/xz/xz.1
+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 "Типово, цю можливість вимкнено. Якщо цей параметр вказано декілька разів, буде використано лише останнє вказане значення. Особливим значенням аргументу I<час_очікування>, рівним B<0>, можна скористатися для вимикання цієї можливості явним чином."
#. type: Plain text
-#: ../src/xz/xz.1:988
+#: ../src/xz/xz.1
msgid "This feature is not available on non-POSIX systems."
msgstr "Ця можливість недоступна у системах, які не є системами POSIX."
#. FIXME
#. type: Plain text
-#: ../src/xz/xz.1:996
-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<Ця можливість усе ще є експериментальною.> У поточній версії, B<xz> не "
-"може розпаковувати потік даних у режимі реального часу через те, у який "
-"спосіб B<xz> виконує буферизацію."
+#: ../src/xz/xz.1
+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<Ця можливість усе ще є експериментальною.> У поточній версії, B<xz> не може розпаковувати потік даних у режимі реального часу через те, у який спосіб B<xz> виконує буферизацію."
#. type: TP
-#: ../src/xz/xz.1:996
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--memlimit-compress=>I<limit>"
msgstr "B<--memlimit-compress=>I<обмеження>"
#. type: Plain text
-#: ../src/xz/xz.1:1001
-msgid ""
-"Set a memory usage limit for compression. If this option is specified "
-"multiple times, the last one takes effect."
-msgstr ""
-"Встановити обмеження на використання пам'яті при стисканні. Якщо цей "
-"параметр вказано декілька разів, враховано буде лише останнє вказане "
-"значення."
+#: ../src/xz/xz.1
+msgid "Set a memory usage limit for compression. If this option is specified multiple times, the last one takes effect."
+msgstr "Встановити обмеження на використання пам'яті при стисканні. Якщо цей параметр вказано декілька разів, враховано буде лише останнє вказане значення."
#. type: Plain text
-#: ../src/xz/xz.1:1014
-msgid ""
-"If the compression settings exceed the I<limit>, B<xz> will attempt to "
-"adjust the settings downwards so that the limit is no longer exceeded and "
-"display a notice that automatic adjustment was done. The adjustments are "
-"done in this order: reducing the number of threads, switching to single-"
-"threaded mode if even one thread in multi-threaded mode exceeds the "
-"I<limit>, and finally reducing the LZMA2 dictionary size."
-msgstr ""
-"Якщо параметри стискання перевищують I<обмеження>, B<xz> спробує скоригувати "
-"параметри так, щоб обмеження не було перевищено, і покаже повідомлення про "
-"те, що було виконано автоматичне коригування. Коригування буде виконано у "
-"такому порядку: зменшення кількості потоків обробки, перемикання у "
-"однопотоковий режим, якщо хоч в одному потоці багатопотокового режиму буде "
-"перевищено I<обмеження>, і нарешті, зменшення розміру словника LZMA2."
+#: ../src/xz/xz.1
+msgid "If the compression settings exceed the I<limit>, B<xz> will attempt to adjust the settings downwards so that the limit is no longer exceeded and display a notice that automatic adjustment was done. The adjustments are done in this order: reducing the number of threads, switching to single-threaded mode if even one thread in multi-threaded mode exceeds the I<limit>, and finally reducing the LZMA2 dictionary size."
+msgstr "Якщо параметри стискання перевищують I<обмеження>, B<xz> спробує скоригувати параметри так, щоб обмеження не було перевищено, і покаже повідомлення про те, що було виконано автоматичне коригування. Коригування буде виконано у такому порядку: зменшення кількості потоків обробки, перемикання у однопотоковий режим, якщо хоч в одному потоці багатопотокового режиму буде перевищено I<обмеження>, і нарешті, зменшення розміру словника LZMA2."
#. type: Plain text
-#: ../src/xz/xz.1:1022
-msgid ""
-"When compressing with B<--format=raw> or if B<--no-adjust> has been "
-"specified, only the number of threads may be reduced since it can be done "
-"without affecting the compressed output."
-msgstr ""
-"При стисканні з використанням B<--format=raw>, або якщо було вказано B<--no-"
-"adjust>, може бути зменшена лише кількість потоків обробки, оскільки це може "
-"бути зроблено без впливу на стиснені виведені дані."
+#: ../src/xz/xz.1
+msgid "When compressing with B<--format=raw> or if B<--no-adjust> has been specified, only the number of threads may be reduced since it can be done without affecting the compressed output."
+msgstr "При стисканні з використанням B<--format=raw>, або якщо було вказано B<--no-adjust>, може бути зменшена лише кількість потоків обробки, оскільки це може бути зроблено без впливу на стиснені виведені дані."
#. type: Plain text
-#: ../src/xz/xz.1:1029
-msgid ""
-"If the I<limit> cannot be met even with the adjustments described above, an "
-"error is displayed and B<xz> will exit with exit status 1."
-msgstr ""
-"Якщо I<обмеження> не може бути виконано за допомогою коригувань, які описано "
-"вище, буде показано повідомлення про помилку, а B<xz> завершить роботу зі "
-"станом виходу 1."
+#: ../src/xz/xz.1
+msgid "If the I<limit> cannot be met even with the adjustments described above, an error is displayed and B<xz> will exit with exit status 1."
+msgstr "Якщо I<обмеження> не може бути виконано за допомогою коригувань, які описано вище, буде показано повідомлення про помилку, а B<xz> завершить роботу зі станом виходу 1."
#. type: Plain text
-#: ../src/xz/xz.1:1033
+#: ../src/xz/xz.1
msgid "The I<limit> can be specified in multiple ways:"
msgstr "Аргумент I<обмеження> можна вказати у декілька способів:"
#. type: Plain text
-#: ../src/xz/xz.1:1043
-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 ""
-"Значенням I<обмеження> може бути додатне ціле значення у байтах. Можна "
-"скористатися цілочисельним суфіксом, подібним до B<MiB>. Приклад: B<--"
-"memlimit-compress=80MiB>"
+#: ../src/xz/xz.1
+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 "Значенням I<обмеження> може бути додатне ціле значення у байтах. Можна скористатися цілочисельним суфіксом, подібним до B<MiB>. Приклад: B<--memlimit-compress=80MiB>"
#. type: Plain text
-#: ../src/xz/xz.1:1055
-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 ""
-"Аргумент I<обмеження> може бути задано у відсотках від загальної фізичної "
-"пам'яті системи (RAM). Це може бути корисним особливо при встановленні "
-"змінної середовища B<XZ_DEFAULTS> у скрипті ініціалізації системи, який є "
-"спільним для різних комп'ютерів. У такий спосіб можна вказати вищий рівень "
-"обмеження для систем із більшим об'ємом пам'яті. Приклад: B<--memlimit-"
-"compress=70%>"
+#: ../src/xz/xz.1
+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 "Аргумент I<обмеження> може бути задано у відсотках від загальної фізичної пам'яті системи (RAM). Це може бути корисним особливо при встановленні змінної середовища B<XZ_DEFAULTS> у скрипті ініціалізації системи, який є спільним для різних комп'ютерів. У такий спосіб можна вказати вищий рівень обмеження для систем із більшим об'ємом пам'яті. Приклад: B<--memlimit-compress=70%>"
#. type: Plain text
-#: ../src/xz/xz.1:1065
-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)."
-msgstr ""
-"Аргументу I<обмеження> може бути повернуто типове значення встановленням "
-"значення B<0>. У поточній версії це еквівалентно до встановлення значення "
-"аргументу I<обмеження> B<max> (без обмеження на використання пам'яті)."
+#: ../src/xz/xz.1
+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)."
+msgstr "Аргументу I<обмеження> може бути повернуто типове значення встановленням значення B<0>. У поточній версії це еквівалентно до встановлення значення аргументу I<обмеження> B<max> (без обмеження на використання пам'яті)."
#. type: Plain text
-#: ../src/xz/xz.1:1089
-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>. On MIPS32 B<2000\\ "
-"MiB> is used instead. (The values B<0> and B<max> aren't affected by this. "
-"A similar feature doesn't exist for decompression.) This can be helpful "
-"when a 32-bit executable has access to 4\\ GiB address space (2 GiB on "
-"MIPS32) while hopefully doing no harm in other situations."
-msgstr ""
-"Для 32-бітової версії B<xz> передбачено особливий випадок: якщо I<обмеження> "
-"перевищуватиме B<4020\\ МіБ>, для I<обмеження> буде встановлено значення "
-"B<4020\\ MiB>. На MIPS32 замість цього буде використано B<2000\\ MiB>. (Це "
-"не стосується значень B<0> і B<max>. Подібної можливості для розпаковування "
-"не існує.) Це може бути корисним, коли 32-бітовий виконуваний файл має "
-"доступ до простору адрес у 4\\ ГіБ (2 GiB на MIPS32), хоча, сподіваємося, не "
-"зашкодить і в інших випадках."
+#: ../src/xz/xz.1
+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>. On MIPS32 B<2000\\ MiB> is used instead. (The values B<0> and B<max> aren't affected by this. A similar feature doesn't exist for decompression.) This can be helpful when a 32-bit executable has access to 4\\ GiB address space (2 GiB on MIPS32) while hopefully doing no harm in other situations."
+msgstr "Для 32-бітової версії B<xz> передбачено особливий випадок: якщо I<обмеження> перевищуватиме B<4020\\ МіБ>, для I<обмеження> буде встановлено значення B<4020\\ MiB>. На MIPS32 замість цього буде використано B<2000\\ MiB>. (Це не стосується значень B<0> і B<max>. Подібної можливості для розпаковування не існує.) Це може бути корисним, коли 32-бітовий виконуваний файл має доступ до простору адрес у 4\\ ГіБ (2 GiB на MIPS32), хоча, сподіваємося, не зашкодить і в інших випадках."
#. type: Plain text
-#: ../src/xz/xz.1:1092
+#: ../src/xz/xz.1
msgid "See also the section B<Memory usage>."
msgstr "Див. також розділ B<Використання пам'яті>."
#. type: TP
-#: ../src/xz/xz.1:1092
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--memlimit-decompress=>I<limit>"
msgstr "B<--memlimit-decompress=>I<обмеження>"
#. type: Plain text
-#: ../src/xz/xz.1:1106
-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 ""
-"Встановити обмеження пам'яті на розпаковування. це також вплине на режим B<--"
-"list>. Якщо дія є неможливою без перевищення I<обмеження>, B<xz> покаже "
-"повідомлення про помилку і розпаковування файла не відбудеться. Див. B<--"
-"memlimit-compress=>I<обмеження>, щоб дізнатися більше про те, як можна "
-"задати I<обмеження>."
+#: ../src/xz/xz.1
+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 "Встановити обмеження пам'яті на розпаковування. це також вплине на режим B<--list>. Якщо дія є неможливою без перевищення I<обмеження>, B<xz> покаже повідомлення про помилку і розпаковування файла не відбудеться. Див. B<--memlimit-compress=>I<обмеження>, щоб дізнатися більше про те, як можна задати I<обмеження>."
#. type: TP
-#: ../src/xz/xz.1:1106
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--memlimit-mt-decompress=>I<limit>"
msgstr "B<--memlimit-mt-decompress=>I<обмеження>"
#. type: Plain text
-#: ../src/xz/xz.1:1128
-msgid ""
-"Set a memory usage limit for multi-threaded decompression. This can only "
-"affect the number of threads; this will never make B<xz> refuse to "
-"decompress a file. If I<limit> is too low to allow any multi-threading, the "
-"I<limit> is ignored and B<xz> will continue in single-threaded mode. Note "
-"that if also B<--memlimit-decompress> is used, it will always apply to both "
-"single-threaded and multi-threaded modes, and so the effective I<limit> for "
-"multi-threading will never be higher than the limit set with B<--memlimit-"
-"decompress>."
-msgstr ""
-"Встановити обмеження використання пам'яті для багатопотокового "
-"розпаковування. Це може вплинути лише на кількість потоків обробки; це "
-"ніколи не призводитиме до відмови B<xz> у розпаковуванні файла. Якщо "
-"I<обмеження є надто низьким>, щоб уможливити будь-яку багатопотокову "
-"обробку, I<обмеження> буде проігноровано, і B<xz> продовжить обробку в "
-"однопотоковому режимі. Зауважте, що якщо використано також B<--memlimit-"
-"decompress>, цей параметр буде застосовано до обох режимів, однопотокового "
-"та багатопотокового, а отже, задіяне I<обмеження> для багатопотокового "
-"режиму ніколи не перевищуватиме обмеження, яке встановлено за допомогою B<--"
-"memlimit-decompress>."
-
-#. type: Plain text
-#: ../src/xz/xz.1:1135
-msgid ""
-"In contrast to the other memory usage limit options, B<--memlimit-mt-"
-"decompress=>I<limit> has a system-specific default I<limit>. B<xz --info-"
-"memory> can be used to see the current value."
-msgstr ""
-"На відміну від інших параметрів обмеження використання пам'яті, B<--memlimit-"
-"mt-decompress=>I<обмеження> містить специфічне для системи типове значення "
-"I<обмеження>. Можна скористатися B<xz --info-memory> для перегляду поточного "
-"значення."
+#: ../src/xz/xz.1
+msgid "Set a memory usage limit for multi-threaded decompression. This can only affect the number of threads; this will never make B<xz> refuse to decompress a file. If I<limit> is too low to allow any multi-threading, the I<limit> is ignored and B<xz> will continue in single-threaded mode. Note that if also B<--memlimit-decompress> is used, it will always apply to both single-threaded and multi-threaded modes, and so the effective I<limit> for multi-threading will never be higher than the limit set with B<--memlimit-decompress>."
+msgstr "Встановити обмеження використання пам'яті для багатопотокового розпаковування. Це може вплинути лише на кількість потоків обробки; це ніколи не призводитиме до відмови B<xz> у розпаковуванні файла. Якщо I<обмеження є надто низьким>, щоб уможливити будь-яку багатопотокову обробку, I<обмеження> буде проігноровано, і B<xz> продовжить обробку в однопотоковому режимі. Зауважте, що якщо використано також B<--memlimit-decompress>, цей параметр буде застосовано до обох режимів, однопотокового та багатопотокового, а отже, задіяне I<обмеження> для багатопотокового режиму ніколи не перевищуватиме обмеження, яке встановлено за допомогою B<--memlimit-decompress>."
#. type: Plain text
-#: ../src/xz/xz.1:1151
-msgid ""
-"This option and its default value exist because without any limit the "
-"threaded decompressor could end up allocating an insane amount of memory "
-"with some input files. If the default I<limit> is too low on your system, "
-"feel free to increase the I<limit> but never set it to a value larger than "
-"the amount of usable RAM as with appropriate input files B<xz> will attempt "
-"to use that amount of memory even with a low number of threads. Running out "
-"of memory or swapping will not improve decompression performance."
-msgstr ""
-"Цей параметр і його типове значення існують, оскільки без будь-яких обмежень "
-"засіб розпакування зі підтримкою потокової обробки міг би намагатися "
-"отримати величезний об'єм пам'яті для деяких файлів вхідних даних. Якщо "
-"типове I<обмеження> є надто низьким для вашої системи, не вагайтеся і "
-"збільшуйте I<обмеження>, але ніколи не встановлюйте для нього значення, яке "
-"є більшим за придатний до користування об'єм оперативної пам'яті, оскільки "
-"за відповідних файлів вхідних даних B<xz> спробує скористатися цим об'ємом "
-"пам'яті, навіть із низькою кількістю потоків обробки. Вичерпання об'єму "
-"оперативної пам'яті або використання резервної пам'яті на диску не покращить "
-"швидкодію системи під час розпаковування."
-
-#. type: Plain text
-#: ../src/xz/xz.1:1163
-msgid ""
-"See B<--memlimit-compress=>I<limit> for possible ways to specify the "
-"I<limit>. Setting I<limit> to B<0> resets the I<limit> to the default "
-"system-specific value."
-msgstr ""
-"Див. B<--memlimit-compress=>I<обмеження>, щоб ознайомитися із можливими "
-"способами визначення I<обмеження>. Встановлення для I<обмеження> значення "
-"B<0> відновлює типове специфічне для системи значення I<обмеження>."
+#: ../src/xz/xz.1
+msgid "In contrast to the other memory usage limit options, B<--memlimit-mt-decompress=>I<limit> has a system-specific default I<limit>. B<xz --info-memory> can be used to see the current value."
+msgstr "На відміну від інших параметрів обмеження використання пам'яті, B<--memlimit-mt-decompress=>I<обмеження> містить специфічне для системи типове значення I<обмеження>. Можна скористатися B<xz --info-memory> для перегляду поточного значення."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "This option and its default value exist because without any limit the threaded decompressor could end up allocating an insane amount of memory with some input files. If the default I<limit> is too low on your system, feel free to increase the I<limit> but never set it to a value larger than the amount of usable RAM as with appropriate input files B<xz> will attempt to use that amount of memory even with a low number of threads. Running out of memory or swapping will not improve decompression performance."
+msgstr "Цей параметр і його типове значення існують, оскільки без будь-яких обмежень засіб розпакування зі підтримкою потокової обробки міг би намагатися отримати величезний об'єм пам'яті для деяких файлів вхідних даних. Якщо типове I<обмеження> є надто низьким для вашої системи, не вагайтеся і збільшуйте I<обмеження>, але ніколи не встановлюйте для нього значення, яке є більшим за придатний до користування об'єм оперативної пам'яті, оскільки за відповідних файлів вхідних даних B<xz> спробує скористатися цим об'ємом пам'яті, навіть із низькою кількістю потоків обробки. Вичерпання об'єму оперативної пам'яті або використання резервної пам'яті на диску не покращить швидкодію системи під час розпаковування."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "See B<--memlimit-compress=>I<limit> for possible ways to specify the I<limit>. Setting I<limit> to B<0> resets the I<limit> to the default system-specific value."
+msgstr "Див. B<--memlimit-compress=>I<обмеження>, щоб ознайомитися із можливими способами визначення I<обмеження>. Встановлення для I<обмеження> значення B<0> відновлює типове специфічне для системи значення I<обмеження>."
#. type: TP
-#: ../src/xz/xz.1:1163
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-M> I<limit>, B<--memlimit=>I<limit>, B<--memory=>I<limit>"
msgstr "B<-M> I<обмеження>, B<--memlimit=>I<обмеження>, B<--memory=>I<обмеження>"
#. type: Plain text
-#: ../src/xz/xz.1:1169
-msgid ""
-"This is equivalent to specifying B<--memlimit-compress=>I<limit> B<--"
-"memlimit-decompress=>I<limit> B<--memlimit-mt-decompress=>I<limit>."
-msgstr ""
-"Є еквівалентом визначення B<--memlimit-compress=>I<обмеження> B<--memlimit-"
-"decompress=>I<обмеження> B<--memlimit-mt-decompress=>I<обмеження>."
+#: ../src/xz/xz.1
+msgid "This is equivalent to specifying B<--memlimit-compress=>I<limit> B<--memlimit-decompress=>I<limit> B<--memlimit-mt-decompress=>I<limit>."
+msgstr "Є еквівалентом визначення B<--memlimit-compress=>I<обмеження> B<--memlimit-decompress=>I<обмеження> B<--memlimit-mt-decompress=>I<обмеження>."
#. type: TP
-#: ../src/xz/xz.1:1169
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--no-adjust>"
msgstr "B<--no-adjust>"
#. type: Plain text
-#: ../src/xz/xz.1:1179
-msgid ""
-"Display an error and exit if the memory usage limit cannot be met without "
-"adjusting settings that affect the compressed output. That is, this "
-"prevents B<xz> from switching the encoder from multi-threaded mode to single-"
-"threaded mode and from reducing the LZMA2 dictionary size. Even when this "
-"option is used the number of threads may be reduced to meet the memory usage "
-"limit as that won't affect the compressed output."
-msgstr ""
-"Показати повідомлення про помилку і завершити роботу, якщо не вдасться "
-"виконати умови щодо обмеження використання пам'яті без коригування "
-"параметрів, які впливають на стиснених виведених даних. Тобто це забороняє "
-"B<xz> перемикати кодувальник з багатопотокового режиму на однопотоковий "
-"режим і зменшувати розмір словника LZMA2. Навіть якщо використано цей "
-"параметр, кількість потоків може бути зменшено для виконання обмеження на "
-"використання пам'яті, оскільки це не вплине на результати стискання."
+#: ../src/xz/xz.1
+msgid "Display an error and exit if the memory usage limit cannot be met without adjusting settings that affect the compressed output. That is, this prevents B<xz> from switching the encoder from multi-threaded mode to single-threaded mode and from reducing the LZMA2 dictionary size. Even when this option is used the number of threads may be reduced to meet the memory usage limit as that won't affect the compressed output."
+msgstr "Показати повідомлення про помилку і завершити роботу, якщо не вдасться виконати умови щодо обмеження використання пам'яті без коригування параметрів, які впливають на стиснених виведених даних. Тобто це забороняє B<xz> перемикати кодувальник з багатопотокового режиму на однопотоковий режим і зменшувати розмір словника LZMA2. Навіть якщо використано цей параметр, кількість потоків може бути зменшено для виконання обмеження на використання пам'яті, оскільки це не вплине на результати стискання."
#. type: Plain text
-#: ../src/xz/xz.1:1182
-msgid ""
-"Automatic adjusting is always disabled when creating raw streams (B<--"
-"format=raw>)."
-msgstr ""
-"Автоматичне коригування завжди буде вимкнено при створенні потоків "
-"необроблених даних (B<--format=raw>)."
+#: ../src/xz/xz.1
+msgid "Automatic adjusting is always disabled when creating raw streams (B<--format=raw>)."
+msgstr "Автоматичне коригування завжди буде вимкнено при створенні потоків необроблених даних (B<--format=raw>)."
#. type: TP
-#: ../src/xz/xz.1:1182
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-T> I<threads>, B<--threads=>I<threads>"
msgstr "B<-T> I<потоки>, B<--threads=>I<потоки>"
#. type: Plain text
-#: ../src/xz/xz.1:1197
-msgid ""
-"Specify the number of worker threads to use. Setting I<threads> to a "
-"special value B<0> makes B<xz> use up to as many threads as the processor(s) "
-"on the system support. The actual number of threads can be fewer than "
-"I<threads> if the input file is not big enough for threading with the given "
-"settings or if using more threads would exceed the memory usage limit."
-msgstr ""
-"Вказати кількість потоків обробки, якими слід скористатися. Встановлення для "
-"аргументу I<потоки> особливого значення B<0> наказує B<xz> використати не "
-"більше потоків обробки, ніж передбачено підтримку у процесорах системи. "
-"Справжня кількість потоків може бути меншою за значення I<потоки>, якщо файл "
-"вхідних даних не є достатньо великим для поділу на потоки обробки при "
-"заданих параметрах або якщо використання додаткових потоків призведе до "
-"перевищення обмеження на використання пам'яті."
+#: ../src/xz/xz.1
+msgid "Specify the number of worker threads to use. Setting I<threads> to a special value B<0> makes B<xz> use up to as many threads as the processor(s) on the system support. The actual number of threads can be fewer than I<threads> if the input file is not big enough for threading with the given settings or if using more threads would exceed the memory usage limit."
+msgstr "Вказати кількість потоків обробки, якими слід скористатися. Встановлення для аргументу I<потоки> особливого значення B<0> наказує B<xz> використати не більше потоків обробки, ніж передбачено підтримку у процесорах системи. Справжня кількість потоків може бути меншою за значення I<потоки>, якщо файл вхідних даних не є достатньо великим для поділу на потоки обробки при заданих параметрах або якщо використання додаткових потоків призведе до перевищення обмеження на використання пам'яті."
#. type: Plain text
-#: ../src/xz/xz.1:1216
-msgid ""
-"The single-threaded and multi-threaded compressors produce different "
-"output. Single-threaded compressor will give the smallest file size but "
-"only the output from the multi-threaded compressor can be decompressed using "
-"multiple threads. Setting I<threads> to B<1> will use the single-threaded "
-"mode. Setting I<threads> to any other value, including B<0>, will use the "
-"multi-threaded compressor even if the system supports only one hardware "
-"thread. (B<xz> 5.2.x used single-threaded mode in this situation.)"
-msgstr ""
-"Засоби стискання в однопотоковому та багатопотоковому режимі дають різні "
-"результати. Однопотоковий засіб стискання дасть найменший розмір файла, але "
-"лише результати роботи багатопотокового засобу стискання може бути "
-"розпаковано з використанням декількох потоків. Встановлення для аргументу "
-"I<потоки> значення B<1> призведе до використання однопотокового режиму. "
-"Встановлення для аргументу I<потоки> будь-якого іншого значення, включно з "
-"B<0>, призведе до використання багатопотокового засобу стискання, навіть "
-"якщо у системі передбачено підтримки лише одного апаратного потоку обробки "
-"даних. (Версія B<xz> 5.2.x у цьому випадку використовувала однопотоковий "
-"режим.)"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1235
-msgid ""
-"To use multi-threaded mode with only one thread, set I<threads> to B<+1>. "
-"The B<+> prefix has no effect with values other than B<1>. A memory usage "
-"limit can still make B<xz> switch to single-threaded mode unless B<--no-"
-"adjust> is used. Support for the B<+> prefix was added in B<xz> 5.4.0."
-msgstr ""
-"Щоб скористатися багатопотоковим режимом із лише одним потоком обробки, "
-"встановіть для аргументу I<потоки> значення B<+1>. Префікс B<+> не впливає "
-"на значення, окрім B<1>. Обмеження на використання пам'яті можуть перемкнути "
-"B<xz> в однопотоковий режим, якщо не використано параметр B<--no-adjust>. "
-"Підтримку B<+> prefix було додано у версії B<xz> 5.4.0."
+#: ../src/xz/xz.1
+msgid "The single-threaded and multi-threaded compressors produce different output. Single-threaded compressor will give the smallest file size but only the output from the multi-threaded compressor can be decompressed using multiple threads. Setting I<threads> to B<1> will use the single-threaded mode. Setting I<threads> to any other value, including B<0>, will use the multi-threaded compressor even if the system supports only one hardware thread. (B<xz> 5.2.x used single-threaded mode in this situation.)"
+msgstr "Засоби стискання в однопотоковому та багатопотоковому режимі дають різні результати. Однопотоковий засіб стискання дасть найменший розмір файла, але лише результати роботи багатопотокового засобу стискання може бути розпаковано з використанням декількох потоків. Встановлення для аргументу I<потоки> значення B<1> призведе до використання однопотокового режиму. Встановлення для аргументу I<потоки> будь-якого іншого значення, включно з B<0>, призведе до використання багатопотокового засобу стискання, навіть якщо у системі передбачено підтримки лише одного апаратного потоку обробки даних. (Версія B<xz> 5.2.x у цьому випадку використовувала однопотоковий режим.)"
#. type: Plain text
-#: ../src/xz/xz.1:1250
-msgid ""
-"If an automatic number of threads has been requested and no memory usage "
-"limit has been specified, then a system-specific default soft limit will be "
-"used to possibly limit the number of threads. It is a soft limit in sense "
-"that it is ignored if the number of threads becomes one, thus a soft limit "
-"will never stop B<xz> from compressing or decompressing. This default soft "
-"limit will not make B<xz> switch from multi-threaded mode to single-threaded "
-"mode. The active limits can be seen with B<xz --info-memory>."
-msgstr ""
-"Якщо було вказано автоматичне визначення кількості потоків і не вказано "
-"обмеження на використання пам'яті, буде використано специфічне для системи "
-"типове м'яке обмеження для можливого обмеження кількості потоків обробки. Це "
-"обмеження є м'яким у сенсі того, що його буде проігноровано, якщо кількість "
-"потоків зрівняється з одиницею, а отже, м'яке обмеження ніколи не "
-"запобігатиму у B<xz> стисканню або розпаковуванню. Це типове м'яке обмеження "
-"не перемкне B<xz> з багатопотокового режиму на однопотоковий режим. Активні "
-"обмеження можна переглянути за допомогою команди B<xz --info-memory>."
+#: ../src/xz/xz.1
+msgid "To use multi-threaded mode with only one thread, set I<threads> to B<+1>. The B<+> prefix has no effect with values other than B<1>. A memory usage limit can still make B<xz> switch to single-threaded mode unless B<--no-adjust> is used. Support for the B<+> prefix was added in B<xz> 5.4.0."
+msgstr "Щоб скористатися багатопотоковим режимом із лише одним потоком обробки, встановіть для аргументу I<потоки> значення B<+1>. Префікс B<+> не впливає на значення, окрім B<1>. Обмеження на використання пам'яті можуть перемкнути B<xz> в однопотоковий режим, якщо не використано параметр B<--no-adjust>. Підтримку B<+> prefix було додано у версії B<xz> 5.4.0."
#. type: Plain text
-#: ../src/xz/xz.1:1257
-msgid ""
-"Currently the only threading method is to split the input into blocks and "
-"compress them independently from each other. The default block size depends "
-"on the compression level and can be overridden with the B<--block-"
-"size=>I<size> option."
-msgstr ""
-"У поточній версії єдиним способом поділу на потоки обробки є поділ вхідних "
-"даних на блоки і стискання цих блоків незалежно один від одного. Типовий "
-"розмір блоку залежить від рівня стискання. Його може бути перевизначено за "
-"допомогою параметра B<--block-size=>I<розмір>."
+#: ../src/xz/xz.1
+msgid "If an automatic number of threads has been requested and no memory usage limit has been specified, then a system-specific default soft limit will be used to possibly limit the number of threads. It is a soft limit in sense that it is ignored if the number of threads becomes one, thus a soft limit will never stop B<xz> from compressing or decompressing. This default soft limit will not make B<xz> switch from multi-threaded mode to single-threaded mode. The active limits can be seen with B<xz --info-memory>."
+msgstr "Якщо було вказано автоматичне визначення кількості потоків і не вказано обмеження на використання пам'яті, буде використано специфічне для системи типове м'яке обмеження для можливого обмеження кількості потоків обробки. Це обмеження є м'яким у сенсі того, що його буде проігноровано, якщо кількість потоків зрівняється з одиницею, а отже, м'яке обмеження ніколи не запобігатиму у B<xz> стисканню або розпаковуванню. Це типове м'яке обмеження не перемкне B<xz> з багатопотокового режиму на однопотоковий режим. Активні обмеження можна переглянути за допомогою команди B<xz --info-memory>."
#. type: Plain text
-#: ../src/xz/xz.1:1265
-msgid ""
-"Threaded decompression only works on files that contain multiple blocks with "
-"size information in block headers. All large enough files compressed in "
-"multi-threaded mode meet this condition, but files compressed in single-"
-"threaded mode don't even if B<--block-size=>I<size> has been used."
-msgstr ""
-"Розпакування з потоками обробки працює лише для файлів, які містять декілька "
-"блоків із даними щодо розміру у заголовках блоків. Цю умову задовольняють "
-"усі достатньо великі файли, які стиснено у багатопотоковому режимі, але не "
-"задовольняють будь-які файли, які було стиснуто у однопотоковому режимі, "
-"навіть якщо було використано параметр B<--block-size=>I<розмір>."
+#: ../src/xz/xz.1
+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 "У поточній версії єдиним способом поділу на потоки обробки є поділ вхідних даних на блоки і стискання цих блоків незалежно один від одного. Типовий розмір блоку залежить від рівня стискання. Його може бути перевизначено за допомогою параметра B<--block-size=>I<розмір>."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Threaded decompression only works on files that contain multiple blocks with size information in block headers. All large enough files compressed in multi-threaded mode meet this condition, but files compressed in single-threaded mode don't even if B<--block-size=>I<size> has been used."
+msgstr "Розпакування з потоками обробки працює лише для файлів, які містять декілька блоків із даними щодо розміру у заголовках блоків. Цю умову задовольняють усі достатньо великі файли, які стиснено у багатопотоковому режимі, але не задовольняють будь-які файли, які було стиснуто у однопотоковому режимі, навіть якщо було використано параметр B<--block-size=>I<розмір>."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The default value for I<threads> is B<0>. In B<xz> 5.4.x and older the default is B<1>."
+msgstr "Типовим значенням для I<потоків> є B<0>. У B<xz> 5.4.x та старіших версіях типовим значенням є B<1>."
#. type: SS
-#: ../src/xz/xz.1:1266 ../src/xz/xz.1:2819
+#: ../src/xz/xz.1
#, no-wrap
msgid "Custom compressor filter chains"
msgstr "Нетипові ланцюжки фільтрів засобу стискання"
#. type: Plain text
-#: ../src/xz/xz.1:1282
-msgid ""
-"A custom filter chain allows specifying the compression settings in detail "
-"instead of relying on the settings associated to the presets. When a custom "
-"filter chain is specified, preset options (B<-0> \\&...\\& B<-9> and B<--"
-"extreme>) earlier on the command line are forgotten. If a preset option is "
-"specified after one or more custom filter chain options, the new preset "
-"takes effect and the custom filter chain options specified earlier are "
-"forgotten."
-msgstr ""
-"Нетиповий ланцюжок фільтрування уможливлює докладне визначення параметрів "
-"стискання замість використання параметрів, які пов'язано із наперед "
-"визначеними рівнями стискання. Якщо вказано нетиповий ланцюжок фільтрів, "
-"параметри рівнів стискання (B<-0> \\&...\\& B<-9> і B<--extreme>), які "
-"передують їм у рядку команди, буде знехтувано. Якщо параметр рівня стискання "
-"вказано після одного або декількох параметрів нетипового ланцюжка фільтрів, "
-"буде використано рівень стискання, а попередніми параметрами ланцюжка "
-"фільтрування буде знехтувано."
+#: ../src/xz/xz.1
+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 "Нетиповий ланцюжок фільтрування уможливлює докладне визначення параметрів стискання замість використання параметрів, які пов'язано із наперед визначеними рівнями стискання. Якщо вказано нетиповий ланцюжок фільтрів, параметри рівнів стискання (B<-0> \\&...\\& B<-9> і B<--extreme>), які передують їм у рядку команди, буде знехтувано. Якщо параметр рівня стискання вказано після одного або декількох параметрів нетипового ланцюжка фільтрів, буде використано рівень стискання, а попередніми параметрами ланцюжка фільтрування буде знехтувано."
#. type: Plain text
-#: ../src/xz/xz.1:1289
-msgid ""
-"A filter chain is comparable to piping on the command line. When "
-"compressing, the uncompressed input goes to the first filter, whose output "
-"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 ""
-"Ланцюжок фільтрів можна порівняти із конвеєром у командному рядку. При "
-"стисканні нестиснені вхідні дані потрапляють до першого фільтра, виведені "
-"ним дані йдуть до наступного фільтра (якщо такий є). Виведені останнім "
-"фільтром дані буде записано до стисненого файла. Максимальна кількість "
-"фільтрів у ланцюжку дорівнює чотирьом, але у типовому ланцюжку фільтрів "
-"використовують один або два фільтри."
+#: ../src/xz/xz.1
+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 "Ланцюжок фільтрів можна порівняти із конвеєром у командному рядку. При стисканні нестиснені вхідні дані потрапляють до першого фільтра, виведені ним дані йдуть до наступного фільтра (якщо такий є). Виведені останнім фільтром дані буде записано до стисненого файла. Максимальна кількість фільтрів у ланцюжку дорівнює чотирьом, але у типовому ланцюжку фільтрів використовують один або два фільтри."
#. type: Plain text
-#: ../src/xz/xz.1:1297
-msgid ""
-"Many filters have limitations on where they can be in the filter chain: some "
-"filters can work only as the last filter in the chain, some only as a non-"
-"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 ""
-"У багатьох фільтрів є обмеження на місце перебування у ланцюжку фільтрів: "
-"деякі фільтри можуть працювати, лише якщо вони є останніми у ланцюжку, "
-"деякі, лише якщо не останніми, а деякі працюють у будь-якій позиції "
-"ланцюжка. Залежно від фільтра, це обмеження є наслідком структури фільтра "
-"або існує для запобігання проблем із захистом."
+#: ../src/xz/xz.1
+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 "У багатьох фільтрів є обмеження на місце перебування у ланцюжку фільтрів: деякі фільтри можуть працювати, лише якщо вони є останніми у ланцюжку, деякі, лише якщо не останніми, а деякі працюють у будь-якій позиції ланцюжка. Залежно від фільтра, це обмеження є наслідком структури фільтра або існує для запобігання проблем із захистом."
#. type: Plain text
-#: ../src/xz/xz.1:1305
-msgid ""
-"A custom filter chain is specified by using one or more filter options in "
-"the order they are wanted in the filter chain. That is, the order of filter "
-"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 ""
-"Нетиповий ланцюжок фільтрів визначають за допомогою одного або декількох "
-"параметрів фільтрування у бажаному для ланцюжка фільтрування порядку. Тобто "
-"порядок параметрів фільтрування впливає на результат! При декодуванні "
-"необробленого потоку даних (B<--format=raw>) ланцюжок фільтрів визначають у "
-"тому самому порядку, який використовують для стискання даних."
+#: ../src/xz/xz.1
+msgid "A custom filter chain can be specified in two different ways. The options B<--filters=>I<filters> and B<--filters1=>I<filters> \\&...\\& B<--filters9=>I<filters> allow specifying an entire filter chain in one option using the liblzma filter string syntax. Alternatively, a filter chain can be specified by using one or more individual filter options in the order they are wanted in the filter chain. That is, the order of the individual filter options is significant! When decoding raw streams (B<--format=raw>), the filter chain must be specified in the same order as it was specified when compressing. Any individual filter or preset options specified before the full chain option (B<--filters=>I<filters>) will be forgotten. Individual filters specified after the full chain option will reset the filter chain."
+msgstr "Нетиповий ланцюжок фільтрів можна вказати двома різними способами. Параметри B<--filters=>I<фільтри> і B<--filters1=>I<фільтри> \\&...\\& B<--filters9=>I<фільтри> надають змогу вказати цілий ланцюжок фільтрів в одному варіанті з використанням синтаксису рядків фільтрів liblzma. Крім того, ланцюжок фільтрів можна вказати за допомогою одного або кількох окремих параметрів фільтрування у тому порядку, в якому їх слід використати у ланцюжку фільтрів. Тобто порядок окремих параметрів фільтра є важливим! Під час декодування необроблених потоків (B<--format=raw>) ланцюжок фільтрів має бути вказано у тому ж порядку, що й під час стиснення. Будь-який окремий фільтр або параметри попереднього налаштування, вказані перед параметром повного ланцюжка (B<--filters=>I<фільтри>), буде відкинуто. Окремі фільтри, указані після параметра повного ланцюжка, відновлять типовий ланцюжок фільтрів."
#. type: Plain text
-#: ../src/xz/xz.1:1314
-msgid ""
-"Filters take filter-specific I<options> as a comma-separated list. Extra "
-"commas in I<options> are ignored. Every option has a default value, so you "
-"need to specify only those you want to change."
-msgstr ""
-"Фільтри приймають специфічні для фільтрів I<параметри> у форматі списку "
-"значень, які відокремлено комами. Зайві коми у I<параметрах> буде "
-"проігноровано. У кожного параметра є типове значення, отже, вам слід вказати "
-"лише ті параметри, значення яких ви хочете змінити."
+#: ../src/xz/xz.1
+msgid "Both the full and individual filter options take filter-specific I<options> as a comma-separated list. Extra commas in I<options> are ignored. Every option has a default value, so specify those you want to change."
+msgstr "І параметр повного і параметр окремого фільтра приймають специфічні для фільтрів I<параметри> у форматі списку значень, які відокремлено комами. Зайві коми у I<параметрах> буде проігноровано. У кожного параметра є типове значення, отже, вам слід вказати ті параметри, значення яких ви хочете змінити."
#. type: Plain text
-#: ../src/xz/xz.1:1323
-msgid ""
-"To see the whole filter chain and I<options>, use B<xz -vv> (that is, use "
-"B<--verbose> twice). This works also for viewing the filter chain options "
-"used by presets."
-msgstr ""
-"Щоб переглянути увесь ланцюжок фільтрів та I<параметри>, скористайтеся "
-"командою B<xz -vv> (тобто, скористайтеся B<--verbose> двічі). Це працює "
-"також для перегляду параметрів ланцюжка фільтрів, який використано у рівнях "
-"стискання."
+#: ../src/xz/xz.1
+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 "Щоб переглянути увесь ланцюжок фільтрів та I<параметри>, скористайтеся командою B<xz -vv> (тобто, скористайтеся B<--verbose> двічі). Це працює також для перегляду параметрів ланцюжка фільтрів, який використано у рівнях стискання."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "B<--filters=>I<filters>"
+msgstr "B<--filters=>I<фільтри>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Specify the full filter chain or a preset in a single option. Each filter can be separated by spaces or two dashes (B<-->). I<filters> may need to be quoted on the shell command line so it is parsed as a single option. To denote I<options>, use B<:> or B<=>. A preset can be prefixed with a B<-> and followed with zero or more flags. The only supported flag is B<e> to apply the same options as B<--extreme>."
+msgstr "Визначає повний ланцюжок фільтрів або шаблон у форматі одного параметра. Кожен фільтр можна відокремити від інших пробілами або двома дефісами (B<-->). Можливо, I<фільтри> доведеться взяти в лапки в командному рядку оболонки, щоб їх було оброблено як один параметр. Для позначення I<параметрів> скористайтеся B<:> або B<=>. До шаблона можна додати префікс B<-> і завершити без прапорців або декількома прапорцями. Єдиним підтримуваним прапорцем є B<e> для застосування тих самих параметрів, що й B<--extreme>."
#. type: TP
-#: ../src/xz/xz.1:1323
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "B<--filters1>=I<filters> ... B<--filters9>=I<filters>"
+msgstr "B<--filters1>=I<фільтри> ... B<--filters9>=I<фільтри>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Specify up to nine additional filter chains that can be used with B<--block-list>."
+msgstr "Вказати до дев'яти додаткових ланцюжків фільтрів, якими можна скористатися за допомогою B<--block-list>."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "For example, when compressing an archive with executable files followed by text files, the executable part could use a filter chain with a BCJ filter and the text part only the LZMA2 filter."
+msgstr "Наприклад, якщо виконується стискання архіву із виконуваними файлами, за якими йдуть текстові файли, для виконуваної частини може бути використано ланцюжок фільтрів з фільтром BCJ, а для текстової частини — лише фільтр LZMA2."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "B<--filters-help>"
+msgstr "B<--filters-help>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Display a help message describing how to specify presets and custom filter chains in the B<--filters> and B<--filters1=>I<filters> \\&...\\& B<--filters9=>I<filters> options, and exit successfully."
+msgstr "Вивести довідкове повідомлення з описом того, як вказати шаблони та нетипові ланцюжки фільтрів у параметри B<--filters> і B<--filters1=>I<фільтри> \\&...\\& B<--filters9=>I<фільтри> і завершити роботу із кодом успіху."
+
+#. type: TP
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--lzma1>[B<=>I<options>]"
msgstr "B<--lzma1>[B<=>I<параметри>]"
#. type: TP
-#: ../src/xz/xz.1:1326
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--lzma2>[B<=>I<options>]"
msgstr "B<--lzma2>[B<=>I<параметри>]"
#. type: Plain text
-#: ../src/xz/xz.1:1331
-msgid ""
-"Add LZMA1 or LZMA2 filter to the filter chain. These filters can be used "
-"only as the last filter in the chain."
-msgstr ""
-"Додати фільтр LZMA1 або LZMA2 до ланцюжка фільтрів. Ці фільтри може бути "
-"використано лише як останній фільтр у ланцюжку."
+#: ../src/xz/xz.1
+msgid "Add LZMA1 or LZMA2 filter to the filter chain. These filters can be used only as the last filter in the chain."
+msgstr "Додати фільтр LZMA1 або LZMA2 до ланцюжка фільтрів. Ці фільтри може бути використано лише як останній фільтр у ланцюжку."
#. type: Plain text
-#: ../src/xz/xz.1:1343
-msgid ""
-"LZMA1 is a legacy filter, which is supported almost solely due to the legacy "
-"B<.lzma> file format, which supports only LZMA1. LZMA2 is an updated "
-"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 є застарілим фільтром, підтримку якого збережено майже лише через "
-"використання формату файлів B<.lzma>, у яких передбачено підтримку лише "
-"LZMA1. LZMA2 є оновленою версією LZMA1, у якій виправлено деякі практичні "
-"вади LZMA1. У форматі B<.xz> використано LZMA2 і взагалі не передбачено "
-"підтримки LZMA1. Швидкість стискання та коефіцієнт стискання для LZMA1 і "
-"LZMA2 є практично однаковими."
+#: ../src/xz/xz.1
+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 є застарілим фільтром, підтримку якого збережено майже лише через використання формату файлів B<.lzma>, у яких передбачено підтримку лише LZMA1. LZMA2 є оновленою версією LZMA1, у якій виправлено деякі практичні вади LZMA1. У форматі B<.xz> використано LZMA2 і взагалі не передбачено підтримки LZMA1. Швидкість стискання та коефіцієнт стискання для LZMA1 і LZMA2 є практично однаковими."
#. type: Plain text
-#: ../src/xz/xz.1:1346
+#: ../src/xz/xz.1
msgid "LZMA1 and LZMA2 share the same set of I<options>:"
msgstr "LZMA1 і LZMA2 спільно використовують той самий набір I<параметрів>:"
#. type: TP
-#: ../src/xz/xz.1:1347
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<preset=>I<preset>"
msgstr "B<preset=>I<шаблон>"
#. type: Plain text
-#: ../src/xz/xz.1:1374
-msgid ""
-"Reset all LZMA1 or LZMA2 I<options> to I<preset>. I<Preset> consist of an "
-"integer, which may be followed by single-letter preset modifiers. The "
-"integer can be from B<0> to B<9>, matching the command line options B<-0> "
-"\\&...\\& B<-9>. The only supported modifier is currently B<e>, which "
-"matches B<--extreme>. If no B<preset> is specified, the default values of "
-"LZMA1 or LZMA2 I<options> are taken from the preset B<6>."
-msgstr ""
-"Скинути усі I<параметри> LZMA1 або LZMA2 до параметрів I<шаблона>. Аргумент "
-"I<шаблон> складається з цілого числа, після якого може бути однолітерний "
-"модифікатор шаблона. Ціле число може належати лише діапазону від B<0> до "
-"B<9>, що відповідає параметрам командного рядка B<-0> \\&...\\& B<-9>. "
-"Єдиним підтримуваним модифікатором у поточній версії є B<e>, щоб відповідає "
-"параметру B<--extreme>. Якщо аргумент B<шаблон> не вказано, типові значення "
-"I<параметрів> LZMA1 або LZMA2 буде взято із шаблона B<6>."
+#: ../src/xz/xz.1
+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 "Скинути усі I<параметри> LZMA1 або LZMA2 до параметрів I<шаблона>. Аргумент I<шаблон> складається з цілого числа, після якого може бути однолітерний модифікатор шаблона. Ціле число може належати лише діапазону від B<0> до B<9>, що відповідає параметрам командного рядка B<-0> \\&...\\& B<-9>. Єдиним підтримуваним модифікатором у поточній версії є B<e>, щоб відповідає параметру B<--extreme>. Якщо аргумент B<шаблон> не вказано, типові значення I<параметрів> LZMA1 або LZMA2 буде взято із шаблона B<6>."
#. type: TP
-#: ../src/xz/xz.1:1374
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<dict=>I<size>"
msgstr "B<dict=>I<розмір>"
#. type: Plain text
-#: ../src/xz/xz.1:1389
-msgid ""
-"Dictionary (history buffer) I<size> indicates how many bytes of the "
-"recently processed uncompressed data is kept in memory. The algorithm tries "
-"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 ""
-"Параметр I<розміру> словника (буфера журналу) визначає, скільки байтів "
-"нещодавно оброблених нестиснених даних слід зберігати у пам'яті. Алгоритм "
-"намагається знайти повторювані послідовності байтів (відповідники) у "
-"нестиснених даних і замінити їх на посилання на дані зі словника. Чим "
-"більшим є словник, тим вищою є ймовірність відшукати відповідник. Отже, "
-"збільшення I<розміру> словника, зазвичай, покращує коефіцієнт стискання, але "
-"використання словника, розмір якого перевищу є розмір нестисненого файла є "
-"простоюю витратою пам'яті."
+#: ../src/xz/xz.1
+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 "Параметр I<розміру> словника (буфера журналу) визначає, скільки байтів нещодавно оброблених нестиснених даних слід зберігати у пам'яті. Алгоритм намагається знайти повторювані послідовності байтів (відповідники) у нестиснених даних і замінити їх на посилання на дані зі словника. Чим більшим є словник, тим вищою є ймовірність відшукати відповідник. Отже, збільшення I<розміру> словника, зазвичай, покращує коефіцієнт стискання, але використання словника, розмір якого перевищу є розмір нестисненого файла є простоюю витратою пам'яті."
#. type: Plain text
-#: ../src/xz/xz.1:1398
-msgid ""
-"Typical dictionary I<size> is from 64\\ KiB to 64\\ MiB. The minimum is 4\\ "
-"KiB. The maximum for compression is currently 1.5\\ GiB (1536\\ MiB). The "
-"decompressor already supports dictionaries up to one byte less than 4\\ GiB, "
-"which is the maximum for the LZMA1 and LZMA2 stream formats."
-msgstr ""
-"I<Розмір> типового словника складає від 64\\ КіБ до 64\\ МіБ. Мінімальним є "
-"розмір 4\\ КіБ. Максимальним розміром для стискання у поточній версії 1.5\\ "
-"ГіБ (1536\\ МіБ). У засобі розпаковування вже передбачено підтримку "
-"словників на один байт менших за 4\\ ГіБ, що є максимальним значенням для "
-"форматів потоків даних LZMA1 і LZMA2."
+#: ../src/xz/xz.1
+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 "I<Розмір> типового словника складає від 64\\ КіБ до 64\\ МіБ. Мінімальним є розмір 4\\ КіБ. Максимальним розміром для стискання у поточній версії 1.5\\ ГіБ (1536\\ МіБ). У засобі розпаковування вже передбачено підтримку словників на один байт менших за 4\\ ГіБ, що є максимальним значенням для форматів потоків даних LZMA1 і LZMA2."
#. type: Plain text
-#: ../src/xz/xz.1:1425
-msgid ""
-"Dictionary I<size> and match finder (I<mf>) together determine the memory "
-"usage of the LZMA1 or LZMA2 encoder. The same (or bigger) dictionary "
-"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 ""
-"Аргумент I<розміру> словника і засіб пошуку відповідників (I<mf>) разом "
-"визначають параметри використання пам'яті для кодувальника LZMA1 або LZMA2. "
-"Для розпаковування потрібен такий самий (або більший) I<розмір> словника, що "
-"і для стискання, отже, використання пам'яті для засобу розпаковування буде "
-"визначено за розміром словника, який було використано для стискання. У "
-"заголовках B<.xz> зберігається I<розмір> словника або як 2^I<n>, або як "
-"2^I<n> + 2^(I<n>-1), отже, ці I<розміри> є дещо пріоритетними для стискання. "
-"Інші I<розміри> буде отримано округленням при зберіганні у заголовках B<.xz>."
+#: ../src/xz/xz.1
+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 "Аргумент I<розміру> словника і засіб пошуку відповідників (I<mf>) разом визначають параметри використання пам'яті для кодувальника LZMA1 або LZMA2. Для розпаковування потрібен такий самий (або більший) I<розмір> словника, що і для стискання, отже, використання пам'яті для засобу розпаковування буде визначено за розміром словника, який було використано для стискання. У заголовках B<.xz> зберігається I<розмір> словника або як 2^I<n>, або як 2^I<n> + 2^(I<n>-1), отже, ці I<розміри> є дещо пріоритетними для стискання. Інші I<розміри> буде отримано округленням при зберіганні у заголовках B<.xz>."
#. type: TP
-#: ../src/xz/xz.1:1425
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lc=>I<lc>"
msgstr "B<lc=>I<lc>"
#. type: Plain text
-#: ../src/xz/xz.1:1434
-msgid ""
-"Specify the number of literal context bits. The minimum is 0 and the "
-"maximum is 4; the default is 3. In addition, the sum of I<lc> and I<lp> "
-"must not exceed 4."
-msgstr ""
-"Визначає кількість буквальних контекстних бітів. Мінімальною кількістю є 0, "
-"а максимальною — 4. Типовою кількістю є 3. Крім того, сума I<lc> і I<lp> має "
-"не перевищувати 4."
+#: ../src/xz/xz.1
+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 "Визначає кількість буквальних контекстних бітів. Мінімальною кількістю є 0, а максимальною — 4. Типовою кількістю є 3. Крім того, сума I<lc> і I<lp> має не перевищувати 4."
#. type: Plain text
-#: ../src/xz/xz.1:1439
-msgid ""
-"All bytes that cannot be encoded as matches are encoded as literals. That "
-"is, literals are simply 8-bit bytes that are encoded one at a time."
-msgstr ""
-"Усі байти, які не може бути закодовано як відповідності, буде закодовано як "
-"літерали. Тобто літерали є просто 8-бітовими байтами, які буде закодовано по "
-"одному за раз."
+#: ../src/xz/xz.1
+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 "Усі байти, які не може бути закодовано як відповідності, буде закодовано як літерали. Тобто літерали є просто 8-бітовими байтами, які буде закодовано по одному за раз."
#. type: Plain text
-#: ../src/xz/xz.1:1453
-msgid ""
-"The literal coding makes an assumption that the highest I<lc> bits of the "
-"previous uncompressed byte correlate with the next byte. For example, in "
-"typical English text, an upper-case letter is often followed by a lower-case "
-"letter, and a lower-case letter is usually followed by another lower-case "
-"letter. In the US-ASCII character set, the highest three bits are 010 for "
-"upper-case letters and 011 for lower-case letters. When I<lc> is at least "
-"3, the literal coding can take advantage of this property in the "
-"uncompressed data."
-msgstr ""
-"При кодуванні літералів роблять припущення, що найвищі біти I<lc> "
-"попереднього нестисненого байта корелюють із наступним байтом. Наприклад, у "
-"типовому тексті англійською за літерою у верхньому регістрі йде літера у "
-"нижньому регістрі, а за літерою у нижньому регістрі, зазвичай, йде інша "
-"літера у нижньому регістрі. У наборі символів US-ASCII найвищими трьома "
-"бітами є 010 для літер верхнього регістру і 011 для літер нижнього регістру. "
-"Якщо I<lc> дорівнює принаймні 3, при кодуванні літералів можна отримати "
-"перевагу встановлення цієї властивості для нестиснених даних."
+#: ../src/xz/xz.1
+msgid "The literal coding makes an assumption that the highest I<lc> bits of the previous uncompressed byte correlate with the next byte. For example, in typical English text, an upper-case letter is often followed by a lower-case letter, and a lower-case letter is usually followed by another lower-case letter. In the US-ASCII character set, the highest three bits are 010 for upper-case letters and 011 for lower-case letters. When I<lc> is at least 3, the literal coding can take advantage of this property in the uncompressed data."
+msgstr "При кодуванні літералів роблять припущення, що найвищі біти I<lc> попереднього нестисненого байта корелюють із наступним байтом. Наприклад, у типовому тексті англійською за літерою у верхньому регістрі йде літера у нижньому регістрі, а за літерою у нижньому регістрі, зазвичай, йде інша літера у нижньому регістрі. У наборі символів US-ASCII найвищими трьома бітами є 010 для літер верхнього регістру і 011 для літер нижнього регістру. Якщо I<lc> дорівнює принаймні 3, при кодуванні літералів можна отримати перевагу встановлення цієї властивості для нестиснених даних."
#. type: Plain text
-#: ../src/xz/xz.1:1462
-msgid ""
-"The default value (3) is usually good. If you want maximum compression, "
-"test B<lc=4>. Sometimes it helps a little, and sometimes it makes "
-"compression worse. If it makes it worse, test B<lc=2> too."
-msgstr ""
-"Зазвичай, типового значення (3) достатньо. Якщо вам потрібне максимальне "
-"стискання, спробуйте B<lc=4>. Іноді це трохи допомагає, а іноді, робить "
-"стискання гіршим. Якщо стискання стане гіршим, спробуйте також B<lc=2>."
+#: ../src/xz/xz.1
+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 B<lc=2> too."
+msgstr "Зазвичай, типового значення (3) достатньо. Якщо вам потрібне максимальне стискання, спробуйте B<lc=4>. Іноді це трохи допомагає, а іноді, робить стискання гіршим. Якщо стискання стане гіршим, спробуйте також B<lc=2>."
#. type: TP
-#: ../src/xz/xz.1:1462
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lp=>I<lp>"
msgstr "B<lp=>I<lp>"
#. type: Plain text
-#: ../src/xz/xz.1:1466
-msgid ""
-"Specify the number of literal position bits. The minimum is 0 and the "
-"maximum is 4; the default is 0."
-msgstr ""
-"Визначає кількість буквальних позиційних бітів. Мінімальною кількістю є 0, а "
-"максимальною — 4. Типовою кількістю є 0."
+#: ../src/xz/xz.1
+msgid "Specify the number of literal position bits. The minimum is 0 and the maximum is 4; the default is 0."
+msgstr "Визначає кількість буквальних позиційних бітів. Мінімальною кількістю є 0, а максимальною — 4. Типовою кількістю є 0."
#. type: Plain text
-#: ../src/xz/xz.1:1473
-msgid ""
-"I<Lp> affects what kind of alignment in the uncompressed data is assumed "
-"when encoding literals. See I<pb> below for more information about "
-"alignment."
-msgstr ""
-"I<Lp> впливає на те, яке вирівнювання у нестиснених даних слід припускати "
-"при кодуванні літералів. Див. I<pb> нижче, щоб дізнатися більше про "
-"вирівнювання."
+#: ../src/xz/xz.1
+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> впливає на те, яке вирівнювання у нестиснених даних слід припускати при кодуванні літералів. Див. I<pb> нижче, щоб дізнатися більше про вирівнювання."
#. type: TP
-#: ../src/xz/xz.1:1473
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<pb=>I<pb>"
msgstr "B<pb=>I<pb>"
#. type: Plain text
-#: ../src/xz/xz.1:1477
-msgid ""
-"Specify the number of position bits. The minimum is 0 and the maximum is 4; "
-"the default is 2."
-msgstr ""
-"Визначає кількість позиційних бітів. Мінімальною кількістю є 0, а "
-"максимальною — 4. Типовою кількістю є 2."
+#: ../src/xz/xz.1
+msgid "Specify the number of position bits. The minimum is 0 and the maximum is 4; the default is 2."
+msgstr "Визначає кількість позиційних бітів. Мінімальною кількістю є 0, а максимальною — 4. Типовою кількістю є 2."
#. type: Plain text
-#: ../src/xz/xz.1:1484
-msgid ""
-"I<Pb> affects what kind of alignment in the uncompressed data is assumed in "
-"general. The default means four-byte alignment (2^I<pb>=2^2=4), which is "
-"often a good choice when there's no better guess."
-msgstr ""
-"I<Pb> впливає на те, який тип вирівнювання загалом припускатиметься для "
-"нестиснених даних. Типовим є чотирибайтове вирівнювання (2^I<pb>=2^2=4), "
-"яке, зазвичай, є добрим варіантом, якщо немає кращих припущень."
+#: ../src/xz/xz.1
+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> впливає на те, який тип вирівнювання загалом припускатиметься для нестиснених даних. Типовим є чотирибайтове вирівнювання (2^I<pb>=2^2=4), яке, зазвичай, є добрим варіантом, якщо немає кращих припущень."
#. type: Plain text
-#: ../src/xz/xz.1:1498
-msgid ""
-"When the alignment is known, setting I<pb> accordingly may reduce the file "
-"size a little. For example, with text files having one-byte alignment (US-"
-"ASCII, ISO-8859-*, UTF-8), setting B<pb=0> can improve compression "
-"slightly. For UTF-16 text, B<pb=1> is a good choice. If the alignment is "
-"an odd number like 3 bytes, B<pb=0> might be the best choice."
-msgstr ""
-"Якщо вирівнювання є відомим, встановлення відповідним чином I<pb> може трохи "
-"зменшити розмір файла. Наприклад, у текстових файлах із однобайтовим "
-"вирівнюванням (US-ASCII, ISO-8859-*, UTF-8), встановлення значення B<pb=0> "
-"може трохи поліпшити стискання. Для тексту UTF-16 добрим варіантом є "
-"B<pb=1>. Якщо вирівнювання є непарним числом, наприклад 3 байти, найкращим "
-"вибором, ймовірно, є B<pb=0>."
+#: ../src/xz/xz.1
+msgid "When the alignment is known, setting I<pb> accordingly may reduce the file size a little. For example, with text files having one-byte alignment (US-ASCII, ISO-8859-*, UTF-8), setting B<pb=0> can improve compression slightly. For UTF-16 text, B<pb=1> is a good choice. If the alignment is an odd number like 3 bytes, B<pb=0> might be the best choice."
+msgstr "Якщо вирівнювання є відомим, встановлення відповідним чином I<pb> може трохи зменшити розмір файла. Наприклад, у текстових файлах із однобайтовим вирівнюванням (US-ASCII, ISO-8859-*, UTF-8), встановлення значення B<pb=0> може трохи поліпшити стискання. Для тексту UTF-16 добрим варіантом є B<pb=1>. Якщо вирівнювання є непарним числом, наприклад 3 байти, найкращим вибором, ймовірно, є B<pb=0>."
#. type: Plain text
-#: ../src/xz/xz.1:1506
-msgid ""
-"Even though the assumed alignment can be adjusted with I<pb> and I<lp>, "
-"LZMA1 and LZMA2 still slightly favor 16-byte alignment. It might be worth "
-"taking into account when designing file formats that are likely to be often "
-"compressed with LZMA1 or LZMA2."
-msgstr ""
-"Хоча прогнозоване вирівнювання можна скоригувати за допомогою I<pb> і I<lp>, "
-"у LZMA1 і LZMA2 дещо пріоритетним є 16-байтове вирівнювання. Це, ймовірно, "
-"слід враховувати при компонуванні форматів файлів, які, ймовірно, часто "
-"будуть стискатися з використанням LZMA1 або LZMA2."
+#: ../src/xz/xz.1
+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 "Хоча прогнозоване вирівнювання можна скоригувати за допомогою I<pb> і I<lp>, у LZMA1 і LZMA2 дещо пріоритетним є 16-байтове вирівнювання. Це, ймовірно, слід враховувати при компонуванні форматів файлів, які, ймовірно, часто будуть стискатися з використанням LZMA1 або LZMA2."
#. type: TP
-#: ../src/xz/xz.1:1506
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<mf=>I<mf>"
msgstr "B<mf=>I<mf>"
#. type: Plain text
-#: ../src/xz/xz.1:1521
-msgid ""
-"Match finder has a major effect on encoder speed, memory usage, and "
-"compression ratio. Usually Hash Chain match finders are faster than Binary "
-"Tree match finders. The default depends on the I<preset>: 0 uses B<hc3>, "
-"1\\(en3 use B<hc4>, and the rest use B<bt4>."
-msgstr ""
-"Засіб пошуку відповідників має значний вплив на швидкість, використання "
-"пам'яті та коефіцієнт стискання кодувальника. Зазвичай, засоби пошуку "
-"відповідників на основі ланцюжка хешів є швидшими за засоби пошуку "
-"відповідників на основі двійкового дерева. Типовий засіб залежить від "
-"I<шаблона>: для 0 використовують B<hc3>, для 1\\(en3 — B<hc4>, а для решти "
-"використовують B<bt4>."
+#: ../src/xz/xz.1
+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\\(en3 use B<hc4>, and the rest use B<bt4>."
+msgstr "Засіб пошуку відповідників має значний вплив на швидкість, використання пам'яті та коефіцієнт стискання кодувальника. Зазвичай, засоби пошуку відповідників на основі ланцюжка хешів є швидшими за засоби пошуку відповідників на основі двійкового дерева. Типовий засіб залежить від I<шаблона>: для 0 використовують B<hc3>, для 1\\(en3 — B<hc4>, а для решти використовують B<bt4>."
#. type: Plain text
-#: ../src/xz/xz.1:1527
-msgid ""
-"The following match finders are supported. The memory usage formulas below "
-"are rough approximations, which are closest to the reality when I<dict> is a "
-"power of two."
-msgstr ""
-"Передбачено підтримку вказаних нижче засобів пошуку відповідників. Наведені "
-"нижче формули обчислення використання пам'яті є грубими наближеннями, які є "
-"найближчими до реальних значень, якщо значенням I<словник> є степінь двійки."
+#: ../src/xz/xz.1
+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 "Передбачено підтримку вказаних нижче засобів пошуку відповідників. Наведені нижче формули обчислення використання пам'яті є грубими наближеннями, які є найближчими до реальних значень, якщо значенням I<словник> є степінь двійки."
#. type: TP
-#: ../src/xz/xz.1:1528
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<hc3>"
msgstr "B<hc3>"
#. type: Plain text
-#: ../src/xz/xz.1:1531
+#: ../src/xz/xz.1
msgid "Hash Chain with 2- and 3-byte hashing"
msgstr "Ланцюжок хешів із 2- та 3-байтовим хешуванням"
#. type: Plain text
-#: ../src/xz/xz.1:1535 ../src/xz/xz.1:1584
+#: ../src/xz/xz.1
msgid "Minimum value for I<nice>: 3"
msgstr "Мінімальне значення I<пріоритетності>: 3"
#. type: Plain text
-#: ../src/xz/xz.1:1537 ../src/xz/xz.1:1556 ../src/xz/xz.1:1586
-#: ../src/xz/xz.1:1605
+#: ../src/xz/xz.1
msgid "Memory usage:"
msgstr "Використання пам'яті:"
#. type: Plain text
-#: ../src/xz/xz.1:1542
+#: ../src/xz/xz.1
msgid "I<dict> * 7.5 (if I<dict> E<lt>= 16 MiB);"
msgstr "I<dict> * 7.5 (якщо I<dict> E<lt>= 16 МіБ);"
#. type: Plain text
-#: ../src/xz/xz.1:1547
+#: ../src/xz/xz.1
msgid "I<dict> * 5.5 + 64 MiB (if I<dict> E<gt> 16 MiB)"
msgstr "I<dict> * 5.5 + 64 МіБ (якщо I<dict> E<gt> 16 МіБ)"
#. type: TP
-#: ../src/xz/xz.1:1547
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<hc4>"
msgstr "B<hc4>"
#. type: Plain text
-#: ../src/xz/xz.1:1550
+#: ../src/xz/xz.1
msgid "Hash Chain with 2-, 3-, and 4-byte hashing"
msgstr "Ланцюжок хешів із 2-, 3- та 4-байтовим хешуванням"
#. type: Plain text
-#: ../src/xz/xz.1:1554 ../src/xz/xz.1:1603
+#: ../src/xz/xz.1
msgid "Minimum value for I<nice>: 4"
msgstr "Мінімальне значення I<пріоритетності>: 4"
#. type: Plain text
-#: ../src/xz/xz.1:1561
+#: ../src/xz/xz.1
msgid "I<dict> * 7.5 (if I<dict> E<lt>= 32 MiB);"
msgstr "I<dict> * 7.5 (якщо I<dict> E<lt>= 32 МіБ);"
#. type: Plain text
-#: ../src/xz/xz.1:1566
+#: ../src/xz/xz.1
msgid "I<dict> * 6.5 (if I<dict> E<gt> 32 MiB)"
msgstr "I<dict> * 6.5 (якщо I<dict> E<gt> 32 МіБ)"
#. type: TP
-#: ../src/xz/xz.1:1566
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<bt2>"
msgstr "B<bt2>"
#. type: Plain text
-#: ../src/xz/xz.1:1569
+#: ../src/xz/xz.1
msgid "Binary Tree with 2-byte hashing"
msgstr "Двійкове дерево із 2-байтовим хешуванням"
#. type: Plain text
-#: ../src/xz/xz.1:1573
+#: ../src/xz/xz.1
msgid "Minimum value for I<nice>: 2"
msgstr "Мінімальне значення I<пріоритетності>: 2"
#. type: Plain text
-#: ../src/xz/xz.1:1577
+#: ../src/xz/xz.1
msgid "Memory usage: I<dict> * 9.5"
msgstr "Використання пам'яті: I<dict> * 9.5"
#. type: TP
-#: ../src/xz/xz.1:1577
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<bt3>"
msgstr "B<bt3>"
#. type: Plain text
-#: ../src/xz/xz.1:1580
+#: ../src/xz/xz.1
msgid "Binary Tree with 2- and 3-byte hashing"
msgstr "Двійкове дерево із 2- і 3-байтовим хешуванням"
#. type: Plain text
-#: ../src/xz/xz.1:1591
+#: ../src/xz/xz.1
msgid "I<dict> * 11.5 (if I<dict> E<lt>= 16 MiB);"
msgstr "I<dict> * 11.5 (якщо I<dict> E<lt>= 16 МіБ);"
#. type: Plain text
-#: ../src/xz/xz.1:1596
+#: ../src/xz/xz.1
msgid "I<dict> * 9.5 + 64 MiB (if I<dict> E<gt> 16 MiB)"
msgstr "I<dict> * 9.5 + 64 МіБ (якщо I<dict> E<gt> 16 МіБ)"
#. type: TP
-#: ../src/xz/xz.1:1596
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<bt4>"
msgstr "B<bt4>"
#. type: Plain text
-#: ../src/xz/xz.1:1599
+#: ../src/xz/xz.1
msgid "Binary Tree with 2-, 3-, and 4-byte hashing"
msgstr "Двійкове дерево із 2-, 3- і 4-байтовим хешуванням"
#. type: Plain text
-#: ../src/xz/xz.1:1610
+#: ../src/xz/xz.1
msgid "I<dict> * 11.5 (if I<dict> E<lt>= 32 MiB);"
msgstr "I<dict> * 11.5 (якщо I<dict> E<lt>= 32 МіБ);"
#. type: Plain text
-#: ../src/xz/xz.1:1615
+#: ../src/xz/xz.1
msgid "I<dict> * 10.5 (if I<dict> E<gt> 32 MiB)"
msgstr "I<dict> * 10.5 (якщо I<dict> E<gt> 32 МіБ)"
#. type: TP
-#: ../src/xz/xz.1:1616
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<mode=>I<mode>"
msgstr "B<mode=>I<режим>"
#. type: Plain text
-#: ../src/xz/xz.1:1637
-msgid ""
-"Compression I<mode> specifies the method to analyze the data produced by the "
-"match finder. Supported I<modes> are B<fast> and B<normal>. The default is "
-"B<fast> for I<presets> 0\\(en3 and B<normal> for I<presets> 4\\(en9."
-msgstr ""
-"Параметр I<режиму> стискання визначає спосіб, який буде використано для "
-"аналізу даних, які створено засобом пошуку відповідників. Підтримуваними "
-"I<режимами> є B<fast> (швидкий) і B<normal> (нормальний). Типовим є режим "
-"B<fast> для I<шаблонів> 0\\(en3 і режим B<normal> для I<шаблонів> 4\\(en9."
+#: ../src/xz/xz.1
+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\\(en3 and B<normal> for I<presets> 4\\(en9."
+msgstr "Параметр I<режиму> стискання визначає спосіб, який буде використано для аналізу даних, які створено засобом пошуку відповідників. Підтримуваними I<режимами> є B<fast> (швидкий) і B<normal> (нормальний). Типовим є режим B<fast> для I<шаблонів> 0\\(en3 і режим B<normal> для I<шаблонів> 4\\(en9."
#. type: Plain text
-#: ../src/xz/xz.1:1646
-msgid ""
-"Usually B<fast> is used with Hash Chain match finders and B<normal> with "
-"Binary Tree match finders. This is also what the I<presets> do."
-msgstr ""
-"Зазвичай, із засобом пошуку відповідників на основі ланцюжка хешів "
-"використовують B<fast>, а із засобом пошуку відповідників на основі "
-"двійкового дерева використовують B<normal>. Так само налаштовано і "
-"I<шаблони>."
+#: ../src/xz/xz.1
+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 "Зазвичай, із засобом пошуку відповідників на основі ланцюжка хешів використовують B<fast>, а із засобом пошуку відповідників на основі двійкового дерева використовують B<normal>. Так само налаштовано і I<шаблони>."
#. type: TP
-#: ../src/xz/xz.1:1646
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<nice=>I<nice>"
msgstr "B<nice=>I<пріоритетність>"
#. type: Plain text
-#: ../src/xz/xz.1:1653
-msgid ""
-"Specify what is considered to be a nice length for a match. Once a match of "
-"at least I<nice> bytes is found, the algorithm stops looking for possibly "
-"better matches."
-msgstr ""
-"Вказати, яка довжина є пріоритетною для відповідності. Щойно буде виявлено "
-"відповідність у принаймні I<пріоритетність> байтів, алгоритм зупинятиме "
-"пошук можливих кращих відповідників."
+#: ../src/xz/xz.1
+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 "Вказати, яка довжина є пріоритетною для відповідності. Щойно буде виявлено відповідність у принаймні I<пріоритетність> байтів, алгоритм зупинятиме пошук можливих кращих відповідників."
#. type: Plain text
-#: ../src/xz/xz.1:1660
-msgid ""
-"I<Nice> can be 2\\(en273 bytes. Higher values tend to give better "
-"compression ratio at the expense of speed. The default depends on the "
-"I<preset>."
-msgstr ""
-"I<Пріоритетністю> може бути число до 2\\(en273 байтів. Вищі значення дають "
-"кращий коефіцієнт стискання за рахунок швидкості. Типове значення залежить "
-"від I<шаблона>."
+#: ../src/xz/xz.1
+msgid "I<Nice> can be 2\\(en273 bytes. Higher values tend to give better compression ratio at the expense of speed. The default depends on the I<preset>."
+msgstr "I<Пріоритетністю> може бути число до 2\\(en273 байтів. Вищі значення дають кращий коефіцієнт стискання за рахунок швидкості. Типове значення залежить від I<шаблона>."
#. type: TP
-#: ../src/xz/xz.1:1660
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<depth=>I<depth>"
msgstr "B<depth=>I<глибина>"
#. type: Plain text
-#: ../src/xz/xz.1:1670
-msgid ""
-"Specify the maximum search depth in the match finder. The default is the "
-"special value of 0, which makes the compressor determine a reasonable "
-"I<depth> from I<mf> and I<nice>."
-msgstr ""
-"Вказати максимальну глибину пошуку у засобі пошуку відповідності. Типовим є "
-"особливе значення 0, яке наказує засобу стискання визначити прийнятну "
-"I<глибину> на основі I<mf> і I<пріоритетності>."
+#: ../src/xz/xz.1
+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 "Вказати максимальну глибину пошуку у засобі пошуку відповідності. Типовим є особливе значення 0, яке наказує засобу стискання визначити прийнятну I<глибину> на основі I<mf> і I<пріоритетності>."
#. type: Plain text
-#: ../src/xz/xz.1:1681
-msgid ""
-"Reasonable I<depth> for Hash Chains is 4\\(en100 and 16\\(en1000 for Binary "
-"Trees. Using very high values for I<depth> can make the encoder extremely "
-"slow with some files. Avoid setting the I<depth> over 1000 unless you are "
-"prepared to interrupt the compression in case it is taking far too long."
-msgstr ""
-"Прийнятним значенням I<глибини> для ланцюжків хешів є 4\\(en100 і "
-"16\\(en1000 для двійкових дерев. Використання дуже високих значень для "
-"I<глибини> може зробити кодувальник дуже повільним для деяких файлів. Не "
-"встановлюйте значення I<глибини>, що перевищує 1000, якщо ви не готові "
-"перервати стискання, якщо воно триватиме надто довго."
+#: ../src/xz/xz.1
+msgid "Reasonable I<depth> for Hash Chains is 4\\(en100 and 16\\(en1000 for Binary Trees. Using very high values for I<depth> can make the encoder extremely slow with some files. Avoid setting the I<depth> over 1000 unless you are prepared to interrupt the compression in case it is taking far too long."
+msgstr "Прийнятним значенням I<глибини> для ланцюжків хешів є 4\\(en100 і 16\\(en1000 для двійкових дерев. Використання дуже високих значень для I<глибини> може зробити кодувальник дуже повільним для деяких файлів. Не встановлюйте значення I<глибини>, що перевищує 1000, якщо ви не готові перервати стискання, якщо воно триватиме надто довго."
#. type: Plain text
-#: ../src/xz/xz.1:1692
-msgid ""
-"When decoding raw streams (B<--format=raw>), LZMA2 needs only the dictionary "
-"I<size>. LZMA1 needs also I<lc>, I<lp>, and I<pb>."
-msgstr ""
-"При декодуванні необроблених потоків даних (B<--format=raw>), LZMA2 потребує "
-"лише I<розміру> словника. LZMA1 потребує також I<lc>, I<lp> і I<pb>."
+#: ../src/xz/xz.1
+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 "При декодуванні необроблених потоків даних (B<--format=raw>), LZMA2 потребує лише I<розміру> словника. LZMA1 потребує також I<lc>, I<lp> і I<pb>."
#. type: TP
-#: ../src/xz/xz.1:1692
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--x86>[B<=>I<options>]"
msgstr "B<--x86>[B<=>I<параметри>]"
#. type: TP
-#: ../src/xz/xz.1:1695
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--arm>[B<=>I<options>]"
msgstr "B<--arm>[B<=>I<параметри>]"
#. type: TP
-#: ../src/xz/xz.1:1697
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--armthumb>[B<=>I<options>]"
msgstr "B<--armthumb>[B<=>I<параметри>]"
#. type: TP
-#: ../src/xz/xz.1:1699
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--arm64>[B<=>I<options>]"
msgstr "B<--arm64>[B<=>I<параметри>]"
#. type: TP
-#: ../src/xz/xz.1:1701
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--powerpc>[B<=>I<options>]"
msgstr "B<--powerpc>[B<=>I<параметри>]"
#. type: TP
-#: ../src/xz/xz.1:1703
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--ia64>[B<=>I<options>]"
msgstr "B<--ia64>[B<=>I<параметри>]"
#. type: TP
-#: ../src/xz/xz.1:1705
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--sparc>[B<=>I<options>]"
msgstr "B<--sparc>[B<=>I<параметри>]"
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "B<--riscv>[B<=>I<options>]"
+msgstr "B<--riscv>[B<=>I<параметри>]"
+
#. type: Plain text
-#: ../src/xz/xz.1:1711
-msgid ""
-"Add a branch/call/jump (BCJ) filter to the filter chain. These filters can "
-"be used only as a non-last filter in the filter chain."
-msgstr ""
-"Додати фільтр гілок/викликів/переходів (branch/call/jump або BCJ) до "
-"ланцюжка фільтрів. Цими фільтрами можна скористатися, лише якщо вони не є "
-"останнім фільтром у ланцюжку фільтрів."
+#: ../src/xz/xz.1
+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 "Додати фільтр гілок/викликів/переходів (branch/call/jump або BCJ) до ланцюжка фільтрів. Цими фільтрами можна скористатися, лише якщо вони не є останнім фільтром у ланцюжку фільтрів."
#. type: Plain text
-#: ../src/xz/xz.1:1725
-msgid ""
-"A BCJ filter converts relative addresses in the machine code to their "
-"absolute counterparts. This doesn't change the size of the data but it "
-"increases redundancy, which can help LZMA2 to produce 0\\(en15\\ % smaller "
-"B<.xz> file. The BCJ filters are always reversible, so using a BCJ filter "
-"for wrong type of data doesn't cause any data loss, although it may make the "
-"compression ratio slightly worse. The BCJ filters are very fast and use an "
-"insignificant amount of memory."
-msgstr ""
-"Фільтр BCJ перетворює відносні адреси у машинному коді на їхні абсолютні "
-"відповідники. Це не змінює розміру даних, але підвищує резервування, що може "
-"допомогти LZMA2 створити файл B<.xz> на 0\\(en15\\ % менше. Фільтри BCJ "
-"завжди є придатними до обернення, тому використання фільтра BCJ до "
-"помилкового типу даних не спричинятиме втрати даних, хоча може дещо "
-"погіршити коефіцієнт стискання. Фільтри BCJ є дуже швидкими і такими, що "
-"використовують незначний об'єм пам'яті."
+#: ../src/xz/xz.1
+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\\(en15\\ % smaller B<.xz> file. The BCJ filters are always reversible, so using a BCJ filter for wrong type of data doesn't cause any data loss, although it may make the compression ratio slightly worse. The BCJ filters are very fast and use an insignificant amount of memory."
+msgstr "Фільтр BCJ перетворює відносні адреси у машинному коді на їхні абсолютні відповідники. Це не змінює розміру даних, але підвищує резервування, що може допомогти LZMA2 створити файл B<.xz> на 0\\(en15\\ % менше. Фільтри BCJ завжди є придатними до обернення, тому використання фільтра BCJ до помилкового типу даних не спричинятиме втрати даних, хоча може дещо погіршити коефіцієнт стискання. Фільтри BCJ є дуже швидкими і такими, що використовують незначний об'єм пам'яті."
#. type: Plain text
-#: ../src/xz/xz.1:1728
+#: ../src/xz/xz.1
msgid "These BCJ filters have known problems related to the compression ratio:"
-msgstr ""
-"Ці фільтри BCJ мають відомі проблеми, які пов'язано із рівнем стискання:"
+msgstr "Ці фільтри BCJ мають відомі проблеми, які пов'язано із рівнем стискання:"
#. type: Plain text
-#: ../src/xz/xz.1:1735
-msgid ""
-"Some types of files containing executable code (for example, object files, "
-"static libraries, and Linux kernel modules) have the addresses in the "
-"instructions filled with filler values. These BCJ filters will still do the "
-"address conversion, which will make the compression worse with these files."
-msgstr ""
-"У деяких типах файлів, де зберігається виконуваний код, (наприклад, в "
-"об'єктних файлах, статичних бібліотеках та модулях ядра Linux) адреси в "
-"інструкціях заповнено значеннями заповнювача. Ці фільтри BCJ виконуватимуть "
-"перетворення адрес, яке зробить стискання для цих файлів гіршим."
+#: ../src/xz/xz.1
+msgid "Some types of files containing executable code (for example, object files, static libraries, and Linux kernel modules) have the addresses in the instructions filled with filler values. These BCJ filters will still do the address conversion, which will make the compression worse with these files."
+msgstr "У деяких типах файлів, де зберігається виконуваний код, (наприклад, в об'єктних файлах, статичних бібліотеках та модулях ядра Linux) адреси в інструкціях заповнено значеннями заповнювача. Ці фільтри BCJ виконуватимуть перетворення адрес, яке зробить стискання для цих файлів гіршим."
#. type: Plain text
-#: ../src/xz/xz.1:1745
-msgid ""
-"If a BCJ filter is applied on an archive, it is possible that it makes the "
-"compression ratio worse than not using a BCJ filter. For example, if there "
-"are similar or even identical executables then filtering will likely make "
-"the files less similar and thus compression is worse. The contents of non-"
-"executable files in the same archive can matter too. In practice one has to "
-"try with and without a BCJ filter to see which is better in each situation."
-msgstr ""
-"Якщо фільтр BCJ застосовано до архіву, може так статися, що він погіршить "
-"коефіцієнт стискання порівняно із варіантом без фільтра BCJ. Наприклад, якщо "
-"є подібні або навіть однакові виконувані файли, фільтрування, ймовірно, "
-"зробить ці файли менш подібними, а отже, зробить стискання гіршим. Вміст "
-"файлів, які не є виконуваними, у тому самому архіві також може вплинути на "
-"результат. На практиці, варто спробувати варіанти з фільтром BCJ і без "
-"нього, щоб визначитися із тим, що буде кращим у кожній ситуації."
+#: ../src/xz/xz.1
+msgid "If a BCJ filter is applied on an archive, it is possible that it makes the compression ratio worse than not using a BCJ filter. For example, if there are similar or even identical executables then filtering will likely make the files less similar and thus compression is worse. The contents of non-executable files in the same archive can matter too. In practice one has to try with and without a BCJ filter to see which is better in each situation."
+msgstr "Якщо фільтр BCJ застосовано до архіву, може так статися, що він погіршить коефіцієнт стискання порівняно із варіантом без фільтра BCJ. Наприклад, якщо є подібні або навіть однакові виконувані файли, фільтрування, ймовірно, зробить ці файли менш подібними, а отже, зробить стискання гіршим. Вміст файлів, які не є виконуваними, у тому самому архіві також може вплинути на результат. На практиці, варто спробувати варіанти з фільтром BCJ і без нього, щоб визначитися із тим, що буде кращим у кожній ситуації."
#. type: Plain text
-#: ../src/xz/xz.1:1750
-msgid ""
-"Different instruction sets have different alignment: the executable file "
-"must be aligned to a multiple of this value in the input data to make the "
-"filter work."
-msgstr ""
-"Різні набори інструкцій мають різне вирівнювання: виконуваний файл має бути "
-"вирівняно на кратне до цього значення у вхідних даних, щоб фільтр спрацював."
+#: ../src/xz/xz.1
+msgid "Different instruction sets have different alignment: the executable file must be aligned to a multiple of this value in the input data to make the filter work."
+msgstr "Різні набори інструкцій мають різне вирівнювання: виконуваний файл має бути вирівняно на кратне до цього значення у вхідних даних, щоб фільтр спрацював."
#. type: tbl table
-#: ../src/xz/xz.1:1757
+#: ../src/xz/xz.1
#, no-wrap
msgid "Filter"
msgstr "Фільтр"
#. type: tbl table
-#: ../src/xz/xz.1:1757
+#: ../src/xz/xz.1
#, no-wrap
msgid "Alignment"
msgstr "Вирівнювання"
#. type: tbl table
-#: ../src/xz/xz.1:1757
+#: ../src/xz/xz.1
#, no-wrap
msgid "Notes"
msgstr "Нотатки"
#. type: tbl table
-#: ../src/xz/xz.1:1758
+#: ../src/xz/xz.1
#, no-wrap
msgid "x86"
msgstr "x86"
#. type: tbl table
-#: ../src/xz/xz.1:1758
+#: ../src/xz/xz.1
#, no-wrap
msgid "32-bit or 64-bit x86"
msgstr "32-бітова або 64-бітова x86"
#. type: tbl table
-#: ../src/xz/xz.1:1759
+#: ../src/xz/xz.1
#, no-wrap
msgid "ARM"
msgstr "ARM"
#. type: tbl table
-#: ../src/xz/xz.1:1760
+#: ../src/xz/xz.1
#, no-wrap
msgid "ARM-Thumb"
msgstr "ARM-Thumb"
#. type: tbl table
-#: ../src/xz/xz.1:1761
+#: ../src/xz/xz.1
#, no-wrap
msgid "ARM64"
msgstr "ARM64"
#. type: tbl table
-#: ../src/xz/xz.1:1761
+#: ../src/xz/xz.1
#, no-wrap
msgid "4096-byte alignment is best"
msgstr ""
@@ -3073,1757 +1926,1310 @@ msgstr ""
";;4096 байтами"
#. type: tbl table
-#: ../src/xz/xz.1:1762
+#: ../src/xz/xz.1
#, no-wrap
msgid "PowerPC"
msgstr "PowerPC"
#. type: tbl table
-#: ../src/xz/xz.1:1762
+#: ../src/xz/xz.1
#, no-wrap
msgid "Big endian only"
msgstr "Лише зворотний порядок байтів"
#. type: tbl table
-#: ../src/xz/xz.1:1763
+#: ../src/xz/xz.1
#, no-wrap
msgid "IA-64"
msgstr "IA-64"
#. type: tbl table
-#: ../src/xz/xz.1:1763
+#: ../src/xz/xz.1
#, no-wrap
msgid "16"
msgstr "16"
#. type: tbl table
-#: ../src/xz/xz.1:1763
+#: ../src/xz/xz.1
#, no-wrap
msgid "Itanium"
msgstr "Itanium"
#. type: tbl table
-#: ../src/xz/xz.1:1764
+#: ../src/xz/xz.1
#, no-wrap
msgid "SPARC"
msgstr "SPARC"
+#. type: tbl table
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "RISC-V"
+msgstr "RISC-V"
+
#. type: Plain text
-#: ../src/xz/xz.1:1781
-msgid ""
-"Since the BCJ-filtered data is usually compressed with LZMA2, the "
-"compression ratio may be improved slightly if the LZMA2 options are set to "
-"match the alignment of the selected BCJ filter. For example, with the IA-64 "
-"filter, it's good to set B<pb=4> or even B<pb=4,lp=4,lc=0> with LZMA2 "
-"(2^4=16). The x86 filter is an exception; it's usually good to stick to "
-"LZMA2's default four-byte alignment when compressing x86 executables."
-msgstr ""
-"Оскільки фільтровані BCJ дані, зазвичай, стискають за допомогою LZMA2, "
-"коефіцієнт стискання можна трохи поліпшити, якщо параметри LZMA2 буде "
-"встановлено так, щоб вони відповідали вирівнюванню вибраного фільтра BCJ. "
-"Наприклад, з фільтром IA-64 варто встановити B<pb=4> або навіть B<pb=4,lp=4,"
-"lc=0> з LZMA2 (2^4=16). Фільтр x86 є винятком; його, зазвичай, варто "
-"поєднувати із типовим чотирибайтовим вирівнюванням LZMA2 при стисканні "
-"виконуваних файлів x86."
+#: ../src/xz/xz.1
+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. Examples:"
+msgstr "Оскільки фільтровані BCJ дані, зазвичай, стискають за допомогою LZMA2, коефіцієнт стискання можна трохи поліпшити, якщо параметри LZMA2 буде встановлено так, щоб вони відповідали вирівнюванню вибраного фільтра BCJ. Приклади:"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "IA-64 filter has 16-byte alignment so B<pb=4,lp=4,lc=0> is good with LZMA2 (2^4=16)."
+msgstr "Фільтр IA-64 має 16-байтове вирівнювання, отже B<pb=4,lp=4,lc=0> дасть добрі результати у поєднанні із LZMA2 (2^4=16)."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "RISC-V code has 2-byte or 4-byte alignment depending on whether the file contains 16-bit compressed instructions (the C extension). When 16-bit instructions are used, B<pb=2,lp=1,lc=3> or B<pb=1,lp=1,lc=3> is good. When 16-bit instructions aren't present, B<pb=2,lp=2,lc=2> is the best. B<readelf -h> can be used to check if \"RVC\" appears on the \"Flags\" line."
+msgstr "Код RISC-V має 2-байтове або 4-байтове вирівнювання залежно від того, чи містить файл 16-бітові стислі інструкції (розширення C). Якщо використано 16-бітові інструкції, добрі результати дасть B<pb=2,lp=1,lc=3> або B<pb=1,lp=1,lc=3>. Якщо 16-бітових інструкцій немає, найкращим варіантом є B<pb=2,lp=2,lc=2>. Можна скористатися B<readelf -h>, щоб перевірити, чи є \"RVC\" у рядку \"Flags\"."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "ARM64 is always 4-byte aligned so B<pb=2,lp=2,lc=2> is the best."
+msgstr "ARM64 завжди вирівняно на 4 байти, тому найкращим варіантом буде B<pb=2,lp=2,lc=2>."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The x86 filter is an exception. It's usually good to stick to LZMA2's defaults (B<pb=2,lp=0,lc=3>) when compressing x86 executables."
+msgstr "Фільтр x86 є виключенням. Зазвичай, добрі результати дають типові для LZMA2 значення (B<pb=2,lp=0,lc=3>), якщо стискають виконувані файли x86."
#. type: Plain text
-#: ../src/xz/xz.1:1784
+#: ../src/xz/xz.1
msgid "All BCJ filters support the same I<options>:"
msgstr "У всіх фільтрах BCJ передбачено підтримку тих самих I<параметрів>:"
#. type: TP
-#: ../src/xz/xz.1:1785
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<start=>I<offset>"
msgstr "B<start=>I<зсув>"
#. type: Plain text
-#: ../src/xz/xz.1:1799
-msgid ""
-"Specify the start I<offset> that is used when converting between relative "
-"and absolute addresses. The I<offset> must be a multiple of the alignment "
-"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 ""
-"Встановити початковий I<зсув>, який буде використано при перетворенні між "
-"відносною та абсолютною адресами. Значення I<зсув> має бути кратним до "
-"вирівнювання фільтра (див. таблицю вище). Типовим зсувом є нульовий. На "
-"практиці, типове значення є прийнятним; визначення нетипового значення "
-"I<зсув> майже завжди нічого корисного не дає."
+#: ../src/xz/xz.1
+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 "Встановити початковий I<зсув>, який буде використано при перетворенні між відносною та абсолютною адресами. Значення I<зсув> має бути кратним до вирівнювання фільтра (див. таблицю вище). Типовим зсувом є нульовий. На практиці, типове значення є прийнятним; визначення нетипового значення I<зсув> майже завжди нічого корисного не дає."
#. type: TP
-#: ../src/xz/xz.1:1800
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--delta>[B<=>I<options>]"
msgstr "B<--delta>[B<=>I<параметри>]"
#. type: Plain text
-#: ../src/xz/xz.1:1805
-msgid ""
-"Add the Delta filter to the filter chain. The Delta filter can be only used "
-"as a non-last filter in the filter chain."
-msgstr ""
-"Додати дельта-фільтр до ланцюжка фільтрів. Дельта-фільтр може бути "
-"використано, лише якщо він не є останнім у ланцюжку фільтрів."
+#: ../src/xz/xz.1
+msgid "Add the Delta filter to the filter chain. The Delta filter can be only used as a non-last filter in the filter chain."
+msgstr "Додати дельта-фільтр до ланцюжка фільтрів. Дельта-фільтр може бути використано, лише якщо він не є останнім у ланцюжку фільтрів."
#. type: Plain text
-#: ../src/xz/xz.1:1814
-msgid ""
-"Currently only simple byte-wise delta calculation is supported. It can be "
-"useful when compressing, for example, uncompressed bitmap images or "
-"uncompressed PCM audio. However, special purpose algorithms may give "
-"significantly better results than Delta + LZMA2. This is true especially "
-"with audio, which compresses faster and better, for example, with B<flac>(1)."
-msgstr ""
-"У поточній версії передбачено підтримку обчислення лише простої побітової "
-"дельти. Це може бути корисним при стисканні, наприклад, нестиснутих "
-"растрових зображень або нестиснутих звукових даних PCM. Втім, спеціалізовані "
-"алгоритми можуть давати значно кращі результати за дельту + LZMA2. Це "
-"правило особливо стосується звукових даних, які стискає швидше і краще, "
-"наприклад, B<flac>(1)."
+#: ../src/xz/xz.1
+msgid "Currently only simple byte-wise delta calculation is supported. It can be useful when compressing, for example, uncompressed bitmap images or uncompressed PCM audio. However, special purpose algorithms may give significantly better results than Delta + LZMA2. This is true especially with audio, which compresses faster and better, for example, with B<flac>(1)."
+msgstr "У поточній версії передбачено підтримку обчислення лише простої побітової дельти. Це може бути корисним при стисканні, наприклад, нестиснутих растрових зображень або нестиснутих звукових даних PCM. Втім, спеціалізовані алгоритми можуть давати значно кращі результати за дельту + LZMA2. Це правило особливо стосується звукових даних, які стискає швидше і краще, наприклад, B<flac>(1)."
#. type: Plain text
-#: ../src/xz/xz.1:1817
+#: ../src/xz/xz.1
msgid "Supported I<options>:"
msgstr "Підтримувані I<параметри>:"
#. type: TP
-#: ../src/xz/xz.1:1818
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<dist=>I<distance>"
msgstr "B<dist=>I<відстань>"
#. type: Plain text
-#: ../src/xz/xz.1:1826
-msgid ""
-"Specify the I<distance> of the delta calculation in bytes. I<distance> must "
-"be 1\\(en256. The default is 1."
-msgstr ""
-"Вказати I<відстань> обчислень різниці у байтах. Значення I<відстань> має "
-"потрапляти у діапазон 1\\(en256. Типовим значенням є 1."
+#: ../src/xz/xz.1
+msgid "Specify the I<distance> of the delta calculation in bytes. I<distance> must be 1\\(en256. The default is 1."
+msgstr "Вказати I<відстань> обчислень різниці у байтах. Значення I<відстань> має потрапляти у діапазон 1\\(en256. Типовим значенням є 1."
#. type: Plain text
-#: ../src/xz/xz.1:1831
-msgid ""
-"For example, with B<dist=2> and eight-byte input A1 B1 A2 B3 A3 B5 A4 B7, "
-"the output will be A1 B1 01 02 01 02 01 02."
-msgstr ""
-"Наприклад, з B<dist=2> та восьмибайтовими вхідними даними A1 B1 A2 B3 A3 B5 "
-"A4 B7, результатом буде A1 B1 01 02 01 02 01 02."
+#: ../src/xz/xz.1
+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 "Наприклад, з B<dist=2> та восьмибайтовими вхідними даними A1 B1 A2 B3 A3 B5 A4 B7, результатом буде A1 B1 01 02 01 02 01 02."
#. type: SS
-#: ../src/xz/xz.1:1833
+#: ../src/xz/xz.1
#, no-wrap
msgid "Other options"
msgstr "Інші параметри"
#. type: TP
-#: ../src/xz/xz.1:1834 ../src/xzdec/xzdec.1:83
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-q>, B<--quiet>"
msgstr "B<-q>, B<--quiet>"
#. type: Plain text
-#: ../src/xz/xz.1:1841
-msgid ""
-"Suppress warnings and notices. Specify this twice to suppress errors too. "
-"This option has no effect on the exit status. That is, even if a warning "
-"was suppressed, the exit status to indicate a warning is still used."
-msgstr ""
-"Придушити попередження та сповіщення. Вкажіть цей параметр двічі, щоб "
-"придушити також повідомлення про помилки. Цей параметр не впливає на стан "
-"виходу з програми. Тобто, навіть якщо було придушено попередження, стан "
-"виходу вказуватиме на те, що попередження були."
+#: ../src/xz/xz.1
+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 "Придушити попередження та сповіщення. Вкажіть цей параметр двічі, щоб придушити також повідомлення про помилки. Цей параметр не впливає на стан виходу з програми. Тобто, навіть якщо було придушено попередження, стан виходу вказуватиме на те, що попередження були."
#. type: TP
-#: ../src/xz/xz.1:1841
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-v>, B<--verbose>"
msgstr "B<-v>, B<--verbose>"
#. type: Plain text
-#: ../src/xz/xz.1:1850
-msgid ""
-"Be verbose. If standard error is connected to a terminal, B<xz> will "
-"display a progress indicator. Specifying B<--verbose> twice will give even "
-"more verbose output."
-msgstr ""
-"Докладний режим повідомлень. Якщо стандартне виведення помилок з'єднано із "
-"терміналом, B<xz> показуватиме індикатор поступу. Використання B<--verbose> "
-"двічі призведе до ще докладнішого виведення."
+#: ../src/xz/xz.1
+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 "Докладний режим повідомлень. Якщо стандартне виведення помилок з'єднано із терміналом, B<xz> показуватиме індикатор поступу. Використання B<--verbose> двічі призведе до ще докладнішого виведення."
#. type: Plain text
-#: ../src/xz/xz.1:1852
+#: ../src/xz/xz.1
msgid "The progress indicator shows the following information:"
msgstr "Індикатор поступу показує такі дані:"
#. type: Plain text
-#: ../src/xz/xz.1:1857
-msgid ""
-"Completion percentage is shown if the size of the input file is known. That "
-"is, the percentage cannot be shown in pipes."
-msgstr ""
-"Частку завершеності буде показано, якщо відомий розмір файла вхідних даних. "
-"Тобто, для каналів даних частку не може бути показано."
+#: ../src/xz/xz.1
+msgid "Completion percentage is shown if the size of the input file is known. That is, the percentage cannot be shown in pipes."
+msgstr "Частку завершеності буде показано, якщо відомий розмір файла вхідних даних. Тобто, для каналів даних частку не може бути показано."
#. type: Plain text
-#: ../src/xz/xz.1:1860
-msgid ""
-"Amount of compressed data produced (compressing) or consumed "
-"(decompressing)."
-msgstr ""
-"Об'єм стиснених виведених даних (стискання) або оброблених (розпаковування)."
+#: ../src/xz/xz.1
+msgid "Amount of compressed data produced (compressing) or consumed (decompressing)."
+msgstr "Об'єм стиснених виведених даних (стискання) або оброблених (розпаковування)."
#. type: Plain text
-#: ../src/xz/xz.1:1863
-msgid ""
-"Amount of uncompressed data consumed (compressing) or produced "
-"(decompressing)."
-msgstr ""
-"Об'єм незапакованих даних (стискання) або виведених даних (розпаковування)."
+#: ../src/xz/xz.1
+msgid "Amount of uncompressed data consumed (compressing) or produced (decompressing)."
+msgstr "Об'єм незапакованих даних (стискання) або виведених даних (розпаковування)."
#. type: Plain text
-#: ../src/xz/xz.1:1867
-msgid ""
-"Compression ratio, which is calculated by dividing the amount of compressed "
-"data processed so far by the amount of uncompressed data processed so far."
-msgstr ""
-"Коефіцієнт стискання, який обчислено діленням об'єму оброблених стиснутих "
-"даних на об'єм оброблених нестиснутих даних."
+#: ../src/xz/xz.1
+msgid "Compression ratio, which is calculated by dividing the amount of compressed data processed so far by the amount of uncompressed data processed so far."
+msgstr "Коефіцієнт стискання, який обчислено діленням об'єму оброблених стиснутих даних на об'єм оброблених нестиснутих даних."
#. type: Plain text
-#: ../src/xz/xz.1:1874
-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 ""
-"Швидкість стискання або розпаковування. Обчислюється як об'єм нестиснутих "
-"даних (стискання) або виведених даних (розпаковування) за секунду. Його буде "
-"показано за декілька секунд з моменту, коли B<xz> почала обробляти файл."
+#: ../src/xz/xz.1
+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 "Швидкість стискання або розпаковування. Обчислюється як об'єм нестиснутих даних (стискання) або виведених даних (розпаковування) за секунду. Його буде показано за декілька секунд з моменту, коли B<xz> почала обробляти файл."
#. type: Plain text
-#: ../src/xz/xz.1:1876
+#: ../src/xz/xz.1
msgid "Elapsed time in the format M:SS or H:MM:SS."
msgstr "Витрачений час у форматі Х:СС або Г:ХХ:СС."
#. type: Plain text
-#: ../src/xz/xz.1:1884
-msgid ""
-"Estimated remaining time is shown only when the size of the input file is "
-"known and a couple of seconds have already passed since B<xz> started "
-"processing the file. The time is shown in a less precise format which never "
-"has any colons, for example, 2 min 30 s."
-msgstr ""
-"Оцінку часу, що лишився, буде показано, лише якщо розмір файла вхідних даних "
-"є відомим, і минуло принаймні декілька секунд з моменту, коли B<xz> почала "
-"обробляти файл. Час буде показано у менш точному форматі, без двокрапок, "
-"наприклад, 2 хв. 30 с."
+#: ../src/xz/xz.1
+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, for example, 2 min 30 s."
+msgstr "Оцінку часу, що лишився, буде показано, лише якщо розмір файла вхідних даних є відомим, і минуло принаймні декілька секунд з моменту, коли B<xz> почала обробляти файл. Час буде показано у менш точному форматі, без двокрапок, наприклад, 2 хв. 30 с."
#. type: Plain text
-#: ../src/xz/xz.1:1899
-msgid ""
-"When standard error is not a terminal, B<--verbose> will make B<xz> print "
-"the filename, compressed size, uncompressed size, compression ratio, and "
-"possibly also the speed and elapsed time on a single line to standard error "
-"after compressing or decompressing the file. The speed and elapsed time are "
-"included only when the operation took at least a few seconds. If the "
-"operation didn't finish, for example, due to user interruption, also the "
-"completion percentage is printed if the size of the input file is known."
-msgstr ""
-"Якщо стандартним виведенням помилок не є термінал, B<--verbose> призведе до "
-"того, що B<xz> виведе назву файла, стиснений розмір, нестиснений розмір, "
-"коефіцієнт стискання та, можливо, також швидкість та витрачений час у одному "
-"рядку до стандартного виведення помилок після стискання або розпаковування "
-"файла. Швидкість та витрачений час буде включено, лише якщо дія триває "
-"принаймні декілька секунд. Якщо дію не буде завершено, наприклад, через "
-"втручання користувача, буде також виведено частку виконання, якщо відомий "
-"розмір файла вхідних даних."
+#: ../src/xz/xz.1
+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, for example, due to user interruption, also the completion percentage is printed if the size of the input file is known."
+msgstr "Якщо стандартним виведенням помилок не є термінал, B<--verbose> призведе до того, що B<xz> виведе назву файла, стиснений розмір, нестиснений розмір, коефіцієнт стискання та, можливо, також швидкість та витрачений час у одному рядку до стандартного виведення помилок після стискання або розпаковування файла. Швидкість та витрачений час буде включено, лише якщо дія триває принаймні декілька секунд. Якщо дію не буде завершено, наприклад, через втручання користувача, буде також виведено частку виконання, якщо відомий розмір файла вхідних даних."
#. type: TP
-#: ../src/xz/xz.1:1899 ../src/xzdec/xzdec.1:89
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-Q>, B<--no-warn>"
msgstr "B<-Q>, B<--no-warn>"
#. type: Plain text
-#: ../src/xz/xz.1:1909
-msgid ""
-"Don't set the exit status to 2 even if a condition worth a warning was "
-"detected. This option doesn't affect the verbosity level, thus both B<--"
-"quiet> and B<--no-warn> have to be used to not display warnings and to not "
-"alter the exit status."
-msgstr ""
-"Не встановлювати стан виходу 2, навіть якщо було виявлено відповідність "
-"умові, яка варта попередження. Цей параметр не впливає на рівень докладності "
-"повідомлень, отже, слід використати B<--quiet> і B<--no-warn>, щоб програма "
-"не показувала попереджень і не змінювала стан виходу."
+#: ../src/xz/xz.1
+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 "Не встановлювати стан виходу 2, навіть якщо було виявлено відповідність умові, яка варта попередження. Цей параметр не впливає на рівень докладності повідомлень, отже, слід використати B<--quiet> і B<--no-warn>, щоб програма не показувала попереджень і не змінювала стан виходу."
#. type: TP
-#: ../src/xz/xz.1:1909
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--robot>"
msgstr "B<--robot>"
#. type: Plain text
-#: ../src/xz/xz.1:1921
-msgid ""
-"Print messages in a machine-parsable format. This is intended to ease "
-"writing frontends that want to use B<xz> instead of liblzma, which may be "
-"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 ""
-"Виводити повідомлення у придатному для обробки комп'ютером форматі. Цей "
-"формат призначено для полегшення написання оболонок, які використовуватимуть "
-"B<xz> замість liblzma, що може бути зручним для різноманітних скриптів. "
-"Виведені дані з цим параметром має бути стабільним для усіх випусків B<xz>. "
-"Докладніший опис можна знайти у розділі B<РЕЖИМ РОБОТА>."
+#: ../src/xz/xz.1
+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 "Виводити повідомлення у придатному для обробки комп'ютером форматі. Цей формат призначено для полегшення написання оболонок, які використовуватимуть B<xz> замість liblzma, що може бути зручним для різноманітних скриптів. Виведені дані з цим параметром має бути стабільним для усіх випусків B<xz>. Докладніший опис можна знайти у розділі B<РЕЖИМ РОБОТА>."
#. type: TP
-#: ../src/xz/xz.1:1921
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--info-memory>"
msgstr "B<--info-memory>"
#. type: Plain text
-#: ../src/xz/xz.1:1928
-msgid ""
-"Display, in human-readable format, how much physical memory (RAM) and how "
-"many processor threads B<xz> thinks the system has and the memory usage "
-"limits for compression and decompression, and exit successfully."
-msgstr ""
-"Вивести у придатному для читання людиною форматі, скільки фізичної пам'яті "
-"(RAM) та скільки потоків процесора є за даними B<xz> у системі, обмеження "
-"для стискання та розпаковування, а потім успішно завершити роботу."
+#: ../src/xz/xz.1
+msgid "Display, in human-readable format, how much physical memory (RAM) and how many processor threads B<xz> thinks the system has and the memory usage limits for compression and decompression, and exit successfully."
+msgstr "Вивести у придатному для читання людиною форматі, скільки фізичної пам'яті (RAM) та скільки потоків процесора є за даними B<xz> у системі, обмеження для стискання та розпаковування, а потім успішно завершити роботу."
#. type: TP
-#: ../src/xz/xz.1:1928 ../src/xzdec/xzdec.1:96
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-h>, B<--help>"
msgstr "B<-h>, B<--help>"
#. type: Plain text
-#: ../src/xz/xz.1:1932
-msgid ""
-"Display a help message describing the most commonly used options, and exit "
-"successfully."
-msgstr ""
-"Вивести повідомлення про помилку з описом найбільш типових використаних "
-"параметрів і успішно завершити роботу."
+#: ../src/xz/xz.1
+msgid "Display a help message describing the most commonly used options, and exit successfully."
+msgstr "Вивести повідомлення про помилку з описом найбільш типових використаних параметрів і успішно завершити роботу."
#. type: TP
-#: ../src/xz/xz.1:1932
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-H>, B<--long-help>"
msgstr "B<-H>, B<--long-help>"
#. type: Plain text
-#: ../src/xz/xz.1:1937
-msgid ""
-"Display a help message describing all features of B<xz>, and exit "
-"successfully"
-msgstr ""
-"Вивести довідкове повідомлення з описом усіх можливостей B<xz> і успішно "
-"завершити роботу"
+#: ../src/xz/xz.1
+msgid "Display a help message describing all features of B<xz>, and exit successfully"
+msgstr "Вивести довідкове повідомлення з описом усіх можливостей B<xz> і успішно завершити роботу"
#. type: TP
-#: ../src/xz/xz.1:1937 ../src/xzdec/xzdec.1:99
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-V>, B<--version>"
msgstr "B<-V>, B<--version>"
#. type: Plain text
-#: ../src/xz/xz.1:1946
-msgid ""
-"Display the version number of B<xz> and liblzma in human readable format. "
-"To get machine-parsable output, specify B<--robot> before B<--version>."
-msgstr ""
-"Вивести номер версії B<xz> та liblzma у зручному для читання форматі. Щоб "
-"отримати дані, зручні для обробки на комп'ютері, вкажіть B<--robot> до B<--"
-"version>."
+#: ../src/xz/xz.1
+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 "Вивести номер версії B<xz> та liblzma у зручному для читання форматі. Щоб отримати дані, зручні для обробки на комп'ютері, вкажіть B<--robot> до B<--version>."
#. type: SH
-#: ../src/xz/xz.1:1947
+#: ../src/xz/xz.1
#, no-wrap
msgid "ROBOT MODE"
msgstr "РЕЖИМ РОБОТА"
#. type: Plain text
-#: ../src/xz/xz.1:1963
-msgid ""
-"The robot mode is activated with the B<--robot> option. It makes the output "
-"of B<xz> easier to parse by other programs. Currently B<--robot> is "
-"supported only together with B<--version>, B<--info-memory>, and B<--list>. "
-"It will be supported for compression and decompression in the future."
-msgstr ""
-"Режим робота активують за допомогою параметра B<--robot>. Він спрощує "
-"обробку виведених B<xz> даних іншими програмами. У поточній версії підтримку "
-"B<--robot> передбачено лише разом із B<--version>, B<--info-memory> та B<--"
-"list>. У майбутньому підтримку параметра буде передбачено для стискання та "
-"розпаковування."
-
-#. type: SS
-#: ../src/xz/xz.1:1964
-#, no-wrap
-msgid "Version"
-msgstr "Версія"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1969
-msgid ""
-"B<xz --robot --version> prints the version number of B<xz> and liblzma in "
-"the following format:"
-msgstr ""
-"B<xz --robot --version> виведе назву версії B<xz> і liblzma у такому форматі:"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1971
-msgid "B<XZ_VERSION=>I<XYYYZZZS>"
-msgstr "B<XZ_VERSION=>I<XYYYZZZS>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1973
-msgid "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
-msgstr "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
-
-#. type: TP
-#: ../src/xz/xz.1:1973
-#, no-wrap
-msgid "I<X>"
-msgstr "I<X>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1976
-msgid "Major version."
-msgstr "Основна версія."
-
-#. type: TP
-#: ../src/xz/xz.1:1976
-#, no-wrap
-msgid "I<YYY>"
-msgstr "I<YYY>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1981
-msgid ""
-"Minor version. Even numbers are stable. Odd numbers are alpha or beta "
-"versions."
-msgstr ""
-"Проміжна версія. Непарні номери буде використано для стабільних версій. "
-"Непарні номери є номерами тестових версій."
-
-#. type: TP
-#: ../src/xz/xz.1:1981
-#, no-wrap
-msgid "I<ZZZ>"
-msgstr "I<ZZZ>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1985
-msgid ""
-"Patch level for stable releases or just a counter for development releases."
-msgstr ""
-"Рівень латання для стабільних випусків або просто лічильник для випусків, "
-"які перебувають у розробці."
-
-#. type: TP
-#: ../src/xz/xz.1:1985
-#, no-wrap
-msgid "I<S>"
-msgstr "I<S>"
-
-#. type: Plain text
-#: ../src/xz/xz.1:1993
-msgid ""
-"Stability. 0 is alpha, 1 is beta, and 2 is stable. I<S> should be always 2 "
-"when I<YYY> is even."
-msgstr ""
-"Стабільність. 0 — alpha, 1 — beta, а 2 означає «стабільна версія». I<S> має "
-"завжди дорівнювати 2, якщо I<YYY> є парним."
-
-#. type: Plain text
-#: ../src/xz/xz.1:1998
-msgid ""
-"I<XYYYZZZS> are the same on both lines if B<xz> and liblzma are from the "
-"same XZ Utils release."
-msgstr ""
-"I<XYYYZZZS> є тим самим в обох рядках, якщо B<xz> і liblzma належать до "
-"одного випуску XZ Utils."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2004
-msgid "Examples: 4.999.9beta is B<49990091> and 5.0.0 is B<50000002>."
-msgstr "Приклади: 4.999.9beta — це B<49990091>, а 5.0.0 — це B<50000002>."
-
-#. type: SS
-#: ../src/xz/xz.1:2005
-#, no-wrap
-msgid "Memory limit information"
-msgstr "Дані щодо обмеження пам'яті"
-
-#. type: Plain text
-#: ../src/xz/xz.1:2008
-msgid ""
-"B<xz --robot --info-memory> prints a single line with multiple tab-separated "
-"columns:"
-msgstr ""
-"B<xz --robot --info-memory> виводить один рядок з декількома відокремленими "
-"табуляціями стовпчиками:"
-
-#. type: IP
-#: ../src/xz/xz.1:2008
-#, no-wrap
-msgid "1."
-msgstr "1."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2010
-msgid "Total amount of physical memory (RAM) in bytes."
-msgstr "Загальний об'єм фізичної пам'яті (RAM) у байтах."
-
-#. type: IP
-#: ../src/xz/xz.1:2010 ../src/xz/xz.1:2125 ../src/xz/xz.1:2162
-#: ../src/xz/xz.1:2188 ../src/xz/xz.1:2258 ../src/xz/xz.1:2285
-#, no-wrap
-msgid "2."
-msgstr "2."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2017
-msgid ""
-"Memory usage limit for compression in bytes (B<--memlimit-compress>). A "
-"special value of B<0> indicates the default setting which for single-"
-"threaded mode is the same as no limit."
-msgstr ""
-"Обмеження на використання пам'яті для стискання у байтах (B<--memlimit-"
-"compress>). Особливе значення B<0> вказує на типові налаштування, якими для "
-"однопотокового режиму є налаштування без обмеження на використання пам'яті."
-
-#. type: IP
-#: ../src/xz/xz.1:2017 ../src/xz/xz.1:2127 ../src/xz/xz.1:2164
-#: ../src/xz/xz.1:2190 ../src/xz/xz.1:2263 ../src/xz/xz.1:2287
-#, no-wrap
-msgid "3."
-msgstr "3."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2024
-msgid ""
-"Memory usage limit for decompression in bytes (B<--memlimit-decompress>). A "
-"special value of B<0> indicates the default setting which for single-"
-"threaded mode is the same as no limit."
-msgstr ""
-"Обмеження на використання пам'яті для розпакування у байтах (B<--memlimit-"
-"decompress>). Особливе значення B<0> вказує на типові налаштування, якими "
-"для однопотокового режиму є налаштування без обмеження на використання "
-"пам'яті."
-
-#. type: IP
-#: ../src/xz/xz.1:2024 ../src/xz/xz.1:2129 ../src/xz/xz.1:2166
-#: ../src/xz/xz.1:2193 ../src/xz/xz.1:2273 ../src/xz/xz.1:2289
-#, no-wrap
-msgid "4."
-msgstr "4."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2036
-msgid ""
-"Since B<xz> 5.3.4alpha: Memory usage for multi-threaded decompression in "
-"bytes (B<--memlimit-mt-decompress>). This is never zero because a system-"
-"specific default value shown in the column 5 is used if no limit has been "
-"specified explicitly. This is also never greater than the value in the "
-"column 3 even if a larger value has been specified with B<--memlimit-mt-"
-"decompress>."
-msgstr ""
-"Починаючи з B<xz> 5.3.4alpha: використання пам'яті для багатопотокового "
-"розпаковування у байтах (B<--memlimit-mt-decompress>). Ніколи не дорівнює "
-"нулеві, оскільки буде використано специфічне для системи типове значення, "
-"яке показано у стовпчику 5, якщо обмеження не встановлено явним чином. Також "
-"ніколи не перевищуватиме значення у стовпчику 3, навіть якщо було вказано "
-"більше значення за допомогою B<--memlimit-mt-decompress>."
-
-#. type: IP
-#: ../src/xz/xz.1:2036 ../src/xz/xz.1:2131 ../src/xz/xz.1:2168
-#: ../src/xz/xz.1:2195 ../src/xz/xz.1:2291
-#, no-wrap
-msgid "5."
-msgstr "5."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2048
-msgid ""
-"Since B<xz> 5.3.4alpha: A system-specific default memory usage limit that is "
-"used to limit the number of threads when compressing with an automatic "
-"number of threads (B<--threads=0>) and no memory usage limit has been "
-"specified (B<--memlimit-compress>). This is also used as the default value "
-"for B<--memlimit-mt-decompress>."
-msgstr ""
-"Починаючи з B<xz> 5.3.4alpha: специфічне для системи типове обмеження на "
-"використання пам'яті, яке використовують для обмеження кількості потоків при "
-"стисканні з автоматичною кількістю потоків (B<--threads=0>) і без визначення "
-"обмеження на використання пам'яті (B<--memlimit-compress>). Це значення "
-"також використовують як типове значення для B<--memlimit-mt-decompress>."
-
-#. type: IP
-#: ../src/xz/xz.1:2048 ../src/xz/xz.1:2133 ../src/xz/xz.1:2170
-#: ../src/xz/xz.1:2197 ../src/xz/xz.1:2293
-#, no-wrap
-msgid "6."
-msgstr "6."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2053
-msgid "Since B<xz> 5.3.4alpha: Number of available processor threads."
-msgstr ""
-"Починаючи з B<xz> 5.3.4alpha: кількість доступних потоків обробки процесора."
-
-#. type: Plain text
-#: ../src/xz/xz.1:2057
-msgid ""
-"In the future, the output of B<xz --robot --info-memory> may have more "
-"columns, but never more than a single line."
-msgstr ""
-"У майбутньому у виведенні B<xz --robot --info-memory> може бути більше "
-"стовпчиків, але у виведеному буде не більше за один рядок."
+#: ../src/xz/xz.1
+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<--list>, B<--filters-help>, B<--info-memory>, and B<--version>. It will be supported for compression and decompression in the future."
+msgstr "Режим робота активують за допомогою параметра B<--robot>. Він спрощує обробку виведених B<xz> даних іншими програмами. У поточній версії підтримку B<--robot> передбачено лише разом із B<--list>, B<--filters-help>, B<--info-memory> і B<--version>. У майбутньому підтримку параметра буде передбачено для стискання та розпаковування."
#. type: SS
-#: ../src/xz/xz.1:2058
+#: ../src/xz/xz.1
#, no-wrap
msgid "List mode"
msgstr "Режим списку"
#. type: Plain text
-#: ../src/xz/xz.1:2063
-msgid ""
-"B<xz --robot --list> uses tab-separated output. The first column of every "
-"line has a string that indicates the type of the information found on that "
-"line:"
-msgstr ""
-"У B<xz --robot --list> використано табуляції для поділу виведених даних. "
-"Першим стовпчиком у кожному рядку є рядок, що вказує на тип відомостей, які "
-"можна знайти у цьому рядку:"
+#: ../src/xz/xz.1
+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> використано табуляції для поділу виведених даних. Першим стовпчиком у кожному рядку є рядок, що вказує на тип відомостей, які можна знайти у цьому рядку:"
#. type: TP
-#: ../src/xz/xz.1:2063
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<name>"
msgstr "B<назва>"
#. type: Plain text
-#: ../src/xz/xz.1:2067
-msgid ""
-"This is always the first line when starting to list a file. The second "
-"column on the line is the filename."
-msgstr ""
-"Це завжди перший рядок на початку списку файла. Другим стовпчиком у рядку є "
-"назва файла."
+#: ../src/xz/xz.1
+msgid "This is always the first line when starting to list a file. The second column on the line is the filename."
+msgstr "Це завжди перший рядок на початку списку файла. Другим стовпчиком у рядку є назва файла."
#. type: TP
-#: ../src/xz/xz.1:2067
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<file>"
msgstr "B<файл>"
#. type: Plain text
-#: ../src/xz/xz.1:2075
-msgid ""
-"This line contains overall information about the B<.xz> file. This line is "
-"always printed after the B<name> line."
-msgstr ""
-"У цьому рядку містяться загальні відомості щодо файла B<.xz>. Цей рядок "
-"завжди виводять після рядка B<name>."
+#: ../src/xz/xz.1
+msgid "This line contains overall information about the B<.xz> file. This line is always printed after the B<name> line."
+msgstr "У цьому рядку містяться загальні відомості щодо файла B<.xz>. Цей рядок завжди виводять після рядка B<name>."
#. type: TP
-#: ../src/xz/xz.1:2075
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<stream>"
msgstr "B<stream>"
#. type: Plain text
-#: ../src/xz/xz.1:2085
-msgid ""
-"This line type is used only when B<--verbose> was specified. There are as "
-"many B<stream> lines as there are streams in the B<.xz> file."
-msgstr ""
-"Цей тип рядка використовують, лише якщо було вказано B<--verbose>. Буде "
-"стільки рядків B<stream>, скільки потоків у файлі B<.xz>."
+#: ../src/xz/xz.1
+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 "Цей тип рядка використовують, лише якщо було вказано B<--verbose>. Буде стільки рядків B<stream>, скільки потоків у файлі B<.xz>."
#. type: TP
-#: ../src/xz/xz.1:2085
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<block>"
msgstr "B<block>"
#. type: Plain text
-#: ../src/xz/xz.1:2100
-msgid ""
-"This line type is used only when B<--verbose> was specified. There are as "
-"many B<block> lines as there are blocks in the B<.xz> file. The B<block> "
-"lines are shown after all the B<stream> lines; different line types are not "
-"interleaved."
-msgstr ""
-"Цей тип рядка використовують, лише якщо було вказано B<--verbose>. Буде "
-"стільки рядків B<block>, скільки блоків у файлі B<.xz>. Рядки B<block> буде "
-"показано після усіх рядків B<stream>; різні типи рядків не перемежовуються."
+#: ../src/xz/xz.1
+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 "Цей тип рядка використовують, лише якщо було вказано B<--verbose>. Буде стільки рядків B<block>, скільки блоків у файлі B<.xz>. Рядки B<block> буде показано після усіх рядків B<stream>; різні типи рядків не перемежовуються."
#. type: TP
-#: ../src/xz/xz.1:2100
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<summary>"
msgstr "B<summary>"
#. type: Plain text
-#: ../src/xz/xz.1:2115
-msgid ""
-"This line type is used only when B<--verbose> was specified twice. This "
-"line is printed after all B<block> lines. Like the B<file> line, the "
-"B<summary> line contains overall information about the B<.xz> file."
-msgstr ""
-"Цей тип рядків використовують, лише якщо B<--verbose> було вказано двічі. "
-"Цей рядок буде виведено після усіх рядків B<block>. Подібно до рядка "
-"B<file>, рядок B<summary> містить загальні відомості щодо файла B<.xz>."
+#: ../src/xz/xz.1
+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 "Цей тип рядків використовують, лише якщо B<--verbose> було вказано двічі. Цей рядок буде виведено після усіх рядків B<block>. Подібно до рядка B<file>, рядок B<summary> містить загальні відомості щодо файла B<.xz>."
#. type: TP
-#: ../src/xz/xz.1:2115
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<totals>"
msgstr "B<totals>"
#. type: Plain text
-#: ../src/xz/xz.1:2119
-msgid ""
-"This line is always the very last line of the list output. It shows the "
-"total counts and sizes."
-msgstr ""
-"Цей рядок завжди є найостаннішим рядком у виведеному списку. У ньому буде "
-"показано загальні кількості та розміри."
+#: ../src/xz/xz.1
+msgid "This line is always the very last line of the list output. It shows the total counts and sizes."
+msgstr "Цей рядок завжди є найостаннішим рядком у виведеному списку. У ньому буде показано загальні кількості та розміри."
#. type: Plain text
-#: ../src/xz/xz.1:2123
+#: ../src/xz/xz.1
msgid "The columns of the B<file> lines:"
msgstr "Стовпчики у рядках B<файла>:"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "2."
+msgstr "2."
+
#. type: Plain text
-#: ../src/xz/xz.1:2127
+#: ../src/xz/xz.1
msgid "Number of streams in the file"
msgstr "Кількість потоків у файлі"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "3."
+msgstr "3."
+
#. type: Plain text
-#: ../src/xz/xz.1:2129
+#: ../src/xz/xz.1
msgid "Total number of blocks in the stream(s)"
msgstr "Загальна кількість блоків у потоках"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "4."
+msgstr "4."
+
#. type: Plain text
-#: ../src/xz/xz.1:2131
+#: ../src/xz/xz.1
msgid "Compressed size of the file"
msgstr "Розмір стисненого файла"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "5."
+msgstr "5."
+
#. type: Plain text
-#: ../src/xz/xz.1:2133
+#: ../src/xz/xz.1
msgid "Uncompressed size of the file"
msgstr "Розмір нестисненого файла"
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "6."
+msgstr "6."
+
#. type: Plain text
-#: ../src/xz/xz.1:2139
-msgid ""
-"Compression ratio, for example, B<0.123>. If ratio is over 9.999, three "
-"dashes (B<--->) are displayed instead of the ratio."
-msgstr ""
-"Коефіцієнт стискання, наприклад, B<0.123>. Якщо коефіцієнт перевищує 9.999, "
-"замість коефіцієнта буде показано дефіси (B<--->)."
+#: ../src/xz/xz.1
+msgid "Compression ratio, for example, B<0.123>. If ratio is over 9.999, three dashes (B<--->) are displayed instead of the ratio."
+msgstr "Коефіцієнт стискання, наприклад, B<0.123>. Якщо коефіцієнт перевищує 9.999, замість коефіцієнта буде показано дефіси (B<--->)."
#. type: IP
-#: ../src/xz/xz.1:2139 ../src/xz/xz.1:2172 ../src/xz/xz.1:2199
-#: ../src/xz/xz.1:2295
+#: ../src/xz/xz.1
#, no-wrap
msgid "7."
msgstr "7."
#. type: Plain text
-#: ../src/xz/xz.1:2152
-msgid ""
-"Comma-separated list of integrity check names. The following strings are "
-"used for the known check types: B<None>, B<CRC32>, B<CRC64>, and "
-"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 ""
-"Список відокремлених комами назв перевірок цілісності. Наведені нижче рядки "
-"використовують для відомих типів перевірок: B<None>, B<CRC32>, B<CRC64> і "
-"B<SHA-256>. Для невідомих типів перевірок буде використано B<Unknown->I<N>, "
-"де I<N> є ідентифікатором перевірки у форматі десяткового числа (одна або "
-"дві цифри)."
+#: ../src/xz/xz.1
+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 "Список відокремлених комами назв перевірок цілісності. Наведені нижче рядки використовують для відомих типів перевірок: B<None>, B<CRC32>, B<CRC64> і B<SHA-256>. Для невідомих типів перевірок буде використано B<Unknown->I<N>, де I<N> є ідентифікатором перевірки у форматі десяткового числа (одна або дві цифри)."
#. type: IP
-#: ../src/xz/xz.1:2152 ../src/xz/xz.1:2174 ../src/xz/xz.1:2201
-#: ../src/xz/xz.1:2298
+#: ../src/xz/xz.1
#, no-wrap
msgid "8."
msgstr "8."
#. type: Plain text
-#: ../src/xz/xz.1:2154
+#: ../src/xz/xz.1
msgid "Total size of stream padding in the file"
msgstr "Загальний розмір доповнення потоку у файлі"
#. type: Plain text
-#: ../src/xz/xz.1:2160
+#: ../src/xz/xz.1
msgid "The columns of the B<stream> lines:"
msgstr "Стовпчики у рядках B<stream>:"
#. type: Plain text
-#: ../src/xz/xz.1:2164
+#: ../src/xz/xz.1
msgid "Stream number (the first stream is 1)"
msgstr "Номер потоку (перший потік має номер 1)"
#. type: Plain text
-#: ../src/xz/xz.1:2166
+#: ../src/xz/xz.1
msgid "Number of blocks in the stream"
msgstr "Кількість блоків у потоці"
#. type: Plain text
-#: ../src/xz/xz.1:2168
+#: ../src/xz/xz.1
msgid "Compressed start offset"
msgstr "Зсув початку стисненого"
#. type: Plain text
-#: ../src/xz/xz.1:2170
+#: ../src/xz/xz.1
msgid "Uncompressed start offset"
msgstr "Зсув початку нестисненого"
#. type: Plain text
-#: ../src/xz/xz.1:2172
+#: ../src/xz/xz.1
msgid "Compressed size (does not include stream padding)"
msgstr "Стиснений розмір (не включає доповнення потоку)"
#. type: Plain text
-#: ../src/xz/xz.1:2174 ../src/xz/xz.1:2203 ../src/xz/xz.1:2293
+#: ../src/xz/xz.1
msgid "Uncompressed size"
msgstr "Нестиснутий розмір"
#. type: Plain text
-#: ../src/xz/xz.1:2176 ../src/xz/xz.1:2205
+#: ../src/xz/xz.1
msgid "Compression ratio"
msgstr "Рівень стискання"
#. type: IP
-#: ../src/xz/xz.1:2176 ../src/xz/xz.1:2203 ../src/xz/xz.1:2300
+#: ../src/xz/xz.1
#, no-wrap
msgid "9."
msgstr "9."
#. type: Plain text
-#: ../src/xz/xz.1:2178 ../src/xz/xz.1:2207
+#: ../src/xz/xz.1
msgid "Name of the integrity check"
msgstr "Назва перевірки цілісності"
#. type: IP
-#: ../src/xz/xz.1:2178 ../src/xz/xz.1:2205 ../src/xz/xz.1:2316
+#: ../src/xz/xz.1
#, no-wrap
msgid "10."
msgstr "10."
#. type: Plain text
-#: ../src/xz/xz.1:2180
+#: ../src/xz/xz.1
msgid "Size of stream padding"
msgstr "Розмір доповнення потоку"
#. type: Plain text
-#: ../src/xz/xz.1:2186
+#: ../src/xz/xz.1
msgid "The columns of the B<block> lines:"
msgstr "Стовпчики у рядках B<block>:"
#. type: Plain text
-#: ../src/xz/xz.1:2190
+#: ../src/xz/xz.1
msgid "Number of the stream containing this block"
msgstr "Номер потоку, що містить цей блок"
#. type: Plain text
-#: ../src/xz/xz.1:2193
-msgid ""
-"Block number relative to the beginning of the stream (the first block is 1)"
+#: ../src/xz/xz.1
+msgid "Block number relative to the beginning of the stream (the first block is 1)"
msgstr "Номер блоку відносно початку потоку (перший блок має номер 1)"
#. type: Plain text
-#: ../src/xz/xz.1:2195
+#: ../src/xz/xz.1
msgid "Block number relative to the beginning of the file"
msgstr "Номер блоку відносно початку файла"
#. type: Plain text
-#: ../src/xz/xz.1:2197
+#: ../src/xz/xz.1
msgid "Compressed start offset relative to the beginning of the file"
msgstr "Зсув початку стисненого відносно початку файла"
#. type: Plain text
-#: ../src/xz/xz.1:2199
+#: ../src/xz/xz.1
msgid "Uncompressed start offset relative to the beginning of the file"
msgstr "Зсув початку нестисненого відносно початку файла"
#. type: Plain text
-#: ../src/xz/xz.1:2201
+#: ../src/xz/xz.1
msgid "Total compressed size of the block (includes headers)"
msgstr "Загальний стиснений розмір блоку (включено з заголовками)"
#. type: Plain text
-#: ../src/xz/xz.1:2219
-msgid ""
-"If B<--verbose> was specified twice, additional columns are included on the "
-"B<block> lines. These are not displayed with a single B<--verbose>, because "
-"getting this information requires many seeks and can thus be slow:"
-msgstr ""
-"Якщо B<--verbose> було вказано двічі, до рядків B<block> буде включено "
-"додаткові стовпчики. Ці стовпчики не буде показано, якщо вказано одинарний "
-"параметр B<--verbose>, оскільки отримання цих відомостей потребує багатьох "
-"позиціювань, а ця процедура може бути повільною:"
+#: ../src/xz/xz.1
+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 "Якщо B<--verbose> було вказано двічі, до рядків B<block> буде включено додаткові стовпчики. Ці стовпчики не буде показано, якщо вказано одинарний параметр B<--verbose>, оскільки отримання цих відомостей потребує багатьох позиціювань, а ця процедура може бути повільною:"
#. type: IP
-#: ../src/xz/xz.1:2221 ../src/xz/xz.1:2321
+#: ../src/xz/xz.1
#, no-wrap
msgid "11."
msgstr "11."
#. type: Plain text
-#: ../src/xz/xz.1:2223
+#: ../src/xz/xz.1
msgid "Value of the integrity check in hexadecimal"
msgstr "Значення перевірки цілісності у шістнадцятковій формі"
#. type: IP
-#: ../src/xz/xz.1:2223 ../src/xz/xz.1:2331
+#: ../src/xz/xz.1
#, no-wrap
msgid "12."
msgstr "12."
#. type: Plain text
-#: ../src/xz/xz.1:2225
+#: ../src/xz/xz.1
msgid "Block header size"
msgstr "Розмір заголовка блоку"
#. type: IP
-#: ../src/xz/xz.1:2225
+#: ../src/xz/xz.1
#, no-wrap
msgid "13."
msgstr "13."
#. type: Plain text
-#: ../src/xz/xz.1:2235
-msgid ""
-"Block flags: B<c> indicates that compressed size is present, and B<u> "
-"indicates that uncompressed size is present. If the flag is not set, a dash "
-"(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 ""
-"Прапорці блоку: B<c> вказує, що наявний стиснений розмір, а B<u> вказує, що "
-"наявний нестиснений розмір. Якщо прапорець не встановлено, буде показано (B<-"
-">) замість підтримання фіксованого розміру рядка. У майбутньому наприкінці "
-"рядка може бути додано нові прапорці."
+#: ../src/xz/xz.1
+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 "Прапорці блоку: B<c> вказує, що наявний стиснений розмір, а B<u> вказує, що наявний нестиснений розмір. Якщо прапорець не встановлено, буде показано (B<->) замість підтримання фіксованого розміру рядка. У майбутньому наприкінці рядка може бути додано нові прапорці."
#. type: IP
-#: ../src/xz/xz.1:2235
+#: ../src/xz/xz.1
#, no-wrap
msgid "14."
msgstr "14."
#. type: Plain text
-#: ../src/xz/xz.1:2238
-msgid ""
-"Size of the actual compressed data in the block (this excludes the block "
-"header, block padding, and check fields)"
-msgstr ""
-"Розмір справжніх стиснених даних у блоці (це включає заголовок блоку, "
-"доповнення блоку та поля перевірок)"
+#: ../src/xz/xz.1
+msgid "Size of the actual compressed data in the block (this excludes the block header, block padding, and check fields)"
+msgstr "Розмір справжніх стиснених даних у блоці (це включає заголовок блоку, доповнення блоку та поля перевірок)"
#. type: IP
-#: ../src/xz/xz.1:2238
+#: ../src/xz/xz.1
#, no-wrap
msgid "15."
msgstr "15."
#. type: Plain text
-#: ../src/xz/xz.1:2243
-msgid ""
-"Amount of memory (in bytes) required to decompress this block with this "
-"B<xz> version"
-msgstr ""
-"Об'єм пам'яті (у байтах), який потрібен для розпаковування цього блоку за "
-"допомогою цієї версії B<xz>"
+#: ../src/xz/xz.1
+msgid "Amount of memory (in bytes) required to decompress this block with this B<xz> version"
+msgstr "Об'єм пам'яті (у байтах), який потрібен для розпаковування цього блоку за допомогою цієї версії B<xz>"
#. type: IP
-#: ../src/xz/xz.1:2243
+#: ../src/xz/xz.1
#, no-wrap
msgid "16."
msgstr "16."
#. type: Plain text
-#: ../src/xz/xz.1:2250
-msgid ""
-"Filter chain. Note that most of the options used at compression time cannot "
-"be known, because only the options that are needed for decompression are "
-"stored in the B<.xz> headers."
-msgstr ""
-"Ланцюжок фільтрів. Зауважте, що більшість параметрів, які використано під "
-"час стискання, не є наперед відомим, оскільки у заголовках B<.xz> "
-"зберігаються лише параметри, які потрібні для розпаковування."
+#: ../src/xz/xz.1
+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 "Ланцюжок фільтрів. Зауважте, що більшість параметрів, які використано під час стискання, не є наперед відомим, оскільки у заголовках B<.xz> зберігаються лише параметри, які потрібні для розпаковування."
#. type: Plain text
-#: ../src/xz/xz.1:2256
+#: ../src/xz/xz.1
msgid "The columns of the B<summary> lines:"
msgstr "Стовпчики у рядках B<summary>:"
#. type: Plain text
-#: ../src/xz/xz.1:2263
-msgid ""
-"Amount of memory (in bytes) required to decompress this file with this B<xz> "
-"version"
-msgstr ""
-"Об'єм пам'яті (у байтах), який потрібен для розпаковування цього файла за "
-"допомогою цієї версії B<xz>"
+#: ../src/xz/xz.1
+msgid "Amount of memory (in bytes) required to decompress this file with this B<xz> version"
+msgstr "Об'єм пам'яті (у байтах), який потрібен для розпаковування цього файла за допомогою цієї версії B<xz>"
#. type: Plain text
-#: ../src/xz/xz.1:2269 ../src/xz/xz.1:2327
-msgid ""
-"B<yes> or B<no> indicating if all block headers have both compressed size "
-"and uncompressed size stored in them"
-msgstr ""
-"B<yes> або B<no> вказує, якщо усі заголовки блоків містять одразу стиснений "
-"розмір та розпакований розмір"
+#: ../src/xz/xz.1
+msgid "B<yes> or B<no> indicating if all block headers have both compressed size and uncompressed size stored in them"
+msgstr "B<yes> або B<no> вказує, якщо усі заголовки блоків містять одразу стиснений розмір та розпакований розмір"
#. type: Plain text
-#: ../src/xz/xz.1:2273 ../src/xz/xz.1:2331
+#: ../src/xz/xz.1
msgid "I<Since> B<xz> I<5.1.2alpha:>"
msgstr "I<Починаючи з> B<xz> I<5.1.2alpha:>"
#. type: Plain text
-#: ../src/xz/xz.1:2277 ../src/xz/xz.1:2335
+#: ../src/xz/xz.1
msgid "Minimum B<xz> version required to decompress the file"
msgstr "Мінімальна версія B<xz>, яка потрібна для розпаковування файла"
#. type: Plain text
-#: ../src/xz/xz.1:2283
+#: ../src/xz/xz.1
msgid "The columns of the B<totals> line:"
msgstr "Стовпчики рядка B<totals>:"
#. type: Plain text
-#: ../src/xz/xz.1:2287
+#: ../src/xz/xz.1
msgid "Number of streams"
msgstr "Кількість потоків"
#. type: Plain text
-#: ../src/xz/xz.1:2289
+#: ../src/xz/xz.1
msgid "Number of blocks"
msgstr "Кількість блоків"
#. type: Plain text
-#: ../src/xz/xz.1:2291
+#: ../src/xz/xz.1
msgid "Compressed size"
msgstr "Стиснутий розмір"
#. type: Plain text
-#: ../src/xz/xz.1:2295
+#: ../src/xz/xz.1
msgid "Average compression ratio"
msgstr "Середній коефіцієнт стискання"
#. type: Plain text
-#: ../src/xz/xz.1:2298
-msgid ""
-"Comma-separated list of integrity check names that were present in the files"
-msgstr ""
-"Список відокремлених комами назв перевірок цілісності, результати яких "
-"наявні у файлах"
+#: ../src/xz/xz.1
+msgid "Comma-separated list of integrity check names that were present in the files"
+msgstr "Список відокремлених комами назв перевірок цілісності, результати яких наявні у файлах"
#. type: Plain text
-#: ../src/xz/xz.1:2300
+#: ../src/xz/xz.1
msgid "Stream padding size"
msgstr "Розмір доповнення потоку"
#. type: Plain text
-#: ../src/xz/xz.1:2306
-msgid ""
-"Number of files. This is here to keep the order of the earlier columns the "
-"same as on B<file> lines."
-msgstr ""
-"Кількість файлів. Наявний тут для зберігання такого самого порядку "
-"стовпчиків, що і у попередніх рядках B<file>."
+#: ../src/xz/xz.1
+msgid "Number of files. This is here to keep the order of the earlier columns the same as on B<file> lines."
+msgstr "Кількість файлів. Наявний тут для зберігання такого самого порядку стовпчиків, що і у попередніх рядках B<file>."
#. type: Plain text
-#: ../src/xz/xz.1:2314
-msgid ""
-"If B<--verbose> was specified twice, additional columns are included on the "
-"B<totals> line:"
-msgstr ""
-"Якщо B<--verbose> було вказано двічі, до рядка B<totals> буде включено "
-"додаткові стовпчики:"
+#: ../src/xz/xz.1
+msgid "If B<--verbose> was specified twice, additional columns are included on the B<totals> line:"
+msgstr "Якщо B<--verbose> було вказано двічі, до рядка B<totals> буде включено додаткові стовпчики:"
#. type: Plain text
-#: ../src/xz/xz.1:2321
-msgid ""
-"Maximum amount of memory (in bytes) required to decompress the files with "
-"this B<xz> version"
-msgstr ""
-"Максимальний об'єм пам'яті (у байтах), який потрібен для розпаковування "
-"файлів за допомогою цієї версії B<xz>"
+#: ../src/xz/xz.1
+msgid "Maximum amount of memory (in bytes) required to decompress the files with this B<xz> version"
+msgstr "Максимальний об'єм пам'яті (у байтах), який потрібен для розпаковування файлів за допомогою цієї версії B<xz>"
#. type: Plain text
-#: ../src/xz/xz.1:2341
-msgid ""
-"Future versions may add new line types and new columns can be added to the "
-"existing line types, but the existing columns won't be changed."
-msgstr ""
-"У майбутніх версіях може бути додано нові типи рядків і нові стовпчики до "
-"наявних типів рядків, але наявні стовпчики мають лишитися незмінними."
+#: ../src/xz/xz.1
+msgid "Future versions may add new line types and new columns can be added to the existing line types, but the existing columns won't be changed."
+msgstr "У майбутніх версіях може бути додано нові типи рядків і нові стовпчики до наявних типів рядків, але наявні стовпчики мають лишитися незмінними."
+
+#. type: SS
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "Filters help"
+msgstr "Довідка з фільтрування"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<xz --robot --filters-help> prints the supported filters in the following format:"
+msgstr "B<xz --robot --filters-help> виведе список підтримуваних фільтрів у такому форматі:"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "I<filter>B<:>I<option>B<=E<lt>>I<value>B<E<gt>,>I<option>B<=E<lt>>I<value>B<E<gt>>..."
+msgstr "I<фільтр>B<:>I<параметр>B<=E<lt>>I<значення>B<E<gt>,>I<параметр>B<=E<lt>>I<значення>B<E<gt>>..."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<filter>"
+msgstr "I<фільтр>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Name of the filter"
+msgstr "Назва фільтра"
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<option>"
+msgstr "I<параметр>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Name of a filter specific option"
+msgstr "Назва специфічного для фільтра параметра"
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<value>"
+msgstr "I<значення>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Numeric I<value> ranges appear as B<E<lt>>I<min>B<->I<max>B<E<gt>>. String I<value> choices are shown within B<E<lt> E<gt>> and separated by a B<|> character."
+msgstr "Числові діапазони I<value> слід вказати у форматі B<E<lt>>I<мінімум>B<->I<максимум>B<E<gt>>. Варіанти рядка I<значення> показано у B<E<lt> E<gt>> і відокремлено символом B<|>."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Each filter is printed on its own line."
+msgstr "Кожен фільтр буде виведено до окремого рядка."
+
+#. type: SS
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "Memory limit information"
+msgstr "Дані щодо обмеження пам'яті"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<xz --robot --info-memory> prints a single line with multiple tab-separated columns:"
+msgstr "B<xz --robot --info-memory> виводить один рядок з декількома відокремленими табуляціями стовпчиками:"
+
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "1."
+msgstr "1."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Total amount of physical memory (RAM) in bytes."
+msgstr "Загальний об'єм фізичної пам'яті (RAM) у байтах."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Memory usage limit for compression in bytes (B<--memlimit-compress>). A special value of B<0> indicates the default setting which for single-threaded mode is the same as no limit."
+msgstr "Обмеження на використання пам'яті для стискання у байтах (B<--memlimit-compress>). Особливе значення B<0> вказує на типові налаштування, якими для однопотокового режиму є налаштування без обмеження на використання пам'яті."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Memory usage limit for decompression in bytes (B<--memlimit-decompress>). A special value of B<0> indicates the default setting which for single-threaded mode is the same as no limit."
+msgstr "Обмеження на використання пам'яті для розпакування у байтах (B<--memlimit-decompress>). Особливе значення B<0> вказує на типові налаштування, якими для однопотокового режиму є налаштування без обмеження на використання пам'яті."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.3.4alpha: Memory usage for multi-threaded decompression in bytes (B<--memlimit-mt-decompress>). This is never zero because a system-specific default value shown in the column 5 is used if no limit has been specified explicitly. This is also never greater than the value in the column 3 even if a larger value has been specified with B<--memlimit-mt-decompress>."
+msgstr "Починаючи з B<xz> 5.3.4alpha: використання пам'яті для багатопотокового розпаковування у байтах (B<--memlimit-mt-decompress>). Ніколи не дорівнює нулеві, оскільки буде використано специфічне для системи типове значення, яке показано у стовпчику 5, якщо обмеження не встановлено явним чином. Також ніколи не перевищуватиме значення у стовпчику 3, навіть якщо було вказано більше значення за допомогою B<--memlimit-mt-decompress>."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.3.4alpha: A system-specific default memory usage limit that is used to limit the number of threads when compressing with an automatic number of threads (B<--threads=0>) and no memory usage limit has been specified (B<--memlimit-compress>). This is also used as the default value for B<--memlimit-mt-decompress>."
+msgstr "Починаючи з B<xz> 5.3.4alpha: специфічне для системи типове обмеження на використання пам'яті, яке використовують для обмеження кількості потоків при стисканні з автоматичною кількістю потоків (B<--threads=0>) і без визначення обмеження на використання пам'яті (B<--memlimit-compress>). Це значення також використовують як типове значення для B<--memlimit-mt-decompress>."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.3.4alpha: Number of available processor threads."
+msgstr "Починаючи з B<xz> 5.3.4alpha: кількість доступних потоків обробки процесора."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "In the future, the output of B<xz --robot --info-memory> may have more columns, but never more than a single line."
+msgstr "У майбутньому у виведенні B<xz --robot --info-memory> може бути більше стовпчиків, але у виведеному буде не більше за один рядок."
+
+#. type: SS
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "Version"
+msgstr "Версія"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<xz --robot --version> prints the version number of B<xz> and liblzma in the following format:"
+msgstr "B<xz --robot --version> виведе назву версії B<xz> і liblzma у такому форматі:"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<XZ_VERSION=>I<XYYYZZZS>"
+msgstr "B<XZ_VERSION=>I<XYYYZZZS>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
+msgstr "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<X>"
+msgstr "I<X>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Major version."
+msgstr "Основна версія."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<YYY>"
+msgstr "I<YYY>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Minor version. Even numbers are stable. Odd numbers are alpha or beta versions."
+msgstr "Проміжна версія. Непарні номери буде використано для стабільних версій. Непарні номери є номерами тестових версій."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<ZZZ>"
+msgstr "I<ZZZ>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Patch level for stable releases or just a counter for development releases."
+msgstr "Рівень латання для стабільних випусків або просто лічильник для випусків, які перебувають у розробці."
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<S>"
+msgstr "I<S>"
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Stability. 0 is alpha, 1 is beta, and 2 is stable. I<S> should be always 2 when I<YYY> is even."
+msgstr "Стабільність. 0 — alpha, 1 — beta, а 2 означає «стабільна версія». I<S> має завжди дорівнювати 2, якщо I<YYY> є парним."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "I<XYYYZZZS> are the same on both lines if B<xz> and liblzma are from the same XZ Utils release."
+msgstr "I<XYYYZZZS> є тим самим в обох рядках, якщо B<xz> і liblzma належать до одного випуску XZ Utils."
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Examples: 4.999.9beta is B<49990091> and 5.0.0 is B<50000002>."
+msgstr "Приклади: 4.999.9beta — це B<49990091>, а 5.0.0 — це B<50000002>."
#. type: SH
-#: ../src/xz/xz.1:2342 ../src/xzdec/xzdec.1:104 ../src/lzmainfo/lzmainfo.1:44
-#: ../src/scripts/xzgrep.1:81
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1
#, no-wrap
msgid "EXIT STATUS"
msgstr "СТАН ВИХОДУ"
#. type: TP
-#: ../src/xz/xz.1:2343 ../src/xzdec/xzdec.1:105 ../src/lzmainfo/lzmainfo.1:45
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "B<0>"
msgstr "B<0>"
#. type: Plain text
-#: ../src/xz/xz.1:2346 ../src/lzmainfo/lzmainfo.1:48
+#: ../src/xz/xz.1 ../src/lzmainfo/lzmainfo.1
msgid "All is good."
msgstr "Усе добре."
#. type: TP
-#: ../src/xz/xz.1:2346 ../src/xzdec/xzdec.1:108 ../src/lzmainfo/lzmainfo.1:48
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "B<1>"
msgstr "B<1>"
#. type: Plain text
-#: ../src/xz/xz.1:2349 ../src/xzdec/xzdec.1:111 ../src/lzmainfo/lzmainfo.1:51
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
msgid "An error occurred."
msgstr "Сталася помилка."
#. type: TP
-#: ../src/xz/xz.1:2349
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<2>"
msgstr "B<2>"
#. type: Plain text
-#: ../src/xz/xz.1:2353
+#: ../src/xz/xz.1
msgid "Something worth a warning occurred, but no actual errors occurred."
msgstr "Сталося щось варте попередження, але справжніх помилок не сталося."
#. type: Plain text
-#: ../src/xz/xz.1:2356
-msgid ""
-"Notices (not warnings or errors) printed on standard error don't affect the "
-"exit status."
-msgstr ""
-"Зауваження (не попередження або помилки), які виведено до стандартного "
-"виведення помилок, не впливають на стан виходу."
+#: ../src/xz/xz.1
+msgid "Notices (not warnings or errors) printed on standard error don't affect the exit status."
+msgstr "Зауваження (не попередження або помилки), які виведено до стандартного виведення помилок, не впливають на стан виходу."
#. type: SH
-#: ../src/xz/xz.1:2357 ../src/scripts/xzgrep.1:94 ../src/scripts/xzless.1:52
+#: ../src/xz/xz.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "ENVIRONMENT"
msgstr "СЕРЕДОВИЩЕ"
#. type: Plain text
-#: ../src/xz/xz.1:2370
-msgid ""
-"B<xz> parses space-separated lists of options from the environment variables "
-"B<XZ_DEFAULTS> and B<XZ_OPT>, in this order, before parsing the options from "
-"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> обробляє списки відокремлених пробілами параметрів зі змінних "
-"середовища B<XZ_DEFAULTS> і B<XZ_OPT>, перш ніж обробляти параметри з рядка "
-"команди. Зауважте, що буде оброблено лише параметри зі змінних середовища; "
-"усі непараметричні записи буде без повідомлень проігноровано. Обробку буде "
-"виконано за допомогою функції B<getopt_long>(3), яку також використовують "
-"для аргументів рядка команди."
+#: ../src/xz/xz.1
+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> обробляє списки відокремлених пробілами параметрів зі змінних середовища B<XZ_DEFAULTS> і B<XZ_OPT>, перш ніж обробляти параметри з рядка команди. Зауважте, що буде оброблено лише параметри зі змінних середовища; усі непараметричні записи буде без повідомлень проігноровано. Обробку буде виконано за допомогою функції B<getopt_long>(3), яку також використовують для аргументів рядка команди."
#. type: TP
-#: ../src/xz/xz.1:2370
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<XZ_DEFAULTS>"
msgstr "B<XZ_DEFAULTS>"
#. type: Plain text
-#: ../src/xz/xz.1:2379
-msgid ""
-"User-specific or system-wide default options. Typically this is set in a "
-"shell initialization script to enable B<xz>'s memory usage limiter by "
-"default. Excluding shell initialization scripts and similar special cases, "
-"scripts must never set or unset B<XZ_DEFAULTS>."
-msgstr ""
-"Специфічні для користувача або загальносистемні типові параметри. Зазвичай, "
-"їх встановлюють у скрипті ініціалізації оболонки для типового вмикання "
-"обмеження на використання пам'яті у B<xz>. Окрім скриптів ініціалізації "
-"оболонки і подібних особливих випадків, не слід встановлювати або "
-"скасовувати встановлення значення B<XZ_DEFAULTS> у скриптах."
+#: ../src/xz/xz.1
+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 "Специфічні для користувача або загальносистемні типові параметри. Зазвичай, їх встановлюють у скрипті ініціалізації оболонки для типового вмикання обмеження на використання пам'яті у B<xz>. Окрім скриптів ініціалізації оболонки і подібних особливих випадків, не слід встановлювати або скасовувати встановлення значення B<XZ_DEFAULTS> у скриптах."
#. type: TP
-#: ../src/xz/xz.1:2379
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<XZ_OPT>"
msgstr "B<XZ_OPT>"
#. type: Plain text
-#: ../src/xz/xz.1:2390
-msgid ""
-"This is for passing options to B<xz> when it is not possible to set the "
-"options directly on the B<xz> command line. This is the case when B<xz> is "
-"run by a script or tool, for example, GNU B<tar>(1):"
-msgstr ""
-"Цю змінну призначено для передавання параметрів до B<xz>, якщо неможливо "
-"встановити параметри безпосередньо у рядку команди B<xz>. Це трапляється, "
-"якщо B<xz> запущено скриптом або інструментом, наприклад, GNU B<tar>(1):"
+#: ../src/xz/xz.1
+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 when B<xz> is run by a script or tool, for example, GNU B<tar>(1):"
+msgstr "Цю змінну призначено для передавання параметрів до B<xz>, якщо неможливо встановити параметри безпосередньо у рядку команди B<xz>. Це трапляється, якщо B<xz> запущено скриптом або інструментом, наприклад, GNU B<tar>(1):"
#. type: Plain text
-#: ../src/xz/xz.1:2396
-#, no-wrap
-msgid "CW<XZ_OPT=-2v tar caf foo.tar.xz foo>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<XZ_OPT=-2v tar caf foo.tar.xz foo>\n"
+msgid "\\f(CRXZ_OPT=-2v tar caf foo.tar.xz foo\\fR\n"
msgstr "CW<XZ_OPT=-2v tar caf foo.tar.xz foo>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2410
-msgid ""
-"Scripts may use B<XZ_OPT>, for example, to set script-specific default "
-"compression options. It is still recommended to allow users to override "
-"B<XZ_OPT> if that is reasonable. For example, in B<sh>(1) scripts one may "
-"use something like this:"
-msgstr ""
-"Скрипти можуть використовувати B<XZ_OPT>, наприклад, для встановлення "
-"специфічних типових параметрів стискання. Втім, рекомендуємо дозволити "
-"користувачам перевизначати B<XZ_OPT>, якщо це має якісь причини. Наприклад, "
-"у скриптах B<sh>(1) можна скористатися чимось таким:"
+#: ../src/xz/xz.1
+msgid "Scripts may use B<XZ_OPT>, for example, to set script-specific default compression options. It is still recommended to allow users to override B<XZ_OPT> if that is reasonable. For example, in B<sh>(1) scripts one may use something like this:"
+msgstr "Скрипти можуть використовувати B<XZ_OPT>, наприклад, для встановлення специфічних типових параметрів стискання. Втім, рекомендуємо дозволити користувачам перевизначати B<XZ_OPT>, якщо це має якісь причини. Наприклад, у скриптах B<sh>(1) можна скористатися чимось таким:"
#. type: Plain text
-#: ../src/xz/xz.1:2417
-#, no-wrap
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid ""
+#| "CW<XZ_OPT=${XZ_OPT-\"-7e\"}\n"
+#| "export XZ_OPT>\n"
msgid ""
-"CW<XZ_OPT=${XZ_OPT-\"-7e\"}\n"
-"export XZ_OPT>\n"
+"\\f(CRXZ_OPT=${XZ_OPT-\"-7e\"}\n"
+"export XZ_OPT\\fR\n"
msgstr ""
"CW<XZ_OPT=${XZ_OPT-\"-7e\"}\n"
"export XZ_OPT>\n"
#. type: SH
-#: ../src/xz/xz.1:2422
+#: ../src/xz/xz.1
#, no-wrap
msgid "LZMA UTILS COMPATIBILITY"
msgstr "СУМІСНІСТЬ ІЗ LZMA UTILS"
#. type: Plain text
-#: ../src/xz/xz.1:2435
-msgid ""
-"The command line syntax of B<xz> is practically a superset of B<lzma>, "
-"B<unlzma>, and B<lzcat> as found from LZMA Utils 4.32.x. In most cases, it "
-"is possible to replace LZMA Utils with XZ Utils without breaking existing "
-"scripts. There are some incompatibilities though, which may sometimes cause "
-"problems."
-msgstr ""
-"Синтаксис рядка команди B<xz> практично є надбудовою щодо B<lzma>, B<unlzma> "
-"і B<lzcat> з LZMA Utils 4.32.x. У більшості випадків можна замінити LZMA "
-"Utils XZ Utils без порушення працездатності наявних скриптів. Втім, існують "
-"певні несумісності, які іноді можуть спричиняти проблеми."
+#: ../src/xz/xz.1
+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 "Синтаксис рядка команди B<xz> практично є надбудовою щодо B<lzma>, B<unlzma> і B<lzcat> з LZMA Utils 4.32.x. У більшості випадків можна замінити LZMA Utils XZ Utils без порушення працездатності наявних скриптів. Втім, існують певні несумісності, які іноді можуть спричиняти проблеми."
#. type: SS
-#: ../src/xz/xz.1:2436
+#: ../src/xz/xz.1
#, no-wrap
msgid "Compression preset levels"
msgstr "Рівні шаблонів стискання"
#. type: Plain text
-#: ../src/xz/xz.1:2443
-msgid ""
-"The numbering of the compression level presets is not identical in B<xz> and "
-"LZMA Utils. The most important difference is how dictionary sizes are "
-"mapped to different presets. Dictionary size is roughly equal to the "
-"decompressor memory usage."
-msgstr ""
-"Нумерація у шаблонах рівнів стискання у B<xz> не є тотожною до нумерації у "
-"LZMA Utils. Найважливішою відмінністю є прив'язка розмірів словника до "
-"різних шаблонів. Розмір словника грубо рівний використанню пам'яті у засобі "
-"розпаковування."
+#: ../src/xz/xz.1
+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 "Нумерація у шаблонах рівнів стискання у B<xz> не є тотожною до нумерації у LZMA Utils. Найважливішою відмінністю є прив'язка розмірів словника до різних шаблонів. Розмір словника грубо рівний використанню пам'яті у засобі розпаковування."
#. type: tbl table
-#: ../src/xz/xz.1:2449 ../src/xz/xz.1:2474
+#: ../src/xz/xz.1
#, no-wrap
msgid "Level"
msgstr "Рівень"
#. type: tbl table
-#: ../src/xz/xz.1:2449 ../src/xz/xz.1:2474
+#: ../src/xz/xz.1
#, no-wrap
msgid "xz"
msgstr "xz"
#. type: tbl table
-#: ../src/xz/xz.1:2449
+#: ../src/xz/xz.1
#, no-wrap
msgid "LZMA Utils"
msgstr "LZMA Utils"
#. type: tbl table
-#: ../src/xz/xz.1:2450 ../src/xz/xz.1:2475
+#: ../src/xz/xz.1
#, no-wrap
msgid "N/A"
msgstr "н/д"
#. type: tbl table
-#: ../src/xz/xz.1:2451
+#: ../src/xz/xz.1
#, no-wrap
msgid "64 KiB"
msgstr "64 КіБ"
#. type: tbl table
-#: ../src/xz/xz.1:2453
+#: ../src/xz/xz.1
#, no-wrap
msgid "512 KiB"
msgstr "512 КіБ"
#. type: Plain text
-#: ../src/xz/xz.1:2468
-msgid ""
-"The dictionary size differences affect the compressor memory usage too, but "
-"there are some other differences between LZMA Utils and XZ Utils, which make "
-"the difference even bigger:"
-msgstr ""
-"Відмінності у розмірах словників також впливають на використання пам'яті "
-"засобом стискання, але є і інші відмінності між LZMA Utils і XZ Utils, які "
-"роблять різницю ще помітнішою:"
+#: ../src/xz/xz.1
+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 "Відмінності у розмірах словників також впливають на використання пам'яті засобом стискання, але є і інші відмінності між LZMA Utils і XZ Utils, які роблять різницю ще помітнішою:"
#. type: tbl table
-#: ../src/xz/xz.1:2474
+#: ../src/xz/xz.1
#, no-wrap
msgid "LZMA Utils 4.32.x"
msgstr "LZMA Utils 4.32.x"
#. type: tbl table
-#: ../src/xz/xz.1:2477 ../src/xz/xz.1:2478
+#: ../src/xz/xz.1
#, no-wrap
msgid "12 MiB"
msgstr "12 МіБ"
#. type: tbl table
-#: ../src/xz/xz.1:2480
+#: ../src/xz/xz.1
#, no-wrap
msgid "26 MiB"
msgstr "26 МіБ"
#. type: tbl table
-#: ../src/xz/xz.1:2481
+#: ../src/xz/xz.1
#, no-wrap
msgid "45 MiB"
msgstr "45 МіБ"
#. type: tbl table
-#: ../src/xz/xz.1:2482
+#: ../src/xz/xz.1
#, no-wrap
msgid "83 MiB"
msgstr "83 МіБ"
#. type: tbl table
-#: ../src/xz/xz.1:2483
+#: ../src/xz/xz.1
#, no-wrap
msgid "159 MiB"
msgstr "159 МіБ"
#. type: tbl table
-#: ../src/xz/xz.1:2484
+#: ../src/xz/xz.1
#, no-wrap
msgid "311 MiB"
msgstr "311 МіБ"
#. type: Plain text
-#: ../src/xz/xz.1:2493
-msgid ""
-"The default preset level in LZMA Utils is B<-7> while in XZ Utils it is "
-"B<-6>, so both use an 8 MiB dictionary by default."
-msgstr ""
-"Типовим рівнем стискання у LZMA Utils є B<-7>, а у XZ Utils — B<-6>, отже, "
-"обидва комплекти програм типово використовують словник розміром у 8 МіБ."
+#: ../src/xz/xz.1
+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 "Типовим рівнем стискання у LZMA Utils є B<-7>, а у XZ Utils — B<-6>, отже, обидва комплекти програм типово використовують словник розміром у 8 МіБ."
#. type: SS
-#: ../src/xz/xz.1:2494
+#: ../src/xz/xz.1
#, no-wrap
msgid "Streamed vs. non-streamed .lzma files"
msgstr "Потокові і непотокові файл .lzma"
#. type: Plain text
-#: ../src/xz/xz.1:2504
-msgid ""
-"The uncompressed size of the file can be stored in the B<.lzma> header. "
-"LZMA Utils does that when compressing regular files. The alternative is to "
-"mark that uncompressed size is unknown and use end-of-payload marker to "
-"indicate where the decompressor should stop. LZMA Utils uses this method "
-"when uncompressed size isn't known, which is the case, for example, in pipes."
-msgstr ""
-"Розмір нестисненого файла може бути збережено у заголовку B<.lzma>. LZMA "
-"Utils зберігають дані при стисканні звичайних файлів. Альтернативним "
-"підходом є позначення нестисненого розміру як невідомого і використання "
-"позначки кінця вмісту для позначення місця, де засіб розпаковування має "
-"зупинитися. У LZMA Utils цей спосіб використовують, якщо нестиснений розмір "
-"є невідомим, що трапляється, наприклад, для конвеєрів обробки даних."
+#: ../src/xz/xz.1
+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 "Розмір нестисненого файла може бути збережено у заголовку B<.lzma>. LZMA Utils зберігають дані при стисканні звичайних файлів. Альтернативним підходом є позначення нестисненого розміру як невідомого і використання позначки кінця вмісту для позначення місця, де засіб розпаковування має зупинитися. У LZMA Utils цей спосіб використовують, якщо нестиснений розмір є невідомим, що трапляється, наприклад, для конвеєрів обробки даних."
#. type: Plain text
-#: ../src/xz/xz.1:2525
-msgid ""
-"B<xz> supports decompressing B<.lzma> files with or without end-of-payload "
-"marker, but all B<.lzma> files created by B<xz> will use end-of-payload "
-"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> передбачено підтримку розпаковування файлів B<.lzma> з позначкою "
-"кінця вмісту та без неї, але усі файли B<.lzma>, які створено за допомогою "
-"B<xz>, використовують позначку кінця вмісту, а нестиснений розмір у "
-"заголовку B<.lzma> позначають як невідомий. Це може призвести до проблем у "
-"деяких нетипових ситуаціях. Наприклад, розпакувальник B<.lzma> у вбудованому "
-"пристрої може працювати лише з файлами, для яких відомий нестиснений розмір. "
-"Якщо ви зіткнулися з цією проблемою, вам слід скористатися LZMA Utils або "
-"LZMA SDK для створення файлів B<.lzma> із відомим розміром нестиснених даних."
+#: ../src/xz/xz.1
+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> передбачено підтримку розпаковування файлів B<.lzma> з позначкою кінця вмісту та без неї, але усі файли B<.lzma>, які створено за допомогою B<xz>, використовують позначку кінця вмісту, а нестиснений розмір у заголовку B<.lzma> позначають як невідомий. Це може призвести до проблем у деяких нетипових ситуаціях. Наприклад, розпакувальник B<.lzma> у вбудованому пристрої може працювати лише з файлами, для яких відомий нестиснений розмір. Якщо ви зіткнулися з цією проблемою, вам слід скористатися LZMA Utils або LZMA SDK для створення файлів B<.lzma> із відомим розміром нестиснених даних."
#. type: SS
-#: ../src/xz/xz.1:2526
+#: ../src/xz/xz.1
#, no-wrap
msgid "Unsupported .lzma files"
msgstr "Непідтримувані файли .lzma"
#. type: Plain text
-#: ../src/xz/xz.1:2549
-msgid ""
-"The B<.lzma> format allows I<lc> values up to 8, and I<lp> values up to 4. "
-"LZMA Utils can decompress files with any I<lc> and I<lp>, but always creates "
-"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 ""
-"У форматі B<.lzma> можливі значення I<lc> аж до 8 і значення I<lp> аж до 4. "
-"LZMA Utils можуть розпаковувати файли із будь-якими значеннями I<lc> і "
-"I<lp>, але завжди створюють файли з B<lc=3> і B<lp=0>. Створення файлів з "
-"іншими значеннями I<lc> і I<lp> є можливим за допомогою B<xz> і LZMA SDK."
+#: ../src/xz/xz.1
+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 "У форматі B<.lzma> можливі значення I<lc> аж до 8 і значення I<lp> аж до 4. LZMA Utils можуть розпаковувати файли із будь-якими значеннями I<lc> і I<lp>, але завжди створюють файли з B<lc=3> і B<lp=0>. Створення файлів з іншими значеннями I<lc> і I<lp> є можливим за допомогою B<xz> і LZMA SDK."
#. type: Plain text
-#: ../src/xz/xz.1:2560
-msgid ""
-"The implementation of the LZMA1 filter in liblzma requires that the sum of "
-"I<lc> and I<lp> must not exceed 4. Thus, B<.lzma> files, which exceed this "
-"limitation, cannot be decompressed with B<xz>."
-msgstr ""
-"Реалізація фільтра LZMA1 у liblzma потребує, щоби сума I<lc> і I<lp> не "
-"перевищувала 4. Отже, файли B<.lzma>, у яких перевищено обмеження, не може "
-"бути розпаковано за допомогою B<xz>."
+#: ../src/xz/xz.1
+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 "Реалізація фільтра LZMA1 у liblzma потребує, щоби сума I<lc> і I<lp> не перевищувала 4. Отже, файли B<.lzma>, у яких перевищено обмеження, не може бути розпаковано за допомогою B<xz>."
#. type: Plain text
-#: ../src/xz/xz.1:2575
-msgid ""
-"LZMA Utils creates only B<.lzma> files which have a dictionary size of "
-"2^I<n> (a power of 2) but accepts files with any dictionary size. liblzma "
-"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 ""
-"LZMA Utils створюють лише файли B<.lzma>, які мають розмір словника у 2^I<n> "
-"(степінь 2), але приймають файли із будь-яким розміром словника. liblzma "
-"приймає лише файли B<.lzma>, які мають розмір словника 2^I<n> або 2^I<n> + "
-"2^(I<n>-1). Так зроблено для зменшення помилок при виявленні файлів B<.lzma>."
+#: ../src/xz/xz.1
+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 "LZMA Utils створюють лише файли B<.lzma>, які мають розмір словника у 2^I<n> (степінь 2), але приймають файли із будь-яким розміром словника. liblzma приймає лише файли B<.lzma>, які мають розмір словника 2^I<n> або 2^I<n> + 2^(I<n>-1). Так зроблено для зменшення помилок при виявленні файлів B<.lzma>."
#. type: Plain text
-#: ../src/xz/xz.1:2580
-msgid ""
-"These limitations shouldn't be a problem in practice, since practically all "
-"B<.lzma> files have been compressed with settings that liblzma will accept."
-msgstr ""
-"Ці обмеження не мають призводити до проблем на практиці, оскільки практично "
-"усі файли B<.lzma> було стиснено з використанням параметрів, які приймає "
-"liblzma."
+#: ../src/xz/xz.1
+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 "Ці обмеження не мають призводити до проблем на практиці, оскільки практично усі файли B<.lzma> було стиснено з використанням параметрів, які приймає liblzma."
#. type: SS
-#: ../src/xz/xz.1:2581
+#: ../src/xz/xz.1
#, no-wrap
msgid "Trailing garbage"
msgstr "Кінцевий мотлох"
#. type: Plain text
-#: ../src/xz/xz.1:2591
-msgid ""
-"When decompressing, LZMA Utils silently ignore everything after the first B<."
-"lzma> stream. In most situations, this is a bug. This also means that LZMA "
-"Utils don't support decompressing concatenated B<.lzma> files."
-msgstr ""
-"При розпаковуванні LZMA Utils без повідомлень ігнорують усі дані після "
-"першого потоку B<.lzma>. У більшості випадків це пов'язано із вадою у "
-"програмі. Це також означає, що у LZMA Utils не передбачено підтримки "
-"розпаковування з'єднаних файлів B<.lzma>."
+#: ../src/xz/xz.1
+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 "При розпаковуванні LZMA Utils без повідомлень ігнорують усі дані після першого потоку B<.lzma>. У більшості випадків це пов'язано із вадою у програмі. Це також означає, що у LZMA Utils не передбачено підтримки розпаковування з'єднаних файлів B<.lzma>."
#. type: Plain text
-#: ../src/xz/xz.1:2601
-msgid ""
-"If there is data left after the first B<.lzma> stream, B<xz> considers the "
-"file to be corrupt unless B<--single-stream> was used. This may break "
-"obscure scripts which have assumed that trailing garbage is ignored."
-msgstr ""
-"Якщо після першого потоку B<.lzma> лишилися дані, B<xz> вважатиме файл "
-"пошкодженим, якщо не було використано B<--single-stream>. Це може зашкодити "
-"роботі скриптів, де зроблено припущення, що кінцеві зайві дані буде "
-"проігноровано."
+#: ../src/xz/xz.1
+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 "Якщо після першого потоку B<.lzma> лишилися дані, B<xz> вважатиме файл пошкодженим, якщо не було використано B<--single-stream>. Це може зашкодити роботі скриптів, де зроблено припущення, що кінцеві зайві дані буде проігноровано."
#. type: SH
-#: ../src/xz/xz.1:2602 ../src/xzdec/xzdec.1:117
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "NOTES"
msgstr "ПРИМІТКИ"
#. type: SS
-#: ../src/xz/xz.1:2604
+#: ../src/xz/xz.1
#, no-wrap
msgid "Compressed output may vary"
msgstr "Стискання даних може бути різним"
#. type: Plain text
-#: ../src/xz/xz.1:2615
-msgid ""
-"The exact compressed output produced from the same uncompressed input file "
-"may vary between XZ Utils versions even if compression options are "
-"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 ""
-"Точні стиснені дані, які створено на основі того самого нестисненого файла "
-"вхідних даних, можуть бути різними для різних версій XZ Utils, навіть якщо "
-"використано однакові параметри стискання. Причиною цього є удосконалення у "
-"кодувальнику (пришвидшення або краще стискання) без зміни формату файлів. "
-"Виведені дані можуть бути різними навіть для різних збірок тієї самої версії "
-"XZ Utils, якщо використано різні параметри збирання."
+#: ../src/xz/xz.1
+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 "Точні стиснені дані, які створено на основі того самого нестисненого файла вхідних даних, можуть бути різними для різних версій XZ Utils, навіть якщо використано однакові параметри стискання. Причиною цього є удосконалення у кодувальнику (пришвидшення або краще стискання) без зміни формату файлів. Виведені дані можуть бути різними навіть для різних збірок тієї самої версії XZ Utils, якщо використано різні параметри збирання."
#. type: Plain text
-#: ../src/xz/xz.1:2625
-msgid ""
-"The above means that once B<--rsyncable> has been implemented, the resulting "
-"files won't necessarily be rsyncable unless both old and new files have been "
-"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 ""
-"Написане вище означає, що після реалізації B<--rsyncable> файли-результати "
-"не обов'язково можна буде синхронізувати за допомогою rsyncable, якщо старий "
-"і новий файли було стиснено за допомогою тієї самої версії xz. Цю проблему "
-"можна усунути, якщо буде заморожено частину реалізації кодувальника, щоб "
-"введені для rsync дані були стабільними між версіями xz."
+#: ../src/xz/xz.1
+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 "Написане вище означає, що після реалізації B<--rsyncable> файли-результати не обов'язково можна буде синхронізувати за допомогою rsyncable, якщо старий і новий файли було стиснено за допомогою тієї самої версії xz. Цю проблему можна усунути, якщо буде заморожено частину реалізації кодувальника, щоб введені для rsync дані були стабільними між версіями xz."
#. type: SS
-#: ../src/xz/xz.1:2626
+#: ../src/xz/xz.1
#, no-wrap
msgid "Embedded .xz decompressors"
msgstr "Вбудовані розпакувальники .xz"
#. type: Plain text
-#: ../src/xz/xz.1:2643
-msgid ""
-"Embedded B<.xz> decompressor implementations like XZ Embedded don't "
-"necessarily support files created with integrity I<check> types other than "
-"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 ""
-"У вбудованих реалізаціях розпакувальника B<.xz>, подібних до XZ Embedded, не "
-"обов'язково передбачено підтримку файлів, які створено із типами "
-"I<перевірки> цілісності, відмінними від B<none> і B<crc32>. Оскільки типовим "
-"є B<--check=crc64>, вам слід використовувати B<--check=none> або B<--"
-"check=crc32> при створенні файлів для вбудованих систем."
+#: ../src/xz/xz.1
+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 "У вбудованих реалізаціях розпакувальника B<.xz>, подібних до XZ Embedded, не обов'язково передбачено підтримку файлів, які створено із типами I<перевірки> цілісності, відмінними від B<none> і B<crc32>. Оскільки типовим є B<--check=crc64>, вам слід використовувати B<--check=none> або B<--check=crc32> при створенні файлів для вбудованих систем."
#. type: Plain text
-#: ../src/xz/xz.1:2653
-msgid ""
-"Outside embedded systems, all B<.xz> format decompressors support all the "
-"I<check> types, or at least are able to decompress the file without "
-"verifying the integrity check if the particular I<check> is not supported."
-msgstr ""
-"Поза вбудованими системами, в усіх засобах розпаковування формату B<.xz> "
-"передбачено підтримку усіх типів I<перевірок> або принаймні можливість "
-"розпакувати файл без перевірки цілісності, якщо підтримки певної "
-"I<перевірки> не передбачено."
+#: ../src/xz/xz.1
+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 "Поза вбудованими системами, в усіх засобах розпаковування формату B<.xz> передбачено підтримку усіх типів I<перевірок> або принаймні можливість розпакувати файл без перевірки цілісності, якщо підтримки певної I<перевірки> не передбачено."
#. type: Plain text
-#: ../src/xz/xz.1:2656
-msgid ""
-"XZ Embedded supports BCJ filters, but only with the default start offset."
-msgstr ""
-"У XZ Embedded передбачено підтримку BCJ, але лише з типовим початковим "
-"зсувом."
+#: ../src/xz/xz.1
+msgid "XZ Embedded supports BCJ filters, but only with the default start offset."
+msgstr "У XZ Embedded передбачено підтримку BCJ, але лише з типовим початковим зсувом."
#. type: SH
-#: ../src/xz/xz.1:2657
+#: ../src/xz/xz.1
#, no-wrap
msgid "EXAMPLES"
msgstr "ПРИКЛАДИ"
#. type: SS
-#: ../src/xz/xz.1:2659
+#: ../src/xz/xz.1
#, no-wrap
msgid "Basics"
msgstr "Основи"
#. type: Plain text
-#: ../src/xz/xz.1:2669
-msgid ""
-"Compress the file I<foo> into I<foo.xz> using the default compression level "
-"(B<-6>), and remove I<foo> if compression is successful:"
-msgstr ""
-"Стиснути файл I<foo> до I<foo.xz> за допомогою типового рівня стискання "
-"(B<-6>) і вилучити I<foo>, якщо стискання відбулося успішно:"
+#: ../src/xz/xz.1
+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 "Стиснути файл I<foo> до I<foo.xz> за допомогою типового рівня стискання (B<-6>) і вилучити I<foo>, якщо стискання відбулося успішно:"
#. type: Plain text
-#: ../src/xz/xz.1:2674
-#, no-wrap
-msgid "CW<xz foo>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz foo>\n"
+msgid "\\f(CRxz foo\\fR\n"
msgstr "CW<xz foo>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2685
-msgid ""
-"Decompress I<bar.xz> into I<bar> and don't remove I<bar.xz> even if "
-"decompression is successful:"
-msgstr ""
-"Розпакувати I<bar.xz> до I<bar> і не вилучати I<bar.xz>, навіть якщо "
-"розпаковування відбулося успішно:"
+#: ../src/xz/xz.1
+msgid "Decompress I<bar.xz> into I<bar> and don't remove I<bar.xz> even if decompression is successful:"
+msgstr "Розпакувати I<bar.xz> до I<bar> і не вилучати I<bar.xz>, навіть якщо розпаковування відбулося успішно:"
#. type: Plain text
-#: ../src/xz/xz.1:2690
-#, no-wrap
-msgid "CW<xz -dk bar.xz>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz -dk bar.xz>\n"
+msgid "\\f(CRxz -dk bar.xz\\fR\n"
msgstr "CW<xz -dk bar.xz>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2703
-msgid ""
-"Create I<baz.tar.xz> with the preset B<-4e> (B<-4 --extreme>), which is "
-"slower than the default B<-6>, but needs less memory for compression and "
-"decompression (48\\ MiB and 5\\ MiB, respectively):"
-msgstr ""
-"Створити I<baz.tar.xz> з використанням шаблона B<-4e> (B<-4 --extreme>), "
-"який є повільнішими за типовий B<-6>, але потребує менше пам'яті для "
-"стискання та розпаковування (48\\ МіБ та 5\\ МіБ, відповідно):"
+#: ../src/xz/xz.1
+msgid "Create I<baz.tar.xz> with the preset B<-4e> (B<-4 --extreme>), which is slower than the default B<-6>, but needs less memory for compression and decompression (48\\ MiB and 5\\ MiB, respectively):"
+msgstr "Створити I<baz.tar.xz> з використанням шаблона B<-4e> (B<-4 --extreme>), який є повільнішими за типовий B<-6>, але потребує менше пам'яті для стискання та розпаковування (48\\ МіБ та 5\\ МіБ, відповідно):"
#. type: Plain text
-#: ../src/xz/xz.1:2708
-#, no-wrap
-msgid "CW<tar cf - baz | xz -4e E<gt> baz.tar.xz>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<tar cf - baz | xz -4e E<gt> baz.tar.xz>\n"
+msgid "\\f(CRtar cf - baz | xz -4e E<gt> baz.tar.xz\\fR\n"
msgstr "CW<tar cf - baz | xz -4e E<gt> baz.tar.xz>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2714
-msgid ""
-"A mix of compressed and uncompressed files can be decompressed to standard "
-"output with a single command:"
-msgstr ""
-"Суміш стиснених і нестиснених файлів можна розпакувати до стандартного "
-"виведення за допомогою єдиної команди:"
+#: ../src/xz/xz.1
+msgid "A mix of compressed and uncompressed files can be decompressed to standard output with a single command:"
+msgstr "Суміш стиснених і нестиснених файлів можна розпакувати до стандартного виведення за допомогою єдиної команди:"
#. type: Plain text
-#: ../src/xz/xz.1:2719
-#, no-wrap
-msgid "CW<xz -dcf a.txt b.txt.xz c.txt d.txt.lzma E<gt> abcd.txt>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz -dcf a.txt b.txt.xz c.txt d.txt.lzma E<gt> abcd.txt>\n"
+msgid "\\f(CRxz -dcf a.txt b.txt.xz c.txt d.txt.lzma E<gt> abcd.txt\\fR\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:2723
+#: ../src/xz/xz.1
#, no-wrap
msgid "Parallel compression of many files"
msgstr "Паралельне стискання багатьох файлів"
#. type: Plain text
-#: ../src/xz/xz.1:2729
-msgid ""
-"On GNU and *BSD, B<find>(1) and B<xargs>(1) can be used to parallelize "
-"compression of many files:"
-msgstr ""
-"У GNU і *BSD можна скористатися B<find>(1) і B<xargs>(1) для паралельного "
-"стискання багатьох файлів:"
+#: ../src/xz/xz.1
+msgid "On GNU and *BSD, B<find>(1) and B<xargs>(1) can be used to parallelize compression of many files:"
+msgstr "У GNU і *BSD можна скористатися B<find>(1) і B<xargs>(1) для паралельного стискання багатьох файлів:"
#. type: Plain text
-#: ../src/xz/xz.1:2735
-#, no-wrap
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid ""
+#| "CW<find . -type f \\e! -name '*.xz' -print0 \\e\n"
+#| " | xargs -0r -P4 -n16 xz -T1>\n"
msgid ""
-"CW<find . -type f \\e! -name '*.xz' -print0 \\e\n"
-" | xargs -0r -P4 -n16 xz -T1>\n"
+"\\f(CRfind . -type f \\e! -name '*.xz' -print0 \\e\n"
+" | xargs -0r -P4 -n16 xz -T1\\fR\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:2757
-msgid ""
-"The B<-P> option to B<xargs>(1) sets the number of parallel B<xz> "
-"processes. The best value for the B<-n> option depends on how many files "
-"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 ""
-"Параметр B<-P> B<xargs>(1) встановлює кількість паралельних процесів B<xz>. "
-"Найкраще значення параметра B<-n> залежить від того, скільки файлів має бути "
-"стиснено. Якщо файлів мало, значенням, ймовірно, має бути 1. Якщо файлів "
-"десятки тисяч, може знадобитися значення 100 або навіть більше, щоб зменшити "
-"кількість процесів B<xz>, які врешті створить B<xargs>(1)."
+#: ../src/xz/xz.1
+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 "Параметр B<-P> B<xargs>(1) встановлює кількість паралельних процесів B<xz>. Найкраще значення параметра B<-n> залежить від того, скільки файлів має бути стиснено. Якщо файлів мало, значенням, ймовірно, має бути 1. Якщо файлів десятки тисяч, може знадобитися значення 100 або навіть більше, щоб зменшити кількість процесів B<xz>, які врешті створить B<xargs>(1)."
#. type: Plain text
-#: ../src/xz/xz.1:2765
-msgid ""
-"The option B<-T1> for B<xz> is there to force it to single-threaded mode, "
-"because B<xargs>(1) is used to control the amount of parallelization."
-msgstr ""
-"Параметр B<-T1> для B<xz> тут для примусового встановлення однопотокового "
-"режиму, оскільки для керування рівнем паралелізації використано B<xargs>(1)."
+#: ../src/xz/xz.1
+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 "Параметр B<-T1> для B<xz> тут для примусового встановлення однопотокового режиму, оскільки для керування рівнем паралелізації використано B<xargs>(1)."
#. type: SS
-#: ../src/xz/xz.1:2766
+#: ../src/xz/xz.1
#, no-wrap
msgid "Robot mode"
msgstr "Режим робота"
#. type: Plain text
-#: ../src/xz/xz.1:2769
-msgid ""
-"Calculate how many bytes have been saved in total after compressing multiple "
-"files:"
-msgstr ""
-"Обчислити скільки байтів було заощаджено загалом після стискання декількох "
-"файлів:"
+#: ../src/xz/xz.1
+msgid "Calculate how many bytes have been saved in total after compressing multiple files:"
+msgstr "Обчислити скільки байтів було заощаджено загалом після стискання декількох файлів:"
#. type: Plain text
-#: ../src/xz/xz.1:2774
-#, no-wrap
-msgid "CW<xz --robot --list *.xz | awk '/^totals/{print $5-$4}'>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --robot --list *.xz | awk '/^totals/{print $5-$4}'>\n"
+msgid "\\f(CRxz --robot --list *.xz | awk '/^totals/{print $5-$4}'\\fR\n"
msgstr "CW<xz --robot --list *.xz | awk '/^totals/{print $5-$4}'>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2789
-msgid ""
-"A script may want to know that it is using new enough B<xz>. The following "
-"B<sh>(1) script checks that the version number of the B<xz> tool is at "
-"least 5.0.0. This method is compatible with old beta versions, which didn't "
-"support the B<--robot> option:"
-msgstr ""
-"Скрипту можуть знадобитися дані щодо того, що використано достатньо нову "
-"версію B<xz>. У наведеному нижче скрипті B<sh>(1) виконано перевірку того, "
-"що номер версії засобу B<xz> є принаймні рівним 5.0.0. Цей спосіб є сумісним "
-"зі старими тестовими версіями, де не передбачено підтримки параметра B<--"
-"robot>:"
+#: ../src/xz/xz.1
+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 "Скрипту можуть знадобитися дані щодо того, що використано достатньо нову версію B<xz>. У наведеному нижче скрипті B<sh>(1) виконано перевірку того, що номер версії засобу B<xz> є принаймні рівним 5.0.0. Цей спосіб є сумісним зі старими тестовими версіями, де не передбачено підтримки параметра B<--robot>:"
#. type: Plain text
-#: ../src/xz/xz.1:2798
-#, no-wrap
+#: ../src/xz/xz.1
+#, fuzzy, 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"
msgid ""
-"CW<if ! eval \"$(xz --robot --version 2E<gt> /dev/null)\" ||\n"
+"\\f(CRif ! 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"
+"unset XZ_VERSION LIBLZMA_VERSION\\fR\n"
msgstr ""
"CW<if ! eval \"$(xz --robot --version 2E<gt> /dev/null)\" ||\n"
" [ \"$XZ_VERSION\" -lt 50000002 ]; then\n"
@@ -4832,24 +3238,27 @@ msgstr ""
"unset XZ_VERSION LIBLZMA_VERSION>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2805
-msgid ""
-"Set a memory usage limit for decompression using B<XZ_OPT>, but if a limit "
-"has already been set, don't increase it:"
-msgstr ""
-"Встановити обмеження на використання пам'яті для розпаковування за допомогою "
-"B<XZ_OPT>, але якщо обмеження вже було встановлено, не збільшувати його:"
+#: ../src/xz/xz.1
+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 "Встановити обмеження на використання пам'яті для розпаковування за допомогою B<XZ_OPT>, але якщо обмеження вже було встановлено, не збільшувати його:"
#. type: Plain text
-#: ../src/xz/xz.1:2815
-#, no-wrap
+#: ../src/xz/xz.1
+#, fuzzy, 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"
msgid ""
-"CW<NEWLIM=$((123 E<lt>E<lt> 20))\\ \\ # 123 MiB\n"
+"\\f(CRNEWLIM=$((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"
+"fi\\fR\n"
msgstr ""
"CW<NEWLIM=$((123 E<lt>E<lt> 20))\\ \\ # 123 MiB\n"
"OLDLIM=$(xz --robot --info-memory | cut -f3)\n"
@@ -4859,902 +3268,615 @@ msgstr ""
"fi>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2825
-msgid ""
-"The simplest use for custom filter chains is customizing a LZMA2 preset. "
-"This can be useful, because the presets cover only a subset of the "
-"potentially useful combinations of compression settings."
-msgstr ""
-"Найпростішим використанням ланцюжка фільтрів є налаштовування шаблона LZMA2. "
-"Це може бути корисним, оскільки у шаблонах використано лише підмножину "
-"потенційно корисних комбінацій параметрів стискання."
+#: ../src/xz/xz.1
+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 "Найпростішим використанням ланцюжка фільтрів є налаштовування шаблона LZMA2. Це може бути корисним, оскільки у шаблонах використано лише підмножину потенційно корисних комбінацій параметрів стискання."
#. type: Plain text
-#: ../src/xz/xz.1:2833
-msgid ""
-"The CompCPU columns of the tables from the descriptions of the options "
-"B<-0> ... B<-9> and B<--extreme> are useful when customizing LZMA2 presets. "
-"Here are the relevant parts collected from those two tables:"
-msgstr ""
-"При налаштовуванні шаблонів LZMA2 корисними є стовпчики CompCPU таблиць з "
-"описів параметрів B<-0> ... B<-9> і B<--extreme>. Ось відповідні частини з "
-"цих двох таблиць:"
+#: ../src/xz/xz.1
+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 "При налаштовуванні шаблонів LZMA2 корисними є стовпчики CompCPU таблиць з описів параметрів B<-0> ... B<-9> і B<--extreme>. Ось відповідні частини з цих двох таблиць:"
#. type: Plain text
-#: ../src/xz/xz.1:2858
-msgid ""
-"If you know that a file requires somewhat big dictionary (for example, 32\\ "
-"MiB) to compress well, but you want to compress it quicker than B<xz -8> "
-"would do, a preset with a low CompCPU value (for example, 1) can be "
-"modified to use a bigger dictionary:"
-msgstr ""
-"Якщо вам відомо, що певний файл потребує дещо більшого словника (наприклад, "
-"32\\ МіБ) для якісного стискання, але ви хочете стиснути його швидше за "
-"команду B<xz -8>, можна внести зміни до шаблона із нижчим значенням CompCPU "
-"(наприклад, 1) для використання більшого словника:"
+#: ../src/xz/xz.1
+msgid "If you know that a file requires somewhat big dictionary (for example, 32\\ MiB) to compress well, but you want to compress it quicker than B<xz -8> would do, a preset with a low CompCPU value (for example, 1) can be modified to use a bigger dictionary:"
+msgstr "Якщо вам відомо, що певний файл потребує дещо більшого словника (наприклад, 32\\ МіБ) для якісного стискання, але ви хочете стиснути його швидше за команду B<xz -8>, можна внести зміни до шаблона із нижчим значенням CompCPU (наприклад, 1) для використання більшого словника:"
#. type: Plain text
-#: ../src/xz/xz.1:2863
-#, no-wrap
-msgid "CW<xz --lzma2=preset=1,dict=32MiB foo.tar>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --lzma2=preset=1,dict=32MiB foo.tar>\n"
+msgid "\\f(CRxz --lzma2=preset=1,dict=32MiB foo.tar\\fR\n"
msgstr "CW<xz --lzma2=preset=1,dict=32MiB foo.tar>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2879
-msgid ""
-"With certain files, the above command may be faster than B<xz -6> while "
-"compressing significantly better. However, it must be emphasized that only "
-"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 ""
-"Для певних файлів наведена вище команда може працювати швидше за B<xz -6> і "
-"стискати дані значно краще. Втім, слід наголосити, переваги більшого "
-"словника з одночасним низьким значенням CompCPU проявляються лише для деяких "
-"файлів. Найочевиднішим випадком, коли великий словник є корисним, є випадок, "
-"коли архів містить дуже подібні файли розміром у принаймні декілька "
-"мегабайтів. Розмір словника має бути значно більшим за будь-який окремий "
-"файл, щоб у LZMA2 було використано усі переваги подібностей між послідовними "
-"файлами."
+#: ../src/xz/xz.1
+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 "Для певних файлів наведена вище команда може працювати швидше за B<xz -6> і стискати дані значно краще. Втім, слід наголосити, переваги більшого словника з одночасним низьким значенням CompCPU проявляються лише для деяких файлів. Найочевиднішим випадком, коли великий словник є корисним, є випадок, коли архів містить дуже подібні файли розміром у принаймні декілька мегабайтів. Розмір словника має бути значно більшим за будь-який окремий файл, щоб у LZMA2 було використано усі переваги подібностей між послідовними файлами."
#. type: Plain text
-#: ../src/xz/xz.1:2886
-msgid ""
-"If very high compressor and decompressor memory usage is fine, and the file "
-"being compressed is at least several hundred megabytes, it may be useful to "
-"use an even bigger dictionary than the 64 MiB that B<xz -9> would use:"
-msgstr ""
-"Якщо дуже високий рівень використання пам'яті у засобі стискання або "
-"розпаковування не є проблемою, і файли, який стискають має об'єм у принаймні "
-"декілька десятків мегабайтів, може бути корисним використання навіть "
-"більшого за 64 МіБ словника, який використано у B<xz -9>:"
+#: ../src/xz/xz.1
+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 "Якщо дуже високий рівень використання пам'яті у засобі стискання або розпаковування не є проблемою, і файли, який стискають має об'єм у принаймні декілька десятків мегабайтів, може бути корисним використання навіть більшого за 64 МіБ словника, який використано у B<xz -9>:"
#. type: Plain text
-#: ../src/xz/xz.1:2891
-#, no-wrap
-msgid "CW<xz -vv --lzma2=dict=192MiB big_foo.tar>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz -vv --lzma2=dict=192MiB big_foo.tar>\n"
+msgid "\\f(CRxz -vv --lzma2=dict=192MiB big_foo.tar\\fR\n"
msgstr "CW<xz -vv --lzma2=dict=192MiB big_foo.tar>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2904
-msgid ""
-"Using B<-vv> (B<--verbose --verbose>) like in the above example can be "
-"useful to see the memory requirements of the compressor and decompressor. "
-"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 ""
-"Використання B<-vv> (B<--verbose --verbose>), подібно до наведеного вище "
-"прикладу, може бути корисним для перегляду вимог з боку засобів стискання та "
-"розпаковування до пам'яті. Пам'ятайте, що використання словника, розмір "
-"якого перевищує розмір файла, який стискають, є простоюю витратою пам'яті, "
-"отже наведену вище команду не варто використовувати для малих файлів."
+#: ../src/xz/xz.1
+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 "Використання B<-vv> (B<--verbose --verbose>), подібно до наведеного вище прикладу, може бути корисним для перегляду вимог з боку засобів стискання та розпаковування до пам'яті. Пам'ятайте, що використання словника, розмір якого перевищує розмір файла, який стискають, є простоюю витратою пам'яті, отже наведену вище команду не варто використовувати для малих файлів."
#. type: Plain text
-#: ../src/xz/xz.1:2916
-msgid ""
-"Sometimes the compression time doesn't matter, but the decompressor memory "
-"usage has to be kept low, for example, to make it possible to decompress the "
-"file on an embedded system. The following command uses B<-6e> (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 ""
-"Іноді час стискання не має значення, але використання пам'яті засобом "
-"розпаковування має бути низьким для того, щоб, наприклад, уможливити "
-"розпаковування файла у вбудованій системі. У наведеній нижче команді "
-"використано B<-6e> (B<-6 --extreme>) як основу і встановлено розмір словника "
-"лише у 64\\ КіБ. Файл-результат можна розпакувати за допомогою XZ Embedded "
-"(ось чому використано B<--check=crc32>) з використанням лише 100\\ КіБ "
-"пам'яті."
+#: ../src/xz/xz.1
+msgid "Sometimes the compression time doesn't matter, but the decompressor memory usage has to be kept low, for example, to make it possible to decompress the file on an embedded system. The following command uses B<-6e> (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 "Іноді час стискання не має значення, але використання пам'яті засобом розпаковування має бути низьким для того, щоб, наприклад, уможливити розпаковування файла у вбудованій системі. У наведеній нижче команді використано B<-6e> (B<-6 --extreme>) як основу і встановлено розмір словника лише у 64\\ КіБ. Файл-результат можна розпакувати за допомогою XZ Embedded (ось чому використано B<--check=crc32>) з використанням лише 100\\ КіБ пам'яті."
#. type: Plain text
-#: ../src/xz/xz.1:2921
-#, no-wrap
-msgid "CW<xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo>\n"
+msgid "\\f(CRxz --check=crc32 --lzma2=preset=6e,dict=64KiB foo\\fR\n"
msgstr "CW<xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2944
-msgid ""
-"If you want to squeeze out as many bytes as possible, adjusting the number "
-"of literal context bits (I<lc>) and number of position bits (I<pb>) can "
-"sometimes help. Adjusting the number of literal position bits (I<lp>) "
-"might help too, but usually I<lc> and I<pb> are more important. For "
-"example, a source code archive contains mostly US-ASCII text, so something "
-"like the following might give slightly (like 0.1\\ %) smaller file than B<xz "
-"-6e> (try also without B<lc=4>):"
-msgstr ""
-"Якщо вам потрібно витиснути зі стискання максимальну кількість байтів, може "
-"допомогти коригування кількості бітів контексту літералів (I<lc>) та "
-"кількість позиційних бітів (I<pb>). Також може допомогти коригування "
-"кількості бітів позиції літералів (I<lp>), але, зазвичай, важливішими є "
-"I<lc> і I<pb>. Наприклад, в архівах зі початковим кодом міститься "
-"здебільшого текст US-ASCII, щось подібне до наведеного нижче може дещо (на "
-"щось близьке до 0,1\\ %) зменшити файл, порівняно із B<xz -6e> (спробуйте "
-"також без B<lc=4>):"
+#: ../src/xz/xz.1
+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. For example, a source code archive contains mostly US-ASCII text, so something like the following might give slightly (like 0.1\\ %) smaller file than B<xz -6e> (try also without B<lc=4>):"
+msgstr "Якщо вам потрібно витиснути зі стискання максимальну кількість байтів, може допомогти коригування кількості бітів контексту літералів (I<lc>) та кількість позиційних бітів (I<pb>). Також може допомогти коригування кількості бітів позиції літералів (I<lp>), але, зазвичай, важливішими є I<lc> і I<pb>. Наприклад, в архівах зі початковим кодом міститься здебільшого текст US-ASCII, щось подібне до наведеного нижче може дещо (на щось близьке до 0,1\\ %) зменшити файл, порівняно із B<xz -6e> (спробуйте також без B<lc=4>):"
#. type: Plain text
-#: ../src/xz/xz.1:2949
-#, no-wrap
-msgid "CW<xz --lzma2=preset=6e,pb=0,lc=4 source_code.tar>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --lzma2=preset=6e,pb=0,lc=4 source_code.tar>\n"
+msgid "\\f(CRxz --lzma2=preset=6e,pb=0,lc=4 source_code.tar\\fR\n"
msgstr "CW<xz --lzma2=preset=6e,pb=0,lc=4 source_code.tar>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2957
-msgid ""
-"Using another filter together with LZMA2 can improve compression with "
-"certain file types. For example, to compress a x86-32 or x86-64 shared "
-"library using the x86 BCJ filter:"
-msgstr ""
-"Використання іншого фільтра разом із LZMA2 може покращити стискання для "
-"певних типів файлів. Наприклад, для стискання бібліотеки спільного "
-"користування x86-32 або x86-64 з використанням фільтра BCJ x86 скористайтеся "
-"такою командою:"
+#: ../src/xz/xz.1
+msgid "Using another filter together with LZMA2 can improve compression with certain file types. For example, to compress a x86-32 or x86-64 shared library using the x86 BCJ filter:"
+msgstr "Використання іншого фільтра разом із LZMA2 може покращити стискання для певних типів файлів. Наприклад, для стискання бібліотеки спільного користування x86-32 або x86-64 з використанням фільтра BCJ x86 скористайтеся такою командою:"
#. type: Plain text
-#: ../src/xz/xz.1:2962
-#, no-wrap
-msgid "CW<xz --x86 --lzma2 libfoo.so>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --x86 --lzma2 libfoo.so>\n"
+msgid "\\f(CRxz --x86 --lzma2 libfoo.so\\fR\n"
msgstr "CW<xz --x86 --lzma2 libfoo.so>\n"
#. type: Plain text
-#: ../src/xz/xz.1:2976
-msgid ""
-"Note that the order of the filter options is significant. If B<--x86> is "
-"specified after B<--lzma2>, B<xz> will give an error, because there cannot "
-"be any filter after LZMA2, and also because the x86 BCJ filter cannot be "
-"used as the last filter in the chain."
-msgstr ""
-"Зауважте, що порядок параметрів фільтрування має значення. Якщо B<--x86> "
-"вказано після B<--lzma2>, B<xz> повідомить про помилку, оскільки після LZMA2 "
-"не може бути жодного фільтра, а також оскільки фільтр BCJ x86 не можна "
-"використовувати як останній фільтр у ланцюжку."
+#: ../src/xz/xz.1
+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 "Зауважте, що порядок параметрів фільтрування має значення. Якщо B<--x86> вказано після B<--lzma2>, B<xz> повідомить про помилку, оскільки після LZMA2 не може бути жодного фільтра, а також оскільки фільтр BCJ x86 не можна використовувати як останній фільтр у ланцюжку."
#. type: Plain text
-#: ../src/xz/xz.1:2982
-msgid ""
-"The Delta filter together with LZMA2 can give good results with bitmap "
-"images. It should usually beat PNG, which has a few more advanced filters "
-"than simple delta but uses Deflate for the actual compression."
-msgstr ""
-"Фільтр Delta разом із LZMA2 може дати добрі результати для растрових "
-"зображень. Зазвичай, результати є кращими за формат PNG, у якого є декілька "
-"більш досконалих фільтрів, ніж проста дельта, але там використовують для "
-"стискання Deflate."
+#: ../src/xz/xz.1
+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 "Фільтр Delta разом із LZMA2 може дати добрі результати для растрових зображень. Зазвичай, результати є кращими за формат PNG, у якого є декілька більш досконалих фільтрів, ніж проста дельта, але там використовують для стискання Deflate."
#. type: Plain text
-#: ../src/xz/xz.1:2992
-msgid ""
-"The image has to be saved in uncompressed format, for example, as "
-"uncompressed TIFF. The distance parameter of the Delta filter is set to "
-"match the number of bytes per pixel in the image. For example, 24-bit RGB "
-"bitmap needs B<dist=3>, and it is also good to pass B<pb=0> to LZMA2 to "
-"accommodate the three-byte alignment:"
-msgstr ""
-"Зображення слід берегти у нестисненому форматі, наприклад, як нестиснений "
-"TIFF. Параметр відстані фільтра Delta встановлюють так, щоб він збігався із "
-"кількістю байтів на піксель у зображенні. Наприклад, для 24-бітового "
-"растрового зображення RGB слід вказати B<dist=3>, а також добре передати "
-"B<pb=0> до LZMA2 для пристосовування до трибайтового вирівнювання:"
+#: ../src/xz/xz.1
+msgid "The image has to be saved in uncompressed format, for example, as uncompressed TIFF. The distance parameter of the Delta filter is set to match the number of bytes per pixel in the image. For example, 24-bit RGB bitmap needs B<dist=3>, and it is also good to pass B<pb=0> to LZMA2 to accommodate the three-byte alignment:"
+msgstr "Зображення слід берегти у нестисненому форматі, наприклад, як нестиснений TIFF. Параметр відстані фільтра Delta встановлюють так, щоб він збігався із кількістю байтів на піксель у зображенні. Наприклад, для 24-бітового растрового зображення RGB слід вказати B<dist=3>, а також добре передати B<pb=0> до LZMA2 для пристосовування до трибайтового вирівнювання:"
#. type: Plain text
-#: ../src/xz/xz.1:2997
-#, no-wrap
-msgid "CW<xz --delta=dist=3 --lzma2=pb=0 foo.tiff>\n"
+#: ../src/xz/xz.1
+#, fuzzy, no-wrap
+#| msgid "CW<xz --delta=dist=3 --lzma2=pb=0 foo.tiff>\n"
+msgid "\\f(CRxz --delta=dist=3 --lzma2=pb=0 foo.tiff\\fR\n"
msgstr "CW<xz --delta=dist=3 --lzma2=pb=0 foo.tiff>\n"
#. type: Plain text
-#: ../src/xz/xz.1:3005
-msgid ""
-"If multiple images have been put into a single archive (for example, B<."
-"tar>), the Delta filter will work on that too as long as all images have the "
-"same number of bytes per pixel."
-msgstr ""
-"Якщо в один архів запаковано декілька зображень (наприклад, в архів B<."
-"tar>), фільтр Delta також даватиме добрі результати, якщо у всіх зображеннях "
-"однакова кількість байтів для кожного пікселя."
+#: ../src/xz/xz.1
+msgid "If multiple images have been put into a single archive (for example, B<.tar>), the Delta filter will work on that too as long as all images have the same number of bytes per pixel."
+msgstr "Якщо в один архів запаковано декілька зображень (наприклад, в архів B<.tar>), фільтр Delta також даватиме добрі результати, якщо у всіх зображеннях однакова кількість байтів для кожного пікселя."
#. type: SH
-#: ../src/xz/xz.1:3006 ../src/xzdec/xzdec.1:143 ../src/lzmainfo/lzmainfo.1:59
-#: ../src/scripts/xzdiff.1:65 ../src/scripts/xzgrep.1:106
-#: ../src/scripts/xzless.1:65 ../src/scripts/xzmore.1:51
+#: ../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
#, no-wrap
msgid "SEE ALSO"
msgstr "ДИВ. ТАКОЖ"
#. type: Plain text
-#: ../src/xz/xz.1:3015
-msgid ""
-"B<xzdec>(1), B<xzdiff>(1), B<xzgrep>(1), B<xzless>(1), B<xzmore>(1), "
-"B<gzip>(1), B<bzip2>(1), B<7z>(1)"
-msgstr ""
-"B<xzdec>(1), B<xzdiff>(1), B<xzgrep>(1), B<xzless>(1), B<xzmore>(1), "
-"B<gzip>(1), B<bzip2>(1), B<7z>(1)"
+#: ../src/xz/xz.1
+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:3017
+#: ../src/xz/xz.1
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:3019 ../src/xzdec/xzdec.1:146
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
msgid "XZ Embedded: E<lt>https://tukaani.org/xz/embedded.htmlE<gt>"
msgstr "Вбудовуваний XZ: E<lt>https://tukaani.org/xz/embedded.htmlE<gt>"
#. type: Plain text
-#: ../src/xz/xz.1:3020
+#: ../src/xz/xz.1
msgid "LZMA SDK: E<lt>https://7-zip.org/sdk.htmlE<gt>"
msgstr "LZMA SDK: E<lt>https://7-zip.org/sdk.htmlE<gt>"
#. type: TH
-#: ../src/xzdec/xzdec.1:7
+#: ../src/xzdec/xzdec.1
#, no-wrap
msgid "XZDEC"
msgstr "XZDEC"
-#. type: TH
-#: ../src/xzdec/xzdec.1:7
-#, no-wrap
-msgid "2017-04-19"
-msgstr "19 квітня 2017 року"
-
#. type: Plain text
-#: ../src/xzdec/xzdec.1:10
+#: ../src/xzdec/xzdec.1
msgid "xzdec, lzmadec - Small .xz and .lzma decompressors"
msgstr "xzdec, lzmadec — невеличкі розпакувальники .xz і .lzma"
#. type: Plain text
-#: ../src/xzdec/xzdec.1:14
+#: ../src/xzdec/xzdec.1
msgid "B<xzdec> [I<option...>] [I<file...>]"
msgstr "B<xzdec> [I<параметр...>] [I<файл...>]"
#. type: Plain text
-#: ../src/xzdec/xzdec.1:18
+#: ../src/xzdec/xzdec.1
msgid "B<lzmadec> [I<option...>] [I<file...>]"
msgstr "B<lzmadec> [I<параметр...>] [I<файл...>]"
#. 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> є інструментом на основі liblzma, який призначено лише для "
-"розпаковування файлів B<.xz> (і лише файлів B<.xz>). B<xzdec> призначено для "
-"того, щоб працювати як повноцінний замінник B<xz>(1) у більшості типових "
-"ситуацій, де скрипт було написано для використання B<xz --decompress --"
-"stdout> (і, можливо, декількох інших типових параметрів), для розпаковування "
-"файлів B<.xz>. B<lzmadec> є тотожним до B<xzdec>, але у B<lzmadec> "
-"передбачено підтримку файлів B<.lzma>, замість файлів B<.xz>."
+#: ../src/xzdec/xzdec.1
+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> є інструментом на основі liblzma, який призначено лише для розпаковування файлів B<.xz> (і лише файлів B<.xz>). B<xzdec> призначено для того, щоб працювати як повноцінний замінник B<xz>(1) у більшості типових ситуацій, де скрипт було написано для використання B<xz --decompress --stdout> (і, можливо, декількох інших типових параметрів), для розпаковування файлів B<.xz>. B<lzmadec> є тотожним до B<xzdec>, але у B<lzmadec> передбачено підтримку файлів B<.lzma>, замість файлів B<.xz>."
#. 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 ""
-"Щоб зменшити розмір виконуваного файла, у B<xzdec> не передбачено підтримки "
-"багатопотокової обробки та локалізації, а також читання параметрів зі "
-"змінних середовища B<XZ_DEFAULTS> і B<XZ_OPT>. У B<xzdec> не передбачено "
-"підтримки показу проміжних даних щодо поступу: надсилання B<SIGINFO> до "
-"B<xzdec> не призводить ні до яких наслідків, але надсилання B<SIGUSR1> "
-"перериває процес, замість показу даних щодо поступу."
+#: ../src/xzdec/xzdec.1
+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 "Щоб зменшити розмір виконуваного файла, у B<xzdec> не передбачено підтримки багатопотокової обробки та локалізації, а також читання параметрів зі змінних середовища B<XZ_DEFAULTS> і B<XZ_OPT>. У B<xzdec> не передбачено підтримки показу проміжних даних щодо поступу: надсилання B<SIGINFO> до B<xzdec> не призводить ні до яких наслідків, але надсилання B<SIGUSR1> перериває процес, замість показу даних щодо поступу."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:69
-msgid ""
-"Ignored for B<xz>(1) compatibility. B<xzdec> supports only decompression."
-msgstr ""
-"Буде проігноровано для сумісності з B<xz>(1). У B<xzdec> передбачено "
-"підтримку лише розпаковування."
+#: ../src/xzdec/xzdec.1
+msgid "Ignored for B<xz>(1) compatibility. B<xzdec> supports only decompression."
+msgstr "Буде проігноровано для сумісності з B<xz>(1). У B<xzdec> передбачено підтримку лише розпаковування."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:76
-msgid ""
-"Ignored for B<xz>(1) compatibility. B<xzdec> never creates or removes any "
-"files."
-msgstr ""
-"Буде проігноровано. Призначено для сумісності з B<xz>(1). B<xzdec> ніколи не "
-"створюватиме і ніколи не вилучатиме ці файли."
+#: ../src/xzdec/xzdec.1
+msgid "Ignored for B<xz>(1) compatibility. B<xzdec> never creates or removes any files."
+msgstr "Буде проігноровано. Призначено для сумісності з B<xz>(1). B<xzdec> ніколи не створюватиме і ніколи не вилучатиме ці файли."
#. 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 ""
-"Буде проігноровано. Для сумісності з B<xz>(1). B<xzdec> завжди записує "
-"розпаковані дані до стандартного виведення."
+#: ../src/xzdec/xzdec.1
+msgid "Ignored for B<xz>(1) compatibility. B<xzdec> always writes the decompressed data to standard output."
+msgstr "Буде проігноровано. Для сумісності з B<xz>(1). B<xzdec> завжди записує розпаковані дані до стандартного виведення."
#. 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 ""
-"Якщо цей параметр вказано один раз, нічого не станеться, оскільки B<xzdec> "
-"ніколи не показуватиме жодних попереджень або нотаток. Вкажіть параметр "
-"двічі, щоб придушити повідомлення про помилки."
+#: ../src/xzdec/xzdec.1
+msgid "Specifying this once does nothing since B<xzdec> never displays any warnings or notices. Specify this twice to suppress errors."
+msgstr "Якщо цей параметр вказано один раз, нічого не станеться, оскільки B<xzdec> ніколи не показуватиме жодних попереджень або нотаток. Вкажіть параметр двічі, щоб придушити повідомлення про помилки."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:96
-msgid ""
-"Ignored for B<xz>(1) compatibility. B<xzdec> never uses the exit status 2."
-msgstr ""
-"Буде проігноровано для сумісності із B<xz>(1). B<xzdec> ніколи не "
-"використовує стан виходу 2."
+#: ../src/xzdec/xzdec.1
+msgid "Ignored for B<xz>(1) compatibility. B<xzdec> never uses the exit status 2."
+msgstr "Буде проігноровано для сумісності із B<xz>(1). B<xzdec> ніколи не використовує стан виходу 2."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:99
+#: ../src/xzdec/xzdec.1
msgid "Display a help message and exit successfully."
msgstr "Вивести довідкове повідомлення і успішно завершити роботу."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:104
+#: ../src/xzdec/xzdec.1
msgid "Display the version number of B<xzdec> and liblzma."
msgstr "Вивести номер версії B<xzdec> та liblzma."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:108
+#: ../src/xzdec/xzdec.1
msgid "All was good."
msgstr "Усе добре."
#. 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> не має жодних повідомлень із попередженнями, на відміну від "
-"B<xz>(1), тому у B<xzdec> стан виходу 2 не використовується."
+#: ../src/xzdec/xzdec.1
+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> не має жодних повідомлень із попередженнями, на відміну від B<xz>(1), тому у B<xzdec> стан виходу 2 не використовується."
#. 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 ""
-"Користуйтеся B<xz>(1), замість B<xzdec> або B<lzmadec>, для щоденних потреб. "
-"B<xzdec> та B<lzmadec> призначено лише для тих ситуацій, коли важливо мати "
-"меншу програму для розпаковування, ніж B<xz>(1)."
+#: ../src/xzdec/xzdec.1
+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 "Користуйтеся B<xz>(1), замість B<xzdec> або B<lzmadec>, для щоденних потреб. B<xzdec> та B<lzmadec> призначено лише для тих ситуацій, коли важливо мати меншу програму для розпаковування, ніж B<xz>(1)."
#. 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> і B<lzmadec> не такі вже і малі програми. Їхній розмір можна "
-"зменшити викиданням можливостей з liblzma під час збирання, але цього "
-"зазвичай не роблять для виконуваних файлів, які поширюються у типових, не "
-"вбудованих, дистрибутивах операційних систем. Якщо вам потрібний дуже мала "
-"програма для розпаковування B<.xz>, варто скористатися XZ Embedded."
+#: ../src/xzdec/xzdec.1
+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> і B<lzmadec> не такі вже і малі програми. Їхній розмір можна зменшити викиданням можливостей з liblzma під час збирання, але цього зазвичай не роблять для виконуваних файлів, які поширюються у типових, не вбудованих, дистрибутивах операційних систем. Якщо вам потрібний дуже мала програма для розпаковування B<.xz>, варто скористатися XZ Embedded."
#. type: Plain text
-#: ../src/xzdec/xzdec.1:145 ../src/lzmainfo/lzmainfo.1:60
+#: ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
msgid "B<xz>(1)"
msgstr "B<xz>(1)"
#. type: TH
-#: ../src/lzmainfo/lzmainfo.1:7
+#: ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "LZMAINFO"
msgstr "LZMAINFO"
#. type: TH
-#: ../src/lzmainfo/lzmainfo.1:7 ../src/scripts/xzmore.1:7
+#: ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "2013-06-30"
msgstr "30 червня 2013 року"
#. type: Plain text
-#: ../src/lzmainfo/lzmainfo.1:10
+#: ../src/lzmainfo/lzmainfo.1
msgid "lzmainfo - show information stored in the .lzma file header"
msgstr "lzmainfo — показ відомостей, які зберігаються у заголовку файла .lzma"
#. type: Plain text
-#: ../src/lzmainfo/lzmainfo.1:15
+#: ../src/lzmainfo/lzmainfo.1
msgid "B<lzmainfo> [B<--help>] [B<--version>] [I<file...>]"
msgstr "B<lzmainfo> [B<--help>] [B<--version>] [I<файл...>]"
#. 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> показує дані, що зберігаються у заголовку файла B<.lzma>. Вона "
-"читає перші 13 байтів із вказаного I<файла>, розкодовує заголовок і виводить "
-"його до стандартного виведення у зручному для читання форматі. Якщо не "
-"вказано жодного I<файла> або замість I<файла> вказано B<->, дані буде "
-"прочитано зі стандартного вхідного джерела даних."
+#: ../src/lzmainfo/lzmainfo.1
+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> показує дані, що зберігаються у заголовку файла B<.lzma>. Вона читає перші 13 байтів із вказаного I<файла>, розкодовує заголовок і виводить його до стандартного виведення у зручному для читання форматі. Якщо не вказано жодного I<файла> або замість I<файла> вказано B<->, дані буде прочитано зі стандартного вхідного джерела даних."
#. 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 ""
-"Зазвичай, найцікавішою інформацією є розпакований розмір та розмір словника. "
-"Розпакований розмір може бути показано, лише якщо файл записано у "
-"непотоковому варіанті формату B<.lzma>. Об'єм пам'яті, потрібний для "
-"розпаковування файла, складає декілька десятків кілобайтів плюс розмір "
-"словника."
+#: ../src/lzmainfo/lzmainfo.1
+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 "Зазвичай, найцікавішою інформацією є розпакований розмір та розмір словника. Розпакований розмір може бути показано, лише якщо файл записано у непотоковому варіанті формату B<.lzma>. Об'єм пам'яті, потрібний для розпаковування файла, складає декілька десятків кілобайтів плюс розмір словника."
#. 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> включено до XZ Utils в основному для зворотної сумісності із "
-"LZMA Utils."
+#: ../src/lzmainfo/lzmainfo.1
+msgid "B<lzmainfo> is included in XZ Utils primarily for backward compatibility with LZMA Utils."
+msgstr "B<lzmainfo> включено до XZ Utils в основному для зворотної сумісності із LZMA Utils."
#. type: SH
-#: ../src/lzmainfo/lzmainfo.1:51 ../src/scripts/xzdiff.1:74
+#: ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "BUGS"
msgstr "ВАДИ"
#. 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> використовує B<MB>, хоча правильним суфіксом мав би бути B<MiB> "
-"(2^20 байтів). Так зроблено, щоб зберегти сумісність виведених даних із LZMA "
-"Utils."
+#: ../src/lzmainfo/lzmainfo.1
+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> використовує B<MB>, хоча правильним суфіксом мав би бути B<MiB> (2^20 байтів). Так зроблено, щоб зберегти сумісність виведених даних із LZMA Utils."
#. type: TH
-#: ../src/scripts/xzdiff.1:9
+#: ../src/scripts/xzdiff.1
#, no-wrap
msgid "XZDIFF"
msgstr "XZDIFF"
#. type: TH
-#: ../src/scripts/xzdiff.1:9
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1
#, no-wrap
-msgid "2021-06-04"
-msgstr "4 червня 2021 року"
+msgid "2024-02-13"
+msgstr "13 лютого 2024 року"
#. type: Plain text
-#: ../src/scripts/xzdiff.1:12
+#: ../src/scripts/xzdiff.1
msgid "xzcmp, xzdiff, lzcmp, lzdiff - compare compressed files"
msgstr "xzcmp, xzdiff, lzcmp, lzdiff — порівняння стиснених файлів"
#. type: Plain text
-#: ../src/scripts/xzdiff.1:15
-msgid "B<xzcmp> [I<cmp_options>] I<file1> [I<file2>]"
-msgstr "B<xzcmp> [I<параметри_cmp>] I<файл1> [I<файл2>]"
+#: ../src/scripts/xzdiff.1
+msgid "B<xzcmp> [I<option...>] I<file1> [I<file2>]"
+msgstr "B<xzcmp> [I<параметр...>] I<файл1> [I<файл2>]"
#. type: Plain text
-#: ../src/scripts/xzdiff.1:18
-msgid "B<xzdiff> [I<diff_options>] I<file1> [I<file2>]"
-msgstr "B<xzdiff> [I<параметри_diff>] I<файл1> [I<файл2>]"
+#: ../src/scripts/xzdiff.1
+msgid "B<xzdiff> \\&..."
+msgstr "B<xzdiff> \\&..."
#. type: Plain text
-#: ../src/scripts/xzdiff.1:21
-msgid "B<lzcmp> [I<cmp_options>] I<file1> [I<file2>]"
-msgstr "B<lzcmp> [I<параметри_cmp>] I<файл1> [I<файл2>]"
+#: ../src/scripts/xzdiff.1
+msgid "B<lzcmp> \\&..."
+msgstr "B<lzcmp> \\&..."
#. type: Plain text
-#: ../src/scripts/xzdiff.1:24
-msgid "B<lzdiff> [I<diff_options>] I<file1> [I<file2>]"
-msgstr "B<lzdiff> [I<параметри_diff>] I<файл1> [I<файл2>]"
+#: ../src/scripts/xzdiff.1
+msgid "B<lzdiff> \\&..."
+msgstr "B<lzdiff> \\&..."
#. type: Plain text
-#: ../src/scripts/xzdiff.1:59
-msgid ""
-"B<xzcmp> and B<xzdiff> invoke B<cmp>(1) or B<diff>(1) on files compressed "
-"with B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), or "
-"B<zstd>(1). All options specified are passed directly to B<cmp>(1) or "
-"B<diff>(1). If only one file is specified, then the files compared are "
-"I<file1> (which must have a suffix of a supported compression format) and "
-"I<file1> from which the compression format suffix has been stripped. If two "
-"files are specified, then they are uncompressed if necessary and fed to "
-"B<cmp>(1) or B<diff>(1). The exit status from B<cmp>(1) or B<diff>(1) is "
-"preserved unless a decompression error occurs; then exit status is 2."
-msgstr ""
-"B<xzcmp> і B<xzdiff> викликають B<cmp>(1) або B<diff>(1) для файлів, які "
-"стиснено за допомогою B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), "
-"B<lzop>(1) або B<zstd>(1). Усі вказані параметри передаються безпосередньо "
-"B<cmp>(1) або B<diff>(1). Якщо вказано лише один файл, порівнюваними файлами "
-"будуть I<файл1> (який повинен мати суфікс підтримуваного файла стискання) і "
-"I<файл1>, з назви якого вилучено суфікс формату стискання. Якщо вказано два "
-"файли, їх буде, якщо потрібно, розпаковано і передано B<cmp>(1) або "
-"B<diff>(1). Стан виходу B<cmp>(1) або B<diff>(1) буде збережено, якщо не "
-"станеться помилок розпаковування. Якщо станеться помилка розпаковування, "
-"станом виходу буде 2."
-
-#. type: Plain text
-#: ../src/scripts/xzdiff.1:65
-msgid ""
-"The names B<lzcmp> and B<lzdiff> are provided for backward compatibility "
-"with LZMA Utils."
-msgstr ""
-"Працездатність назв B<lzcmp> і B<lzdiff> забезпечено для зворотної "
-"сумісності із LZMA Utils."
+#: ../src/scripts/xzdiff.1
+msgid "B<xzcmp> and B<xzdiff> compare uncompressed contents of two files. Uncompressed data and options are passed to B<cmp>(1) or B<diff>(1) unless B<--help> or B<--version> is specified."
+msgstr "B<xzcmp> і B<xzdiff> порівнюють нестиснені дані двох файлів. Нестиснені дані та параметри буде передано B<cmp>(1) або B<diff>(1), якщо не вказано B<--help> або B<--version>."
#. type: Plain text
-#: ../src/scripts/xzdiff.1:74
-msgid ""
-"B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), "
-"B<zstd>(1), B<zdiff>(1)"
-msgstr ""
-"B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), "
-"B<zstd>(1), B<zdiff>(1)"
+#: ../src/scripts/xzdiff.1
+msgid "If both I<file1> and I<file2> are specified, they can be uncompressed files or files in formats that B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), or B<lz4>(1) can decompress. The required decompression commands are determined from the filename suffixes of I<file1> and I<file2>. A file with an unknown suffix is assumed to be either uncompressed or in a format that B<xz>(1) can decompress."
+msgstr "Якщо вказано одразу I<файл1> і I<файл2>, це можуть бути нестиснені файли або файли у форматах, які може бути розпаковано за допомогою B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1) або B<lz4>(1). Потрібні команди розпаковування визначаються з суфіксів назв файлів I<файл1> і I<файл2>. Файли із невідомими програмі суфіксами вважатимуться або нестисненими або такими, що мають формат, дані у якому може розпаковувати B<xz>(1)."
#. type: Plain text
-#: ../src/scripts/xzdiff.1:79
-msgid ""
-"Messages from the B<cmp>(1) or B<diff>(1) programs refer to temporary "
-"filenames instead of those specified."
-msgstr ""
-"Повідомлення від програм B<cmp>(1) або B<diff>(1) посилатимуться на назви "
-"тимчасових файлів, а не вказані назви."
+#: ../src/scripts/xzdiff.1
+msgid "If only one filename is provided, I<file1> must have a suffix of a supported compression format and the name for I<file2> is assumed to be I<file1> with the compression format suffix removed."
+msgstr "Якщо вказано лише одну назву файла, I<файл1> повинен мати суфікс підтримуваного формату стискання, а назвою I<файл2> має бути назва I<файл1> з вилученим суфіксом формату стискання."
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1
+msgid "The commands B<lzcmp> and B<lzdiff> are provided for backward compatibility with LZMA Utils."
+msgstr "Працездатність команд B<lzcmp> і B<lzdiff> забезпечено для зворотної сумісності із LZMA Utils."
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1
+msgid "If a decompression error occurs, the exit status is B<2>. Otherwise the exit status of B<cmp>(1) or B<diff>(1) is used."
+msgstr "Якщо станеться помилка розпаковування, станом виходу буде B<2>. Інакше, станом виходу буде B<cmp>(1) або буде використано B<diff>(1)."
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1
+msgid "B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), B<lz4>(1)"
+msgstr "B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), B<lz4>(1)"
#. type: TH
-#: ../src/scripts/xzgrep.1:9
+#: ../src/scripts/xzgrep.1
#, no-wrap
msgid "XZGREP"
msgstr "XZGREP"
-#. type: TH
-#: ../src/scripts/xzgrep.1:9
-#, no-wrap
-msgid "2022-07-19"
-msgstr "19 липня 2022 року"
-
#. type: Plain text
-#: ../src/scripts/xzgrep.1:12
-msgid "xzgrep - search compressed files for a regular expression"
-msgstr "xzgrep — пошук у стиснених файлах формального виразу"
+#: ../src/scripts/xzgrep.1
+msgid "xzgrep - search possibly-compressed files for patterns"
+msgstr "xzgrep — пошук взірців у ймовірно стиснених файлах"
#. 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>] [B<-e>] I<взірець> [I<файл...>]"
+#: ../src/scripts/xzgrep.1
+msgid "B<xzgrep> [I<option...>] [I<pattern_list>] [I<file...>]"
+msgstr "B<xzgrep> [I<параметр...>] [I<список_взірців>] [I<файл...>]"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:21
+#: ../src/scripts/xzgrep.1
msgid "B<xzegrep> \\&..."
msgstr "B<xzegrep> \\&..."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:24
+#: ../src/scripts/xzgrep.1
msgid "B<xzfgrep> \\&..."
msgstr "B<xzfgrep> \\&..."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:27
+#: ../src/scripts/xzgrep.1
msgid "B<lzgrep> \\&..."
msgstr "B<lzgrep> \\&..."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:30
+#: ../src/scripts/xzgrep.1
msgid "B<lzegrep> \\&..."
msgstr "B<lzegrep> \\&..."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:33
+#: ../src/scripts/xzgrep.1
msgid "B<lzfgrep> \\&..."
msgstr "B<lzfgrep> \\&..."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:49
-msgid ""
-"B<xzgrep> invokes B<grep>(1) on I<files> which may be either uncompressed "
-"or compressed with B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), "
-"B<lzop>(1), or B<zstd>(1). All options specified are passed directly to "
-"B<grep>(1)."
-msgstr ""
-"B<xzgrep> викликає B<grep>(1) для I<файлів>, які можуть бути розпакованими "
-"або запакованими за допомогою B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), "
-"B<lzop>(1) або B<zstd>(1). Усі вказані параметри передаються безпосередньо "
-"B<grep>(1)."
+#: ../src/scripts/xzgrep.1
+msgid "B<xzgrep> invokes B<grep>(1) on uncompressed contents of files. The formats of the I<files> are determined from the filename suffixes. Any I<file> with a suffix supported by B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), or B<lz4>(1) will be decompressed; all other files are assumed to be uncompressed."
+msgstr "B<xzgrep> викликає B<grep>(1) для розпакованих даних файлів. Формати I<файлів> визначатимуться з суфіксів назв файлів. Будь-який I<файл> із суфіксом назви, підтримку якого передбачено у B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1) або B<lz4>(1), буде розпаковано; усі інші файли вважатимуться нестисненими."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:62
-msgid ""
-"If no I<file> is specified, then standard input is decompressed if necessary "
-"and fed to B<grep>(1). When reading from standard input, B<gzip>(1), "
-"B<bzip2>(1), B<lzop>(1), and B<zstd>(1) compressed files are not supported."
-msgstr ""
-"Якщо не вказано жодного I<файла>, буде розпаковано дані зі стандартного "
-"джерела вхідних даних і передано ці дані B<grep>(1). Якщо дані буде "
-"прочитано зі стандартного джерела вхідних даних, підтримку стиснених файлів "
-"B<gzip>(1), B<bzip2>(1), B<lzop>(1) та B<zstd>(1) буде вимкнено."
+#: ../src/scripts/xzgrep.1
+msgid "If no I<files> are specified or I<file> is B<-> then standard input is read. When reading from standard input, only files supported by B<xz>(1) are decompressed. Other files are assumed to be in uncompressed form already."
+msgstr "Якщо не вказано аргументу I<файли> або замість I<файл> вказано B<->, дані буде прочитано зі стандартного джерела вхідних даних. При читанні зі стандартного джерела буде розпаковано лише файли, підтримку яких передбачено у B<xz>(1). Інші файли вважатимуться такими, що вже перебувають у нестисненому форматі."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:81
-msgid ""
-"If B<xzgrep> is invoked as B<xzegrep> or B<xzfgrep> then B<grep -E> or "
-"B<grep -F> is used instead of B<grep>(1). The same applies to names "
-"B<lzgrep>, B<lzegrep>, and B<lzfgrep>, which are provided for backward "
-"compatibility with LZMA Utils."
-msgstr ""
-"Якщо B<xzgrep> викликано як B<xzegrep> або B<xzfgrep>, буде використано "
-"B<grep -E> або B<grep -F> замість B<grep>(1). Те саме стосується програм із "
-"назвами B<lzgrep>, B<lzegrep> та B<lzfgrep>, які створено для зворотної "
-"сумісності з LZMA Utils."
+#: ../src/scripts/xzgrep.1
+msgid "Most I<options> of B<grep>(1) are supported. However, the following options are not supported:"
+msgstr "Передбачено підтримку більшості I<параметрів> B<grep>(1). Втім, підтримки цих параметрів не передбачено:"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:86
-msgid ""
-"At least one match was found from at least one of the input files. No "
-"errors occurred."
-msgstr ""
-"В одному з файлів вхідних даних знайдено принаймні одну відповідність. "
-"Помилок не сталося."
+#: ../src/scripts/xzgrep.1
+msgid "B<-r>, B<--recursive>"
+msgstr "B<-r>, B<--recursive>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<-R>, B<--dereference-recursive>"
+msgstr "B<-R>, B<--dereference-recursive>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<-d>, B<--directories=>I<action>"
+msgstr "B<-d>, B<--directories=>I<дія>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<-Z>, B<--null>"
+msgstr "B<-Z>, B<--null>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<-z>, B<--null-data>"
+msgstr "B<-z>, B<--null-data>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<--include=>I<glob>"
+msgstr "B<--include=>I<glob>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<--exclude=>I<glob>"
+msgstr "B<--exclude=>I<glob>"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:90
+#: ../src/scripts/xzgrep.1
+msgid "B<--exclude-from=>I<file>"
+msgstr "B<--exclude-from=>I<файл>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<--exclude-dir=>I<glob>"
+msgstr "B<--exclude-dir=>I<glob>"
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<xzegrep> is an alias for B<xzgrep -E>. B<xzfgrep> is an alias for B<xzgrep -F>."
+msgstr "B<xzegrep> є альтернативним записом B<xzgrep -E>. B<xzfgrep> є альтернативним записом B<xzgrep -F>."
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "The commands B<lzgrep>, B<lzegrep>, and B<lzfgrep> are provided for backward compatibility with LZMA Utils."
+msgstr "Працездатність команд B<lzgrep>, B<lzegrep> і B<lzfgrep> забезпечено для зворотної сумісності із LZMA Utils."
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "At least one match was found from at least one of the input files. No errors occurred."
+msgstr "В одному з файлів вхідних даних знайдено принаймні одну відповідність. Помилок не сталося."
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
msgid "No matches were found from any of the input files. No errors occurred."
-msgstr ""
-"У жодному з файлів вхідних даних не знайдено відповідника. Не сталося ніяких "
-"помилок."
+msgstr "У жодному з файлів вхідних даних не знайдено відповідника. Не сталося ніяких помилок."
#. type: TP
-#: ../src/scripts/xzgrep.1:90
+#: ../src/scripts/xzgrep.1
#, no-wrap
msgid "E<gt>1"
msgstr "E<gt>1"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:94
+#: ../src/scripts/xzgrep.1
msgid "One or more errors occurred. It is unknown if matches were found."
-msgstr ""
-"Сталася одна або декілька помилок. Невідомо, чи було знайдено відповідники "
-"критерію пошуку."
+msgstr "Сталася одна або декілька помилок. Невідомо, чи було знайдено відповідники критерію пошуку."
#. type: TP
-#: ../src/scripts/xzgrep.1:95
+#: ../src/scripts/xzgrep.1
#, no-wrap
msgid "B<GREP>"
msgstr "B<GREP>"
#. type: Plain text
-#: ../src/scripts/xzgrep.1:106
-msgid ""
-"If the B<GREP> environment variable is set, B<xzgrep> uses it instead of "
-"B<grep>(1), B<grep -E>, or B<grep -F>."
-msgstr ""
-"Якщо встановлено значення змінної середовища B<GREP>, буде використано це "
-"значення B<xzgrep>, замість B<grep>(1), B<grep -E> або B<grep -F>."
+#: ../src/scripts/xzgrep.1
+msgid "If B<GREP> is set to a non-empty value, it is used instead of B<grep>, B<grep -E>, or B<grep -F>."
+msgstr "Якщо для змінної середовища B<GREP> встановлено непорожнє значення, його буде використано замість B<grep>(1), B<grep -E> або B<grep -F>."
#. type: Plain text
-#: ../src/scripts/xzgrep.1:113
-msgid ""
-"B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), "
-"B<zgrep>(1)"
-msgstr ""
-"B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), "
-"B<zgrep>(1)"
+#: ../src/scripts/xzgrep.1
+msgid "B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), B<lz4>(1), B<zgrep>(1)"
+msgstr "B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), B<lz4>(1), B<zgrep>(1)"
#. type: TH
-#: ../src/scripts/xzless.1:10
+#: ../src/scripts/xzless.1
#, no-wrap
msgid "XZLESS"
msgstr "XZLESS"
#. type: TH
-#: ../src/scripts/xzless.1:10
+#: ../src/scripts/xzless.1 ../src/scripts/xzmore.1
#, no-wrap
-msgid "2010-09-27"
-msgstr "27 вересня 2010 року"
+msgid "2024-02-12"
+msgstr "12 лютого 2024 року"
#. type: Plain text
-#: ../src/scripts/xzless.1:13
+#: ../src/scripts/xzless.1
msgid "xzless, lzless - view xz or lzma compressed (text) files"
msgstr "xzless, lzless — перегляд стиснених xz або lzma (текстових) файлів"
#. type: Plain text
-#: ../src/scripts/xzless.1:16
+#: ../src/scripts/xzless.1
msgid "B<xzless> [I<file>...]"
msgstr "B<xzless> [I<файл>...]"
#. type: Plain text
-#: ../src/scripts/xzless.1:19
+#: ../src/scripts/xzless.1
msgid "B<lzless> [I<file>...]"
msgstr "B<lzless> [I<файл>...]"
#. 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> є фільтром, який показує текст зі стиснених файлів у терміналі. "
-"Працює для файлів, які стиснуто за допомогою B<xz>(1) або B<lzma>(1). Якщо "
-"не вказано жодного I<файла>, B<xzless> читатиме дані зі стандартного джерела "
-"вхідних даних."
+#: ../src/scripts/xzless.1
+msgid "B<xzless> is a filter that displays text from compressed files to a terminal. Files supported by B<xz>(1) are decompressed; other files are assumed to be in uncompressed form already. If no I<files> are given, B<xzless> reads from standard input."
+msgstr "B<xzless> є фільтром, який показує текст зі стиснених файлів у терміналі. Файли, підтримку обробки яких передбачено у B<xz>(1), буде розпаковано; інші файли вважатимуться нестисненими. Якщо не вказано жодного I<файла>, B<xzless> читатиме дані зі стандартного джерела вхідних даних."
#. 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> використовує B<less>(1). На відміну від "
-"B<xzmore>, вибір програми для поділу на сторінки не можна змінити за "
-"допомогою змінної середовища. Команди засновано на B<more>(1) і B<vi>(1). За "
-"допомогою команд можна просуватися назад і вперед даними та шукати дані. Щоб "
-"дізнатися більше, ознайомтеся із підручником з B<less>(1)."
+#: ../src/scripts/xzless.1
+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> використовує B<less>(1). На відміну від B<xzmore>, вибір програми для поділу на сторінки не можна змінити за допомогою змінної середовища. Команди засновано на B<more>(1) і B<vi>(1). За допомогою команд можна просуватися назад і вперед даними та шукати дані. Щоб дізнатися більше, ознайомтеся із підручником з B<less>(1)."
#. type: Plain text
-#: ../src/scripts/xzless.1:52
-msgid ""
-"The command named B<lzless> is provided for backward compatibility with LZMA "
-"Utils."
-msgstr ""
-"Команду B<lzless> реалізовано для забезпечення зворотної сумісності з LZMA "
-"Utils."
+#: ../src/scripts/xzless.1
+msgid "The command named B<lzless> is provided for backward compatibility with LZMA Utils."
+msgstr "Команду B<lzless> реалізовано для забезпечення зворотної сумісності з LZMA Utils."
#. type: TP
-#: ../src/scripts/xzless.1:53
+#: ../src/scripts/xzless.1
#, 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 ""
-"Список символів, які є особливими символами командної оболонки. "
-"Встановлюється B<xzless>, якщо його ще не встановлено у середовищі."
+#: ../src/scripts/xzless.1
+msgid "A list of characters special to the shell. Set by B<xzless> unless it is already set in the environment."
+msgstr "Список символів, які є особливими символами командної оболонки. Встановлюється B<xzless>, якщо його ще не встановлено у середовищі."
#. type: TP
-#: ../src/scripts/xzless.1:59
+#: ../src/scripts/xzless.1
#, 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 ""
-"Має значення рядка команди для виклику засобу розпаковування B<xz>(1) для "
-"обробки вхідних файлів B<less>(1)."
+#: ../src/scripts/xzless.1
+msgid "Set to a command line to invoke the B<xz>(1) decompressor for preprocessing the input files to B<less>(1)."
+msgstr "Має значення рядка команди для виклику засобу розпаковування B<xz>(1) для обробки вхідних файлів B<less>(1)."
#. type: Plain text
-#: ../src/scripts/xzless.1:69
+#: ../src/scripts/xzless.1
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
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "XZMORE"
msgstr "XZMORE"
#. type: Plain text
-#: ../src/scripts/xzmore.1:10
+#: ../src/scripts/xzmore.1
msgid "xzmore, lzmore - view xz or lzma compressed (text) files"
msgstr "xzmore, lzmore — перегляд стиснених xz або lzma (текстових) файлів"
#. type: Plain text
-#: ../src/scripts/xzmore.1:13
-msgid "B<xzmore> [I<file...>]"
-msgstr "B<xzmore> [I<файл...>]"
+#: ../src/scripts/xzmore.1
+msgid "B<xzmore> [I<file>...]"
+msgstr "B<xzmore> [I<файл>...]"
#. type: Plain text
-#: ../src/scripts/xzmore.1:16
-msgid "B<lzmore> [I<file...>]"
-msgstr "B<lzmore> [I<файл...>]"
+#: ../src/scripts/xzmore.1
+msgid "B<lzmore> [I<file>...]"
+msgstr "B<lzmore> [I<файл>...]"
#. 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> є фільтром, за допомогою якого можна вивчати стиснені B<xz>(1) або "
-"B<lzma>(1) текстові файли поекранно на терміналах із м'яким копіюванням."
+#: ../src/scripts/xzmore.1
+msgid "B<xzmore> displays text from compressed files to a terminal using B<more>(1). Files supported by B<xz>(1) are decompressed; other files are assumed to be in uncompressed form already. If no I<files> are given, B<xzmore> reads from standard input. See the B<more>(1) manual for the keyboard commands."
+msgstr "B<xzmore> показує текст зі стиснених файлів у терміналі за допомогою B<more>(1). Файли, підтримку яких передбачено у B<xz>(1), буде розпаковано; інші файли вважатимуться вже наданими у розпакованій формі. Якщо не вказано аргументу I<файли>, B<xzmore> читатиме дані зі стандартного джерела даних. Див. підручник з B<more>(1), щоб дізнатися більше про клавіатурні команди."
#. 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 ""
-"Щоб скористатися засобом поділу на сторінки, відмінним від типового B<more>, "
-"встановіть для змінної середовища B<PAGER> значення назви бажаної програми. "
-"Команду B<lzmore> реалізовано для забезпечення зворотної сумісності з LZMA "
-"Utils."
-
-#. type: TP
-#: ../src/scripts/xzmore.1:33
-#, no-wrap
-msgid "B<e> or B<q>"
-msgstr "B<e> або B<q>"
+#: ../src/scripts/xzmore.1
+msgid "Note that scrolling backwards might not be possible depending on the implementation of B<more>(1). This is because B<xzmore> uses a pipe to pass the decompressed data to B<more>(1). B<xzless>(1) uses B<less>(1) which provides more advanced features."
+msgstr "Зауважте, що гортання у зворотному напрямку може бути неможливим через реалізацію B<more>(1). Причиною є те, що B<xzmore> використовує канал для передавання розпакованих даних B<more>(1). B<xzless>(1) використовує B<less>(1), можливості якої є ширшими."
#. 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 ""
-"Якщо виведено запит --More--(Наступний файл: I<файл>), ця команда наказує "
-"B<xzmore> завершити роботу."
+#: ../src/scripts/xzmore.1
+msgid "The command B<lzmore> is provided for backward compatibility with LZMA Utils."
+msgstr "Команду B<lzmore> реалізовано для забезпечення зворотної сумісності з LZMA Utils."
#. type: TP
-#: ../src/scripts/xzmore.1:40
+#: ../src/scripts/xzmore.1
#, no-wrap
-msgid "B<s>"
-msgstr "B<s>"
+msgid "B<PAGER>"
+msgstr "B<PAGER>"
#. 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 ""
-"Якщо виведено запит --More--(Наступний файл: I<файл>), ця команда наказує "
-"B<xzmore> перейти до наступного файла і продовжити показ даних."
+#: ../src/scripts/xzmore.1
+msgid "If B<PAGER> is set, its value is used as the pager instead of B<more>(1)."
+msgstr "Якщо встановлено значення B<PAGER>, значення буде використано для засобу поділу на сторінки, замість B<more>(1)."
#. 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 ""
-"Список клавіатурних команд, якими можна скористатися під час перегляду "
-"вмісту файла, наведено на сторінці засобу поділу файла на сторінки, яким ви "
-"користуєтеся, зазвичай, на сторінці B<more>(1)."
-
-#. type: Plain text
-#: ../src/scripts/xzmore.1:55
+#: ../src/scripts/xzmore.1
msgid "B<more>(1), B<xz>(1), B<xzless>(1), B<zmore>(1)"
msgstr "B<more>(1), B<xz>(1), B<xzless>(1), B<zmore>(1)"
-#~ msgid "2022-12-01"
-#~ msgstr "1 грудня 2022 року"
+#, no-wrap
+#~ msgid "2024-01-19"
+#~ msgstr "19 січня 2024 року"
diff --git a/po4a/update-po b/po4a/update-po
index b1cc9f5..29c7f70 100755
--- a/po4a/update-po
+++ b/po4a/update-po
@@ -1,5 +1,6 @@
#!/bin/sh
-#
+# SPDX-License-Identifier: 0BSD
+
#############################################################################
#
# Updates xz-man.pot and the *.po files, and generates translated man pages.
@@ -10,9 +11,6 @@
#
# 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
@@ -33,13 +31,63 @@ fi
PACKAGE_VERSION=`cd .. && sh build-aux/version.sh` || exit 1
+# Put the author info from the .po files into the header comment of
+# the generated man pages.
+for FILE in *.po
+do
+ printf '%s\n.\\"\n' \
+'PO4A-HEADER: position=^\.\\" Author; mode=after; beginboundary=^\.\\"$' \
+ > "$FILE.authors"
+ sed '
+ /^[^#]/,$d
+ /: 0BSD$/d
+ /BSD Zero Clause License/d
+ /distributed under the same license/d
+ /in the public domain/d
+ /The XZ Utils authors and contributors$/d
+ /^#$/d
+ s/^#/.\\"/
+ ' "$FILE" >> "$FILE.authors"
+done
+
# 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).
+#
+# Make diffing the .pot and .po files easier:
+#
+# --porefs file Put only the input filenames, not line numbers,
+# into the .pot file. This way they won't get
+# copied to the .po files either.
+#
+# --wrap-po newlines Wrap msgids only at \n in the .pot file.
+#
+# --msgmerge-opt "--no-wrap"
+# Wrap msgids and msgstrs only at \n in the .po files.
+#
+# The values from --package-name and --package-version are used to create
+# the Project-Id-Version field. It likely makes sense that its value isn't
+# identical to the value in the program message translations. In practice
+# it seems that the .po files from many (but not all) translators will use
+# "xz-man" no matter what is specified here and in xz-man.pot. Thus it's
+# best to use "xz-man" here to get the most consistent results.
set -x
po4a --force --verbose \
- --package-name="XZ Utils" \
+ --porefs file --wrap-po newlines --msgmerge-opt "--no-wrap" \
+ --package-name="xz-man" \
--package-version="$PACKAGE_VERSION" \
- --copyright-holder="[See the headers in the input files.]" \
+ --copyright-holder="The XZ Utils authors and contributors" \
po4a.conf
+
+# Remove the *.po.authors files that were generated above.
+# This way they won't get included in distribution tarballs.
+rm -f *.po.authors
+
+# Add the customized POT header which contains the SPDX license
+# identifier and spells out the license name instead of saying
+# "the same license as the XZ Utils package".
+mv xz-man.pot xz-man.pot.tmp
+cat ../po/xz.pot-header > xz-man.pot
+sed '1,/^#$/d' xz-man.pot.tmp >> xz-man.pot
+rm xz-man.pot.tmp
diff --git a/po4a/xz-man.pot b/po4a/xz-man.pot
index 49c3ee0..6130b9e 100644
--- a/po4a/xz-man.pot
+++ b/po4a/xz-man.pot
@@ -1,13 +1,15 @@
-# SOME DESCRIPTIVE TITLE
-# Copyright (C) YEAR [See the headers in the input files.]
-# This file is distributed under the same license as the XZ Utils package.
+# SPDX-License-Identifier: 0BSD
+#
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) The XZ Utils authors and contributors
+# This file is published under the BSD Zero Clause License.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: XZ Utils 5.4.5\n"
-"POT-Creation-Date: 2023-11-01 20:27+0800\n"
+"Project-Id-Version: xz-man 5.6.2\n"
+"POT-Creation-Date: 2024-05-29 18:17+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,4626 +19,3809 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. type: TH
-#: ../src/xz/xz.1:9
+#: ../src/xz/xz.1
#, no-wrap
msgid "XZ"
msgstr ""
#. type: TH
-#: ../src/xz/xz.1:9
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
-msgid "2023-07-17"
+msgid "2024-04-08"
msgstr ""
#. type: TH
-#: ../src/xz/xz.1:9 ../src/xzdec/xzdec.1:7 ../src/lzmainfo/lzmainfo.1:7
-#: ../src/scripts/xzdiff.1:9 ../src/scripts/xzgrep.1:9
-#: ../src/scripts/xzless.1:10 ../src/scripts/xzmore.1:7
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "Tukaani"
msgstr ""
#. type: TH
-#: ../src/xz/xz.1:9 ../src/xzdec/xzdec.1:7 ../src/lzmainfo/lzmainfo.1:7
-#: ../src/scripts/xzdiff.1:9 ../src/scripts/xzgrep.1:9
-#: ../src/scripts/xzless.1:10 ../src/scripts/xzmore.1:7
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "XZ Utils"
msgstr ""
#. type: SH
-#: ../src/xz/xz.1:11 ../src/xzdec/xzdec.1:8 ../src/lzmainfo/lzmainfo.1:8
-#: ../src/scripts/xzdiff.1:10 ../src/scripts/xzgrep.1:10
-#: ../src/scripts/xzless.1:11 ../src/scripts/xzmore.1:8
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "NAME"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:13
-msgid ""
-"xz, unxz, xzcat, lzma, unlzma, lzcat - Compress or decompress .xz and .lzma "
-"files"
+#: ../src/xz/xz.1
+msgid "xz, unxz, xzcat, lzma, unlzma, lzcat - Compress or decompress .xz and .lzma files"
msgstr ""
#. type: SH
-#: ../src/xz/xz.1:14 ../src/xzdec/xzdec.1:10 ../src/lzmainfo/lzmainfo.1:10
-#: ../src/scripts/xzdiff.1:12 ../src/scripts/xzgrep.1:12
-#: ../src/scripts/xzless.1:13 ../src/scripts/xzmore.1:10
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "SYNOPSIS"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:18
+#: ../src/xz/xz.1
msgid "B<xz> [I<option...>] [I<file...>]"
msgstr ""
#. type: SH
-#: ../src/xz/xz.1:19
+#: ../src/xz/xz.1
#, no-wrap
msgid "COMMAND ALIASES"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:23
+#: ../src/xz/xz.1
msgid "B<unxz> is equivalent to B<xz --decompress>."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:27
+#: ../src/xz/xz.1
msgid "B<xzcat> is equivalent to B<xz --decompress --stdout>."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:31
+#: ../src/xz/xz.1
msgid "B<lzma> is equivalent to B<xz --format=lzma>."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:35
+#: ../src/xz/xz.1
msgid "B<unlzma> is equivalent to B<xz --format=lzma --decompress>."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:39
+#: ../src/xz/xz.1
msgid "B<lzcat> is equivalent to B<xz --format=lzma --decompress --stdout>."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:51
-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>."
+#: ../src/xz/xz.1
+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 ""
#. type: SH
-#: ../src/xz/xz.1:52 ../src/xzdec/xzdec.1:18 ../src/lzmainfo/lzmainfo.1:15
-#: ../src/scripts/xzdiff.1:24 ../src/scripts/xzgrep.1:33
-#: ../src/scripts/xzless.1:19 ../src/scripts/xzmore.1:16
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "DESCRIPTION"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:71
-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. In "
-"addition, decompression of the B<.lz> format used by B<lzip> is supported."
+#: ../src/xz/xz.1
+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. In addition, decompression of the B<.lz> format used by B<lzip> is supported."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:93
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:103
-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:"
+#: ../src/xz/xz.1
+msgid "Unless B<--stdout> is specified, I<files> other than B<-> are written to a new file whose name is derived from the source I<file> name:"
msgstr ""
#. type: IP
-#: ../src/xz/xz.1:103 ../src/xz/xz.1:109 ../src/xz/xz.1:134 ../src/xz/xz.1:139
-#: ../src/xz/xz.1:142 ../src/xz/xz.1:145 ../src/xz/xz.1:161 ../src/xz/xz.1:422
-#: ../src/xz/xz.1:425 ../src/xz/xz.1:432 ../src/xz/xz.1:677 ../src/xz/xz.1:679
-#: ../src/xz/xz.1:778 ../src/xz/xz.1:789 ../src/xz/xz.1:798 ../src/xz/xz.1:806
-#: ../src/xz/xz.1:1034 ../src/xz/xz.1:1043 ../src/xz/xz.1:1055
-#: ../src/xz/xz.1:1729 ../src/xz/xz.1:1735 ../src/xz/xz.1:1853
-#: ../src/xz/xz.1:1857 ../src/xz/xz.1:1860 ../src/xz/xz.1:1863
-#: ../src/xz/xz.1:1867 ../src/xz/xz.1:1874 ../src/xz/xz.1:1876
+#: ../src/xz/xz.1
#, no-wrap
msgid "\\(bu"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:109
-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."
+#: ../src/xz/xz.1
+msgid "When compressing, the suffix of the target file format (B<.xz> or B<.lzma>) is appended to the source filename to get the target filename."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:124
-msgid ""
-"When decompressing, the B<.xz>, B<.lzma>, or B<.lz> suffix is removed from "
-"the filename to get the target filename. B<xz> also recognizes the suffixes "
-"B<.txz> and B<.tlz>, and replaces them with the B<.tar> suffix."
+#: ../src/xz/xz.1
+msgid "When decompressing, the B<.xz>, B<.lzma>, or B<.lz> suffix is removed from the filename to get the target filename. B<xz> also recognizes the suffixes B<.txz> and B<.tlz>, and replaces them with the B<.tar> suffix."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:128
-msgid ""
-"If the target file already exists, an error is displayed and the I<file> is "
-"skipped."
+#: ../src/xz/xz.1
+msgid "If the target file already exists, an error is displayed and the I<file> is skipped."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:134
-msgid ""
-"Unless writing to standard output, B<xz> will display a warning and skip the "
-"I<file> if any of the following applies:"
+#: ../src/xz/xz.1
+msgid "Unless writing to standard output, B<xz> will display a warning and skip the I<file> if any of the following applies:"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:139
-msgid ""
-"I<File> is not a regular file. Symbolic links are not followed, and thus "
-"they are not considered to be regular files."
+#: ../src/xz/xz.1
+msgid "I<File> is not a regular file. Symbolic links are not followed, and thus they are not considered to be regular files."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:142
+#: ../src/xz/xz.1
msgid "I<File> has more than one hard link."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:145
+#: ../src/xz/xz.1
msgid "I<File> has setuid, setgid, or sticky bit set."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:161
-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)."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:171
-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>, "
-"B<.tlz>, or B<.lz>)."
+#: ../src/xz/xz.1
+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>, B<.tlz>, or B<.lz>)."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:186
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:196
-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 or if an error occurs."
+#: ../src/xz/xz.1
+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 or if an error occurs."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:208
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: SS
-#: ../src/xz/xz.1:209
+#: ../src/xz/xz.1
#, no-wrap
msgid "Memory usage"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:225
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:237
-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 (for example, using "
-"B<ulimit>(1) to limit virtual memory tends to cripple B<mmap>(2))."
+#: ../src/xz/xz.1
+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 (for example, using B<ulimit>(1) to limit virtual memory tends to cripple B<mmap>(2))."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:259
-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>, for example, "
-"B<XZ_DEFAULTS=--memlimit=150MiB>. It is possible to set the limits "
-"separately for compression and decompression by using "
-"B<--memlimit-compress=>I<limit> and B<--memlimit-decompress=>I<limit>. "
-"Using these two 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."
+#: ../src/xz/xz.1
+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>, for example, B<XZ_DEFAULTS=--memlimit=150MiB>. It is possible to set the limits separately for compression and decompression by using B<--memlimit-compress=>I<limit> and B<--memlimit-decompress=>I<limit>. Using these two 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 ""
#. type: Plain text
-#: ../src/xz/xz.1:278
-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, for example, if the limit is only slightly less "
-"than the amount required for B<xz -9>, the settings will be scaled down only "
-"a little, not all the way down to B<xz -8>."
+#: ../src/xz/xz.1
+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, for example, if the limit is only slightly less than the amount required for B<xz -9>, the settings will be scaled down only a little, not all the way down to B<xz -8>."
msgstr ""
#. type: SS
-#: ../src/xz/xz.1:279
+#: ../src/xz/xz.1
#, no-wrap
msgid "Concatenation and padding with .xz files"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:287
-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."
+#: ../src/xz/xz.1
+msgid "It is possible to concatenate B<.xz> files as is. B<xz> will decompress such files as if they were a single B<.xz> file."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:296
-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, for example, "
-"if the B<.xz> file is stored on a medium that measures file sizes in "
-"512-byte blocks."
+#: ../src/xz/xz.1
+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, for example, if the B<.xz> file is stored on a medium that measures file sizes in 512-byte blocks."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:300
-msgid ""
-"Concatenation and padding are not allowed with B<.lzma> files or raw "
-"streams."
+#: ../src/xz/xz.1
+msgid "Concatenation and padding are not allowed with B<.lzma> files or raw streams."
msgstr ""
#. type: SH
-#: ../src/xz/xz.1:301 ../src/xzdec/xzdec.1:61
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "OPTIONS"
msgstr ""
#. type: SS
-#: ../src/xz/xz.1:303
+#: ../src/xz/xz.1
#, no-wrap
msgid "Integer suffixes and special values"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:307
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:307
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<KiB>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:318
-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>."
+#: ../src/xz/xz.1
+msgid "Multiply the integer by 1,024 (2^10). B<Ki>, B<k>, B<kB>, B<K>, and B<KB> are accepted as synonyms for B<KiB>."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:318
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<MiB>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:328
-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>."
+#: ../src/xz/xz.1
+msgid "Multiply the integer by 1,048,576 (2^20). B<Mi>, B<m>, B<M>, and B<MB> are accepted as synonyms for B<MiB>."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:328
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<GiB>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:338
-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>."
+#: ../src/xz/xz.1
+msgid "Multiply the integer by 1,073,741,824 (2^30). B<Gi>, B<g>, B<G>, and B<GB> are accepted as synonyms for B<GiB>."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:343
-msgid ""
-"The special value B<max> can be used to indicate the maximum integer value "
-"supported by the option."
+#: ../src/xz/xz.1
+msgid "The special value B<max> can be used to indicate the maximum integer value supported by the option."
msgstr ""
#. type: SS
-#: ../src/xz/xz.1:344
+#: ../src/xz/xz.1
#, no-wrap
msgid "Operation mode"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:347
+#: ../src/xz/xz.1
msgid "If multiple operation mode options are given, the last one takes effect."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:347
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-z>, B<--compress>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:356
-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>)."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:356 ../src/xzdec/xzdec.1:62
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-d>, B<--decompress>, B<--uncompress>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:359
+#: ../src/xz/xz.1
msgid "Decompress."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:359
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-t>, B<--test>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:368
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:368
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-l>, B<--list>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:377
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:392
-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, for "
-"example, B<less\\ -S> may be convenient if the terminal isn't wide enough."
+#: ../src/xz/xz.1
+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, for example, B<less\\ -S> may be convenient if the terminal isn't wide enough."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:399
-msgid ""
-"The exact output may vary between B<xz> versions and different locales. For "
-"machine-readable output, B<--robot --list> should be used."
+#: ../src/xz/xz.1
+msgid "The exact output may vary between B<xz> versions and different locales. For machine-readable output, B<--robot --list> should be used."
msgstr ""
#. type: SS
-#: ../src/xz/xz.1:400
+#: ../src/xz/xz.1
#, no-wrap
msgid "Operation modifiers"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:401 ../src/xzdec/xzdec.1:69
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-k>, B<--keep>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:404
+#: ../src/xz/xz.1
msgid "Don't delete the input files."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:418
-msgid ""
-"Since B<xz> 5.2.6, this option also makes B<xz> compress or decompress even "
-"if the input is a symbolic link to a regular file, has more than one hard "
-"link, or has the setuid, setgid, or sticky bit set. The setuid, setgid, and "
-"sticky bits are not copied to the target file. In earlier versions this was "
-"only done with B<--force>."
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.2.6, this option also makes B<xz> compress or decompress even if the input is a symbolic link to a regular file, has more than one hard link, or has the setuid, setgid, or sticky bit set. The setuid, setgid, and sticky bits are not copied to the target file. In earlier versions this was only done with B<--force>."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:418
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-f>, B<--force>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:421
+#: ../src/xz/xz.1
msgid "This option has several effects:"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:425
-msgid ""
-"If the target file already exists, delete it before compressing or "
-"decompressing."
+#: ../src/xz/xz.1
+msgid "If the target file already exists, delete it before compressing or decompressing."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:432
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:457
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:458 ../src/xzdec/xzdec.1:76
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-c>, B<--stdout>, B<--to-stdout>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:464
-msgid ""
-"Write the compressed or decompressed data to standard output instead of a "
-"file. This implies B<--keep>."
+#: ../src/xz/xz.1
+msgid "Write the compressed or decompressed data to standard output instead of a file. This implies B<--keep>."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:464
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--single-stream>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:473
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:482
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:487
-msgid ""
-"This option has no effect if the operation mode is not B<--decompress> or "
-"B<--test>."
+#: ../src/xz/xz.1
+msgid "This option has no effect if the operation mode is not B<--decompress> or B<--test>."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:487
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--no-sparse>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:499
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:499
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-S> I<.suf>, B<--suffix=>I<.suf>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:511
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:525
-msgid ""
-"When decompressing, recognize files with the suffix I<.suf> in addition to "
-"files with the B<.xz>, B<.txz>, B<.lzma>, B<.tlz>, or B<.lz> suffix. If the "
-"source file has the suffix I<.suf>, the suffix is removed to get the target "
-"filename."
+#: ../src/xz/xz.1
+msgid "When decompressing, recognize files with the suffix I<.suf> in addition to files with the B<.xz>, B<.txz>, B<.lzma>, B<.tlz>, or B<.lz> suffix. If the source file has the suffix I<.suf>, the suffix is removed to get the target filename."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:531
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:531
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--files>[B<=>I<file>]"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:545
-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>."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:545
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--files0>[B<=>I<file>]"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:549
-msgid ""
-"This is identical to B<--files>[B<=>I<file>] except that each filename must "
-"be terminated with the null character."
+#: ../src/xz/xz.1
+msgid "This is identical to B<--files>[B<=>I<file>] except that each filename must be terminated with the null character."
msgstr ""
#. type: SS
-#: ../src/xz/xz.1:550
+#: ../src/xz/xz.1
#, no-wrap
msgid "Basic file format and compression options"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:551
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-F> I<format>, B<--format=>I<format>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:556
+#: ../src/xz/xz.1
msgid "Specify the file I<format> to compress or decompress:"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:557
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<auto>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:569
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:569
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<xz>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:576
-msgid ""
-"Compress to the B<.xz> file format, or accept only B<.xz> files when "
-"decompressing."
+#: ../src/xz/xz.1
+msgid "Compress to the B<.xz> file format, or accept only B<.xz> files when decompressing."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:576
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lzma>, B<alone>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:586
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:586
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lzip>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:592
+#: ../src/xz/xz.1
msgid "Accept only B<.lz> files when decompressing. Compression is not supported."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:605
-msgid ""
-"The B<.lz> format version 0 and the unextended version 1 are supported. "
-"Version 0 files were produced by B<lzip> 1.3 and older. Such files aren't "
-"common but may be found from file archives as a few source packages were "
-"released in this format. People might have old personal files in this "
-"format too. Decompression support for the format version 0 was removed in "
-"B<lzip> 1.18."
+#: ../src/xz/xz.1
+msgid "The B<.lz> format version 0 and the unextended version 1 are supported. Version 0 files were produced by B<lzip> 1.3 and older. Such files aren't common but may be found from file archives as a few source packages were released in this format. People might have old personal files in this format too. Decompression support for the format version 0 was removed in B<lzip> 1.18."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:614
-msgid ""
-"B<lzip> 1.4 and later create files in the format version 1. The sync flush "
-"marker extension to the format version 1 was added in B<lzip> 1.6. This "
-"extension is rarely used and isn't supported by B<xz> (diagnosed as corrupt "
-"input)."
+#: ../src/xz/xz.1
+msgid "B<lzip> 1.4 and later create files in the format version 1. The sync flush marker extension to the format version 1 was added in B<lzip> 1.6. This extension is rarely used and isn't supported by B<xz> (diagnosed as corrupt input)."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:614
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<raw>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:622
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:623
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-C> I<check>, B<--check=>I<check>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:638
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:642
+#: ../src/xz/xz.1
msgid "Supported I<check> types:"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:643
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<none>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:649
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:649
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<crc32>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:652
+#: ../src/xz/xz.1
msgid "Calculate CRC32 using the polynomial from IEEE-802.3 (Ethernet)."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:652
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<crc64>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:657
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:657
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<sha256>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:661
+#: ../src/xz/xz.1
msgid "Calculate SHA-256. This is somewhat slower than CRC32 and CRC64."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:667
-msgid ""
-"Integrity of the B<.xz> headers is always verified with CRC32. It is not "
-"possible to change or disable it."
+#: ../src/xz/xz.1
+msgid "Integrity of the B<.xz> headers is always verified with CRC32. It is not possible to change or disable it."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:667
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--ignore-check>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:673
-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."
+#: ../src/xz/xz.1
+msgid "Don't verify the integrity check of the compressed data when decompressing. The CRC32 values in the B<.xz> headers will still be verified normally."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:676
-msgid ""
-"B<Do not use this option unless you know what you are doing.> Possible "
-"reasons to use this option:"
+#: ../src/xz/xz.1
+msgid "B<Do not use this option unless you know what you are doing.> Possible reasons to use this option:"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:679
+#: ../src/xz/xz.1
msgid "Trying to recover data from a corrupt .xz file."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:685
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:686
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-0> ... B<-9>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:695
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:710
-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)."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:711
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-0> ... B<-3>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:723
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:723
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-4> ... B<-6>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:737
-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 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>.)"
+#: ../src/xz/xz.1
+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 for distributing files that need to be decompressible even on systems with only 16\\ MiB RAM. (B<-5e> or B<-6e> may be worth considering too. See B<--extreme>.)"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:737
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-7 ... -9>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:744
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:752
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:754
+#: ../src/xz/xz.1
msgid "The following table summarises the features of the presets:"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842 ../src/xz/xz.1:2839
+#: ../src/xz/xz.1
#, no-wrap
msgid "Preset"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842
+#: ../src/xz/xz.1
#, no-wrap
msgid "DictSize"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842 ../src/xz/xz.1:2839
+#: ../src/xz/xz.1
#, no-wrap
msgid "CompCPU"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842
+#: ../src/xz/xz.1
#, no-wrap
msgid "CompMem"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:761 ../src/xz/xz.1:842
+#: ../src/xz/xz.1
#, no-wrap
msgid "DecMem"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:2450 ../src/xz/xz.1:2475
-#: ../src/xz/xz.1:2840
+#: ../src/xz/xz.1
#, no-wrap
msgid "-0"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:843 ../src/xz/xz.1:2450
+#: ../src/xz/xz.1
#, no-wrap
msgid "256 KiB"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:2840 ../src/scripts/xzgrep.1:82
+#: ../src/xz/xz.1 ../src/scripts/xzgrep.1
#, no-wrap
msgid "0"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:764 ../src/xz/xz.1:845 ../src/xz/xz.1:2475
+#: ../src/xz/xz.1
#, no-wrap
msgid "3 MiB"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:762 ../src/xz/xz.1:763 ../src/xz/xz.1:843 ../src/xz/xz.1:844
-#: ../src/xz/xz.1:2451 ../src/xz/xz.1:2452 ../src/xz/xz.1:2454
+#: ../src/xz/xz.1
#, no-wrap
msgid "1 MiB"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:2451 ../src/xz/xz.1:2476
-#: ../src/xz/xz.1:2841
+#: ../src/xz/xz.1
#, no-wrap
msgid "-1"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:1758 ../src/xz/xz.1:2841
-#: ../src/scripts/xzgrep.1:86
+#: ../src/xz/xz.1 ../src/scripts/xzgrep.1
#, no-wrap
msgid "1"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:767 ../src/xz/xz.1:768 ../src/xz/xz.1:848
-#: ../src/xz/xz.1:849 ../src/xz/xz.1:2476
+#: ../src/xz/xz.1
#, no-wrap
msgid "9 MiB"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:763 ../src/xz/xz.1:764 ../src/xz/xz.1:844 ../src/xz/xz.1:845
-#: ../src/xz/xz.1:2452 ../src/xz/xz.1:2455 ../src/xz/xz.1:2476
+#: ../src/xz/xz.1
#, no-wrap
msgid "2 MiB"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:764 ../src/xz/xz.1:2452 ../src/xz/xz.1:2477
-#: ../src/xz/xz.1:2842
+#: ../src/xz/xz.1
#, no-wrap
msgid "-2"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:764 ../src/xz/xz.1:1760 ../src/xz/xz.1:2842
+#: ../src/xz/xz.1
#, no-wrap
msgid "2"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:764 ../src/xz/xz.1:769 ../src/xz/xz.1:850 ../src/xz/xz.1:2477
+#: ../src/xz/xz.1
#, no-wrap
msgid "17 MiB"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:2453 ../src/xz/xz.1:2478
-#: ../src/xz/xz.1:2843
+#: ../src/xz/xz.1
#, no-wrap
msgid "-3"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:766 ../src/xz/xz.1:843 ../src/xz/xz.1:846
-#: ../src/xz/xz.1:847 ../src/xz/xz.1:2453 ../src/xz/xz.1:2454
-#: ../src/xz/xz.1:2456
+#: ../src/xz/xz.1
#, no-wrap
msgid "4 MiB"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:2843
+#: ../src/xz/xz.1
#, no-wrap
msgid "3"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:770 ../src/xz/xz.1:851 ../src/xz/xz.1:2458
-#: ../src/xz/xz.1:2459 ../src/xz/xz.1:2478
+#: ../src/xz/xz.1
#, no-wrap
msgid "32 MiB"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:765 ../src/xz/xz.1:766 ../src/xz/xz.1:846 ../src/xz/xz.1:847
+#: ../src/xz/xz.1
#, no-wrap
msgid "5 MiB"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:766 ../src/xz/xz.1:2454 ../src/xz/xz.1:2479
-#: ../src/xz/xz.1:2844
+#: ../src/xz/xz.1
#, no-wrap
msgid "-4"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:766 ../src/xz/xz.1:1759 ../src/xz/xz.1:1761
-#: ../src/xz/xz.1:1762 ../src/xz/xz.1:1764 ../src/xz/xz.1:2844
+#: ../src/xz/xz.1
#, no-wrap
msgid "4"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:766 ../src/xz/xz.1:846 ../src/xz/xz.1:847 ../src/xz/xz.1:2479
+#: ../src/xz/xz.1
#, no-wrap
msgid "48 MiB"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:2455 ../src/xz/xz.1:2480
-#: ../src/xz/xz.1:2845
+#: ../src/xz/xz.1
#, no-wrap
msgid "-5"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:768 ../src/xz/xz.1:848 ../src/xz/xz.1:849
-#: ../src/xz/xz.1:2455 ../src/xz/xz.1:2456 ../src/xz/xz.1:2457
+#: ../src/xz/xz.1
#, no-wrap
msgid "8 MiB"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:2845
+#: ../src/xz/xz.1
#, no-wrap
msgid "5"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:767 ../src/xz/xz.1:768 ../src/xz/xz.1:848 ../src/xz/xz.1:849
-#: ../src/xz/xz.1:2480 ../src/xz/xz.1:2481
+#: ../src/xz/xz.1
#, no-wrap
msgid "94 MiB"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:768 ../src/xz/xz.1:2456 ../src/xz/xz.1:2481
-#: ../src/xz/xz.1:2846
+#: ../src/xz/xz.1
#, no-wrap
msgid "-6"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:768 ../src/xz/xz.1:769 ../src/xz/xz.1:770 ../src/xz/xz.1:771
-#: ../src/xz/xz.1:2846
+#: ../src/xz/xz.1
#, no-wrap
msgid "6"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:769 ../src/xz/xz.1:2457 ../src/xz/xz.1:2482
+#: ../src/xz/xz.1
#, no-wrap
msgid "-7"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:769 ../src/xz/xz.1:850 ../src/xz/xz.1:2457
-#: ../src/xz/xz.1:2458 ../src/xz/xz.1:2479
+#: ../src/xz/xz.1
#, no-wrap
msgid "16 MiB"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:769 ../src/xz/xz.1:850 ../src/xz/xz.1:2482
+#: ../src/xz/xz.1
#, no-wrap
msgid "186 MiB"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:770 ../src/xz/xz.1:2458 ../src/xz/xz.1:2483
+#: ../src/xz/xz.1
#, no-wrap
msgid "-8"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:770 ../src/xz/xz.1:851 ../src/xz/xz.1:2483
+#: ../src/xz/xz.1
#, no-wrap
msgid "370 MiB"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:770 ../src/xz/xz.1:851
+#: ../src/xz/xz.1
#, no-wrap
msgid "33 MiB"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:2459 ../src/xz/xz.1:2484
+#: ../src/xz/xz.1
#, no-wrap
msgid "-9"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:852 ../src/xz/xz.1:2459
+#: ../src/xz/xz.1
#, no-wrap
msgid "64 MiB"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:852 ../src/xz/xz.1:2484
+#: ../src/xz/xz.1
#, no-wrap
msgid "674 MiB"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:771 ../src/xz/xz.1:852
+#: ../src/xz/xz.1
#, no-wrap
msgid "65 MiB"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:777
+#: ../src/xz/xz.1
msgid "Column descriptions:"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:789
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:798
-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>."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:806
-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."
+#: ../src/xz/xz.1
+msgid "CompMem contains the compressor memory requirements in the single-threaded mode. It may vary slightly between B<xz> versions."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:813
-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."
+#: ../src/xz/xz.1
+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 ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Memory requirements of the multi-threaded mode are significantly higher than that of the single-threaded mode. With the default value of B<--block-size>, each thread needs 3*3*DictSize plus CompMem or DecMem. For example, four threads with preset B<-6> needs 660\\(en670\\ MiB of memory."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:814
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-e>, B<--extreme>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:823
-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>."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:835
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: tbl table
-#: ../src/xz/xz.1:843
+#: ../src/xz/xz.1
#, no-wrap
msgid "-0e"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:843 ../src/xz/xz.1:844 ../src/xz/xz.1:845 ../src/xz/xz.1:847
-#: ../src/xz/xz.1:849 ../src/xz/xz.1:850 ../src/xz/xz.1:851 ../src/xz/xz.1:852
-#: ../src/xz/xz.1:2848
+#: ../src/xz/xz.1
#, no-wrap
msgid "8"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:844
+#: ../src/xz/xz.1
#, no-wrap
msgid "-1e"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:844
+#: ../src/xz/xz.1
#, no-wrap
msgid "13 MiB"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:845
+#: ../src/xz/xz.1
#, no-wrap
msgid "-2e"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:845
+#: ../src/xz/xz.1
#, no-wrap
msgid "25 MiB"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:846
+#: ../src/xz/xz.1
#, no-wrap
msgid "-3e"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:846 ../src/xz/xz.1:848 ../src/xz/xz.1:2847
+#: ../src/xz/xz.1
#, no-wrap
msgid "7"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:847
+#: ../src/xz/xz.1
#, no-wrap
msgid "-4e"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:848 ../src/xz/xz.1:2847
+#: ../src/xz/xz.1
#, no-wrap
msgid "-5e"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:849 ../src/xz/xz.1:2848
+#: ../src/xz/xz.1
#, no-wrap
msgid "-6e"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:850
+#: ../src/xz/xz.1
#, no-wrap
msgid "-7e"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:851
+#: ../src/xz/xz.1
#, no-wrap
msgid "-8e"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:852
+#: ../src/xz/xz.1
#, no-wrap
msgid "-9e"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:864
-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>."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:864
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--fast>"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:867
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--best>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:878
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:878
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--block-size=>I<size>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:891
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:909
-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\\(en4 times the size of the LZMA2 dictionary or at least 1 "
-"MiB. Using I<size> less than the LZMA2 dictionary size is waste of RAM "
-"because then the LZMA2 dictionary buffer will never get fully used. The "
-"sizes of the blocks are stored in the block headers, which a future version "
-"of B<xz> will use for multi-threaded decompression."
+#: ../src/xz/xz.1
+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\\(en4 times the size of the LZMA2 dictionary or at least 1 MiB. Using I<size> less than the LZMA2 dictionary size is waste of RAM because then the LZMA2 dictionary buffer will never get fully used. In multi-threaded mode, the sizes of the blocks are stored in the block headers. This size information is required for multi-threaded decompression."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:918
-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."
+#: ../src/xz/xz.1
+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 B<xz> won't be able decompress the files in multi-threaded mode."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:918
+#: ../src/xz/xz.1
#, no-wrap
-msgid "B<--block-list=>I<sizes>"
+msgid "B<--block-list=>I<items>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:924
-msgid ""
-"When compressing to the B<.xz> format, start a new block after the given "
-"intervals of uncompressed data."
+#: ../src/xz/xz.1
+msgid "When compressing to the B<.xz> format, start a new block with an optional custom filter chain after the given intervals of uncompressed data."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:930
-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."
+#: ../src/xz/xz.1
+msgid "The I<items> are a comma-separated list. Each item consists of an optional filter chain number between 0 and 9 followed by a colon (B<:>) and a required size of uncompressed data. Omitting an item (two or more consecutive commas) is a shorthand to use the size and filters of the previous item."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:940
-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."
+#: ../src/xz/xz.1
+msgid "If the input file is bigger than the sum of the sizes in I<items>, the last item is repeated until the end of the file. A special value of B<0> may be used as the last size to indicate that the rest of the file should be encoded as a single block."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:955
-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."
+#: ../src/xz/xz.1
+msgid "An alternative filter chain for each block can be specified in combination with the B<--filters1=>I<filters> \\&...\\& B<--filters9=>I<filters> options. These options define filter chains with an identifier between 1\\(en9. Filter chain 0 can be used to refer to the default filter chain, which is the same as not specifying a filter chain. The filter chain identifier can be used before the uncompressed size, followed by a colon (B<:>). For example, if one specifies B<--block-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB> then blocks will be created using:"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:961
-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."
+#: ../src/xz/xz.1
+msgid "The filter chain specified by B<--filters1> and 2 MiB input"
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The filter chain specified by B<--filters3> and 2 MiB input"
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The filter chain specified by B<--filters2> and 4 MiB input"
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The default filter chain and 2 MiB input"
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The default filter chain and 4 MiB input for every block until end of input."
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "If one specifies a size that exceeds 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<items>. 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 ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:961
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--flush-timeout=>I<timeout>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:978
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:986
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:988
+#: ../src/xz/xz.1
msgid "This feature is not available on non-POSIX systems."
msgstr ""
#. FIXME
#. type: Plain text
-#: ../src/xz/xz.1:996
-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."
+#: ../src/xz/xz.1
+msgid "B<This feature is still experimental.> Currently B<xz> is unsuitable for decompressing the stream in real time due to how B<xz> does buffering."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:996
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--memlimit-compress=>I<limit>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1001
-msgid ""
-"Set a memory usage limit for compression. If this option is specified "
-"multiple times, the last one takes effect."
+#: ../src/xz/xz.1
+msgid "Set a memory usage limit for compression. If this option is specified multiple times, the last one takes effect."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1014
-msgid ""
-"If the compression settings exceed the I<limit>, B<xz> will attempt to "
-"adjust the settings downwards so that the limit is no longer exceeded and "
-"display a notice that automatic adjustment was done. The adjustments are "
-"done in this order: reducing the number of threads, switching to "
-"single-threaded mode if even one thread in multi-threaded mode exceeds the "
-"I<limit>, and finally reducing the LZMA2 dictionary size."
+#: ../src/xz/xz.1
+msgid "If the compression settings exceed the I<limit>, B<xz> will attempt to adjust the settings downwards so that the limit is no longer exceeded and display a notice that automatic adjustment was done. The adjustments are done in this order: reducing the number of threads, switching to single-threaded mode if even one thread in multi-threaded mode exceeds the I<limit>, and finally reducing the LZMA2 dictionary size."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1022
-msgid ""
-"When compressing with B<--format=raw> or if B<--no-adjust> has been "
-"specified, only the number of threads may be reduced since it can be done "
-"without affecting the compressed output."
+#: ../src/xz/xz.1
+msgid "When compressing with B<--format=raw> or if B<--no-adjust> has been specified, only the number of threads may be reduced since it can be done without affecting the compressed output."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1029
-msgid ""
-"If the I<limit> cannot be met even with the adjustments described above, an "
-"error is displayed and B<xz> will exit with exit status 1."
+#: ../src/xz/xz.1
+msgid "If the I<limit> cannot be met even with the adjustments described above, an error is displayed and B<xz> will exit with exit status 1."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1033
+#: ../src/xz/xz.1
msgid "The I<limit> can be specified in multiple ways:"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1043
-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>"
+#: ../src/xz/xz.1
+msgid "The I<limit> can be an absolute value in bytes. Using an integer suffix like B<MiB> can be useful. Example: B<--memlimit-compress=80MiB>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1055
-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%>"
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:1065
-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)."
+#: ../src/xz/xz.1
+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)."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1089
-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>. On MIPS32 B<2000\\ "
-"MiB> is used instead. (The values B<0> and B<max> aren't affected by this. "
-"A similar feature doesn't exist for decompression.) This can be helpful "
-"when a 32-bit executable has access to 4\\ GiB address space (2 GiB on "
-"MIPS32) while hopefully doing no harm in other situations."
+#: ../src/xz/xz.1
+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>. On MIPS32 B<2000\\ MiB> is used instead. (The values B<0> and B<max> aren't affected by this. A similar feature doesn't exist for decompression.) This can be helpful when a 32-bit executable has access to 4\\ GiB address space (2 GiB on MIPS32) while hopefully doing no harm in other situations."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1092
+#: ../src/xz/xz.1
msgid "See also the section B<Memory usage>."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1092
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--memlimit-decompress=>I<limit>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1106
-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>."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:1106
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--memlimit-mt-decompress=>I<limit>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1128
-msgid ""
-"Set a memory usage limit for multi-threaded decompression. This can only "
-"affect the number of threads; this will never make B<xz> refuse to "
-"decompress a file. If I<limit> is too low to allow any multi-threading, the "
-"I<limit> is ignored and B<xz> will continue in single-threaded mode. Note "
-"that if also B<--memlimit-decompress> is used, it will always apply to both "
-"single-threaded and multi-threaded modes, and so the effective I<limit> for "
-"multi-threading will never be higher than the limit set with "
-"B<--memlimit-decompress>."
+#: ../src/xz/xz.1
+msgid "Set a memory usage limit for multi-threaded decompression. This can only affect the number of threads; this will never make B<xz> refuse to decompress a file. If I<limit> is too low to allow any multi-threading, the I<limit> is ignored and B<xz> will continue in single-threaded mode. Note that if also B<--memlimit-decompress> is used, it will always apply to both single-threaded and multi-threaded modes, and so the effective I<limit> for multi-threading will never be higher than the limit set with B<--memlimit-decompress>."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1135
-msgid ""
-"In contrast to the other memory usage limit options, "
-"B<--memlimit-mt-decompress=>I<limit> has a system-specific default "
-"I<limit>. B<xz --info-memory> can be used to see the current value."
+#: ../src/xz/xz.1
+msgid "In contrast to the other memory usage limit options, B<--memlimit-mt-decompress=>I<limit> has a system-specific default I<limit>. B<xz --info-memory> can be used to see the current value."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1151
-msgid ""
-"This option and its default value exist because without any limit the "
-"threaded decompressor could end up allocating an insane amount of memory "
-"with some input files. If the default I<limit> is too low on your system, "
-"feel free to increase the I<limit> but never set it to a value larger than "
-"the amount of usable RAM as with appropriate input files B<xz> will attempt "
-"to use that amount of memory even with a low number of threads. Running out "
-"of memory or swapping will not improve decompression performance."
+#: ../src/xz/xz.1
+msgid "This option and its default value exist because without any limit the threaded decompressor could end up allocating an insane amount of memory with some input files. If the default I<limit> is too low on your system, feel free to increase the I<limit> but never set it to a value larger than the amount of usable RAM as with appropriate input files B<xz> will attempt to use that amount of memory even with a low number of threads. Running out of memory or swapping will not improve decompression performance."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1163
-msgid ""
-"See B<--memlimit-compress=>I<limit> for possible ways to specify the "
-"I<limit>. Setting I<limit> to B<0> resets the I<limit> to the default "
-"system-specific value."
+#: ../src/xz/xz.1
+msgid "See B<--memlimit-compress=>I<limit> for possible ways to specify the I<limit>. Setting I<limit> to B<0> resets the I<limit> to the default system-specific value."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1163
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-M> I<limit>, B<--memlimit=>I<limit>, B<--memory=>I<limit>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1169
-msgid ""
-"This is equivalent to specifying B<--memlimit-compress=>I<limit> "
-"B<--memlimit-decompress=>I<limit> B<--memlimit-mt-decompress=>I<limit>."
+#: ../src/xz/xz.1
+msgid "This is equivalent to specifying B<--memlimit-compress=>I<limit> B<--memlimit-decompress=>I<limit> B<--memlimit-mt-decompress=>I<limit>."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1169
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--no-adjust>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1179
-msgid ""
-"Display an error and exit if the memory usage limit cannot be met without "
-"adjusting settings that affect the compressed output. That is, this "
-"prevents B<xz> from switching the encoder from multi-threaded mode to "
-"single-threaded mode and from reducing the LZMA2 dictionary size. Even when "
-"this option is used the number of threads may be reduced to meet the memory "
-"usage limit as that won't affect the compressed output."
+#: ../src/xz/xz.1
+msgid "Display an error and exit if the memory usage limit cannot be met without adjusting settings that affect the compressed output. That is, this prevents B<xz> from switching the encoder from multi-threaded mode to single-threaded mode and from reducing the LZMA2 dictionary size. Even when this option is used the number of threads may be reduced to meet the memory usage limit as that won't affect the compressed output."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1182
-msgid ""
-"Automatic adjusting is always disabled when creating raw streams "
-"(B<--format=raw>)."
+#: ../src/xz/xz.1
+msgid "Automatic adjusting is always disabled when creating raw streams (B<--format=raw>)."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1182
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-T> I<threads>, B<--threads=>I<threads>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1197
-msgid ""
-"Specify the number of worker threads to use. Setting I<threads> to a "
-"special value B<0> makes B<xz> use up to as many threads as the processor(s) "
-"on the system support. The actual number of threads can be fewer than "
-"I<threads> if the input file is not big enough for threading with the given "
-"settings or if using more threads would exceed the memory usage limit."
+#: ../src/xz/xz.1
+msgid "Specify the number of worker threads to use. Setting I<threads> to a special value B<0> makes B<xz> use up to as many threads as the processor(s) on the system support. The actual number of threads can be fewer than I<threads> if the input file is not big enough for threading with the given settings or if using more threads would exceed the memory usage limit."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1216
-msgid ""
-"The single-threaded and multi-threaded compressors produce different "
-"output. Single-threaded compressor will give the smallest file size but "
-"only the output from the multi-threaded compressor can be decompressed using "
-"multiple threads. Setting I<threads> to B<1> will use the single-threaded "
-"mode. Setting I<threads> to any other value, including B<0>, will use the "
-"multi-threaded compressor even if the system supports only one hardware "
-"thread. (B<xz> 5.2.x used single-threaded mode in this situation.)"
+#: ../src/xz/xz.1
+msgid "The single-threaded and multi-threaded compressors produce different output. Single-threaded compressor will give the smallest file size but only the output from the multi-threaded compressor can be decompressed using multiple threads. Setting I<threads> to B<1> will use the single-threaded mode. Setting I<threads> to any other value, including B<0>, will use the multi-threaded compressor even if the system supports only one hardware thread. (B<xz> 5.2.x used single-threaded mode in this situation.)"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1235
-msgid ""
-"To use multi-threaded mode with only one thread, set I<threads> to B<+1>. "
-"The B<+> prefix has no effect with values other than B<1>. A memory usage "
-"limit can still make B<xz> switch to single-threaded mode unless "
-"B<--no-adjust> is used. Support for the B<+> prefix was added in B<xz> "
-"5.4.0."
+#: ../src/xz/xz.1
+msgid "To use multi-threaded mode with only one thread, set I<threads> to B<+1>. The B<+> prefix has no effect with values other than B<1>. A memory usage limit can still make B<xz> switch to single-threaded mode unless B<--no-adjust> is used. Support for the B<+> prefix was added in B<xz> 5.4.0."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1250
-msgid ""
-"If an automatic number of threads has been requested and no memory usage "
-"limit has been specified, then a system-specific default soft limit will be "
-"used to possibly limit the number of threads. It is a soft limit in sense "
-"that it is ignored if the number of threads becomes one, thus a soft limit "
-"will never stop B<xz> from compressing or decompressing. This default soft "
-"limit will not make B<xz> switch from multi-threaded mode to single-threaded "
-"mode. The active limits can be seen with B<xz --info-memory>."
+#: ../src/xz/xz.1
+msgid "If an automatic number of threads has been requested and no memory usage limit has been specified, then a system-specific default soft limit will be used to possibly limit the number of threads. It is a soft limit in sense that it is ignored if the number of threads becomes one, thus a soft limit will never stop B<xz> from compressing or decompressing. This default soft limit will not make B<xz> switch from multi-threaded mode to single-threaded mode. The active limits can be seen with B<xz --info-memory>."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1257
-msgid ""
-"Currently the only threading method is to split the input into blocks and "
-"compress them independently from each other. The default block size depends "
-"on the compression level and can be overridden with the "
-"B<--block-size=>I<size> option."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:1265
-msgid ""
-"Threaded decompression only works on files that contain multiple blocks with "
-"size information in block headers. All large enough files compressed in "
-"multi-threaded mode meet this condition, but files compressed in "
-"single-threaded mode don't even if B<--block-size=>I<size> has been used."
+#: ../src/xz/xz.1
+msgid "Threaded decompression only works on files that contain multiple blocks with size information in block headers. All large enough files compressed in multi-threaded mode meet this condition, but files compressed in single-threaded mode don't even if B<--block-size=>I<size> has been used."
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The default value for I<threads> is B<0>. In B<xz> 5.4.x and older the default is B<1>."
msgstr ""
#. type: SS
-#: ../src/xz/xz.1:1266 ../src/xz/xz.1:2819
+#: ../src/xz/xz.1
#, no-wrap
msgid "Custom compressor filter chains"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1282
-msgid ""
-"A custom filter chain allows specifying the compression settings in detail "
-"instead of relying on the settings associated to the presets. When a custom "
-"filter chain is specified, preset options (B<-0> \\&...\\& B<-9> and "
-"B<--extreme>) earlier on the command line are forgotten. If a preset "
-"option is specified after one or more custom filter chain options, the new "
-"preset takes effect and the custom filter chain options specified earlier "
-"are forgotten."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:1289
-msgid ""
-"A filter chain is comparable to piping on the command line. When "
-"compressing, the uncompressed input goes to the first filter, whose output "
-"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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:1297
-msgid ""
-"Many filters have limitations on where they can be in the filter chain: some "
-"filters can work only as the last filter in the chain, some only as a "
-"non-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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:1305
-msgid ""
-"A custom filter chain is specified by using one or more filter options in "
-"the order they are wanted in the filter chain. That is, the order of filter "
-"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."
+#: ../src/xz/xz.1
+msgid "A custom filter chain can be specified in two different ways. The options B<--filters=>I<filters> and B<--filters1=>I<filters> \\&...\\& B<--filters9=>I<filters> allow specifying an entire filter chain in one option using the liblzma filter string syntax. Alternatively, a filter chain can be specified by using one or more individual filter options in the order they are wanted in the filter chain. That is, the order of the individual filter options is significant! When decoding raw streams (B<--format=raw>), the filter chain must be specified in the same order as it was specified when compressing. Any individual filter or preset options specified before the full chain option (B<--filters=>I<filters>) will be forgotten. Individual filters specified after the full chain option will reset the filter chain."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1314
-msgid ""
-"Filters take filter-specific I<options> as a comma-separated list. Extra "
-"commas in I<options> are ignored. Every option has a default value, so you "
-"need to specify only those you want to change."
+#: ../src/xz/xz.1
+msgid "Both the full and individual filter options take filter-specific I<options> as a comma-separated list. Extra commas in I<options> are ignored. Every option has a default value, so specify those you want to change."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1323
-msgid ""
-"To see the whole filter chain and I<options>, use B<xz -vv> (that is, use "
-"B<--verbose> twice). This works also for viewing the filter chain options "
-"used by presets."
+#: ../src/xz/xz.1
+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 ""
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "B<--filters=>I<filters>"
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Specify the full filter chain or a preset in a single option. Each filter can be separated by spaces or two dashes (B<-->). I<filters> may need to be quoted on the shell command line so it is parsed as a single option. To denote I<options>, use B<:> or B<=>. A preset can be prefixed with a B<-> and followed with zero or more flags. The only supported flag is B<e> to apply the same options as B<--extreme>."
+msgstr ""
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "B<--filters1>=I<filters> ... B<--filters9>=I<filters>"
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Specify up to nine additional filter chains that can be used with B<--block-list>."
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "For example, when compressing an archive with executable files followed by text files, the executable part could use a filter chain with a BCJ filter and the text part only the LZMA2 filter."
+msgstr ""
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "B<--filters-help>"
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Display a help message describing how to specify presets and custom filter chains in the B<--filters> and B<--filters1=>I<filters> \\&...\\& B<--filters9=>I<filters> options, and exit successfully."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1323
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--lzma1>[B<=>I<options>]"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1326
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--lzma2>[B<=>I<options>]"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1331
-msgid ""
-"Add LZMA1 or LZMA2 filter to the filter chain. These filters can be used "
-"only as the last filter in the chain."
+#: ../src/xz/xz.1
+msgid "Add LZMA1 or LZMA2 filter to the filter chain. These filters can be used only as the last filter in the chain."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1343
-msgid ""
-"LZMA1 is a legacy filter, which is supported almost solely due to the legacy "
-"B<.lzma> file format, which supports only LZMA1. LZMA2 is an updated "
-"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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:1346
+#: ../src/xz/xz.1
msgid "LZMA1 and LZMA2 share the same set of I<options>:"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1347
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<preset=>I<preset>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1374
-msgid ""
-"Reset all LZMA1 or LZMA2 I<options> to I<preset>. I<Preset> consist of an "
-"integer, which may be followed by single-letter preset modifiers. The "
-"integer can be from B<0> to B<9>, matching the command line options B<-0> "
-"\\&...\\& B<-9>. The only supported modifier is currently B<e>, which "
-"matches B<--extreme>. If no B<preset> is specified, the default values of "
-"LZMA1 or LZMA2 I<options> are taken from the preset B<6>."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:1374
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<dict=>I<size>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1389
-msgid ""
-"Dictionary (history buffer) I<size> indicates how many bytes of the "
-"recently processed uncompressed data is kept in memory. The algorithm tries "
-"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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:1398
-msgid ""
-"Typical dictionary I<size> is from 64\\ KiB to 64\\ MiB. The minimum is 4\\ "
-"KiB. The maximum for compression is currently 1.5\\ GiB (1536\\ MiB). The "
-"decompressor already supports dictionaries up to one byte less than 4\\ GiB, "
-"which is the maximum for the LZMA1 and LZMA2 stream formats."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:1425
-msgid ""
-"Dictionary I<size> and match finder (I<mf>) together determine the memory "
-"usage of the LZMA1 or LZMA2 encoder. The same (or bigger) dictionary "
-"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."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:1425
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lc=>I<lc>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1434
-msgid ""
-"Specify the number of literal context bits. The minimum is 0 and the "
-"maximum is 4; the default is 3. In addition, the sum of I<lc> and I<lp> "
-"must not exceed 4."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:1439
-msgid ""
-"All bytes that cannot be encoded as matches are encoded as literals. That "
-"is, literals are simply 8-bit bytes that are encoded one at a time."
+#: ../src/xz/xz.1
+msgid "All bytes that cannot be encoded as matches are encoded as literals. That is, literals are simply 8-bit bytes that are encoded one at a time."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1453
-msgid ""
-"The literal coding makes an assumption that the highest I<lc> bits of the "
-"previous uncompressed byte correlate with the next byte. For example, in "
-"typical English text, an upper-case letter is often followed by a lower-case "
-"letter, and a lower-case letter is usually followed by another lower-case "
-"letter. In the US-ASCII character set, the highest three bits are 010 for "
-"upper-case letters and 011 for lower-case letters. When I<lc> is at least "
-"3, the literal coding can take advantage of this property in the "
-"uncompressed data."
+#: ../src/xz/xz.1
+msgid "The literal coding makes an assumption that the highest I<lc> bits of the previous uncompressed byte correlate with the next byte. For example, in typical English text, an upper-case letter is often followed by a lower-case letter, and a lower-case letter is usually followed by another lower-case letter. In the US-ASCII character set, the highest three bits are 010 for upper-case letters and 011 for lower-case letters. When I<lc> is at least 3, the literal coding can take advantage of this property in the uncompressed data."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1462
-msgid ""
-"The default value (3) is usually good. If you want maximum compression, "
-"test B<lc=4>. Sometimes it helps a little, and sometimes it makes "
-"compression worse. If it makes it worse, test B<lc=2> too."
+#: ../src/xz/xz.1
+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 B<lc=2> too."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1462
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<lp=>I<lp>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1466
-msgid ""
-"Specify the number of literal position bits. The minimum is 0 and the "
-"maximum is 4; the default is 0."
+#: ../src/xz/xz.1
+msgid "Specify the number of literal position bits. The minimum is 0 and the maximum is 4; the default is 0."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1473
-msgid ""
-"I<Lp> affects what kind of alignment in the uncompressed data is assumed "
-"when encoding literals. See I<pb> below for more information about "
-"alignment."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:1473
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<pb=>I<pb>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1477
-msgid ""
-"Specify the number of position bits. The minimum is 0 and the maximum is 4; "
-"the default is 2."
+#: ../src/xz/xz.1
+msgid "Specify the number of position bits. The minimum is 0 and the maximum is 4; the default is 2."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1484
-msgid ""
-"I<Pb> affects what kind of alignment in the uncompressed data is assumed in "
-"general. The default means four-byte alignment (2^I<pb>=2^2=4), which is "
-"often a good choice when there's no better guess."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:1498
-msgid ""
-"When the alignment is known, setting I<pb> accordingly may reduce the file "
-"size a little. For example, with text files having one-byte alignment "
-"(US-ASCII, ISO-8859-*, UTF-8), setting B<pb=0> can improve compression "
-"slightly. For UTF-16 text, B<pb=1> is a good choice. If the alignment is "
-"an odd number like 3 bytes, B<pb=0> might be the best choice."
+#: ../src/xz/xz.1
+msgid "When the alignment is known, setting I<pb> accordingly may reduce the file size a little. For example, with text files having one-byte alignment (US-ASCII, ISO-8859-*, UTF-8), setting B<pb=0> can improve compression slightly. For UTF-16 text, B<pb=1> is a good choice. If the alignment is an odd number like 3 bytes, B<pb=0> might be the best choice."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1506
-msgid ""
-"Even though the assumed alignment can be adjusted with I<pb> and I<lp>, "
-"LZMA1 and LZMA2 still slightly favor 16-byte alignment. It might be worth "
-"taking into account when designing file formats that are likely to be often "
-"compressed with LZMA1 or LZMA2."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:1506
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<mf=>I<mf>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1521
-msgid ""
-"Match finder has a major effect on encoder speed, memory usage, and "
-"compression ratio. Usually Hash Chain match finders are faster than Binary "
-"Tree match finders. The default depends on the I<preset>: 0 uses B<hc3>, "
-"1\\(en3 use B<hc4>, and the rest use B<bt4>."
+#: ../src/xz/xz.1
+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\\(en3 use B<hc4>, and the rest use B<bt4>."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1527
-msgid ""
-"The following match finders are supported. The memory usage formulas below "
-"are rough approximations, which are closest to the reality when I<dict> is a "
-"power of two."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:1528
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<hc3>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1531
+#: ../src/xz/xz.1
msgid "Hash Chain with 2- and 3-byte hashing"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1535 ../src/xz/xz.1:1584
+#: ../src/xz/xz.1
msgid "Minimum value for I<nice>: 3"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1537 ../src/xz/xz.1:1556 ../src/xz/xz.1:1586
-#: ../src/xz/xz.1:1605
+#: ../src/xz/xz.1
msgid "Memory usage:"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1542
+#: ../src/xz/xz.1
msgid "I<dict> * 7.5 (if I<dict> E<lt>= 16 MiB);"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1547
+#: ../src/xz/xz.1
msgid "I<dict> * 5.5 + 64 MiB (if I<dict> E<gt> 16 MiB)"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1547
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<hc4>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1550
+#: ../src/xz/xz.1
msgid "Hash Chain with 2-, 3-, and 4-byte hashing"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1554 ../src/xz/xz.1:1603
+#: ../src/xz/xz.1
msgid "Minimum value for I<nice>: 4"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1561
+#: ../src/xz/xz.1
msgid "I<dict> * 7.5 (if I<dict> E<lt>= 32 MiB);"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1566
+#: ../src/xz/xz.1
msgid "I<dict> * 6.5 (if I<dict> E<gt> 32 MiB)"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1566
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<bt2>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1569
+#: ../src/xz/xz.1
msgid "Binary Tree with 2-byte hashing"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1573
+#: ../src/xz/xz.1
msgid "Minimum value for I<nice>: 2"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1577
+#: ../src/xz/xz.1
msgid "Memory usage: I<dict> * 9.5"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1577
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<bt3>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1580
+#: ../src/xz/xz.1
msgid "Binary Tree with 2- and 3-byte hashing"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1591
+#: ../src/xz/xz.1
msgid "I<dict> * 11.5 (if I<dict> E<lt>= 16 MiB);"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1596
+#: ../src/xz/xz.1
msgid "I<dict> * 9.5 + 64 MiB (if I<dict> E<gt> 16 MiB)"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1596
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<bt4>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1599
+#: ../src/xz/xz.1
msgid "Binary Tree with 2-, 3-, and 4-byte hashing"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1610
+#: ../src/xz/xz.1
msgid "I<dict> * 11.5 (if I<dict> E<lt>= 32 MiB);"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1615
+#: ../src/xz/xz.1
msgid "I<dict> * 10.5 (if I<dict> E<gt> 32 MiB)"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1616
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<mode=>I<mode>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1637
-msgid ""
-"Compression I<mode> specifies the method to analyze the data produced by the "
-"match finder. Supported I<modes> are B<fast> and B<normal>. The default is "
-"B<fast> for I<presets> 0\\(en3 and B<normal> for I<presets> 4\\(en9."
+#: ../src/xz/xz.1
+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\\(en3 and B<normal> for I<presets> 4\\(en9."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1646
-msgid ""
-"Usually B<fast> is used with Hash Chain match finders and B<normal> with "
-"Binary Tree match finders. This is also what the I<presets> do."
+#: ../src/xz/xz.1
+msgid "Usually B<fast> is used with Hash Chain match finders and B<normal> with Binary Tree match finders. This is also what the I<presets> do."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1646
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<nice=>I<nice>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1653
-msgid ""
-"Specify what is considered to be a nice length for a match. Once a match of "
-"at least I<nice> bytes is found, the algorithm stops looking for possibly "
-"better matches."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:1660
-msgid ""
-"I<Nice> can be 2\\(en273 bytes. Higher values tend to give better "
-"compression ratio at the expense of speed. The default depends on the "
-"I<preset>."
+#: ../src/xz/xz.1
+msgid "I<Nice> can be 2\\(en273 bytes. Higher values tend to give better compression ratio at the expense of speed. The default depends on the I<preset>."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1660
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<depth=>I<depth>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1670
-msgid ""
-"Specify the maximum search depth in the match finder. The default is the "
-"special value of 0, which makes the compressor determine a reasonable "
-"I<depth> from I<mf> and I<nice>."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:1681
-msgid ""
-"Reasonable I<depth> for Hash Chains is 4\\(en100 and 16\\(en1000 for Binary "
-"Trees. Using very high values for I<depth> can make the encoder extremely "
-"slow with some files. Avoid setting the I<depth> over 1000 unless you are "
-"prepared to interrupt the compression in case it is taking far too long."
+#: ../src/xz/xz.1
+msgid "Reasonable I<depth> for Hash Chains is 4\\(en100 and 16\\(en1000 for Binary Trees. Using very high values for I<depth> can make the encoder extremely slow with some files. Avoid setting the I<depth> over 1000 unless you are prepared to interrupt the compression in case it is taking far too long."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1692
-msgid ""
-"When decoding raw streams (B<--format=raw>), LZMA2 needs only the dictionary "
-"I<size>. LZMA1 needs also I<lc>, I<lp>, and I<pb>."
+#: ../src/xz/xz.1
+msgid "When decoding raw streams (B<--format=raw>), LZMA2 needs only the dictionary I<size>. LZMA1 needs also I<lc>, I<lp>, and I<pb>."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1692
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--x86>[B<=>I<options>]"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1695
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--arm>[B<=>I<options>]"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1697
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--armthumb>[B<=>I<options>]"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1699
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--arm64>[B<=>I<options>]"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1701
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--powerpc>[B<=>I<options>]"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1703
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--ia64>[B<=>I<options>]"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1705
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--sparc>[B<=>I<options>]"
msgstr ""
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "B<--riscv>[B<=>I<options>]"
+msgstr ""
+
#. type: Plain text
-#: ../src/xz/xz.1:1711
-msgid ""
-"Add a branch/call/jump (BCJ) filter to the filter chain. These filters can "
-"be used only as a non-last filter in the filter chain."
+#: ../src/xz/xz.1
+msgid "Add a branch/call/jump (BCJ) filter to the filter chain. These filters can be used only as a non-last filter in the filter chain."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1725
-msgid ""
-"A BCJ filter converts relative addresses in the machine code to their "
-"absolute counterparts. This doesn't change the size of the data but it "
-"increases redundancy, which can help LZMA2 to produce 0\\(en15\\ % smaller "
-"B<.xz> file. The BCJ filters are always reversible, so using a BCJ filter "
-"for wrong type of data doesn't cause any data loss, although it may make the "
-"compression ratio slightly worse. The BCJ filters are very fast and use an "
-"insignificant amount of memory."
+#: ../src/xz/xz.1
+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\\(en15\\ % smaller B<.xz> file. The BCJ filters are always reversible, so using a BCJ filter for wrong type of data doesn't cause any data loss, although it may make the compression ratio slightly worse. The BCJ filters are very fast and use an insignificant amount of memory."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1728
+#: ../src/xz/xz.1
msgid "These BCJ filters have known problems related to the compression ratio:"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1735
-msgid ""
-"Some types of files containing executable code (for example, object files, "
-"static libraries, and Linux kernel modules) have the addresses in the "
-"instructions filled with filler values. These BCJ filters will still do the "
-"address conversion, which will make the compression worse with these files."
+#: ../src/xz/xz.1
+msgid "Some types of files containing executable code (for example, object files, static libraries, and Linux kernel modules) have the addresses in the instructions filled with filler values. These BCJ filters will still do the address conversion, which will make the compression worse with these files."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1745
-msgid ""
-"If a BCJ filter is applied on an archive, it is possible that it makes the "
-"compression ratio worse than not using a BCJ filter. For example, if there "
-"are similar or even identical executables then filtering will likely make "
-"the files less similar and thus compression is worse. The contents of "
-"non-executable files in the same archive can matter too. In practice one "
-"has to try with and without a BCJ filter to see which is better in each "
-"situation."
+#: ../src/xz/xz.1
+msgid "If a BCJ filter is applied on an archive, it is possible that it makes the compression ratio worse than not using a BCJ filter. For example, if there are similar or even identical executables then filtering will likely make the files less similar and thus compression is worse. The contents of non-executable files in the same archive can matter too. In practice one has to try with and without a BCJ filter to see which is better in each situation."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1750
-msgid ""
-"Different instruction sets have different alignment: the executable file "
-"must be aligned to a multiple of this value in the input data to make the "
-"filter work."
+#: ../src/xz/xz.1
+msgid "Different instruction sets have different alignment: the executable file must be aligned to a multiple of this value in the input data to make the filter work."
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:1757
+#: ../src/xz/xz.1
#, no-wrap
msgid "Filter"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:1757
+#: ../src/xz/xz.1
#, no-wrap
msgid "Alignment"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:1757
+#: ../src/xz/xz.1
#, no-wrap
msgid "Notes"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:1758
+#: ../src/xz/xz.1
#, no-wrap
msgid "x86"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:1758
+#: ../src/xz/xz.1
#, no-wrap
msgid "32-bit or 64-bit x86"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:1759
+#: ../src/xz/xz.1
#, no-wrap
msgid "ARM"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:1760
+#: ../src/xz/xz.1
#, no-wrap
msgid "ARM-Thumb"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:1761
+#: ../src/xz/xz.1
#, no-wrap
msgid "ARM64"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:1761
+#: ../src/xz/xz.1
#, no-wrap
msgid "4096-byte alignment is best"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:1762
+#: ../src/xz/xz.1
#, no-wrap
msgid "PowerPC"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:1762
+#: ../src/xz/xz.1
#, no-wrap
msgid "Big endian only"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:1763
+#: ../src/xz/xz.1
#, no-wrap
msgid "IA-64"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:1763
+#: ../src/xz/xz.1
#, no-wrap
msgid "16"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:1763
+#: ../src/xz/xz.1
#, no-wrap
msgid "Itanium"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:1764
+#: ../src/xz/xz.1
#, no-wrap
msgid "SPARC"
msgstr ""
+#. type: tbl table
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "RISC-V"
+msgstr ""
+
#. type: Plain text
-#: ../src/xz/xz.1:1781
-msgid ""
-"Since the BCJ-filtered data is usually compressed with LZMA2, the "
-"compression ratio may be improved slightly if the LZMA2 options are set to "
-"match the alignment of the selected BCJ filter. For example, with the IA-64 "
-"filter, it's good to set B<pb=4> or even B<pb=4,lp=4,lc=0> with LZMA2 "
-"(2^4=16). The x86 filter is an exception; it's usually good to stick to "
-"LZMA2's default four-byte alignment when compressing x86 executables."
+#: ../src/xz/xz.1
+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. Examples:"
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "IA-64 filter has 16-byte alignment so B<pb=4,lp=4,lc=0> is good with LZMA2 (2^4=16)."
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "RISC-V code has 2-byte or 4-byte alignment depending on whether the file contains 16-bit compressed instructions (the C extension). When 16-bit instructions are used, B<pb=2,lp=1,lc=3> or B<pb=1,lp=1,lc=3> is good. When 16-bit instructions aren't present, B<pb=2,lp=2,lc=2> is the best. B<readelf -h> can be used to check if \"RVC\" appears on the \"Flags\" line."
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "ARM64 is always 4-byte aligned so B<pb=2,lp=2,lc=2> is the best."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1784
+#: ../src/xz/xz.1
+msgid "The x86 filter is an exception. It's usually good to stick to LZMA2's defaults (B<pb=2,lp=0,lc=3>) when compressing x86 executables."
+msgstr ""
+
+#. type: Plain text
+#: ../src/xz/xz.1
msgid "All BCJ filters support the same I<options>:"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1785
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<start=>I<offset>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1799
-msgid ""
-"Specify the start I<offset> that is used when converting between relative "
-"and absolute addresses. The I<offset> must be a multiple of the alignment "
-"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."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:1800
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--delta>[B<=>I<options>]"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1805
-msgid ""
-"Add the Delta filter to the filter chain. The Delta filter can be only used "
-"as a non-last filter in the filter chain."
+#: ../src/xz/xz.1
+msgid "Add the Delta filter to the filter chain. The Delta filter can be only used as a non-last filter in the filter chain."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1814
-msgid ""
-"Currently only simple byte-wise delta calculation is supported. It can be "
-"useful when compressing, for example, uncompressed bitmap images or "
-"uncompressed PCM audio. However, special purpose algorithms may give "
-"significantly better results than Delta + LZMA2. This is true especially "
-"with audio, which compresses faster and better, for example, with "
-"B<flac>(1)."
+#: ../src/xz/xz.1
+msgid "Currently only simple byte-wise delta calculation is supported. It can be useful when compressing, for example, uncompressed bitmap images or uncompressed PCM audio. However, special purpose algorithms may give significantly better results than Delta + LZMA2. This is true especially with audio, which compresses faster and better, for example, with B<flac>(1)."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1817
+#: ../src/xz/xz.1
msgid "Supported I<options>:"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1818
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<dist=>I<distance>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1826
-msgid ""
-"Specify the I<distance> of the delta calculation in bytes. I<distance> must "
-"be 1\\(en256. The default is 1."
+#: ../src/xz/xz.1
+msgid "Specify the I<distance> of the delta calculation in bytes. I<distance> must be 1\\(en256. The default is 1."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1831
-msgid ""
-"For example, with B<dist=2> and eight-byte input A1 B1 A2 B3 A3 B5 A4 B7, "
-"the output will be A1 B1 01 02 01 02 01 02."
+#: ../src/xz/xz.1
+msgid "For example, with B<dist=2> and eight-byte input A1 B1 A2 B3 A3 B5 A4 B7, the output will be A1 B1 01 02 01 02 01 02."
msgstr ""
#. type: SS
-#: ../src/xz/xz.1:1833
+#: ../src/xz/xz.1
#, no-wrap
msgid "Other options"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1834 ../src/xzdec/xzdec.1:83
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-q>, B<--quiet>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1841
-msgid ""
-"Suppress warnings and notices. Specify this twice to suppress errors too. "
-"This option has no effect on the exit status. That is, even if a warning "
-"was suppressed, the exit status to indicate a warning is still used."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:1841
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-v>, B<--verbose>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1850
-msgid ""
-"Be verbose. If standard error is connected to a terminal, B<xz> will "
-"display a progress indicator. Specifying B<--verbose> twice will give even "
-"more verbose output."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:1852
+#: ../src/xz/xz.1
msgid "The progress indicator shows the following information:"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1857
-msgid ""
-"Completion percentage is shown if the size of the input file is known. That "
-"is, the percentage cannot be shown in pipes."
+#: ../src/xz/xz.1
+msgid "Completion percentage is shown if the size of the input file is known. That is, the percentage cannot be shown in pipes."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1860
-msgid ""
-"Amount of compressed data produced (compressing) or consumed "
-"(decompressing)."
+#: ../src/xz/xz.1
+msgid "Amount of compressed data produced (compressing) or consumed (decompressing)."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1863
-msgid ""
-"Amount of uncompressed data consumed (compressing) or produced "
-"(decompressing)."
+#: ../src/xz/xz.1
+msgid "Amount of uncompressed data consumed (compressing) or produced (decompressing)."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1867
-msgid ""
-"Compression ratio, which is calculated by dividing the amount of compressed "
-"data processed so far by the amount of uncompressed data processed so far."
+#: ../src/xz/xz.1
+msgid "Compression ratio, which is calculated by dividing the amount of compressed data processed so far by the amount of uncompressed data processed so far."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1874
-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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:1876
+#: ../src/xz/xz.1
msgid "Elapsed time in the format M:SS or H:MM:SS."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1884
-msgid ""
-"Estimated remaining time is shown only when the size of the input file is "
-"known and a couple of seconds have already passed since B<xz> started "
-"processing the file. The time is shown in a less precise format which never "
-"has any colons, for example, 2 min 30 s."
+#: ../src/xz/xz.1
+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, for example, 2 min 30 s."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1899
-msgid ""
-"When standard error is not a terminal, B<--verbose> will make B<xz> print "
-"the filename, compressed size, uncompressed size, compression ratio, and "
-"possibly also the speed and elapsed time on a single line to standard error "
-"after compressing or decompressing the file. The speed and elapsed time are "
-"included only when the operation took at least a few seconds. If the "
-"operation didn't finish, for example, due to user interruption, also the "
-"completion percentage is printed if the size of the input file is known."
+#: ../src/xz/xz.1
+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, for example, due to user interruption, also the completion percentage is printed if the size of the input file is known."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1899 ../src/xzdec/xzdec.1:89
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-Q>, B<--no-warn>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1909
-msgid ""
-"Don't set the exit status to 2 even if a condition worth a warning was "
-"detected. This option doesn't affect the verbosity level, thus both "
-"B<--quiet> and B<--no-warn> have to be used to not display warnings and to "
-"not alter the exit status."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:1909
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--robot>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1921
-msgid ""
-"Print messages in a machine-parsable format. This is intended to ease "
-"writing frontends that want to use B<xz> instead of liblzma, which may be "
-"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."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:1921
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<--info-memory>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1928
-msgid ""
-"Display, in human-readable format, how much physical memory (RAM) and how "
-"many processor threads B<xz> thinks the system has and the memory usage "
-"limits for compression and decompression, and exit successfully."
+#: ../src/xz/xz.1
+msgid "Display, in human-readable format, how much physical memory (RAM) and how many processor threads B<xz> thinks the system has and the memory usage limits for compression and decompression, and exit successfully."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1928 ../src/xzdec/xzdec.1:96
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-h>, B<--help>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1932
-msgid ""
-"Display a help message describing the most commonly used options, and exit "
-"successfully."
+#: ../src/xz/xz.1
+msgid "Display a help message describing the most commonly used options, and exit successfully."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1932
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<-H>, B<--long-help>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1937
-msgid ""
-"Display a help message describing all features of B<xz>, and exit "
-"successfully"
+#: ../src/xz/xz.1
+msgid "Display a help message describing all features of B<xz>, and exit successfully"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1937 ../src/xzdec/xzdec.1:99
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "B<-V>, B<--version>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1946
-msgid ""
-"Display the version number of B<xz> and liblzma in human readable format. "
-"To get machine-parsable output, specify B<--robot> before B<--version>."
+#: ../src/xz/xz.1
+msgid "Display the version number of B<xz> and liblzma in human readable format. To get machine-parsable output, specify B<--robot> before B<--version>."
msgstr ""
#. type: SH
-#: ../src/xz/xz.1:1947
+#: ../src/xz/xz.1
#, no-wrap
msgid "ROBOT MODE"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1963
-msgid ""
-"The robot mode is activated with the B<--robot> option. It makes the output "
-"of B<xz> easier to parse by other programs. Currently B<--robot> is "
-"supported only together with B<--version>, B<--info-memory>, and B<--list>. "
-"It will be supported for compression and decompression in the future."
+#: ../src/xz/xz.1
+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<--list>, B<--filters-help>, B<--info-memory>, and B<--version>. It will be supported for compression and decompression in the future."
msgstr ""
#. type: SS
-#: ../src/xz/xz.1:1964
+#: ../src/xz/xz.1
#, no-wrap
-msgid "Version"
+msgid "List mode"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1969
-msgid ""
-"B<xz --robot --version> prints the version number of B<xz> and liblzma in "
-"the following format:"
+#: ../src/xz/xz.1
+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 ""
-#. type: Plain text
-#: ../src/xz/xz.1:1971
-msgid "B<XZ_VERSION=>I<XYYYZZZS>"
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "B<name>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1973
-msgid "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
+#: ../src/xz/xz.1
+msgid "This is always the first line when starting to list a file. The second column on the line is the filename."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1973
+#: ../src/xz/xz.1
#, no-wrap
-msgid "I<X>"
+msgid "B<file>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1976
-msgid "Major version."
+#: ../src/xz/xz.1
+msgid "This line contains overall information about the B<.xz> file. This line is always printed after the B<name> line."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1976
+#: ../src/xz/xz.1
#, no-wrap
-msgid "I<YYY>"
+msgid "B<stream>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1981
-msgid ""
-"Minor version. Even numbers are stable. Odd numbers are alpha or beta "
-"versions."
+#: ../src/xz/xz.1
+msgid "This line type is used only when B<--verbose> was specified. There are as many B<stream> lines as there are streams in the B<.xz> file."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:1981
+#: ../src/xz/xz.1
#, no-wrap
-msgid "I<ZZZ>"
+msgid "B<block>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1985
-msgid "Patch level for stable releases or just a counter for development releases."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:1985
+#: ../src/xz/xz.1
#, no-wrap
-msgid "I<S>"
+msgid "B<summary>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1993
-msgid ""
-"Stability. 0 is alpha, 1 is beta, and 2 is stable. I<S> should be always 2 "
-"when I<YYY> is even."
+#: ../src/xz/xz.1
+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 ""
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "B<totals>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:1998
-msgid ""
-"I<XYYYZZZS> are the same on both lines if B<xz> and liblzma are from the "
-"same XZ Utils release."
+#: ../src/xz/xz.1
+msgid "This line is always the very last line of the list output. It shows the total counts and sizes."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2004
-msgid "Examples: 4.999.9beta is B<49990091> and 5.0.0 is B<50000002>."
+#: ../src/xz/xz.1
+msgid "The columns of the B<file> lines:"
msgstr ""
-#. type: SS
-#: ../src/xz/xz.1:2005
+#. type: IP
+#: ../src/xz/xz.1
#, no-wrap
-msgid "Memory limit information"
+msgid "2."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2008
-msgid ""
-"B<xz --robot --info-memory> prints a single line with multiple tab-separated "
-"columns:"
+#: ../src/xz/xz.1
+msgid "Number of streams in the file"
msgstr ""
#. type: IP
-#: ../src/xz/xz.1:2008
+#: ../src/xz/xz.1
#, no-wrap
-msgid "1."
+msgid "3."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2010
-msgid "Total amount of physical memory (RAM) in bytes."
+#: ../src/xz/xz.1
+msgid "Total number of blocks in the stream(s)"
msgstr ""
#. type: IP
-#: ../src/xz/xz.1:2010 ../src/xz/xz.1:2125 ../src/xz/xz.1:2162
-#: ../src/xz/xz.1:2188 ../src/xz/xz.1:2258 ../src/xz/xz.1:2285
+#: ../src/xz/xz.1
#, no-wrap
-msgid "2."
+msgid "4."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2017
-msgid ""
-"Memory usage limit for compression in bytes (B<--memlimit-compress>). A "
-"special value of B<0> indicates the default setting which for "
-"single-threaded mode is the same as no limit."
+#: ../src/xz/xz.1
+msgid "Compressed size of the file"
msgstr ""
#. type: IP
-#: ../src/xz/xz.1:2017 ../src/xz/xz.1:2127 ../src/xz/xz.1:2164
-#: ../src/xz/xz.1:2190 ../src/xz/xz.1:2263 ../src/xz/xz.1:2287
+#: ../src/xz/xz.1
#, no-wrap
-msgid "3."
+msgid "5."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2024
-msgid ""
-"Memory usage limit for decompression in bytes (B<--memlimit-decompress>). A "
-"special value of B<0> indicates the default setting which for "
-"single-threaded mode is the same as no limit."
+#: ../src/xz/xz.1
+msgid "Uncompressed size of the file"
msgstr ""
#. type: IP
-#: ../src/xz/xz.1:2024 ../src/xz/xz.1:2129 ../src/xz/xz.1:2166
-#: ../src/xz/xz.1:2193 ../src/xz/xz.1:2273 ../src/xz/xz.1:2289
+#: ../src/xz/xz.1
#, no-wrap
-msgid "4."
+msgid "6."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2036
-msgid ""
-"Since B<xz> 5.3.4alpha: Memory usage for multi-threaded decompression in "
-"bytes (B<--memlimit-mt-decompress>). This is never zero because a "
-"system-specific default value shown in the column 5 is used if no limit has "
-"been specified explicitly. This is also never greater than the value in the "
-"column 3 even if a larger value has been specified with "
-"B<--memlimit-mt-decompress>."
+#: ../src/xz/xz.1
+msgid "Compression ratio, for example, B<0.123>. If ratio is over 9.999, three dashes (B<--->) are displayed instead of the ratio."
msgstr ""
#. type: IP
-#: ../src/xz/xz.1:2036 ../src/xz/xz.1:2131 ../src/xz/xz.1:2168
-#: ../src/xz/xz.1:2195 ../src/xz/xz.1:2291
+#: ../src/xz/xz.1
#, no-wrap
-msgid "5."
+msgid "7."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2048
-msgid ""
-"Since B<xz> 5.3.4alpha: A system-specific default memory usage limit that is "
-"used to limit the number of threads when compressing with an automatic "
-"number of threads (B<--threads=0>) and no memory usage limit has been "
-"specified (B<--memlimit-compress>). This is also used as the default value "
-"for B<--memlimit-mt-decompress>."
+#: ../src/xz/xz.1
+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 ""
#. type: IP
-#: ../src/xz/xz.1:2048 ../src/xz/xz.1:2133 ../src/xz/xz.1:2170
-#: ../src/xz/xz.1:2197 ../src/xz/xz.1:2293
+#: ../src/xz/xz.1
#, no-wrap
-msgid "6."
+msgid "8."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2053
-msgid "Since B<xz> 5.3.4alpha: Number of available processor threads."
+#: ../src/xz/xz.1
+msgid "Total size of stream padding in the file"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2057
-msgid ""
-"In the future, the output of B<xz --robot --info-memory> may have more "
-"columns, but never more than a single line."
-msgstr ""
-
-#. type: SS
-#: ../src/xz/xz.1:2058
-#, no-wrap
-msgid "List mode"
+#: ../src/xz/xz.1
+msgid "The columns of the B<stream> lines:"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2063
-msgid ""
-"B<xz --robot --list> uses tab-separated output. The first column of every "
-"line has a string that indicates the type of the information found on that "
-"line:"
+#: ../src/xz/xz.1
+msgid "Stream number (the first stream is 1)"
msgstr ""
-#. type: TP
-#: ../src/xz/xz.1:2063
-#, no-wrap
-msgid "B<name>"
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Number of blocks in the stream"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2067
-msgid ""
-"This is always the first line when starting to list a file. The second "
-"column on the line is the filename."
+#: ../src/xz/xz.1
+msgid "Compressed start offset"
msgstr ""
-#. type: TP
-#: ../src/xz/xz.1:2067
-#, no-wrap
-msgid "B<file>"
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Uncompressed start offset"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2075
-msgid ""
-"This line contains overall information about the B<.xz> file. This line is "
-"always printed after the B<name> line."
+#: ../src/xz/xz.1
+msgid "Compressed size (does not include stream padding)"
msgstr ""
-#. type: TP
-#: ../src/xz/xz.1:2075
-#, no-wrap
-msgid "B<stream>"
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Uncompressed size"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2085
-msgid ""
-"This line type is used only when B<--verbose> was specified. There are as "
-"many B<stream> lines as there are streams in the B<.xz> file."
+#: ../src/xz/xz.1
+msgid "Compression ratio"
msgstr ""
-#. type: TP
-#: ../src/xz/xz.1:2085
+#. type: IP
+#: ../src/xz/xz.1
#, no-wrap
-msgid "B<block>"
+msgid "9."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2100
-msgid ""
-"This line type is used only when B<--verbose> was specified. There are as "
-"many B<block> lines as there are blocks in the B<.xz> file. The B<block> "
-"lines are shown after all the B<stream> lines; different line types are not "
-"interleaved."
+#: ../src/xz/xz.1
+msgid "Name of the integrity check"
msgstr ""
-#. type: TP
-#: ../src/xz/xz.1:2100
+#. type: IP
+#: ../src/xz/xz.1
#, no-wrap
-msgid "B<summary>"
+msgid "10."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2115
-msgid ""
-"This line type is used only when B<--verbose> was specified twice. This "
-"line is printed after all B<block> lines. Like the B<file> line, the "
-"B<summary> line contains overall information about the B<.xz> file."
+#: ../src/xz/xz.1
+msgid "Size of stream padding"
msgstr ""
-#. type: TP
-#: ../src/xz/xz.1:2115
-#, no-wrap
-msgid "B<totals>"
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "The columns of the B<block> lines:"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2119
-msgid ""
-"This line is always the very last line of the list output. It shows the "
-"total counts and sizes."
+#: ../src/xz/xz.1
+msgid "Number of the stream containing this block"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2123
-msgid "The columns of the B<file> lines:"
+#: ../src/xz/xz.1
+msgid "Block number relative to the beginning of the stream (the first block is 1)"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2127
-msgid "Number of streams in the file"
+#: ../src/xz/xz.1
+msgid "Block number relative to the beginning of the file"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2129
-msgid "Total number of blocks in the stream(s)"
+#: ../src/xz/xz.1
+msgid "Compressed start offset relative to the beginning of the file"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2131
-msgid "Compressed size of the file"
+#: ../src/xz/xz.1
+msgid "Uncompressed start offset relative to the beginning of the file"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2133
-msgid "Uncompressed size of the file"
+#: ../src/xz/xz.1
+msgid "Total compressed size of the block (includes headers)"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2139
-msgid ""
-"Compression ratio, for example, B<0.123>. If ratio is over 9.999, three "
-"dashes (B<--->) are displayed instead of the ratio."
+#: ../src/xz/xz.1
+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 ""
#. type: IP
-#: ../src/xz/xz.1:2139 ../src/xz/xz.1:2172 ../src/xz/xz.1:2199
-#: ../src/xz/xz.1:2295
+#: ../src/xz/xz.1
#, no-wrap
-msgid "7."
+msgid "11."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2152
-msgid ""
-"Comma-separated list of integrity check names. The following strings are "
-"used for the known check types: B<None>, B<CRC32>, B<CRC64>, and "
-"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)."
+#: ../src/xz/xz.1
+msgid "Value of the integrity check in hexadecimal"
msgstr ""
#. type: IP
-#: ../src/xz/xz.1:2152 ../src/xz/xz.1:2174 ../src/xz/xz.1:2201
-#: ../src/xz/xz.1:2298
+#: ../src/xz/xz.1
#, no-wrap
-msgid "8."
+msgid "12."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2154
-msgid "Total size of stream padding in the file"
+#: ../src/xz/xz.1
+msgid "Block header size"
+msgstr ""
+
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "13."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2160
-msgid "The columns of the B<stream> lines:"
+#: ../src/xz/xz.1
+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 ""
+
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "14."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2164
-msgid "Stream number (the first stream is 1)"
+#: ../src/xz/xz.1
+msgid "Size of the actual compressed data in the block (this excludes the block header, block padding, and check fields)"
+msgstr ""
+
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "15."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2166
-msgid "Number of blocks in the stream"
+#: ../src/xz/xz.1
+msgid "Amount of memory (in bytes) required to decompress this block with this B<xz> version"
+msgstr ""
+
+#. type: IP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "16."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2168
-msgid "Compressed start offset"
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:2170
-msgid "Uncompressed start offset"
+#: ../src/xz/xz.1
+msgid "The columns of the B<summary> lines:"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2172
-msgid "Compressed size (does not include stream padding)"
+#: ../src/xz/xz.1
+msgid "Amount of memory (in bytes) required to decompress this file with this B<xz> version"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2174 ../src/xz/xz.1:2203 ../src/xz/xz.1:2293
-msgid "Uncompressed size"
+#: ../src/xz/xz.1
+msgid "B<yes> or B<no> indicating if all block headers have both compressed size and uncompressed size stored in them"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2176 ../src/xz/xz.1:2205
-msgid "Compression ratio"
+#: ../src/xz/xz.1
+msgid "I<Since> B<xz> I<5.1.2alpha:>"
msgstr ""
-#. type: IP
-#: ../src/xz/xz.1:2176 ../src/xz/xz.1:2203 ../src/xz/xz.1:2300
-#, no-wrap
-msgid "9."
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Minimum B<xz> version required to decompress the file"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2178 ../src/xz/xz.1:2207
-msgid "Name of the integrity check"
+#: ../src/xz/xz.1
+msgid "The columns of the B<totals> line:"
msgstr ""
-#. type: IP
-#: ../src/xz/xz.1:2178 ../src/xz/xz.1:2205 ../src/xz/xz.1:2316
-#, no-wrap
-msgid "10."
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Number of streams"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2180
-msgid "Size of stream padding"
+#: ../src/xz/xz.1
+msgid "Number of blocks"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2186
-msgid "The columns of the B<block> lines:"
+#: ../src/xz/xz.1
+msgid "Compressed size"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2190
-msgid "Number of the stream containing this block"
+#: ../src/xz/xz.1
+msgid "Average compression ratio"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2193
-msgid "Block number relative to the beginning of the stream (the first block is 1)"
+#: ../src/xz/xz.1
+msgid "Comma-separated list of integrity check names that were present in the files"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2195
-msgid "Block number relative to the beginning of the file"
+#: ../src/xz/xz.1
+msgid "Stream padding size"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2197
-msgid "Compressed start offset relative to the beginning of the file"
+#: ../src/xz/xz.1
+msgid "Number of files. This is here to keep the order of the earlier columns the same as on B<file> lines."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2199
-msgid "Uncompressed start offset relative to the beginning of the file"
+#: ../src/xz/xz.1
+msgid "If B<--verbose> was specified twice, additional columns are included on the B<totals> line:"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2201
-msgid "Total compressed size of the block (includes headers)"
+#: ../src/xz/xz.1
+msgid "Maximum amount of memory (in bytes) required to decompress the files with this B<xz> version"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2219
-msgid ""
-"If B<--verbose> was specified twice, additional columns are included on the "
-"B<block> lines. These are not displayed with a single B<--verbose>, because "
-"getting this information requires many seeks and can thus be slow:"
+#: ../src/xz/xz.1
+msgid "Future versions may add new line types and new columns can be added to the existing line types, but the existing columns won't be changed."
msgstr ""
-#. type: IP
-#: ../src/xz/xz.1:2221 ../src/xz/xz.1:2321
+#. type: SS
+#: ../src/xz/xz.1
#, no-wrap
-msgid "11."
+msgid "Filters help"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2223
-msgid "Value of the integrity check in hexadecimal"
+#: ../src/xz/xz.1
+msgid "B<xz --robot --filters-help> prints the supported filters in the following format:"
msgstr ""
-#. type: IP
-#: ../src/xz/xz.1:2223 ../src/xz/xz.1:2331
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "I<filter>B<:>I<option>B<=E<lt>>I<value>B<E<gt>,>I<option>B<=E<lt>>I<value>B<E<gt>>..."
+msgstr ""
+
+#. type: TP
+#: ../src/xz/xz.1
#, no-wrap
-msgid "12."
+msgid "I<filter>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2225
-msgid "Block header size"
+#: ../src/xz/xz.1
+msgid "Name of the filter"
msgstr ""
-#. type: IP
-#: ../src/xz/xz.1:2225
+#. type: TP
+#: ../src/xz/xz.1
#, no-wrap
-msgid "13."
+msgid "I<option>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2235
-msgid ""
-"Block flags: B<c> indicates that compressed size is present, and B<u> "
-"indicates that uncompressed size is present. If the flag is not set, a dash "
-"(B<->) is shown instead to keep the string length fixed. New flags may be "
-"added to the end of the string in the future."
+#: ../src/xz/xz.1
+msgid "Name of a filter specific option"
msgstr ""
-#. type: IP
-#: ../src/xz/xz.1:2235
+#. type: TP
+#: ../src/xz/xz.1
#, no-wrap
-msgid "14."
+msgid "I<value>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2238
-msgid ""
-"Size of the actual compressed data in the block (this excludes the block "
-"header, block padding, and check fields)"
+#: ../src/xz/xz.1
+msgid "Numeric I<value> ranges appear as B<E<lt>>I<min>B<->I<max>B<E<gt>>. String I<value> choices are shown within B<E<lt> E<gt>> and separated by a B<|> character."
msgstr ""
-#. type: IP
-#: ../src/xz/xz.1:2238
+#. type: Plain text
+#: ../src/xz/xz.1
+msgid "Each filter is printed on its own line."
+msgstr ""
+
+#. type: SS
+#: ../src/xz/xz.1
#, no-wrap
-msgid "15."
+msgid "Memory limit information"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2243
-msgid ""
-"Amount of memory (in bytes) required to decompress this block with this "
-"B<xz> version"
+#: ../src/xz/xz.1
+msgid "B<xz --robot --info-memory> prints a single line with multiple tab-separated columns:"
msgstr ""
#. type: IP
-#: ../src/xz/xz.1:2243
+#: ../src/xz/xz.1
#, no-wrap
-msgid "16."
+msgid "1."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2250
-msgid ""
-"Filter chain. Note that most of the options used at compression time cannot "
-"be known, because only the options that are needed for decompression are "
-"stored in the B<.xz> headers."
+#: ../src/xz/xz.1
+msgid "Total amount of physical memory (RAM) in bytes."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2256
-msgid "The columns of the B<summary> lines:"
+#: ../src/xz/xz.1
+msgid "Memory usage limit for compression in bytes (B<--memlimit-compress>). A special value of B<0> indicates the default setting which for single-threaded mode is the same as no limit."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2263
-msgid ""
-"Amount of memory (in bytes) required to decompress this file with this B<xz> "
-"version"
+#: ../src/xz/xz.1
+msgid "Memory usage limit for decompression in bytes (B<--memlimit-decompress>). A special value of B<0> indicates the default setting which for single-threaded mode is the same as no limit."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2269 ../src/xz/xz.1:2327
-msgid ""
-"B<yes> or B<no> indicating if all block headers have both compressed size "
-"and uncompressed size stored in them"
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.3.4alpha: Memory usage for multi-threaded decompression in bytes (B<--memlimit-mt-decompress>). This is never zero because a system-specific default value shown in the column 5 is used if no limit has been specified explicitly. This is also never greater than the value in the column 3 even if a larger value has been specified with B<--memlimit-mt-decompress>."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2273 ../src/xz/xz.1:2331
-msgid "I<Since> B<xz> I<5.1.2alpha:>"
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.3.4alpha: A system-specific default memory usage limit that is used to limit the number of threads when compressing with an automatic number of threads (B<--threads=0>) and no memory usage limit has been specified (B<--memlimit-compress>). This is also used as the default value for B<--memlimit-mt-decompress>."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2277 ../src/xz/xz.1:2335
-msgid "Minimum B<xz> version required to decompress the file"
+#: ../src/xz/xz.1
+msgid "Since B<xz> 5.3.4alpha: Number of available processor threads."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2283
-msgid "The columns of the B<totals> line:"
+#: ../src/xz/xz.1
+msgid "In the future, the output of B<xz --robot --info-memory> may have more columns, but never more than a single line."
msgstr ""
-#. type: Plain text
-#: ../src/xz/xz.1:2287
-msgid "Number of streams"
+#. type: SS
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "Version"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2289
-msgid "Number of blocks"
+#: ../src/xz/xz.1
+msgid "B<xz --robot --version> prints the version number of B<xz> and liblzma in the following format:"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2291
-msgid "Compressed size"
+#: ../src/xz/xz.1
+msgid "B<XZ_VERSION=>I<XYYYZZZS>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2295
-msgid "Average compression ratio"
+#: ../src/xz/xz.1
+msgid "B<LIBLZMA_VERSION=>I<XYYYZZZS>"
+msgstr ""
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<X>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2298
-msgid "Comma-separated list of integrity check names that were present in the files"
+#: ../src/xz/xz.1
+msgid "Major version."
+msgstr ""
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<YYY>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2300
-msgid "Stream padding size"
+#: ../src/xz/xz.1
+msgid "Minor version. Even numbers are stable. Odd numbers are alpha or beta versions."
+msgstr ""
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<ZZZ>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2306
-msgid ""
-"Number of files. This is here to keep the order of the earlier columns the "
-"same as on B<file> lines."
+#: ../src/xz/xz.1
+msgid "Patch level for stable releases or just a counter for development releases."
+msgstr ""
+
+#. type: TP
+#: ../src/xz/xz.1
+#, no-wrap
+msgid "I<S>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2314
-msgid ""
-"If B<--verbose> was specified twice, additional columns are included on the "
-"B<totals> line:"
+#: ../src/xz/xz.1
+msgid "Stability. 0 is alpha, 1 is beta, and 2 is stable. I<S> should be always 2 when I<YYY> is even."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2321
-msgid ""
-"Maximum amount of memory (in bytes) required to decompress the files with "
-"this B<xz> version"
+#: ../src/xz/xz.1
+msgid "I<XYYYZZZS> are the same on both lines if B<xz> and liblzma are from the same XZ Utils release."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2341
-msgid ""
-"Future versions may add new line types and new columns can be added to the "
-"existing line types, but the existing columns won't be changed."
+#: ../src/xz/xz.1
+msgid "Examples: 4.999.9beta is B<49990091> and 5.0.0 is B<50000002>."
msgstr ""
#. type: SH
-#: ../src/xz/xz.1:2342 ../src/xzdec/xzdec.1:104 ../src/lzmainfo/lzmainfo.1:44
-#: ../src/scripts/xzgrep.1:81
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1
#, no-wrap
msgid "EXIT STATUS"
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:2343 ../src/xzdec/xzdec.1:105 ../src/lzmainfo/lzmainfo.1:45
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "B<0>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2346 ../src/lzmainfo/lzmainfo.1:48
+#: ../src/xz/xz.1 ../src/lzmainfo/lzmainfo.1
msgid "All is good."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:2346 ../src/xzdec/xzdec.1:108 ../src/lzmainfo/lzmainfo.1:48
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "B<1>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2349 ../src/xzdec/xzdec.1:111 ../src/lzmainfo/lzmainfo.1:51
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
msgid "An error occurred."
msgstr ""
#. type: TP
-#: ../src/xz/xz.1:2349
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<2>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2353
+#: ../src/xz/xz.1
msgid "Something worth a warning occurred, but no actual errors occurred."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2356
-msgid ""
-"Notices (not warnings or errors) printed on standard error don't affect the "
-"exit status."
+#: ../src/xz/xz.1
+msgid "Notices (not warnings or errors) printed on standard error don't affect the exit status."
msgstr ""
#. type: SH
-#: ../src/xz/xz.1:2357 ../src/scripts/xzgrep.1:94 ../src/scripts/xzless.1:52
+#: ../src/xz/xz.1 ../src/scripts/xzgrep.1 ../src/scripts/xzless.1
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "ENVIRONMENT"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2370
-msgid ""
-"B<xz> parses space-separated lists of options from the environment variables "
-"B<XZ_DEFAULTS> and B<XZ_OPT>, in this order, before parsing the options from "
-"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."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:2370
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<XZ_DEFAULTS>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2379
-msgid ""
-"User-specific or system-wide default options. Typically this is set in a "
-"shell initialization script to enable B<xz>'s memory usage limiter by "
-"default. Excluding shell initialization scripts and similar special cases, "
-"scripts must never set or unset B<XZ_DEFAULTS>."
+#: ../src/xz/xz.1
+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 ""
#. type: TP
-#: ../src/xz/xz.1:2379
+#: ../src/xz/xz.1
#, no-wrap
msgid "B<XZ_OPT>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2390
-msgid ""
-"This is for passing options to B<xz> when it is not possible to set the "
-"options directly on the B<xz> command line. This is the case when B<xz> is "
-"run by a script or tool, for example, GNU B<tar>(1):"
+#: ../src/xz/xz.1
+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 when B<xz> is run by a script or tool, for example, GNU B<tar>(1):"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2396
+#: ../src/xz/xz.1
#, no-wrap
-msgid "CW<XZ_OPT=-2v tar caf foo.tar.xz foo>\n"
+msgid "\\f(CRXZ_OPT=-2v tar caf foo.tar.xz foo\\fR\n"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2410
-msgid ""
-"Scripts may use B<XZ_OPT>, for example, to set script-specific default "
-"compression options. It is still recommended to allow users to override "
-"B<XZ_OPT> if that is reasonable. For example, in B<sh>(1) scripts one may "
-"use something like this:"
+#: ../src/xz/xz.1
+msgid "Scripts may use B<XZ_OPT>, for example, to set script-specific default compression options. It is still recommended to allow users to override B<XZ_OPT> if that is reasonable. For example, in B<sh>(1) scripts one may use something like this:"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2417
+#: ../src/xz/xz.1
#, no-wrap
msgid ""
-"CW<XZ_OPT=${XZ_OPT-\"-7e\"}\n"
-"export XZ_OPT>\n"
+"\\f(CRXZ_OPT=${XZ_OPT-\"-7e\"}\n"
+"export XZ_OPT\\fR\n"
msgstr ""
#. type: SH
-#: ../src/xz/xz.1:2422
+#: ../src/xz/xz.1
#, no-wrap
msgid "LZMA UTILS COMPATIBILITY"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2435
-msgid ""
-"The command line syntax of B<xz> is practically a superset of B<lzma>, "
-"B<unlzma>, and B<lzcat> as found from LZMA Utils 4.32.x. In most cases, it "
-"is possible to replace LZMA Utils with XZ Utils without breaking existing "
-"scripts. There are some incompatibilities though, which may sometimes cause "
-"problems."
+#: ../src/xz/xz.1
+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 ""
#. type: SS
-#: ../src/xz/xz.1:2436
+#: ../src/xz/xz.1
#, no-wrap
msgid "Compression preset levels"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2443
-msgid ""
-"The numbering of the compression level presets is not identical in B<xz> and "
-"LZMA Utils. The most important difference is how dictionary sizes are "
-"mapped to different presets. Dictionary size is roughly equal to the "
-"decompressor memory usage."
+#: ../src/xz/xz.1
+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 ""
#. type: tbl table
-#: ../src/xz/xz.1:2449 ../src/xz/xz.1:2474
+#: ../src/xz/xz.1
#, no-wrap
msgid "Level"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:2449 ../src/xz/xz.1:2474
+#: ../src/xz/xz.1
#, no-wrap
msgid "xz"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:2449
+#: ../src/xz/xz.1
#, no-wrap
msgid "LZMA Utils"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:2450 ../src/xz/xz.1:2475
+#: ../src/xz/xz.1
#, no-wrap
msgid "N/A"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:2451
+#: ../src/xz/xz.1
#, no-wrap
msgid "64 KiB"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:2453
+#: ../src/xz/xz.1
#, no-wrap
msgid "512 KiB"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2468
-msgid ""
-"The dictionary size differences affect the compressor memory usage too, but "
-"there are some other differences between LZMA Utils and XZ Utils, which make "
-"the difference even bigger:"
+#: ../src/xz/xz.1
+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 ""
#. type: tbl table
-#: ../src/xz/xz.1:2474
+#: ../src/xz/xz.1
#, no-wrap
msgid "LZMA Utils 4.32.x"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:2477 ../src/xz/xz.1:2478
+#: ../src/xz/xz.1
#, no-wrap
msgid "12 MiB"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:2480
+#: ../src/xz/xz.1
#, no-wrap
msgid "26 MiB"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:2481
+#: ../src/xz/xz.1
#, no-wrap
msgid "45 MiB"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:2482
+#: ../src/xz/xz.1
#, no-wrap
msgid "83 MiB"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:2483
+#: ../src/xz/xz.1
#, no-wrap
msgid "159 MiB"
msgstr ""
#. type: tbl table
-#: ../src/xz/xz.1:2484
+#: ../src/xz/xz.1
#, no-wrap
msgid "311 MiB"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2493
-msgid ""
-"The default preset level in LZMA Utils is B<-7> while in XZ Utils it is "
-"B<-6>, so both use an 8 MiB dictionary by default."
+#: ../src/xz/xz.1
+msgid "The default preset level in LZMA Utils is B<-7> while in XZ Utils it is B<-6>, so both use an 8 MiB dictionary by default."
msgstr ""
#. type: SS
-#: ../src/xz/xz.1:2494
+#: ../src/xz/xz.1
#, no-wrap
msgid "Streamed vs. non-streamed .lzma files"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2504
-msgid ""
-"The uncompressed size of the file can be stored in the B<.lzma> header. "
-"LZMA Utils does that when compressing regular files. The alternative is to "
-"mark that uncompressed size is unknown and use end-of-payload marker to "
-"indicate where the decompressor should stop. LZMA Utils uses this method "
-"when uncompressed size isn't known, which is the case, for example, in "
-"pipes."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:2525
-msgid ""
-"B<xz> supports decompressing B<.lzma> files with or without end-of-payload "
-"marker, but all B<.lzma> files created by B<xz> will use end-of-payload "
-"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."
+#: ../src/xz/xz.1
+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 ""
#. type: SS
-#: ../src/xz/xz.1:2526
+#: ../src/xz/xz.1
#, no-wrap
msgid "Unsupported .lzma files"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2549
-msgid ""
-"The B<.lzma> format allows I<lc> values up to 8, and I<lp> values up to 4. "
-"LZMA Utils can decompress files with any I<lc> and I<lp>, but always creates "
-"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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:2560
-msgid ""
-"The implementation of the LZMA1 filter in liblzma requires that the sum of "
-"I<lc> and I<lp> must not exceed 4. Thus, B<.lzma> files, which exceed this "
-"limitation, cannot be decompressed with B<xz>."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:2575
-msgid ""
-"LZMA Utils creates only B<.lzma> files which have a dictionary size of "
-"2^I<n> (a power of 2) but accepts files with any dictionary size. liblzma "
-"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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:2580
-msgid ""
-"These limitations shouldn't be a problem in practice, since practically all "
-"B<.lzma> files have been compressed with settings that liblzma will accept."
+#: ../src/xz/xz.1
+msgid "These limitations shouldn't be a problem in practice, since practically all B<.lzma> files have been compressed with settings that liblzma will accept."
msgstr ""
#. type: SS
-#: ../src/xz/xz.1:2581
+#: ../src/xz/xz.1
#, no-wrap
msgid "Trailing garbage"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2591
-msgid ""
-"When decompressing, LZMA Utils silently ignore everything after the first "
-"B<.lzma> stream. In most situations, this is a bug. This also means that "
-"LZMA Utils don't support decompressing concatenated B<.lzma> files."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:2601
-msgid ""
-"If there is data left after the first B<.lzma> stream, B<xz> considers the "
-"file to be corrupt unless B<--single-stream> was used. This may break "
-"obscure scripts which have assumed that trailing garbage is ignored."
+#: ../src/xz/xz.1
+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 ""
#. type: SH
-#: ../src/xz/xz.1:2602 ../src/xzdec/xzdec.1:117
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
#, no-wrap
msgid "NOTES"
msgstr ""
#. type: SS
-#: ../src/xz/xz.1:2604
+#: ../src/xz/xz.1
#, no-wrap
msgid "Compressed output may vary"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2615
-msgid ""
-"The exact compressed output produced from the same uncompressed input file "
-"may vary between XZ Utils versions even if compression options are "
-"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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:2625
-msgid ""
-"The above means that once B<--rsyncable> has been implemented, the resulting "
-"files won't necessarily be rsyncable unless both old and new files have been "
-"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."
+#: ../src/xz/xz.1
+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 ""
#. type: SS
-#: ../src/xz/xz.1:2626
+#: ../src/xz/xz.1
#, no-wrap
msgid "Embedded .xz decompressors"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2643
-msgid ""
-"Embedded B<.xz> decompressor implementations like XZ Embedded don't "
-"necessarily support files created with integrity I<check> types other than "
-"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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:2653
-msgid ""
-"Outside embedded systems, all B<.xz> format decompressors support all the "
-"I<check> types, or at least are able to decompress the file without "
-"verifying the integrity check if the particular I<check> is not supported."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:2656
+#: ../src/xz/xz.1
msgid "XZ Embedded supports BCJ filters, but only with the default start offset."
msgstr ""
#. type: SH
-#: ../src/xz/xz.1:2657
+#: ../src/xz/xz.1
#, no-wrap
msgid "EXAMPLES"
msgstr ""
#. type: SS
-#: ../src/xz/xz.1:2659
+#: ../src/xz/xz.1
#, no-wrap
msgid "Basics"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2669
-msgid ""
-"Compress the file I<foo> into I<foo.xz> using the default compression level "
-"(B<-6>), and remove I<foo> if compression is successful:"
+#: ../src/xz/xz.1
+msgid "Compress the file I<foo> into I<foo.xz> using the default compression level (B<-6>), and remove I<foo> if compression is successful:"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2674
+#: ../src/xz/xz.1
#, no-wrap
-msgid "CW<xz foo>\n"
+msgid "\\f(CRxz foo\\fR\n"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2685
-msgid ""
-"Decompress I<bar.xz> into I<bar> and don't remove I<bar.xz> even if "
-"decompression is successful:"
+#: ../src/xz/xz.1
+msgid "Decompress I<bar.xz> into I<bar> and don't remove I<bar.xz> even if decompression is successful:"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2690
+#: ../src/xz/xz.1
#, no-wrap
-msgid "CW<xz -dk bar.xz>\n"
+msgid "\\f(CRxz -dk bar.xz\\fR\n"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2703
-msgid ""
-"Create I<baz.tar.xz> with the preset B<-4e> (B<-4 --extreme>), which is "
-"slower than the default B<-6>, but needs less memory for compression and "
-"decompression (48\\ MiB and 5\\ MiB, respectively):"
+#: ../src/xz/xz.1
+msgid "Create I<baz.tar.xz> with the preset B<-4e> (B<-4 --extreme>), which is slower than the default B<-6>, but needs less memory for compression and decompression (48\\ MiB and 5\\ MiB, respectively):"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2708
+#: ../src/xz/xz.1
#, no-wrap
-msgid "CW<tar cf - baz | xz -4e E<gt> baz.tar.xz>\n"
+msgid "\\f(CRtar cf - baz | xz -4e E<gt> baz.tar.xz\\fR\n"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2714
-msgid ""
-"A mix of compressed and uncompressed files can be decompressed to standard "
-"output with a single command:"
+#: ../src/xz/xz.1
+msgid "A mix of compressed and uncompressed files can be decompressed to standard output with a single command:"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2719
+#: ../src/xz/xz.1
#, no-wrap
-msgid "CW<xz -dcf a.txt b.txt.xz c.txt d.txt.lzma E<gt> abcd.txt>\n"
+msgid "\\f(CRxz -dcf a.txt b.txt.xz c.txt d.txt.lzma E<gt> abcd.txt\\fR\n"
msgstr ""
#. type: SS
-#: ../src/xz/xz.1:2723
+#: ../src/xz/xz.1
#, no-wrap
msgid "Parallel compression of many files"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2729
-msgid ""
-"On GNU and *BSD, B<find>(1) and B<xargs>(1) can be used to parallelize "
-"compression of many files:"
+#: ../src/xz/xz.1
+msgid "On GNU and *BSD, B<find>(1) and B<xargs>(1) can be used to parallelize compression of many files:"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2735
+#: ../src/xz/xz.1
#, no-wrap
msgid ""
-"CW<find . -type f \\e! -name '*.xz' -print0 \\e\n"
-" | xargs -0r -P4 -n16 xz -T1>\n"
+"\\f(CRfind . -type f \\e! -name '*.xz' -print0 \\e\n"
+" | xargs -0r -P4 -n16 xz -T1\\fR\n"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2757
-msgid ""
-"The B<-P> option to B<xargs>(1) sets the number of parallel B<xz> "
-"processes. The best value for the B<-n> option depends on how many files "
-"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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:2765
-msgid ""
-"The option B<-T1> for B<xz> is there to force it to single-threaded mode, "
-"because B<xargs>(1) is used to control the amount of parallelization."
+#: ../src/xz/xz.1
+msgid "The option B<-T1> for B<xz> is there to force it to single-threaded mode, because B<xargs>(1) is used to control the amount of parallelization."
msgstr ""
#. type: SS
-#: ../src/xz/xz.1:2766
+#: ../src/xz/xz.1
#, no-wrap
msgid "Robot mode"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2769
-msgid ""
-"Calculate how many bytes have been saved in total after compressing multiple "
-"files:"
+#: ../src/xz/xz.1
+msgid "Calculate how many bytes have been saved in total after compressing multiple files:"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2774
+#: ../src/xz/xz.1
#, no-wrap
-msgid "CW<xz --robot --list *.xz | awk '/^totals/{print $5-$4}'>\n"
+msgid "\\f(CRxz --robot --list *.xz | awk '/^totals/{print $5-$4}'\\fR\n"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2789
-msgid ""
-"A script may want to know that it is using new enough B<xz>. The following "
-"B<sh>(1) script checks that the version number of the B<xz> tool is at "
-"least 5.0.0. This method is compatible with old beta versions, which didn't "
-"support the B<--robot> option:"
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:2798
+#: ../src/xz/xz.1
#, no-wrap
msgid ""
-"CW<if ! eval \"$(xz --robot --version 2E<gt> /dev/null)\" ||\n"
+"\\f(CRif ! 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"
+"unset XZ_VERSION LIBLZMA_VERSION\\fR\n"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2805
-msgid ""
-"Set a memory usage limit for decompression using B<XZ_OPT>, but if a limit "
-"has already been set, don't increase it:"
+#: ../src/xz/xz.1
+msgid "Set a memory usage limit for decompression using B<XZ_OPT>, but if a limit has already been set, don't increase it:"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2815
+#: ../src/xz/xz.1
#, no-wrap
msgid ""
-"CW<NEWLIM=$((123 E<lt>E<lt> 20))\\ \\ # 123 MiB\n"
+"\\f(CRNEWLIM=$((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"
+"fi\\fR\n"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2825
-msgid ""
-"The simplest use for custom filter chains is customizing a LZMA2 preset. "
-"This can be useful, because the presets cover only a subset of the "
-"potentially useful combinations of compression settings."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:2833
-msgid ""
-"The CompCPU columns of the tables from the descriptions of the options B<-0> "
-"... B<-9> and B<--extreme> are useful when customizing LZMA2 presets. Here "
-"are the relevant parts collected from those two tables:"
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:2858
-msgid ""
-"If you know that a file requires somewhat big dictionary (for example, 32\\ "
-"MiB) to compress well, but you want to compress it quicker than B<xz -8> "
-"would do, a preset with a low CompCPU value (for example, 1) can be "
-"modified to use a bigger dictionary:"
+#: ../src/xz/xz.1
+msgid "If you know that a file requires somewhat big dictionary (for example, 32\\ MiB) to compress well, but you want to compress it quicker than B<xz -8> would do, a preset with a low CompCPU value (for example, 1) can be modified to use a bigger dictionary:"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2863
+#: ../src/xz/xz.1
#, no-wrap
-msgid "CW<xz --lzma2=preset=1,dict=32MiB foo.tar>\n"
+msgid "\\f(CRxz --lzma2=preset=1,dict=32MiB foo.tar\\fR\n"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2879
-msgid ""
-"With certain files, the above command may be faster than B<xz -6> while "
-"compressing significantly better. However, it must be emphasized that only "
-"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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:2886
-msgid ""
-"If very high compressor and decompressor memory usage is fine, and the file "
-"being compressed is at least several hundred megabytes, it may be useful to "
-"use an even bigger dictionary than the 64 MiB that B<xz -9> would use:"
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:2891
+#: ../src/xz/xz.1
#, no-wrap
-msgid "CW<xz -vv --lzma2=dict=192MiB big_foo.tar>\n"
+msgid "\\f(CRxz -vv --lzma2=dict=192MiB big_foo.tar\\fR\n"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2904
-msgid ""
-"Using B<-vv> (B<--verbose --verbose>) like in the above example can be "
-"useful to see the memory requirements of the compressor and decompressor. "
-"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."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:2916
-msgid ""
-"Sometimes the compression time doesn't matter, but the decompressor memory "
-"usage has to be kept low, for example, to make it possible to decompress the "
-"file on an embedded system. The following command uses B<-6e> (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."
+#: ../src/xz/xz.1
+msgid "Sometimes the compression time doesn't matter, but the decompressor memory usage has to be kept low, for example, to make it possible to decompress the file on an embedded system. The following command uses B<-6e> (B<-6 --extreme>) as a base and sets the dictionary to only 64\\ KiB. The resulting file can be decompressed with XZ Embedded (that's why there is B<--check=crc32>) using about 100\\ KiB of memory."
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2921
+#: ../src/xz/xz.1
#, no-wrap
-msgid "CW<xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo>\n"
+msgid "\\f(CRxz --check=crc32 --lzma2=preset=6e,dict=64KiB foo\\fR\n"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2944
-msgid ""
-"If you want to squeeze out as many bytes as possible, adjusting the number "
-"of literal context bits (I<lc>) and number of position bits (I<pb>) can "
-"sometimes help. Adjusting the number of literal position bits (I<lp>) "
-"might help too, but usually I<lc> and I<pb> are more important. For "
-"example, a source code archive contains mostly US-ASCII text, so something "
-"like the following might give slightly (like 0.1\\ %) smaller file than B<xz "
-"-6e> (try also without B<lc=4>):"
+#: ../src/xz/xz.1
+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. For example, a source code archive contains mostly US-ASCII text, so something like the following might give slightly (like 0.1\\ %) smaller file than B<xz -6e> (try also without B<lc=4>):"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2949
+#: ../src/xz/xz.1
#, no-wrap
-msgid "CW<xz --lzma2=preset=6e,pb=0,lc=4 source_code.tar>\n"
+msgid "\\f(CRxz --lzma2=preset=6e,pb=0,lc=4 source_code.tar\\fR\n"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2957
-msgid ""
-"Using another filter together with LZMA2 can improve compression with "
-"certain file types. For example, to compress a x86-32 or x86-64 shared "
-"library using the x86 BCJ filter:"
+#: ../src/xz/xz.1
+msgid "Using another filter together with LZMA2 can improve compression with certain file types. For example, to compress a x86-32 or x86-64 shared library using the x86 BCJ filter:"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2962
+#: ../src/xz/xz.1
#, no-wrap
-msgid "CW<xz --x86 --lzma2 libfoo.so>\n"
+msgid "\\f(CRxz --x86 --lzma2 libfoo.so\\fR\n"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2976
-msgid ""
-"Note that the order of the filter options is significant. If B<--x86> is "
-"specified after B<--lzma2>, B<xz> will give an error, because there cannot "
-"be any filter after LZMA2, and also because the x86 BCJ filter cannot be "
-"used as the last filter in the chain."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:2982
-msgid ""
-"The Delta filter together with LZMA2 can give good results with bitmap "
-"images. It should usually beat PNG, which has a few more advanced filters "
-"than simple delta but uses Deflate for the actual compression."
+#: ../src/xz/xz.1
+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 ""
#. type: Plain text
-#: ../src/xz/xz.1:2992
-msgid ""
-"The image has to be saved in uncompressed format, for example, as "
-"uncompressed TIFF. The distance parameter of the Delta filter is set to "
-"match the number of bytes per pixel in the image. For example, 24-bit RGB "
-"bitmap needs B<dist=3>, and it is also good to pass B<pb=0> to LZMA2 to "
-"accommodate the three-byte alignment:"
+#: ../src/xz/xz.1
+msgid "The image has to be saved in uncompressed format, for example, as uncompressed TIFF. The distance parameter of the Delta filter is set to match the number of bytes per pixel in the image. For example, 24-bit RGB bitmap needs B<dist=3>, and it is also good to pass B<pb=0> to LZMA2 to accommodate the three-byte alignment:"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:2997
+#: ../src/xz/xz.1
#, no-wrap
-msgid "CW<xz --delta=dist=3 --lzma2=pb=0 foo.tiff>\n"
+msgid "\\f(CRxz --delta=dist=3 --lzma2=pb=0 foo.tiff\\fR\n"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:3005
-msgid ""
-"If multiple images have been put into a single archive (for example, "
-"B<.tar>), the Delta filter will work on that too as long as all images have "
-"the same number of bytes per pixel."
+#: ../src/xz/xz.1
+msgid "If multiple images have been put into a single archive (for example, B<.tar>), the Delta filter will work on that too as long as all images have the same number of bytes per pixel."
msgstr ""
#. type: SH
-#: ../src/xz/xz.1:3006 ../src/xzdec/xzdec.1:143 ../src/lzmainfo/lzmainfo.1:59
-#: ../src/scripts/xzdiff.1:65 ../src/scripts/xzgrep.1:106
-#: ../src/scripts/xzless.1:65 ../src/scripts/xzmore.1:51
+#: ../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
#, no-wrap
msgid "SEE ALSO"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:3015
-msgid ""
-"B<xzdec>(1), B<xzdiff>(1), B<xzgrep>(1), B<xzless>(1), B<xzmore>(1), "
-"B<gzip>(1), B<bzip2>(1), B<7z>(1)"
+#: ../src/xz/xz.1
+msgid "B<xzdec>(1), B<xzdiff>(1), B<xzgrep>(1), B<xzless>(1), B<xzmore>(1), B<gzip>(1), B<bzip2>(1), B<7z>(1)"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:3017
+#: ../src/xz/xz.1
msgid "XZ Utils: E<lt>https://tukaani.org/xz/E<gt>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:3019 ../src/xzdec/xzdec.1:146
+#: ../src/xz/xz.1 ../src/xzdec/xzdec.1
msgid "XZ Embedded: E<lt>https://tukaani.org/xz/embedded.htmlE<gt>"
msgstr ""
#. type: Plain text
-#: ../src/xz/xz.1:3020
+#: ../src/xz/xz.1
msgid "LZMA SDK: E<lt>https://7-zip.org/sdk.htmlE<gt>"
msgstr ""
#. type: TH
-#: ../src/xzdec/xzdec.1:7
+#: ../src/xzdec/xzdec.1
#, no-wrap
msgid "XZDEC"
msgstr ""
-#. type: TH
-#: ../src/xzdec/xzdec.1:7
-#, no-wrap
-msgid "2017-04-19"
-msgstr ""
-
#. type: Plain text
-#: ../src/xzdec/xzdec.1:10
+#: ../src/xzdec/xzdec.1
msgid "xzdec, lzmadec - Small .xz and .lzma decompressors"
msgstr ""
#. type: Plain text
-#: ../src/xzdec/xzdec.1:14
+#: ../src/xzdec/xzdec.1
msgid "B<xzdec> [I<option...>] [I<file...>]"
msgstr ""
#. type: Plain text
-#: ../src/xzdec/xzdec.1:18
+#: ../src/xzdec/xzdec.1
msgid "B<lzmadec> [I<option...>] [I<file...>]"
msgstr ""
#. 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."
+#: ../src/xzdec/xzdec.1
+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 ""
#. 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."
+#: ../src/xzdec/xzdec.1
+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 ""
#. type: Plain text
-#: ../src/xzdec/xzdec.1:69
+#: ../src/xzdec/xzdec.1
msgid "Ignored for B<xz>(1) compatibility. B<xzdec> supports only decompression."
msgstr ""
#. type: Plain text
-#: ../src/xzdec/xzdec.1:76
-msgid ""
-"Ignored for B<xz>(1) compatibility. B<xzdec> never creates or removes any "
-"files."
+#: ../src/xzdec/xzdec.1
+msgid "Ignored for B<xz>(1) compatibility. B<xzdec> never creates or removes any files."
msgstr ""
#. 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."
+#: ../src/xzdec/xzdec.1
+msgid "Ignored for B<xz>(1) compatibility. B<xzdec> always writes the decompressed data to standard output."
msgstr ""
#. 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."
+#: ../src/xzdec/xzdec.1
+msgid "Specifying this once does nothing since B<xzdec> never displays any warnings or notices. Specify this twice to suppress errors."
msgstr ""
#. type: Plain text
-#: ../src/xzdec/xzdec.1:96
+#: ../src/xzdec/xzdec.1
msgid "Ignored for B<xz>(1) compatibility. B<xzdec> never uses the exit status 2."
msgstr ""
#. type: Plain text
-#: ../src/xzdec/xzdec.1:99
+#: ../src/xzdec/xzdec.1
msgid "Display a help message and exit successfully."
msgstr ""
#. type: Plain text
-#: ../src/xzdec/xzdec.1:104
+#: ../src/xzdec/xzdec.1
msgid "Display the version number of B<xzdec> and liblzma."
msgstr ""
#. type: Plain text
-#: ../src/xzdec/xzdec.1:108
+#: ../src/xzdec/xzdec.1
msgid "All was good."
msgstr ""
#. 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>."
+#: ../src/xzdec/xzdec.1
+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 ""
#. 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)."
+#: ../src/xzdec/xzdec.1
+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 ""
#. 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."
+#: ../src/xzdec/xzdec.1
+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 ""
#. type: Plain text
-#: ../src/xzdec/xzdec.1:145 ../src/lzmainfo/lzmainfo.1:60
+#: ../src/xzdec/xzdec.1 ../src/lzmainfo/lzmainfo.1
msgid "B<xz>(1)"
msgstr ""
#. type: TH
-#: ../src/lzmainfo/lzmainfo.1:7
+#: ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "LZMAINFO"
msgstr ""
#. type: TH
-#: ../src/lzmainfo/lzmainfo.1:7 ../src/scripts/xzmore.1:7
+#: ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "2013-06-30"
msgstr ""
#. type: Plain text
-#: ../src/lzmainfo/lzmainfo.1:10
+#: ../src/lzmainfo/lzmainfo.1
msgid "lzmainfo - show information stored in the .lzma file header"
msgstr ""
#. type: Plain text
-#: ../src/lzmainfo/lzmainfo.1:15
+#: ../src/lzmainfo/lzmainfo.1
msgid "B<lzmainfo> [B<--help>] [B<--version>] [I<file...>]"
msgstr ""
#. 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."
+#: ../src/lzmainfo/lzmainfo.1
+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 ""
#. 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."
+#: ../src/lzmainfo/lzmainfo.1
+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 ""
#. type: Plain text
-#: ../src/lzmainfo/lzmainfo.1:44
-msgid ""
-"B<lzmainfo> is included in XZ Utils primarily for backward compatibility "
-"with LZMA Utils."
+#: ../src/lzmainfo/lzmainfo.1
+msgid "B<lzmainfo> is included in XZ Utils primarily for backward compatibility with LZMA Utils."
msgstr ""
#. type: SH
-#: ../src/lzmainfo/lzmainfo.1:51 ../src/scripts/xzdiff.1:74
+#: ../src/lzmainfo/lzmainfo.1
#, no-wrap
msgid "BUGS"
msgstr ""
#. 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."
+#: ../src/lzmainfo/lzmainfo.1
+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 ""
#. type: TH
-#: ../src/scripts/xzdiff.1:9
+#: ../src/scripts/xzdiff.1
#, no-wrap
msgid "XZDIFF"
msgstr ""
#. type: TH
-#: ../src/scripts/xzdiff.1:9
+#: ../src/scripts/xzdiff.1 ../src/scripts/xzgrep.1
#, no-wrap
-msgid "2021-06-04"
+msgid "2024-02-13"
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzdiff.1:12
+#: ../src/scripts/xzdiff.1
msgid "xzcmp, xzdiff, lzcmp, lzdiff - compare compressed files"
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzdiff.1:15
-msgid "B<xzcmp> [I<cmp_options>] I<file1> [I<file2>]"
+#: ../src/scripts/xzdiff.1
+msgid "B<xzcmp> [I<option...>] I<file1> [I<file2>]"
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzdiff.1:18
-msgid "B<xzdiff> [I<diff_options>] I<file1> [I<file2>]"
+#: ../src/scripts/xzdiff.1
+msgid "B<xzdiff> \\&..."
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzdiff.1:21
-msgid "B<lzcmp> [I<cmp_options>] I<file1> [I<file2>]"
+#: ../src/scripts/xzdiff.1
+msgid "B<lzcmp> \\&..."
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzdiff.1:24
-msgid "B<lzdiff> [I<diff_options>] I<file1> [I<file2>]"
+#: ../src/scripts/xzdiff.1
+msgid "B<lzdiff> \\&..."
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzdiff.1:59
-msgid ""
-"B<xzcmp> and B<xzdiff> invoke B<cmp>(1) or B<diff>(1) on files compressed "
-"with B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), or "
-"B<zstd>(1). All options specified are passed directly to B<cmp>(1) or "
-"B<diff>(1). If only one file is specified, then the files compared are "
-"I<file1> (which must have a suffix of a supported compression format) and "
-"I<file1> from which the compression format suffix has been stripped. If two "
-"files are specified, then they are uncompressed if necessary and fed to "
-"B<cmp>(1) or B<diff>(1). The exit status from B<cmp>(1) or B<diff>(1) is "
-"preserved unless a decompression error occurs; then exit status is 2."
+#: ../src/scripts/xzdiff.1
+msgid "B<xzcmp> and B<xzdiff> compare uncompressed contents of two files. Uncompressed data and options are passed to B<cmp>(1) or B<diff>(1) unless B<--help> or B<--version> is specified."
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzdiff.1:65
-msgid ""
-"The names B<lzcmp> and B<lzdiff> are provided for backward compatibility "
-"with LZMA Utils."
+#: ../src/scripts/xzdiff.1
+msgid "If both I<file1> and I<file2> are specified, they can be uncompressed files or files in formats that B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), or B<lz4>(1) can decompress. The required decompression commands are determined from the filename suffixes of I<file1> and I<file2>. A file with an unknown suffix is assumed to be either uncompressed or in a format that B<xz>(1) can decompress."
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzdiff.1:74
-msgid ""
-"B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), "
-"B<zstd>(1), B<zdiff>(1)"
+#: ../src/scripts/xzdiff.1
+msgid "If only one filename is provided, I<file1> must have a suffix of a supported compression format and the name for I<file2> is assumed to be I<file1> with the compression format suffix removed."
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzdiff.1:79
-msgid ""
-"Messages from the B<cmp>(1) or B<diff>(1) programs refer to temporary "
-"filenames instead of those specified."
+#: ../src/scripts/xzdiff.1
+msgid "The commands B<lzcmp> and B<lzdiff> are provided for backward compatibility with LZMA Utils."
msgstr ""
-#. type: TH
-#: ../src/scripts/xzgrep.1:9
-#, no-wrap
-msgid "XZGREP"
+#. type: Plain text
+#: ../src/scripts/xzdiff.1
+msgid "If a decompression error occurs, the exit status is B<2>. Otherwise the exit status of B<cmp>(1) or B<diff>(1) is used."
+msgstr ""
+
+#. type: Plain text
+#: ../src/scripts/xzdiff.1
+msgid "B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), B<lz4>(1)"
msgstr ""
#. type: TH
-#: ../src/scripts/xzgrep.1:9
+#: ../src/scripts/xzgrep.1
#, no-wrap
-msgid "2022-07-19"
+msgid "XZGREP"
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzgrep.1:12
-msgid "xzgrep - search compressed files for a regular expression"
+#: ../src/scripts/xzgrep.1
+msgid "xzgrep - search possibly-compressed files for patterns"
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzgrep.1:18
-msgid "B<xzgrep> [I<grep_options>] [B<-e>] I<pattern> [I<file...>]"
+#: ../src/scripts/xzgrep.1
+msgid "B<xzgrep> [I<option...>] [I<pattern_list>] [I<file...>]"
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzgrep.1:21
+#: ../src/scripts/xzgrep.1
msgid "B<xzegrep> \\&..."
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzgrep.1:24
+#: ../src/scripts/xzgrep.1
msgid "B<xzfgrep> \\&..."
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzgrep.1:27
+#: ../src/scripts/xzgrep.1
msgid "B<lzgrep> \\&..."
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzgrep.1:30
+#: ../src/scripts/xzgrep.1
msgid "B<lzegrep> \\&..."
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzgrep.1:33
+#: ../src/scripts/xzgrep.1
msgid "B<lzfgrep> \\&..."
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzgrep.1:49
-msgid ""
-"B<xzgrep> invokes B<grep>(1) on I<files> which may be either uncompressed "
-"or compressed with B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), "
-"B<lzop>(1), or B<zstd>(1). All options specified are passed directly to "
-"B<grep>(1)."
+#: ../src/scripts/xzgrep.1
+msgid "B<xzgrep> invokes B<grep>(1) on uncompressed contents of files. The formats of the I<files> are determined from the filename suffixes. Any I<file> with a suffix supported by B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), or B<lz4>(1) will be decompressed; all other files are assumed to be uncompressed."
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzgrep.1:62
-msgid ""
-"If no I<file> is specified, then standard input is decompressed if necessary "
-"and fed to B<grep>(1). When reading from standard input, B<gzip>(1), "
-"B<bzip2>(1), B<lzop>(1), and B<zstd>(1) compressed files are not supported."
+#: ../src/scripts/xzgrep.1
+msgid "If no I<files> are specified or I<file> is B<-> then standard input is read. When reading from standard input, only files supported by B<xz>(1) are decompressed. Other files are assumed to be in uncompressed form already."
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzgrep.1:81
-msgid ""
-"If B<xzgrep> is invoked as B<xzegrep> or B<xzfgrep> then B<grep -E> or "
-"B<grep -F> is used instead of B<grep>(1). The same applies to names "
-"B<lzgrep>, B<lzegrep>, and B<lzfgrep>, which are provided for backward "
-"compatibility with LZMA Utils."
+#: ../src/scripts/xzgrep.1
+msgid "Most I<options> of B<grep>(1) are supported. However, the following options are not supported:"
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzgrep.1:86
-msgid ""
-"At least one match was found from at least one of the input files. No "
-"errors occurred."
+#: ../src/scripts/xzgrep.1
+msgid "B<-r>, B<--recursive>"
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzgrep.1:90
+#: ../src/scripts/xzgrep.1
+msgid "B<-R>, B<--dereference-recursive>"
+msgstr ""
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<-d>, B<--directories=>I<action>"
+msgstr ""
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<-Z>, B<--null>"
+msgstr ""
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<-z>, B<--null-data>"
+msgstr ""
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<--include=>I<glob>"
+msgstr ""
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<--exclude=>I<glob>"
+msgstr ""
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<--exclude-from=>I<file>"
+msgstr ""
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<--exclude-dir=>I<glob>"
+msgstr ""
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "B<xzegrep> is an alias for B<xzgrep -E>. B<xzfgrep> is an alias for B<xzgrep -F>."
+msgstr ""
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "The commands B<lzgrep>, B<lzegrep>, and B<lzfgrep> are provided for backward compatibility with LZMA Utils."
+msgstr ""
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
+msgid "At least one match was found from at least one of the input files. No errors occurred."
+msgstr ""
+
+#. type: Plain text
+#: ../src/scripts/xzgrep.1
msgid "No matches were found from any of the input files. No errors occurred."
msgstr ""
#. type: TP
-#: ../src/scripts/xzgrep.1:90
+#: ../src/scripts/xzgrep.1
#, no-wrap
msgid "E<gt>1"
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzgrep.1:94
+#: ../src/scripts/xzgrep.1
msgid "One or more errors occurred. It is unknown if matches were found."
msgstr ""
#. type: TP
-#: ../src/scripts/xzgrep.1:95
+#: ../src/scripts/xzgrep.1
#, no-wrap
msgid "B<GREP>"
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzgrep.1:106
-msgid ""
-"If the B<GREP> environment variable is set, B<xzgrep> uses it instead of "
-"B<grep>(1), B<grep -E>, or B<grep -F>."
+#: ../src/scripts/xzgrep.1
+msgid "If B<GREP> is set to a non-empty value, it is used instead of B<grep>, B<grep -E>, or B<grep -F>."
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzgrep.1:113
-msgid ""
-"B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), "
-"B<zgrep>(1)"
+#: ../src/scripts/xzgrep.1
+msgid "B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), B<lz4>(1), B<zgrep>(1)"
msgstr ""
#. type: TH
-#: ../src/scripts/xzless.1:10
+#: ../src/scripts/xzless.1
#, no-wrap
msgid "XZLESS"
msgstr ""
#. type: TH
-#: ../src/scripts/xzless.1:10
+#: ../src/scripts/xzless.1 ../src/scripts/xzmore.1
#, no-wrap
-msgid "2010-09-27"
+msgid "2024-02-12"
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzless.1:13
+#: ../src/scripts/xzless.1
msgid "xzless, lzless - view xz or lzma compressed (text) files"
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzless.1:16
+#: ../src/scripts/xzless.1
msgid "B<xzless> [I<file>...]"
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzless.1:19
+#: ../src/scripts/xzless.1
msgid "B<lzless> [I<file>...]"
msgstr ""
#. 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."
+#: ../src/scripts/xzless.1
+msgid "B<xzless> is a filter that displays text from compressed files to a terminal. Files supported by B<xz>(1) are decompressed; other files are assumed to be in uncompressed form already. If no I<files> are given, B<xzless> reads from standard input."
msgstr ""
#. 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."
+#: ../src/scripts/xzless.1
+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 ""
#. type: Plain text
-#: ../src/scripts/xzless.1:52
-msgid ""
-"The command named B<lzless> is provided for backward compatibility with LZMA "
-"Utils."
+#: ../src/scripts/xzless.1
+msgid "The command named B<lzless> is provided for backward compatibility with LZMA Utils."
msgstr ""
#. type: TP
-#: ../src/scripts/xzless.1:53
+#: ../src/scripts/xzless.1
#, no-wrap
msgid "B<LESSMETACHARS>"
msgstr ""
#. 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."
+#: ../src/scripts/xzless.1
+msgid "A list of characters special to the shell. Set by B<xzless> unless it is already set in the environment."
msgstr ""
#. type: TP
-#: ../src/scripts/xzless.1:59
+#: ../src/scripts/xzless.1
#, no-wrap
msgid "B<LESSOPEN>"
msgstr ""
#. 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)."
+#: ../src/scripts/xzless.1
+msgid "Set to a command line to invoke the B<xz>(1) decompressor for preprocessing the input files to B<less>(1)."
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzless.1:69
+#: ../src/scripts/xzless.1
msgid "B<less>(1), B<xz>(1), B<xzmore>(1), B<zless>(1)"
msgstr ""
#. type: TH
-#: ../src/scripts/xzmore.1:7
+#: ../src/scripts/xzmore.1
#, no-wrap
msgid "XZMORE"
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzmore.1:10
+#: ../src/scripts/xzmore.1
msgid "xzmore, lzmore - view xz or lzma compressed (text) files"
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzmore.1:13
-msgid "B<xzmore> [I<file...>]"
+#: ../src/scripts/xzmore.1
+msgid "B<xzmore> [I<file>...]"
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzmore.1:16
-msgid "B<lzmore> [I<file...>]"
+#: ../src/scripts/xzmore.1
+msgid "B<lzmore> [I<file>...]"
msgstr ""
#. 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."
+#: ../src/scripts/xzmore.1
+msgid "B<xzmore> displays text from compressed files to a terminal using B<more>(1). Files supported by B<xz>(1) are decompressed; other files are assumed to be in uncompressed form already. If no I<files> are given, B<xzmore> reads from standard input. See the B<more>(1) manual for the keyboard commands."
msgstr ""
#. 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 ""
-
-#. type: TP
-#: ../src/scripts/xzmore.1:33
-#, no-wrap
-msgid "B<e> or B<q>"
+#: ../src/scripts/xzmore.1
+msgid "Note that scrolling backwards might not be possible depending on the implementation of B<more>(1). This is because B<xzmore> uses a pipe to pass the decompressed data to B<more>(1). B<xzless>(1) uses B<less>(1) which provides more advanced features."
msgstr ""
#. 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."
+#: ../src/scripts/xzmore.1
+msgid "The command B<lzmore> is provided for backward compatibility with LZMA Utils."
msgstr ""
#. type: TP
-#: ../src/scripts/xzmore.1:40
+#: ../src/scripts/xzmore.1
#, no-wrap
-msgid "B<s>"
+msgid "B<PAGER>"
msgstr ""
#. 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 ""
-
-#. 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)."
+#: ../src/scripts/xzmore.1
+msgid "If B<PAGER> is set, its value is used as the pager instead of B<more>(1)."
msgstr ""
#. type: Plain text
-#: ../src/scripts/xzmore.1:55
+#: ../src/scripts/xzmore.1
msgid "B<more>(1), B<xz>(1), B<xzless>(1), B<zmore>(1)"
msgstr ""
diff --git a/src/Makefile.am b/src/Makefile.am
index d199e85..1061323 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,9 +1,5 @@
-##
+## SPDX-License-Identifier: 0BSD
## Author: Lasse Collin
-##
-## This file has been put into the public domain.
-## You can do whatever you want with this file.
-##
SUBDIRS = liblzma xzdec
diff --git a/src/Makefile.in b/src/Makefile.in
index d9827e9..73e7a2a 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -92,8 +92,8 @@ host_triplet = @host@
@COND_SCRIPTS_TRUE@am__append_3 = scripts
subdir = src
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_capsicum.m4 \
- $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/getopt.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
+ $(top_srcdir)/m4/build-to-host.m4 $(top_srcdir)/m4/getopt.m4 \
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/host-cpu-c-abi.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -206,7 +206,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CAPSICUM_LIB = @CAPSICUM_LIB@
CC = @CC@
CCAS = @CCAS@
CCASDEPMODE = @CCASDEPMODE@
@@ -335,6 +334,8 @@ install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
+localedir_c = @localedir_c@
+localedir_c_make = @localedir_c_make@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
diff --git a/src/common/common_w32res.rc b/src/common/common_w32res.rc
index d05d22e..97aa58a 100644
--- a/src/common/common_w32res.rc
+++ b/src/common/common_w32res.rc
@@ -1,8 +1,7 @@
+/* SPDX-License-Identifier: 0BSD */
+
/*
* Author: Lasse Collin
- *
- * This file has been put into the public domain.
- * You can do whatever you want with this file.
*/
#include <winresrc.h>
diff --git a/src/common/mythread.h b/src/common/mythread.h
index 4495e01..10ea2d4 100644
--- a/src/common/mythread.h
+++ b/src/common/mythread.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file mythread.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef MYTHREAD_H
@@ -112,6 +111,25 @@ mythread_sigmask(int how, const sigset_t *restrict set,
# include <sys/time.h>
#endif
+// MinGW-w64 with winpthreads:
+//
+// NOTE: Typical builds with MinGW-w64 don't use this code (MYTHREAD_POSIX).
+// Instead, native Windows threading APIs are used (MYTHREAD_VISTA or
+// MYTHREAD_WIN95).
+//
+// MinGW-w64 has _sigset_t (an integer type) in <sys/types.h>.
+// If _POSIX was #defined, the header would add the alias sigset_t too.
+// Let's keep this working even without _POSIX.
+//
+// There are no functions that actually do something with sigset_t
+// because signals barely exist on Windows. The sigfillset macro below
+// is just to silence warnings. There is no sigfillset() in MinGW-w64.
+#ifdef __MINGW32__
+# include <sys/types.h>
+# define sigset_t _sigset_t
+# define sigfillset(set_ptr) do { *(set_ptr) = 0; } while (0)
+#endif
+
#define MYTHREAD_RET_TYPE void *
#define MYTHREAD_RET_VALUE NULL
@@ -140,11 +158,13 @@ typedef struct timespec mythread_condtime;
// Use pthread_sigmask() to set the signal mask in multi-threaded programs.
// Do nothing on OpenVMS since it lacks pthread_sigmask().
+// Do nothing on MinGW-w64 too to silence warnings (its pthread_sigmask()
+// is #defined to 0 so it's a no-op).
static inline void
mythread_sigmask(int how, const sigset_t *restrict set,
sigset_t *restrict oset)
{
-#ifdef __VMS
+#if defined(__VMS) || defined(__MINGW32__)
(void)how;
(void)set;
(void)oset;
@@ -180,7 +200,7 @@ mythread_join(mythread thread)
}
-// Initiatlizes a mutex. Returns zero on success and non-zero on error.
+// Initializes a mutex. Returns zero on success and non-zero on error.
static inline int
mythread_mutex_init(mythread_mutex *mutex)
{
diff --git a/src/common/sysdefs.h b/src/common/sysdefs.h
index f04e45d..5f3785b 100644
--- a/src/common/sysdefs.h
+++ b/src/common/sysdefs.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file sysdefs.h
@@ -8,9 +10,6 @@
//
// 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
@@ -159,13 +158,16 @@ typedef unsigned char _Bool;
#include <string.h>
-// As of MSVC 2013, inline and restrict are supported with
-// non-standard keywords.
-#if defined(_WIN32) && defined(_MSC_VER)
-# ifndef inline
+// Visual Studio 2013 update 2 supports only __inline, not inline.
+// MSVC v19.0 / VS 2015 and newer support both.
+//
+// MSVC v19.27 (VS 2019 version 16.7) added support for restrict.
+// Older ones support only __restrict.
+#ifdef _MSC_VER
+# if _MSC_VER < 1900 && !defined(inline)
# define inline __inline
# endif
-# ifndef restrict
+# if _MSC_VER < 1927 && !defined(restrict)
# define restrict __restrict
# endif
#endif
diff --git a/src/common/tuklib_common.h b/src/common/tuklib_common.h
index b1f531e..7554dfc 100644
--- a/src/common/tuklib_common.h
+++ b/src/common/tuklib_common.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_common.h
@@ -5,9 +7,6 @@
//
// 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
@@ -57,8 +56,28 @@
# define TUKLIB_GNUC_REQ(major, minor) 0
#endif
-#if TUKLIB_GNUC_REQ(2, 5)
+// tuklib_attr_noreturn attribute is used to mark functions as non-returning.
+// We cannot use "noreturn" as the macro name because then C23 code that
+// uses [[noreturn]] would break as it would expand to [[ [[noreturn]] ]].
+//
+// tuklib_attr_noreturn must be used at the beginning of function declaration
+// to work in all cases. The [[noreturn]] syntax is the most limiting, it
+// must be even before any GNU C's __attribute__ keywords:
+//
+// tuklib_attr_noreturn
+// __attribute__((nonnull(1)))
+// extern void foo(const char *s);
+//
+// FIXME: Update __STDC_VERSION__ for the final C23 version. 202000 is used
+// by GCC 13 and Clang 15 with -std=c2x.
+#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000
+# define tuklib_attr_noreturn [[noreturn]]
+#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112
+# define tuklib_attr_noreturn _Noreturn
+#elif TUKLIB_GNUC_REQ(2, 5)
# define tuklib_attr_noreturn __attribute__((__noreturn__))
+#elif defined(_MSC_VER)
+# define tuklib_attr_noreturn __declspec(noreturn)
#else
# define tuklib_attr_noreturn
#endif
diff --git a/src/common/tuklib_config.h b/src/common/tuklib_config.h
index 9d470ba..b27251d 100644
--- a/src/common/tuklib_config.h
+++ b/src/common/tuklib_config.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
// If config.h isn't available, assume that the headers required by
// tuklib_common.h are available. This is required by crc32_tablegen.c.
#ifdef HAVE_CONFIG_H
diff --git a/src/common/tuklib_cpucores.c b/src/common/tuklib_cpucores.c
index bb3f2f7..c4a781a 100644
--- a/src/common/tuklib_cpucores.c
+++ b/src/common/tuklib_cpucores.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_cpucores.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tuklib_cpucores.h"
diff --git a/src/common/tuklib_cpucores.h b/src/common/tuklib_cpucores.h
index be1ce1c..edff939 100644
--- a/src/common/tuklib_cpucores.h
+++ b/src/common/tuklib_cpucores.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_cpucores.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef TUKLIB_CPUCORES_H
diff --git a/src/common/tuklib_exit.c b/src/common/tuklib_exit.c
index aa55620..c84e0f6 100644
--- a/src/common/tuklib_exit.c
+++ b/src/common/tuklib_exit.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_exit.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tuklib_common.h"
diff --git a/src/common/tuklib_exit.h b/src/common/tuklib_exit.h
index b11776f..d4e6b4a 100644
--- a/src/common/tuklib_exit.h
+++ b/src/common/tuklib_exit.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_exit.h
@@ -6,9 +8,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef TUKLIB_EXIT_H
@@ -18,8 +17,8 @@
TUKLIB_DECLS_BEGIN
#define tuklib_exit TUKLIB_SYMBOL(tuklib_exit)
-extern void tuklib_exit(int status, int err_status, int show_error)
- tuklib_attr_noreturn;
+tuklib_attr_noreturn
+extern void tuklib_exit(int status, int err_status, int show_error);
TUKLIB_DECLS_END
#endif
diff --git a/src/common/tuklib_gettext.h b/src/common/tuklib_gettext.h
index ff18904..3ef5cb7 100644
--- a/src/common/tuklib_gettext.h
+++ b/src/common/tuklib_gettext.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_gettext.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef TUKLIB_GETTEXT_H
diff --git a/src/common/tuklib_integer.h b/src/common/tuklib_integer.h
index e22aa8a..fbd5fb2 100644
--- a/src/common/tuklib_integer.h
+++ b/src/common/tuklib_integer.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_integer.h
@@ -14,7 +16,7 @@
///
/// Endianness-converting integer operations (these can be macros!)
/// (XX = 16, 32, or 64; Y = b or l):
-/// - Byte swapping: bswapXX(num)
+/// - Byte swapping: byteswapXX(num)
/// - Byte order conversions to/from native (byteswaps if Y isn't
/// the native endianness): convXXYe(num)
/// - Unaligned reads: readXXYe(ptr)
@@ -37,9 +39,6 @@
// Authors: Lasse Collin
// Joachim Henke
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef TUKLIB_INTEGER_H
@@ -67,38 +66,41 @@
#if defined(HAVE___BUILTIN_BSWAPXX)
// GCC >= 4.8 and Clang
-# define bswap16(n) __builtin_bswap16(n)
-# define bswap32(n) __builtin_bswap32(n)
-# define bswap64(n) __builtin_bswap64(n)
+# define byteswap16(num) __builtin_bswap16(num)
+# define byteswap32(num) __builtin_bswap32(num)
+# define byteswap64(num) __builtin_bswap64(num)
#elif defined(HAVE_BYTESWAP_H)
// glibc, uClibc, dietlibc
# include <byteswap.h>
# ifdef HAVE_BSWAP_16
-# define bswap16(num) bswap_16(num)
+# define byteswap16(num) bswap_16(num)
# endif
# ifdef HAVE_BSWAP_32
-# define bswap32(num) bswap_32(num)
+# define byteswap32(num) bswap_32(num)
# endif
# ifdef HAVE_BSWAP_64
-# define bswap64(num) bswap_64(num)
+# define byteswap64(num) bswap_64(num)
# endif
#elif defined(HAVE_SYS_ENDIAN_H)
// *BSDs and Darwin
# include <sys/endian.h>
+# define byteswap16(num) bswap16(num)
+# define byteswap32(num) bswap32(num)
+# define byteswap64(num) bswap64(num)
#elif defined(HAVE_SYS_BYTEORDER_H)
// Solaris
# include <sys/byteorder.h>
# ifdef BSWAP_16
-# define bswap16(num) BSWAP_16(num)
+# define byteswap16(num) BSWAP_16(num)
# endif
# ifdef BSWAP_32
-# define bswap32(num) BSWAP_32(num)
+# define byteswap32(num) BSWAP_32(num)
# endif
# ifdef BSWAP_64
-# define bswap64(num) BSWAP_64(num)
+# define byteswap64(num) BSWAP_64(num)
# endif
# ifdef BE_16
# define conv16be(num) BE_16(num)
@@ -120,15 +122,15 @@
# endif
#endif
-#ifndef bswap16
-# define bswap16(n) (uint16_t)( \
+#ifndef byteswap16
+# define byteswap16(n) (uint16_t)( \
(((n) & 0x00FFU) << 8) \
| (((n) & 0xFF00U) >> 8) \
)
#endif
-#ifndef bswap32
-# define bswap32(n) (uint32_t)( \
+#ifndef byteswap32
+# define byteswap32(n) (uint32_t)( \
(((n) & UINT32_C(0x000000FF)) << 24) \
| (((n) & UINT32_C(0x0000FF00)) << 8) \
| (((n) & UINT32_C(0x00FF0000)) >> 8) \
@@ -136,8 +138,8 @@
)
#endif
-#ifndef bswap64
-# define bswap64(n) (uint64_t)( \
+#ifndef byteswap64
+# define byteswap64(n) (uint64_t)( \
(((n) & UINT64_C(0x00000000000000FF)) << 56) \
| (((n) & UINT64_C(0x000000000000FF00)) << 40) \
| (((n) & UINT64_C(0x0000000000FF0000)) << 24) \
@@ -161,23 +163,23 @@
# define conv64be(num) ((uint64_t)(num))
# endif
# ifndef conv16le
-# define conv16le(num) bswap16(num)
+# define conv16le(num) byteswap16(num)
# endif
# ifndef conv32le
-# define conv32le(num) bswap32(num)
+# define conv32le(num) byteswap32(num)
# endif
# ifndef conv64le
-# define conv64le(num) bswap64(num)
+# define conv64le(num) byteswap64(num)
# endif
#else
# ifndef conv16be
-# define conv16be(num) bswap16(num)
+# define conv16be(num) byteswap16(num)
# endif
# ifndef conv32be
-# define conv32be(num) bswap32(num)
+# define conv32be(num) byteswap32(num)
# endif
# ifndef conv64be
-# define conv64be(num) bswap64(num)
+# define conv64be(num) byteswap64(num)
# endif
# ifndef conv16le
# define conv16le(num) ((uint16_t)(num))
@@ -251,7 +253,7 @@
// was one instruction longer.
//
// Conclusion: At least in case of GCC and Clang, byte-by-byte code is
-// the best choise for strict-align archs to do unaligned access.
+// the best choice for strict-align archs to do unaligned access.
//
// See also: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111502
//
@@ -625,7 +627,7 @@ write64le(uint8_t *buf, uint64_t num)
// aligned but some compilers have language extensions to do that. With
// such language extensions the memcpy() method gives excellent results.
//
-// What to do on a strict-align system when no known language extentensions
+// What to do on a strict-align system when no known language extensions
// are available? Falling back to byte-by-byte access would be safe but ruin
// optimizations that have been made specifically with aligned access in mind.
// As a compromise, aligned reads will fall back to non-compliant type punning
diff --git a/src/common/tuklib_mbstr.h b/src/common/tuklib_mbstr.h
index dde9305..4c8eeb7 100644
--- a/src/common/tuklib_mbstr.h
+++ b/src/common/tuklib_mbstr.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_mbstr.h
@@ -10,9 +12,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef TUKLIB_MBSTR_H
diff --git a/src/common/tuklib_mbstr_fw.c b/src/common/tuklib_mbstr_fw.c
index 64c9ad5..22d883b 100644
--- a/src/common/tuklib_mbstr_fw.c
+++ b/src/common/tuklib_mbstr_fw.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_mbstr_fw.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tuklib_mbstr.h"
diff --git a/src/common/tuklib_mbstr_width.c b/src/common/tuklib_mbstr_width.c
index 69d159e..7a8bf07 100644
--- a/src/common/tuklib_mbstr_width.c
+++ b/src/common/tuklib_mbstr_width.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_mbstr_width.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tuklib_mbstr.h"
diff --git a/src/common/tuklib_open_stdxxx.c b/src/common/tuklib_open_stdxxx.c
index 26702a6..b93e61d 100644
--- a/src/common/tuklib_open_stdxxx.c
+++ b/src/common/tuklib_open_stdxxx.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_open_stdxxx.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tuklib_open_stdxxx.h"
diff --git a/src/common/tuklib_open_stdxxx.h b/src/common/tuklib_open_stdxxx.h
index b911616..3ee3ade 100644
--- a/src/common/tuklib_open_stdxxx.h
+++ b/src/common/tuklib_open_stdxxx.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_open_stdxxx.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef TUKLIB_OPEN_STDXXX_H
diff --git a/src/common/tuklib_physmem.c b/src/common/tuklib_physmem.c
index 69f6fd4..1009df1 100644
--- a/src/common/tuklib_physmem.c
+++ b/src/common/tuklib_physmem.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_physmem.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tuklib_physmem.h"
@@ -73,23 +72,20 @@
#endif
-// With GCC >= 8.1 with -Wextra and Clang >= 13 with -Wcast-function-type
-// will warn about the Windows-specific code.
-#if defined(__has_warning)
-# if __has_warning("-Wcast-function-type")
-# define CAN_DISABLE_WCAST_FUNCTION_TYPE 1
-# endif
-#elif TUKLIB_GNUC_REQ(8,1)
-# define CAN_DISABLE_WCAST_FUNCTION_TYPE 1
-#endif
-
-
extern uint64_t
tuklib_physmem(void)
{
uint64_t ret = 0;
#if defined(_WIN32) || defined(__CYGWIN__)
+ // This requires Windows 2000 or later.
+ MEMORYSTATUSEX meminfo;
+ meminfo.dwLength = sizeof(meminfo);
+ if (GlobalMemoryStatusEx(&meminfo))
+ ret = meminfo.ullTotalPhys;
+
+/*
+ // Old version that is compatible with even Win95:
if ((GetVersion() & 0xFF) >= 5) {
// Windows 2000 and later have GlobalMemoryStatusEx() which
// supports reporting values greater than 4 GiB. To keep the
@@ -125,6 +121,7 @@ tuklib_physmem(void)
GlobalMemoryStatus(&meminfo);
ret = meminfo.dwTotalPhys;
}
+*/
#elif defined(__OS2__)
unsigned long mem;
diff --git a/src/common/tuklib_physmem.h b/src/common/tuklib_physmem.h
index 09e2a51..f35bfba 100644
--- a/src/common/tuklib_physmem.h
+++ b/src/common/tuklib_physmem.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_physmem.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef TUKLIB_PHYSMEM_H
diff --git a/src/common/tuklib_progname.c b/src/common/tuklib_progname.c
index e2ef4e5..959c127 100644
--- a/src/common/tuklib_progname.c
+++ b/src/common/tuklib_progname.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_progname.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tuklib_progname.h"
diff --git a/src/common/tuklib_progname.h b/src/common/tuklib_progname.h
index bb80f25..a3d90cb 100644
--- a/src/common/tuklib_progname.h
+++ b/src/common/tuklib_progname.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_progname.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef TUKLIB_PROGNAME_H
diff --git a/src/liblzma/Makefile.am b/src/liblzma/Makefile.am
index 23d524f..85b3a52 100644
--- a/src/liblzma/Makefile.am
+++ b/src/liblzma/Makefile.am
@@ -1,9 +1,5 @@
-##
+## SPDX-License-Identifier: 0BSD
## Author: Lasse Collin
-##
-## This file has been put into the public domain.
-## You can do whatever you want with this file.
-##
SUBDIRS = api
@@ -24,7 +20,7 @@ liblzma_la_CPPFLAGS = \
-I$(top_srcdir)/src/liblzma/simple \
-I$(top_srcdir)/src/common \
-DTUKLIB_SYMBOL_PREFIX=lzma_
-liblzma_la_LDFLAGS = -no-undefined -version-info 9:5:4
+liblzma_la_LDFLAGS = -no-undefined -version-info 11:2:6
EXTRA_DIST += liblzma_generic.map liblzma_linux.map validate_map.sh
if COND_SYMVERS_GENERIC
diff --git a/src/liblzma/Makefile.in b/src/liblzma/Makefile.in
index 2689fc4..45a8337 100644
--- a/src/liblzma/Makefile.in
+++ b/src/liblzma/Makefile.in
@@ -161,14 +161,14 @@ host_triplet = @host@
@COND_LZIP_DECODER_TRUE@@COND_MAIN_DECODER_TRUE@ common/lzip_decoder.c \
@COND_LZIP_DECODER_TRUE@@COND_MAIN_DECODER_TRUE@ common/lzip_decoder.h
-@COND_CHECK_CRC32_TRUE@@COND_SMALL_TRUE@am__append_12 = check/crc32_small.c
-@COND_CHECK_CRC32_TRUE@@COND_SMALL_FALSE@am__append_13 = \
-@COND_CHECK_CRC32_TRUE@@COND_SMALL_FALSE@ check/crc32_table.c \
-@COND_CHECK_CRC32_TRUE@@COND_SMALL_FALSE@ check/crc32_table_le.h \
-@COND_CHECK_CRC32_TRUE@@COND_SMALL_FALSE@ check/crc32_table_be.h
-
-@COND_ASM_X86_TRUE@@COND_CHECK_CRC32_TRUE@@COND_SMALL_FALSE@am__append_14 = check/crc32_x86.S
-@COND_ASM_X86_FALSE@@COND_CHECK_CRC32_TRUE@@COND_SMALL_FALSE@am__append_15 = check/crc32_fast.c
+@COND_SMALL_TRUE@am__append_12 = check/crc32_small.c
+@COND_SMALL_FALSE@am__append_13 = \
+@COND_SMALL_FALSE@ check/crc32_table.c \
+@COND_SMALL_FALSE@ check/crc32_table_le.h \
+@COND_SMALL_FALSE@ check/crc32_table_be.h
+
+@COND_ASM_X86_TRUE@@COND_SMALL_FALSE@am__append_14 = check/crc32_x86.S
+@COND_ASM_X86_FALSE@@COND_SMALL_FALSE@am__append_15 = check/crc32_fast.c
@COND_CHECK_CRC64_TRUE@@COND_SMALL_TRUE@am__append_16 = check/crc64_small.c
@COND_CHECK_CRC64_TRUE@@COND_SMALL_FALSE@am__append_17 = \
@COND_CHECK_CRC64_TRUE@@COND_SMALL_FALSE@ check/crc64_table.c \
@@ -256,14 +256,15 @@ host_triplet = @host@
@COND_FILTER_ARMTHUMB_TRUE@@COND_FILTER_SIMPLE_TRUE@am__append_43 = simple/armthumb.c
@COND_FILTER_ARM64_TRUE@@COND_FILTER_SIMPLE_TRUE@am__append_44 = simple/arm64.c
@COND_FILTER_SIMPLE_TRUE@@COND_FILTER_SPARC_TRUE@am__append_45 = simple/sparc.c
-@COND_W32_TRUE@am__append_46 = liblzma.def liblzma.def.in empty.c
-@COND_W32_TRUE@am__append_47 = liblzma_w32res.rc
-@COND_W32_TRUE@am__append_48 = -Xlinker --output-def -Xlinker liblzma.def.in
-@COND_SHARED_TRUE@@COND_W32_TRUE@am__append_49 = liblzma.def
+@COND_FILTER_RISCV_TRUE@@COND_FILTER_SIMPLE_TRUE@am__append_46 = simple/riscv.c
+@COND_W32_TRUE@am__append_47 = liblzma.def liblzma.def.in empty.c
+@COND_W32_TRUE@am__append_48 = liblzma_w32res.rc
+@COND_W32_TRUE@am__append_49 = -Xlinker --output-def -Xlinker liblzma.def.in
+@COND_SHARED_TRUE@@COND_W32_TRUE@am__append_50 = liblzma.def
subdir = src/liblzma
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_capsicum.m4 \
- $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/getopt.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
+ $(top_srcdir)/m4/build-to-host.m4 $(top_srcdir)/m4/getopt.m4 \
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/host-cpu-c-abi.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -349,10 +350,10 @@ am__liblzma_la_SOURCES_DIST = ../common/tuklib_physmem.c \
common/vli_decoder.c common/stream_decoder_mt.c \
common/microlzma_decoder.c common/lzip_decoder.c \
common/lzip_decoder.h check/check.c check/check.h \
- check/crc_macros.h check/crc32_small.c check/crc32_table.c \
- check/crc32_table_le.h check/crc32_table_be.h \
- check/crc32_x86.S check/crc32_fast.c check/crc64_small.c \
- check/crc64_table.c check/crc64_table_le.h \
+ check/crc_common.h check/crc_x86_clmul.h check/crc32_arm64.h \
+ check/crc32_small.c check/crc32_table.c check/crc32_table_le.h \
+ check/crc32_table_be.h check/crc32_x86.S check/crc32_fast.c \
+ check/crc64_small.c check/crc64_table.c check/crc64_table_le.h \
check/crc64_table_be.h check/crc64_x86.S check/crc64_fast.c \
check/sha256.c lz/lz_encoder.c lz/lz_encoder.h \
lz/lz_encoder_hash.h lz/lz_encoder_hash_table.h \
@@ -374,7 +375,7 @@ am__liblzma_la_SOURCES_DIST = ../common/tuklib_physmem.c \
simple/simple_encoder.h simple/simple_decoder.c \
simple/simple_decoder.h simple/x86.c simple/powerpc.c \
simple/ia64.c simple/arm.c simple/armthumb.c simple/arm64.c \
- simple/sparc.c liblzma_w32res.rc
+ simple/sparc.c simple/riscv.c liblzma_w32res.rc
@COND_THREADS_TRUE@am__objects_1 = liblzma_la-tuklib_cpucores.lo
@COND_THREADS_TRUE@am__objects_2 = liblzma_la-hardware_cputhreads.lo \
@COND_THREADS_TRUE@ liblzma_la-outqueue.lo
@@ -414,10 +415,11 @@ am__liblzma_la_SOURCES_DIST = ../common/tuklib_physmem.c \
@COND_MAIN_DECODER_TRUE@@COND_THREADS_TRUE@am__objects_7 = liblzma_la-stream_decoder_mt.lo
@COND_MAIN_DECODER_TRUE@@COND_MICROLZMA_TRUE@am__objects_8 = liblzma_la-microlzma_decoder.lo
@COND_LZIP_DECODER_TRUE@@COND_MAIN_DECODER_TRUE@am__objects_9 = liblzma_la-lzip_decoder.lo
-@COND_CHECK_CRC32_TRUE@@COND_SMALL_TRUE@am__objects_10 = liblzma_la-crc32_small.lo
-@COND_CHECK_CRC32_TRUE@@COND_SMALL_FALSE@am__objects_11 = liblzma_la-crc32_table.lo
-@COND_ASM_X86_TRUE@@COND_CHECK_CRC32_TRUE@@COND_SMALL_FALSE@am__objects_12 = liblzma_la-crc32_x86.lo
-@COND_ASM_X86_FALSE@@COND_CHECK_CRC32_TRUE@@COND_SMALL_FALSE@am__objects_13 = liblzma_la-crc32_fast.lo
+@COND_SMALL_TRUE@am__objects_10 = liblzma_la-crc32_small.lo
+@COND_SMALL_FALSE@am__objects_11 = liblzma_la-crc32_table.lo
+@COND_ASM_X86_TRUE@@COND_SMALL_FALSE@am__objects_12 = \
+@COND_ASM_X86_TRUE@@COND_SMALL_FALSE@ liblzma_la-crc32_x86.lo
+@COND_ASM_X86_FALSE@@COND_SMALL_FALSE@am__objects_13 = liblzma_la-crc32_fast.lo
@COND_CHECK_CRC64_TRUE@@COND_SMALL_TRUE@am__objects_14 = liblzma_la-crc64_small.lo
@COND_CHECK_CRC64_TRUE@@COND_SMALL_FALSE@am__objects_15 = liblzma_la-crc64_table.lo
@COND_ASM_X86_TRUE@@COND_CHECK_CRC64_TRUE@@COND_SMALL_FALSE@am__objects_16 = liblzma_la-crc64_x86.lo
@@ -450,7 +452,8 @@ am__objects_27 =
@COND_FILTER_ARMTHUMB_TRUE@@COND_FILTER_SIMPLE_TRUE@am__objects_39 = liblzma_la-armthumb.lo
@COND_FILTER_ARM64_TRUE@@COND_FILTER_SIMPLE_TRUE@am__objects_40 = liblzma_la-arm64.lo
@COND_FILTER_SIMPLE_TRUE@@COND_FILTER_SPARC_TRUE@am__objects_41 = liblzma_la-sparc.lo
-@COND_W32_TRUE@am__objects_42 = liblzma_w32res.lo
+@COND_FILTER_RISCV_TRUE@@COND_FILTER_SIMPLE_TRUE@am__objects_42 = liblzma_la-riscv.lo
+@COND_W32_TRUE@am__objects_43 = liblzma_w32res.lo
am_liblzma_la_OBJECTS = liblzma_la-tuklib_physmem.lo $(am__objects_1) \
liblzma_la-common.lo liblzma_la-block_util.lo \
liblzma_la-easy_preset.lo liblzma_la-filter_common.lo \
@@ -471,7 +474,7 @@ am_liblzma_la_OBJECTS = liblzma_la-tuklib_physmem.lo $(am__objects_1) \
$(am__objects_33) $(am__objects_34) $(am__objects_35) \
$(am__objects_36) $(am__objects_37) $(am__objects_38) \
$(am__objects_39) $(am__objects_40) $(am__objects_41) \
- $(am__objects_42)
+ $(am__objects_42) $(am__objects_43)
liblzma_la_OBJECTS = $(am_liblzma_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -558,6 +561,7 @@ am__depfiles_remade = ./$(DEPDIR)/liblzma_la-alone_decoder.Plo \
./$(DEPDIR)/liblzma_la-outqueue.Plo \
./$(DEPDIR)/liblzma_la-powerpc.Plo \
./$(DEPDIR)/liblzma_la-price_table.Plo \
+ ./$(DEPDIR)/liblzma_la-riscv.Plo \
./$(DEPDIR)/liblzma_la-sha256.Plo \
./$(DEPDIR)/liblzma_la-simple_coder.Plo \
./$(DEPDIR)/liblzma_la-simple_decoder.Plo \
@@ -691,7 +695,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CAPSICUM_LIB = @CAPSICUM_LIB@
CC = @CC@
CCAS = @CCAS@
CCASDEPMODE = @CCASDEPMODE@
@@ -820,6 +823,8 @@ install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
+localedir_c = @localedir_c@
+localedir_c_make = @localedir_c_make@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
@@ -842,8 +847,8 @@ SUBDIRS = api
EXTRA_DIST = liblzma_generic.map liblzma_linux.map validate_map.sh \
check/crc32_tablegen.c check/crc64_tablegen.c $(am__append_23) \
liblzma.pc.in
-CLEANFILES = $(am__append_46)
-doc_DATA = $(am__append_49)
+CLEANFILES = $(am__append_47)
+doc_DATA = $(am__append_50)
lib_LTLIBRARIES = liblzma.la
liblzma_la_SOURCES = ../common/tuklib_physmem.c $(am__append_3) \
common/common.c common/common.h common/memcmplen.h \
@@ -855,18 +860,19 @@ liblzma_la_SOURCES = ../common/tuklib_physmem.c $(am__append_3) \
$(am__append_5) $(am__append_6) $(am__append_7) \
$(am__append_8) $(am__append_9) $(am__append_10) \
$(am__append_11) check/check.c check/check.h \
- check/crc_macros.h $(am__append_12) $(am__append_13) \
- $(am__append_14) $(am__append_15) $(am__append_16) \
- $(am__append_17) $(am__append_18) $(am__append_19) \
- $(am__append_20) $(am__append_21) $(am__append_22) \
- $(am__append_24) $(am__append_25) $(am__append_26) \
- $(am__append_27) $(am__append_28) $(am__append_29) \
- $(am__append_30) $(am__append_31) $(am__append_32) \
- $(am__append_33) $(am__append_34) $(am__append_35) \
- $(am__append_36) $(am__append_37) $(am__append_38) \
- $(am__append_39) $(am__append_40) $(am__append_41) \
- $(am__append_42) $(am__append_43) $(am__append_44) \
- $(am__append_45) $(am__append_47)
+ check/crc_common.h check/crc_x86_clmul.h check/crc32_arm64.h \
+ $(am__append_12) $(am__append_13) $(am__append_14) \
+ $(am__append_15) $(am__append_16) $(am__append_17) \
+ $(am__append_18) $(am__append_19) $(am__append_20) \
+ $(am__append_21) $(am__append_22) $(am__append_24) \
+ $(am__append_25) $(am__append_26) $(am__append_27) \
+ $(am__append_28) $(am__append_29) $(am__append_30) \
+ $(am__append_31) $(am__append_32) $(am__append_33) \
+ $(am__append_34) $(am__append_35) $(am__append_36) \
+ $(am__append_37) $(am__append_38) $(am__append_39) \
+ $(am__append_40) $(am__append_41) $(am__append_42) \
+ $(am__append_43) $(am__append_44) $(am__append_45) \
+ $(am__append_46) $(am__append_48)
liblzma_la_CPPFLAGS = \
-I$(top_srcdir)/src/liblzma/api \
-I$(top_srcdir)/src/liblzma/common \
@@ -879,8 +885,8 @@ liblzma_la_CPPFLAGS = \
-I$(top_srcdir)/src/common \
-DTUKLIB_SYMBOL_PREFIX=lzma_
-liblzma_la_LDFLAGS = -no-undefined -version-info 9:5:4 $(am__append_1) \
- $(am__append_2) $(am__append_48)
+liblzma_la_LDFLAGS = -no-undefined -version-info 11:2:6 \
+ $(am__append_1) $(am__append_2) $(am__append_49)
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = liblzma.pc
pc_verbose = $(pc_verbose_@AM_V@)
@@ -1028,6 +1034,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-outqueue.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-powerpc.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-price_table.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-riscv.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-sha256.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-simple_coder.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-simple_decoder.Plo@am__quote@ # am--include-marker
@@ -1686,6 +1693,13 @@ liblzma_la-sparc.lo: simple/sparc.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblzma_la-sparc.lo `test -f 'simple/sparc.c' || echo '$(srcdir)/'`simple/sparc.c
+liblzma_la-riscv.lo: simple/riscv.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblzma_la-riscv.lo -MD -MP -MF $(DEPDIR)/liblzma_la-riscv.Tpo -c -o liblzma_la-riscv.lo `test -f 'simple/riscv.c' || echo '$(srcdir)/'`simple/riscv.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblzma_la-riscv.Tpo $(DEPDIR)/liblzma_la-riscv.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='simple/riscv.c' object='liblzma_la-riscv.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblzma_la-riscv.lo `test -f 'simple/riscv.c' || echo '$(srcdir)/'`simple/riscv.c
+
mostlyclean-libtool:
-rm -f *.lo
@@ -1998,6 +2012,7 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/liblzma_la-outqueue.Plo
-rm -f ./$(DEPDIR)/liblzma_la-powerpc.Plo
-rm -f ./$(DEPDIR)/liblzma_la-price_table.Plo
+ -rm -f ./$(DEPDIR)/liblzma_la-riscv.Plo
-rm -f ./$(DEPDIR)/liblzma_la-sha256.Plo
-rm -f ./$(DEPDIR)/liblzma_la-simple_coder.Plo
-rm -f ./$(DEPDIR)/liblzma_la-simple_decoder.Plo
@@ -2127,6 +2142,7 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/liblzma_la-outqueue.Plo
-rm -f ./$(DEPDIR)/liblzma_la-powerpc.Plo
-rm -f ./$(DEPDIR)/liblzma_la-price_table.Plo
+ -rm -f ./$(DEPDIR)/liblzma_la-riscv.Plo
-rm -f ./$(DEPDIR)/liblzma_la-sha256.Plo
-rm -f ./$(DEPDIR)/liblzma_la-simple_coder.Plo
-rm -f ./$(DEPDIR)/liblzma_la-simple_decoder.Plo
diff --git a/src/liblzma/api/Makefile.am b/src/liblzma/api/Makefile.am
index db24600..4f91c77 100644
--- a/src/liblzma/api/Makefile.am
+++ b/src/liblzma/api/Makefile.am
@@ -1,9 +1,5 @@
-##
+## SPDX-License-Identifier: 0BSD
## Author: Lasse Collin
-##
-## This file has been put into the public domain.
-## You can do whatever you want with this file.
-##
nobase_include_HEADERS = \
lzma.h \
@@ -21,3 +17,22 @@ nobase_include_HEADERS = \
lzma/stream_flags.h \
lzma/version.h \
lzma/vli.h
+
+if COND_DOXYGEN
+$(top_builddir)/doc/api/index.html: $(top_srcdir)/doxygen/update-doxygen $(top_srcdir)/doxygen/Doxyfile $(nobase_include_HEADERS)
+ $(MKDIR_P) "$(top_builddir)/doc"
+ "$(top_srcdir)/doxygen/update-doxygen" api \
+ "$(top_srcdir)" "$(top_builddir)/doc"
+
+all-local: $(top_builddir)/doc/api/index.html
+
+install-data-local:
+ $(MKDIR_P) "$(DESTDIR)$(docdir)/api"
+ $(INSTALL_DATA) "$(top_builddir)"/doc/api/* "$(DESTDIR)$(docdir)/api"
+
+uninstall-local:
+ rm -rf "$(DESTDIR)$(docdir)/api"
+
+clean-local:
+ rm -rf "$(top_builddir)/doc/api"
+endif
diff --git a/src/liblzma/api/Makefile.in b/src/liblzma/api/Makefile.in
index ea5cfd6..e973884 100644
--- a/src/liblzma/api/Makefile.in
+++ b/src/liblzma/api/Makefile.in
@@ -90,8 +90,8 @@ build_triplet = @build@
host_triplet = @host@
subdir = src/liblzma/api
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_capsicum.m4 \
- $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/getopt.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
+ $(top_srcdir)/m4/build-to-host.m4 $(top_srcdir)/m4/getopt.m4 \
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/host-cpu-c-abi.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -192,7 +192,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CAPSICUM_LIB = @CAPSICUM_LIB@
CC = @CC@
CCAS = @CCAS@
CCASDEPMODE = @CCASDEPMODE@
@@ -321,6 +320,8 @@ install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
+localedir_c = @localedir_c@
+localedir_c_make = @localedir_c_make@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
@@ -505,7 +506,8 @@ distdir-am: $(DISTFILES)
done
check-am: all-am
check: check-am
-all-am: Makefile $(HEADERS)
+@COND_DOXYGEN_FALSE@all-local:
+all-am: Makefile $(HEADERS) all-local
installdirs:
for dir in "$(DESTDIR)$(includedir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
@@ -540,9 +542,12 @@ distclean-generic:
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
+@COND_DOXYGEN_FALSE@clean-local:
+@COND_DOXYGEN_FALSE@install-data-local:
+@COND_DOXYGEN_FALSE@uninstall-local:
clean: clean-am
-clean-am: clean-generic clean-libtool mostlyclean-am
+clean-am: clean-generic clean-libtool clean-local mostlyclean-am
distclean: distclean-am
-rm -f Makefile
@@ -560,7 +565,7 @@ info: info-am
info-am:
-install-data-am: install-nobase_includeHEADERS
+install-data-am: install-data-local install-nobase_includeHEADERS
install-dvi: install-dvi-am
@@ -604,27 +609,45 @@ ps: ps-am
ps-am:
-uninstall-am: uninstall-nobase_includeHEADERS
+uninstall-am: uninstall-local uninstall-nobase_includeHEADERS
.MAKE: install-am install-strip
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
- clean-libtool cscopelist-am ctags ctags-am distclean \
- distclean-generic distclean-libtool distclean-tags distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-dvi install-dvi-am \
- install-exec install-exec-am install-html install-html-am \
- install-info install-info-am install-man \
- install-nobase_includeHEADERS install-pdf install-pdf-am \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-generic \
- mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
- uninstall-am uninstall-nobase_includeHEADERS
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
+ clean-generic clean-libtool clean-local cscopelist-am ctags \
+ ctags-am distclean distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am \
+ install-data-local install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-nobase_includeHEADERS \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am uninstall-local \
+ uninstall-nobase_includeHEADERS
.PRECIOUS: Makefile
+@COND_DOXYGEN_TRUE@$(top_builddir)/doc/api/index.html: $(top_srcdir)/doxygen/update-doxygen $(top_srcdir)/doxygen/Doxyfile $(nobase_include_HEADERS)
+@COND_DOXYGEN_TRUE@ $(MKDIR_P) "$(top_builddir)/doc"
+@COND_DOXYGEN_TRUE@ "$(top_srcdir)/doxygen/update-doxygen" api \
+@COND_DOXYGEN_TRUE@ "$(top_srcdir)" "$(top_builddir)/doc"
+
+@COND_DOXYGEN_TRUE@all-local: $(top_builddir)/doc/api/index.html
+
+@COND_DOXYGEN_TRUE@install-data-local:
+@COND_DOXYGEN_TRUE@ $(MKDIR_P) "$(DESTDIR)$(docdir)/api"
+@COND_DOXYGEN_TRUE@ $(INSTALL_DATA) "$(top_builddir)"/doc/api/* "$(DESTDIR)$(docdir)/api"
+
+@COND_DOXYGEN_TRUE@uninstall-local:
+@COND_DOXYGEN_TRUE@ rm -rf "$(DESTDIR)$(docdir)/api"
+
+@COND_DOXYGEN_TRUE@clean-local:
+@COND_DOXYGEN_TRUE@ rm -rf "$(top_builddir)/doc/api"
+
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/src/liblzma/api/lzma.h b/src/liblzma/api/lzma.h
index de12f22..6ca6e50 100644
--- a/src/liblzma/api/lzma.h
+++ b/src/liblzma/api/lzma.h
@@ -1,31 +1,30 @@
+/* SPDX-License-Identifier: 0BSD */
+
/**
* \file api/lzma.h
* \brief The public API of liblzma data compression library
* \mainpage
*
- * liblzma is a public domain general-purpose data compression library with
- * a zlib-like API. The native file format is .xz, but also the old .lzma
- * format and raw (no headers) streams are supported. Multiple compression
- * algorithms (filters) are supported. Currently LZMA2 is the primary filter.
+ * liblzma is a general-purpose data compression library with a zlib-like API.
+ * The native file format is .xz, but also the old .lzma format and raw (no
+ * headers) streams are supported. Multiple compression algorithms (filters)
+ * are supported. Currently LZMA2 is the primary filter.
+ *
+ * liblzma is part of XZ Utils <https://tukaani.org/xz/>. XZ Utils
+ * includes a gzip-like command line tool named xz and some other tools.
+ * XZ Utils is developed and maintained by Lasse Collin.
*
- * liblzma is part of XZ Utils <https://tukaani.org/xz/>. XZ Utils includes
- * a gzip-like command line tool named xz and some other tools. XZ Utils
- * is developed and maintained by Lasse Collin and Jia Tan.
+ * Major parts of liblzma are based on code written by Igor Pavlov,
+ * specifically the LZMA SDK <https://7-zip.org/sdk.html>.
*
- * Major parts of liblzma are based on Igor Pavlov's public domain LZMA SDK
- * <https://7-zip.org/sdk.html>.
+ * The SHA-256 implementation in liblzma is based on code written by
+ * Wei Dai in Crypto++ Library <https://www.cryptopp.com/>.
*
- * The SHA-256 implementation is based on the public domain code found from
- * 7-Zip <https://7-zip.org/>, which has a modified version of the public
- * domain SHA-256 code found from Crypto++ <https://www.cryptopp.com/>.
- * The SHA-256 code in Crypto++ was written by Kevin Springle and Wei Dai.
+ * liblzma is distributed under the BSD Zero Clause License (0BSD).
*/
/*
* Author: Lasse Collin
- *
- * This file has been put into the public domain.
- * You can do whatever you want with this file.
*/
#ifndef LZMA_H
diff --git a/src/liblzma/api/lzma/base.h b/src/liblzma/api/lzma/base.h
index 75cdd72..590e1d2 100644
--- a/src/liblzma/api/lzma/base.h
+++ b/src/liblzma/api/lzma/base.h
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: 0BSD */
+
/**
* \file lzma/base.h
* \brief Data types and functions used in many places in liblzma API
@@ -6,9 +8,6 @@
/*
* Author: Lasse Collin
- *
- * This file has been put into the public domain.
- * You can do whatever you want with this file.
*/
#ifndef LZMA_H_INTERNAL
@@ -21,8 +20,8 @@
*
* This is here because C89 doesn't have stdbool.h. To set a value for
* variables having type lzma_bool, you can use
- * - C99's `true' and `false' from stdbool.h;
- * - C++'s internal `true' and `false'; or
+ * - C99's 'true' and 'false' from stdbool.h;
+ * - C++'s internal 'true' and 'false'; or
* - integers one (true) and zero (false).
*/
typedef unsigned char lzma_bool;
@@ -258,7 +257,7 @@ typedef enum {
*/
/*
- * These eumerations may be used internally by liblzma
+ * These enumerations may be used internally by liblzma
* but they will never be returned to applications.
*/
LZMA_RET_INTERNAL1 = 101,
@@ -273,13 +272,13 @@ typedef enum {
/**
- * \brief The `action' argument for lzma_code()
+ * \brief The 'action' argument for lzma_code()
*
* After the first use of LZMA_SYNC_FLUSH, LZMA_FULL_FLUSH, LZMA_FULL_BARRIER,
- * or LZMA_FINISH, the same `action' must be used until lzma_code() returns
+ * or LZMA_FINISH, the same 'action' must be used until lzma_code() returns
* LZMA_STREAM_END. Also, the amount of input (that is, strm->avail_in) must
* not be modified by the application until lzma_code() returns
- * LZMA_STREAM_END. Changing the `action' or modifying the amount of input
+ * LZMA_STREAM_END. Changing the 'action' or modifying the amount of input
* will make lzma_code() return LZMA_PROG_ERROR.
*/
typedef enum {
@@ -393,8 +392,8 @@ typedef enum {
* Single-threaded mode only: liblzma doesn't make an internal copy of
* lzma_allocator. Thus, it is OK to change these function pointers in
* the middle of the coding process, but obviously it must be done
- * carefully to make sure that the replacement `free' can deallocate
- * memory allocated by the earlier `alloc' function(s).
+ * carefully to make sure that the replacement 'free' can deallocate
+ * memory allocated by the earlier 'alloc' function(s).
*
* Multithreaded mode: liblzma might internally store pointers to the
* lzma_allocator given via the lzma_stream structure. The application
@@ -422,7 +421,7 @@ typedef struct {
* liblzma never sets this to zero.
*
* \return Pointer to the beginning of a memory block of
- * `size' bytes, or NULL if allocation fails
+ * 'size' bytes, or NULL if allocation fails
* for some reason. When allocation fails, functions
* of liblzma return LZMA_MEM_ERROR.
*
@@ -622,7 +621,7 @@ typedef struct {
* to and get output from liblzma.
*
* See the description of the coder-specific initialization function to find
- * out what `action' values are supported by the coder.
+ * out what 'action' values are supported by the coder.
*
* \param strm Pointer to lzma_stream that is at least initialized
* with LZMA_STREAM_INIT.
diff --git a/src/liblzma/api/lzma/bcj.h b/src/liblzma/api/lzma/bcj.h
index 0c84e0c..7f6611f 100644
--- a/src/liblzma/api/lzma/bcj.h
+++ b/src/liblzma/api/lzma/bcj.h
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: 0BSD */
+
/**
* \file lzma/bcj.h
* \brief Branch/Call/Jump conversion filters
@@ -6,9 +8,6 @@
/*
* Author: Lasse Collin
- *
- * This file has been put into the public domain.
- * You can do whatever you want with this file.
*/
#ifndef LZMA_H_INTERNAL
@@ -53,6 +52,11 @@
*/
#define LZMA_FILTER_ARM64 LZMA_VLI_C(0x0A)
+/**
+ * \brief Filter for RISC-V binaries
+ */
+#define LZMA_FILTER_RISCV LZMA_VLI_C(0x0B)
+
/**
* \brief Options for BCJ filters
diff --git a/src/liblzma/api/lzma/block.h b/src/liblzma/api/lzma/block.h
index ec5e77a..05b77e5 100644
--- a/src/liblzma/api/lzma/block.h
+++ b/src/liblzma/api/lzma/block.h
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: 0BSD */
+
/**
* \file lzma/block.h
* \brief .xz Block handling
@@ -6,9 +8,6 @@
/*
* Author: Lasse Collin
- *
- * This file has been put into the public domain.
- * You can do whatever you want with this file.
*/
#ifndef LZMA_H_INTERNAL
diff --git a/src/liblzma/api/lzma/check.h b/src/liblzma/api/lzma/check.h
index b37197d..e7a50ed 100644
--- a/src/liblzma/api/lzma/check.h
+++ b/src/liblzma/api/lzma/check.h
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: 0BSD */
+
/**
* \file lzma/check.h
* \brief Integrity checks
@@ -6,9 +8,6 @@
/*
* Author: Lasse Collin
- *
- * This file has been put into the public domain.
- * You can do whatever you want with this file.
*/
#ifndef LZMA_H_INTERNAL
diff --git a/src/liblzma/api/lzma/container.h b/src/liblzma/api/lzma/container.h
index 2849fbf..8e4af42 100644
--- a/src/liblzma/api/lzma/container.h
+++ b/src/liblzma/api/lzma/container.h
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: 0BSD */
+
/**
* \file lzma/container.h
* \brief File formats
@@ -6,9 +8,6 @@
/*
* Author: Lasse Collin
- *
- * This file has been put into the public domain.
- * You can do whatever you want with this file.
*/
#ifndef LZMA_H_INTERNAL
@@ -297,7 +296,7 @@ extern LZMA_API(uint64_t) lzma_easy_decoder_memusage(uint32_t preset)
* to call lzma_end() after failed initialization.
*
* If initialization succeeds, use lzma_code() to do the actual encoding.
- * Valid values for `action' (the second argument of lzma_code()) are
+ * Valid values for 'action' (the second argument of lzma_code()) are
* LZMA_RUN, LZMA_SYNC_FLUSH, LZMA_FULL_FLUSH, and LZMA_FINISH. In future,
* there may be compression levels or flags that don't support LZMA_SYNC_FLUSH.
*
@@ -436,6 +435,34 @@ extern LZMA_API(lzma_ret) lzma_stream_encoder_mt(
/**
+ * \brief Calculate recommended Block size for multithreaded .xz encoder
+ *
+ * This calculates a recommended Block size for multithreaded encoding given
+ * a filter chain. This is used internally by lzma_stream_encoder_mt() to
+ * determine the Block size if the block_size member is not set to the
+ * special value of 0 in the lzma_mt options struct.
+ *
+ * If one wishes to change the filters between Blocks, this function is
+ * helpful to set the block_size member of the lzma_mt struct before calling
+ * lzma_stream_encoder_mt(). Since the block_size member represents the
+ * maximum possible Block size for the multithreaded .xz encoder, one can
+ * use this function to find the maximum recommended Block size based on
+ * all planned filter chains. Otherwise, the multithreaded encoder will
+ * base its maximum Block size on the first filter chain used (if the
+ * block_size member is not set), which may unnecessarily limit the Block
+ * size for a later filter chain.
+ *
+ * \param filters Array of filters terminated with
+ * .id == LZMA_VLI_UNKNOWN.
+ *
+ * \return Recommended Block size in bytes, or UINT64_MAX if
+ * an error occurred.
+ */
+extern LZMA_API(uint64_t) lzma_mt_block_size(const lzma_filter *filters)
+ lzma_nothrow;
+
+
+/**
* \brief Initialize .lzma encoder (legacy file format)
*
* The .lzma format is sometimes called the LZMA_Alone format, which is the
@@ -651,13 +678,13 @@ extern LZMA_API(lzma_ret) lzma_microlzma_encoder(
* supported by liblzma, only the .xz and .lz formats allow concatenated
* files. Concatenated files are not allowed with the legacy .lzma format.
*
- * This flag also affects the usage of the `action' argument for lzma_code().
+ * This flag also affects the usage of the 'action' argument for lzma_code().
* When LZMA_CONCATENATED is used, lzma_code() won't return LZMA_STREAM_END
- * unless LZMA_FINISH is used as `action'. Thus, the application has to set
+ * unless LZMA_FINISH is used as 'action'. Thus, the application has to set
* LZMA_FINISH in the same way as it does when encoding.
*
* If LZMA_CONCATENATED is not used, the decoders still accept LZMA_FINISH
- * as `action' for lzma_code(), but the usage of LZMA_FINISH isn't required.
+ * as 'action' for lzma_code(), but the usage of LZMA_FINISH isn't required.
*/
#define LZMA_CONCATENATED UINT32_C(0x08)
@@ -765,7 +792,7 @@ extern LZMA_API(lzma_ret) lzma_stream_decoder_mt(
* as it doesn't support any decoder flags. It will return LZMA_STREAM_END
* after one .lzma stream.)
*
- * \param strm Pointer to lzma_stream that is at least initialized
+ * \param strm Pointer to lzma_stream that is at least initialized
* with LZMA_STREAM_INIT.
* \param memlimit Memory usage limit as bytes. Use UINT64_MAX
* to effectively disable the limiter. liblzma
@@ -791,7 +818,7 @@ extern LZMA_API(lzma_ret) lzma_auto_decoder(
/**
* \brief Initialize .lzma decoder (legacy file format)
*
- * Valid `action' arguments to lzma_code() are LZMA_RUN and LZMA_FINISH.
+ * Valid 'action' arguments to lzma_code() are LZMA_RUN and LZMA_FINISH.
* There is no need to use LZMA_FINISH, but it's allowed because it may
* simplify certain types of applications.
*
diff --git a/src/liblzma/api/lzma/delta.h b/src/liblzma/api/lzma/delta.h
index 7a725bc..5ebacef 100644
--- a/src/liblzma/api/lzma/delta.h
+++ b/src/liblzma/api/lzma/delta.h
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: 0BSD */
+
/**
* \file lzma/delta.h
* \brief Delta filter
@@ -6,9 +8,6 @@
/*
* Author: Lasse Collin
- *
- * This file has been put into the public domain.
- * You can do whatever you want with this file.
*/
#ifndef LZMA_H_INTERNAL
diff --git a/src/liblzma/api/lzma/filter.h b/src/liblzma/api/lzma/filter.h
index 1d887b4..e86809c 100644
--- a/src/liblzma/api/lzma/filter.h
+++ b/src/liblzma/api/lzma/filter.h
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: 0BSD */
+
/**
* \file lzma/filter.h
* \brief Common filter related types and functions
@@ -6,9 +8,6 @@
/*
* Author: Lasse Collin
- *
- * This file has been put into the public domain.
- * You can do whatever you want with this file.
*/
#ifndef LZMA_H_INTERNAL
@@ -43,7 +42,7 @@ typedef struct {
/**
* \brief Filter ID
*
- * Use constants whose name begin with `LZMA_FILTER_' to specify
+ * Use constants whose name begin with 'LZMA_FILTER_' to specify
* different filters. In an array of lzma_filter structures, use
* LZMA_VLI_UNKNOWN to indicate end of filters.
*
@@ -199,7 +198,7 @@ extern LZMA_API(uint64_t) lzma_raw_decoder_memusage(const lzma_filter *filters)
*
* This function may be useful when implementing custom file formats.
*
- * The `action' with lzma_code() can be LZMA_RUN, LZMA_SYNC_FLUSH (if the
+ * The 'action' with lzma_code() can be LZMA_RUN, LZMA_SYNC_FLUSH (if the
* filter chain supports it), or LZMA_FINISH.
*
* \param strm Pointer to lzma_stream that is at least
@@ -223,7 +222,7 @@ extern LZMA_API(lzma_ret) lzma_raw_encoder(
*
* The initialization of raw decoder goes similarly to raw encoder.
*
- * The `action' with lzma_code() can be LZMA_RUN or LZMA_FINISH. Using
+ * The 'action' with lzma_code() can be LZMA_RUN or LZMA_FINISH. Using
* LZMA_FINISH is not required, it is supported just for convenience.
*
* \param strm Pointer to lzma_stream that is at least
diff --git a/src/liblzma/api/lzma/hardware.h b/src/liblzma/api/lzma/hardware.h
index f34897d..7a1a84f 100644
--- a/src/liblzma/api/lzma/hardware.h
+++ b/src/liblzma/api/lzma/hardware.h
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: 0BSD */
+
/**
* \file lzma/hardware.h
* \brief Hardware information
@@ -23,9 +25,6 @@
/*
* Author: Lasse Collin
- *
- * This file has been put into the public domain.
- * You can do whatever you want with this file.
*/
#ifndef LZMA_H_INTERNAL
diff --git a/src/liblzma/api/lzma/index.h b/src/liblzma/api/lzma/index.h
index 6eee4d6..b17025e 100644
--- a/src/liblzma/api/lzma/index.h
+++ b/src/liblzma/api/lzma/index.h
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: 0BSD */
+
/**
* \file lzma/index.h
* \brief Handling of .xz Index and related information
@@ -6,9 +8,6 @@
/*
* Author: Lasse Collin
- *
- * This file has been put into the public domain.
- * You can do whatever you want with this file.
*/
#ifndef LZMA_H_INTERNAL
@@ -234,7 +233,7 @@ typedef struct {
} block;
/**
- * \private Internal struct.
+ * \private Internal data
*
* Internal data which is used to store the state of the iterator.
* The exact format may vary between liblzma versions, so don't
@@ -302,6 +301,28 @@ typedef enum {
/**
+ * \brief Mask for return value from lzma_index_checks() for check none
+ *
+ * \note This and the other CHECK_MASK macros were added in 5.5.1alpha.
+ */
+#define LZMA_INDEX_CHECK_MASK_NONE (UINT32_C(1) << LZMA_CHECK_NONE)
+
+/**
+ * \brief Mask for return value from lzma_index_checks() for check CRC32
+ */
+#define LZMA_INDEX_CHECK_MASK_CRC32 (UINT32_C(1) << LZMA_CHECK_CRC32)
+
+/**
+ * \brief Mask for return value from lzma_index_checks() for check CRC64
+ */
+#define LZMA_INDEX_CHECK_MASK_CRC64 (UINT32_C(1) << LZMA_CHECK_CRC64)
+
+/**
+ * \brief Mask for return value from lzma_index_checks() for check SHA256
+ */
+#define LZMA_INDEX_CHECK_MASK_SHA256 (UINT32_C(1) << LZMA_CHECK_SHA256)
+
+/**
* \brief Calculate memory usage of lzma_index
*
* On disk, the size of the Index field depends on both the number of Records
@@ -431,6 +452,7 @@ extern LZMA_API(lzma_ret) lzma_index_stream_flags(
* showing the Check types to the user.
*
* The bitmask is 1 << check_id, e.g. CRC32 is 1 << 1 and SHA-256 is 1 << 10.
+ * These masks are defined for convenience as LZMA_INDEX_CHECK_MASK_XXX
*
* \param i Pointer to lzma_index structure
*
@@ -651,7 +673,7 @@ extern LZMA_API(lzma_bool) lzma_index_iter_locate(
* function succeeds, the memory allocated for src
* is freed or moved to be part of dest, and all
* iterators pointing to src will become invalid.
-* \param allocator lzma_allocator for custom allocator functions.
+ * \param allocator lzma_allocator for custom allocator functions.
* Set to NULL to use malloc() and free().
*
* \return Possible lzma_ret values:
@@ -686,7 +708,7 @@ extern LZMA_API(lzma_index *) lzma_index_dup(
* \param strm Pointer to properly prepared lzma_stream
* \param i Pointer to lzma_index which should be encoded.
*
- * The valid `action' values for lzma_code() are LZMA_RUN and LZMA_FINISH.
+ * The valid 'action' values for lzma_code() are LZMA_RUN and LZMA_FINISH.
* It is enough to use only one of them (you can choose freely).
*
* \return Possible lzma_ret values:
@@ -715,7 +737,7 @@ extern LZMA_API(lzma_ret) lzma_index_encoder(
* don't allow 0 here and return LZMA_PROG_ERROR;
* later versions treat 0 as if 1 had been specified.
*
- * Valid `action' arguments to lzma_code() are LZMA_RUN and LZMA_FINISH.
+ * Valid 'action' arguments to lzma_code() are LZMA_RUN and LZMA_FINISH.
* There is no need to use LZMA_FINISH, but it's allowed because it may
* simplify certain types of applications.
*
@@ -771,7 +793,7 @@ extern LZMA_API(lzma_ret) lzma_index_buffer_encode(const lzma_index *i,
* lzma_index is allowed to require. The value
* pointed by this pointer is modified if and only
* if LZMA_MEMLIMIT_ERROR is returned.
- * \param allocator lzma_allocator for custom allocator functions.
+ * \param allocator lzma_allocator for custom allocator functions.
* Set to NULL to use malloc() and free().
* \param in Beginning of the input buffer
* \param in_pos The next byte will be read from in[*in_pos].
@@ -819,10 +841,10 @@ extern LZMA_API(lzma_ret) lzma_index_buffer_decode(lzma_index **i,
* expect to see the same exact value for the same file if you change the
* input buffer size or switch to a different liblzma version.
*
- * Valid `action' arguments to lzma_code() are LZMA_RUN and LZMA_FINISH.
+ * Valid 'action' arguments to lzma_code() are LZMA_RUN and LZMA_FINISH.
* You only need to use LZMA_RUN; LZMA_FINISH is only supported because it
* might be convenient for some applications. If you use LZMA_FINISH and if
- * lzma_code() asks the application to seek, remember to reset `action' back
+ * lzma_code() asks the application to seek, remember to reset 'action' back
* to LZMA_RUN unless you hit the end of the file again.
*
* Possible return values from lzma_code():
diff --git a/src/liblzma/api/lzma/index_hash.h b/src/liblzma/api/lzma/index_hash.h
index a2d4c48..68f9024 100644
--- a/src/liblzma/api/lzma/index_hash.h
+++ b/src/liblzma/api/lzma/index_hash.h
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: 0BSD */
+
/**
* \file lzma/index_hash.h
* \brief Validate Index by using a hash function
@@ -9,9 +11,6 @@
/*
* Author: Lasse Collin
- *
- * This file has been put into the public domain.
- * You can do whatever you want with this file.
*/
#ifndef LZMA_H_INTERNAL
diff --git a/src/liblzma/api/lzma/lzma12.h b/src/liblzma/api/lzma/lzma12.h
index 8ef6ea5..05f5b66 100644
--- a/src/liblzma/api/lzma/lzma12.h
+++ b/src/liblzma/api/lzma/lzma12.h
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: 0BSD */
+
/**
* \file lzma/lzma12.h
* \brief LZMA1 and LZMA2 filters
@@ -6,9 +8,6 @@
/*
* Author: Lasse Collin
- *
- * This file has been put into the public domain.
- * You can do whatever you want with this file.
*/
#ifndef LZMA_H_INTERNAL
@@ -289,7 +288,7 @@ typedef struct {
* \brief Number of literal context bits
*
* How many of the highest bits of the previous uncompressed
- * eight-bit byte (also known as `literal') are taken into
+ * eight-bit byte (also known as 'literal') are taken into
* account when predicting the bits of the next literal.
*
* E.g. in typical English text, an upper-case letter is
diff --git a/src/liblzma/api/lzma/stream_flags.h b/src/liblzma/api/lzma/stream_flags.h
index 7622a62..a33fe46 100644
--- a/src/liblzma/api/lzma/stream_flags.h
+++ b/src/liblzma/api/lzma/stream_flags.h
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: 0BSD */
+
/**
* \file lzma/stream_flags.h
* \brief .xz Stream Header and Stream Footer encoder and decoder
@@ -6,9 +8,6 @@
/*
* Author: Lasse Collin
- *
- * This file has been put into the public domain.
- * You can do whatever you want with this file.
*/
#ifndef LZMA_H_INTERNAL
diff --git a/src/liblzma/api/lzma/version.h b/src/liblzma/api/lzma/version.h
index 8dac382..53526b9 100644
--- a/src/liblzma/api/lzma/version.h
+++ b/src/liblzma/api/lzma/version.h
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: 0BSD */
+
/**
* \file lzma/version.h
* \brief Version number
@@ -6,9 +8,6 @@
/*
* Author: Lasse Collin
- *
- * This file has been put into the public domain.
- * You can do whatever you want with this file.
*/
#ifndef LZMA_H_INTERNAL
@@ -20,10 +19,10 @@
#define LZMA_VERSION_MAJOR 5
/** \brief Minor version number of the liblzma release. */
-#define LZMA_VERSION_MINOR 4
+#define LZMA_VERSION_MINOR 6
/** \brief Patch version number of the liblzma release. */
-#define LZMA_VERSION_PATCH 5
+#define LZMA_VERSION_PATCH 2
/**
* \brief Version stability marker
diff --git a/src/liblzma/api/lzma/vli.h b/src/liblzma/api/lzma/vli.h
index f9ad155..6b04902 100644
--- a/src/liblzma/api/lzma/vli.h
+++ b/src/liblzma/api/lzma/vli.h
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: 0BSD */
+
/**
* \file lzma/vli.h
* \brief Variable-length integer handling
@@ -17,9 +19,6 @@
/*
* Author: Lasse Collin
- *
- * This file has been put into the public domain.
- * You can do whatever you want with this file.
*/
#ifndef LZMA_H_INTERNAL
@@ -68,9 +67,8 @@ typedef uint64_t lzma_vli;
* This is useful to test that application has given acceptable values
* for example in the uncompressed_size and compressed_size variables.
*
- * \return True if the integer is representable as VLI or if it
- * indicates unknown value. False if the integer cannot be
- * represented as VLI.
+ * \return True if the integer is representable as a VLI or if it
+ * indicates an unknown value. False otherwise.
*/
#define lzma_vli_is_valid(vli) \
((vli) <= LZMA_VLI_MAX || (vli) == LZMA_VLI_UNKNOWN)
diff --git a/src/liblzma/check/Makefile.inc b/src/liblzma/check/Makefile.inc
index dc011a3..04cf1ff 100644
--- a/src/liblzma/check/Makefile.inc
+++ b/src/liblzma/check/Makefile.inc
@@ -1,9 +1,8 @@
-##
+## SPDX-License-Identifier: 0BSD
## Author: Lasse Collin
-##
-## This file has been put into the public domain.
-## You can do whatever you want with this file.
-##
+
+## Note: There is no check for COND_CHECK_CRC32 because
+## currently crc32 is always enabled.
EXTRA_DIST += \
check/crc32_tablegen.c \
@@ -12,9 +11,10 @@ EXTRA_DIST += \
liblzma_la_SOURCES += \
check/check.c \
check/check.h \
- check/crc_macros.h
+ check/crc_common.h \
+ check/crc_x86_clmul.h \
+ check/crc32_arm64.h
-if COND_CHECK_CRC32
if COND_SMALL
liblzma_la_SOURCES += check/crc32_small.c
else
@@ -28,7 +28,6 @@ else
liblzma_la_SOURCES += check/crc32_fast.c
endif
endif
-endif
if COND_CHECK_CRC64
if COND_SMALL
diff --git a/src/liblzma/check/check.c b/src/liblzma/check/check.c
index 428ddae..7734ace 100644
--- a/src/liblzma/check/check.c
+++ b/src/liblzma/check/check.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file check.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "check.h"
diff --git a/src/liblzma/check/check.h b/src/liblzma/check/check.h
index 8ae95d5..f0eb117 100644
--- a/src/liblzma/check/check.h
+++ b/src/liblzma/check/check.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file check.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_CHECK_H
diff --git a/src/liblzma/check/crc32_arm64.h b/src/liblzma/check/crc32_arm64.h
new file mode 100644
index 0000000..39c1c63
--- /dev/null
+++ b/src/liblzma/check/crc32_arm64.h
@@ -0,0 +1,122 @@
+// SPDX-License-Identifier: 0BSD
+
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file crc32_arm64.h
+/// \brief CRC32 calculation with ARM64 optimization
+//
+// Authors: Chenxi Mao
+// Jia Tan
+// Hans Jansen
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef LZMA_CRC32_ARM64_H
+#define LZMA_CRC32_ARM64_H
+
+// MSVC always has the CRC intrinsics available when building for ARM64
+// there is no need to include any header files.
+#ifndef _MSC_VER
+# include <arm_acle.h>
+#endif
+
+// If both versions are going to be built, we need runtime detection
+// to check if the instructions are supported.
+#if defined(CRC32_GENERIC) && defined(CRC32_ARCH_OPTIMIZED)
+# if defined(HAVE_GETAUXVAL) || defined(HAVE_ELF_AUX_INFO)
+# include <sys/auxv.h>
+# elif defined(_WIN32)
+# include <processthreadsapi.h>
+# elif defined(__APPLE__) && defined(HAVE_SYSCTLBYNAME)
+# include <sys/sysctl.h>
+# endif
+#endif
+
+// Some EDG-based compilers support ARM64 and define __GNUC__
+// (such as Nvidia's nvcc), but do not support function attributes.
+//
+// NOTE: Build systems check for this too, keep them in sync with this.
+#if (defined(__GNUC__) || defined(__clang__)) && !defined(__EDG__)
+# define crc_attr_target __attribute__((__target__("+crc")))
+#else
+# define crc_attr_target
+#endif
+
+
+crc_attr_target
+static uint32_t
+crc32_arch_optimized(const uint8_t *buf, size_t size, uint32_t crc)
+{
+ crc = ~crc;
+
+ // Align the input buffer because this was shown to be
+ // significantly faster than unaligned accesses.
+ const size_t align_amount = my_min(size, (0U - (uintptr_t)buf) & 7);
+
+ for (const uint8_t *limit = buf + align_amount; buf < limit; ++buf)
+ crc = __crc32b(crc, *buf);
+
+ size -= align_amount;
+
+ // Process 8 bytes at a time. The end point is determined by
+ // ignoring the least significant three bits of size to ensure
+ // we do not process past the bounds of the buffer. This guarantees
+ // that limit is a multiple of 8 and is strictly less than size.
+ for (const uint8_t *limit = buf + (size & ~(size_t)7);
+ buf < limit; buf += 8)
+ crc = __crc32d(crc, aligned_read64le(buf));
+
+ // Process the remaining bytes that are not 8 byte aligned.
+ for (const uint8_t *limit = buf + (size & 7); buf < limit; ++buf)
+ crc = __crc32b(crc, *buf);
+
+ return ~crc;
+}
+
+
+#if defined(CRC32_GENERIC) && defined(CRC32_ARCH_OPTIMIZED)
+static inline bool
+is_arch_extension_supported(void)
+{
+#if defined(HAVE_GETAUXVAL)
+ return (getauxval(AT_HWCAP) & HWCAP_CRC32) != 0;
+
+#elif defined(HAVE_ELF_AUX_INFO)
+ unsigned long feature_flags;
+
+ if (elf_aux_info(AT_HWCAP, &feature_flags, sizeof(feature_flags)) != 0)
+ return false;
+
+ return (feature_flags & HWCAP_CRC32) != 0;
+
+#elif defined(_WIN32)
+ return IsProcessorFeaturePresent(
+ PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE);
+
+#elif defined(__APPLE__) && defined(HAVE_SYSCTLBYNAME)
+ int has_crc32 = 0;
+ size_t size = sizeof(has_crc32);
+
+ // The sysctlbyname() function requires a string identifier for the
+ // CPU feature it tests. The Apple documentation lists the string
+ // "hw.optional.armv8_crc32", which can be found here:
+ // https://developer.apple.com/documentation/kernel/1387446-sysctlbyname/determining_instruction_set_characteristics#3915619
+ if (sysctlbyname("hw.optional.armv8_crc32", &has_crc32,
+ &size, NULL, 0) != 0)
+ return false;
+
+ return has_crc32;
+
+#else
+ // If a runtime detection method cannot be found, then this must
+ // be a compile time error. The checks in crc_common.h should ensure
+ // a runtime detection method is always found if this function is
+ // built. It would be possible to just return false here, but this
+ // is inefficient for binary size and runtime since only the generic
+ // method could ever be used.
+# error Runtime detection method unavailable.
+#endif
+}
+#endif
+
+#endif // LZMA_CRC32_ARM64_H
diff --git a/src/liblzma/check/crc32_fast.c b/src/liblzma/check/crc32_fast.c
index eed7350..16dbb74 100644
--- a/src/liblzma/check/crc32_fast.c
+++ b/src/liblzma/check/crc32_fast.c
@@ -1,35 +1,40 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file crc32.c
/// \brief CRC32 calculation
-///
-/// Calculate the CRC32 using the slice-by-eight algorithm.
-/// It is explained in this document:
-/// http://www.intel.com/technology/comms/perfnet/download/CRC_generators.pdf
-/// The code in this file is not the same as in Intel's paper, but
-/// the basic principle is identical.
-//
-// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
+// Authors: Lasse Collin
+// Ilya Kurdyukov
+// Hans Jansen
//
///////////////////////////////////////////////////////////////////////////////
#include "check.h"
-#include "crc_macros.h"
+#include "crc_common.h"
+
+#if defined(CRC_X86_CLMUL)
+# define BUILDING_CRC32_CLMUL
+# include "crc_x86_clmul.h"
+#elif defined(CRC32_ARM64)
+# include "crc32_arm64.h"
+#endif
-// If you make any changes, do some benchmarking! Seemingly unrelated
-// changes can very easily ruin the performance (and very probably is
-// very compiler dependent).
-extern LZMA_API(uint32_t)
-lzma_crc32(const uint8_t *buf, size_t size, uint32_t crc)
+#ifdef CRC32_GENERIC
+
+///////////////////
+// Generic CRC32 //
+///////////////////
+
+static uint32_t
+crc32_generic(const uint8_t *buf, size_t size, uint32_t crc)
{
crc = ~crc;
#ifdef WORDS_BIGENDIAN
- crc = bswap32(crc);
+ crc = byteswap32(crc);
#endif
if (size > 8) {
@@ -75,8 +80,125 @@ lzma_crc32(const uint8_t *buf, size_t size, uint32_t crc)
crc = lzma_crc32_table[0][*buf++ ^ A(crc)] ^ S8(crc);
#ifdef WORDS_BIGENDIAN
- crc = bswap32(crc);
+ crc = byteswap32(crc);
#endif
return ~crc;
}
+#endif
+
+
+#if defined(CRC32_GENERIC) && defined(CRC32_ARCH_OPTIMIZED)
+
+//////////////////////////
+// Function dispatching //
+//////////////////////////
+
+// If both the generic and arch-optimized implementations are built, then
+// the function to use is selected at runtime because the system running
+// the binary might not have the arch-specific instruction set extension(s)
+// available. The dispatch methods in order of priority:
+//
+// 1. Constructor. This method uses __attribute__((__constructor__)) to
+// set crc32_func at load time. This avoids extra computation (and any
+// unlikely threading bugs) on the first call to lzma_crc32() to decide
+// which implementation should be used.
+//
+// 2. First Call Resolution. On the very first call to lzma_crc32(), the
+// call will be directed to crc32_dispatch() instead. This will set the
+// appropriate implementation function and will not be called again.
+// This method does not use any kind of locking but is safe because if
+// multiple threads run the dispatcher simultaneously then they will all
+// set crc32_func to the same value.
+
+typedef uint32_t (*crc32_func_type)(
+ const uint8_t *buf, size_t size, uint32_t crc);
+
+// This resolver is shared between all dispatch methods.
+static crc32_func_type
+crc32_resolve(void)
+{
+ return is_arch_extension_supported()
+ ? &crc32_arch_optimized : &crc32_generic;
+}
+
+
+#ifdef HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR
+// Constructor method.
+# define CRC32_SET_FUNC_ATTR __attribute__((__constructor__))
+static crc32_func_type crc32_func;
+#else
+// First Call Resolution method.
+# define CRC32_SET_FUNC_ATTR
+static uint32_t crc32_dispatch(const uint8_t *buf, size_t size, uint32_t crc);
+static crc32_func_type crc32_func = &crc32_dispatch;
+#endif
+
+CRC32_SET_FUNC_ATTR
+static void
+crc32_set_func(void)
+{
+ crc32_func = crc32_resolve();
+ return;
+}
+
+#ifndef HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR
+static uint32_t
+crc32_dispatch(const uint8_t *buf, size_t size, uint32_t crc)
+{
+ // When __attribute__((__constructor__)) isn't supported, set the
+ // function pointer without any locking. If multiple threads run
+ // the detection code in parallel, they will all end up setting
+ // the pointer to the same value. This avoids the use of
+ // mythread_once() on every call to lzma_crc32() but this likely
+ // isn't strictly standards compliant. Let's change it if it breaks.
+ crc32_set_func();
+ return crc32_func(buf, size, crc);
+}
+
+#endif
+#endif
+
+
+extern LZMA_API(uint32_t)
+lzma_crc32(const uint8_t *buf, size_t size, uint32_t crc)
+{
+#if defined(CRC32_GENERIC) && defined(CRC32_ARCH_OPTIMIZED)
+ // On x86-64, if CLMUL is available, it is the best for non-tiny
+ // inputs, being over twice as fast as the generic slice-by-four
+ // version. However, for size <= 16 it's different. In the extreme
+ // case of size == 1 the generic version can be five times faster.
+ // At size >= 8 the CLMUL starts to become reasonable. It
+ // varies depending on the alignment of buf too.
+ //
+ // The above doesn't include the overhead of mythread_once().
+ // At least on x86-64 GNU/Linux, pthread_once() is very fast but
+ // it still makes lzma_crc32(buf, 1, crc) 50-100 % slower. When
+ // size reaches 12-16 bytes the overhead becomes negligible.
+ //
+ // So using the generic version for size <= 16 may give better
+ // performance with tiny inputs but if such inputs happen rarely
+ // it's not so obvious because then the lookup table of the
+ // generic version may not be in the processor cache.
+#ifdef CRC_USE_GENERIC_FOR_SMALL_INPUTS
+ if (size <= 16)
+ return crc32_generic(buf, size, crc);
+#endif
+
+/*
+#ifndef HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR
+ // See crc32_dispatch(). This would be the alternative which uses
+ // locking and doesn't use crc32_dispatch(). Note that on Windows
+ // this method needs Vista threads.
+ mythread_once(crc64_set_func);
+#endif
+*/
+ return crc32_func(buf, size, crc);
+
+#elif defined(CRC32_ARCH_OPTIMIZED)
+ return crc32_arch_optimized(buf, size, crc);
+
+#else
+ return crc32_generic(buf, size, crc);
+#endif
+}
diff --git a/src/liblzma/check/crc32_small.c b/src/liblzma/check/crc32_small.c
index 186966e..6a1bd66 100644
--- a/src/liblzma/check/crc32_small.c
+++ b/src/liblzma/check/crc32_small.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file crc32_small.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "check.h"
diff --git a/src/liblzma/check/crc32_table.c b/src/liblzma/check/crc32_table.c
index b11762a..c141cef 100644
--- a/src/liblzma/check/crc32_table.c
+++ b/src/liblzma/check/crc32_table.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file crc32_table.c
@@ -5,18 +7,36 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "common.h"
+
+// FIXME: Compared to crc_common.h this has to check for __x86_64__ too
+// so that in 32-bit builds crc32_x86.S won't break due to a missing table.
+#if defined(HAVE_USABLE_CLMUL) && ((defined(__x86_64__) && defined(__SSSE3__) \
+ && defined(__SSE4_1__) && defined(__PCLMUL__)) \
+ || (defined(__e2k__) && __iset__ >= 6))
+# define NO_CRC32_TABLE
+
+#elif defined(HAVE_ARM64_CRC32) \
+ && !defined(WORDS_BIGENDIAN) \
+ && defined(__ARM_FEATURE_CRC32)
+# define NO_CRC32_TABLE
+#endif
+
+
+#if !defined(HAVE_ENCODERS) && defined(NO_CRC32_TABLE)
+// No table needed. Use a typedef to avoid an empty translation unit.
+typedef void lzma_crc32_dummy;
+
+#else
// Having the declaration here silences clang -Wmissing-variable-declarations.
extern const uint32_t lzma_crc32_table[8][256];
-#ifdef WORDS_BIGENDIAN
-# include "crc32_table_be.h"
-#else
-# include "crc32_table_le.h"
+# ifdef WORDS_BIGENDIAN
+# include "crc32_table_be.h"
+# else
+# include "crc32_table_le.h"
+# endif
#endif
diff --git a/src/liblzma/check/crc32_table_be.h b/src/liblzma/check/crc32_table_be.h
index c483cb6..505c230 100644
--- a/src/liblzma/check/crc32_table_be.h
+++ b/src/liblzma/check/crc32_table_be.h
@@ -1,4 +1,6 @@
-/* This file has been automatically generated by crc32_tablegen.c. */
+// SPDX-License-Identifier: 0BSD
+
+// This file has been generated by crc32_tablegen.c.
const uint32_t lzma_crc32_table[8][256] = {
{
diff --git a/src/liblzma/check/crc32_table_le.h b/src/liblzma/check/crc32_table_le.h
index 25f4fc4..e89c21a 100644
--- a/src/liblzma/check/crc32_table_le.h
+++ b/src/liblzma/check/crc32_table_le.h
@@ -1,4 +1,6 @@
-/* This file has been automatically generated by crc32_tablegen.c. */
+// SPDX-License-Identifier: 0BSD
+
+// This file has been generated by crc32_tablegen.c.
const uint32_t lzma_crc32_table[8][256] = {
{
diff --git a/src/liblzma/check/crc32_tablegen.c b/src/liblzma/check/crc32_tablegen.c
index 31a4d27..b8cf459 100644
--- a/src/liblzma/check/crc32_tablegen.c
+++ b/src/liblzma/check/crc32_tablegen.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file crc32_tablegen.c
@@ -9,9 +11,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include <stdio.h>
@@ -44,7 +43,7 @@ init_crc32_table(void)
#ifdef WORDS_BIGENDIAN
for (size_t s = 0; s < 8; ++s)
for (size_t b = 0; b < 256; ++b)
- crc32_table[s][b] = bswap32(crc32_table[s][b]);
+ crc32_table[s][b] = byteswap32(crc32_table[s][b]);
#endif
return;
@@ -54,9 +53,11 @@ init_crc32_table(void)
static void
print_crc32_table(void)
{
- printf("/* This file has been automatically generated by "
- "crc32_tablegen.c. */\n\n"
- "const uint32_t lzma_crc32_table[8][256] = {\n\t{");
+ // Split the SPDX string so that it won't accidentally match
+ // when tools search for the string.
+ printf("// SPDX" "-License-Identifier" ": 0BSD\n\n"
+ "// This file has been generated by crc32_tablegen.c.\n\n"
+ "const uint32_t lzma_crc32_table[8][256] = {\n\t{");
for (size_t s = 0; s < 8; ++s) {
for (size_t b = 0; b < 256; ++b) {
@@ -82,9 +83,11 @@ print_crc32_table(void)
static void
print_lz_table(void)
{
- printf("/* This file has been automatically generated by "
- "crc32_tablegen.c. */\n\n"
- "const uint32_t lzma_lz_hash_table[256] = {");
+ // Split the SPDX string so that it won't accidentally match
+ // when tools search for the string.
+ printf("// SPDX" "-License-Identifier" ": 0BSD\n\n"
+ "// This file has been generated by crc32_tablegen.c.\n\n"
+ "const uint32_t lzma_lz_hash_table[256] = {");
for (size_t b = 0; b < 256; ++b) {
if ((b % 4) == 0)
diff --git a/src/liblzma/check/crc32_x86.S b/src/liblzma/check/crc32_x86.S
index 4f395df..ddc3cee 100644
--- a/src/liblzma/check/crc32_x86.S
+++ b/src/liblzma/check/crc32_x86.S
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: 0BSD */
+
/*
* Speed-optimized CRC32 using slicing-by-eight algorithm
*
@@ -11,9 +13,6 @@
* Authors: Igor Pavlov (original version)
* Lasse Collin (AT&T syntax, PIC support, better portability)
*
- * This file has been put into the public domain.
- * You can do whatever you want with this file.
- *
* This code needs lzma_crc32_table, which can be created using the
* following C code:
diff --git a/src/liblzma/check/crc64_fast.c b/src/liblzma/check/crc64_fast.c
index 0c8622a..0ce83fe 100644
--- a/src/liblzma/check/crc64_fast.c
+++ b/src/liblzma/check/crc64_fast.c
@@ -1,85 +1,30 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file crc64.c
/// \brief CRC64 calculation
-///
-/// There are two methods in this file. crc64_generic uses the
-/// the slice-by-four algorithm. This is the same idea that is
-/// used in crc32_fast.c, but for CRC64 we use only four tables
-/// instead of eight to avoid increasing CPU cache usage.
-///
-/// crc64_clmul uses 32/64-bit x86 SSSE3, SSE4.1, and CLMUL instructions.
-/// It was derived from
-/// https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/fast-crc-computation-generic-polynomials-pclmulqdq-paper.pdf
-/// and the public domain code from https://github.com/rawrunprotected/crc
-/// (URLs were checked on 2022-11-07).
-///
-/// FIXME: Builds for 32-bit x86 use crc64_x86.S by default instead
-/// of this file and thus CLMUL version isn't available on 32-bit x86
-/// unless configured with --disable-assembler. Even then the lookup table
-/// isn't omitted in crc64_table.c since it doesn't know that assembly
-/// code has been disabled.
//
// Authors: Lasse Collin
// Ilya Kurdyukov
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "check.h"
+#include "crc_common.h"
-#undef CRC_GENERIC
-#undef CRC_CLMUL
-#undef CRC_USE_GENERIC_FOR_SMALL_INPUTS
-
-// If CLMUL cannot be used then only the generic slice-by-four is built.
-#if !defined(HAVE_USABLE_CLMUL)
-# define CRC_GENERIC 1
-
-// If CLMUL is allowed unconditionally in the compiler options then the
-// generic version can be omitted. Note that this doesn't work with MSVC
-// as I don't know how to detect the features here.
-//
-// NOTE: Keep this this in sync with crc64_table.c.
-#elif (defined(__SSSE3__) && defined(__SSE4_1__) && defined(__PCLMUL__)) \
- || (defined(__e2k__) && __iset__ >= 6)
-# define CRC_CLMUL 1
-
-// Otherwise build both and detect at runtime which version to use.
-#else
-# define CRC_GENERIC 1
-# define CRC_CLMUL 1
-
-/*
- // The generic code is much faster with 1-8-byte inputs and has
- // similar performance up to 16 bytes at least in microbenchmarks
- // (it depends on input buffer alignment too). If both versions are
- // built, this #define will use the generic version for inputs up to
- // 16 bytes and CLMUL for bigger inputs. It saves a little in code
- // size since the special cases for 0-16-byte inputs will be omitted
- // from the CLMUL code.
-# define CRC_USE_GENERIC_FOR_SMALL_INPUTS 1
-*/
-
-# if defined(_MSC_VER)
-# include <intrin.h>
-# elif defined(HAVE_CPUID_H)
-# include <cpuid.h>
-# endif
+#if defined(CRC_X86_CLMUL)
+# define BUILDING_CRC64_CLMUL
+# include "crc_x86_clmul.h"
#endif
+#ifdef CRC64_GENERIC
+
/////////////////////////////////
// Generic slice-by-four CRC64 //
/////////////////////////////////
-#ifdef CRC_GENERIC
-
-#include "crc_macros.h"
-
-
#ifdef WORDS_BIGENDIAN
# define A1(x) ((x) >> 56)
#else
@@ -94,7 +39,7 @@ crc64_generic(const uint8_t *buf, size_t size, uint64_t crc)
crc = ~crc;
#ifdef WORDS_BIGENDIAN
- crc = bswap64(crc);
+ crc = byteswap64(crc);
#endif
if (size > 4) {
@@ -128,7 +73,7 @@ crc64_generic(const uint8_t *buf, size_t size, uint64_t crc)
crc = lzma_crc64_table[0][*buf++ ^ A1(crc)] ^ S8(crc);
#ifdef WORDS_BIGENDIAN
- crc = bswap64(crc);
+ crc = byteswap64(crc);
#endif
return ~crc;
@@ -136,336 +81,40 @@ crc64_generic(const uint8_t *buf, size_t size, uint64_t crc)
#endif
-/////////////////////
-// x86 CLMUL CRC64 //
-/////////////////////
-
-#ifdef CRC_CLMUL
-
-#include <immintrin.h>
-
-
-/*
-// These functions were used to generate the constants
-// at the top of crc64_clmul().
-static uint64_t
-calc_lo(uint64_t poly)
-{
- uint64_t a = poly;
- uint64_t b = 0;
-
- for (unsigned i = 0; i < 64; ++i) {
- b = (b >> 1) | (a << 63);
- a = (a >> 1) ^ (a & 1 ? poly : 0);
- }
-
- return b;
-}
-
-static uint64_t
-calc_hi(uint64_t poly, uint64_t a)
-{
- for (unsigned i = 0; i < 64; ++i)
- a = (a >> 1) ^ (a & 1 ? poly : 0);
-
- return a;
-}
-*/
-
-
-#define MASK_L(in, mask, r) \
- r = _mm_shuffle_epi8(in, mask)
-
-#define MASK_H(in, mask, r) \
- r = _mm_shuffle_epi8(in, _mm_xor_si128(mask, vsign))
-
-#define MASK_LH(in, mask, low, high) \
- MASK_L(in, mask, low); \
- MASK_H(in, mask, high)
-
-
-// MSVC (VS2015 - VS2022) produces bad 32-bit x86 code from the CLMUL CRC
-// code when optimizations are enabled (release build). According to the bug
-// report, the ebx register is corrupted and the calculated result is wrong.
-// Trying to workaround the problem with "__asm mov ebx, ebx" didn't help.
-// The following pragma works and performance is still good. x86-64 builds
-// aren't affected by this problem.
-//
-// NOTE: Another pragma after the function restores the optimizations.
-// If the #if condition here is updated, the other one must be updated too.
-#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && !defined(__clang__) \
- && defined(_M_IX86)
-# pragma optimize("g", off)
-#endif
-
-// EDG-based compilers (Intel's classic compiler and compiler for E2K) can
-// define __GNUC__ but the attribute must not be used with them.
-// The new Clang-based ICX needs the attribute.
-//
-// NOTE: Build systems check for this too, keep them in sync with this.
-#if (defined(__GNUC__) || defined(__clang__)) && !defined(__EDG__)
-__attribute__((__target__("ssse3,sse4.1,pclmul")))
-#endif
-// The intrinsics use 16-byte-aligned reads from buf, thus they may read
-// up to 15 bytes before or after the buffer (depending on the alignment
-// of the buf argument). The values of the extra bytes are ignored.
-// This unavoidably trips -fsanitize=address so address sanitizier has
-// to be disabled for this function.
-#if lzma_has_attribute(__no_sanitize_address__)
-__attribute__((__no_sanitize_address__))
-#endif
-static uint64_t
-crc64_clmul(const uint8_t *buf, size_t size, uint64_t crc)
-{
- // The prototypes of the intrinsics use signed types while most of
- // the values are treated as unsigned here. These warnings in this
- // function have been checked and found to be harmless so silence them.
-#if TUKLIB_GNUC_REQ(4, 6) || defined(__clang__)
-# pragma GCC diagnostic push
-# pragma GCC diagnostic ignored "-Wsign-conversion"
-# pragma GCC diagnostic ignored "-Wconversion"
-#endif
-
-#ifndef CRC_USE_GENERIC_FOR_SMALL_INPUTS
- // The code assumes that there is at least one byte of input.
- if (size == 0)
- return crc;
-#endif
-
- // const uint64_t poly = 0xc96c5795d7870f42; // CRC polynomial
- const uint64_t p = 0x92d8af2baf0e1e85; // (poly << 1) | 1
- const uint64_t mu = 0x9c3e466c172963d5; // (calc_lo(poly) << 1) | 1
- const uint64_t k2 = 0xdabe95afc7875f40; // calc_hi(poly, 1)
- const uint64_t k1 = 0xe05dd497ca393ae4; // calc_hi(poly, k2)
- const __m128i vfold0 = _mm_set_epi64x(p, mu);
- const __m128i vfold1 = _mm_set_epi64x(k2, k1);
-
- // Create a vector with 8-bit values 0 to 15. This is used to
- // construct control masks for _mm_blendv_epi8 and _mm_shuffle_epi8.
- const __m128i vramp = _mm_setr_epi32(
- 0x03020100, 0x07060504, 0x0b0a0908, 0x0f0e0d0c);
-
- // This is used to inverse the control mask of _mm_shuffle_epi8
- // so that bytes that wouldn't be picked with the original mask
- // will be picked and vice versa.
- const __m128i vsign = _mm_set1_epi8(0x80);
-
- // Memory addresses A to D and the distances between them:
- //
- // A B C D
- // [skip_start][size][skip_end]
- // [ size2 ]
- //
- // A and D are 16-byte aligned. B and C are 1-byte aligned.
- // skip_start and skip_end are 0-15 bytes. size is at least 1 byte.
- //
- // A = aligned_buf will initially point to this address.
- // B = The address pointed by the caller-supplied buf.
- // C = buf + size == aligned_buf + size2
- // D = buf + size + skip_end == aligned_buf + size2 + skip_end
- const size_t skip_start = (size_t)((uintptr_t)buf & 15);
- const size_t skip_end = (size_t)((0U - (uintptr_t)(buf + size)) & 15);
- const __m128i *aligned_buf = (const __m128i *)(
- (uintptr_t)buf & ~(uintptr_t)15);
-
- // If size2 <= 16 then the whole input fits into a single 16-byte
- // vector. If size2 > 16 then at least two 16-byte vectors must
- // be processed. If size2 > 16 && size <= 16 then there is only
- // one 16-byte vector's worth of input but it is unaligned in memory.
- //
- // NOTE: There is no integer overflow here if the arguments are valid.
- // If this overflowed, buf + size would too.
- size_t size2 = skip_start + size;
-
- // Masks to be used with _mm_blendv_epi8 and _mm_shuffle_epi8:
- // The first skip_start or skip_end bytes in the vectors will have
- // the high bit (0x80) set. _mm_blendv_epi8 and _mm_shuffle_epi8
- // will produce zeros for these positions. (Bitwise-xor of these
- // masks with vsign will produce the opposite behavior.)
- const __m128i mask_start
- = _mm_sub_epi8(vramp, _mm_set1_epi8(skip_start));
- const __m128i mask_end = _mm_sub_epi8(vramp, _mm_set1_epi8(skip_end));
-
- // Get the first 1-16 bytes into data0. If loading less than 16 bytes,
- // the bytes are loaded to the high bits of the vector and the least
- // significant positions are filled with zeros.
- const __m128i data0 = _mm_blendv_epi8(_mm_load_si128(aligned_buf),
- _mm_setzero_si128(), mask_start);
- ++aligned_buf;
-
-#if defined(__i386__) || defined(_M_IX86)
- const __m128i initial_crc = _mm_set_epi64x(0, ~crc);
-#else
- // GCC and Clang would produce good code with _mm_set_epi64x
- // but MSVC needs _mm_cvtsi64_si128 on x86-64.
- const __m128i initial_crc = _mm_cvtsi64_si128(~crc);
-#endif
+#if defined(CRC64_GENERIC) && defined(CRC64_ARCH_OPTIMIZED)
- __m128i v0, v1, v2, v3;
-
-#ifndef CRC_USE_GENERIC_FOR_SMALL_INPUTS
- if (size <= 16) {
- // Right-shift initial_crc by 1-16 bytes based on "size"
- // and store the result in v1 (high bytes) and v0 (low bytes).
- //
- // NOTE: The highest 8 bytes of initial_crc are zeros so
- // v1 will be filled with zeros if size >= 8. The highest 8
- // bytes of v1 will always become zeros.
- //
- // [ v1 ][ v0 ]
- // [ initial_crc ] size == 1
- // [ initial_crc ] size == 2
- // [ initial_crc ] size == 15
- // [ initial_crc ] size == 16 (all in v0)
- const __m128i mask_low = _mm_add_epi8(
- vramp, _mm_set1_epi8(size - 16));
- MASK_LH(initial_crc, mask_low, v0, v1);
-
- if (size2 <= 16) {
- // There are 1-16 bytes of input and it is all
- // in data0. Copy the input bytes to v3. If there
- // are fewer than 16 bytes, the low bytes in v3
- // will be filled with zeros. That is, the input
- // bytes are stored to the same position as
- // (part of) initial_crc is in v0.
- MASK_L(data0, mask_end, v3);
- } else {
- // There are 2-16 bytes of input but not all bytes
- // are in data0.
- const __m128i data1 = _mm_load_si128(aligned_buf);
-
- // Collect the 2-16 input bytes from data0 and data1
- // to v2 and v3, and bitwise-xor them with the
- // low bits of initial_crc in v0. Note that the
- // the second xor is below this else-block as it
- // is shared with the other branch.
- MASK_H(data0, mask_end, v2);
- MASK_L(data1, mask_end, v3);
- v0 = _mm_xor_si128(v0, v2);
- }
+//////////////////////////
+// Function dispatching //
+//////////////////////////
- v0 = _mm_xor_si128(v0, v3);
- v1 = _mm_alignr_epi8(v1, v0, 8);
- } else
-#endif
- {
- const __m128i data1 = _mm_load_si128(aligned_buf);
- MASK_LH(initial_crc, mask_start, v0, v1);
- v0 = _mm_xor_si128(v0, data0);
- v1 = _mm_xor_si128(v1, data1);
-
-#define FOLD \
- v1 = _mm_xor_si128(v1, _mm_clmulepi64_si128(v0, vfold1, 0x00)); \
- v0 = _mm_xor_si128(v1, _mm_clmulepi64_si128(v0, vfold1, 0x11));
-
- while (size2 > 32) {
- ++aligned_buf;
- size2 -= 16;
- FOLD
- v1 = _mm_load_si128(aligned_buf);
- }
-
- if (size2 < 32) {
- MASK_H(v0, mask_end, v2);
- MASK_L(v0, mask_end, v0);
- MASK_L(v1, mask_end, v3);
- v1 = _mm_or_si128(v2, v3);
- }
-
- FOLD
- v1 = _mm_srli_si128(v0, 8);
-#undef FOLD
- }
+// If both the generic and arch-optimized implementations are usable, then
+// the function that is used is selected at runtime. See crc32_fast.c.
- v1 = _mm_xor_si128(_mm_clmulepi64_si128(v0, vfold1, 0x10), v1);
- v0 = _mm_clmulepi64_si128(v1, vfold0, 0x00);
- v2 = _mm_clmulepi64_si128(v0, vfold0, 0x10);
- v0 = _mm_xor_si128(_mm_xor_si128(v2, _mm_slli_si128(v0, 8)), v1);
+typedef uint64_t (*crc64_func_type)(
+ const uint8_t *buf, size_t size, uint64_t crc);
-#if defined(__i386__) || defined(_M_IX86)
- return ~(((uint64_t)(uint32_t)_mm_extract_epi32(v0, 3) << 32) |
- (uint64_t)(uint32_t)_mm_extract_epi32(v0, 2));
-#else
- return ~(uint64_t)_mm_extract_epi64(v0, 1);
-#endif
-
-#if TUKLIB_GNUC_REQ(4, 6) || defined(__clang__)
-# pragma GCC diagnostic pop
-#endif
-}
-#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && !defined(__clang__) \
- && defined(_M_IX86)
-# pragma optimize("", on)
-#endif
-#endif
-
-
-////////////////////////
-// Detect CPU support //
-////////////////////////
-
-#if defined(CRC_GENERIC) && defined(CRC_CLMUL)
-static inline bool
-is_clmul_supported(void)
+static crc64_func_type
+crc64_resolve(void)
{
- int success = 1;
- uint32_t r[4]; // eax, ebx, ecx, edx
-
-#if defined(_MSC_VER)
- // This needs <intrin.h> with MSVC. ICC has it as a built-in
- // on all platforms.
- __cpuid(r, 1);
-#elif defined(HAVE_CPUID_H)
- // Compared to just using __asm__ to run CPUID, this also checks
- // that CPUID is supported and saves and restores ebx as that is
- // needed with GCC < 5 with position-independent code (PIC).
- success = __get_cpuid(1, &r[0], &r[1], &r[2], &r[3]);
-#else
- // Just a fallback that shouldn't be needed.
- __asm__("cpuid\n\t"
- : "=a"(r[0]), "=b"(r[1]), "=c"(r[2]), "=d"(r[3])
- : "a"(1), "c"(0));
-#endif
-
- // Returns true if these are supported:
- // CLMUL (bit 1 in ecx)
- // SSSE3 (bit 9 in ecx)
- // SSE4.1 (bit 19 in ecx)
- const uint32_t ecx_mask = (1 << 1) | (1 << 9) | (1 << 19);
- return success && (r[2] & ecx_mask) == ecx_mask;
-
- // Alternative methods that weren't used:
- // - ICC's _may_i_use_cpu_feature: the other methods should work too.
- // - GCC >= 6 / Clang / ICX __builtin_cpu_supports("pclmul")
- //
- // CPUID decding is needed with MSVC anyway and older GCC. This keeps
- // the feature checks in the build system simpler too. The nice thing
- // about __builtin_cpu_supports would be that it generates very short
- // code as is it only reads a variable set at startup but a few bytes
- // doesn't matter here.
+ return is_arch_extension_supported()
+ ? &crc64_arch_optimized : &crc64_generic;
}
-
#ifdef HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR
-# define CRC64_FUNC_INIT
# define CRC64_SET_FUNC_ATTR __attribute__((__constructor__))
+static crc64_func_type crc64_func;
#else
-# define CRC64_FUNC_INIT = &crc64_dispatch
# define CRC64_SET_FUNC_ATTR
static uint64_t crc64_dispatch(const uint8_t *buf, size_t size, uint64_t crc);
+static crc64_func_type crc64_func = &crc64_dispatch;
#endif
-// Pointer to the the selected CRC64 method.
-static uint64_t (*crc64_func)(const uint8_t *buf, size_t size, uint64_t crc)
- CRC64_FUNC_INIT;
-
-
CRC64_SET_FUNC_ATTR
static void
crc64_set_func(void)
{
- crc64_func = is_clmul_supported() ? &crc64_clmul : &crc64_generic;
+ crc64_func = crc64_resolve();
return;
}
@@ -474,12 +123,6 @@ crc64_set_func(void)
static uint64_t
crc64_dispatch(const uint8_t *buf, size_t size, uint64_t crc)
{
- // When __attribute__((__constructor__)) isn't supported, set the
- // function pointer without any locking. If multiple threads run
- // the detection code in parallel, they will all end up setting
- // the pointer to the same value. This avoids the use of
- // mythread_once() on every call to lzma_crc64() but this likely
- // isn't strictly standards compliant. Let's change it if it breaks.
crc64_set_func();
return crc64_func(buf, size, crc);
}
@@ -490,47 +133,22 @@ crc64_dispatch(const uint8_t *buf, size_t size, uint64_t crc)
extern LZMA_API(uint64_t)
lzma_crc64(const uint8_t *buf, size_t size, uint64_t crc)
{
-#if defined(CRC_GENERIC) && defined(CRC_CLMUL)
- // If CLMUL is available, it is the best for non-tiny inputs,
- // being over twice as fast as the generic slice-by-four version.
- // However, for size <= 16 it's different. In the extreme case
- // of size == 1 the generic version can be five times faster.
- // At size >= 8 the CLMUL starts to become reasonable. It
- // varies depending on the alignment of buf too.
- //
- // The above doesn't include the overhead of mythread_once().
- // At least on x86-64 GNU/Linux, pthread_once() is very fast but
- // it still makes lzma_crc64(buf, 1, crc) 50-100 % slower. When
- // size reaches 12-16 bytes the overhead becomes negligible.
- //
- // So using the generic version for size <= 16 may give better
- // performance with tiny inputs but if such inputs happen rarely
- // it's not so obvious because then the lookup table of the
- // generic version may not be in the processor cache.
+#if defined(CRC64_GENERIC) && defined(CRC64_ARCH_OPTIMIZED)
+
#ifdef CRC_USE_GENERIC_FOR_SMALL_INPUTS
if (size <= 16)
return crc64_generic(buf, size, crc);
#endif
-
-/*
-#ifndef HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR
- // See crc64_dispatch(). This would be the alternative which uses
- // locking and doesn't use crc64_dispatch(). Note that on Windows
- // this method needs Vista threads.
- mythread_once(crc64_set_func);
-#endif
-*/
-
return crc64_func(buf, size, crc);
-#elif defined(CRC_CLMUL)
- // If CLMUL is used unconditionally without runtime CPU detection
- // then omitting the generic version and its 8 KiB lookup table
- // makes the library smaller.
+#elif defined(CRC64_ARCH_OPTIMIZED)
+ // If arch-optimized version is used unconditionally without runtime
+ // CPU detection then omitting the generic version and its 8 KiB
+ // lookup table makes the library smaller.
//
// FIXME: Lookup table isn't currently omitted on 32-bit x86,
// see crc64_table.c.
- return crc64_clmul(buf, size, crc);
+ return crc64_arch_optimized(buf, size, crc);
#else
return crc64_generic(buf, size, crc);
diff --git a/src/liblzma/check/crc64_small.c b/src/liblzma/check/crc64_small.c
index 420f7cf..ee4ea26 100644
--- a/src/liblzma/check/crc64_small.c
+++ b/src/liblzma/check/crc64_small.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file crc64_small.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "check.h"
diff --git a/src/liblzma/check/crc64_table.c b/src/liblzma/check/crc64_table.c
index 688e527..78e4275 100644
--- a/src/liblzma/check/crc64_table.c
+++ b/src/liblzma/check/crc64_table.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file crc64_table.c
@@ -5,19 +7,21 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "common.h"
-// FIXME: Compared to crc64_fast.c this has to check for __x86_64__ too
+// FIXME: Compared to crc_common.h this has to check for __x86_64__ too
// so that in 32-bit builds crc64_x86.S won't break due to a missing table.
-#if (defined(__x86_64__) && defined(__SSSE3__) \
+#if defined(HAVE_USABLE_CLMUL) && ((defined(__x86_64__) && defined(__SSSE3__) \
&& defined(__SSE4_1__) && defined(__PCLMUL__)) \
- || (defined(__e2k__) && __iset__ >= 6)
+ || (defined(__e2k__) && __iset__ >= 6))
+# define NO_CRC64_TABLE
+#endif
+
+
+#ifdef NO_CRC64_TABLE
// No table needed. Use a typedef to avoid an empty translation unit.
typedef void lzma_crc64_dummy;
diff --git a/src/liblzma/check/crc64_table_be.h b/src/liblzma/check/crc64_table_be.h
index ea074f3..db76cc7 100644
--- a/src/liblzma/check/crc64_table_be.h
+++ b/src/liblzma/check/crc64_table_be.h
@@ -1,4 +1,6 @@
-/* This file has been automatically generated by crc64_tablegen.c. */
+// SPDX-License-Identifier: 0BSD
+
+// This file has been generated by crc64_tablegen.c.
const uint64_t lzma_crc64_table[4][256] = {
{
diff --git a/src/liblzma/check/crc64_table_le.h b/src/liblzma/check/crc64_table_le.h
index 1196b31..e40a8c8 100644
--- a/src/liblzma/check/crc64_table_le.h
+++ b/src/liblzma/check/crc64_table_le.h
@@ -1,4 +1,6 @@
-/* This file has been automatically generated by crc64_tablegen.c. */
+// SPDX-License-Identifier: 0BSD
+
+// This file has been generated by crc64_tablegen.c.
const uint64_t lzma_crc64_table[4][256] = {
{
diff --git a/src/liblzma/check/crc64_tablegen.c b/src/liblzma/check/crc64_tablegen.c
index fddaa7e..2035127 100644
--- a/src/liblzma/check/crc64_tablegen.c
+++ b/src/liblzma/check/crc64_tablegen.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file crc64_tablegen.c
@@ -8,9 +10,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include <stdio.h>
@@ -43,7 +42,7 @@ init_crc64_table(void)
#ifdef WORDS_BIGENDIAN
for (size_t s = 0; s < 4; ++s)
for (size_t b = 0; b < 256; ++b)
- crc64_table[s][b] = bswap64(crc64_table[s][b]);
+ crc64_table[s][b] = byteswap64(crc64_table[s][b]);
#endif
return;
@@ -53,9 +52,11 @@ init_crc64_table(void)
static void
print_crc64_table(void)
{
- printf("/* This file has been automatically generated by "
- "crc64_tablegen.c. */\n\n"
- "const uint64_t lzma_crc64_table[4][256] = {\n\t{");
+ // Split the SPDX string so that it won't accidentally match
+ // when tools search for the string.
+ printf("// SPDX" "-License-Identifier" ": 0BSD\n\n"
+ "// This file has been generated by crc64_tablegen.c.\n\n"
+ "const uint64_t lzma_crc64_table[4][256] = {\n\t{");
for (size_t s = 0; s < 4; ++s) {
for (size_t b = 0; b < 256; ++b) {
diff --git a/src/liblzma/check/crc64_x86.S b/src/liblzma/check/crc64_x86.S
index 9aecf58..47f6081 100644
--- a/src/liblzma/check/crc64_x86.S
+++ b/src/liblzma/check/crc64_x86.S
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: 0BSD */
+
/*
* Speed-optimized CRC64 using slicing-by-four algorithm
*
@@ -7,9 +9,6 @@
* Authors: Igor Pavlov (original CRC32 assembly code)
* Lasse Collin (CRC64 adaptation of the modified CRC32 code)
*
- * This file has been put into the public domain.
- * You can do whatever you want with this file.
- *
* This code needs lzma_crc64_table, which can be created using the
* following C code:
diff --git a/src/liblzma/check/crc_common.h b/src/liblzma/check/crc_common.h
new file mode 100644
index 0000000..63a7b5c
--- /dev/null
+++ b/src/liblzma/check/crc_common.h
@@ -0,0 +1,137 @@
+// SPDX-License-Identifier: 0BSD
+
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file crc_common.h
+/// \brief Some functions and macros for CRC32 and CRC64
+//
+// Authors: Lasse Collin
+// Ilya Kurdyukov
+// Hans Jansen
+// Jia Tan
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef LZMA_CRC_COMMON_H
+#define LZMA_CRC_COMMON_H
+
+#include "common.h"
+
+
+#ifdef WORDS_BIGENDIAN
+# define A(x) ((x) >> 24)
+# define B(x) (((x) >> 16) & 0xFF)
+# define C(x) (((x) >> 8) & 0xFF)
+# define D(x) ((x) & 0xFF)
+
+# define S8(x) ((x) << 8)
+# define S32(x) ((x) << 32)
+
+#else
+# define A(x) ((x) & 0xFF)
+# define B(x) (((x) >> 8) & 0xFF)
+# define C(x) (((x) >> 16) & 0xFF)
+# define D(x) ((x) >> 24)
+
+# define S8(x) ((x) >> 8)
+# define S32(x) ((x) >> 32)
+#endif
+
+
+// CRC CLMUL code needs this because accessing input buffers that aren't
+// aligned to the vector size will inherently trip the address sanitizer.
+#if lzma_has_attribute(__no_sanitize_address__)
+# define crc_attr_no_sanitize_address \
+ __attribute__((__no_sanitize_address__))
+#else
+# define crc_attr_no_sanitize_address
+#endif
+
+// Keep this in sync with changes to crc32_arm64.h
+#if defined(_WIN32) || defined(HAVE_GETAUXVAL) \
+ || defined(HAVE_ELF_AUX_INFO) \
+ || (defined(__APPLE__) && defined(HAVE_SYSCTLBYNAME))
+# define ARM64_RUNTIME_DETECTION 1
+#endif
+
+
+#undef CRC32_GENERIC
+#undef CRC64_GENERIC
+
+#undef CRC32_ARCH_OPTIMIZED
+#undef CRC64_ARCH_OPTIMIZED
+
+// The x86 CLMUL is used for both CRC32 and CRC64.
+#undef CRC_X86_CLMUL
+
+#undef CRC32_ARM64
+#undef CRC64_ARM64_CLMUL
+
+#undef CRC_USE_GENERIC_FOR_SMALL_INPUTS
+
+// ARM64 CRC32 instruction is only useful for CRC32. Currently, only
+// little endian is supported since we were unable to test on a big
+// endian machine.
+//
+// NOTE: Keep this and the next check in sync with the macro
+// NO_CRC32_TABLE in crc32_table.c
+#if defined(HAVE_ARM64_CRC32) && !defined(WORDS_BIGENDIAN)
+// Allow ARM64 CRC32 instruction without a runtime check if
+// __ARM_FEATURE_CRC32 is defined. GCC and Clang only define this if the
+// proper compiler options are used.
+# if defined(__ARM_FEATURE_CRC32)
+# define CRC32_ARCH_OPTIMIZED 1
+# define CRC32_ARM64 1
+# elif defined(ARM64_RUNTIME_DETECTION)
+# define CRC32_ARCH_OPTIMIZED 1
+# define CRC32_ARM64 1
+# define CRC32_GENERIC 1
+# endif
+#endif
+
+#if defined(HAVE_USABLE_CLMUL)
+// If CLMUL is allowed unconditionally in the compiler options then the
+// generic version can be omitted. Note that this doesn't work with MSVC
+// as I don't know how to detect the features here.
+//
+// NOTE: Keep this in sync with the NO_CRC32_TABLE macro in crc32_table.c
+// and NO_CRC64_TABLE in crc64_table.c.
+# if (defined(__SSSE3__) && defined(__SSE4_1__) && defined(__PCLMUL__)) \
+ || (defined(__e2k__) && __iset__ >= 6)
+# define CRC32_ARCH_OPTIMIZED 1
+# define CRC64_ARCH_OPTIMIZED 1
+# define CRC_X86_CLMUL 1
+# else
+# define CRC32_GENERIC 1
+# define CRC64_GENERIC 1
+# define CRC32_ARCH_OPTIMIZED 1
+# define CRC64_ARCH_OPTIMIZED 1
+# define CRC_X86_CLMUL 1
+
+/*
+ // The generic code is much faster with 1-8-byte inputs and
+ // has similar performance up to 16 bytes at least in
+ // microbenchmarks (it depends on input buffer alignment
+ // too). If both versions are built, this #define will use
+ // the generic version for inputs up to 16 bytes and CLMUL
+ // for bigger inputs. It saves a little in code size since
+ // the special cases for 0-16-byte inputs will be omitted
+ // from the CLMUL code.
+# define CRC_USE_GENERIC_FOR_SMALL_INPUTS 1
+*/
+# endif
+#endif
+
+// For CRC32 use the generic slice-by-eight implementation if no optimized
+// version is available.
+#if !defined(CRC32_ARCH_OPTIMIZED) && !defined(CRC32_GENERIC)
+# define CRC32_GENERIC 1
+#endif
+
+// For CRC64 use the generic slice-by-four implementation if no optimized
+// version is available.
+#if !defined(CRC64_ARCH_OPTIMIZED) && !defined(CRC64_GENERIC)
+# define CRC64_GENERIC 1
+#endif
+
+#endif
diff --git a/src/liblzma/check/crc_macros.h b/src/liblzma/check/crc_macros.h
deleted file mode 100644
index a7c21b7..0000000
--- a/src/liblzma/check/crc_macros.h
+++ /dev/null
@@ -1,30 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//
-/// \file crc_macros.h
-/// \brief Some endian-dependent macros for CRC32 and CRC64
-//
-// Author: Lasse Collin
-//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#ifdef WORDS_BIGENDIAN
-# define A(x) ((x) >> 24)
-# define B(x) (((x) >> 16) & 0xFF)
-# define C(x) (((x) >> 8) & 0xFF)
-# define D(x) ((x) & 0xFF)
-
-# define S8(x) ((x) << 8)
-# define S32(x) ((x) << 32)
-
-#else
-# define A(x) ((x) & 0xFF)
-# define B(x) (((x) >> 8) & 0xFF)
-# define C(x) (((x) >> 16) & 0xFF)
-# define D(x) ((x) >> 24)
-
-# define S8(x) ((x) >> 8)
-# define S32(x) ((x) >> 32)
-#endif
diff --git a/src/liblzma/check/crc_x86_clmul.h b/src/liblzma/check/crc_x86_clmul.h
new file mode 100644
index 0000000..f1254ec
--- /dev/null
+++ b/src/liblzma/check/crc_x86_clmul.h
@@ -0,0 +1,428 @@
+// SPDX-License-Identifier: 0BSD
+
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file crc_x86_clmul.h
+/// \brief CRC32 and CRC64 implementations using CLMUL instructions.
+///
+/// The CRC32 and CRC64 implementations use 32/64-bit x86 SSSE3, SSE4.1, and
+/// CLMUL instructions. This is compatible with Elbrus 2000 (E2K) too.
+///
+/// They were derived from
+/// https://www.researchgate.net/publication/263424619_Fast_CRC_computation
+/// and the public domain code from https://github.com/rawrunprotected/crc
+/// (URLs were checked on 2023-10-14).
+///
+/// While this file has both CRC32 and CRC64 implementations, only one
+/// should be built at a time to ensure that crc_simd_body() is inlined
+/// even with compilers with which lzma_always_inline expands to plain inline.
+/// The version to build is selected by defining BUILDING_CRC32_CLMUL or
+/// BUILDING_CRC64_CLMUL before including this file.
+///
+/// FIXME: Builds for 32-bit x86 use the assembly .S files by default
+/// unless configured with --disable-assembler. Even then the lookup table
+/// isn't omitted in crc64_table.c since it doesn't know that assembly
+/// code has been disabled.
+//
+// Authors: Ilya Kurdyukov
+// Hans Jansen
+// Lasse Collin
+// Jia Tan
+//
+///////////////////////////////////////////////////////////////////////////////
+
+// This file must not be included more than once.
+#ifdef LZMA_CRC_X86_CLMUL_H
+# error crc_x86_clmul.h was included twice.
+#endif
+#define LZMA_CRC_X86_CLMUL_H
+
+#include <immintrin.h>
+
+#if defined(_MSC_VER)
+# include <intrin.h>
+#elif defined(HAVE_CPUID_H)
+# include <cpuid.h>
+#endif
+
+
+// EDG-based compilers (Intel's classic compiler and compiler for E2K) can
+// define __GNUC__ but the attribute must not be used with them.
+// The new Clang-based ICX needs the attribute.
+//
+// NOTE: Build systems check for this too, keep them in sync with this.
+#if (defined(__GNUC__) || defined(__clang__)) && !defined(__EDG__)
+# define crc_attr_target \
+ __attribute__((__target__("ssse3,sse4.1,pclmul")))
+#else
+# define crc_attr_target
+#endif
+
+
+#define MASK_L(in, mask, r) r = _mm_shuffle_epi8(in, mask)
+
+#define MASK_H(in, mask, r) \
+ r = _mm_shuffle_epi8(in, _mm_xor_si128(mask, vsign))
+
+#define MASK_LH(in, mask, low, high) \
+ MASK_L(in, mask, low); \
+ MASK_H(in, mask, high)
+
+
+crc_attr_target
+crc_attr_no_sanitize_address
+static lzma_always_inline void
+crc_simd_body(const uint8_t *buf, const size_t size, __m128i *v0, __m128i *v1,
+ const __m128i vfold16, const __m128i initial_crc)
+{
+ // Create a vector with 8-bit values 0 to 15. This is used to
+ // construct control masks for _mm_blendv_epi8 and _mm_shuffle_epi8.
+ const __m128i vramp = _mm_setr_epi32(
+ 0x03020100, 0x07060504, 0x0b0a0908, 0x0f0e0d0c);
+
+ // This is used to inverse the control mask of _mm_shuffle_epi8
+ // so that bytes that wouldn't be picked with the original mask
+ // will be picked and vice versa.
+ const __m128i vsign = _mm_set1_epi8(-0x80);
+
+ // Memory addresses A to D and the distances between them:
+ //
+ // A B C D
+ // [skip_start][size][skip_end]
+ // [ size2 ]
+ //
+ // A and D are 16-byte aligned. B and C are 1-byte aligned.
+ // skip_start and skip_end are 0-15 bytes. size is at least 1 byte.
+ //
+ // A = aligned_buf will initially point to this address.
+ // B = The address pointed by the caller-supplied buf.
+ // C = buf + size == aligned_buf + size2
+ // D = buf + size + skip_end == aligned_buf + size2 + skip_end
+ const size_t skip_start = (size_t)((uintptr_t)buf & 15);
+ const size_t skip_end = (size_t)((0U - (uintptr_t)(buf + size)) & 15);
+ const __m128i *aligned_buf = (const __m128i *)(
+ (uintptr_t)buf & ~(uintptr_t)15);
+
+ // If size2 <= 16 then the whole input fits into a single 16-byte
+ // vector. If size2 > 16 then at least two 16-byte vectors must
+ // be processed. If size2 > 16 && size <= 16 then there is only
+ // one 16-byte vector's worth of input but it is unaligned in memory.
+ //
+ // NOTE: There is no integer overflow here if the arguments
+ // are valid. If this overflowed, buf + size would too.
+ const size_t size2 = skip_start + size;
+
+ // Masks to be used with _mm_blendv_epi8 and _mm_shuffle_epi8:
+ // The first skip_start or skip_end bytes in the vectors will have
+ // the high bit (0x80) set. _mm_blendv_epi8 and _mm_shuffle_epi8
+ // will produce zeros for these positions. (Bitwise-xor of these
+ // masks with vsign will produce the opposite behavior.)
+ const __m128i mask_start
+ = _mm_sub_epi8(vramp, _mm_set1_epi8((char)skip_start));
+ const __m128i mask_end
+ = _mm_sub_epi8(vramp, _mm_set1_epi8((char)skip_end));
+
+ // Get the first 1-16 bytes into data0. If loading less than 16
+ // bytes, the bytes are loaded to the high bits of the vector and
+ // the least significant positions are filled with zeros.
+ const __m128i data0 = _mm_blendv_epi8(_mm_load_si128(aligned_buf),
+ _mm_setzero_si128(), mask_start);
+ aligned_buf++;
+
+ __m128i v2, v3;
+
+#ifndef CRC_USE_GENERIC_FOR_SMALL_INPUTS
+ if (size <= 16) {
+ // Right-shift initial_crc by 1-16 bytes based on "size"
+ // and store the result in v1 (high bytes) and v0 (low bytes).
+ //
+ // NOTE: The highest 8 bytes of initial_crc are zeros so
+ // v1 will be filled with zeros if size >= 8. The highest
+ // 8 bytes of v1 will always become zeros.
+ //
+ // [ v1 ][ v0 ]
+ // [ initial_crc ] size == 1
+ // [ initial_crc ] size == 2
+ // [ initial_crc ] size == 15
+ // [ initial_crc ] size == 16 (all in v0)
+ const __m128i mask_low = _mm_add_epi8(
+ vramp, _mm_set1_epi8((char)(size - 16)));
+ MASK_LH(initial_crc, mask_low, *v0, *v1);
+
+ if (size2 <= 16) {
+ // There are 1-16 bytes of input and it is all
+ // in data0. Copy the input bytes to v3. If there
+ // are fewer than 16 bytes, the low bytes in v3
+ // will be filled with zeros. That is, the input
+ // bytes are stored to the same position as
+ // (part of) initial_crc is in v0.
+ MASK_L(data0, mask_end, v3);
+ } else {
+ // There are 2-16 bytes of input but not all bytes
+ // are in data0.
+ const __m128i data1 = _mm_load_si128(aligned_buf);
+
+ // Collect the 2-16 input bytes from data0 and data1
+ // to v2 and v3, and bitwise-xor them with the
+ // low bits of initial_crc in v0. Note that the
+ // the second xor is below this else-block as it
+ // is shared with the other branch.
+ MASK_H(data0, mask_end, v2);
+ MASK_L(data1, mask_end, v3);
+ *v0 = _mm_xor_si128(*v0, v2);
+ }
+
+ *v0 = _mm_xor_si128(*v0, v3);
+ *v1 = _mm_alignr_epi8(*v1, *v0, 8);
+ } else
+#endif
+ {
+ // There is more than 16 bytes of input.
+ const __m128i data1 = _mm_load_si128(aligned_buf);
+ const __m128i *end = (const __m128i*)(
+ (const char *)aligned_buf - 16 + size2);
+ aligned_buf++;
+
+ MASK_LH(initial_crc, mask_start, *v0, *v1);
+ *v0 = _mm_xor_si128(*v0, data0);
+ *v1 = _mm_xor_si128(*v1, data1);
+
+ while (aligned_buf < end) {
+ *v1 = _mm_xor_si128(*v1, _mm_clmulepi64_si128(
+ *v0, vfold16, 0x00));
+ *v0 = _mm_xor_si128(*v1, _mm_clmulepi64_si128(
+ *v0, vfold16, 0x11));
+ *v1 = _mm_load_si128(aligned_buf++);
+ }
+
+ if (aligned_buf != end) {
+ MASK_H(*v0, mask_end, v2);
+ MASK_L(*v0, mask_end, *v0);
+ MASK_L(*v1, mask_end, v3);
+ *v1 = _mm_or_si128(v2, v3);
+ }
+
+ *v1 = _mm_xor_si128(*v1, _mm_clmulepi64_si128(
+ *v0, vfold16, 0x00));
+ *v0 = _mm_xor_si128(*v1, _mm_clmulepi64_si128(
+ *v0, vfold16, 0x11));
+ *v1 = _mm_srli_si128(*v0, 8);
+ }
+}
+
+
+/////////////////////
+// x86 CLMUL CRC32 //
+/////////////////////
+
+/*
+// These functions were used to generate the constants
+// at the top of crc32_arch_optimized().
+static uint64_t
+calc_lo(uint64_t p, uint64_t a, int n)
+{
+ uint64_t b = 0; int i;
+ for (i = 0; i < n; i++) {
+ b = b >> 1 | (a & 1) << (n - 1);
+ a = (a >> 1) ^ ((0 - (a & 1)) & p);
+ }
+ return b;
+}
+
+// same as ~crc(&a, sizeof(a), ~0)
+static uint64_t
+calc_hi(uint64_t p, uint64_t a, int n)
+{
+ int i;
+ for (i = 0; i < n; i++)
+ a = (a >> 1) ^ ((0 - (a & 1)) & p);
+ return a;
+}
+*/
+
+#ifdef BUILDING_CRC32_CLMUL
+
+crc_attr_target
+crc_attr_no_sanitize_address
+static uint32_t
+crc32_arch_optimized(const uint8_t *buf, size_t size, uint32_t crc)
+{
+#ifndef CRC_USE_GENERIC_FOR_SMALL_INPUTS
+ // The code assumes that there is at least one byte of input.
+ if (size == 0)
+ return crc;
+#endif
+
+ // uint32_t poly = 0xedb88320;
+ const int64_t p = 0x1db710640; // p << 1
+ const int64_t mu = 0x1f7011641; // calc_lo(p, p, 32) << 1 | 1
+ const int64_t k5 = 0x163cd6124; // calc_hi(p, p, 32) << 1
+ const int64_t k4 = 0x0ccaa009e; // calc_hi(p, p, 64) << 1
+ const int64_t k3 = 0x1751997d0; // calc_hi(p, p, 128) << 1
+
+ const __m128i vfold4 = _mm_set_epi64x(mu, p);
+ const __m128i vfold8 = _mm_set_epi64x(0, k5);
+ const __m128i vfold16 = _mm_set_epi64x(k4, k3);
+
+ __m128i v0, v1, v2;
+
+ crc_simd_body(buf, size, &v0, &v1, vfold16,
+ _mm_cvtsi32_si128((int32_t)~crc));
+
+ v1 = _mm_xor_si128(
+ _mm_clmulepi64_si128(v0, vfold16, 0x10), v1); // xxx0
+ v2 = _mm_shuffle_epi32(v1, 0xe7); // 0xx0
+ v0 = _mm_slli_epi64(v1, 32); // [0]
+ v0 = _mm_clmulepi64_si128(v0, vfold8, 0x00);
+ v0 = _mm_xor_si128(v0, v2); // [1] [2]
+ v2 = _mm_clmulepi64_si128(v0, vfold4, 0x10);
+ v2 = _mm_clmulepi64_si128(v2, vfold4, 0x00);
+ v0 = _mm_xor_si128(v0, v2); // [2]
+ return ~(uint32_t)_mm_extract_epi32(v0, 2);
+}
+#endif // BUILDING_CRC32_CLMUL
+
+
+/////////////////////
+// x86 CLMUL CRC64 //
+/////////////////////
+
+/*
+// These functions were used to generate the constants
+// at the top of crc64_arch_optimized().
+static uint64_t
+calc_lo(uint64_t poly)
+{
+ uint64_t a = poly;
+ uint64_t b = 0;
+
+ for (unsigned i = 0; i < 64; ++i) {
+ b = (b >> 1) | (a << 63);
+ a = (a >> 1) ^ (a & 1 ? poly : 0);
+ }
+
+ return b;
+}
+
+static uint64_t
+calc_hi(uint64_t poly, uint64_t a)
+{
+ for (unsigned i = 0; i < 64; ++i)
+ a = (a >> 1) ^ (a & 1 ? poly : 0);
+
+ return a;
+}
+*/
+
+#ifdef BUILDING_CRC64_CLMUL
+
+// MSVC (VS2015 - VS2022) produces bad 32-bit x86 code from the CLMUL CRC
+// code when optimizations are enabled (release build). According to the bug
+// report, the ebx register is corrupted and the calculated result is wrong.
+// Trying to workaround the problem with "__asm mov ebx, ebx" didn't help.
+// The following pragma works and performance is still good. x86-64 builds
+// and CRC32 CLMUL aren't affected by this problem. The problem does not
+// happen in crc_simd_body() either (which is shared with CRC32 CLMUL anyway).
+//
+// NOTE: Another pragma after crc64_arch_optimized() restores
+// the optimizations. If the #if condition here is updated,
+// the other one must be updated too.
+#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && !defined(__clang__) \
+ && defined(_M_IX86)
+# pragma optimize("g", off)
+#endif
+
+crc_attr_target
+crc_attr_no_sanitize_address
+static uint64_t
+crc64_arch_optimized(const uint8_t *buf, size_t size, uint64_t crc)
+{
+#ifndef CRC_USE_GENERIC_FOR_SMALL_INPUTS
+ // The code assumes that there is at least one byte of input.
+ if (size == 0)
+ return crc;
+#endif
+
+ // const uint64_t poly = 0xc96c5795d7870f42; // CRC polynomial
+ const uint64_t p = 0x92d8af2baf0e1e85; // (poly << 1) | 1
+ const uint64_t mu = 0x9c3e466c172963d5; // (calc_lo(poly) << 1) | 1
+ const uint64_t k2 = 0xdabe95afc7875f40; // calc_hi(poly, 1)
+ const uint64_t k1 = 0xe05dd497ca393ae4; // calc_hi(poly, k2)
+
+ const __m128i vfold8 = _mm_set_epi64x((int64_t)p, (int64_t)mu);
+ const __m128i vfold16 = _mm_set_epi64x((int64_t)k2, (int64_t)k1);
+
+ __m128i v0, v1, v2;
+
+#if defined(__i386__) || defined(_M_IX86)
+ crc_simd_body(buf, size, &v0, &v1, vfold16,
+ _mm_set_epi64x(0, (int64_t)~crc));
+#else
+ // GCC and Clang would produce good code with _mm_set_epi64x
+ // but MSVC needs _mm_cvtsi64_si128 on x86-64.
+ crc_simd_body(buf, size, &v0, &v1, vfold16,
+ _mm_cvtsi64_si128((int64_t)~crc));
+#endif
+
+ v1 = _mm_xor_si128(_mm_clmulepi64_si128(v0, vfold16, 0x10), v1);
+ v0 = _mm_clmulepi64_si128(v1, vfold8, 0x00);
+ v2 = _mm_clmulepi64_si128(v0, vfold8, 0x10);
+ v0 = _mm_xor_si128(_mm_xor_si128(v1, _mm_slli_si128(v0, 8)), v2);
+
+#if defined(__i386__) || defined(_M_IX86)
+ return ~(((uint64_t)(uint32_t)_mm_extract_epi32(v0, 3) << 32) |
+ (uint64_t)(uint32_t)_mm_extract_epi32(v0, 2));
+#else
+ return ~(uint64_t)_mm_extract_epi64(v0, 1);
+#endif
+}
+
+#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && !defined(__clang__) \
+ && defined(_M_IX86)
+# pragma optimize("", on)
+#endif
+
+#endif // BUILDING_CRC64_CLMUL
+
+
+// Inlining this function duplicates the function body in crc32_resolve() and
+// crc64_resolve(), but this is acceptable because this is a tiny function.
+static inline bool
+is_arch_extension_supported(void)
+{
+ int success = 1;
+ uint32_t r[4]; // eax, ebx, ecx, edx
+
+#if defined(_MSC_VER)
+ // This needs <intrin.h> with MSVC. ICC has it as a built-in
+ // on all platforms.
+ __cpuid(r, 1);
+#elif defined(HAVE_CPUID_H)
+ // Compared to just using __asm__ to run CPUID, this also checks
+ // that CPUID is supported and saves and restores ebx as that is
+ // needed with GCC < 5 with position-independent code (PIC).
+ success = __get_cpuid(1, &r[0], &r[1], &r[2], &r[3]);
+#else
+ // Just a fallback that shouldn't be needed.
+ __asm__("cpuid\n\t"
+ : "=a"(r[0]), "=b"(r[1]), "=c"(r[2]), "=d"(r[3])
+ : "a"(1), "c"(0));
+#endif
+
+ // Returns true if these are supported:
+ // CLMUL (bit 1 in ecx)
+ // SSSE3 (bit 9 in ecx)
+ // SSE4.1 (bit 19 in ecx)
+ const uint32_t ecx_mask = (1 << 1) | (1 << 9) | (1 << 19);
+ return success && (r[2] & ecx_mask) == ecx_mask;
+
+ // Alternative methods that weren't used:
+ // - ICC's _may_i_use_cpu_feature: the other methods should work too.
+ // - GCC >= 6 / Clang / ICX __builtin_cpu_supports("pclmul")
+ //
+ // CPUID decding is needed with MSVC anyway and older GCC. This keeps
+ // the feature checks in the build system simpler too. The nice thing
+ // about __builtin_cpu_supports would be that it generates very short
+ // code as is it only reads a variable set at startup but a few bytes
+ // doesn't matter here.
+}
diff --git a/src/liblzma/check/sha256.c b/src/liblzma/check/sha256.c
index 6feb342..bd0d280 100644
--- a/src/liblzma/check/sha256.c
+++ b/src/liblzma/check/sha256.c
@@ -1,24 +1,17 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file sha256.c
/// \brief SHA-256
-///
-/// \todo Crypto++ has x86 ASM optimizations. They use SSE so if they
-/// are imported to liblzma, SSE instructions need to be used
-/// conditionally to keep the code working on older boxes.
//
-// This code is based on the code found from 7-Zip, which has a modified
-// version of the SHA-256 found from Crypto++ <https://www.cryptopp.com/>.
-// The code was modified a little to fit into liblzma.
+// The C code is based on the public domain SHA-256 code found from
+// Crypto++ Library 5.5.1 released in 2007: https://www.cryptopp.com/
+// A few minor tweaks have been made in liblzma.
//
-// Authors: Kevin Springle
-// Wei Dai
-// Igor Pavlov
+// Authors: Wei Dai
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "check.h"
diff --git a/src/liblzma/common/Makefile.inc b/src/liblzma/common/Makefile.inc
index f0276a2..51b1aae 100644
--- a/src/liblzma/common/Makefile.inc
+++ b/src/liblzma/common/Makefile.inc
@@ -1,9 +1,5 @@
-##
+## SPDX-License-Identifier: 0BSD
## Author: Lasse Collin
-##
-## This file has been put into the public domain.
-## You can do whatever you want with this file.
-##
liblzma_la_SOURCES += \
common/common.c \
diff --git a/src/liblzma/common/alone_decoder.c b/src/liblzma/common/alone_decoder.c
index 1dc85ba..78af651 100644
--- a/src/liblzma/common/alone_decoder.c
+++ b/src/liblzma/common/alone_decoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file alone_decoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "alone_decoder.h"
diff --git a/src/liblzma/common/alone_decoder.h b/src/liblzma/common/alone_decoder.h
index dfa031a..61ee24d 100644
--- a/src/liblzma/common/alone_decoder.h
+++ b/src/liblzma/common/alone_decoder.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file alone_decoder.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_ALONE_DECODER_H
diff --git a/src/liblzma/common/alone_encoder.c b/src/liblzma/common/alone_encoder.c
index 7d3812f..21b0395 100644
--- a/src/liblzma/common/alone_encoder.c
+++ b/src/liblzma/common/alone_encoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file alone_encoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "common.h"
diff --git a/src/liblzma/common/auto_decoder.c b/src/liblzma/common/auto_decoder.c
index 2a5c089..fdd520f 100644
--- a/src/liblzma/common/auto_decoder.c
+++ b/src/liblzma/common/auto_decoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file auto_decoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "stream_decoder.h"
diff --git a/src/liblzma/common/block_buffer_decoder.c b/src/liblzma/common/block_buffer_decoder.c
index b0ded90..55566cd 100644
--- a/src/liblzma/common/block_buffer_decoder.c
+++ b/src/liblzma/common/block_buffer_decoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file block_buffer_decoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "block_decoder.h"
diff --git a/src/liblzma/common/block_buffer_encoder.c b/src/liblzma/common/block_buffer_encoder.c
index fdef02d..df3b90e 100644
--- a/src/liblzma/common/block_buffer_encoder.c
+++ b/src/liblzma/common/block_buffer_encoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file block_buffer_encoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "block_buffer_encoder.h"
diff --git a/src/liblzma/common/block_buffer_encoder.h b/src/liblzma/common/block_buffer_encoder.h
index 653207f..5274ac4 100644
--- a/src/liblzma/common/block_buffer_encoder.h
+++ b/src/liblzma/common/block_buffer_encoder.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file block_buffer_encoder.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_BLOCK_BUFFER_ENCODER_H
diff --git a/src/liblzma/common/block_decoder.c b/src/liblzma/common/block_decoder.c
index be647d4..2e369d3 100644
--- a/src/liblzma/common/block_decoder.c
+++ b/src/liblzma/common/block_decoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file block_decoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "block_decoder.h"
diff --git a/src/liblzma/common/block_decoder.h b/src/liblzma/common/block_decoder.h
index 718c5ce..2cbf9ba 100644
--- a/src/liblzma/common/block_decoder.h
+++ b/src/liblzma/common/block_decoder.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file block_decoder.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_BLOCK_DECODER_H
diff --git a/src/liblzma/common/block_encoder.c b/src/liblzma/common/block_encoder.c
index 4a136ef..ce8c1de 100644
--- a/src/liblzma/common/block_encoder.c
+++ b/src/liblzma/common/block_encoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file block_encoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "block_encoder.h"
diff --git a/src/liblzma/common/block_encoder.h b/src/liblzma/common/block_encoder.h
index bd97c18..b7dfe9a 100644
--- a/src/liblzma/common/block_encoder.h
+++ b/src/liblzma/common/block_encoder.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file block_encoder.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_BLOCK_ENCODER_H
diff --git a/src/liblzma/common/block_header_decoder.c b/src/liblzma/common/block_header_decoder.c
index c4935dc..f0b2fbe 100644
--- a/src/liblzma/common/block_header_decoder.c
+++ b/src/liblzma/common/block_header_decoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file block_header_decoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "common.h"
diff --git a/src/liblzma/common/block_header_encoder.c b/src/liblzma/common/block_header_encoder.c
index 160425d..45e57a2 100644
--- a/src/liblzma/common/block_header_encoder.c
+++ b/src/liblzma/common/block_header_encoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file block_header_encoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "common.h"
diff --git a/src/liblzma/common/block_util.c b/src/liblzma/common/block_util.c
index acb3111..191f6d4 100644
--- a/src/liblzma/common/block_util.c
+++ b/src/liblzma/common/block_util.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file block_util.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "common.h"
diff --git a/src/liblzma/common/common.c b/src/liblzma/common/common.c
index adb50d7..cc0e06a 100644
--- a/src/liblzma/common/common.c
+++ b/src/liblzma/common/common.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file common.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "common.h"
diff --git a/src/liblzma/common/common.h b/src/liblzma/common/common.h
index 378923e..20af32f 100644
--- a/src/liblzma/common/common.h
+++ b/src/liblzma/common/common.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file common.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_COMMON_H
diff --git a/src/liblzma/common/easy_buffer_encoder.c b/src/liblzma/common/easy_buffer_encoder.c
index 48eb56f..da610ce 100644
--- a/src/liblzma/common/easy_buffer_encoder.c
+++ b/src/liblzma/common/easy_buffer_encoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file easy_buffer_encoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "easy_preset.h"
diff --git a/src/liblzma/common/easy_decoder_memusage.c b/src/liblzma/common/easy_decoder_memusage.c
index 20bcd5b..0c76f10 100644
--- a/src/liblzma/common/easy_decoder_memusage.c
+++ b/src/liblzma/common/easy_decoder_memusage.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file easy_decoder_memusage.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "easy_preset.h"
diff --git a/src/liblzma/common/easy_encoder.c b/src/liblzma/common/easy_encoder.c
index 5cb492d..8dfe296 100644
--- a/src/liblzma/common/easy_encoder.c
+++ b/src/liblzma/common/easy_encoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file easy_encoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "easy_preset.h"
diff --git a/src/liblzma/common/easy_encoder_memusage.c b/src/liblzma/common/easy_encoder_memusage.c
index e910575..1184ac6 100644
--- a/src/liblzma/common/easy_encoder_memusage.c
+++ b/src/liblzma/common/easy_encoder_memusage.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file easy_encoder_memusage.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "easy_preset.h"
diff --git a/src/liblzma/common/easy_preset.c b/src/liblzma/common/easy_preset.c
index 2f98598..7908a2b 100644
--- a/src/liblzma/common/easy_preset.c
+++ b/src/liblzma/common/easy_preset.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file easy_preset.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "easy_preset.h"
diff --git a/src/liblzma/common/easy_preset.h b/src/liblzma/common/easy_preset.h
index 382ade8..4ef6d04 100644
--- a/src/liblzma/common/easy_preset.h
+++ b/src/liblzma/common/easy_preset.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file easy_preset.h
@@ -5,11 +7,11 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
+#ifndef LZMA_EASY_PRESET_H
+#define LZMA_EASY_PRESET_H
+
#include "common.h"
@@ -30,3 +32,5 @@ typedef struct {
/// Set *easy to the settings given by the preset. Returns true on error,
/// false on success.
extern bool lzma_easy_preset(lzma_options_easy *easy, uint32_t preset);
+
+#endif
diff --git a/src/liblzma/common/file_info.c b/src/liblzma/common/file_info.c
index 799bb02..7c85084 100644
--- a/src/liblzma/common/file_info.c
+++ b/src/liblzma/common/file_info.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file file_info.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "index_decoder.h"
diff --git a/src/liblzma/common/filter_buffer_decoder.c b/src/liblzma/common/filter_buffer_decoder.c
index 6620986..cc0d88c 100644
--- a/src/liblzma/common/filter_buffer_decoder.c
+++ b/src/liblzma/common/filter_buffer_decoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file filter_buffer_decoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "filter_decoder.h"
@@ -24,7 +23,7 @@ lzma_raw_buffer_decode(
|| out_pos == NULL || *out_pos > out_size)
return LZMA_PROG_ERROR;
- // Initialize the decoer.
+ // Initialize the decoder.
lzma_next_coder next = LZMA_NEXT_CODER_INIT;
return_if_error(lzma_raw_decoder_init(&next, allocator, filters));
diff --git a/src/liblzma/common/filter_buffer_encoder.c b/src/liblzma/common/filter_buffer_encoder.c
index dda18e3..7fb8922 100644
--- a/src/liblzma/common/filter_buffer_encoder.c
+++ b/src/liblzma/common/filter_buffer_encoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file filter_buffer_encoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "filter_encoder.h"
diff --git a/src/liblzma/common/filter_common.c b/src/liblzma/common/filter_common.c
index fa0927c..d15d9cc 100644
--- a/src/liblzma/common/filter_common.c
+++ b/src/liblzma/common/filter_common.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file filter_common.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "filter_common.h"
@@ -122,6 +121,15 @@ static const struct {
.changes_size = false,
},
#endif
+#if defined(HAVE_ENCODER_RISCV) || defined(HAVE_DECODER_RISCV)
+ {
+ .id = LZMA_FILTER_RISCV,
+ .options_size = sizeof(lzma_options_bcj),
+ .non_last_ok = true,
+ .last_ok = false,
+ .changes_size = false,
+ },
+#endif
#if defined(HAVE_ENCODER_DELTA) || defined(HAVE_DECODER_DELTA)
{
.id = LZMA_FILTER_DELTA,
@@ -145,7 +153,7 @@ lzma_filters_copy(const lzma_filter *src, lzma_filter *real_dest,
return LZMA_PROG_ERROR;
// Use a temporary destination so that the real destination
- // will never be modied if an error occurs.
+ // will never be modified if an error occurs.
lzma_filter dest[LZMA_FILTERS_MAX + 1];
lzma_ret ret;
diff --git a/src/liblzma/common/filter_common.h b/src/liblzma/common/filter_common.h
index 2e47bb6..95f9fe2 100644
--- a/src/liblzma/common/filter_common.h
+++ b/src/liblzma/common/filter_common.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file filter_common.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_FILTER_COMMON_H
diff --git a/src/liblzma/common/filter_decoder.c b/src/liblzma/common/filter_decoder.c
index fa53f5b..cbdeb58 100644
--- a/src/liblzma/common/filter_decoder.c
+++ b/src/liblzma/common/filter_decoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file filter_decoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "filter_decoder.h"
@@ -121,6 +120,14 @@ static const lzma_filter_decoder decoders[] = {
.props_decode = &lzma_simple_props_decode,
},
#endif
+#ifdef HAVE_DECODER_RISCV
+ {
+ .id = LZMA_FILTER_RISCV,
+ .init = &lzma_simple_riscv_decoder_init,
+ .memusage = NULL,
+ .props_decode = &lzma_simple_props_decode,
+ },
+#endif
#ifdef HAVE_DECODER_DELTA
{
.id = LZMA_FILTER_DELTA,
@@ -143,6 +150,16 @@ decoder_find(lzma_vli id)
}
+// lzma_filter_coder begins with the same members as lzma_filter_decoder.
+// This function is a wrapper with a type that is compatible with the
+// typedef of lzma_filter_find in filter_common.h.
+static const lzma_filter_coder *
+coder_find(lzma_vli id)
+{
+ return (const lzma_filter_coder *)decoder_find(id);
+}
+
+
extern LZMA_API(lzma_bool)
lzma_filter_decoder_is_supported(lzma_vli id)
{
@@ -155,7 +172,7 @@ lzma_raw_decoder_init(lzma_next_coder *next, const lzma_allocator *allocator,
const lzma_filter *options)
{
return lzma_raw_coder_init(next, allocator,
- options, (lzma_filter_find)(&decoder_find), false);
+ options, &coder_find, false);
}
@@ -174,8 +191,7 @@ lzma_raw_decoder(lzma_stream *strm, const lzma_filter *options)
extern LZMA_API(uint64_t)
lzma_raw_decoder_memusage(const lzma_filter *filters)
{
- return lzma_raw_coder_memusage(
- (lzma_filter_find)(&decoder_find), filters);
+ return lzma_raw_coder_memusage(&coder_find, filters);
}
diff --git a/src/liblzma/common/filter_decoder.h b/src/liblzma/common/filter_decoder.h
index 2dac602..e610bc1 100644
--- a/src/liblzma/common/filter_decoder.h
+++ b/src/liblzma/common/filter_decoder.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file filter_decoder.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_FILTER_DECODER_H
diff --git a/src/liblzma/common/filter_encoder.c b/src/liblzma/common/filter_encoder.c
index 46fe8af..bc39444 100644
--- a/src/liblzma/common/filter_encoder.c
+++ b/src/liblzma/common/filter_encoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file filter_decoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "filter_encoder.h"
@@ -33,7 +32,8 @@ typedef struct {
/// Calculates the recommended Uncompressed Size for .xz Blocks to
/// which the input data can be split to make multithreaded
/// encoding possible. If this is NULL, it is assumed that
- /// the encoder is fast enough with single thread.
+ /// the encoder is fast enough with single thread. If the options
+ /// are invalid, UINT64_MAX is returned.
uint64_t (*block_size)(const void *options);
/// Tells the size of the Filter Properties field. If options are
@@ -158,6 +158,16 @@ static const lzma_filter_encoder encoders[] = {
.props_encode = &lzma_simple_props_encode,
},
#endif
+#ifdef HAVE_ENCODER_RISCV
+ {
+ .id = LZMA_FILTER_RISCV,
+ .init = &lzma_simple_riscv_encoder_init,
+ .memusage = NULL,
+ .block_size = NULL,
+ .props_size_get = &lzma_simple_props_size,
+ .props_encode = &lzma_simple_props_encode,
+ },
+#endif
#ifdef HAVE_ENCODER_DELTA
{
.id = LZMA_FILTER_DELTA,
@@ -183,6 +193,16 @@ encoder_find(lzma_vli id)
}
+// lzma_filter_coder begins with the same members as lzma_filter_encoder.
+// This function is a wrapper with a type that is compatible with the
+// typedef of lzma_filter_find in filter_common.h.
+static const lzma_filter_coder *
+coder_find(lzma_vli id)
+{
+ return (const lzma_filter_coder *)encoder_find(id);
+}
+
+
extern LZMA_API(lzma_bool)
lzma_filter_encoder_is_supported(lzma_vli id)
{
@@ -219,18 +239,18 @@ lzma_filters_update(lzma_stream *strm, const lzma_filter *filters)
extern lzma_ret
lzma_raw_encoder_init(lzma_next_coder *next, const lzma_allocator *allocator,
- const lzma_filter *options)
+ const lzma_filter *filters)
{
return lzma_raw_coder_init(next, allocator,
- options, (lzma_filter_find)(&encoder_find), true);
+ filters, &coder_find, true);
}
extern LZMA_API(lzma_ret)
-lzma_raw_encoder(lzma_stream *strm, const lzma_filter *options)
+lzma_raw_encoder(lzma_stream *strm, const lzma_filter *filters)
{
- lzma_next_strm_init(lzma_raw_coder_init, strm, options,
- (lzma_filter_find)(&encoder_find), true);
+ lzma_next_strm_init(lzma_raw_coder_init, strm, filters,
+ &coder_find, true);
strm->internal->supported_actions[LZMA_RUN] = true;
strm->internal->supported_actions[LZMA_SYNC_FLUSH] = true;
@@ -243,31 +263,33 @@ lzma_raw_encoder(lzma_stream *strm, const lzma_filter *options)
extern LZMA_API(uint64_t)
lzma_raw_encoder_memusage(const lzma_filter *filters)
{
- return lzma_raw_coder_memusage(
- (lzma_filter_find)(&encoder_find), filters);
+ return lzma_raw_coder_memusage(&coder_find, filters);
}
-extern uint64_t
+extern LZMA_API(uint64_t)
lzma_mt_block_size(const lzma_filter *filters)
{
+ if (filters == NULL)
+ return UINT64_MAX;
+
uint64_t max = 0;
for (size_t i = 0; filters[i].id != LZMA_VLI_UNKNOWN; ++i) {
const lzma_filter_encoder *const fe
= encoder_find(filters[i].id);
+ if (fe == NULL)
+ return UINT64_MAX;
+
if (fe->block_size != NULL) {
const uint64_t size
= fe->block_size(filters[i].options);
- if (size == 0)
- return 0;
-
if (size > max)
max = size;
}
}
- return max;
+ return max == 0 ? UINT64_MAX : max;
}
diff --git a/src/liblzma/common/filter_encoder.h b/src/liblzma/common/filter_encoder.h
index f1d5683..88f2daf 100644
--- a/src/liblzma/common/filter_encoder.h
+++ b/src/liblzma/common/filter_encoder.h
@@ -1,13 +1,12 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
-/// \file filter_encoder.c
+/// \file filter_encoder.h
/// \brief Filter ID mapping to filter-specific functions
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_FILTER_ENCODER_H
@@ -16,10 +15,6 @@
#include "common.h"
-// FIXME: Might become a part of the public API.
-extern uint64_t lzma_mt_block_size(const lzma_filter *filters);
-
-
extern lzma_ret lzma_raw_encoder_init(
lzma_next_coder *next, const lzma_allocator *allocator,
const lzma_filter *filters);
diff --git a/src/liblzma/common/filter_flags_decoder.c b/src/liblzma/common/filter_flags_decoder.c
index ddfb085..0f5d204 100644
--- a/src/liblzma/common/filter_flags_decoder.c
+++ b/src/liblzma/common/filter_flags_decoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file filter_flags_decoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "filter_decoder.h"
diff --git a/src/liblzma/common/filter_flags_encoder.c b/src/liblzma/common/filter_flags_encoder.c
index b57b9fd..e1d6588 100644
--- a/src/liblzma/common/filter_flags_encoder.c
+++ b/src/liblzma/common/filter_flags_encoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file filter_flags_encoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "filter_encoder.h"
diff --git a/src/liblzma/common/hardware_cputhreads.c b/src/liblzma/common/hardware_cputhreads.c
index 5d246d2..4ce852b 100644
--- a/src/liblzma/common/hardware_cputhreads.c
+++ b/src/liblzma/common/hardware_cputhreads.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file hardware_cputhreads.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "common.h"
diff --git a/src/liblzma/common/hardware_physmem.c b/src/liblzma/common/hardware_physmem.c
index a2bbbe2..1bc3486 100644
--- a/src/liblzma/common/hardware_physmem.c
+++ b/src/liblzma/common/hardware_physmem.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file hardware_physmem.c
@@ -5,9 +7,6 @@
//
// Author: Jonathan Nieder
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "common.h"
diff --git a/src/liblzma/common/index.c b/src/liblzma/common/index.c
index 8a35f43..6add6a6 100644
--- a/src/liblzma/common/index.c
+++ b/src/liblzma/common/index.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file index.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "common.h"
diff --git a/src/liblzma/common/index.h b/src/liblzma/common/index.h
index 7b27d70..007e118 100644
--- a/src/liblzma/common/index.h
+++ b/src/liblzma/common/index.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file index.h
@@ -12,9 +14,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_INDEX_H
diff --git a/src/liblzma/common/index_decoder.c b/src/liblzma/common/index_decoder.c
index 19a31b3..4bcb306 100644
--- a/src/liblzma/common/index_decoder.c
+++ b/src/liblzma/common/index_decoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file index_decoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "index_decoder.h"
@@ -306,6 +305,12 @@ lzma_index_decoder_init(lzma_next_coder *next, const lzma_allocator *allocator,
extern LZMA_API(lzma_ret)
lzma_index_decoder(lzma_stream *strm, lzma_index **i, uint64_t memlimit)
{
+ // If i isn't NULL, *i must always be initialized due to
+ // the wording in the API docs. This way it is initialized
+ // if we return LZMA_PROG_ERROR due to strm == NULL.
+ if (i != NULL)
+ *i = NULL;
+
lzma_next_strm_init(lzma_index_decoder_init, strm, i, memlimit);
strm->internal->supported_actions[LZMA_RUN] = true;
@@ -320,6 +325,11 @@ lzma_index_buffer_decode(lzma_index **i, uint64_t *memlimit,
const lzma_allocator *allocator,
const uint8_t *in, size_t *in_pos, size_t in_size)
{
+ // If i isn't NULL, *i must always be initialized due to
+ // the wording in the API docs.
+ if (i != NULL)
+ *i = NULL;
+
// Sanity checks
if (i == NULL || memlimit == NULL
|| in == NULL || in_pos == NULL || *in_pos > in_size)
diff --git a/src/liblzma/common/index_decoder.h b/src/liblzma/common/index_decoder.h
index 3fec483..5351d2f 100644
--- a/src/liblzma/common/index_decoder.h
+++ b/src/liblzma/common/index_decoder.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file index_decoder.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_INDEX_DECODER_H
diff --git a/src/liblzma/common/index_encoder.c b/src/liblzma/common/index_encoder.c
index 204490c..ecc299c 100644
--- a/src/liblzma/common/index_encoder.c
+++ b/src/liblzma/common/index_encoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file index_encoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "index_encoder.h"
diff --git a/src/liblzma/common/index_encoder.h b/src/liblzma/common/index_encoder.h
index 4d55cd1..29ba110 100644
--- a/src/liblzma/common/index_encoder.h
+++ b/src/liblzma/common/index_encoder.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file index_encoder.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_INDEX_ENCODER_H
diff --git a/src/liblzma/common/index_hash.c b/src/liblzma/common/index_hash.c
index 52c3d65..caa5967 100644
--- a/src/liblzma/common/index_hash.c
+++ b/src/liblzma/common/index_hash.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file index_hash.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "common.h"
diff --git a/src/liblzma/common/lzip_decoder.c b/src/liblzma/common/lzip_decoder.c
index 88cc7ff..651a0ae 100644
--- a/src/liblzma/common/lzip_decoder.c
+++ b/src/liblzma/common/lzip_decoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file lzip_decoder.c
@@ -6,9 +8,6 @@
// Author: Michał Górny
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "lzip_decoder.h"
diff --git a/src/liblzma/common/lzip_decoder.h b/src/liblzma/common/lzip_decoder.h
index 33a01c3..0e1f7be 100644
--- a/src/liblzma/common/lzip_decoder.h
+++ b/src/liblzma/common/lzip_decoder.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file lzip_decoder.h
@@ -5,9 +7,6 @@
//
// Author: Michał Górny
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_LZIP_DECODER_H
diff --git a/src/liblzma/common/memcmplen.h b/src/liblzma/common/memcmplen.h
index 99d9c51..394a485 100644
--- a/src/liblzma/common/memcmplen.h
+++ b/src/liblzma/common/memcmplen.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file memcmplen.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_MEMCMPLEN_H
@@ -24,7 +23,8 @@
// can use the intrinsics without the header file.
#if defined(TUKLIB_FAST_UNALIGNED_ACCESS) \
&& defined(_MSC_VER) \
- && defined(_M_X64) \
+ && (defined(_M_X64) \
+ || defined(_M_ARM64) || defined(_M_ARM64EC)) \
&& !defined(__INTEL_COMPILER)
# include <intrin.h>
#endif
@@ -57,20 +57,35 @@ lzma_memcmplen(const uint8_t *buf1, const uint8_t *buf2,
assert(limit <= UINT32_MAX / 2);
#if defined(TUKLIB_FAST_UNALIGNED_ACCESS) \
- && ((TUKLIB_GNUC_REQ(3, 4) && defined(__x86_64__)) \
+ && (((TUKLIB_GNUC_REQ(3, 4) || defined(__clang__)) \
+ && (defined(__x86_64__) \
+ || defined(__aarch64__))) \
|| (defined(__INTEL_COMPILER) && defined(__x86_64__)) \
|| (defined(__INTEL_COMPILER) && defined(_M_X64)) \
- || (defined(_MSC_VER) && defined(_M_X64)))
- // I keep this x86-64 only for now since that's where I know this
- // to be a good method. This may be fine on other 64-bit CPUs too.
- // On big endian one should use xor instead of subtraction and switch
- // to __builtin_clzll().
+ || (defined(_MSC_VER) && (defined(_M_X64) \
+ || defined(_M_ARM64) || defined(_M_ARM64EC))))
+ // This is only for x86-64 and ARM64 for now. This might be fine on
+ // other 64-bit processors too. On big endian one should use xor
+ // instead of subtraction and switch to __builtin_clzll().
+ //
+ // Reasons to use subtraction instead of xor:
+ //
+ // - On some x86-64 processors (Intel Sandy Bridge to Tiger Lake),
+ // sub+jz and sub+jnz can be fused but xor+jz or xor+jnz cannot.
+ // Thus using subtraction has potential to be a tiny amount faster
+ // since the code checks if the quotient is non-zero.
+ //
+ // - Some processors (Intel Pentium 4) used to have more ALU
+ // resources for add/sub instructions than and/or/xor.
+ //
+ // The processor info is based on Agner Fog's microarchitecture.pdf
+ // version 2023-05-26. https://www.agner.org/optimize/
#define LZMA_MEMCMPLEN_EXTRA 8
while (len < limit) {
const uint64_t x = read64ne(buf1 + len) - read64ne(buf2 + len);
if (x != 0) {
// MSVC or Intel C compiler on Windows
-# if (defined(_MSC_VER) || defined(__INTEL_COMPILER)) && defined(_M_X64)
+# if defined(_MSC_VER) || defined(__INTEL_COMPILER)
unsigned long tmp;
_BitScanForward64(&tmp, x);
len += (uint32_t)tmp >> 3;
diff --git a/src/liblzma/common/microlzma_decoder.c b/src/liblzma/common/microlzma_decoder.c
index e473373..882cb2c 100644
--- a/src/liblzma/common/microlzma_decoder.c
+++ b/src/liblzma/common/microlzma_decoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file microlzma_decoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "lzma_decoder.h"
diff --git a/src/liblzma/common/microlzma_encoder.c b/src/liblzma/common/microlzma_encoder.c
index a787ca2..45ec0b1 100644
--- a/src/liblzma/common/microlzma_encoder.c
+++ b/src/liblzma/common/microlzma_encoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file microlzma_encoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "lzma_encoder.h"
diff --git a/src/liblzma/common/outqueue.c b/src/liblzma/common/outqueue.c
index 71e8648..eb018eb 100644
--- a/src/liblzma/common/outqueue.c
+++ b/src/liblzma/common/outqueue.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file outqueue.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "outqueue.h"
diff --git a/src/liblzma/common/outqueue.h b/src/liblzma/common/outqueue.h
index 596911e..25f0719 100644
--- a/src/liblzma/common/outqueue.h
+++ b/src/liblzma/common/outqueue.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file outqueue.h
@@ -5,11 +7,11 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
+#ifndef LZMA_OUTQUEUE_H
+#define LZMA_OUTQUEUE_H
+
#include "common.h"
@@ -252,3 +254,5 @@ lzma_outq_outbuf_memusage(size_t buf_size)
assert(buf_size <= SIZE_MAX - sizeof(lzma_outbuf));
return sizeof(lzma_outbuf) + buf_size;
}
+
+#endif
diff --git a/src/liblzma/common/stream_buffer_decoder.c b/src/liblzma/common/stream_buffer_decoder.c
index b9745b5..c4f91fb 100644
--- a/src/liblzma/common/stream_buffer_decoder.c
+++ b/src/liblzma/common/stream_buffer_decoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file stream_buffer_decoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "stream_decoder.h"
diff --git a/src/liblzma/common/stream_buffer_encoder.c b/src/liblzma/common/stream_buffer_encoder.c
index 7315759..04d5869 100644
--- a/src/liblzma/common/stream_buffer_encoder.c
+++ b/src/liblzma/common/stream_buffer_encoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file stream_buffer_encoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "common.h"
diff --git a/src/liblzma/common/stream_decoder.c b/src/liblzma/common/stream_decoder.c
index 6428381..7f42684 100644
--- a/src/liblzma/common/stream_decoder.c
+++ b/src/liblzma/common/stream_decoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file stream_decoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "stream_decoder.h"
diff --git a/src/liblzma/common/stream_decoder.h b/src/liblzma/common/stream_decoder.h
index c13c6ba..5803715 100644
--- a/src/liblzma/common/stream_decoder.h
+++ b/src/liblzma/common/stream_decoder.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file stream_decoder.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_STREAM_DECODER_H
diff --git a/src/liblzma/common/stream_decoder_mt.c b/src/liblzma/common/stream_decoder_mt.c
index 76212b4..244624a 100644
--- a/src/liblzma/common/stream_decoder_mt.c
+++ b/src/liblzma/common/stream_decoder_mt.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file stream_decoder_mt.c
@@ -6,9 +8,6 @@
// Authors: Sebastian Andrzej Siewior
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "common.h"
diff --git a/src/liblzma/common/stream_encoder.c b/src/liblzma/common/stream_encoder.c
index ee92046..e7e5b3f 100644
--- a/src/liblzma/common/stream_encoder.c
+++ b/src/liblzma/common/stream_encoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file stream_encoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "block_encoder.h"
diff --git a/src/liblzma/common/stream_encoder_mt.c b/src/liblzma/common/stream_encoder_mt.c
index f64de9b..f0fef15 100644
--- a/src/liblzma/common/stream_encoder_mt.c
+++ b/src/liblzma/common/stream_encoder_mt.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file stream_encoder_mt.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "filter_encoder.h"
@@ -979,20 +978,18 @@ get_options(const lzma_mt *options, lzma_options_easy *opt_easy,
*filters = opt_easy->filters;
}
- // Block size
- if (options->block_size > 0) {
- if (options->block_size > BLOCK_SIZE_MAX)
- return LZMA_OPTIONS_ERROR;
-
+ // If the Block size is not set, determine it from the filter chain.
+ if (options->block_size > 0)
*block_size = options->block_size;
- } else {
- // Determine the Block size from the filter chain.
+ else
*block_size = lzma_mt_block_size(*filters);
- if (*block_size == 0)
- return LZMA_OPTIONS_ERROR;
- assert(*block_size <= BLOCK_SIZE_MAX);
- }
+ // UINT64_MAX > BLOCK_SIZE_MAX, so the second condition
+ // should be optimized out by any reasonable compiler.
+ // The second condition should be there in the unlikely event that
+ // the macros change and UINT64_MAX < BLOCK_SIZE_MAX.
+ if (*block_size > BLOCK_SIZE_MAX || *block_size == UINT64_MAX)
+ return LZMA_OPTIONS_ERROR;
// Calculate the maximum amount output that a single output buffer
// may need to hold. This is the same as the maximum total size of
diff --git a/src/liblzma/common/stream_flags_common.c b/src/liblzma/common/stream_flags_common.c
index fbe8eb8..41b8dcb 100644
--- a/src/liblzma/common/stream_flags_common.c
+++ b/src/liblzma/common/stream_flags_common.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file stream_flags_common.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "stream_flags_common.h"
diff --git a/src/liblzma/common/stream_flags_common.h b/src/liblzma/common/stream_flags_common.h
index 84e96ba..28729db 100644
--- a/src/liblzma/common/stream_flags_common.h
+++ b/src/liblzma/common/stream_flags_common.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file stream_flags_common.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_STREAM_FLAGS_COMMON_H
diff --git a/src/liblzma/common/stream_flags_decoder.c b/src/liblzma/common/stream_flags_decoder.c
index b8d263b..522c98b 100644
--- a/src/liblzma/common/stream_flags_decoder.c
+++ b/src/liblzma/common/stream_flags_decoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file stream_flags_decoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "stream_flags_common.h"
diff --git a/src/liblzma/common/stream_flags_encoder.c b/src/liblzma/common/stream_flags_encoder.c
index b98ab17..f94b5cd 100644
--- a/src/liblzma/common/stream_flags_encoder.c
+++ b/src/liblzma/common/stream_flags_encoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file stream_flags_encoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "stream_flags_common.h"
diff --git a/src/liblzma/common/string_conversion.c b/src/liblzma/common/string_conversion.c
index d2c1e80..c899783 100644
--- a/src/liblzma/common/string_conversion.c
+++ b/src/liblzma/common/string_conversion.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file string_conversion.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "filter_common.h"
@@ -218,12 +217,14 @@ typedef struct {
uint16_t offset;
union {
+ // NVHPC has problems with unions that contain pointers that
+ // are not the first members, so keep "map" at the top.
+ const name_value_map *map;
+
struct {
uint32_t min;
uint32_t max;
} range;
-
- const name_value_map *map;
} u;
} option_map;
@@ -250,7 +251,9 @@ static const char *parse_options(const char **const str, const char *str_end,
|| defined(HAVE_ENCODER_IA64) \
|| defined(HAVE_DECODER_IA64) \
|| defined(HAVE_ENCODER_SPARC) \
- || defined(HAVE_DECODER_SPARC)
+ || defined(HAVE_DECODER_SPARC) \
+ || defined(HAVE_ENCODER_RISCV) \
+ || defined(HAVE_DECODER_RISCV)
static const option_map bcj_optmap[] = {
{
.name = "start",
@@ -509,6 +512,11 @@ static const struct {
&parse_bcj, bcj_optmap, 1, 1, true },
#endif
+#if defined(HAVE_ENCODER_RISCV) || defined(HAVE_DECODER_RISCV)
+ { "riscv", sizeof(lzma_options_bcj), LZMA_FILTER_RISCV,
+ &parse_bcj, bcj_optmap, 1, 1, true },
+#endif
+
#if defined(HAVE_ENCODER_POWERPC) || defined(HAVE_DECODER_POWERPC)
{ "powerpc", sizeof(lzma_options_bcj), LZMA_FILTER_POWERPC,
&parse_bcj, bcj_optmap, 1, 1, true },
@@ -994,6 +1002,12 @@ extern LZMA_API(const char *)
lzma_str_to_filters(const char *str, int *error_pos, lzma_filter *filters,
uint32_t flags, const lzma_allocator *allocator)
{
+ // If error_pos isn't NULL, *error_pos must always be set.
+ // liblzma <= 5.4.6 and <= 5.6.1 have a bug and don't do this
+ // when str == NULL or filters == NULL or flags are unsupported.
+ if (error_pos != NULL)
+ *error_pos = 0;
+
if (str == NULL || filters == NULL)
return "Unexpected NULL pointer argument(s) "
"to lzma_str_to_filters()";
diff --git a/src/liblzma/common/vli_decoder.c b/src/liblzma/common/vli_decoder.c
index af2799d..3254ccc 100644
--- a/src/liblzma/common/vli_decoder.c
+++ b/src/liblzma/common/vli_decoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file vli_decoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "common.h"
diff --git a/src/liblzma/common/vli_encoder.c b/src/liblzma/common/vli_encoder.c
index f864269..3859006 100644
--- a/src/liblzma/common/vli_encoder.c
+++ b/src/liblzma/common/vli_encoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file vli_encoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "common.h"
diff --git a/src/liblzma/common/vli_size.c b/src/liblzma/common/vli_size.c
index ec1b4fa..c8cb2ec 100644
--- a/src/liblzma/common/vli_size.c
+++ b/src/liblzma/common/vli_size.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file vli_size.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "common.h"
diff --git a/src/liblzma/delta/Makefile.inc b/src/liblzma/delta/Makefile.inc
index c7739b4..e5b919e 100644
--- a/src/liblzma/delta/Makefile.inc
+++ b/src/liblzma/delta/Makefile.inc
@@ -1,9 +1,5 @@
-##
+## SPDX-License-Identifier: 0BSD
## Author: Lasse Collin
-##
-## This file has been put into the public domain.
-## You can do whatever you want with this file.
-##
liblzma_la_SOURCES += \
delta/delta_common.c \
diff --git a/src/liblzma/delta/delta_common.c b/src/liblzma/delta/delta_common.c
index 4768201..5dbe253 100644
--- a/src/liblzma/delta/delta_common.c
+++ b/src/liblzma/delta/delta_common.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file delta_common.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "delta_common.h"
diff --git a/src/liblzma/delta/delta_common.h b/src/liblzma/delta/delta_common.h
index 7e7e1ba..bd09127 100644
--- a/src/liblzma/delta/delta_common.h
+++ b/src/liblzma/delta/delta_common.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file delta_common.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_DELTA_COMMON_H
diff --git a/src/liblzma/delta/delta_decoder.c b/src/liblzma/delta/delta_decoder.c
index 77cf65c..9f0d49c 100644
--- a/src/liblzma/delta/delta_decoder.c
+++ b/src/liblzma/delta/delta_decoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file delta_decoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "delta_decoder.h"
@@ -26,6 +25,11 @@ decode_buffer(lzma_delta_coder *coder, uint8_t *buffer, size_t size)
}
+// For an unknown reason NVIDIA HPC Compiler needs this pragma
+// to produce working code.
+#ifdef __NVCOMPILER
+# pragma routine novector
+#endif
static lzma_ret
delta_decode(void *coder_ptr, const lzma_allocator *allocator,
const uint8_t *restrict in, size_t *restrict in_pos,
diff --git a/src/liblzma/delta/delta_decoder.h b/src/liblzma/delta/delta_decoder.h
index ad89cc6..e2268ed 100644
--- a/src/liblzma/delta/delta_decoder.h
+++ b/src/liblzma/delta/delta_decoder.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file delta_decoder.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_DELTA_DECODER_H
diff --git a/src/liblzma/delta/delta_encoder.c b/src/liblzma/delta/delta_encoder.c
index 056bf74..ba4a50b 100644
--- a/src/liblzma/delta/delta_encoder.c
+++ b/src/liblzma/delta/delta_encoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file delta_encoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "delta_encoder.h"
diff --git a/src/liblzma/delta/delta_encoder.h b/src/liblzma/delta/delta_encoder.h
index 4ab9847..735f0ed 100644
--- a/src/liblzma/delta/delta_encoder.h
+++ b/src/liblzma/delta/delta_encoder.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file delta_encoder.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_DELTA_ENCODER_H
diff --git a/src/liblzma/delta/delta_private.h b/src/liblzma/delta/delta_private.h
index 0d6cb38..e54721a 100644
--- a/src/liblzma/delta/delta_private.h
+++ b/src/liblzma/delta/delta_private.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file delta_private.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_DELTA_PRIVATE_H
diff --git a/src/liblzma/liblzma.pc.in b/src/liblzma/liblzma.pc.in
index d077cb7..a432992 100644
--- a/src/liblzma/liblzma.pc.in
+++ b/src/liblzma/liblzma.pc.in
@@ -1,9 +1,5 @@
-#
+# SPDX-License-Identifier: 0BSD
# Author: Lasse Collin
-#
-# This file has been put into the public domain.
-# You can do whatever you want with this file.
-#
prefix=@prefix@
exec_prefix=@exec_prefix@
diff --git a/src/liblzma/liblzma_generic.map b/src/liblzma/liblzma_generic.map
index bb82167..f74c154 100644
--- a/src/liblzma/liblzma_generic.map
+++ b/src/liblzma/liblzma_generic.map
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: 0BSD */
+
XZ_5.0 {
global:
lzma_alone_decoder;
@@ -119,3 +121,8 @@ global:
lzma_str_list_filters;
lzma_str_to_filters;
} XZ_5.2;
+
+XZ_5.6.0 {
+global:
+ lzma_mt_block_size;
+} XZ_5.4;
diff --git a/src/liblzma/liblzma_linux.map b/src/liblzma/liblzma_linux.map
index 449f5fd..7e4b25e 100644
--- a/src/liblzma/liblzma_linux.map
+++ b/src/liblzma/liblzma_linux.map
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: 0BSD */
+
XZ_5.0 {
global:
lzma_alone_decoder;
@@ -134,3 +136,8 @@ global:
lzma_str_list_filters;
lzma_str_to_filters;
} XZ_5.2;
+
+XZ_5.6.0 {
+global:
+ lzma_mt_block_size;
+} XZ_5.4;
diff --git a/src/liblzma/liblzma_w32res.rc b/src/liblzma/liblzma_w32res.rc
index d4d8159..e225b19 100644
--- a/src/liblzma/liblzma_w32res.rc
+++ b/src/liblzma/liblzma_w32res.rc
@@ -1,8 +1,7 @@
+/* SPDX-License-Identifier: 0BSD */
+
/*
* Author: Lasse Collin
- *
- * This file has been put into the public domain.
- * You can do whatever you want with this file.
*/
#define MY_TYPE VFT_DLL
diff --git a/src/liblzma/lz/Makefile.inc b/src/liblzma/lz/Makefile.inc
index 75742a8..15235d7 100644
--- a/src/liblzma/lz/Makefile.inc
+++ b/src/liblzma/lz/Makefile.inc
@@ -1,9 +1,5 @@
-##
+## SPDX-License-Identifier: 0BSD
## Author: Lasse Collin
-##
-## This file has been put into the public domain.
-## You can do whatever you want with this file.
-##
if COND_ENCODER_LZ
liblzma_la_SOURCES += \
diff --git a/src/liblzma/lz/lz_decoder.c b/src/liblzma/lz/lz_decoder.c
index 06c95c1..92913f2 100644
--- a/src/liblzma/lz/lz_decoder.c
+++ b/src/liblzma/lz/lz_decoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file lz_decoder.c
@@ -6,9 +8,6 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
// liblzma supports multiple LZ77-based filters. The LZ part is shared
@@ -54,9 +53,10 @@ typedef struct {
static void
lz_decoder_reset(lzma_coder *coder)
{
- coder->dict.pos = 0;
+ coder->dict.pos = 2 * LZ_DICT_REPEAT_MAX;
coder->dict.full = 0;
- coder->dict.buf[coder->dict.size - 1] = '\0';
+ coder->dict.buf[2 * LZ_DICT_REPEAT_MAX - 1] = '\0';
+ coder->dict.has_wrapped = false;
coder->dict.need_reset = false;
return;
}
@@ -70,8 +70,15 @@ decode_buffer(lzma_coder *coder,
{
while (true) {
// Wrap the dictionary if needed.
- if (coder->dict.pos == coder->dict.size)
- coder->dict.pos = 0;
+ if (coder->dict.pos == coder->dict.size) {
+ // See the comment of #define LZ_DICT_REPEAT_MAX.
+ coder->dict.pos = LZ_DICT_REPEAT_MAX;
+ coder->dict.has_wrapped = true;
+ memcpy(coder->dict.buf, coder->dict.buf
+ + coder->dict.size
+ - LZ_DICT_REPEAT_MAX,
+ LZ_DICT_REPEAT_MAX);
+ }
// Store the current dictionary position. It is needed to know
// where to start copying to the out[] buffer.
@@ -253,21 +260,31 @@ lzma_lz_decoder_init(lzma_next_coder *next, const lzma_allocator *allocator,
// dictionary to the output buffer, since applications are
// recommended to give aligned buffers to liblzma.
//
+ // Reserve 2 * LZ_DICT_REPEAT_MAX bytes of extra space which is
+ // needed for alloc_size.
+ //
// Avoid integer overflow.
- if (lz_options.dict_size > SIZE_MAX - 15)
+ if (lz_options.dict_size > SIZE_MAX - 15 - 2 * LZ_DICT_REPEAT_MAX)
return LZMA_MEM_ERROR;
lz_options.dict_size = (lz_options.dict_size + 15) & ~((size_t)(15));
+ // Reserve extra space as explained in the comment
+ // of #define LZ_DICT_REPEAT_MAX.
+ const size_t alloc_size
+ = lz_options.dict_size + 2 * LZ_DICT_REPEAT_MAX;
+
// Allocate and initialize the dictionary.
- if (coder->dict.size != lz_options.dict_size) {
+ if (coder->dict.size != alloc_size) {
lzma_free(coder->dict.buf, allocator);
- coder->dict.buf
- = lzma_alloc(lz_options.dict_size, allocator);
+ coder->dict.buf = lzma_alloc(alloc_size, allocator);
if (coder->dict.buf == NULL)
return LZMA_MEM_ERROR;
- coder->dict.size = lz_options.dict_size;
+ // NOTE: Yes, alloc_size, not lz_options.dict_size. The way
+ // coder->dict.full is updated will take care that we will
+ // still reject distances larger than lz_options.dict_size.
+ coder->dict.size = alloc_size;
}
lz_decoder_reset(next->coder);
@@ -280,9 +297,12 @@ lzma_lz_decoder_init(lzma_next_coder *next, const lzma_allocator *allocator,
const size_t copy_size = my_min(lz_options.preset_dict_size,
lz_options.dict_size);
const size_t offset = lz_options.preset_dict_size - copy_size;
- memcpy(coder->dict.buf, lz_options.preset_dict + offset,
+ memcpy(coder->dict.buf + coder->dict.pos,
+ lz_options.preset_dict + offset,
copy_size);
- coder->dict.pos = copy_size;
+
+ // dict.pos isn't zero after lz_decoder_reset().
+ coder->dict.pos += copy_size;
coder->dict.full = copy_size;
}
diff --git a/src/liblzma/lz/lz_decoder.h b/src/liblzma/lz/lz_decoder.h
index ad80d4d..cb61b6e 100644
--- a/src/liblzma/lz/lz_decoder.h
+++ b/src/liblzma/lz/lz_decoder.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file lz_decoder.h
@@ -6,9 +8,6 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_LZ_DECODER_H
@@ -17,10 +16,28 @@
#include "common.h"
+/// Maximum length of a match rounded up to a nice power of 2 which is
+/// a good size for aligned memcpy(). The allocated dictionary buffer will
+/// be 2 * LZ_DICT_REPEAT_MAX bytes larger than the actual dictionary size:
+///
+/// (1) Every time the decoder reaches the end of the dictionary buffer,
+/// the last LZ_DICT_REPEAT_MAX bytes will be copied to the beginning.
+/// This way dict_repeat() will only need to copy from one place,
+/// never from both the end and beginning of the buffer.
+///
+/// (2) The other LZ_DICT_REPEAT_MAX bytes is kept as a buffer between
+/// the oldest byte still in the dictionary and the current write
+/// position. This way dict_repeat(dict, dict->size - 1, &len)
+/// won't need memmove() as the copying cannot overlap.
+///
+/// Note that memcpy() still cannot be used if distance < len.
+///
+/// LZMA's longest match length is 273 so pick a multiple of 16 above that.
+#define LZ_DICT_REPEAT_MAX 288
+
+
typedef struct {
- /// Pointer to the dictionary buffer. It can be an allocated buffer
- /// internal to liblzma, or it can a be a buffer given by the
- /// application when in single-call mode (not implemented yet).
+ /// Pointer to the dictionary buffer.
uint8_t *buf;
/// Write position in dictionary. The next byte will be written to
@@ -35,9 +52,16 @@ typedef struct {
/// Write limit
size_t limit;
- /// Size of the dictionary
+ /// Allocated size of buf. This is 2 * LZ_DICT_REPEAT_MAX bytes
+ /// larger than the actual dictionary size. This is enforced by
+ /// how the value for "full" is set; it can be at most
+ /// "size - 2 * LZ_DICT_REPEAT_MAX".
size_t size;
+ /// True once the dictionary has become full and the writing position
+ /// has been wrapped in decode_buffer() in lz_decoder.c.
+ bool has_wrapped;
+
/// True when dictionary should be reset before decoding more data.
bool need_reset;
@@ -103,7 +127,16 @@ static inline uint8_t
dict_get(const lzma_dict *const dict, const uint32_t distance)
{
return dict->buf[dict->pos - distance - 1
- + (distance < dict->pos ? 0 : dict->size)];
+ + (distance < dict->pos
+ ? 0 : dict->size - LZ_DICT_REPEAT_MAX)];
+}
+
+
+/// Optimized version of dict_get(dict, 0)
+static inline uint8_t
+dict_get0(const lzma_dict *const dict)
+{
+ return dict->buf[dict->pos - 1];
}
@@ -132,68 +165,51 @@ dict_repeat(lzma_dict *dict, uint32_t distance, uint32_t *len)
uint32_t left = my_min(dict_avail, *len);
*len -= left;
+ size_t back = dict->pos - distance - 1;
+ if (distance >= dict->pos)
+ back += dict->size - LZ_DICT_REPEAT_MAX;
+
// Repeat a block of data from the history. Because memcpy() is faster
// than copying byte by byte in a loop, the copying process gets split
- // into three cases.
+ // into two cases.
if (distance < left) {
// Source and target areas overlap, thus we can't use
// memcpy() nor even memmove() safely.
do {
- dict->buf[dict->pos] = dict_get(dict, distance);
- ++dict->pos;
+ dict->buf[dict->pos++] = dict->buf[back++];
} while (--left > 0);
-
- } else if (distance < dict->pos) {
- // The easiest and fastest case
- memcpy(dict->buf + dict->pos,
- dict->buf + dict->pos - distance - 1,
- left);
- dict->pos += left;
-
} else {
- // The bigger the dictionary, the more rare this
- // case occurs. We need to "wrap" the dict, thus
- // we might need two memcpy() to copy all the data.
- assert(dict->full == dict->size);
- const uint32_t copy_pos
- = dict->pos - distance - 1 + dict->size;
- uint32_t copy_size = dict->size - copy_pos;
-
- if (copy_size < left) {
- memmove(dict->buf + dict->pos, dict->buf + copy_pos,
- copy_size);
- dict->pos += copy_size;
- copy_size = left - copy_size;
- memcpy(dict->buf + dict->pos, dict->buf, copy_size);
- dict->pos += copy_size;
- } else {
- memmove(dict->buf + dict->pos, dict->buf + copy_pos,
- left);
- dict->pos += left;
- }
+ memcpy(dict->buf + dict->pos, dict->buf + back, left);
+ dict->pos += left;
}
// Update how full the dictionary is.
- if (dict->full < dict->pos)
- dict->full = dict->pos;
+ if (!dict->has_wrapped)
+ dict->full = dict->pos - 2 * LZ_DICT_REPEAT_MAX;
- return unlikely(*len != 0);
+ return *len != 0;
+}
+
+
+static inline void
+dict_put(lzma_dict *dict, uint8_t byte)
+{
+ dict->buf[dict->pos++] = byte;
+
+ if (!dict->has_wrapped)
+ dict->full = dict->pos - 2 * LZ_DICT_REPEAT_MAX;
}
/// Puts one byte into the dictionary. Returns true if the dictionary was
/// already full and the byte couldn't be added.
static inline bool
-dict_put(lzma_dict *dict, uint8_t byte)
+dict_put_safe(lzma_dict *dict, uint8_t byte)
{
if (unlikely(dict->pos == dict->limit))
return true;
- dict->buf[dict->pos++] = byte;
-
- if (dict->pos > dict->full)
- dict->full = dict->pos;
-
+ dict_put(dict, byte);
return false;
}
@@ -217,8 +233,8 @@ dict_write(lzma_dict *restrict dict, const uint8_t *restrict in,
*left -= lzma_bufcpy(in, in_pos, in_size,
dict->buf, &dict->pos, dict->limit);
- if (dict->pos > dict->full)
- dict->full = dict->pos;
+ if (!dict->has_wrapped)
+ dict->full = dict->pos - 2 * LZ_DICT_REPEAT_MAX;
return;
}
diff --git a/src/liblzma/lz/lz_encoder.c b/src/liblzma/lz/lz_encoder.c
index 5489085..4af23e1 100644
--- a/src/liblzma/lz/lz_encoder.c
+++ b/src/liblzma/lz/lz_encoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file lz_encoder.c
@@ -6,9 +8,6 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "lz_encoder.h"
@@ -196,9 +195,7 @@ lz_encoder_prepare(lzma_mf *mf, const lzma_allocator *allocator,
// For now, the dictionary size is limited to 1.5 GiB. This may grow
// in the future if needed, but it needs a little more work than just
// changing this check.
- if (lz_options->dict_size < LZMA_DICT_SIZE_MIN
- || lz_options->dict_size
- > (UINT32_C(1) << 30) + (UINT32_C(1) << 29)
+ if (!IS_ENC_DICT_SIZE_VALID(lz_options->dict_size)
|| lz_options->nice_len > lz_options->match_len_max)
return true;
@@ -549,7 +546,7 @@ lzma_lz_encoder_init(lzma_next_coder *next, const lzma_allocator *allocator,
lzma_lz_options *lz_options))
{
#if defined(HAVE_SMALL) && !defined(HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR)
- // We need that the CRC32 table has been initialized.
+ // The CRC32 table must be initialized.
lzma_crc32_init();
#endif
@@ -569,6 +566,8 @@ lzma_lz_encoder_init(lzma_next_coder *next, const lzma_allocator *allocator,
coder->lz.coder = NULL;
coder->lz.code = NULL;
coder->lz.end = NULL;
+ coder->lz.options_update = NULL;
+ coder->lz.set_out_limit = NULL;
// mf.size is initialized to silence Valgrind
// when used on optimized binaries (GCC may reorder
diff --git a/src/liblzma/lz/lz_encoder.h b/src/liblzma/lz/lz_encoder.h
index ffcba02..eb197c6 100644
--- a/src/liblzma/lz/lz_encoder.h
+++ b/src/liblzma/lz/lz_encoder.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file lz_encoder.h
@@ -6,9 +8,6 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_LZ_ENCODER_H
@@ -17,6 +16,14 @@
#include "common.h"
+// For now, the dictionary size is limited to 1.5 GiB. This may grow
+// in the future if needed, but it needs a little more work than just
+// changing this check.
+#define IS_ENC_DICT_SIZE_VALID(size) \
+ ((size) >= LZMA_DICT_SIZE_MIN \
+ && (size) <= (UINT32_C(1) << 30) + (UINT32_C(1) << 29))
+
+
/// A table of these is used by the LZ-based encoder to hold
/// the length-distance pairs found by the match finder.
typedef struct {
@@ -153,9 +160,13 @@ typedef struct {
/// Maximum search depth
uint32_t depth;
- /// TODO: Comment
+ /// Initial dictionary for the match finder to search.
const uint8_t *preset_dict;
+ /// If the preset dictionary is NULL, this value is ignored.
+ /// Otherwise this member must indicate the preset dictionary's
+ /// buffer size. If this size is larger than dict_size, then only
+ /// the dict_size sized tail of the preset_dict will be used.
uint32_t preset_dict_size;
} lzma_lz_options;
@@ -217,7 +228,7 @@ typedef struct {
// 3. The literals and matches are encoded using e.g. LZMA.
//
// The bytes that have been ran through the match finder, but not encoded yet,
-// are called `read ahead'.
+// are called 'read ahead'.
/// Get how many bytes the match finder hashes in its initial step.
diff --git a/src/liblzma/lz/lz_encoder_hash.h b/src/liblzma/lz/lz_encoder_hash.h
index 4d9971a..8ace82b 100644
--- a/src/liblzma/lz/lz_encoder_hash.h
+++ b/src/liblzma/lz/lz_encoder_hash.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file lz_encoder_hash.h
@@ -5,9 +7,6 @@
//
// Author: Igor Pavlov
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_LZ_ENCODER_HASH_H
diff --git a/src/liblzma/lz/lz_encoder_hash_table.h b/src/liblzma/lz/lz_encoder_hash_table.h
index 8c51717..2b3a60e 100644
--- a/src/liblzma/lz/lz_encoder_hash_table.h
+++ b/src/liblzma/lz/lz_encoder_hash_table.h
@@ -1,4 +1,6 @@
-/* This file has been automatically generated by crc32_tablegen.c. */
+// SPDX-License-Identifier: 0BSD
+
+// This file has been generated by crc32_tablegen.c.
const uint32_t lzma_lz_hash_table[256] = {
0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,
diff --git a/src/liblzma/lz/lz_encoder_mf.c b/src/liblzma/lz/lz_encoder_mf.c
index 1fdc2d7..557c261 100644
--- a/src/liblzma/lz/lz_encoder_mf.c
+++ b/src/liblzma/lz/lz_encoder_mf.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file lz_encoder_mf.c
@@ -6,9 +8,6 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "lz_encoder.h"
diff --git a/src/liblzma/lzma/Makefile.inc b/src/liblzma/lzma/Makefile.inc
index 25440d8..dca6b76 100644
--- a/src/liblzma/lzma/Makefile.inc
+++ b/src/liblzma/lzma/Makefile.inc
@@ -1,9 +1,5 @@
-##
+## SPDX-License-Identifier: 0BSD
## Author: Lasse Collin
-##
-## This file has been put into the public domain.
-## You can do whatever you want with this file.
-##
EXTRA_DIST += lzma/fastpos_tablegen.c
diff --git a/src/liblzma/lzma/fastpos.h b/src/liblzma/lzma/fastpos.h
index dbeb16f..d3969a7 100644
--- a/src/liblzma/lzma/fastpos.h
+++ b/src/liblzma/lzma/fastpos.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file fastpos.h
@@ -6,9 +8,6 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_FASTPOS_H
diff --git a/src/liblzma/lzma/fastpos_table.c b/src/liblzma/lzma/fastpos_table.c
index 6a3ceac..4e10e37 100644
--- a/src/liblzma/lzma/fastpos_table.c
+++ b/src/liblzma/lzma/fastpos_table.c
@@ -1,4 +1,6 @@
-/* This file has been automatically generated by fastpos_tablegen.c. */
+// SPDX-License-Identifier: 0BSD
+
+// This file has been generated by fastpos_tablegen.c.
#include "common.h"
#include "fastpos.h"
diff --git a/src/liblzma/lzma/fastpos_tablegen.c b/src/liblzma/lzma/fastpos_tablegen.c
index 57ed150..957ccb7 100644
--- a/src/liblzma/lzma/fastpos_tablegen.c
+++ b/src/liblzma/lzma/fastpos_tablegen.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file fastpos_tablegen.c
@@ -6,9 +8,6 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include <inttypes.h>
@@ -35,11 +34,13 @@ main(void)
fastpos[c] = slot_fast;
}
- printf("/* This file has been automatically generated "
- "by fastpos_tablegen.c. */\n\n"
- "#include \"common.h\"\n"
- "#include \"fastpos.h\"\n\n"
- "const uint8_t lzma_fastpos[1 << FASTPOS_BITS] = {");
+ // Split the SPDX string so that it won't accidentally match
+ // when tools search for the string.
+ printf("// SPDX" "-License-Identifier" ": 0BSD\n\n"
+ "// This file has been generated by fastpos_tablegen.c.\n\n"
+ "#include \"common.h\"\n"
+ "#include \"fastpos.h\"\n\n"
+ "const uint8_t lzma_fastpos[1 << FASTPOS_BITS] = {");
for (size_t i = 0; i < (1 << FASTPOS_BITS); ++i) {
if (i % 16 == 0)
diff --git a/src/liblzma/lzma/lzma2_decoder.c b/src/liblzma/lzma/lzma2_decoder.c
index 567df49..37ab253 100644
--- a/src/liblzma/lzma/lzma2_decoder.c
+++ b/src/liblzma/lzma/lzma2_decoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file lzma2_decoder.c
@@ -6,9 +8,6 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "lzma2_decoder.h"
diff --git a/src/liblzma/lzma/lzma2_decoder.h b/src/liblzma/lzma/lzma2_decoder.h
index ef2dcbf..cdd8b46 100644
--- a/src/liblzma/lzma/lzma2_decoder.h
+++ b/src/liblzma/lzma/lzma2_decoder.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file lzma2_decoder.h
@@ -6,9 +8,6 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_LZMA2_DECODER_H
diff --git a/src/liblzma/lzma/lzma2_encoder.c b/src/liblzma/lzma/lzma2_encoder.c
index 4b6b231..e20b75b 100644
--- a/src/liblzma/lzma/lzma2_encoder.c
+++ b/src/liblzma/lzma/lzma2_encoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file lzma2_encoder.c
@@ -6,9 +8,6 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "lz_encoder.h"
@@ -409,6 +408,9 @@ lzma_lzma2_block_size(const void *options)
{
const lzma_options_lzma *const opt = options;
+ if (!IS_ENC_DICT_SIZE_VALID(opt->dict_size))
+ return UINT64_MAX;
+
// Use at least 1 MiB to keep compression ratio better.
return my_max((uint64_t)(opt->dict_size) * 3, UINT64_C(1) << 20);
}
diff --git a/src/liblzma/lzma/lzma2_encoder.h b/src/liblzma/lzma/lzma2_encoder.h
index 515f183..29966a6 100644
--- a/src/liblzma/lzma/lzma2_encoder.h
+++ b/src/liblzma/lzma/lzma2_encoder.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file lzma2_encoder.h
@@ -6,9 +8,6 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_LZMA2_ENCODER_H
diff --git a/src/liblzma/lzma/lzma_common.h b/src/liblzma/lzma/lzma_common.h
index 9d040d9..c3c587f 100644
--- a/src/liblzma/lzma/lzma_common.h
+++ b/src/liblzma/lzma/lzma_common.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file lzma_common.h
@@ -6,9 +8,6 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_LZMA_COMMON_H
@@ -84,6 +83,20 @@ typedef enum {
? (state) - 3 \
: (state) - 6))
+/// Like update_literal(state) but when it is already known that
+/// is_literal_state(state) is true.
+#define update_literal_normal(state) \
+ state = ((state) <= STATE_SHORTREP_LIT_LIT \
+ ? STATE_LIT_LIT \
+ : (state) - 3);
+
+/// Like update_literal(state) but when it is already known that
+/// is_literal_state(state) is false.
+#define update_literal_matched(state) \
+ state = ((state) <= STATE_LIT_SHORTREP \
+ ? (state) - 3 \
+ : (state) - 6);
+
/// Indicate that the latest state was a match.
#define update_match(state) \
state = ((state) < LIT_STATES ? STATE_LIT_MATCH : STATE_NONLIT_MATCH)
@@ -112,31 +125,33 @@ typedef enum {
///
/// Match byte is used when the previous LZMA symbol was something else than
/// a literal (that is, it was some kind of match).
-#define LITERAL_CODER_SIZE 0x300
+#define LITERAL_CODER_SIZE UINT32_C(0x300)
/// Maximum number of literal coders
#define LITERAL_CODERS_MAX (1 << LZMA_LCLP_MAX)
+/// Calculates the literal_mask that literal_subcoder() needs.
+#define literal_mask_calc(lc, lp) \
+ ((UINT32_C(0x100) << (lp)) - (UINT32_C(0x100) >> (lc)))
+
/// Locate the literal coder for the next literal byte. The choice depends on
/// - the lowest literal_pos_bits bits of the position of the current
/// byte; and
/// - the highest literal_context_bits bits of the previous byte.
-#define literal_subcoder(probs, lc, lp_mask, pos, prev_byte) \
- ((probs)[(((pos) & (lp_mask)) << (lc)) \
- + ((uint32_t)(prev_byte) >> (8U - (lc)))])
+#define literal_subcoder(probs, lc, literal_mask, pos, prev_byte) \
+ ((probs) + UINT32_C(3) * \
+ (((((pos) << 8) + (prev_byte)) & (literal_mask)) << (lc)))
static inline void
-literal_init(probability (*probs)[LITERAL_CODER_SIZE],
- uint32_t lc, uint32_t lp)
+literal_init(probability *probs, uint32_t lc, uint32_t lp)
{
assert(lc + lp <= LZMA_LCLP_MAX);
- const uint32_t coders = 1U << (lc + lp);
+ const size_t coders = LITERAL_CODER_SIZE << (lc + lp);
- for (uint32_t i = 0; i < coders; ++i)
- for (uint32_t j = 0; j < LITERAL_CODER_SIZE; ++j)
- bit_reset(probs[i][j]);
+ for (size_t i = 0; i < coders; ++i)
+ bit_reset(probs[i]);
return;
}
diff --git a/src/liblzma/lzma/lzma_decoder.c b/src/liblzma/lzma/lzma_decoder.c
index 26c148a..0abed02 100644
--- a/src/liblzma/lzma/lzma_decoder.c
+++ b/src/liblzma/lzma/lzma_decoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file lzma_decoder.c
@@ -5,9 +7,7 @@
///
// Authors: Igor Pavlov
// Lasse Collin
-//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
+// Jia Tan
//
///////////////////////////////////////////////////////////////////////////////
@@ -22,25 +22,20 @@
# pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
#endif
+// Minimum number of input bytes to safely decode one LZMA symbol.
+// The worst case is that we decode 22 bits using probabilities and 26
+// direct bits. This may decode at maximum 20 bytes of input.
+#define LZMA_IN_REQUIRED 20
-#ifdef HAVE_SMALL
// Macros for (somewhat) size-optimized code.
-#define seq_4(seq) seq
-
-#define seq_6(seq) seq
-
-#define seq_8(seq) seq
-
-#define seq_len(seq) \
- seq ## _CHOICE, \
- seq ## _CHOICE2, \
- seq ## _BITTREE
-
+// This is used to decode the match length (how many bytes must be repeated
+// from the dictionary). This version is used in the Resumable mode and
+// does not unroll any loops.
#define len_decode(target, ld, pos_state, seq) \
do { \
case seq ## _CHOICE: \
- rc_if_0(ld.choice, seq ## _CHOICE) { \
+ rc_if_0_safe(ld.choice, seq ## _CHOICE) { \
rc_update_0(ld.choice); \
probs = ld.low[pos_state];\
limit = LEN_LOW_SYMBOLS; \
@@ -48,7 +43,7 @@ case seq ## _CHOICE: \
} else { \
rc_update_1(ld.choice); \
case seq ## _CHOICE2: \
- rc_if_0(ld.choice2, seq ## _CHOICE2) { \
+ rc_if_0_safe(ld.choice2, seq ## _CHOICE2) { \
rc_update_0(ld.choice2); \
probs = ld.mid[pos_state]; \
limit = LEN_MID_SYMBOLS; \
@@ -64,98 +59,39 @@ case seq ## _CHOICE2: \
symbol = 1; \
case seq ## _BITTREE: \
do { \
- rc_bit(probs[symbol], , , seq ## _BITTREE); \
+ rc_bit_safe(probs[symbol], , , seq ## _BITTREE); \
} while (symbol < limit); \
target += symbol - limit; \
} while (0)
-#else // HAVE_SMALL
-
-// Unrolled versions
-#define seq_4(seq) \
- seq ## 0, \
- seq ## 1, \
- seq ## 2, \
- seq ## 3
-
-#define seq_6(seq) \
- seq ## 0, \
- seq ## 1, \
- seq ## 2, \
- seq ## 3, \
- seq ## 4, \
- seq ## 5
-
-#define seq_8(seq) \
- seq ## 0, \
- seq ## 1, \
- seq ## 2, \
- seq ## 3, \
- seq ## 4, \
- seq ## 5, \
- seq ## 6, \
- seq ## 7
-
-#define seq_len(seq) \
- seq ## _CHOICE, \
- seq ## _LOW0, \
- seq ## _LOW1, \
- seq ## _LOW2, \
- seq ## _CHOICE2, \
- seq ## _MID0, \
- seq ## _MID1, \
- seq ## _MID2, \
- seq ## _HIGH0, \
- seq ## _HIGH1, \
- seq ## _HIGH2, \
- seq ## _HIGH3, \
- seq ## _HIGH4, \
- seq ## _HIGH5, \
- seq ## _HIGH6, \
- seq ## _HIGH7
-#define len_decode(target, ld, pos_state, seq) \
+// This is the faster version of the match length decoder that does not
+// worry about being resumable. It unrolls the bittree decoding loop.
+#define len_decode_fast(target, ld, pos_state) \
do { \
symbol = 1; \
-case seq ## _CHOICE: \
- rc_if_0(ld.choice, seq ## _CHOICE) { \
+ rc_if_0(ld.choice) { \
rc_update_0(ld.choice); \
- rc_bit_case(ld.low[pos_state][symbol], , , seq ## _LOW0); \
- rc_bit_case(ld.low[pos_state][symbol], , , seq ## _LOW1); \
- rc_bit_case(ld.low[pos_state][symbol], , , seq ## _LOW2); \
- target = symbol - LEN_LOW_SYMBOLS + MATCH_LEN_MIN; \
+ rc_bittree3(ld.low[pos_state], \
+ -LEN_LOW_SYMBOLS + MATCH_LEN_MIN); \
+ target = symbol; \
} else { \
rc_update_1(ld.choice); \
-case seq ## _CHOICE2: \
- rc_if_0(ld.choice2, seq ## _CHOICE2) { \
+ rc_if_0(ld.choice2) { \
rc_update_0(ld.choice2); \
- rc_bit_case(ld.mid[pos_state][symbol], , , \
- seq ## _MID0); \
- rc_bit_case(ld.mid[pos_state][symbol], , , \
- seq ## _MID1); \
- rc_bit_case(ld.mid[pos_state][symbol], , , \
- seq ## _MID2); \
- target = symbol - LEN_MID_SYMBOLS \
- + MATCH_LEN_MIN + LEN_LOW_SYMBOLS; \
+ rc_bittree3(ld.mid[pos_state], -LEN_MID_SYMBOLS \
+ + MATCH_LEN_MIN + LEN_LOW_SYMBOLS); \
+ target = symbol; \
} else { \
rc_update_1(ld.choice2); \
- rc_bit_case(ld.high[symbol], , , seq ## _HIGH0); \
- rc_bit_case(ld.high[symbol], , , seq ## _HIGH1); \
- rc_bit_case(ld.high[symbol], , , seq ## _HIGH2); \
- rc_bit_case(ld.high[symbol], , , seq ## _HIGH3); \
- rc_bit_case(ld.high[symbol], , , seq ## _HIGH4); \
- rc_bit_case(ld.high[symbol], , , seq ## _HIGH5); \
- rc_bit_case(ld.high[symbol], , , seq ## _HIGH6); \
- rc_bit_case(ld.high[symbol], , , seq ## _HIGH7); \
- target = symbol - LEN_HIGH_SYMBOLS \
+ rc_bittree8(ld.high, -LEN_HIGH_SYMBOLS \
+ MATCH_LEN_MIN \
- + LEN_LOW_SYMBOLS + LEN_MID_SYMBOLS; \
+ + LEN_LOW_SYMBOLS + LEN_MID_SYMBOLS); \
+ target = symbol; \
} \
} \
} while (0)
-#endif // HAVE_SMALL
-
/// Length decoder probabilities; see comments in lzma_common.h.
typedef struct {
@@ -173,7 +109,7 @@ typedef struct {
///////////////////
/// Literals; see comments in lzma_common.h.
- probability literal[LITERAL_CODERS_MAX][LITERAL_CODER_SIZE];
+ probability literal[LITERAL_CODERS_MAX * LITERAL_CODER_SIZE];
/// If 1, it's a match. Otherwise it's a single 8-bit literal.
probability is_match[STATES][POS_STATES_MAX];
@@ -232,7 +168,7 @@ typedef struct {
uint32_t pos_mask; // (1U << pb) - 1
uint32_t literal_context_bits;
- uint32_t literal_pos_mask;
+ uint32_t literal_mask;
/// Uncompressed size as bytes, or LZMA_VLI_UNKNOWN if end of
/// payload marker is expected.
@@ -251,22 +187,26 @@ typedef struct {
enum {
SEQ_NORMALIZE,
SEQ_IS_MATCH,
- seq_8(SEQ_LITERAL),
- seq_8(SEQ_LITERAL_MATCHED),
+ SEQ_LITERAL,
+ SEQ_LITERAL_MATCHED,
SEQ_LITERAL_WRITE,
SEQ_IS_REP,
- seq_len(SEQ_MATCH_LEN),
- seq_6(SEQ_DIST_SLOT),
+ SEQ_MATCH_LEN_CHOICE,
+ SEQ_MATCH_LEN_CHOICE2,
+ SEQ_MATCH_LEN_BITTREE,
+ SEQ_DIST_SLOT,
SEQ_DIST_MODEL,
SEQ_DIRECT,
- seq_4(SEQ_ALIGN),
+ SEQ_ALIGN,
SEQ_EOPM,
SEQ_IS_REP0,
SEQ_SHORTREP,
SEQ_IS_REP0_LONG,
SEQ_IS_REP1,
SEQ_IS_REP2,
- seq_len(SEQ_REP_LEN),
+ SEQ_REP_LEN_CHOICE,
+ SEQ_REP_LEN_CHOICE2,
+ SEQ_REP_LEN_BITTREE,
SEQ_COPY,
} sequence;
@@ -321,7 +261,7 @@ lzma_decode(void *coder_ptr, lzma_dict *restrict dictptr,
const size_t dict_start = dict.pos;
// Range decoder
- rc_to_local(coder->rc, *in_pos);
+ rc_to_local(coder->rc, *in_pos, LZMA_IN_REQUIRED);
// State
uint32_t state = coder->state;
@@ -340,7 +280,7 @@ lzma_decode(void *coder_ptr, lzma_dict *restrict dictptr,
uint32_t offset = coder->offset;
uint32_t len = coder->len;
- const uint32_t literal_pos_mask = coder->literal_pos_mask;
+ const uint32_t literal_mask = coder->literal_mask;
const uint32_t literal_context_bits = coder->literal_context_bits;
// Temporary variables
@@ -367,8 +307,24 @@ lzma_decode(void *coder_ptr, lzma_dict *restrict dictptr,
might_finish_without_eopm = true;
}
- // The main decoder loop. The "switch" is used to restart the decoder at
- // correct location. Once restarted, the "switch" is no longer used.
+ // The main decoder loop. The "switch" is used to resume the decoder at
+ // correct location. Once resumed, the "switch" is no longer used.
+ // The decoder loops is split into two modes:
+ //
+ // 1 - Non-resumable mode (fast). This is used when it is guaranteed
+ // there is enough input to decode the next symbol. If the output
+ // limit is reached, then the decoder loop will save the place
+ // for the resumable mode to continue. This mode is not used if
+ // HAVE_SMALL is defined. This is faster than Resumable mode
+ // because it reduces the number of branches needed and allows
+ // for more compiler optimizations.
+ //
+ // 2 - Resumable mode (slow). This is used when a previous decoder
+ // loop did not have enough space in the input or output buffers
+ // to complete. It uses sequence enum values to set remind
+ // coder->sequence where to resume in the decoder loop. This
+ // is the only mode used when HAVE_SMALL is defined.
+
switch (coder->sequence)
while (true) {
// Calculate new pos_state. This is skipped on the first loop
@@ -376,13 +332,339 @@ lzma_decode(void *coder_ptr, lzma_dict *restrict dictptr,
// variables.
pos_state = dict.pos & pos_mask;
+#ifndef HAVE_SMALL
+
+ ///////////////////////////////
+ // Non-resumable Mode (fast) //
+ ///////////////////////////////
+
+ // Go to Resumable mode (1) if there is not enough input to
+ // safely decode any possible LZMA symbol or (2) if the
+ // dictionary is full, which may need special checks that
+ // are only done in the Resumable mode.
+ if (unlikely(!rc_is_fast_allowed()
+ || dict.pos == dict.limit))
+ goto slow;
+
+ // Decode the first bit from the next LZMA symbol.
+ // If the bit is a 0, then we handle it as a literal.
+ // If the bit is a 1, then it is a match of previously
+ // decoded data.
+ rc_if_0(coder->is_match[state][pos_state]) {
+ /////////////////////
+ // Decode literal. //
+ /////////////////////
+
+ // Update the RC that we have decoded a 0.
+ rc_update_0(coder->is_match[state][pos_state]);
+
+ // Get the correct probability array from lp and
+ // lc params.
+ probs = literal_subcoder(coder->literal,
+ literal_context_bits, literal_mask,
+ dict.pos, dict_get0(&dict));
+
+ if (is_literal_state(state)) {
+ update_literal_normal(state);
+
+ // Decode literal without match byte.
+ rc_bittree8(probs, 0);
+ } else {
+ update_literal_matched(state);
+
+ // Decode literal with match byte.
+ rc_matched_literal(probs,
+ dict_get(&dict, rep0));
+ }
+
+ // Write decoded literal to dictionary
+ dict_put(&dict, symbol);
+ continue;
+ }
+
+ ///////////////////
+ // Decode match. //
+ ///////////////////
+
+ // Instead of a new byte we are going to decode a
+ // distance-length pair. The distance represents how far
+ // back in the dictionary to begin copying. The length
+ // represents how many bytes to copy.
+
+ rc_update_1(coder->is_match[state][pos_state]);
+
+ rc_if_0(coder->is_rep[state]) {
+ ///////////////////
+ // Simple match. //
+ ///////////////////
+
+ // Not a repeated match. In this case,
+ // the length (how many bytes to copy) must be
+ // decoded first. Then, the distance (where to
+ // start copying) is decoded.
+ //
+ // This is also how we know when we are done
+ // decoding. If the distance decodes to UINT32_MAX,
+ // then we know to stop decoding (end of payload
+ // marker).
+
+ rc_update_0(coder->is_rep[state]);
+ update_match(state);
+
+ // The latest three match distances are kept in
+ // memory in case there are repeated matches.
+ rep3 = rep2;
+ rep2 = rep1;
+ rep1 = rep0;
+
+ // Decode the length of the match.
+ len_decode_fast(len, coder->match_len_decoder,
+ pos_state);
+
+ // Next, decode the distance into rep0.
+
+ // The next 6 bits determine how to decode the
+ // rest of the distance.
+ probs = coder->dist_slot[get_dist_state(len)];
+
+ rc_bittree6(probs, -DIST_SLOTS);
+ assert(symbol <= 63);
+
+ if (symbol < DIST_MODEL_START) {
+ // If the decoded symbol is < DIST_MODEL_START
+ // then we use its value directly as the
+ // match distance. No other bits are needed.
+ // The only possible distance values
+ // are [0, 3].
+ rep0 = symbol;
+ } else {
+ // Use the first two bits of symbol as the
+ // highest bits of the match distance.
+
+ // "limit" represents the number of low bits
+ // to decode.
+ limit = (symbol >> 1) - 1;
+ assert(limit >= 1 && limit <= 30);
+ rep0 = 2 + (symbol & 1);
+
+ if (symbol < DIST_MODEL_END) {
+ // When symbol is > DIST_MODEL_START,
+ // but symbol < DIST_MODEL_END, then
+ // it can decode distances between
+ // [4, 127].
+ assert(limit <= 5);
+ rep0 <<= limit;
+ assert(rep0 <= 96);
+
+ // -1 is fine, because we start
+ // decoding at probs[1], not probs[0].
+ // NOTE: This violates the C standard,
+ // since we are doing pointer
+ // arithmetic past the beginning of
+ // the array.
+ assert((int32_t)(rep0 - symbol - 1)
+ >= -1);
+ assert((int32_t)(rep0 - symbol - 1)
+ <= 82);
+ probs = coder->pos_special + rep0
+ - symbol - 1;
+ symbol = 1;
+ offset = 1;
+
+ // Variable number (1-5) of bits
+ // from a reverse bittree. This
+ // isn't worth manual unrolling.
+ //
+ // NOTE: Making one or many of the
+ // variables (probs, symbol, offset,
+ // or limit) local here (instead of
+ // using those declared outside the
+ // main loop) can affect code size
+ // and performance which isn't a
+ // surprise but it's not so clear
+ // what is the best.
+ do {
+ rc_bit_add_if_1(probs,
+ rep0, offset);
+ offset <<= 1;
+ } while (--limit > 0);
+ } else {
+ // The distance is >= 128. Decode the
+ // lower bits without probabilities
+ // except the lowest four bits.
+ assert(symbol >= 14);
+ assert(limit >= 6);
+
+ limit -= ALIGN_BITS;
+ assert(limit >= 2);
+
+ rc_direct(rep0, limit);
+
+ // Decode the lowest four bits using
+ // probabilities.
+ rep0 <<= ALIGN_BITS;
+ rc_bittree_rev4(coder->pos_align);
+ rep0 += symbol;
+
+ // If the end of payload marker (EOPM)
+ // is detected, jump to the safe code.
+ // The EOPM handling isn't speed
+ // critical at all.
+ //
+ // A final normalization is needed
+ // after the EOPM (there can be a
+ // dummy byte to read in some cases).
+ // If the normalization was done here
+ // in the fast code, it would need to
+ // be taken into account in the value
+ // of LZMA_IN_REQUIRED. Using the
+ // safe code allows keeping
+ // LZMA_IN_REQUIRED as 20 instead of
+ // 21.
+ if (rep0 == UINT32_MAX)
+ goto eopm;
+ }
+ }
+
+ // Validate the distance we just decoded.
+ if (unlikely(!dict_is_distance_valid(&dict, rep0))) {
+ ret = LZMA_DATA_ERROR;
+ goto out;
+ }
+
+ } else {
+ rc_update_1(coder->is_rep[state]);
+
+ /////////////////////
+ // Repeated match. //
+ /////////////////////
+
+ // The match distance is a value that we have decoded
+ // recently. The latest four match distances are
+ // available as rep0, rep1, rep2 and rep3. We will
+ // now decode which of them is the new distance.
+ //
+ // There cannot be a match if we haven't produced
+ // any output, so check that first.
+ if (unlikely(!dict_is_distance_valid(&dict, 0))) {
+ ret = LZMA_DATA_ERROR;
+ goto out;
+ }
+
+ rc_if_0(coder->is_rep0[state]) {
+ rc_update_0(coder->is_rep0[state]);
+ // The distance is rep0.
+
+ // Decode the next bit to determine if 1 byte
+ // should be copied from rep0 distance or
+ // if the number of bytes needs to be decoded.
+
+ // If the next bit is 0, then it is a
+ // "Short Rep Match" and only 1 bit is copied.
+ // Otherwise, the length of the match is
+ // decoded after the "else" statement.
+ rc_if_0(coder->is_rep0_long[state][pos_state]) {
+ rc_update_0(coder->is_rep0_long[
+ state][pos_state]);
+
+ update_short_rep(state);
+ dict_put(&dict, dict_get(&dict, rep0));
+ continue;
+ }
+
+ // Repeating more than one byte at
+ // distance of rep0.
+ rc_update_1(coder->is_rep0_long[
+ state][pos_state]);
+
+ } else {
+ rc_update_1(coder->is_rep0[state]);
+
+ // The distance is rep1, rep2 or rep3. Once
+ // we find out which one of these three, it
+ // is stored to rep0 and rep1, rep2 and rep3
+ // are updated accordingly. There is no
+ // "Short Rep Match" option, so the length
+ // of the match must always be decoded next.
+ rc_if_0(coder->is_rep1[state]) {
+ // The distance is rep1.
+ rc_update_0(coder->is_rep1[state]);
+
+ const uint32_t distance = rep1;
+ rep1 = rep0;
+ rep0 = distance;
+
+ } else {
+ rc_update_1(coder->is_rep1[state]);
+
+ rc_if_0(coder->is_rep2[state]) {
+ // The distance is rep2.
+ rc_update_0(coder->is_rep2[
+ state]);
+
+ const uint32_t distance = rep2;
+ rep2 = rep1;
+ rep1 = rep0;
+ rep0 = distance;
+
+ } else {
+ // The distance is rep3.
+ rc_update_1(coder->is_rep2[
+ state]);
+
+ const uint32_t distance = rep3;
+ rep3 = rep2;
+ rep2 = rep1;
+ rep1 = rep0;
+ rep0 = distance;
+ }
+ }
+ }
+
+ update_long_rep(state);
+
+ // Decode the length of the repeated match.
+ len_decode_fast(len, coder->rep_len_decoder,
+ pos_state);
+ }
+
+ /////////////////////////////////
+ // Repeat from history buffer. //
+ /////////////////////////////////
+
+ // The length is always between these limits. There is no way
+ // to trigger the algorithm to set len outside this range.
+ assert(len >= MATCH_LEN_MIN);
+ assert(len <= MATCH_LEN_MAX);
+
+ // Repeat len bytes from distance of rep0.
+ if (unlikely(dict_repeat(&dict, rep0, &len))) {
+ coder->sequence = SEQ_COPY;
+ goto out;
+ }
+
+ continue;
+
+slow:
+#endif
+ ///////////////////////////
+ // Resumable Mode (slow) //
+ ///////////////////////////
+
+ // This is very similar to Non-resumable Mode, so most of the
+ // comments are not repeated. The main differences are:
+ // - case labels are used to resume at the correct location.
+ // - Loops are not unrolled.
+ // - Range coder macros take an extra sequence argument
+ // so they can save to coder->sequence the location to
+ // resume in case there is not enough input.
case SEQ_NORMALIZE:
case SEQ_IS_MATCH:
if (unlikely(might_finish_without_eopm
&& dict.pos == dict.limit)) {
// In rare cases there is a useless byte that needs
// to be read anyway.
- rc_normalize(SEQ_NORMALIZE);
+ rc_normalize_safe(SEQ_NORMALIZE);
// If the range decoder state is such that we can
// be at the end of the LZMA stream, then the
@@ -405,49 +687,37 @@ lzma_decode(void *coder_ptr, lzma_dict *restrict dictptr,
eopm_is_valid = true;
}
- rc_if_0(coder->is_match[state][pos_state], SEQ_IS_MATCH) {
- rc_update_0(coder->is_match[state][pos_state]);
+ rc_if_0_safe(coder->is_match[state][pos_state], SEQ_IS_MATCH) {
+ /////////////////////
+ // Decode literal. //
+ /////////////////////
- // It's a literal i.e. a single 8-bit byte.
+ rc_update_0(coder->is_match[state][pos_state]);
probs = literal_subcoder(coder->literal,
- literal_context_bits, literal_pos_mask,
- dict.pos, dict_get(&dict, 0));
+ literal_context_bits, literal_mask,
+ dict.pos, dict_get0(&dict));
symbol = 1;
if (is_literal_state(state)) {
+ update_literal_normal(state);
+
// Decode literal without match byte.
-#ifdef HAVE_SMALL
+ // The "slow" version does not unroll
+ // the loop.
case SEQ_LITERAL:
do {
- rc_bit(probs[symbol], , , SEQ_LITERAL);
+ rc_bit_safe(probs[symbol], , ,
+ SEQ_LITERAL);
} while (symbol < (1 << 8));
-#else
- rc_bit_case(probs[symbol], , , SEQ_LITERAL0);
- rc_bit_case(probs[symbol], , , SEQ_LITERAL1);
- rc_bit_case(probs[symbol], , , SEQ_LITERAL2);
- rc_bit_case(probs[symbol], , , SEQ_LITERAL3);
- rc_bit_case(probs[symbol], , , SEQ_LITERAL4);
- rc_bit_case(probs[symbol], , , SEQ_LITERAL5);
- rc_bit_case(probs[symbol], , , SEQ_LITERAL6);
- rc_bit_case(probs[symbol], , , SEQ_LITERAL7);
-#endif
} else {
+ update_literal_matched(state);
+
// Decode literal with match byte.
- //
- // We store the byte we compare against
- // ("match byte") to "len" to minimize the
- // number of variables we need to store
- // between decoder calls.
len = (uint32_t)(dict_get(&dict, rep0)) << 1;
- // The usage of "offset" allows omitting some
- // branches, which should give tiny speed
- // improvement on some CPUs. "offset" gets
- // set to zero if match_bit didn't match.
offset = 0x100;
-#ifdef HAVE_SMALL
case SEQ_LITERAL_MATCHED:
do {
const uint32_t match_bit
@@ -456,7 +726,7 @@ lzma_decode(void *coder_ptr, lzma_dict *restrict dictptr,
= offset + match_bit
+ symbol;
- rc_bit(probs[subcoder_index],
+ rc_bit_safe(probs[subcoder_index],
offset &= ~match_bit,
offset &= match_bit,
SEQ_LITERAL_MATCHED);
@@ -469,61 +739,10 @@ lzma_decode(void *coder_ptr, lzma_dict *restrict dictptr,
len <<= 1;
} while (symbol < (1 << 8));
-#else
- // Unroll the loop.
- uint32_t match_bit;
- uint32_t subcoder_index;
-
-# define d(seq) \
- case seq: \
- match_bit = len & offset; \
- subcoder_index = offset + match_bit + symbol; \
- rc_bit(probs[subcoder_index], \
- offset &= ~match_bit, \
- offset &= match_bit, \
- seq)
-
- d(SEQ_LITERAL_MATCHED0);
- len <<= 1;
- d(SEQ_LITERAL_MATCHED1);
- len <<= 1;
- d(SEQ_LITERAL_MATCHED2);
- len <<= 1;
- d(SEQ_LITERAL_MATCHED3);
- len <<= 1;
- d(SEQ_LITERAL_MATCHED4);
- len <<= 1;
- d(SEQ_LITERAL_MATCHED5);
- len <<= 1;
- d(SEQ_LITERAL_MATCHED6);
- len <<= 1;
- d(SEQ_LITERAL_MATCHED7);
-# undef d
-#endif
}
- //update_literal(state);
- // Use a lookup table to update to literal state,
- // since compared to other state updates, this would
- // need two branches.
- static const lzma_lzma_state next_state[] = {
- STATE_LIT_LIT,
- STATE_LIT_LIT,
- STATE_LIT_LIT,
- STATE_LIT_LIT,
- STATE_MATCH_LIT_LIT,
- STATE_REP_LIT_LIT,
- STATE_SHORTREP_LIT_LIT,
- STATE_MATCH_LIT,
- STATE_REP_LIT,
- STATE_SHORTREP_LIT,
- STATE_MATCH_LIT,
- STATE_REP_LIT
- };
- state = next_state[state];
-
case SEQ_LITERAL_WRITE:
- if (unlikely(dict_put(&dict, symbol))) {
+ if (dict_put_safe(&dict, symbol)) {
coder->sequence = SEQ_LITERAL_WRITE;
goto out;
}
@@ -531,64 +750,47 @@ lzma_decode(void *coder_ptr, lzma_dict *restrict dictptr,
continue;
}
- // Instead of a new byte we are going to get a byte range
- // (distance and length) which will be repeated from our
- // output history.
+ ///////////////////
+ // Decode match. //
+ ///////////////////
rc_update_1(coder->is_match[state][pos_state]);
case SEQ_IS_REP:
- rc_if_0(coder->is_rep[state], SEQ_IS_REP) {
- // Not a repeated match
+ rc_if_0_safe(coder->is_rep[state], SEQ_IS_REP) {
+ ///////////////////
+ // Simple match. //
+ ///////////////////
+
rc_update_0(coder->is_rep[state]);
update_match(state);
- // The latest three match distances are kept in
- // memory in case there are repeated matches.
rep3 = rep2;
rep2 = rep1;
rep1 = rep0;
- // Decode the length of the match.
len_decode(len, coder->match_len_decoder,
pos_state, SEQ_MATCH_LEN);
- // Prepare to decode the highest two bits of the
- // match distance.
probs = coder->dist_slot[get_dist_state(len)];
symbol = 1;
-#ifdef HAVE_SMALL
case SEQ_DIST_SLOT:
do {
- rc_bit(probs[symbol], , , SEQ_DIST_SLOT);
+ rc_bit_safe(probs[symbol], , , SEQ_DIST_SLOT);
} while (symbol < DIST_SLOTS);
-#else
- rc_bit_case(probs[symbol], , , SEQ_DIST_SLOT0);
- rc_bit_case(probs[symbol], , , SEQ_DIST_SLOT1);
- rc_bit_case(probs[symbol], , , SEQ_DIST_SLOT2);
- rc_bit_case(probs[symbol], , , SEQ_DIST_SLOT3);
- rc_bit_case(probs[symbol], , , SEQ_DIST_SLOT4);
- rc_bit_case(probs[symbol], , , SEQ_DIST_SLOT5);
-#endif
- // Get rid of the highest bit that was needed for
- // indexing of the probability array.
+
symbol -= DIST_SLOTS;
assert(symbol <= 63);
if (symbol < DIST_MODEL_START) {
- // Match distances [0, 3] have only two bits.
rep0 = symbol;
} else {
- // Decode the lowest [1, 29] bits of
- // the match distance.
limit = (symbol >> 1) - 1;
assert(limit >= 1 && limit <= 30);
rep0 = 2 + (symbol & 1);
if (symbol < DIST_MODEL_END) {
- // Prepare to decode the low bits for
- // a distance of [4, 127].
assert(limit <= 5);
rep0 <<= limit;
assert(rep0 <= 96);
@@ -607,95 +809,36 @@ lzma_decode(void *coder_ptr, lzma_dict *restrict dictptr,
symbol = 1;
offset = 0;
case SEQ_DIST_MODEL:
-#ifdef HAVE_SMALL
do {
- rc_bit(probs[symbol], ,
+ rc_bit_safe(probs[symbol], ,
rep0 += 1U << offset,
SEQ_DIST_MODEL);
} while (++offset < limit);
-#else
- switch (limit) {
- case 5:
- assert(offset == 0);
- rc_bit(probs[symbol], ,
- rep0 += 1U,
- SEQ_DIST_MODEL);
- ++offset;
- --limit;
- case 4:
- rc_bit(probs[symbol], ,
- rep0 += 1U << offset,
- SEQ_DIST_MODEL);
- ++offset;
- --limit;
- case 3:
- rc_bit(probs[symbol], ,
- rep0 += 1U << offset,
- SEQ_DIST_MODEL);
- ++offset;
- --limit;
- case 2:
- rc_bit(probs[symbol], ,
- rep0 += 1U << offset,
- SEQ_DIST_MODEL);
- ++offset;
- --limit;
- case 1:
- // We need "symbol" only for
- // indexing the probability
- // array, thus we can use
- // rc_bit_last() here to omit
- // the unneeded updating of
- // "symbol".
- rc_bit_last(probs[symbol], ,
- rep0 += 1U << offset,
- SEQ_DIST_MODEL);
- }
-#endif
} else {
- // The distance is >= 128. Decode the
- // lower bits without probabilities
- // except the lowest four bits.
assert(symbol >= 14);
assert(limit >= 6);
limit -= ALIGN_BITS;
assert(limit >= 2);
case SEQ_DIRECT:
- // Not worth manual unrolling
- do {
- rc_direct(rep0, SEQ_DIRECT);
- } while (--limit > 0);
+ rc_direct_safe(rep0, limit,
+ SEQ_DIRECT);
- // Decode the lowest four bits using
- // probabilities.
rep0 <<= ALIGN_BITS;
- symbol = 1;
-#ifdef HAVE_SMALL
- offset = 0;
+ symbol = 0;
+ offset = 1;
case SEQ_ALIGN:
do {
- rc_bit(coder->pos_align[
- symbol], ,
- rep0 += 1U << offset,
+ rc_bit_last_safe(
+ coder->pos_align[
+ offset
+ + symbol],
+ ,
+ symbol += offset,
SEQ_ALIGN);
- } while (++offset < ALIGN_BITS);
-#else
- case SEQ_ALIGN0:
- rc_bit(coder->pos_align[symbol], ,
- rep0 += 1, SEQ_ALIGN0);
- case SEQ_ALIGN1:
- rc_bit(coder->pos_align[symbol], ,
- rep0 += 2, SEQ_ALIGN1);
- case SEQ_ALIGN2:
- rc_bit(coder->pos_align[symbol], ,
- rep0 += 4, SEQ_ALIGN2);
- case SEQ_ALIGN3:
- // Like in SEQ_DIST_MODEL, we don't
- // need "symbol" for anything else
- // than indexing the probability array.
- rc_bit_last(coder->pos_align[symbol], ,
- rep0 += 8, SEQ_ALIGN3);
-#endif
+ offset <<= 1;
+ } while (offset < ALIGN_SIZE);
+
+ rep0 += symbol;
if (rep0 == UINT32_MAX) {
// End of payload marker was
@@ -710,6 +853,9 @@ lzma_decode(void *coder_ptr, lzma_dict *restrict dictptr,
// that EOPM might be used
// (it's not allowed in
// LZMA2).
+#ifndef HAVE_SMALL
+eopm:
+#endif
if (!eopm_is_valid) {
ret = LZMA_DATA_ERROR;
goto out;
@@ -718,7 +864,7 @@ lzma_decode(void *coder_ptr, lzma_dict *restrict dictptr,
case SEQ_EOPM:
// LZMA1 stream with
// end-of-payload marker.
- rc_normalize(SEQ_EOPM);
+ rc_normalize_safe(SEQ_EOPM);
ret = rc_is_finished(rc)
? LZMA_STREAM_END
: LZMA_DATA_ERROR;
@@ -727,36 +873,30 @@ lzma_decode(void *coder_ptr, lzma_dict *restrict dictptr,
}
}
- // Validate the distance we just decoded.
if (unlikely(!dict_is_distance_valid(&dict, rep0))) {
ret = LZMA_DATA_ERROR;
goto out;
}
} else {
+ /////////////////////
+ // Repeated match. //
+ /////////////////////
+
rc_update_1(coder->is_rep[state]);
- // Repeated match
- //
- // The match distance is a value that we have had
- // earlier. The latest four match distances are
- // available as rep0, rep1, rep2 and rep3. We will
- // now decode which of them is the new distance.
- //
- // There cannot be a match if we haven't produced
- // any output, so check that first.
if (unlikely(!dict_is_distance_valid(&dict, 0))) {
ret = LZMA_DATA_ERROR;
goto out;
}
case SEQ_IS_REP0:
- rc_if_0(coder->is_rep0[state], SEQ_IS_REP0) {
+ rc_if_0_safe(coder->is_rep0[state], SEQ_IS_REP0) {
rc_update_0(coder->is_rep0[state]);
- // The distance is rep0.
case SEQ_IS_REP0_LONG:
- rc_if_0(coder->is_rep0_long[state][pos_state],
+ rc_if_0_safe(coder->is_rep0_long
+ [state][pos_state],
SEQ_IS_REP0_LONG) {
rc_update_0(coder->is_rep0_long[
state][pos_state]);
@@ -764,8 +904,9 @@ lzma_decode(void *coder_ptr, lzma_dict *restrict dictptr,
update_short_rep(state);
case SEQ_SHORTREP:
- if (unlikely(dict_put(&dict, dict_get(
- &dict, rep0)))) {
+ if (dict_put_safe(&dict,
+ dict_get(&dict,
+ rep0))) {
coder->sequence = SEQ_SHORTREP;
goto out;
}
@@ -773,8 +914,6 @@ lzma_decode(void *coder_ptr, lzma_dict *restrict dictptr,
continue;
}
- // Repeating more than one byte at
- // distance of rep0.
rc_update_1(coder->is_rep0_long[
state][pos_state]);
@@ -782,11 +921,7 @@ lzma_decode(void *coder_ptr, lzma_dict *restrict dictptr,
rc_update_1(coder->is_rep0[state]);
case SEQ_IS_REP1:
- // The distance is rep1, rep2 or rep3. Once
- // we find out which one of these three, it
- // is stored to rep0 and rep1, rep2 and rep3
- // are updated accordingly.
- rc_if_0(coder->is_rep1[state], SEQ_IS_REP1) {
+ rc_if_0_safe(coder->is_rep1[state], SEQ_IS_REP1) {
rc_update_0(coder->is_rep1[state]);
const uint32_t distance = rep1;
@@ -796,7 +931,7 @@ lzma_decode(void *coder_ptr, lzma_dict *restrict dictptr,
} else {
rc_update_1(coder->is_rep1[state]);
case SEQ_IS_REP2:
- rc_if_0(coder->is_rep2[state],
+ rc_if_0_safe(coder->is_rep2[state],
SEQ_IS_REP2) {
rc_update_0(coder->is_rep2[
state]);
@@ -821,7 +956,6 @@ lzma_decode(void *coder_ptr, lzma_dict *restrict dictptr,
update_long_rep(state);
- // Decode the length of the repeated match.
len_decode(len, coder->rep_len_decoder,
pos_state, SEQ_REP_LEN);
}
@@ -830,13 +964,10 @@ lzma_decode(void *coder_ptr, lzma_dict *restrict dictptr,
// Repeat from history buffer. //
/////////////////////////////////
- // The length is always between these limits. There is no way
- // to trigger the algorithm to set len outside this range.
assert(len >= MATCH_LEN_MIN);
assert(len <= MATCH_LEN_MAX);
case SEQ_COPY:
- // Repeat len bytes from distance of rep0.
if (unlikely(dict_repeat(&dict, rep0, &len))) {
coder->sequence = SEQ_COPY;
goto out;
@@ -890,7 +1021,6 @@ out:
}
-
static void
lzma_decoder_uncompressed(void *coder_ptr, lzma_vli uncompressed_size,
bool allow_eopm)
@@ -917,7 +1047,7 @@ lzma_decoder_reset(void *coder_ptr, const void *opt)
literal_init(coder->literal, options->lc, options->lp);
coder->literal_context_bits = options->lc;
- coder->literal_pos_mask = (1U << options->lp) - 1;
+ coder->literal_mask = literal_mask_calc(options->lc, options->lp);
// State
coder->state = STATE_LIT_LIT;
diff --git a/src/liblzma/lzma/lzma_decoder.h b/src/liblzma/lzma/lzma_decoder.h
index 1427bc2..9730f56 100644
--- a/src/liblzma/lzma/lzma_decoder.h
+++ b/src/liblzma/lzma/lzma_decoder.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file lzma_decoder.h
@@ -6,9 +8,6 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_LZMA_DECODER_H
diff --git a/src/liblzma/lzma/lzma_encoder.c b/src/liblzma/lzma/lzma_encoder.c
index 559c63e..543ca32 100644
--- a/src/liblzma/lzma/lzma_encoder.c
+++ b/src/liblzma/lzma/lzma_encoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file lzma_encoder.c
@@ -6,9 +8,6 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "lzma2_encoder.h"
@@ -49,24 +48,24 @@ literal(lzma_lzma1_encoder *coder, lzma_mf *mf, uint32_t position)
const uint8_t cur_byte = mf->buffer[
mf->read_pos - mf->read_ahead];
probability *subcoder = literal_subcoder(coder->literal,
- coder->literal_context_bits, coder->literal_pos_mask,
+ coder->literal_context_bits, coder->literal_mask,
position, mf->buffer[mf->read_pos - mf->read_ahead - 1]);
if (is_literal_state(coder->state)) {
// Previous LZMA-symbol was a literal. Encode a normal
// literal without a match byte.
+ update_literal_normal(coder->state);
rc_bittree(&coder->rc, subcoder, 8, cur_byte);
} else {
// Previous LZMA-symbol was a match. Use the last byte of
// the match as a "match byte". That is, compare the bits
// of the current literal and the match byte.
+ update_literal_matched(coder->state);
const uint8_t match_byte = mf->buffer[
mf->read_pos - coder->reps[0] - 1
- mf->read_ahead];
literal_matched(&coder->rc, subcoder, match_byte, cur_byte);
}
-
- update_literal(coder->state);
}
@@ -283,7 +282,7 @@ encode_init(lzma_lzma1_encoder *coder, lzma_mf *mf)
mf_skip(mf, 1);
mf->read_ahead = 0;
rc_bit(&coder->rc, &coder->is_match[0][0], 0);
- rc_bittree(&coder->rc, coder->literal[0], 8, mf->buffer[0]);
+ rc_bittree(&coder->rc, coder->literal + 0, 8, mf->buffer[0]);
++coder->uncomp_size;
}
@@ -535,7 +534,7 @@ lzma_lzma_encoder_reset(lzma_lzma1_encoder *coder,
coder->pos_mask = (1U << options->pb) - 1;
coder->literal_context_bits = options->lc;
- coder->literal_pos_mask = (1U << options->lp) - 1;
+ coder->literal_mask = literal_mask_calc(options->lc, options->lp);
// Range coder
rc_reset(&coder->rc);
@@ -712,6 +711,9 @@ static lzma_ret
lzma_encoder_init(lzma_lz_encoder *lz, const lzma_allocator *allocator,
lzma_vli id, const void *options, lzma_lz_options *lz_options)
{
+ if (options == NULL)
+ return LZMA_PROG_ERROR;
+
lz->code = &lzma_encode;
lz->set_out_limit = &lzma_lzma_set_out_limit;
return lzma_lzma_encoder_create(
diff --git a/src/liblzma/lzma/lzma_encoder.h b/src/liblzma/lzma/lzma_encoder.h
index 84d8c91..e8ae807 100644
--- a/src/liblzma/lzma/lzma_encoder.h
+++ b/src/liblzma/lzma/lzma_encoder.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file lzma_encoder.h
@@ -6,9 +8,6 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_LZMA_ENCODER_H
diff --git a/src/liblzma/lzma/lzma_encoder_optimum_fast.c b/src/liblzma/lzma/lzma_encoder_optimum_fast.c
index 6c53d2b..0f063d5 100644
--- a/src/liblzma/lzma/lzma_encoder_optimum_fast.c
+++ b/src/liblzma/lzma/lzma_encoder_optimum_fast.c
@@ -1,12 +1,11 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file lzma_encoder_optimum_fast.c
//
// Author: Igor Pavlov
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "lzma_encoder_private.h"
diff --git a/src/liblzma/lzma/lzma_encoder_optimum_normal.c b/src/liblzma/lzma/lzma_encoder_optimum_normal.c
index 101c8d4..a6c0398 100644
--- a/src/liblzma/lzma/lzma_encoder_optimum_normal.c
+++ b/src/liblzma/lzma/lzma_encoder_optimum_normal.c
@@ -1,12 +1,11 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file lzma_encoder_optimum_normal.c
//
// Author: Igor Pavlov
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "lzma_encoder_private.h"
@@ -24,7 +23,7 @@ get_literal_price(const lzma_lzma1_encoder *const coder, const uint32_t pos,
uint32_t match_byte, uint32_t symbol)
{
const probability *const subcoder = literal_subcoder(coder->literal,
- coder->literal_context_bits, coder->literal_pos_mask,
+ coder->literal_context_bits, coder->literal_mask,
pos, prev_byte);
uint32_t price = 0;
diff --git a/src/liblzma/lzma/lzma_encoder_presets.c b/src/liblzma/lzma/lzma_encoder_presets.c
index 711df02..e53483f 100644
--- a/src/liblzma/lzma/lzma_encoder_presets.c
+++ b/src/liblzma/lzma/lzma_encoder_presets.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file lzma_encoder_presets.c
@@ -6,9 +8,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "common.h"
diff --git a/src/liblzma/lzma/lzma_encoder_private.h b/src/liblzma/lzma/lzma_encoder_private.h
index b228c57..eeea5e9 100644
--- a/src/liblzma/lzma/lzma_encoder_private.h
+++ b/src/liblzma/lzma/lzma_encoder_private.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file lzma_encoder_private.h
@@ -6,9 +8,6 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_LZMA_ENCODER_PRIVATE_H
@@ -116,10 +115,10 @@ struct lzma_lzma1_encoder_s {
uint32_t pos_mask; ///< (1 << pos_bits) - 1
uint32_t literal_context_bits;
- uint32_t literal_pos_mask;
+ uint32_t literal_mask;
// These are the same as in lzma_decoder.c. See comments there.
- probability literal[LITERAL_CODERS_MAX][LITERAL_CODER_SIZE];
+ probability literal[LITERAL_CODERS_MAX * LITERAL_CODER_SIZE];
probability is_match[STATES][POS_STATES_MAX];
probability is_rep[STATES];
probability is_rep0[STATES];
diff --git a/src/liblzma/rangecoder/Makefile.inc b/src/liblzma/rangecoder/Makefile.inc
index d8a597a..9a00e6e 100644
--- a/src/liblzma/rangecoder/Makefile.inc
+++ b/src/liblzma/rangecoder/Makefile.inc
@@ -1,9 +1,5 @@
-##
+## SPDX-License-Identifier: 0BSD
## Author: Lasse Collin
-##
-## This file has been put into the public domain.
-## You can do whatever you want with this file.
-##
EXTRA_DIST += rangecoder/price_tablegen.c
diff --git a/src/liblzma/rangecoder/price.h b/src/liblzma/rangecoder/price.h
index 45dbbbb..cce6bda 100644
--- a/src/liblzma/rangecoder/price.h
+++ b/src/liblzma/rangecoder/price.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file price.h
@@ -5,9 +7,6 @@
//
// Author: Igor Pavlov
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_PRICE_H
diff --git a/src/liblzma/rangecoder/price_table.c b/src/liblzma/rangecoder/price_table.c
index ac64bf6..c33433f 100644
--- a/src/liblzma/rangecoder/price_table.c
+++ b/src/liblzma/rangecoder/price_table.c
@@ -1,4 +1,6 @@
-/* This file has been automatically generated by price_tablegen.c. */
+// SPDX-License-Identifier: 0BSD
+
+// This file has been generated by price_tablegen.c.
#include "range_encoder.h"
diff --git a/src/liblzma/rangecoder/price_tablegen.c b/src/liblzma/rangecoder/price_tablegen.c
index bf08ce3..4b6ca37 100644
--- a/src/liblzma/rangecoder/price_tablegen.c
+++ b/src/liblzma/rangecoder/price_tablegen.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file price_tablegen.c
@@ -8,13 +10,15 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include <inttypes.h>
#include <stdio.h>
+
+// Make it compile without common.h.
+#define BUILDING_PRICE_TABLEGEN
+#define lzma_attr_visibility_hidden
+
#include "range_common.h"
#include "price.h"
@@ -54,11 +58,13 @@ init_price_table(void)
static void
print_price_table(void)
{
- printf("/* This file has been automatically generated by "
- "price_tablegen.c. */\n\n"
- "#include \"range_encoder.h\"\n\n"
- "const uint8_t lzma_rc_prices["
- "RC_PRICE_TABLE_SIZE] = {");
+ // Split the SPDX string so that it won't accidentally match
+ // when tools search for the string.
+ printf("// SPDX" "-License-Identifier" ": 0BSD\n\n"
+ "// This file has been generated by price_tablegen.c.\n\n"
+ "#include \"range_encoder.h\"\n\n"
+ "const uint8_t lzma_rc_prices["
+ "RC_PRICE_TABLE_SIZE] = {");
const size_t array_size = sizeof(lzma_rc_prices)
/ sizeof(lzma_rc_prices[0]);
diff --git a/src/liblzma/rangecoder/range_common.h b/src/liblzma/rangecoder/range_common.h
index 2c74dc1..ac4dbe1 100644
--- a/src/liblzma/rangecoder/range_common.h
+++ b/src/liblzma/rangecoder/range_common.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file range_common.h
@@ -6,15 +8,15 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_RANGE_COMMON_H
#define LZMA_RANGE_COMMON_H
-#include "common.h"
+// Skip common.h if building price_tablegen.c.
+#ifndef BUILDING_PRICE_TABLEGEN
+# include "common.h"
+#endif
///////////////
@@ -66,6 +68,10 @@
///
/// I will be sticking to uint16_t unless some specific architectures
/// are *much* faster (20-50 %) with uint32_t.
+///
+/// Update in 2024: The branchless C and x86-64 assembly was written so that
+/// probability is assumed to be uint16_t. (In contrast, LZMA SDK 23.01
+/// assembly supports both types.)
typedef uint16_t probability;
#endif
diff --git a/src/liblzma/rangecoder/range_decoder.h b/src/liblzma/rangecoder/range_decoder.h
index e0b051f..31a58d1 100644
--- a/src/liblzma/rangecoder/range_decoder.h
+++ b/src/liblzma/rangecoder/range_decoder.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file range_decoder.h
@@ -6,9 +8,6 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_RANGE_DECODER_H
@@ -17,6 +16,55 @@
#include "range_common.h"
+// Choose the range decoder variants to use using a bitmask.
+// If no bits are set, only the basic version is used.
+// If more than one version is selected for the same feature,
+// the last one on the list below is used.
+//
+// Bitwise-or of the following enable branchless C versions:
+// 0x01 normal bittrees
+// 0x02 fixed-sized reverse bittrees
+// 0x04 variable-sized reverse bittrees (not faster)
+// 0x08 matched literal (not faster)
+//
+// GCC & Clang compatible x86-64 inline assembly:
+// 0x010 normal bittrees
+// 0x020 fixed-sized reverse bittrees
+// 0x040 variable-sized reverse bittrees
+// 0x080 matched literal
+// 0x100 direct bits
+//
+// The default can be overridden at build time by defining
+// LZMA_RANGE_DECODER_CONFIG to the desired mask.
+//
+// 2024-02-22: Feedback from benchmarks:
+// - Brancless C (0x003) can be better than basic on x86-64 but often it's
+// slightly worse on other archs. Since asm is much better on x86-64,
+// branchless C is not used at all.
+// - With x86-64 asm, there are slight differences between GCC and Clang
+// and different processors. Overall 0x1F0 seems to be the best choice.
+#ifndef LZMA_RANGE_DECODER_CONFIG
+# if defined(__x86_64__) && !defined(__ILP32__) \
+ && !defined(__NVCOMPILER) \
+ && (defined(__GNUC__) || defined(__clang__))
+# define LZMA_RANGE_DECODER_CONFIG 0x1F0
+# else
+# define LZMA_RANGE_DECODER_CONFIG 0
+# endif
+#endif
+
+
+// Negative RC_BIT_MODEL_TOTAL but the lowest RC_MOVE_BITS are flipped.
+// This is useful for updating probability variables in branchless decoding:
+//
+// uint32_t decoded_bit = ...;
+// probability tmp = RC_BIT_MODEL_OFFSET;
+// tmp &= decoded_bit - 1;
+// prob -= (prob + tmp) >> RC_MOVE_BITS;
+#define RC_BIT_MODEL_OFFSET \
+ ((UINT32_C(1) << RC_MOVE_BITS) - 1 - RC_BIT_MODEL_TOTAL)
+
+
typedef struct {
uint32_t range;
uint32_t code;
@@ -50,18 +98,28 @@ rc_read_init(lzma_range_decoder *rc, const uint8_t *restrict in,
/// Makes local copies of range decoder and *in_pos variables. Doing this
/// improves speed significantly. The range decoder macros expect also
-/// variables `in' and `in_size' to be defined.
-#define rc_to_local(range_decoder, in_pos) \
+/// variables 'in' and 'in_size' to be defined.
+#define rc_to_local(range_decoder, in_pos, fast_mode_in_required) \
lzma_range_decoder rc = range_decoder; \
- size_t rc_in_pos = (in_pos); \
+ const uint8_t *rc_in_ptr = in + (in_pos); \
+ const uint8_t *rc_in_end = in + in_size; \
+ const uint8_t *rc_in_fast_end \
+ = (rc_in_end - rc_in_ptr) <= (fast_mode_in_required) \
+ ? rc_in_ptr \
+ : rc_in_end - (fast_mode_in_required); \
+ (void)rc_in_fast_end; /* Silence a warning with HAVE_SMALL. */ \
uint32_t rc_bound
+/// Evaluates to true if there is enough input remaining to use fast mode.
+#define rc_is_fast_allowed() (rc_in_ptr < rc_in_fast_end)
+
+
/// Stores the local copes back to the range decoder structure.
#define rc_from_local(range_decoder, in_pos) \
do { \
range_decoder = rc; \
- in_pos = rc_in_pos; \
+ in_pos = (size_t)(rc_in_ptr - in); \
} while (0)
@@ -81,18 +139,30 @@ do { \
((range_decoder).code == 0)
-/// Read the next input byte if needed. If more input is needed but there is
+// Read the next input byte if needed.
+#define rc_normalize() \
+do { \
+ if (rc.range < RC_TOP_VALUE) { \
+ rc.range <<= RC_SHIFT_BITS; \
+ rc.code = (rc.code << RC_SHIFT_BITS) | *rc_in_ptr++; \
+ } \
+} while (0)
+
+
+/// If more input is needed but there is
/// no more input available, "goto out" is used to jump out of the main
-/// decoder loop.
-#define rc_normalize(seq) \
+/// decoder loop. The "_safe" macros are used in the Resumable decoder
+/// mode in order to save the sequence to continue decoding from that
+/// point later.
+#define rc_normalize_safe(seq) \
do { \
if (rc.range < RC_TOP_VALUE) { \
- if (unlikely(rc_in_pos == in_size)) { \
+ if (rc_in_ptr == rc_in_end) { \
coder->sequence = seq; \
goto out; \
} \
rc.range <<= RC_SHIFT_BITS; \
- rc.code = (rc.code << RC_SHIFT_BITS) | in[rc_in_pos++]; \
+ rc.code = (rc.code << RC_SHIFT_BITS) | *rc_in_ptr++; \
} \
} while (0)
@@ -100,7 +170,7 @@ do { \
/// Start decoding a bit. This must be used together with rc_update_0()
/// and rc_update_1():
///
-/// rc_if_0(prob, seq) {
+/// rc_if_0(prob) {
/// rc_update_0(prob);
/// // Do something
/// } else {
@@ -108,18 +178,28 @@ do { \
/// // Do something else
/// }
///
-#define rc_if_0(prob, seq) \
- rc_normalize(seq); \
+#define rc_if_0(prob) \
+ rc_normalize(); \
+ rc_bound = (rc.range >> RC_BIT_MODEL_TOTAL_BITS) * (prob); \
+ if (rc.code < rc_bound)
+
+
+#define rc_if_0_safe(prob, seq) \
+ rc_normalize_safe(seq); \
rc_bound = (rc.range >> RC_BIT_MODEL_TOTAL_BITS) * (prob); \
if (rc.code < rc_bound)
/// Update the range decoder state and the used probability variable to
/// match a decoded bit of 0.
+///
+/// The x86-64 assembly uses the commented method but it seems that,
+/// at least on x86-64, the first version is slightly faster as C code.
#define rc_update_0(prob) \
do { \
rc.range = rc_bound; \
prob += (RC_BIT_MODEL_TOTAL - (prob)) >> RC_MOVE_BITS; \
+ /* prob -= ((prob) + RC_BIT_MODEL_OFFSET) >> RC_MOVE_BITS; */ \
} while (0)
@@ -137,9 +217,21 @@ do { \
/// This macro is used as the last step in bittree reverse decoders since
/// those don't use "symbol" for anything else than indexing the probability
/// arrays.
-#define rc_bit_last(prob, action0, action1, seq) \
+#define rc_bit_last(prob, action0, action1) \
+do { \
+ rc_if_0(prob) { \
+ rc_update_0(prob); \
+ action0; \
+ } else { \
+ rc_update_1(prob); \
+ action1; \
+ } \
+} while (0)
+
+
+#define rc_bit_last_safe(prob, action0, action1, seq) \
do { \
- rc_if_0(prob, seq) { \
+ rc_if_0_safe(prob, seq) { \
rc_update_0(prob); \
action0; \
} else { \
@@ -151,35 +243,724 @@ do { \
/// Decodes one bit, updates "symbol", and runs action0 or action1 depending
/// on the decoded bit.
-#define rc_bit(prob, action0, action1, seq) \
+#define rc_bit(prob, action0, action1) \
rc_bit_last(prob, \
symbol <<= 1; action0, \
+ symbol = (symbol << 1) + 1; action1);
+
+
+#define rc_bit_safe(prob, action0, action1, seq) \
+ rc_bit_last_safe(prob, \
+ symbol <<= 1; action0, \
symbol = (symbol << 1) + 1; action1, \
seq);
+// Unroll fixed-sized bittree decoding.
+//
+// A compile-time constant in final_add can be used to get rid of the high bit
+// from symbol that is used for the array indexing (1U << bittree_bits).
+// final_add may also be used to add offset to the result (LZMA length
+// decoder does that).
+//
+// The reason to have final_add here is that in the asm code the addition
+// can be done for free: in x86-64 there is SBB instruction with -1 as
+// the immediate value, and final_add is combined with that value.
+#define rc_bittree_bit(prob) \
+ rc_bit(prob, , )
+
+#define rc_bittree3(probs, final_add) \
+do { \
+ symbol = 1; \
+ rc_bittree_bit(probs[symbol]); \
+ rc_bittree_bit(probs[symbol]); \
+ rc_bittree_bit(probs[symbol]); \
+ symbol += (uint32_t)(final_add); \
+} while (0)
-/// Like rc_bit() but add "case seq:" as a prefix. This makes the unrolled
-/// loops more readable because the code isn't littered with "case"
-/// statements. On the other hand this also makes it less readable, since
-/// spotting the places where the decoder loop may be restarted is less
-/// obvious.
-#define rc_bit_case(prob, action0, action1, seq) \
- case seq: rc_bit(prob, action0, action1, seq)
+#define rc_bittree6(probs, final_add) \
+do { \
+ symbol = 1; \
+ rc_bittree_bit(probs[symbol]); \
+ rc_bittree_bit(probs[symbol]); \
+ rc_bittree_bit(probs[symbol]); \
+ rc_bittree_bit(probs[symbol]); \
+ rc_bittree_bit(probs[symbol]); \
+ rc_bittree_bit(probs[symbol]); \
+ symbol += (uint32_t)(final_add); \
+} while (0)
+
+#define rc_bittree8(probs, final_add) \
+do { \
+ symbol = 1; \
+ rc_bittree_bit(probs[symbol]); \
+ rc_bittree_bit(probs[symbol]); \
+ rc_bittree_bit(probs[symbol]); \
+ rc_bittree_bit(probs[symbol]); \
+ rc_bittree_bit(probs[symbol]); \
+ rc_bittree_bit(probs[symbol]); \
+ rc_bittree_bit(probs[symbol]); \
+ rc_bittree_bit(probs[symbol]); \
+ symbol += (uint32_t)(final_add); \
+} while (0)
+
+
+// Fixed-sized reverse bittree
+#define rc_bittree_rev4(probs) \
+do { \
+ symbol = 0; \
+ rc_bit_last(probs[symbol + 1], , symbol += 1); \
+ rc_bit_last(probs[symbol + 2], , symbol += 2); \
+ rc_bit_last(probs[symbol + 4], , symbol += 4); \
+ rc_bit_last(probs[symbol + 8], , symbol += 8); \
+} while (0)
+
+
+// Decode one bit from variable-sized reverse bittree. The loop is done
+// in the code that uses this macro. This could be changed if the assembly
+// version benefited from having the loop done in assembly but it didn't
+// seem so in early 2024.
+//
+// Also, if the loop was done here, the loop counter would likely be local
+// to the macro so that it wouldn't modify yet another input variable.
+// If a _safe version of a macro with a loop was done then a modifiable
+// input variable couldn't be avoided though.
+#define rc_bit_add_if_1(probs, dest, value_to_add_if_1) \
+ rc_bit(probs[symbol], \
+ , \
+ dest += value_to_add_if_1);
+
+
+// Matched literal
+#define decode_with_match_bit \
+ t_match_byte <<= 1; \
+ t_match_bit = t_match_byte & t_offset; \
+ t_subcoder_index = t_offset + t_match_bit + symbol; \
+ rc_bit(probs[t_subcoder_index], \
+ t_offset &= ~t_match_bit, \
+ t_offset &= t_match_bit)
+
+#define rc_matched_literal(probs_base_var, match_byte) \
+do { \
+ uint32_t t_match_byte = (match_byte); \
+ uint32_t t_match_bit; \
+ uint32_t t_subcoder_index; \
+ uint32_t t_offset = 0x100; \
+ symbol = 1; \
+ decode_with_match_bit; \
+ decode_with_match_bit; \
+ decode_with_match_bit; \
+ decode_with_match_bit; \
+ decode_with_match_bit; \
+ decode_with_match_bit; \
+ decode_with_match_bit; \
+ decode_with_match_bit; \
+} while (0)
/// Decode a bit without using a probability.
-#define rc_direct(dest, seq) \
+//
+// NOTE: GCC 13 and Clang/LLVM 16 can, at least on x86-64, optimize the bound
+// calculation to use an arithmetic right shift so there's no need to provide
+// the alternative code which, according to C99/C11/C23 6.3.1.3-p3 isn't
+// perfectly portable: rc_bound = (uint32_t)((int32_t)rc.code >> 31);
+#define rc_direct(dest, count_var) \
do { \
- rc_normalize(seq); \
+ dest = (dest << 1) + 1; \
+ rc_normalize(); \
+ rc.range >>= 1; \
+ rc.code -= rc.range; \
+ rc_bound = UINT32_C(0) - (rc.code >> 31); \
+ dest += rc_bound; \
+ rc.code += rc.range & rc_bound; \
+} while (--count_var > 0)
+
+
+
+#define rc_direct_safe(dest, count_var, seq) \
+do { \
+ rc_normalize_safe(seq); \
rc.range >>= 1; \
rc.code -= rc.range; \
rc_bound = UINT32_C(0) - (rc.code >> 31); \
rc.code += rc.range & rc_bound; \
dest = (dest << 1) + (rc_bound + 1); \
+} while (--count_var > 0)
+
+
+//////////////////
+// Branchless C //
+//////////////////
+
+/// Decode a bit using a branchless method. This reduces the number of
+/// mispredicted branches and thus can improve speed.
+#define rc_c_bit(prob, action_bit, action_neg) \
+do { \
+ probability *p = &(prob); \
+ rc_normalize(); \
+ rc_bound = (rc.range >> RC_BIT_MODEL_TOTAL_BITS) * *p; \
+ uint32_t rc_mask = rc.code >= rc_bound; /* rc_mask = decoded bit */ \
+ action_bit; /* action when rc_mask is 0 or 1 */ \
+ /* rc_mask becomes 0 if bit is 0 and 0xFFFFFFFF if bit is 1: */ \
+ rc_mask = 0U - rc_mask; \
+ rc.range &= rc_mask; /* If bit 0: set rc.range = 0 */ \
+ rc_bound ^= rc_mask; \
+ rc_bound -= rc_mask; /* If bit 1: rc_bound = 0U - rc_bound */ \
+ rc.range += rc_bound; \
+ rc_bound &= rc_mask; \
+ rc.code += rc_bound; \
+ action_neg; /* action when rc_mask is 0 or 0xFFFFFFFF */ \
+ rc_mask = ~rc_mask; /* If bit 0: all bits are set in rc_mask */ \
+ rc_mask &= RC_BIT_MODEL_OFFSET; \
+ *p -= (*p + rc_mask) >> RC_MOVE_BITS; \
} while (0)
-// NOTE: No macros are provided for bittree decoding. It seems to be simpler
-// to just write them open in the code.
+// Testing on x86-64 give an impression that only the normal bittrees and
+// the fixed-sized reverse bittrees are worth the branchless C code.
+// It should be tested on other archs for which there isn't assembly code
+// in this file.
+
+// Using addition in "(symbol << 1) + rc_mask" allows use of x86 LEA
+// or RISC-V SH1ADD instructions. Compilers might infer it from
+// "(symbol << 1) | rc_mask" too if they see that mask is 0 or 1 but
+// the use of addition doesn't require such analysis from compilers.
+#if LZMA_RANGE_DECODER_CONFIG & 0x01
+#undef rc_bittree_bit
+#define rc_bittree_bit(prob) \
+ rc_c_bit(prob, \
+ symbol = (symbol << 1) + rc_mask, \
+ )
+#endif // LZMA_RANGE_DECODER_CONFIG & 0x01
+
+#if LZMA_RANGE_DECODER_CONFIG & 0x02
+#undef rc_bittree_rev4
+#define rc_bittree_rev4(probs) \
+do { \
+ symbol = 0; \
+ rc_c_bit(probs[symbol + 1], symbol += rc_mask, ); \
+ rc_c_bit(probs[symbol + 2], symbol += rc_mask << 1, ); \
+ rc_c_bit(probs[symbol + 4], symbol += rc_mask << 2, ); \
+ rc_c_bit(probs[symbol + 8], symbol += rc_mask << 3, ); \
+} while (0)
+#endif // LZMA_RANGE_DECODER_CONFIG & 0x02
+
+#if LZMA_RANGE_DECODER_CONFIG & 0x04
+#undef rc_bit_add_if_1
+#define rc_bit_add_if_1(probs, dest, value_to_add_if_1) \
+ rc_c_bit(probs[symbol], \
+ symbol = (symbol << 1) + rc_mask, \
+ dest += (value_to_add_if_1) & rc_mask)
+#endif // LZMA_RANGE_DECODER_CONFIG & 0x04
+
+
+#if LZMA_RANGE_DECODER_CONFIG & 0x08
+#undef decode_with_match_bit
+#define decode_with_match_bit \
+ t_match_byte <<= 1; \
+ t_match_bit = t_match_byte & t_offset; \
+ t_subcoder_index = t_offset + t_match_bit + symbol; \
+ rc_c_bit(probs[t_subcoder_index], \
+ symbol = (symbol << 1) + rc_mask, \
+ t_offset &= ~t_match_bit ^ rc_mask)
+#endif // LZMA_RANGE_DECODER_CONFIG & 0x08
+
+
+////////////
+// x86-64 //
+////////////
+
+#if LZMA_RANGE_DECODER_CONFIG & 0x1F0
+
+// rc_asm_y and rc_asm_n are used as arguments to macros to control which
+// strings to include or omit.
+#define rc_asm_y(str) str
+#define rc_asm_n(str)
+
+// There are a few possible variations for normalization.
+// This is the smallest variant which is also used by LZMA SDK.
+//
+// - This has partial register write (the MOV from (%[in_ptr])).
+//
+// - INC saves one byte in code size over ADD. False dependency on
+// partial flags from INC shouldn't become a problem on any processor
+// because the instructions after normalization don't read the flags
+// until SUB which sets all flags.
+//
+#define rc_asm_normalize \
+ "cmp %[top_value], %[range]\n\t" \
+ "jae 1f\n\t" \
+ "shl %[shift_bits], %[code]\n\t" \
+ "mov (%[in_ptr]), %b[code]\n\t" \
+ "shl %[shift_bits], %[range]\n\t" \
+ "inc %[in_ptr]\n" \
+ "1:\n"
+
+// rc_asm_calc(prob) is roughly equivalent to the C version of rc_if_0(prob)...
+//
+// rc_bound = (rc.range >> RC_BIT_MODEL_TOTAL_BITS) * (prob);
+// if (rc.code < rc_bound)
+//
+// ...but the bound is stored in "range":
+//
+// t0 = range;
+// range = (range >> RC_BIT_MODEL_TOTAL_BITS) * (prob);
+// t0 -= range;
+// t1 = code;
+// code -= range;
+//
+// The carry flag (CF) from the last subtraction holds the negation of
+// the decoded bit (if CF==0 then the decoded bit is 1).
+// The values in t0 and t1 are needed for rc_update_0(prob) and
+// rc_update_1(prob). If the bit is 0, rc_update_0(prob)...
+//
+// rc.range = rc_bound;
+//
+// ...has already been done but the "code -= range" has to be reverted using
+// the old value stored in t1. (Also, prob needs to be updated.)
+//
+// If the bit is 1, rc_update_1(prob)...
+//
+// rc.range -= rc_bound;
+// rc.code -= rc_bound;
+//
+// ...is already done for "code" but the value for "range" needs to be taken
+// from t0. (Also, prob needs to be updated here as well.)
+//
+// The assignments from t0 and t1 can be done in a branchless manner with CMOV
+// after the instructions from this macro. The CF from SUB tells which moves
+// are needed.
+#define rc_asm_calc(prob) \
+ "mov %[range], %[t0]\n\t" \
+ "shr %[bit_model_total_bits], %[range]\n\t" \
+ "imul %[" prob "], %[range]\n\t" \
+ "sub %[range], %[t0]\n\t" \
+ "mov %[code], %[t1]\n\t" \
+ "sub %[range], %[code]\n\t"
+
+// Also, prob needs to be updated: The update math depends on the decoded bit.
+// It can be expressed in a few slightly different ways but this is fairly
+// convenient here:
+//
+// prob -= (prob + (bit ? 0 : RC_BIT_MODEL_OFFSET)) >> RC_MOVE_BITS;
+//
+// To do it in branchless way when the negation of the decoded bit is in CF,
+// both "prob" and "prob + RC_BIT_MODEL_OFFSET" are needed. Then the desired
+// value can be picked with CMOV. The addition can be done using LEA without
+// affecting CF.
+//
+// (This prob update method is a tiny bit different from LZMA SDK 23.01.
+// In the LZMA SDK a single register is reserved solely for a constant to
+// be used with CMOV when updating prob. That is fine since there are enough
+// free registers to do so. The method used here uses one fewer register,
+// which is valuable with inline assembly.)
+//
+// * * *
+//
+// In bittree decoding, each (unrolled) loop iteration decodes one bit
+// and needs one prob variable. To make it faster, the prob variable of
+// the iteration N+1 is loaded during iteration N. There are two possible
+// prob variables to choose from for N+1. Both are loaded from memory and
+// the correct one is chosen with CMOV using the same CF as is used for
+// other things described above.
+//
+// This preloading/prefetching requires an extra register. To avoid
+// useless moves from "preloaded prob register" to "current prob register",
+// the macros swap between the two registers for odd and even iterations.
+//
+// * * *
+//
+// Finally, the decoded bit has to be stored in "symbol". Since the negation
+// of the bit is in CF, this can be done with SBB: symbol -= CF - 1. That is,
+// if the decoded bit is 0 (CF==1) the operation is a no-op "symbol -= 0"
+// and when bit is 1 (CF==0) the operation is "symbol -= 0 - 1" which is
+// the same as "symbol += 1".
+//
+// The instructions for all things are intertwined for a few reasons:
+// - freeing temporary registers for new use
+// - not modifying CF too early
+// - instruction scheduling
+//
+// The first and last iterations can cheat a little. For example,
+// on the first iteration "symbol" is known to start from 1 so it
+// doesn't need to be read; it can even be immediately initialized
+// to 2 to prepare for the second iteration of the loop.
+//
+// * * *
+//
+// a = number of the current prob variable (0 or 1)
+// b = number of the next prob variable (1 or 0)
+// *_only = rc_asm_y or _n to include or exclude code marked with them
+#define rc_asm_bittree(a, b, first_only, middle_only, last_only) \
+ first_only( \
+ "movzw 2(%[probs_base]), %[prob" #a "]\n\t" \
+ "mov $2, %[symbol]\n\t" \
+ "movzw 4(%[probs_base]), %[prob" #b "]\n\t" \
+ ) \
+ middle_only( \
+ /* Note the scaling of 4 instead of 2: */ \
+ "movzw (%[probs_base], %q[symbol], 4), %[prob" #b "]\n\t" \
+ ) \
+ last_only( \
+ "add %[symbol], %[symbol]\n\t" \
+ ) \
+ \
+ rc_asm_normalize \
+ rc_asm_calc("prob" #a) \
+ \
+ "cmovae %[t0], %[range]\n\t" \
+ \
+ first_only( \
+ "movzw 6(%[probs_base]), %[t0]\n\t" \
+ "cmovae %[t0], %[prob" #b "]\n\t" \
+ ) \
+ middle_only( \
+ "movzw 2(%[probs_base], %q[symbol], 4), %[t0]\n\t" \
+ "lea (%q[symbol], %q[symbol]), %[symbol]\n\t" \
+ "cmovae %[t0], %[prob" #b "]\n\t" \
+ ) \
+ \
+ "lea %c[bit_model_offset](%q[prob" #a "]), %[t0]\n\t" \
+ "cmovb %[t1], %[code]\n\t" \
+ "mov %[symbol], %[t1]\n\t" \
+ "cmovae %[prob" #a "], %[t0]\n\t" \
+ \
+ first_only( \
+ "sbb $-1, %[symbol]\n\t" \
+ ) \
+ middle_only( \
+ "sbb $-1, %[symbol]\n\t" \
+ ) \
+ last_only( \
+ "sbb %[last_sbb], %[symbol]\n\t" \
+ ) \
+ \
+ "shr %[move_bits], %[t0]\n\t" \
+ "sub %[t0], %[prob" #a "]\n\t" \
+ /* Scaling of 1 instead of 2 because symbol <<= 1. */ \
+ "mov %w[prob" #a "], (%[probs_base], %q[t1], 1)\n\t"
+
+// NOTE: The order of variables in __asm__ can affect speed and code size.
+#define rc_asm_bittree_n(probs_base_var, final_add, asm_str) \
+do { \
+ uint32_t t0; \
+ uint32_t t1; \
+ uint32_t t_prob0; \
+ uint32_t t_prob1; \
+ \
+ __asm__( \
+ asm_str \
+ : \
+ [range] "+&r"(rc.range), \
+ [code] "+&r"(rc.code), \
+ [t0] "=&r"(t0), \
+ [t1] "=&r"(t1), \
+ [prob0] "=&r"(t_prob0), \
+ [prob1] "=&r"(t_prob1), \
+ [symbol] "=&r"(symbol), \
+ [in_ptr] "+&r"(rc_in_ptr) \
+ : \
+ [probs_base] "r"(probs_base_var), \
+ [last_sbb] "n"(-1 - (final_add)), \
+ [top_value] "n"(RC_TOP_VALUE), \
+ [shift_bits] "n"(RC_SHIFT_BITS), \
+ [bit_model_total_bits] "n"(RC_BIT_MODEL_TOTAL_BITS), \
+ [bit_model_offset] "n"(RC_BIT_MODEL_OFFSET), \
+ [move_bits] "n"(RC_MOVE_BITS) \
+ : \
+ "cc", "memory"); \
+} while (0)
+
+
+#if LZMA_RANGE_DECODER_CONFIG & 0x010
+#undef rc_bittree3
+#define rc_bittree3(probs_base_var, final_add) \
+ rc_asm_bittree_n(probs_base_var, final_add, \
+ rc_asm_bittree(0, 1, rc_asm_y, rc_asm_n, rc_asm_n) \
+ rc_asm_bittree(1, 0, rc_asm_n, rc_asm_y, rc_asm_n) \
+ rc_asm_bittree(0, 1, rc_asm_n, rc_asm_n, rc_asm_y) \
+ )
+
+#undef rc_bittree6
+#define rc_bittree6(probs_base_var, final_add) \
+ rc_asm_bittree_n(probs_base_var, final_add, \
+ rc_asm_bittree(0, 1, rc_asm_y, rc_asm_n, rc_asm_n) \
+ rc_asm_bittree(1, 0, rc_asm_n, rc_asm_y, rc_asm_n) \
+ rc_asm_bittree(0, 1, rc_asm_n, rc_asm_y, rc_asm_n) \
+ rc_asm_bittree(1, 0, rc_asm_n, rc_asm_y, rc_asm_n) \
+ rc_asm_bittree(0, 1, rc_asm_n, rc_asm_y, rc_asm_n) \
+ rc_asm_bittree(1, 0, rc_asm_n, rc_asm_n, rc_asm_y) \
+ )
+
+#undef rc_bittree8
+#define rc_bittree8(probs_base_var, final_add) \
+ rc_asm_bittree_n(probs_base_var, final_add, \
+ rc_asm_bittree(0, 1, rc_asm_y, rc_asm_n, rc_asm_n) \
+ rc_asm_bittree(1, 0, rc_asm_n, rc_asm_y, rc_asm_n) \
+ rc_asm_bittree(0, 1, rc_asm_n, rc_asm_y, rc_asm_n) \
+ rc_asm_bittree(1, 0, rc_asm_n, rc_asm_y, rc_asm_n) \
+ rc_asm_bittree(0, 1, rc_asm_n, rc_asm_y, rc_asm_n) \
+ rc_asm_bittree(1, 0, rc_asm_n, rc_asm_y, rc_asm_n) \
+ rc_asm_bittree(0, 1, rc_asm_n, rc_asm_y, rc_asm_n) \
+ rc_asm_bittree(1, 0, rc_asm_n, rc_asm_n, rc_asm_y) \
+ )
+#endif // LZMA_RANGE_DECODER_CONFIG & 0x010
+
+
+// Fixed-sized reverse bittree
+//
+// This uses the indexing that constructs the final value in symbol directly.
+// add = 1, 2, 4, 8
+// dcur = -, 4, 8, 16
+// dnext0 = 4, 8, 16, -
+// dnext0 = 6, 12, 24, -
+#define rc_asm_bittree_rev(a, b, add, dcur, dnext0, dnext1, \
+ first_only, middle_only, last_only) \
+ first_only( \
+ "movzw 2(%[probs_base]), %[prob" #a "]\n\t" \
+ "xor %[symbol], %[symbol]\n\t" \
+ "movzw 4(%[probs_base]), %[prob" #b "]\n\t" \
+ ) \
+ middle_only( \
+ "movzw " #dnext0 "(%[probs_base], %q[symbol], 2), " \
+ "%[prob" #b "]\n\t" \
+ ) \
+ \
+ rc_asm_normalize \
+ rc_asm_calc("prob" #a) \
+ \
+ "cmovae %[t0], %[range]\n\t" \
+ \
+ first_only( \
+ "movzw 6(%[probs_base]), %[t0]\n\t" \
+ "cmovae %[t0], %[prob" #b "]\n\t" \
+ ) \
+ middle_only( \
+ "movzw " #dnext1 "(%[probs_base], %q[symbol], 2), %[t0]\n\t" \
+ "cmovae %[t0], %[prob" #b "]\n\t" \
+ ) \
+ \
+ "lea " #add "(%q[symbol]), %[t0]\n\t" \
+ "cmovb %[t1], %[code]\n\t" \
+ middle_only( \
+ "mov %[symbol], %[t1]\n\t" \
+ ) \
+ last_only( \
+ "mov %[symbol], %[t1]\n\t" \
+ ) \
+ "cmovae %[t0], %[symbol]\n\t" \
+ "lea %c[bit_model_offset](%q[prob" #a "]), %[t0]\n\t" \
+ "cmovae %[prob" #a "], %[t0]\n\t" \
+ \
+ "shr %[move_bits], %[t0]\n\t" \
+ "sub %[t0], %[prob" #a "]\n\t" \
+ first_only( \
+ "mov %w[prob" #a "], 2(%[probs_base])\n\t" \
+ ) \
+ middle_only( \
+ "mov %w[prob" #a "], " \
+ #dcur "(%[probs_base], %q[t1], 2)\n\t" \
+ ) \
+ last_only( \
+ "mov %w[prob" #a "], " \
+ #dcur "(%[probs_base], %q[t1], 2)\n\t" \
+ )
+
+#if LZMA_RANGE_DECODER_CONFIG & 0x020
+#undef rc_bittree_rev4
+#define rc_bittree_rev4(probs_base_var) \
+rc_asm_bittree_n(probs_base_var, 4, \
+ rc_asm_bittree_rev(0, 1, 1, -, 4, 6, rc_asm_y, rc_asm_n, rc_asm_n) \
+ rc_asm_bittree_rev(1, 0, 2, 4, 8, 12, rc_asm_n, rc_asm_y, rc_asm_n) \
+ rc_asm_bittree_rev(0, 1, 4, 8, 16, 24, rc_asm_n, rc_asm_y, rc_asm_n) \
+ rc_asm_bittree_rev(1, 0, 8, 16, -, -, rc_asm_n, rc_asm_n, rc_asm_y) \
+)
+#endif // LZMA_RANGE_DECODER_CONFIG & 0x020
+
+
+#if LZMA_RANGE_DECODER_CONFIG & 0x040
+#undef rc_bit_add_if_1
+#define rc_bit_add_if_1(probs_base_var, dest_var, value_to_add_if_1) \
+do { \
+ uint32_t t0; \
+ uint32_t t1; \
+ uint32_t t2 = (value_to_add_if_1); \
+ uint32_t t_prob; \
+ uint32_t t_index; \
+ \
+ __asm__( \
+ "movzw (%[probs_base], %q[symbol], 2), %[prob]\n\t" \
+ "mov %[symbol], %[index]\n\t" \
+ \
+ "add %[dest], %[t2]\n\t" \
+ "add %[symbol], %[symbol]\n\t" \
+ \
+ rc_asm_normalize \
+ rc_asm_calc("prob") \
+ \
+ "cmovae %[t0], %[range]\n\t" \
+ "lea %c[bit_model_offset](%q[prob]), %[t0]\n\t" \
+ "cmovb %[t1], %[code]\n\t" \
+ "cmovae %[prob], %[t0]\n\t" \
+ \
+ "cmovae %[t2], %[dest]\n\t" \
+ "sbb $-1, %[symbol]\n\t" \
+ \
+ "sar %[move_bits], %[t0]\n\t" \
+ "sub %[t0], %[prob]\n\t" \
+ "mov %w[prob], (%[probs_base], %q[index], 2)" \
+ : \
+ [range] "+&r"(rc.range), \
+ [code] "+&r"(rc.code), \
+ [t0] "=&r"(t0), \
+ [t1] "=&r"(t1), \
+ [prob] "=&r"(t_prob), \
+ [index] "=&r"(t_index), \
+ [symbol] "+&r"(symbol), \
+ [t2] "+&r"(t2), \
+ [dest] "+&r"(dest_var), \
+ [in_ptr] "+&r"(rc_in_ptr) \
+ : \
+ [probs_base] "r"(probs_base_var), \
+ [top_value] "n"(RC_TOP_VALUE), \
+ [shift_bits] "n"(RC_SHIFT_BITS), \
+ [bit_model_total_bits] "n"(RC_BIT_MODEL_TOTAL_BITS), \
+ [bit_model_offset] "n"(RC_BIT_MODEL_OFFSET), \
+ [move_bits] "n"(RC_MOVE_BITS) \
+ : \
+ "cc", "memory"); \
+} while (0)
+#endif // LZMA_RANGE_DECODER_CONFIG & 0x040
+
+
+// Literal decoding uses a normal 8-bit bittree but literal with match byte
+// is more complex in picking the probability variable from the correct
+// subtree. This doesn't use preloading/prefetching of the next prob because
+// there are four choices instead of two.
+//
+// FIXME? The first iteration starts with symbol = 1 so it could be optimized
+// by a tiny amount.
+#define rc_asm_matched_literal(nonlast_only) \
+ "add %[offset], %[symbol]\n\t" \
+ "and %[offset], %[match_bit]\n\t" \
+ "add %[match_bit], %[symbol]\n\t" \
+ \
+ "movzw (%[probs_base], %q[symbol], 2), %[prob]\n\t" \
+ \
+ "add %[symbol], %[symbol]\n\t" \
+ \
+ nonlast_only( \
+ "xor %[match_bit], %[offset]\n\t" \
+ "add %[match_byte], %[match_byte]\n\t" \
+ ) \
+ \
+ rc_asm_normalize \
+ rc_asm_calc("prob") \
+ \
+ "cmovae %[t0], %[range]\n\t" \
+ "lea %c[bit_model_offset](%q[prob]), %[t0]\n\t" \
+ "cmovb %[t1], %[code]\n\t" \
+ "mov %[symbol], %[t1]\n\t" \
+ "cmovae %[prob], %[t0]\n\t" \
+ \
+ nonlast_only( \
+ "cmovae %[match_bit], %[offset]\n\t" \
+ "mov %[match_byte], %[match_bit]\n\t" \
+ ) \
+ \
+ "sbb $-1, %[symbol]\n\t" \
+ \
+ "shr %[move_bits], %[t0]\n\t" \
+ /* Undo symbol += match_bit + offset: */ \
+ "and $0x1FF, %[symbol]\n\t" \
+ "sub %[t0], %[prob]\n\t" \
+ \
+ /* Scaling of 1 instead of 2 because symbol <<= 1. */ \
+ "mov %w[prob], (%[probs_base], %q[t1], 1)\n\t"
+
+
+#if LZMA_RANGE_DECODER_CONFIG & 0x080
+#undef rc_matched_literal
+#define rc_matched_literal(probs_base_var, match_byte_value) \
+do { \
+ uint32_t t0; \
+ uint32_t t1; \
+ uint32_t t_prob; \
+ uint32_t t_match_byte = (uint32_t)(match_byte_value) << 1; \
+ uint32_t t_match_bit = t_match_byte; \
+ uint32_t t_offset = 0x100; \
+ symbol = 1; \
+ \
+ __asm__( \
+ rc_asm_matched_literal(rc_asm_y) \
+ rc_asm_matched_literal(rc_asm_y) \
+ rc_asm_matched_literal(rc_asm_y) \
+ rc_asm_matched_literal(rc_asm_y) \
+ rc_asm_matched_literal(rc_asm_y) \
+ rc_asm_matched_literal(rc_asm_y) \
+ rc_asm_matched_literal(rc_asm_y) \
+ rc_asm_matched_literal(rc_asm_n) \
+ : \
+ [range] "+&r"(rc.range), \
+ [code] "+&r"(rc.code), \
+ [t0] "=&r"(t0), \
+ [t1] "=&r"(t1), \
+ [prob] "=&r"(t_prob), \
+ [match_bit] "+&r"(t_match_bit), \
+ [symbol] "+&r"(symbol), \
+ [match_byte] "+&r"(t_match_byte), \
+ [offset] "+&r"(t_offset), \
+ [in_ptr] "+&r"(rc_in_ptr) \
+ : \
+ [probs_base] "r"(probs_base_var), \
+ [top_value] "n"(RC_TOP_VALUE), \
+ [shift_bits] "n"(RC_SHIFT_BITS), \
+ [bit_model_total_bits] "n"(RC_BIT_MODEL_TOTAL_BITS), \
+ [bit_model_offset] "n"(RC_BIT_MODEL_OFFSET), \
+ [move_bits] "n"(RC_MOVE_BITS) \
+ : \
+ "cc", "memory"); \
+} while (0)
+#endif // LZMA_RANGE_DECODER_CONFIG & 0x080
+
+
+// Doing the loop in asm instead of C seems to help a little.
+#if LZMA_RANGE_DECODER_CONFIG & 0x100
+#undef rc_direct
+#define rc_direct(dest_var, count_var) \
+do { \
+ uint32_t t0; \
+ uint32_t t1; \
+ \
+ __asm__( \
+ "2:\n\t" \
+ "add %[dest], %[dest]\n\t" \
+ "lea 1(%q[dest]), %[t1]\n\t" \
+ \
+ rc_asm_normalize \
+ \
+ "shr $1, %[range]\n\t" \
+ "mov %[code], %[t0]\n\t" \
+ "sub %[range], %[code]\n\t" \
+ "cmovns %[t1], %[dest]\n\t" \
+ "cmovs %[t0], %[code]\n\t" \
+ "dec %[count]\n\t" \
+ "jnz 2b\n\t" \
+ : \
+ [range] "+&r"(rc.range), \
+ [code] "+&r"(rc.code), \
+ [t0] "=&r"(t0), \
+ [t1] "=&r"(t1), \
+ [dest] "+&r"(dest_var), \
+ [count] "+&r"(count_var), \
+ [in_ptr] "+&r"(rc_in_ptr) \
+ : \
+ [top_value] "n"(RC_TOP_VALUE), \
+ [shift_bits] "n"(RC_SHIFT_BITS) \
+ : \
+ "cc", "memory"); \
+} while (0)
+#endif // LZMA_RANGE_DECODER_CONFIG & 0x100
+
+#endif // x86_64
#endif
diff --git a/src/liblzma/rangecoder/range_encoder.h b/src/liblzma/rangecoder/range_encoder.h
index d794eab..8f62a47 100644
--- a/src/liblzma/rangecoder/range_encoder.h
+++ b/src/liblzma/rangecoder/range_encoder.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file range_encoder.h
@@ -6,9 +8,6 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_RANGE_ENCODER_H
diff --git a/src/liblzma/simple/Makefile.inc b/src/liblzma/simple/Makefile.inc
index dc092f9..f42ad1b 100644
--- a/src/liblzma/simple/Makefile.inc
+++ b/src/liblzma/simple/Makefile.inc
@@ -1,9 +1,5 @@
-##
+## SPDX-License-Identifier: 0BSD
## Author: Lasse Collin
-##
-## This file has been put into the public domain.
-## You can do whatever you want with this file.
-##
liblzma_la_SOURCES += \
simple/simple_coder.c \
@@ -49,3 +45,7 @@ endif
if COND_FILTER_SPARC
liblzma_la_SOURCES += simple/sparc.c
endif
+
+if COND_FILTER_RISCV
+liblzma_la_SOURCES += simple/riscv.c
+endif
diff --git a/src/liblzma/simple/arm.c b/src/liblzma/simple/arm.c
index 6e53970..58acb2d 100644
--- a/src/liblzma/simple/arm.c
+++ b/src/liblzma/simple/arm.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file arm.c
@@ -6,9 +8,6 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "simple_private.h"
diff --git a/src/liblzma/simple/arm64.c b/src/liblzma/simple/arm64.c
index 0fe0824..0a73f6c 100644
--- a/src/liblzma/simple/arm64.c
+++ b/src/liblzma/simple/arm64.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file arm64.c
@@ -16,9 +18,6 @@
// Jia Tan
// Igor Pavlov
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "simple_private.h"
diff --git a/src/liblzma/simple/armthumb.c b/src/liblzma/simple/armthumb.c
index 25d8dbd..f1eeca9 100644
--- a/src/liblzma/simple/armthumb.c
+++ b/src/liblzma/simple/armthumb.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file armthumb.c
@@ -6,9 +8,6 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "simple_private.h"
diff --git a/src/liblzma/simple/ia64.c b/src/liblzma/simple/ia64.c
index 692b0a2..5025014 100644
--- a/src/liblzma/simple/ia64.c
+++ b/src/liblzma/simple/ia64.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file ia64.c
@@ -6,9 +8,6 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "simple_private.h"
diff --git a/src/liblzma/simple/powerpc.c b/src/liblzma/simple/powerpc.c
index 3a340fd..ba6cfbe 100644
--- a/src/liblzma/simple/powerpc.c
+++ b/src/liblzma/simple/powerpc.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file powerpc.c
@@ -6,9 +8,6 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "simple_private.h"
diff --git a/src/liblzma/simple/riscv.c b/src/liblzma/simple/riscv.c
new file mode 100644
index 0000000..b18df8b
--- /dev/null
+++ b/src/liblzma/simple/riscv.c
@@ -0,0 +1,755 @@
+// SPDX-License-Identifier: 0BSD
+
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file riscv.c
+/// \brief Filter for 32-bit/64-bit little/big endian RISC-V binaries
+///
+/// This converts program counter relative addresses in function calls
+/// (JAL, AUIPC+JALR), address calculation of functions and global
+/// variables (AUIPC+ADDI), loads (AUIPC+load), and stores (AUIPC+store).
+///
+/// For AUIPC+inst2 pairs, the paired instruction checking is fairly relaxed.
+/// The paired instruction opcode must only have its lowest two bits set,
+/// meaning it will convert any paired instruction that is not a 16-bit
+/// compressed instruction. This was shown to be enough to keep the number
+/// of false matches low while improving code size and speed.
+//
+// Authors: Lasse Collin
+// Jia Tan
+//
+// Special thanks:
+//
+// - Chien Wong <m@xv97.com> provided a few early versions of RISC-V
+// filter variants along with test files and benchmark results.
+//
+// - Igor Pavlov helped a lot in the filter design, getting it both
+// faster and smaller. The implementation here is still independently
+// written, not based on LZMA SDK.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+/*
+
+RISC-V filtering
+================
+
+ RV32I and RV64I, possibly combined with extensions C, Zfh, F, D,
+ and Q, are identical enough that the same filter works for both.
+
+ The instruction encoding is always little endian, even on systems
+ with big endian data access. Thus the same filter works for both
+ endiannesses.
+
+ The following instructions have program counter relative
+ (pc-relative) behavior:
+
+JAL
+---
+
+ JAL is used for function calls (including tail calls) and
+ unconditional jumps within functions. Jumps within functions
+ aren't useful to filter because the absolute addresses often
+ appear only once or at most a few times. Tail calls and jumps
+ within functions look the same to a simple filter so neither
+ are filtered, that is, JAL x0 is ignored (the ABI name of the
+ register x0 is "zero").
+
+ Almost all calls store the return address to register x1 (ra)
+ or x5 (t0). To reduce false matches when the filter is applied
+ to non-code data, only the JAL instructions that use x1 or x5
+ are converted. JAL has pc-relative range of +/-1 MiB so longer
+ calls and jumps need another method (AUIPC+JALR).
+
+C.J and C.JAL
+-------------
+
+ C.J and C.JAL have pc-relative range of +/-2 KiB.
+
+ C.J is for tail calls and jumps within functions and isn't
+ filtered for the reasons mentioned for JAL x0.
+
+ C.JAL is an RV32C-only instruction. Its encoding overlaps with
+ RV64C-only C.ADDIW which is a common instruction. So if filtering
+ C.JAL was useful (it wasn't tested) then a separate filter would
+ be needed for RV32 and RV64. Also, false positives would be a
+ significant problem when the filter is applied to non-code data
+ because C.JAL needs only five bits to match. Thus, this filter
+ doesn't modify C.JAL instructions.
+
+BEQ, BNE, BLT, BGE, BLTU, BGEU, C.BEQZ, and C.BNEZ
+--------------------------------------------------
+
+ These are conditional branches with pc-relative range
+ of +/-4 KiB (+/-256 B for C.*). The absolute addresses often
+ appear only once and very short distances are the most common,
+ so filtering these instructions would make compression worse.
+
+AUIPC with rd != x0
+-------------------
+
+ AUIPC is paired with a second instruction (inst2) to do
+ pc-relative jumps, calls, loads, stores, and for taking
+ an address of a symbol. AUIPC has a 20-bit immediate and
+ the possible inst2 choices have a 12-bit immediate.
+
+ AUIPC stores pc + 20-bit signed immediate to a register.
+ The immediate encodes a multiple of 4 KiB so AUIPC itself
+ has a pc-relative range of +/-2 GiB. AUIPC does *NOT* set
+ the lowest 12 bits of the result to zero! This means that
+ the 12-bit immediate in inst2 cannot just include the lowest
+ 12 bits of the absolute address as is; the immediate has to
+ compensate for the lowest 12 bits that AUIPC copies from the
+ program counter. This means that a good filter has to convert
+ not only AUIPC but also the paired inst2.
+
+ A strict filter would focus on filtering the following
+ AUIPC+inst2 pairs:
+
+ - AUIPC+JALR: Function calls, including tail calls.
+
+ - AUIPC+ADDI: Calculating the address of a function
+ or a global variable.
+
+ - AUIPC+load/store from the base instruction sets
+ (RV32I, RV64I) or from the floating point extensions
+ Zfh, F, D, and Q:
+ * RV32I: LB, LH, LW, LBU, LHU, SB, SH, SW
+ * RV64I has also: LD, LWU, SD
+ * Zfh: FLH, FSH
+ * F: FLW, FSW
+ * D: FLD, FSD
+ * Q: FLQ, FSQ
+
+ NOTE: AUIPC+inst2 can only be a pair if AUIPC's rd specifies
+ the same register as inst2's rs1.
+
+ Instead of strictly accepting only the above instructions as inst2,
+ this filter uses a much simpler condition: the lowest two bits of
+ inst2 must be set, that is, inst2 must not be a 16-bit compressed
+ instruction. So this will accept all 32-bit and possible future
+ extended instructions as a pair to AUIPC if the bits in AUIPC's
+ rd [11:7] match the bits [19:15] in inst2 (the bits that I-type and
+ S-type instructions use for rs1). Testing showed that this relaxed
+ condition for inst2 did not consistently or significantly affect
+ compression ratio but it reduced code size and improved speed.
+
+ Additionally, the paired instruction is always treated as an I-type
+ instruction. The S-type instructions used by stores (SB, SH, SW,
+ etc.) place the lowest 5 bits of the immediate in a different
+ location than I-type instructions. AUIPC+store pairs are less
+ common than other pairs, and testing showed that the extra
+ code required to handle S-type instructions was not worth the
+ compression ratio gained.
+
+ AUIPC+inst2 don't necessarily appear sequentially next to each
+ other although very often they do. Especially AUIPC+JALR are
+ sequential as that may allow instruction fusion in processors
+ (and perhaps help branch prediction as a fused AUIPC+JALR is
+ a direct branch while JALR alone is an indirect branch).
+
+ Clang 16 can generate code where AUIPC+inst2 is split:
+
+ - AUIPC is outside a loop and inst2 (load/store) is inside
+ the loop. This way the AUIPC instruction needs to be
+ executed only once.
+
+ - Load-modify-store may have AUIPC for the load and the same
+ AUIPC-result is used for the store too. This may get combined
+ with AUIPC being outside the loop.
+
+ - AUIPC is before a conditional branch and inst2 is hundreds
+ of bytes away at the branch target.
+
+ - Inner and outer pair:
+
+ auipc a1,0x2f
+ auipc a2,0x3d
+ ld a2,-500(a2)
+ addi a1,a1,-233
+
+ - Many split pairs with an untaken conditional branch between:
+
+ auipc s9,0x1613 # Pair 1
+ auipc s4,0x1613 # Pair 2
+ auipc s6,0x1613 # Pair 3
+ auipc s10,0x1613 # Pair 4
+ beqz a5,a3baae
+ ld a0,0(a6)
+ ld a6,246(s9) # Pair 1
+ ld a1,250(s4) # Pair 2
+ ld a3,254(s6) # Pair 3
+ ld a4,258(s10) # Pair 4
+
+ It's not possible to find all split pairs in a filter like this.
+ At least in 2024, simple sequential pairs are 99 % of AUIPC uses
+ so filtering only such pairs gives good results and makes the
+ filter simpler. However, it's possible that future compilers will
+ produce different code where sequential pairs aren't as common.
+
+ This filter doesn't convert AUIPC instructions alone because:
+
+ (1) The conversion would be off-by-one (or off-by-4096) half the
+ time because the lowest 12 bits from inst2 (inst2_imm12)
+ aren't known. We only know that the absolute address is
+ pc + AUIPC_imm20 + [-2048, +2047] but there is no way to
+ know the exact 4096-byte multiple (or 4096 * n + 2048):
+ there are always two possibilities because AUIPC copies
+ the 12 lowest bits from pc instead of zeroing them.
+
+ NOTE: The sign-extension of inst2_imm12 adds a tiny bit
+ of extra complexity to AUIPC math in general but it's not
+ the reason for this problem. The sign-extension only changes
+ the relative position of the pc-relative 4096-byte window.
+
+ (2) Matching AUIPC instruction alone requires only seven bits.
+ When the filter is applied to non-code data, that leads
+ to many false positives which make compression worse.
+ As long as most AUIPC+inst2 pairs appear as two consecutive
+ instructions, converting only such pairs gives better results.
+
+ In assembly, AUIPC+inst2 tend to look like this:
+
+ # Call:
+ auipc ra, 0x12345
+ jalr ra, -42(ra)
+
+ # Tail call:
+ auipc t1, 0x12345
+ jalr zero, -42(t1)
+
+ # Getting the absolute address:
+ auipc a0, 0x12345
+ addi a0, a0, -42
+
+ # rd of inst2 isn't necessarily the same as rs1 even
+ # in cases where there is no reason to preserve rs1.
+ auipc a0, 0x12345
+ addi a1, a0, -42
+
+ As of 2024, 16-bit instructions from the C extension don't
+ appear as inst2. The RISC-V psABI doesn't list AUIPC+C.* as
+ a linker relaxation type explicitly but it's not disallowed
+ either. Usefulness is limited as most of the time the lowest
+ 12 bits won't fit in a C instruction. This filter doesn't
+ support AUIPC+C.* combinations because this makes the filter
+ simpler, there are no test files, and it hopefully will never
+ be needed anyway.
+
+ (Compare AUIPC to ARM64 where ADRP does set the lowest 12 bits
+ to zero. The paired instruction has the lowest 12 bits of the
+ absolute address as is in a zero-extended immediate. Thus the
+ ARM64 filter doesn't need to care about the instructions that
+ are paired with ADRP. An off-by-4096 issue can still occur if
+ the code section isn't aligned with the filter's start offset.
+ It's not a problem with standalone ELF files but Windows PE
+ files need start_offset=3072 for best results. Also, a .tar
+ stores files with 512-byte alignment so most of the time it
+ won't be the best for ARM64.)
+
+AUIPC with rd == x0
+-------------------
+
+ AUIPC instructions with rd=x0 are reserved for HINTs in the base
+ instruction set. Such AUIPC instructions are never filtered.
+
+ As of January 2024, it seems likely that AUIPC with rd=x0 will
+ be used for landing pads (pseudoinstruction LPAD). LPAD is used
+ to mark valid targets for indirect jumps (for JALR), for example,
+ beginnings of functions. The 20-bit immediate in LPAD instruction
+ is a label, not a pc-relative address. Thus it would be
+ counterproductive to convert AUIPC instructions with rd=x0.
+
+ Often the next instruction after LPAD won't have rs1=x0 and thus
+ the filtering would be skipped for that reason alone. However,
+ it's not good to rely on this. For example, consider a function
+ that begins like this:
+
+ int foo(int i)
+ {
+ if (i <= 234) {
+ ...
+ }
+
+ A compiler may generate something like this:
+
+ lpad 0x54321
+ li a5, 234
+ bgt a0, a5, .L2
+
+ Converting the pseudoinstructions to raw instructions:
+
+ auipc x0, 0x54321
+ addi x15, x0, 234
+ blt x15, x10, .L2
+
+ In this case the filter would undesirably convert the AUIPC+ADDI
+ pair if the filter didn't explicitly skip AUIPC instructions
+ that have rd=x0.
+
+*/
+
+
+#include "simple_private.h"
+
+
+// This checks two conditions at once:
+// - AUIPC rd == inst2 rs1.
+// - inst2 opcode has the lowest two bits set.
+//
+// The 8 bit left shift aligns the rd of AUIPC with the rs1 of inst2.
+// By XORing the registers, any non-zero value in those bits indicates the
+// registers are not equal and thus not an AUIPC pair. Subtracting 3 from
+// inst2 will zero out the first two opcode bits only when they are set.
+// The mask tests if any of the register or opcode bits are set (and thus
+// not an AUIPC pair).
+//
+// Alternative expression: (((((auipc) << 8) ^ (inst2)) & 0xF8003) != 3)
+#define NOT_AUIPC_PAIR(auipc, inst2) \
+ ((((auipc) << 8) ^ ((inst2) - 3)) & 0xF8003)
+
+// This macro checks multiple conditions:
+// (1) AUIPC rd [11:7] == x2 (special rd value).
+// (2) AUIPC bits 12 and 13 set (the lowest two opcode bits of packed inst2).
+// (3) inst2_rs1 doesn't equal x0 or x2 because the opposite
+// conversion is only done when
+// auipc_rd != x0 &&
+// auipc_rd != x2 &&
+// auipc_rd == inst2_rs1.
+//
+// The left-hand side takes care of (1) and (2).
+// (a) The lowest 7 bits are already known to be AUIPC so subtracting 0x17
+// makes those bits zeros.
+// (b) If AUIPC rd equals x2, subtracting 0x100 makes bits [11:7] zeros.
+// If rd doesn't equal x2, then there will be at least one non-zero bit
+// and the next step (c) is irrelevant.
+// (c) If the lowest two opcode bits of the packed inst2 are set in [13:12],
+// then subtracting 0x3000 will make those bits zeros. Otherwise there
+// will be at least one non-zero bit.
+//
+// The shift by 18 removes the high bits from the final '>=' comparison and
+// ensures that any non-zero result will be larger than any possible result
+// from the right-hand side of the comparison. The cast ensures that the
+// left-hand side didn't get promoted to a larger type than uint32_t.
+//
+// On the right-hand side, inst2_rs1 & 0x1D will be non-zero as long as
+// inst2_rs1 is not x0 or x2.
+//
+// The final '>=' comparison will make the expression true if:
+// - The subtraction caused any bits to be set (special AUIPC rd value not
+// used or inst2 opcode bits not set). (non-zero >= non-zero or 0)
+// - The subtraction did not cause any bits to be set but inst2_rs1 was
+// x0 or x2. (0 >= 0)
+#define NOT_SPECIAL_AUIPC(auipc, inst2_rs1) \
+ ((uint32_t)(((auipc) - 0x3117) << 18) >= ((inst2_rs1) & 0x1D))
+
+
+// The encode and decode functions are split for this filter because of the
+// AUIPC+inst2 filtering. This filter design allows a decoder-only
+// implementation to be smaller than alternative designs.
+
+#ifdef HAVE_ENCODER_RISCV
+static size_t
+riscv_encode(void *simple lzma_attribute((__unused__)),
+ uint32_t now_pos,
+ bool is_encoder lzma_attribute((__unused__)),
+ uint8_t *buffer, size_t size)
+{
+ // Avoid using i + 8 <= size in the loop condition.
+ //
+ // NOTE: If there is a JAL in the last six bytes of the stream, it
+ // won't be converted. This is intentional to keep the code simpler.
+ if (size < 8)
+ return 0;
+
+ size -= 8;
+
+ size_t i;
+
+ // The loop is advanced by 2 bytes every iteration since the
+ // instruction stream may include 16-bit instructions (C extension).
+ for (i = 0; i <= size; i += 2) {
+ uint32_t inst = buffer[i];
+
+ if (inst == 0xEF) {
+ // JAL
+ const uint32_t b1 = buffer[i + 1];
+
+ // Only filter rd=x1(ra) and rd=x5(t0).
+ if ((b1 & 0x0D) != 0)
+ continue;
+
+ // The 20-bit immediate is in four pieces.
+ // The encoder stores it in big endian form
+ // since it improves compression slightly.
+ const uint32_t b2 = buffer[i + 2];
+ const uint32_t b3 = buffer[i + 3];
+ const uint32_t pc = now_pos + (uint32_t)i;
+
+// The following chart shows the highest three bytes of JAL, focusing on
+// the 20-bit immediate field [31:12]. The first row of numbers is the
+// bit position in a 32-bit little endian instruction. The second row of
+// numbers shows the order of the immediate field in a J-type instruction.
+// The last row is the bit number in each byte.
+//
+// To determine the amount to shift each bit, subtract the value in
+// the last row from the value in the second last row. If the number
+// is positive, shift left. If negative, shift right.
+//
+// For example, at the rightmost side of the chart, the bit 4 in b1 is
+// the bit 12 of the address. Thus that bit needs to be shifted left
+// by 12 - 4 = 8 bits to put it in the right place in the addr variable.
+//
+// NOTE: The immediate of a J-type instruction holds bits [20:1] of
+// the address. The bit [0] is always 0 and not part of the immediate.
+//
+// | b3 | b2 | b1 |
+// | 31 30 29 28 27 26 25 24 | 23 22 21 20 19 18 17 16 | 15 14 13 12 x x x x |
+// | 20 10 9 8 7 6 5 4 | 3 2 1 11 19 18 17 16 | 15 14 13 12 x x x x |
+// | 7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0 | 7 6 5 4 x x x x |
+
+ uint32_t addr = ((b1 & 0xF0) << 8)
+ | ((b2 & 0x0F) << 16)
+ | ((b2 & 0x10) << 7)
+ | ((b2 & 0xE0) >> 4)
+ | ((b3 & 0x7F) << 4)
+ | ((b3 & 0x80) << 13);
+
+ addr += pc;
+
+ buffer[i + 1] = (uint8_t)((b1 & 0x0F)
+ | ((addr >> 13) & 0xF0));
+
+ buffer[i + 2] = (uint8_t)(addr >> 9);
+ buffer[i + 3] = (uint8_t)(addr >> 1);
+
+ // The "-2" is included because the for-loop will
+ // always increment by 2. In this case, we want to
+ // skip an extra 2 bytes since we used 4 bytes
+ // of input.
+ i += 4 - 2;
+
+ } else if ((inst & 0x7F) == 0x17) {
+ // AUIPC
+ inst |= (uint32_t)buffer[i + 1] << 8;
+ inst |= (uint32_t)buffer[i + 2] << 16;
+ inst |= (uint32_t)buffer[i + 3] << 24;
+
+ // Branch based on AUIPC's rd. The bitmask test does
+ // the same thing as this:
+ //
+ // const uint32_t auipc_rd = (inst >> 7) & 0x1F;
+ // if (auipc_rd != 0 && auipc_rd != 2) {
+ if (inst & 0xE80) {
+ // AUIPC's rd doesn't equal x0 or x2.
+
+ // Check if AUIPC+inst2 are a pair.
+ uint32_t inst2 = read32le(buffer + i + 4);
+
+ if (NOT_AUIPC_PAIR(inst, inst2)) {
+ // The NOT_AUIPC_PAIR macro allows
+ // a false AUIPC+AUIPC pair if the
+ // bits [19:15] (where rs1 would be)
+ // in the second AUIPC match the rd
+ // of the first AUIPC.
+ //
+ // We must skip enough forward so
+ // that the first two bytes of the
+ // second AUIPC cannot get converted.
+ // Such a conversion could make the
+ // current pair become a valid pair
+ // which would desync the decoder.
+ //
+ // Skipping six bytes is enough even
+ // though the above condition looks
+ // at the lowest four bits of the
+ // buffer[i + 6] too. This is safe
+ // because this filter never changes
+ // those bits if a conversion at
+ // that position is done.
+ i += 6 - 2;
+ continue;
+ }
+
+ // Convert AUIPC+inst2 to a special format:
+ //
+ // - The lowest 7 bits [6:0] retain the
+ // AUIPC opcode.
+ //
+ // - The rd [11:7] is set to x2(sp). x2 is
+ // used as the stack pointer so AUIPC with
+ // rd=x2 should be very rare in real-world
+ // executables.
+ //
+ // - The remaining 20 bits [31:12] (that
+ // normally hold the pc-relative immediate)
+ // are used to store the lowest 20 bits of
+ // inst2. That is, the 12-bit immediate of
+ // inst2 is not included.
+ //
+ // - The location of the original inst2 is
+ // used to store the 32-bit absolute
+ // address in big endian format. Compared
+ // to the 20+12-bit split encoding, this
+ // results in a longer uninterrupted
+ // sequence of identical common bytes
+ // when the same address is referred
+ // with different instruction pairs
+ // (like AUIPC+LD vs. AUIPC+ADDI) or
+ // when the occurrences of the same
+ // pair use different registers. When
+ // referring to adjacent memory locations
+ // (like function calls that go via the
+ // ELF PLT), in big endian order only the
+ // last 1-2 bytes differ; in little endian
+ // the differing 1-2 bytes would be in the
+ // middle of the 8-byte sequence.
+ //
+ // When reversing the transformation, the
+ // original rd of AUIPC can be restored
+ // from inst2's rs1 as they are required to
+ // be the same.
+
+ // Arithmetic right shift makes sign extension
+ // trivial but (1) it's implementation-defined
+ // behavior (C99/C11/C23 6.5.7-p5) and so is
+ // (2) casting unsigned to signed (6.3.1.3-p3).
+ //
+ // One can check for (1) with
+ //
+ // if ((-1 >> 1) == -1) ...
+ //
+ // but (2) has to be checked from the
+ // compiler docs. GCC promises that (1)
+ // and (2) behave in the common expected
+ // way and thus
+ //
+ // addr += (uint32_t)(
+ // (int32_t)inst2 >> 20);
+ //
+ // does the same as the code below. But since
+ // the 100 % portable way is only a few bytes
+ // bigger code and there is no real speed
+ // difference, let's just use that, especially
+ // since the decoder doesn't need this at all.
+ uint32_t addr = inst & 0xFFFFF000;
+ addr += (inst2 >> 20)
+ - ((inst2 >> 19) & 0x1000);
+
+ addr += now_pos + (uint32_t)i;
+
+ // Construct the first 32 bits:
+ // [6:0] AUIPC opcode
+ // [11:7] Special AUIPC rd = x2
+ // [31:12] The lowest 20 bits of inst2
+ inst = 0x17 | (2 << 7) | (inst2 << 12);
+
+ write32le(buffer + i, inst);
+
+ // The second 32 bits store the absolute
+ // address in big endian order.
+ write32be(buffer + i + 4, addr);
+ } else {
+ // AUIPC's rd equals x0 or x2.
+ //
+ // x0 indicates a landing pad (LPAD).
+ // It's always skipped.
+ //
+ // AUIPC with rd == x2 is used for the special
+ // format as explained above. When the input
+ // contains a byte sequence that matches the
+ // special format, "fake" decoding must be
+ // done to keep the filter bijective (that
+ // is, safe to apply on arbitrary data).
+ //
+ // See the "x0 or x2" section in riscv_decode()
+ // for how the "real" decoding is done. The
+ // "fake" decoding is a simplified version
+ // of "real" decoding with the following
+ // differences (these reduce code size of
+ // the decoder):
+ // (1) The lowest 12 bits aren't sign-extended.
+ // (2) No address conversion is done.
+ // (3) Big endian format isn't used (the fake
+ // address is in little endian order).
+
+ // Check if inst matches the special format.
+ const uint32_t fake_rs1 = inst >> 27;
+
+ if (NOT_SPECIAL_AUIPC(inst, fake_rs1)) {
+ i += 4 - 2;
+ continue;
+ }
+
+ const uint32_t fake_addr =
+ read32le(buffer + i + 4);
+
+ // Construct the second 32 bits:
+ // [19:0] Upper 20 bits from AUIPC
+ // [31:20] The lowest 12 bits of fake_addr
+ const uint32_t fake_inst2 = (inst >> 12)
+ | (fake_addr << 20);
+
+ // Construct new first 32 bits from:
+ // [6:0] AUIPC opcode
+ // [11:7] Fake AUIPC rd = fake_rs1
+ // [31:12] The highest 20 bits of fake_addr
+ inst = 0x17 | (fake_rs1 << 7)
+ | (fake_addr & 0xFFFFF000);
+
+ write32le(buffer + i, inst);
+ write32le(buffer + i + 4, fake_inst2);
+ }
+
+ i += 8 - 2;
+ }
+ }
+
+ return i;
+}
+
+
+extern lzma_ret
+lzma_simple_riscv_encoder_init(lzma_next_coder *next,
+ const lzma_allocator *allocator,
+ const lzma_filter_info *filters)
+{
+ return lzma_simple_coder_init(next, allocator, filters,
+ &riscv_encode, 0, 8, 2, true);
+}
+#endif
+
+
+#ifdef HAVE_DECODER_RISCV
+static size_t
+riscv_decode(void *simple lzma_attribute((__unused__)),
+ uint32_t now_pos,
+ bool is_encoder lzma_attribute((__unused__)),
+ uint8_t *buffer, size_t size)
+{
+ if (size < 8)
+ return 0;
+
+ size -= 8;
+
+ size_t i;
+ for (i = 0; i <= size; i += 2) {
+ uint32_t inst = buffer[i];
+
+ if (inst == 0xEF) {
+ // JAL
+ const uint32_t b1 = buffer[i + 1];
+
+ // Only filter rd=x1(ra) and rd=x5(t0).
+ if ((b1 & 0x0D) != 0)
+ continue;
+
+ const uint32_t b2 = buffer[i + 2];
+ const uint32_t b3 = buffer[i + 3];
+ const uint32_t pc = now_pos + (uint32_t)i;
+
+// | b3 | b2 | b1 |
+// | 31 30 29 28 27 26 25 24 | 23 22 21 20 19 18 17 16 | 15 14 13 12 x x x x |
+// | 20 10 9 8 7 6 5 4 | 3 2 1 11 19 18 17 16 | 15 14 13 12 x x x x |
+// | 7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0 | 7 6 5 4 x x x x |
+
+ uint32_t addr = ((b1 & 0xF0) << 13)
+ | (b2 << 9) | (b3 << 1);
+
+ addr -= pc;
+
+ buffer[i + 1] = (uint8_t)((b1 & 0x0F)
+ | ((addr >> 8) & 0xF0));
+
+ buffer[i + 2] = (uint8_t)(((addr >> 16) & 0x0F)
+ | ((addr >> 7) & 0x10)
+ | ((addr << 4) & 0xE0));
+
+ buffer[i + 3] = (uint8_t)(((addr >> 4) & 0x7F)
+ | ((addr >> 13) & 0x80));
+
+ i += 4 - 2;
+
+ } else if ((inst & 0x7F) == 0x17) {
+ // AUIPC
+ uint32_t inst2;
+
+ inst |= (uint32_t)buffer[i + 1] << 8;
+ inst |= (uint32_t)buffer[i + 2] << 16;
+ inst |= (uint32_t)buffer[i + 3] << 24;
+
+ if (inst & 0xE80) {
+ // AUIPC's rd doesn't equal x0 or x2.
+
+ // Check if it is a "fake" AUIPC+inst2 pair.
+ inst2 = read32le(buffer + i + 4);
+
+ if (NOT_AUIPC_PAIR(inst, inst2)) {
+ i += 6 - 2;
+ continue;
+ }
+
+ // Decode (or more like re-encode) the "fake"
+ // pair. The "fake" format doesn't do
+ // sign-extension, address conversion, or
+ // use big endian. (The use of little endian
+ // allows sharing the write32le() calls in
+ // the decoder to reduce code size when
+ // unaligned access isn't supported.)
+ uint32_t addr = inst & 0xFFFFF000;
+ addr += inst2 >> 20;
+
+ inst = 0x17 | (2 << 7) | (inst2 << 12);
+ inst2 = addr;
+ } else {
+ // AUIPC's rd equals x0 or x2.
+
+ // Check if inst matches the special format
+ // used by the encoder.
+ const uint32_t inst2_rs1 = inst >> 27;
+
+ if (NOT_SPECIAL_AUIPC(inst, inst2_rs1)) {
+ i += 4 - 2;
+ continue;
+ }
+
+ // Decode the "real" pair.
+ uint32_t addr = read32be(buffer + i + 4);
+
+ addr -= now_pos + (uint32_t)i;
+
+ // The second instruction:
+ // - Get the lowest 20 bits from inst.
+ // - Add the lowest 12 bits of the address
+ // as the immediate field.
+ inst2 = (inst >> 12) | (addr << 20);
+
+ // AUIPC:
+ // - rd is the same as inst2_rs1.
+ // - The sign extension of the lowest 12 bits
+ // must be taken into account.
+ inst = 0x17 | (inst2_rs1 << 7)
+ | ((addr + 0x800) & 0xFFFFF000);
+ }
+
+ // Both decoder branches write in little endian order.
+ write32le(buffer + i, inst);
+ write32le(buffer + i + 4, inst2);
+
+ i += 8 - 2;
+ }
+ }
+
+ return i;
+}
+
+
+extern lzma_ret
+lzma_simple_riscv_decoder_init(lzma_next_coder *next,
+ const lzma_allocator *allocator,
+ const lzma_filter_info *filters)
+{
+ return lzma_simple_coder_init(next, allocator, filters,
+ &riscv_decode, 0, 8, 2, false);
+}
+#endif
diff --git a/src/liblzma/simple/simple_coder.c b/src/liblzma/simple/simple_coder.c
index ed2d7fb..5cbfa82 100644
--- a/src/liblzma/simple/simple_coder.c
+++ b/src/liblzma/simple/simple_coder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file simple_coder.c
@@ -8,9 +10,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "simple_private.h"
diff --git a/src/liblzma/simple/simple_coder.h b/src/liblzma/simple/simple_coder.h
index 668a509..2b762d5 100644
--- a/src/liblzma/simple/simple_coder.h
+++ b/src/liblzma/simple/simple_coder.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file simple_coder.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_SIMPLE_CODER_H
@@ -62,12 +61,12 @@ extern lzma_ret lzma_simple_armthumb_decoder_init(lzma_next_coder *next,
extern lzma_ret lzma_simple_arm64_encoder_init(lzma_next_coder *next,
- const lzma_allocator *allocator,
- const lzma_filter_info *filters);
+ const lzma_allocator *allocator,
+ const lzma_filter_info *filters);
extern lzma_ret lzma_simple_arm64_decoder_init(lzma_next_coder *next,
- const lzma_allocator *allocator,
- const lzma_filter_info *filters);
+ const lzma_allocator *allocator,
+ const lzma_filter_info *filters);
extern lzma_ret lzma_simple_sparc_encoder_init(lzma_next_coder *next,
@@ -78,4 +77,13 @@ extern lzma_ret lzma_simple_sparc_decoder_init(lzma_next_coder *next,
const lzma_allocator *allocator,
const lzma_filter_info *filters);
+
+extern lzma_ret lzma_simple_riscv_encoder_init(lzma_next_coder *next,
+ const lzma_allocator *allocator,
+ const lzma_filter_info *filters);
+
+extern lzma_ret lzma_simple_riscv_decoder_init(lzma_next_coder *next,
+ const lzma_allocator *allocator,
+ const lzma_filter_info *filters);
+
#endif
diff --git a/src/liblzma/simple/simple_decoder.c b/src/liblzma/simple/simple_decoder.c
index dc4d241..d9820ee 100644
--- a/src/liblzma/simple/simple_decoder.c
+++ b/src/liblzma/simple/simple_decoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file simple_decoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "simple_decoder.h"
diff --git a/src/liblzma/simple/simple_decoder.h b/src/liblzma/simple/simple_decoder.h
index bed8d37..2ae87bb 100644
--- a/src/liblzma/simple/simple_decoder.h
+++ b/src/liblzma/simple/simple_decoder.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file simple_decoder.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_SIMPLE_DECODER_H
diff --git a/src/liblzma/simple/simple_encoder.c b/src/liblzma/simple/simple_encoder.c
index d2cc03e..d1f3509 100644
--- a/src/liblzma/simple/simple_encoder.c
+++ b/src/liblzma/simple/simple_encoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file simple_encoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "simple_encoder.h"
diff --git a/src/liblzma/simple/simple_encoder.h b/src/liblzma/simple/simple_encoder.h
index 1cee482..bf5edbb 100644
--- a/src/liblzma/simple/simple_encoder.h
+++ b/src/liblzma/simple/simple_encoder.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file simple_encoder.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_SIMPLE_ENCODER_H
diff --git a/src/liblzma/simple/simple_private.h b/src/liblzma/simple/simple_private.h
index 9d2c0fd..7aa360f 100644
--- a/src/liblzma/simple/simple_private.h
+++ b/src/liblzma/simple/simple_private.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file simple_private.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_SIMPLE_PRIVATE_H
diff --git a/src/liblzma/simple/sparc.c b/src/liblzma/simple/sparc.c
index bad8492..e8ad285 100644
--- a/src/liblzma/simple/sparc.c
+++ b/src/liblzma/simple/sparc.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file sparc.c
@@ -6,9 +8,6 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "simple_private.h"
diff --git a/src/liblzma/simple/x86.c b/src/liblzma/simple/x86.c
index 232b295..f216231 100644
--- a/src/liblzma/simple/x86.c
+++ b/src/liblzma/simple/x86.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file x86.c
@@ -6,9 +8,6 @@
// Authors: Igor Pavlov
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "simple_private.h"
@@ -27,11 +26,7 @@ static size_t
x86_code(void *simple_ptr, uint32_t now_pos, bool is_encoder,
uint8_t *buffer, size_t size)
{
- static const bool MASK_TO_ALLOWED_STATUS[8]
- = { true, true, true, false, true, false, false, false };
-
- static const uint32_t MASK_TO_BIT_NUMBER[8]
- = { 0, 1, 2, 2, 3, 3, 3, 3 };
+ static const uint32_t MASK_TO_BIT_NUMBER[5] = { 0, 1, 2, 2, 3 };
lzma_simple_x86 *simple = simple_ptr;
uint32_t prev_mask = simple->prev_mask;
@@ -68,9 +63,8 @@ x86_code(void *simple_ptr, uint32_t now_pos, bool is_encoder,
b = buffer[buffer_pos + 4];
- if (Test86MSByte(b)
- && MASK_TO_ALLOWED_STATUS[(prev_mask >> 1) & 0x7]
- && (prev_mask >> 1) < 0x10) {
+ if (Test86MSByte(b) && (prev_mask >> 1) <= 4
+ && (prev_mask >> 1) != 3) {
uint32_t src = ((uint32_t)(b) << 24)
| ((uint32_t)(buffer[buffer_pos + 3]) << 16)
diff --git a/src/liblzma/validate_map.sh b/src/liblzma/validate_map.sh
index 2bf6f8b..dd1589d 100644
--- a/src/liblzma/validate_map.sh
+++ b/src/liblzma/validate_map.sh
@@ -1,4 +1,5 @@
#!/bin/sh
+# SPDX-License-Identifier: 0BSD
###############################################################################
#
@@ -78,9 +79,6 @@
#
# Author: Lasse Collin
#
-# This file has been put into the public domain.
-# You can do whatever you want with this file.
-#
###############################################################################
LC_ALL=C
@@ -124,7 +122,7 @@ DUPS=$(sort liblzma_generic.map | sed '/^$/d;/^global:$/d' | uniq -d)
# ignored (@XZ_5.1.2alpha or @XZ_5.2.2 won't be added at all when
# the #define HAVE_SYMBOL_VERSIONS_LINUX isn't used).
IN_SYNC=
-if ! sed '109,123d' liblzma_linux.map \
+if ! sed '111,125d' liblzma_linux.map \
| cmp -s - liblzma_generic.map; then
IN_SYNC=no
fi
diff --git a/src/lzmainfo/Makefile.am b/src/lzmainfo/Makefile.am
index ff7172b..9a5bc68 100644
--- a/src/lzmainfo/Makefile.am
+++ b/src/lzmainfo/Makefile.am
@@ -1,9 +1,5 @@
-##
+## SPDX-License-Identifier: 0BSD
## Author: Lasse Collin
-##
-## This file has been put into the public domain.
-## You can do whatever you want with this file.
-##
bin_PROGRAMS = lzmainfo
@@ -37,3 +33,29 @@ dist_man_MANS = lzmainfo.1
.rc.o:
$(RC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(lzmainfo_CPPFLAGS) $(CPPFLAGS) $(RCFLAGS) -i $< -o $@
+
+# The installation of translated man pages abuses Automake internals
+# by calling "install-man" with redefined dist_man_MANS and man_MANS.
+# If this breaks some day, don't blame Automake developers.
+install-data-hook:
+ languages= ; \
+ if test "$(USE_NLS)" = yes && test -d "$(top_srcdir)/po4a/man"; then \
+ languages=`ls "$(top_srcdir)/po4a/man"`; \
+ fi; \
+ for lang in . $$languages; do \
+ man="$(top_srcdir)/po4a/man/$$lang/lzmainfo.1" ; \
+ if test -f "$$man"; then \
+ $(MAKE) dist_man_MANS="$$man" man_MANS= \
+ mandir="$(mandir)/$$lang" install-man; \
+ fi; \
+ done
+
+uninstall-hook:
+ languages= ; \
+ if test "$(USE_NLS)" = yes && test -d "$(top_srcdir)/po4a/man"; then \
+ languages=`ls "$(top_srcdir)/po4a/man"`; \
+ fi; \
+ for lang in . $$languages; do \
+ name=`echo lzmainfo | sed '$(transform)'` && \
+ rm -f "$(DESTDIR)$(mandir)/$$lang/man1/$$name.1"; \
+ done
diff --git a/src/lzmainfo/Makefile.in b/src/lzmainfo/Makefile.in
index 0a18942..feea983 100644
--- a/src/lzmainfo/Makefile.in
+++ b/src/lzmainfo/Makefile.in
@@ -93,8 +93,8 @@ bin_PROGRAMS = lzmainfo$(EXEEXT)
@COND_GNULIB_TRUE@am__append_2 = $(top_builddir)/lib/libgnu.a
subdir = src/lzmainfo
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_capsicum.m4 \
- $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/getopt.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
+ $(top_srcdir)/m4/build-to-host.m4 $(top_srcdir)/m4/getopt.m4 \
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/host-cpu-c-abi.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -237,7 +237,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CAPSICUM_LIB = @CAPSICUM_LIB@
CC = @CC@
CCAS = @CCAS@
CCASDEPMODE = @CCASDEPMODE@
@@ -366,6 +365,8 @@ install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
+localedir_c = @localedir_c@
+localedir_c_make = @localedir_c_make@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
@@ -756,7 +757,8 @@ info: info-am
info-am:
install-data-am: install-man
-
+ @$(NORMAL_INSTALL)
+ $(MAKE) $(AM_MAKEFLAGS) install-data-hook
install-dvi: install-dvi-am
install-dvi-am:
@@ -804,25 +806,27 @@ ps: ps-am
ps-am:
uninstall-am: uninstall-binPROGRAMS uninstall-man
-
+ @$(NORMAL_INSTALL)
+ $(MAKE) $(AM_MAKEFLAGS) uninstall-hook
uninstall-man: uninstall-man1
-.MAKE: install-am install-strip
+.MAKE: install-am install-data-am install-strip uninstall-am
.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
ctags ctags-am distclean distclean-compile distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-binPROGRAMS \
- install-data install-data-am install-dvi install-dvi-am \
- install-exec install-exec-am install-html install-html-am \
- install-info install-info-am install-man install-man1 \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
- pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
- uninstall-binPROGRAMS uninstall-man uninstall-man1
+ install-data install-data-am install-data-hook install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-man1 install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
+ uninstall-am uninstall-binPROGRAMS uninstall-hook \
+ uninstall-man uninstall-man1
.PRECIOUS: Makefile
@@ -832,6 +836,32 @@ uninstall-man: uninstall-man1
$(RC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(lzmainfo_CPPFLAGS) $(CPPFLAGS) $(RCFLAGS) -i $< -o $@
+# The installation of translated man pages abuses Automake internals
+# by calling "install-man" with redefined dist_man_MANS and man_MANS.
+# If this breaks some day, don't blame Automake developers.
+install-data-hook:
+ languages= ; \
+ if test "$(USE_NLS)" = yes && test -d "$(top_srcdir)/po4a/man"; then \
+ languages=`ls "$(top_srcdir)/po4a/man"`; \
+ fi; \
+ for lang in . $$languages; do \
+ man="$(top_srcdir)/po4a/man/$$lang/lzmainfo.1" ; \
+ if test -f "$$man"; then \
+ $(MAKE) dist_man_MANS="$$man" man_MANS= \
+ mandir="$(mandir)/$$lang" install-man; \
+ fi; \
+ done
+
+uninstall-hook:
+ languages= ; \
+ if test "$(USE_NLS)" = yes && test -d "$(top_srcdir)/po4a/man"; then \
+ languages=`ls "$(top_srcdir)/po4a/man"`; \
+ fi; \
+ for lang in . $$languages; do \
+ name=`echo lzmainfo | sed '$(transform)'` && \
+ rm -f "$(DESTDIR)$(mandir)/$$lang/man1/$$name.1"; \
+ done
+
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/src/lzmainfo/lzmainfo.1 b/src/lzmainfo/lzmainfo.1
index ce38eee..114e0f3 100644
--- a/src/lzmainfo/lzmainfo.1
+++ b/src/lzmainfo/lzmainfo.1
@@ -1,9 +1,7 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Author: Lasse Collin
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
-.\"
.TH LZMAINFO 1 "2013-06-30" "Tukaani" "XZ Utils"
.SH NAME
lzmainfo \- show information stored in the .lzma file header
diff --git a/src/lzmainfo/lzmainfo.c b/src/lzmainfo/lzmainfo.c
index 71e6295..2550b1f 100644
--- a/src/lzmainfo/lzmainfo.c
+++ b/src/lzmainfo/lzmainfo.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file lzmainfo.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "sysdefs.h"
diff --git a/src/lzmainfo/lzmainfo_w32res.rc b/src/lzmainfo/lzmainfo_w32res.rc
index 378fbe6..f2ec288 100644
--- a/src/lzmainfo/lzmainfo_w32res.rc
+++ b/src/lzmainfo/lzmainfo_w32res.rc
@@ -1,8 +1,7 @@
+/* SPDX-License-Identifier: 0BSD */
+
/*
* Author: Lasse Collin
- *
- * This file has been put into the public domain.
- * You can do whatever you want with this file.
*/
#define MY_TYPE VFT_APP
diff --git a/src/scripts/Makefile.am b/src/scripts/Makefile.am
index fe5742d..29c561c 100644
--- a/src/scripts/Makefile.am
+++ b/src/scripts/Makefile.am
@@ -1,9 +1,5 @@
-##
+## SPDX-License-Identifier: 0BSD
## Author: Lasse Collin
-##
-## This file has been put into the public domain.
-## You can do whatever you want with this file.
-##
nodist_bin_SCRIPTS = xzdiff xzgrep xzmore xzless
dist_man_MANS = xzdiff.1 xzgrep.1 xzmore.1 xzless.1
diff --git a/src/scripts/Makefile.in b/src/scripts/Makefile.in
index 42dbfff..5cd5dbd 100644
--- a/src/scripts/Makefile.in
+++ b/src/scripts/Makefile.in
@@ -99,8 +99,8 @@ host_triplet = @host@
subdir = src/scripts
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_capsicum.m4 \
- $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/getopt.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
+ $(top_srcdir)/m4/build-to-host.m4 $(top_srcdir)/m4/getopt.m4 \
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/host-cpu-c-abi.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -189,7 +189,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CAPSICUM_LIB = @CAPSICUM_LIB@
CC = @CC@
CCAS = @CCAS@
CCASDEPMODE = @CCASDEPMODE@
@@ -318,6 +317,8 @@ install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
+localedir_c = @localedir_c@
+localedir_c_make = @localedir_c_make@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
diff --git a/src/scripts/xzdiff.1 b/src/scripts/xzdiff.1
index 24fed68..8f473ed 100644
--- a/src/scripts/xzdiff.1
+++ b/src/scripts/xzdiff.1
@@ -1,67 +1,90 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
-.\" Original zdiff.1 for gzip: Jean-loup Gailly
+.\" Authors: Lasse Collin
+.\" Jia Tan
.\"
-.\" Modifications for XZ Utils: Lasse Collin
-.\" Andrew Dudman
+.\" (Note that this file is not based on gzip's zdiff.1.)
.\"
-.\" License: GNU GPLv2+
-.\"
-.TH XZDIFF 1 "2021-06-04" "Tukaani" "XZ Utils"
+.TH XZDIFF 1 "2024-02-13" "Tukaani" "XZ Utils"
.SH NAME
xzcmp, xzdiff, lzcmp, lzdiff \- compare compressed files
+.
.SH SYNOPSIS
.B xzcmp
-.RI [ cmp_options "] " file1 " [" file2 ]
+.RI [ option... ]
+.I file1
+.RI [ file2 ]
.br
.B xzdiff
-.RI [ diff_options "] " file1 " [" file2 ]
+\&...
.br
.B lzcmp
-.RI [ cmp_options "] " file1 " [" file2 ]
+\&...
.br
.B lzdiff
-.RI [ diff_options "] " file1 " [" file2 ]
+\&...
+.
.SH DESCRIPTION
.B xzcmp
and
.B xzdiff
-invoke
+compare uncompressed contents of two files.
+Uncompressed data and options are passed to
.BR cmp (1)
or
.BR diff (1)
-on files compressed with
+unless
+.B \-\-help
+or
+.B \-\-version
+is specified.
+.PP
+If both
+.I file1
+and
+.I file2
+are specified, they can be uncompressed files or files in formats that
.BR xz (1),
-.BR lzma (1),
.BR gzip (1),
.BR bzip2 (1),
.BR lzop (1),
+.BR zstd (1),
or
-.BR zstd (1).
-All options specified are passed directly to
-.BR cmp (1)
-or
-.BR diff (1).
-If only one file is specified, then the files compared are
+.BR lz4 (1)
+can decompress.
+The required decompression commands are determined from
+the filename suffixes of
.I file1
-(which must have a suffix of a supported compression format) and
+and
+.IR file2 .
+A file with an unknown suffix is assumed to be either uncompressed
+or in a format that
+.BR xz (1)
+can decompress.
+.PP
+If only one filename is provided,
.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
-.BR cmp (1)
-or
-.BR diff (1).
-The exit status from
-.BR cmp (1)
-or
-.BR diff (1)
-is preserved unless a decompression error occurs; then exit status is 2.
+must have a suffix of a supported compression format and the name for
+.I file2
+is assumed to be
+.I file1
+with the compression format suffix removed.
.PP
-The names
+The commands
.B lzcmp
and
.B lzdiff
are provided for backward compatibility with LZMA Utils.
+.
+.SH EXIT STATUS
+If a decompression error occurs, the exit status is
+.BR 2 .
+Otherwise the exit status of
+.BR cmp (1)
+or
+.BR diff (1)
+is used.
+.
.SH "SEE ALSO"
.BR cmp (1),
.BR diff (1),
@@ -70,10 +93,4 @@ are provided for backward compatibility with LZMA Utils.
.BR bzip2 (1),
.BR lzop (1),
.BR zstd (1),
-.BR zdiff (1)
-.SH BUGS
-Messages from the
-.BR cmp (1)
-or
-.BR diff (1)
-programs refer to temporary filenames instead of those specified.
+.BR lz4 (1)
diff --git a/src/scripts/xzdiff.in b/src/scripts/xzdiff.in
index c17d78b..179218d 100644
--- a/src/scripts/xzdiff.in
+++ b/src/scripts/xzdiff.in
@@ -1,4 +1,5 @@
#!@POSIX_SHELL@
+# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 1998, 2002, 2006, 2007 Free Software Foundation
# Copyright (C) 1993 Jean-loup Gailly
@@ -30,7 +31,7 @@ case ${0##*/} in
*) prog=xzdiff; cmp=${DIFF:-diff};;
esac
-version="$prog (@PACKAGE_NAME@) @VERSION@"
+version="$prog (@PACKAGE_NAME@) @PACKAGE_VERSION@"
usage="Usage: ${0##*/} [OPTION]... FILE1 [FILE2]
Compare FILE1 to FILE2, using their uncompressed contents if they are
@@ -83,13 +84,15 @@ if test $# -eq 1; then
xz1=lzop;;
*[-.]zst | *.tzst)
xz1='zstd -q';;
+ *[-.]lz4)
+ xz1=lz4;;
*)
printf '%s\n' "$0: $1: Unknown compressed file name suffix" >&2
exit 2;;
esac
case $1 in
- *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *[-.]lz | *[-.]lzo | *[-.]zst)
- FILE=`expr "X$1" : 'X\(.*\)[-.][abglmostxzZ2]*$'`;;
+ *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *[-.]lz | *[-.]lzo | *[-.]zst | *[-.]lz4)
+ FILE=`expr "X$1" : 'X\(.*\)[-.][abglmostxzZ24]*$'`;;
*.t[abglx]z)
FILE=`expr "X$1" : 'X\(.*[-.]t\)[abglx]z$'`ar;;
*.tbz2)
@@ -109,17 +112,19 @@ elif test $# -eq 2; then
*[-.][zZ] | *_z | *[-.]gz | *.t[ag]z) xz1=gzip;;
*[-.]lzo | *.tzo) xz1=lzop;;
*[-.]zst | *.tzst) xz1='zstd -q';;
+ *[-.]lz4) xz1=lz4;;
esac
case $2 in
*[-.]bz2 | *.tbz | *.tbz2) xz2=bzip2;;
*[-.][zZ] | *_z | *[-.]gz | *.t[ag]z) xz2=gzip;;
*[-.]lzo | *.tzo) xz2=lzop;;
*[-.]zst | *.tzst) xz2='zstd -q';;
+ *[-.]lz4) xz2=lz4;;
esac
case $1 in
- *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *[-.]lz | *.t[abglx]z | *.tbz2 | *[-.]lzo | *.tzo | *[-.]zst | *.tzst | -)
+ *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *[-.]lz | *.t[abglx]z | *.tbz2 | *[-.]lzo | *.tzo | *[-.]zst | *.tzst | *[-.]lz4 | -)
case "$2" in
- *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *[-.]lz | *.t[abglx]z | *.tbz2 | *[-.]lzo | *.tzo | *[-.]zst | *.tzst | -)
+ *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *[-.]lz | *.t[abglx]z | *.tbz2 | *[-.]lzo | *.tzo | *[-.]zst | *.tzst | *[-.]lz4 | -)
if test "$1$2" = --; then
xz_status=$(
exec 4>&1
@@ -183,7 +188,7 @@ elif test $# -eq 2; then
esac;;
*)
case "$2" in
- *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *[-.]lz | *.t[abglx]z | *.tbz2 | *[-.]lzo | *.tzo | *[-.]zst | *.tzst | -)
+ *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *[-.]lz | *.t[abglx]z | *.tbz2 | *[-.]lzo | *.tzo | *[-.]zst | *.tzst | *[-.]lz4 | -)
xz_status=$(
exec 4>&1
($xz2 -cdf -- "$2" 4>&-; echo $? >&4) 3>&- |
@@ -194,7 +199,7 @@ elif test $# -eq 2; then
esac;;
esac
else
- printf '%s\n' "$0: Invalid number of operands; try \`${0##*/} --help' for help" >&2
+ printf '%s\n' "$0: Invalid number of operands; try '${0##*/} --help' for help" >&2
exit 2
fi
diff --git a/src/scripts/xzgrep.1 b/src/scripts/xzgrep.1
index e0514b8..63f012c 100644
--- a/src/scripts/xzgrep.1
+++ b/src/scripts/xzgrep.1
@@ -1,19 +1,18 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
-.\" Original zgrep.1 for gzip: Jean-loup Gailly
-.\" Charles Levert <charles@comm.polymtl.ca>
+.\" Authors: Lasse Collin
+.\" Jia Tan
.\"
-.\" Modifications for XZ Utils: Lasse Collin
+.\" (Note that this file is not based on gzip's zgrep.1.)
.\"
-.\" License: GNU GPLv2+
-.\"
-.TH XZGREP 1 "2022-07-19" "Tukaani" "XZ Utils"
+.TH XZGREP 1 "2024-02-13" "Tukaani" "XZ Utils"
.SH NAME
-xzgrep \- search compressed files for a regular expression
+xzgrep \- search possibly-compressed files for patterns
+.
.SH SYNOPSIS
.B xzgrep
-.RI [ grep_options ]
-.RB [ \-e ]
-.I pattern
+.RI [ option... ]
+.RI [ pattern_list ]
.RI [ file... ]
.br
.B xzegrep
@@ -30,54 +29,84 @@ xzgrep \- search compressed files for a regular expression
.br
.B lzfgrep
\&...
+.
.SH DESCRIPTION
.B xzgrep
invokes
.BR grep (1)
-on
+on uncompressed contents of files.
+The formats of the
.I files
-which may be either uncompressed or compressed with
+are determined from the filename suffixes.
+Any
+.I file
+with a suffix supported by
.BR xz (1),
-.BR lzma (1),
.BR gzip (1),
.BR bzip2 (1),
.BR lzop (1),
+.BR zstd (1),
or
-.BR zstd (1).
-All options specified are passed directly to
-.BR grep (1).
+.BR lz4 (1)
+will be decompressed;
+all other files are assumed to be uncompressed.
.PP
If no
+.I files
+are specified or
.I file
-is specified, then standard input is decompressed if necessary
-and fed to
-.BR grep (1).
-When reading from standard input,
-.BR gzip (1),
-.BR bzip2 (1),
-.BR lzop (1),
-and
-.BR zstd (1)
-compressed files are not supported.
+is
+.B \-
+then standard input is read.
+When reading from standard input, only files supported by
+.BR xz (1)
+are decompressed.
+Other files are assumed to be in uncompressed form already.
+.PP
+Most
+.I options
+of
+.BR grep (1)
+are supported.
+However, the following options are not supported:
+.IP "" 4
+.BR \-r ,
+.B \-\-recursive
+.IP "" 4
+.BR \-R ,
+.B \-\-dereference\-recursive
+.IP "" 4
+.BR \-d ,
+.BI \-\-directories= action
+.IP "" 4
+.BR \-Z ,
+.B \-\-null
+.IP "" 4
+.BR \-z ,
+.B \-\-null\-data
+.IP "" 4
+.BI \-\-include= glob
+.IP "" 4
+.BI \-\-exclude= glob
+.IP "" 4
+.BI \-\-exclude\-from= file
+.IP "" 4
+.BI \-\-exclude\-dir= glob
.PP
-If
-.B xzgrep
-is invoked as
.B xzegrep
-or
+is an alias for
+.BR "xzgrep \-E" .
.B xzfgrep
-then
-.B grep \-E
-or
-.B grep \-F
-is used instead of
-.BR grep (1).
-The same applies to names
+is an alias for
+.BR "xzgrep \-F" .
+.PP
+The commands
.BR lzgrep ,
.BR lzegrep ,
and
-.BR lzfgrep ,
-which are provided for backward compatibility with LZMA Utils.
+.B lzfgrep
+are provided for backward compatibility with LZMA Utils.
+.
.SH EXIT STATUS
.TP
0
@@ -91,18 +120,19 @@ No errors occurred.
>1
One or more errors occurred.
It is unknown if matches were found.
+.
.SH ENVIRONMENT
.TP
.B GREP
-If the
+If
.B GREP
-environment variable is set,
-.B xzgrep
-uses it instead of
-.BR grep (1),
+is set to a non-empty value,
+it is used instead of
+.BR "grep" ,
.BR "grep \-E" ,
or
.BR "grep \-F" .
+.
.SH "SEE ALSO"
.BR grep (1),
.BR xz (1),
@@ -110,4 +140,5 @@ or
.BR bzip2 (1),
.BR lzop (1),
.BR zstd (1),
+.BR lz4 (1),
.BR zgrep (1)
diff --git a/src/scripts/xzgrep.in b/src/scripts/xzgrep.in
index 490e47d..c9cd02d 100644
--- a/src/scripts/xzgrep.in
+++ b/src/scripts/xzgrep.in
@@ -1,4 +1,5 @@
#!@POSIX_SHELL@
+# SPDX-License-Identifier: GPL-2.0-or-later
# xzgrep -- a wrapper around a grep program that decompresses files as needed
# Adapted from a version sent by Charles Levert <charles@comm.polymtl.ca>
@@ -34,7 +35,7 @@ case ${0##*/} in
*) prog=xzgrep; grep=${GREP:-grep};;
esac
-version="$prog (@PACKAGE_NAME@) @VERSION@"
+version="$prog (@PACKAGE_NAME@) @PACKAGE_VERSION@"
usage="Usage: ${0##*/} [OPTION]... [-e] PATTERN [FILE]...
Look for instances of PATTERN in the input FILEs, using their
@@ -156,7 +157,7 @@ done
eval "set -- $operands "'${1+"$@"}'
if test $have_pat -eq 0; then
- case ${1?"Missing pattern; try \`${0##*/} --help' for help"} in
+ case ${1?"Missing pattern; try '${0##*/} --help' for help"} in
(*\'*)
grep="$grep -e '"$(printf '%sX\n' "$1" | LC_ALL=C sed "$escape");;
(*)
@@ -180,6 +181,7 @@ for i; do
*[-.]bz2 | *[-.]tbz | *.tbz2) uncompress="bzip2 -cdf";;
*[-.]lzo | *[-.]tzo) uncompress="lzop -cdf";;
*[-.]zst | *[-.]tzst) uncompress="zstd -cdfq";; # zstd needs -q.
+ *[-.]lz4) uncompress="lz4 -cdf";;
*) uncompress="$xz -cdfqQ";; # -qQ to ignore warnings like unsupp. check.
esac
# xz_status will hold the decompressor's exit status.
@@ -275,7 +277,7 @@ for i; do
test "$(kill -l "$xz_status" 2> /dev/null)" != "PIPE" && exit "$xz_status"
elif test "$xz_status" -gt 0; then
# Decompression failed but we will continue with the remaining
- # files anwyway. Set exit status to at least 2 to indicate an error.
+ # files anyway. Set exit status to at least 2 to indicate an error.
test "$r" -lt 2 && r=2
fi
diff --git a/src/scripts/xzless.1 b/src/scripts/xzless.1
index 2d05459..570e601 100644
--- a/src/scripts/xzless.1
+++ b/src/scripts/xzless.1
@@ -1,13 +1,11 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Authors: Andrew Dudman
.\" Lasse Collin
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
-.\"
.\" (Note that this file is not based on gzip's zless.1.)
.\"
-.TH XZLESS 1 "2010-09-27" "Tukaani" "XZ Utils"
+.TH XZLESS 1 "2024-02-12" "Tukaani" "XZ Utils"
.SH NAME
xzless, lzless \- view xz or lzma compressed (text) files
.SH SYNOPSIS
@@ -19,10 +17,10 @@ xzless, lzless \- view xz or lzma compressed (text) files
.SH DESCRIPTION
.B xzless
is a filter that displays text from compressed files to a terminal.
-It works on files compressed with
+Files supported by
.BR xz (1)
-or
-.BR lzma (1).
+are decompressed;
+other files are assumed to be in uncompressed form already.
If no
.I files
are given,
diff --git a/src/scripts/xzless.in b/src/scripts/xzless.in
index 79a849e..6346966 100644
--- a/src/scripts/xzless.in
+++ b/src/scripts/xzless.in
@@ -1,4 +1,5 @@
#!@POSIX_SHELL@
+# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 1998, 2002, 2006, 2007 Free Software Foundation
@@ -23,7 +24,7 @@
# specified via XZ_OPT.
xz='@xz@ --format=auto'
-version='xzless (@PACKAGE_NAME@) @VERSION@'
+version='xzless (@PACKAGE_NAME@) @PACKAGE_VERSION@'
usage="Usage: ${0##*/} [OPTION]... [FILE]...
Like 'less', but operate on the uncompressed contents of xz compressed FILEs.
@@ -47,13 +48,27 @@ if test "${LESSMETACHARS+set}" != set; then
LESSMETACHARS="$space$tab$nl'"';*?"()<>[|&^`#\$%=~'
fi
-if test "$(less -V | { read _ ver _ && echo ${ver%%.*}; })" -ge 429; then
+VER=$(less -V | { read _ ver _ && echo ${ver%%.*}; })
+if test "$VER" -ge 451; then
+ # less 451 or later: If the compressed file is valid but has
+ # zero bytes of uncompressed data, using two vertical bars ||- makes
+ # "less" check the exit status of xz and if it is zero then display
+ # an empty file. With a single vertical bar |- and no output from xz,
+ # "less" would attempt to display the raw input file instead.
+ LESSOPEN="||-$xz -cdfqQ -- %s"
+elif test "$VER" -ge 429; then
# less 429 or later: LESSOPEN pipe will be used on
# standard input if $LESSOPEN begins with |-.
LESSOPEN="|-$xz -cdfqQ -- %s"
else
LESSOPEN="|$xz -cdfqQ -- %s"
fi
+
+SHOW_PREPROC_ERRORS=
+if test "$VER" -ge 632; then
+ SHOW_PREPROC_ERRORS=--show-preproc-errors
+fi
+
export LESSMETACHARS LESSOPEN
-exec less "$@"
+exec less $SHOW_PREPROC_ERRORS "$@"
diff --git a/src/scripts/xzmore.1 b/src/scripts/xzmore.1
index 9613974..afe89b8 100644
--- a/src/scripts/xzmore.1
+++ b/src/scripts/xzmore.1
@@ -1,53 +1,63 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
-.\" Original zdiff.1 for gzip: Jean-loup Gailly
-.\" Modifications for XZ Utils: Lasse Collin
+.\" Authors: Andrew Dudman
+.\" Lasse Collin
.\"
-.\" License: GNU GPLv2+
+.\" (Note that this file is based on xzless.1 instead of gzip's zmore.1.)
.\"
-.TH XZMORE 1 "2013-06-30" "Tukaani" "XZ Utils"
+.TH XZMORE 1 "2024-02-12" "Tukaani" "XZ Utils"
.SH NAME
xzmore, lzmore \- view xz or lzma compressed (text) files
+.
.SH SYNOPSIS
.B xzmore
-.RI [ file... ]
+.RI [ file ...]
.br
.B lzmore
-.RI [ file... ]
+.RI [ file ...]
+.
.SH DESCRIPTION
-.B xzmore
-is a filter which allows examination of
+.B xzmore
+displays text from compressed files to a terminal using
+.BR more (1).
+Files supported by
.BR xz (1)
-or
-.BR lzma (1)
-compressed text files one screenful at a time
-on a soft-copy terminal.
+are decompressed;
+other files are assumed to be in uncompressed form already.
+If no
+.I files
+are given,
+.B xzmore
+reads from standard input.
+See the
+.BR more (1)
+manual for the keyboard commands.
.PP
-To use a pager other than the default
-.B more,
-set environment variable
-.B PAGER
-to the name of the desired program.
-The name
+Note that scrolling backwards might not be possible
+depending on the implementation of
+.BR more (1).
+This is because
+.B xzmore
+uses a pipe to pass the decompressed data to
+.BR more (1).
+.BR xzless (1)
+uses
+.BR less (1)
+which provides more advanced features.
+.PP
+The command
.B lzmore
is provided for backward compatibility with LZMA Utils.
+.
+.SH ENVIRONMENT
.TP
-.BR e " or " q
-When the prompt \-\-More\-\-(Next file:
-.IR file )
-is printed, this command causes
-.B xzmore
-to exit.
-.TP
-.B s
-When the prompt \-\-More\-\-(Next file:
-.IR file )
-is printed, this command causes
-.B xzmore
-to skip the next file and continue.
-.PP
-For list of keyboard commands supported while actually viewing the
-content of a file, refer to manual of the pager you use, usually
+.B PAGER
+If
+.B PAGER
+is set,
+its value is used as the pager instead of
.BR more (1).
+.
.SH "SEE ALSO"
.BR more (1),
.BR xz (1),
diff --git a/src/scripts/xzmore.in b/src/scripts/xzmore.in
index 5188fda..c571913 100644
--- a/src/scripts/xzmore.in
+++ b/src/scripts/xzmore.in
@@ -1,4 +1,5 @@
#!@POSIX_SHELL@
+# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2001, 2002, 2007 Free Software Foundation
# Copyright (C) 1992, 1993 Jean-loup Gailly
@@ -23,7 +24,7 @@
# specified via XZ_OPT.
xz='@xz@ --format=auto'
-version='xzmore (@PACKAGE_NAME@) @VERSION@'
+version='xzmore (@PACKAGE_NAME@) @PACKAGE_VERSION@'
usage="Usage: ${0##*/} [OPTION]... [FILE]...
Like 'more', but operate on the uncompressed contents of xz compressed FILEs.
diff --git a/src/xz/Makefile.am b/src/xz/Makefile.am
index 4bc64f3..4ff061f 100644
--- a/src/xz/Makefile.am
+++ b/src/xz/Makefile.am
@@ -1,9 +1,5 @@
-##
+## SPDX-License-Identifier: 0BSD
## Author: Lasse Collin
-##
-## This file has been put into the public domain.
-## You can do whatever you want with this file.
-##
bin_PROGRAMS = xz
@@ -25,6 +21,8 @@ xz_SOURCES = \
options.c \
options.h \
private.h \
+ sandbox.c \
+ sandbox.h \
signals.c \
signals.h \
suffix.c \
@@ -53,7 +51,7 @@ xz_CPPFLAGS = \
-I$(top_srcdir)/src/liblzma/api \
-I$(top_builddir)/lib
-xz_LDADD = $(top_builddir)/src/liblzma/liblzma.la $(CAPSICUM_LIB)
+xz_LDADD = $(top_builddir)/src/liblzma/liblzma.la
if COND_GNULIB
xz_LDADD += $(top_builddir)/lib/libgnu.a
diff --git a/src/xz/Makefile.in b/src/xz/Makefile.in
index e6422c5..18e0151 100644
--- a/src/xz/Makefile.in
+++ b/src/xz/Makefile.in
@@ -98,8 +98,8 @@ bin_PROGRAMS = xz$(EXEEXT)
@COND_LZMALINKS_TRUE@am__append_4 = lzma unlzma lzcat
subdir = src/xz
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_capsicum.m4 \
- $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/getopt.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
+ $(top_srcdir)/m4/build-to-host.m4 $(top_srcdir)/m4/getopt.m4 \
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/host-cpu-c-abi.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -127,23 +127,25 @@ PROGRAMS = $(bin_PROGRAMS)
am__xz_SOURCES_DIST = args.c args.h coder.c coder.h file_io.c \
file_io.h hardware.c hardware.h main.c main.h message.c \
message.h mytime.c mytime.h options.c options.h private.h \
- signals.c signals.h suffix.c suffix.h util.c util.h \
- ../common/tuklib_open_stdxxx.c ../common/tuklib_progname.c \
- ../common/tuklib_exit.c ../common/tuklib_mbstr_width.c \
- ../common/tuklib_mbstr_fw.c list.c list.h xz_w32res.rc
+ sandbox.c sandbox.h signals.c signals.h suffix.c suffix.h \
+ util.c util.h ../common/tuklib_open_stdxxx.c \
+ ../common/tuklib_progname.c ../common/tuklib_exit.c \
+ ../common/tuklib_mbstr_width.c ../common/tuklib_mbstr_fw.c \
+ list.c list.h xz_w32res.rc
@COND_MAIN_DECODER_TRUE@am__objects_1 = xz-list.$(OBJEXT)
@COND_W32_TRUE@am__objects_2 = xz_w32res.$(OBJEXT)
am_xz_OBJECTS = xz-args.$(OBJEXT) xz-coder.$(OBJEXT) \
xz-file_io.$(OBJEXT) xz-hardware.$(OBJEXT) xz-main.$(OBJEXT) \
xz-message.$(OBJEXT) xz-mytime.$(OBJEXT) xz-options.$(OBJEXT) \
- xz-signals.$(OBJEXT) xz-suffix.$(OBJEXT) xz-util.$(OBJEXT) \
- xz-tuklib_open_stdxxx.$(OBJEXT) xz-tuklib_progname.$(OBJEXT) \
- xz-tuklib_exit.$(OBJEXT) xz-tuklib_mbstr_width.$(OBJEXT) \
- xz-tuklib_mbstr_fw.$(OBJEXT) $(am__objects_1) $(am__objects_2)
+ xz-sandbox.$(OBJEXT) xz-signals.$(OBJEXT) xz-suffix.$(OBJEXT) \
+ xz-util.$(OBJEXT) xz-tuklib_open_stdxxx.$(OBJEXT) \
+ xz-tuklib_progname.$(OBJEXT) xz-tuklib_exit.$(OBJEXT) \
+ xz-tuklib_mbstr_width.$(OBJEXT) xz-tuklib_mbstr_fw.$(OBJEXT) \
+ $(am__objects_1) $(am__objects_2)
xz_OBJECTS = $(am_xz_OBJECTS)
am__DEPENDENCIES_1 =
xz_DEPENDENCIES = $(top_builddir)/src/liblzma/liblzma.la \
- $(am__DEPENDENCIES_1) $(am__append_3) $(am__DEPENDENCIES_1)
+ $(am__append_3) $(am__DEPENDENCIES_1)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
@@ -167,8 +169,9 @@ am__depfiles_remade = ./$(DEPDIR)/xz-args.Po ./$(DEPDIR)/xz-coder.Po \
./$(DEPDIR)/xz-file_io.Po ./$(DEPDIR)/xz-hardware.Po \
./$(DEPDIR)/xz-list.Po ./$(DEPDIR)/xz-main.Po \
./$(DEPDIR)/xz-message.Po ./$(DEPDIR)/xz-mytime.Po \
- ./$(DEPDIR)/xz-options.Po ./$(DEPDIR)/xz-signals.Po \
- ./$(DEPDIR)/xz-suffix.Po ./$(DEPDIR)/xz-tuklib_exit.Po \
+ ./$(DEPDIR)/xz-options.Po ./$(DEPDIR)/xz-sandbox.Po \
+ ./$(DEPDIR)/xz-signals.Po ./$(DEPDIR)/xz-suffix.Po \
+ ./$(DEPDIR)/xz-tuklib_exit.Po \
./$(DEPDIR)/xz-tuklib_mbstr_fw.Po \
./$(DEPDIR)/xz-tuklib_mbstr_width.Po \
./$(DEPDIR)/xz-tuklib_open_stdxxx.Po \
@@ -259,7 +262,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CAPSICUM_LIB = @CAPSICUM_LIB@
CC = @CC@
CCAS = @CCAS@
CCASDEPMODE = @CCASDEPMODE@
@@ -388,6 +390,8 @@ install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
+localedir_c = @localedir_c@
+localedir_c_make = @localedir_c_make@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
@@ -408,8 +412,8 @@ top_srcdir = @top_srcdir@
xz = @xz@
xz_SOURCES = args.c args.h coder.c coder.h file_io.c file_io.h \
hardware.c hardware.h main.c main.h message.c message.h \
- mytime.c mytime.h options.c options.h private.h signals.c \
- signals.h suffix.c suffix.h util.c util.h \
+ mytime.c mytime.h options.c options.h private.h sandbox.c \
+ sandbox.h signals.c signals.h suffix.c suffix.h util.c util.h \
../common/tuklib_open_stdxxx.c ../common/tuklib_progname.c \
../common/tuklib_exit.c ../common/tuklib_mbstr_width.c \
../common/tuklib_mbstr_fw.c $(am__append_1) $(am__append_2)
@@ -421,8 +425,8 @@ xz_CPPFLAGS = \
# libgnu.a may need these libs, so this must be after libgnu.a.
-xz_LDADD = $(top_builddir)/src/liblzma/liblzma.la $(CAPSICUM_LIB) \
- $(am__append_3) $(LTLIBINTL)
+xz_LDADD = $(top_builddir)/src/liblzma/liblzma.la $(am__append_3) \
+ $(LTLIBINTL)
dist_man_MANS = xz.1
xzlinks = unxz xzcat $(am__append_4)
all: all-am
@@ -527,6 +531,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-message.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-mytime.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-options.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-sandbox.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-signals.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-suffix.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xz-tuklib_exit.Po@am__quote@ # am--include-marker
@@ -675,6 +680,20 @@ xz-options.obj: options.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xz_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xz-options.obj `if test -f 'options.c'; then $(CYGPATH_W) 'options.c'; else $(CYGPATH_W) '$(srcdir)/options.c'; fi`
+xz-sandbox.o: sandbox.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xz_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xz-sandbox.o -MD -MP -MF $(DEPDIR)/xz-sandbox.Tpo -c -o xz-sandbox.o `test -f 'sandbox.c' || echo '$(srcdir)/'`sandbox.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/xz-sandbox.Tpo $(DEPDIR)/xz-sandbox.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sandbox.c' object='xz-sandbox.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xz_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xz-sandbox.o `test -f 'sandbox.c' || echo '$(srcdir)/'`sandbox.c
+
+xz-sandbox.obj: sandbox.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xz_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xz-sandbox.obj -MD -MP -MF $(DEPDIR)/xz-sandbox.Tpo -c -o xz-sandbox.obj `if test -f 'sandbox.c'; then $(CYGPATH_W) 'sandbox.c'; else $(CYGPATH_W) '$(srcdir)/sandbox.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/xz-sandbox.Tpo $(DEPDIR)/xz-sandbox.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sandbox.c' object='xz-sandbox.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xz_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xz-sandbox.obj `if test -f 'sandbox.c'; then $(CYGPATH_W) 'sandbox.c'; else $(CYGPATH_W) '$(srcdir)/sandbox.c'; fi`
+
xz-signals.o: signals.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xz_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xz-signals.o -MD -MP -MF $(DEPDIR)/xz-signals.Tpo -c -o xz-signals.o `test -f 'signals.c' || echo '$(srcdir)/'`signals.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/xz-signals.Tpo $(DEPDIR)/xz-signals.Po
@@ -985,6 +1004,7 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/xz-message.Po
-rm -f ./$(DEPDIR)/xz-mytime.Po
-rm -f ./$(DEPDIR)/xz-options.Po
+ -rm -f ./$(DEPDIR)/xz-sandbox.Po
-rm -f ./$(DEPDIR)/xz-signals.Po
-rm -f ./$(DEPDIR)/xz-suffix.Po
-rm -f ./$(DEPDIR)/xz-tuklib_exit.Po
@@ -1049,6 +1069,7 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/xz-message.Po
-rm -f ./$(DEPDIR)/xz-mytime.Po
-rm -f ./$(DEPDIR)/xz-options.Po
+ -rm -f ./$(DEPDIR)/xz-sandbox.Po
-rm -f ./$(DEPDIR)/xz-signals.Po
-rm -f ./$(DEPDIR)/xz-suffix.Po
-rm -f ./$(DEPDIR)/xz-tuklib_exit.Po
diff --git a/src/xz/args.c b/src/xz/args.c
index 17e778c..eba1b97 100644
--- a/src/xz/args.c
+++ b/src/xz/args.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file args.c
@@ -5,10 +7,8 @@
///
/// \note Filter-specific options parsing is in options.c.
//
-// Author: Lasse Collin
-//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
+// Authors: Lasse Collin
+// Jia Tan
//
///////////////////////////////////////////////////////////////////////////////
@@ -83,14 +83,20 @@ parse_block_list(const char *str_const)
++count;
// Prevent an unlikely integer overflow.
- if (count > SIZE_MAX / sizeof(uint64_t) - 1)
+ if (count > SIZE_MAX / sizeof(block_list_entry) - 1)
message_fatal(_("%s: Too many arguments to --block-list"),
str);
// Allocate memory to hold all the sizes specified.
// If --block-list was specified already, its value is forgotten.
free(opt_block_list);
- opt_block_list = xmalloc((count + 1) * sizeof(uint64_t));
+ opt_block_list = xmalloc((count + 1) * sizeof(block_list_entry));
+
+ // Clear the bitmask of filter chains in use.
+ block_list_chain_mask = 0;
+
+ // Reset the largest Block size found in --block-list.
+ block_list_largest = 0;
for (size_t i = 0; i < count; ++i) {
// Locate the next comma and replace it with \0.
@@ -98,6 +104,43 @@ parse_block_list(const char *str_const)
if (p != NULL)
*p = '\0';
+ // Use the default filter chain unless overridden.
+ opt_block_list[i].chain_num = 0;
+
+ // To specify a filter chain, the block list entry may be
+ // prepended with "[filter-chain-number]:". The size is
+ // still required for every block.
+ // For instance:
+ // --block-list=2:10MiB,1:5MiB,,8MiB,0:0
+ //
+ // Translates to:
+ // 1. Block of 10 MiB using filter chain 2
+ // 2. Block of 5 MiB using filter chain 1
+ // 3. Block of 5 MiB using filter chain 1
+ // 4. Block of 8 MiB using the default filter chain
+ // 5. The last block uses the default filter chain
+ //
+ // The block list:
+ // --block-list=2:MiB,1:,0
+ //
+ // Is not allowed because the second block does not specify
+ // the block size, only the filter chain.
+ if (str[0] >= '0' && str[0] <= '9' && str[1] == ':') {
+ if (str[2] == '\0')
+ message_fatal(_("In --block-list, block "
+ "size is missing after "
+ "filter chain number '%c:'"),
+ str[0]);
+
+ const unsigned chain_num = (unsigned)(str[0] - '0');
+ opt_block_list[i].chain_num = chain_num;
+ block_list_chain_mask |= 1U << chain_num;
+ str += 2;
+ } else {
+ // This Block uses the default filter chain.
+ block_list_chain_mask |= 1U << 0;
+ }
+
if (str[0] == '\0') {
// There is no string, that is, a comma follows
// another comma. Use the previous value.
@@ -107,25 +150,39 @@ parse_block_list(const char *str_const)
assert(i > 0);
opt_block_list[i] = opt_block_list[i - 1];
} else {
- opt_block_list[i] = str_to_uint64("block-list", str,
- 0, UINT64_MAX);
+ opt_block_list[i].size = str_to_uint64("block-list",
+ str, 0, UINT64_MAX);
// Zero indicates no more new Blocks.
- if (opt_block_list[i] == 0) {
+ if (opt_block_list[i].size == 0) {
if (i + 1 != count)
message_fatal(_("0 can only be used "
"as the last element "
"in --block-list"));
- opt_block_list[i] = UINT64_MAX;
+ opt_block_list[i].size = UINT64_MAX;
}
+
+ // Remember the largest Block size in the list.
+ //
+ // NOTE: Do this after handling the special value 0
+ // because when 0 is used, we don't want to reduce
+ // the Block size of the multithreaded encoder.
+ if (block_list_largest < opt_block_list[i].size)
+ block_list_largest = opt_block_list[i].size;
}
- str = p + 1;
+ // Be standards compliant: p + 1 is undefined behavior
+ // if p == NULL. That occurs on the last iteration of
+ // the loop when we won't care about the value of str
+ // anymore anyway. That is, this is done conditionally
+ // solely for standard conformance reasons.
+ if (p != NULL)
+ str = p + 1;
}
// Terminate the array.
- opt_block_list[count] = 0;
+ opt_block_list[count].size = 0;
free(str_start);
return;
@@ -136,13 +193,26 @@ static void
parse_real(args_info *args, int argc, char **argv)
{
enum {
- OPT_X86 = INT_MIN,
+ OPT_FILTERS = INT_MIN,
+ OPT_FILTERS1,
+ OPT_FILTERS2,
+ OPT_FILTERS3,
+ OPT_FILTERS4,
+ OPT_FILTERS5,
+ OPT_FILTERS6,
+ OPT_FILTERS7,
+ OPT_FILTERS8,
+ OPT_FILTERS9,
+ OPT_FILTERS_HELP,
+
+ OPT_X86,
OPT_POWERPC,
OPT_IA64,
OPT_ARM,
OPT_ARMTHUMB,
OPT_ARM64,
OPT_SPARC,
+ OPT_RISCV,
OPT_DELTA,
OPT_LZMA1,
OPT_LZMA2,
@@ -191,7 +261,7 @@ parse_real(args_info *args, int argc, char **argv)
{ "check", required_argument, NULL, 'C' },
{ "ignore-check", no_argument, NULL, OPT_IGNORE_CHECK },
{ "block-size", required_argument, NULL, OPT_BLOCK_SIZE },
- { "block-list", required_argument, NULL, OPT_BLOCK_LIST },
+ { "block-list", required_argument, NULL, OPT_BLOCK_LIST },
{ "memlimit-compress", required_argument, NULL, OPT_MEM_COMPRESS },
{ "memlimit-decompress", required_argument, NULL, OPT_MEM_DECOMPRESS },
{ "memlimit-mt-decompress", required_argument, NULL, OPT_MEM_MT_DECOMPRESS },
@@ -206,6 +276,18 @@ parse_real(args_info *args, int argc, char **argv)
{ "best", no_argument, NULL, '9' },
// Filters
+ { "filters", optional_argument, NULL, OPT_FILTERS},
+ { "filters1", optional_argument, NULL, OPT_FILTERS1},
+ { "filters2", optional_argument, NULL, OPT_FILTERS2},
+ { "filters3", optional_argument, NULL, OPT_FILTERS3},
+ { "filters4", optional_argument, NULL, OPT_FILTERS4},
+ { "filters5", optional_argument, NULL, OPT_FILTERS5},
+ { "filters6", optional_argument, NULL, OPT_FILTERS6},
+ { "filters7", optional_argument, NULL, OPT_FILTERS7},
+ { "filters8", optional_argument, NULL, OPT_FILTERS8},
+ { "filters9", optional_argument, NULL, OPT_FILTERS9},
+ { "filters-help", optional_argument, NULL, OPT_FILTERS_HELP},
+
{ "lzma1", optional_argument, NULL, OPT_LZMA1 },
{ "lzma2", optional_argument, NULL, OPT_LZMA2 },
{ "x86", optional_argument, NULL, OPT_X86 },
@@ -215,6 +297,7 @@ parse_real(args_info *args, int argc, char **argv)
{ "armthumb", optional_argument, NULL, OPT_ARMTHUMB },
{ "arm64", optional_argument, NULL, OPT_ARM64 },
{ "sparc", optional_argument, NULL, OPT_SPARC },
+ { "riscv", optional_argument, NULL, OPT_RISCV },
{ "delta", optional_argument, NULL, OPT_DELTA },
// Other options
@@ -372,7 +455,30 @@ parse_real(args_info *args, int argc, char **argv)
opt_mode = MODE_COMPRESS;
break;
- // Filter setup
+ // --filters
+ case OPT_FILTERS:
+ coder_add_filters_from_str(optarg);
+ break;
+
+ // --filters1...--filters9
+ case OPT_FILTERS1:
+ case OPT_FILTERS2:
+ case OPT_FILTERS3:
+ case OPT_FILTERS4:
+ case OPT_FILTERS5:
+ case OPT_FILTERS6:
+ case OPT_FILTERS7:
+ case OPT_FILTERS8:
+ case OPT_FILTERS9:
+ coder_add_block_filters(optarg,
+ (size_t)(c - OPT_FILTERS));
+ break;
+
+ // --filters-help
+ case OPT_FILTERS_HELP:
+ // This doesn't return.
+ message_filters_help();
+ break;
case OPT_X86:
coder_add_filter(LZMA_FILTER_X86,
@@ -409,6 +515,11 @@ parse_real(args_info *args, int argc, char **argv)
options_bcj(optarg));
break;
+ case OPT_RISCV:
+ coder_add_filter(LZMA_FILTER_RISCV,
+ options_bcj(optarg));
+ break;
+
case OPT_DELTA:
coder_add_filter(LZMA_FILTER_DELTA,
options_delta(optarg));
@@ -516,8 +627,8 @@ parse_real(args_info *args, int argc, char **argv)
case OPT_FILES0:
if (args->files_name != NULL)
message_fatal(_("Only one file can be "
- "specified with `--files' "
- "or `--files0'."));
+ "specified with '--files' "
+ "or '--files0'."));
if (optarg == NULL) {
args->files_name = stdin_filename;
@@ -718,6 +829,39 @@ args_parse(args_info *args, int argc, char **argv)
if (opt_mode == MODE_COMPRESS && opt_format == FORMAT_AUTO)
opt_format = FORMAT_XZ;
+ // Set opt_block_list to NULL if we are not compressing to the .xz
+ // format. This option cannot be used outside of this case, and
+ // simplifies the implementation later.
+ if ((opt_mode != MODE_COMPRESS || opt_format != FORMAT_XZ)
+ && opt_block_list != NULL) {
+ message(V_WARNING, _("--block-list is ignored unless "
+ "compressing to the .xz format"));
+ free(opt_block_list);
+ opt_block_list = NULL;
+ }
+
+ // If raw format is used and a custom suffix is not provided,
+ // then only stdout mode can be used when compressing or
+ // decompressing.
+ if (opt_format == FORMAT_RAW && !suffix_is_set() && !opt_stdout
+ && (opt_mode == MODE_COMPRESS
+ || opt_mode == MODE_DECOMPRESS)) {
+ if (args->files_name != NULL)
+ message_fatal(_("With --format=raw, "
+ "--suffix=.SUF is required "
+ "unless writing to stdout"));
+
+ // If all of the filenames provided are "-" (more than one
+ // "-" could be specified) or no filenames are provided,
+ // then we are only going to be writing to standard out.
+ for (int i = optind; i < argc; i++) {
+ if (strcmp(argv[i], "-") != 0)
+ message_fatal(_("With --format=raw, "
+ "--suffix=.SUF is required "
+ "unless writing to stdout"));
+ }
+ }
+
// Compression settings need to be validated (options themselves and
// their memory usage) when compressing to any file format. It has to
// be done also when uncompressing raw data, since for raw decoding
@@ -727,14 +871,6 @@ args_parse(args_info *args, int argc, char **argv)
&& opt_mode != MODE_LIST))
coder_set_compression_settings();
- // If raw format is used and a custom suffix is not provided,
- // then only stdout mode can be used when compressing or decompressing.
- if (opt_format == FORMAT_RAW && !suffix_is_set() && !opt_stdout
- && (opt_mode == MODE_COMPRESS
- || opt_mode == MODE_DECOMPRESS))
- message_fatal(_("With --format=raw, --suffix=.SUF is "
- "required unless writing to stdout"));
-
// If no filenames are given, use stdin.
if (argv[optind] == NULL && args->files_name == NULL) {
// We don't modify or free() the "-" constant. The caller
diff --git a/src/xz/args.h b/src/xz/args.h
index a1a5930..e693ecd 100644
--- a/src/xz/args.h
+++ b/src/xz/args.h
@@ -1,12 +1,12 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file args.h
/// \brief Argument parsing
//
-// Author: Lasse Collin
-//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
+// Authors: Lasse Collin
+// Jia Tan
//
///////////////////////////////////////////////////////////////////////////////
diff --git a/src/xz/coder.c b/src/xz/coder.c
index 91d40ed..5e41f0d 100644
--- a/src/xz/coder.c
+++ b/src/xz/coder.c
@@ -1,16 +1,17 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file coder.c
/// \brief Compresses or uncompresses a file
//
-// Author: Lasse Collin
-//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
+// Authors: Lasse Collin
+// Jia Tan
//
///////////////////////////////////////////////////////////////////////////////
#include "private.h"
+#include "tuklib_integer.h"
/// Return value type for coder_init().
@@ -26,25 +27,47 @@ enum format_type opt_format = FORMAT_AUTO;
bool opt_auto_adjust = true;
bool opt_single_stream = false;
uint64_t opt_block_size = 0;
-uint64_t *opt_block_list = NULL;
-
+block_list_entry *opt_block_list = NULL;
+uint64_t block_list_largest;
+uint32_t block_list_chain_mask;
/// Stream used to communicate with liblzma
static lzma_stream strm = LZMA_STREAM_INIT;
-/// Filters needed for all encoding all formats, and also decoding in raw data
-static lzma_filter filters[LZMA_FILTERS_MAX + 1];
+/// Maximum number of filter chains. The first filter chain is the default,
+/// and 9 other filter chains can be specified with --filtersX.
+#define NUM_FILTER_CHAIN_MAX 10
+
+/// The default filter chain is in chains[0]. It is used for encoding
+/// in all supported formats and also for decdoing raw streams. The other
+/// filter chains are set by --filtersX to support changing filters with
+/// the --block-list option.
+static lzma_filter chains[NUM_FILTER_CHAIN_MAX][LZMA_FILTERS_MAX + 1];
+
+/// Bitmask indicating which filter chains are actually used when encoding
+/// in the .xz format. This is needed since the filter chains specified using
+/// --filtersX (or the default filter chain) might in reality be unneeded
+/// if they are never used in --block-list. When --block-list isn't
+/// specified, only the default filter chain is used, thus the initial
+/// value of this variable is 1U << 0 (the number of the default chain is 0).
+static uint32_t chains_used_mask = 1U << 0;
/// Input and output buffers
static io_buf in_buf;
static io_buf out_buf;
-/// Number of filters. Zero indicates that we are using a preset.
+/// Number of filters in the default filter chain. Zero indicates that
+/// we are using a preset.
static uint32_t filters_count = 0;
/// Number of the preset (0-9)
static uint32_t preset_number = LZMA_PRESET_DEFAULT;
+/// True if the current default filter chain was set using the --filters
+/// option. The filter chain is reset if a preset option (like -9) or an
+/// old-style filter option (like --lzma2) is used after a --filters option.
+static bool string_to_filter_used = false;
+
/// Integrity check type
static lzma_check check;
@@ -60,7 +83,6 @@ static bool allow_trailing_input;
static lzma_mt mt_options = {
.flags = 0,
.timeout = 300,
- .filters = filters,
};
#endif
@@ -77,14 +99,14 @@ coder_set_check(lzma_check new_check)
static void
forget_filter_chain(void)
{
- // Setting a preset makes us forget a possibly defined custom
- // filter chain.
- while (filters_count > 0) {
- --filters_count;
- free(filters[filters_count].options);
- filters[filters_count].options = NULL;
+ // Setting a preset or using --filters makes us forget
+ // the earlier custom filter chain (if any).
+ if (filters_count > 0) {
+ lzma_filters_free(chains[0], NULL);
+ filters_count = 0;
}
+ string_to_filter_used = false;
return;
}
@@ -114,9 +136,15 @@ coder_add_filter(lzma_vli id, void *options)
if (filters_count == LZMA_FILTERS_MAX)
message_fatal(_("Maximum number of filters is four"));
- filters[filters_count].id = id;
- filters[filters_count].options = options;
- ++filters_count;
+ if (string_to_filter_used)
+ forget_filter_chain();
+
+ chains[0][filters_count].id = id;
+ chains[0][filters_count].options = options;
+
+ // Terminate the filter chain with LZMA_VLI_UNKNOWN to simplify
+ // implementation of forget_filter_chain().
+ chains[0][++filters_count].id = LZMA_VLI_UNKNOWN;
// Setting a custom filter chain makes us forget the preset options.
// This makes a difference if one specifies e.g. "xz -9 --lzma2 -e"
@@ -128,6 +156,69 @@ coder_add_filter(lzma_vli id, void *options)
}
+static void
+str_to_filters(const char *str, uint32_t index, uint32_t flags)
+{
+ int error_pos;
+ const char *err = lzma_str_to_filters(str, &error_pos,
+ chains[index], flags, NULL);
+
+ if (err != NULL) {
+ char filter_num[2] = "";
+ if (index > 0)
+ filter_num[0] = '0' + index;
+
+ // FIXME? The message in err isn't translated.
+ // Including the translations in the xz translations is
+ // slightly ugly but possible. Creating a new domain for
+ // liblzma might not be worth it especially since on some
+ // OSes it adds extra dependencies to translation libraries.
+ message(V_ERROR, _("Error in --filters%s=FILTERS option:"),
+ filter_num);
+ message(V_ERROR, "%s", str);
+ message(V_ERROR, "%*s^", error_pos, "");
+ message_fatal("%s", err);
+ }
+}
+
+
+extern void
+coder_add_filters_from_str(const char *filter_str)
+{
+ // Forget presets and previously defined filter chain. See
+ // coder_add_filter() above for why preset_number must be reset too.
+ forget_filter_chain();
+ preset_number = LZMA_PRESET_DEFAULT;
+
+ string_to_filter_used = true;
+
+ // Include LZMA_STR_ALL_FILTERS so this can be used with --format=raw.
+ str_to_filters(filter_str, 0, LZMA_STR_ALL_FILTERS);
+
+ // Set the filters_count to be the number of filters converted from
+ // the string.
+ for (filters_count = 0; chains[0][filters_count].id
+ != LZMA_VLI_UNKNOWN;
+ ++filters_count) ;
+
+ assert(filters_count > 0);
+ return;
+}
+
+
+extern void
+coder_add_block_filters(const char *str, size_t slot)
+{
+ // Free old filters first, if they were previously allocated.
+ if (chains_used_mask & (1U << slot))
+ lzma_filters_free(chains[slot], NULL);
+
+ str_to_filters(str, slot, 0);
+
+ chains_used_mask |= 1U << slot;
+}
+
+
tuklib_attr_noreturn
static void
memlimit_too_small(uint64_t memory_usage)
@@ -139,6 +230,67 @@ memlimit_too_small(uint64_t memory_usage)
}
+#ifdef HAVE_ENCODERS
+/// \brief Calculate the memory usage of each filter chain.
+///
+/// \param chains_memusages If non-NULL, the memusage of the encoder
+/// or decoder for each chain is stored in
+/// this array.
+/// \param mt If non-NULL, calculate memory usage of
+/// multithreaded encoder.
+/// \param encode Whether to calculate encoder or decoder
+/// memory usage. This must be true if
+/// mt != NULL.
+///
+/// \return Return the highest memory usage of all of the filter chains.
+static uint64_t
+get_chains_memusage(uint64_t *chains_memusages, const lzma_mt *mt, bool encode)
+{
+ uint64_t max_memusage = 0;
+
+#ifdef MYTHREAD_ENABLED
+ // Copy multithreading options to a temporary struct since the
+ // "filters" member needs to be changed.
+ lzma_mt mt_local;
+ if (mt != NULL)
+ mt_local = *mt;
+#else
+ (void)mt;
+#endif
+
+ for (uint32_t i = 0; i < ARRAY_SIZE(chains); i++) {
+ if (!(chains_used_mask & (1U << i)))
+ continue;
+
+ uint64_t memusage = UINT64_MAX;
+#ifdef MYTHREAD_ENABLED
+ if (mt != NULL) {
+ assert(encode);
+ mt_local.filters = chains[i];
+ memusage = lzma_stream_encoder_mt_memusage(&mt_local);
+ } else
+#endif
+ if (encode) {
+ memusage = lzma_raw_encoder_memusage(chains[i]);
+ }
+#ifdef HAVE_DECODERS
+ else {
+ memusage = lzma_raw_decoder_memusage(chains[i]);
+ }
+#endif
+
+ if (chains_memusages != NULL)
+ chains_memusages[i] = memusage;
+
+ if (memusage > max_memusage)
+ max_memusage = memusage;
+ }
+
+ return max_memusage;
+}
+#endif
+
+
extern void
coder_set_compression_settings(void)
{
@@ -156,10 +308,56 @@ coder_set_compression_settings(void)
check = LZMA_CHECK_CRC32;
}
+#ifdef HAVE_ENCODERS
+ if (opt_block_list != NULL) {
+ // args.c ensures these.
+ assert(opt_mode == MODE_COMPRESS);
+ assert(opt_format == FORMAT_XZ);
+
+ // Find out if block_list_chain_mask has a bit set that
+ // isn't set in chains_used_mask.
+ const uint32_t missing_chains_mask
+ = (block_list_chain_mask ^ chains_used_mask)
+ & block_list_chain_mask;
+
+ // If a filter chain was specified in --block-list but no
+ // matching --filtersX option was used, exit with an error.
+ if (missing_chains_mask != 0) {
+ // Get the number of the first missing filter chain
+ // and show it in the error message.
+ const unsigned first_missing
+ = (unsigned)ctz32(missing_chains_mask);
+
+ message_fatal(_("filter chain %u used by "
+ "--block-list but not specified "
+ "with --filters%u="),
+ first_missing, first_missing);
+ }
+
+ // Omit the unused filter chains from mask of used chains.
+ //
+ // (FIXME? When built with debugging, coder_free() will free()
+ // the filter chains (except the default chain) which makes
+ // Valgrind show fewer reachable allocations. But coder_free()
+ // uses this mask to determine which chains to free. Thus it
+ // won't free the ones that are cleared here from the mask.
+ // In practice this doesn't matter.)
+ chains_used_mask &= block_list_chain_mask;
+ } else {
+ // Reset filters used mask in case --block-list is not
+ // used, but --filtersX is used.
+ chains_used_mask = 1U << 0;
+ }
+#endif
+
// Options for LZMA1 or LZMA2 in case we are using a preset.
static lzma_options_lzma opt_lzma;
- if (filters_count == 0) {
+ // The first filter in the chains[] array is for the default
+ // filter chain.
+ lzma_filter *default_filters = chains[0];
+
+ if (filters_count == 0 && chains_used_mask & 1) {
// We are using a preset. This is not a good idea in raw mode
// except when playing around with things. Different versions
// of this software may use different options in presets, and
@@ -179,46 +377,61 @@ coder_set_compression_settings(void)
message_bug();
// Use LZMA2 except with --format=lzma we use LZMA1.
- filters[0].id = opt_format == FORMAT_LZMA
+ default_filters[0].id = opt_format == FORMAT_LZMA
? LZMA_FILTER_LZMA1 : LZMA_FILTER_LZMA2;
- filters[0].options = &opt_lzma;
+ default_filters[0].options = &opt_lzma;
+
filters_count = 1;
- }
- // Terminate the filter options array.
- filters[filters_count].id = LZMA_VLI_UNKNOWN;
+ // Terminate the filter options array.
+ default_filters[1].id = LZMA_VLI_UNKNOWN;
+ }
// If we are using the .lzma format, allow exactly one filter
- // which has to be LZMA1.
+ // which has to be LZMA1. There is no need to check if the default
+ // filter chain is being used since it can only be disabled if
+ // --block-list is used, which is incompatible with FORMAT_LZMA.
if (opt_format == FORMAT_LZMA && (filters_count != 1
- || filters[0].id != LZMA_FILTER_LZMA1))
+ || default_filters[0].id != LZMA_FILTER_LZMA1))
message_fatal(_("The .lzma format supports only "
"the LZMA1 filter"));
// If we are using the .xz format, make sure that there is no LZMA1
- // filter to prevent LZMA_PROG_ERROR.
- if (opt_format == FORMAT_XZ)
+ // filter to prevent LZMA_PROG_ERROR. With the chains from --filtersX
+ // we have already ensured this by calling lzma_str_to_filters()
+ // without setting the flags that would allow non-.xz filters.
+ if (opt_format == FORMAT_XZ && chains_used_mask & 1)
for (size_t i = 0; i < filters_count; ++i)
- if (filters[i].id == LZMA_FILTER_LZMA1)
+ if (default_filters[i].id == LZMA_FILTER_LZMA1)
message_fatal(_("LZMA1 cannot be used "
"with the .xz format"));
- // Print the selected filter chain.
- message_filters_show(V_DEBUG, filters);
+ if (chains_used_mask & 1) {
+ // Print the selected default filter chain.
+ message_filters_show(V_DEBUG, default_filters);
+ }
// The --flush-timeout option requires LZMA_SYNC_FLUSH support
- // from the filter chain. Currently threaded encoder doesn't support
- // LZMA_SYNC_FLUSH so single-threaded mode must be used.
+ // from the filter chain. Currently the threaded encoder doesn't
+ // support LZMA_SYNC_FLUSH so single-threaded mode must be used.
if (opt_mode == MODE_COMPRESS && opt_flush_timeout != 0) {
- for (size_t i = 0; i < filters_count; ++i) {
- switch (filters[i].id) {
- case LZMA_FILTER_LZMA2:
- case LZMA_FILTER_DELTA:
- break;
+ for (unsigned i = 0; i < ARRAY_SIZE(chains); ++i) {
+ if (!(chains_used_mask & (1U << i)))
+ continue;
+
+ const lzma_filter *fc = chains[i];
+ for (size_t j = 0; fc[j].id != LZMA_VLI_UNKNOWN; j++) {
+ switch (fc[j].id) {
+ case LZMA_FILTER_LZMA2:
+ case LZMA_FILTER_DELTA:
+ break;
- default:
- message_fatal(_("The filter chain is "
- "incompatible with --flush-timeout"));
+ default:
+ message_fatal(_("Filter chain %u is "
+ "incompatible with "
+ "--flush-timeout"),
+ i);
+ }
}
}
@@ -229,23 +442,72 @@ coder_set_compression_settings(void)
}
}
- // Get the memory usage. Note that if --format=raw was used,
- // we can be decompressing.
+ // Get memory limit and the memory usage of the used filter chains.
+ // Note that if --format=raw was used, we can be decompressing
+ // using the default filter chain.
//
- // If multithreaded .xz compression is done, this value will be
- // replaced.
+ // If multithreaded .xz compression is done, the memory limit
+ // will be replaced.
uint64_t memory_limit = hardware_memlimit_get(opt_mode);
uint64_t memory_usage = UINT64_MAX;
+
+#ifdef HAVE_ENCODERS
+ // Memory usage for each encoder filter chain (default
+ // or --filtersX). The encoder options may need to be
+ // scaled down depending on the memory usage limit.
+ uint64_t encoder_memusages[ARRAY_SIZE(chains)];
+#endif
+
if (opt_mode == MODE_COMPRESS) {
#ifdef HAVE_ENCODERS
# ifdef MYTHREAD_ENABLED
if (opt_format == FORMAT_XZ && hardware_threads_is_mt()) {
memory_limit = hardware_memlimit_mtenc_get();
mt_options.threads = hardware_threads_get();
- mt_options.block_size = opt_block_size;
+
+ uint64_t block_size = opt_block_size;
+
+ // If opt_block_size is not set, find the maximum
+ // recommended Block size based on the filter chains
+ if (block_size == 0) {
+ for (unsigned i = 0; i < ARRAY_SIZE(chains);
+ i++) {
+ if (!(chains_used_mask & (1U << i)))
+ continue;
+
+ uint64_t size = lzma_mt_block_size(
+ chains[i]);
+
+ // If this returns an error, then one
+ // of the filter chains in use is
+ // invalid, so there is no point in
+ // progressing further.
+ if (size == UINT64_MAX)
+ message_fatal(_("Unsupported "
+ "options in filter "
+ "chain %u"), i);
+
+ if (size > block_size)
+ block_size = size;
+ }
+
+ // If --block-list was used and our current
+ // Block size exceeds the largest size
+ // in --block-list, reduce the Block size of
+ // the multithreaded encoder. The extra size
+ // would only be a waste of RAM. With a
+ // smaller Block size we might even be able
+ // to use more threads in some cases.
+ if (block_list_largest > 0 && block_size
+ > block_list_largest)
+ block_size = block_list_largest;
+ }
+
+ mt_options.block_size = block_size;
mt_options.check = check;
- memory_usage = lzma_stream_encoder_mt_memusage(
- &mt_options);
+
+ memory_usage = get_chains_memusage(encoder_memusages,
+ &mt_options, true);
if (memory_usage != UINT64_MAX)
message(V_DEBUG, _("Using up to %" PRIu32
" threads."),
@@ -253,12 +515,13 @@ coder_set_compression_settings(void)
} else
# endif
{
- memory_usage = lzma_raw_encoder_memusage(filters);
+ memory_usage = get_chains_memusage(encoder_memusages,
+ NULL, true);
}
#endif
} else {
#ifdef HAVE_DECODERS
- memory_usage = lzma_raw_decoder_memusage(filters);
+ memory_usage = lzma_raw_decoder_memusage(default_filters);
#endif
}
@@ -268,12 +531,13 @@ coder_set_compression_settings(void)
// Print memory usage info before possible dictionary
// size auto-adjusting.
//
- // NOTE: If only encoder support was built, we cannot show the
+ // NOTE: If only encoder support was built, we cannot show
// what the decoder memory usage will be.
message_mem_needed(V_DEBUG, memory_usage);
-#ifdef HAVE_DECODERS
- if (opt_mode == MODE_COMPRESS) {
- const uint64_t decmem = lzma_raw_decoder_memusage(filters);
+
+#if defined(HAVE_ENCODERS) && defined(HAVE_DECODERS)
+ if (opt_mode == MODE_COMPRESS && message_verbosity_get() >= V_DEBUG) {
+ const uint64_t decmem = get_chains_memusage(NULL, NULL, false);
if (decmem != UINT64_MAX)
message(V_DEBUG, _("Decompression will need "
"%s MiB of memory."), uint64_to_str(
@@ -300,14 +564,21 @@ coder_set_compression_settings(void)
// Reduce the number of threads by one and check
// the memory usage.
--mt_options.threads;
- memory_usage = lzma_stream_encoder_mt_memusage(
- &mt_options);
+ memory_usage = get_chains_memusage(encoder_memusages,
+ &mt_options, true);
if (memory_usage == UINT64_MAX)
message_bug();
if (memory_usage <= memory_limit) {
// The memory usage is now low enough.
- message(V_WARNING, _("Reduced the number of "
+ //
+ // Since 5.6.1: This is only shown at
+ // V_DEBUG instead of V_WARNING because
+ // changing the number of threads doesn't
+ // affect the output. On some systems this
+ // message would be too common now that
+ // multithreaded compression is the default.
+ message(V_DEBUG, _("Reduced the number of "
"threads from %s to %s to not exceed "
"the memory usage limit of %s MiB"),
uint64_to_str(
@@ -326,8 +597,11 @@ coder_set_compression_settings(void)
// way -T0 won't use insane amount of memory but at the same
// time the soft limit will never make xz fail and never make
// xz change settings that would affect the compressed output.
+ //
+ // Since 5.6.1: Like above, this is now shown at V_DEBUG
+ // instead of V_WARNING.
if (hardware_memlimit_mtenc_is_default()) {
- message(V_WARNING, _("Reduced the number of threads "
+ message(V_DEBUG, _("Reduced the number of threads "
"from %s to one. The automatic memory usage "
"limit of %s MiB is still being exceeded. "
"%s MiB of memory is required. "
@@ -353,7 +627,8 @@ coder_set_compression_settings(void)
// the multithreaded mode but the output
// is also different.
hardware_threads_set(1);
- memory_usage = lzma_raw_encoder_memusage(filters);
+ memory_usage = get_chains_memusage(encoder_memusages,
+ NULL, true);
message(V_WARNING, _("Switching to single-threaded mode "
"to not exceed the memory usage limit of %s MiB"),
uint64_to_str(round_up_to_mib(memory_limit), 0));
@@ -368,55 +643,85 @@ coder_set_compression_settings(void)
if (!opt_auto_adjust)
memlimit_too_small(memory_usage);
- // Look for the last filter if it is LZMA2 or LZMA1, so we can make
- // it use less RAM. With other filters we don't know what to do.
- size_t i = 0;
- while (filters[i].id != LZMA_FILTER_LZMA2
- && filters[i].id != LZMA_FILTER_LZMA1) {
- if (filters[i].id == LZMA_VLI_UNKNOWN)
- memlimit_too_small(memory_usage);
+ // Adjust each filter chain that is exceeding the memory usage limit.
+ for (unsigned i = 0; i < ARRAY_SIZE(chains); i++) {
+ // Skip unused chains.
+ if (!(chains_used_mask & (1U << i)))
+ continue;
+
+ // Skip chains that already meet the memory usage limit.
+ if (encoder_memusages[i] <= memory_limit)
+ continue;
+
+ // Look for the last filter if it is LZMA2 or LZMA1, so we
+ // can make it use less RAM. We cannot adjust other filters.
+ unsigned j = 0;
+ while (chains[i][j].id != LZMA_FILTER_LZMA2
+ && chains[i][j].id != LZMA_FILTER_LZMA1) {
+ // NOTE: This displays the too high limit of this
+ // particular filter chain. If multiple chains are
+ // specified and another one would need more then
+ // this message could be confusing. As long as LZMA2
+ // is the only memory hungry filter in .xz this
+ // doesn't matter at all in practice.
+ //
+ // FIXME? However, it's sort of odd still if we had
+ // switched from multithreaded mode to single-threaded
+ // mode because single-threaded produces different
+ // output. So the messages could perhaps be clearer.
+ // Another case of this is a few lines below.
+ if (chains[i][j].id == LZMA_VLI_UNKNOWN)
+ memlimit_too_small(encoder_memusages[i]);
+
+ ++j;
+ }
- ++i;
- }
+ // Decrease the dictionary size until we meet the memory
+ // usage limit. First round down to full mebibytes.
+ lzma_options_lzma *opt = chains[i][j].options;
+ const uint32_t orig_dict_size = opt->dict_size;
+ opt->dict_size &= ~((UINT32_C(1) << 20) - 1);
- // Decrease the dictionary size until we meet the memory
- // usage limit. First round down to full mebibytes.
- lzma_options_lzma *opt = filters[i].options;
- const uint32_t orig_dict_size = opt->dict_size;
- opt->dict_size &= ~((UINT32_C(1) << 20) - 1);
- while (true) {
- // If it is below 1 MiB, auto-adjusting failed. We could be
- // more sophisticated and scale it down even more, but let's
- // see if many complain about this version.
- //
- // FIXME: Displays the scaled memory usage instead
- // of the original.
- if (opt->dict_size < (UINT32_C(1) << 20))
- memlimit_too_small(memory_usage);
+ while (true) {
+ // If it is below 1 MiB, auto-adjusting failed.
+ //
+ // FIXME? See the FIXME a few lines above.
+ if (opt->dict_size < (UINT32_C(1) << 20))
+ memlimit_too_small(encoder_memusages[i]);
- memory_usage = lzma_raw_encoder_memusage(filters);
- if (memory_usage == UINT64_MAX)
- message_bug();
+ encoder_memusages[i]
+ = lzma_raw_encoder_memusage(chains[i]);
+ if (encoder_memusages[i] == UINT64_MAX)
+ message_bug();
- // Accept it if it is low enough.
- if (memory_usage <= memory_limit)
- break;
+ // Accept it if it is low enough.
+ if (encoder_memusages[i] <= memory_limit)
+ break;
- // Otherwise 1 MiB down and try again. I hope this
- // isn't too slow method for cases where the original
- // dict_size is very big.
- opt->dict_size -= UINT32_C(1) << 20;
- }
+ // Otherwise adjust it 1 MiB down and try again.
+ opt->dict_size -= UINT32_C(1) << 20;
+ }
- // Tell the user that we decreased the dictionary size.
- message(V_WARNING, _("Adjusted LZMA%c dictionary size "
- "from %s MiB to %s MiB to not exceed "
- "the memory usage limit of %s MiB"),
- filters[i].id == LZMA_FILTER_LZMA2
- ? '2' : '1',
- uint64_to_str(orig_dict_size >> 20, 0),
- uint64_to_str(opt->dict_size >> 20, 1),
- uint64_to_str(round_up_to_mib(memory_limit), 2));
+ // Tell the user that we decreased the dictionary size.
+ // The message is slightly different between the default
+ // filter chain (0) or and chains from --filtersX.
+ const char lzma_num = chains[i][j].id == LZMA_FILTER_LZMA2
+ ? '2' : '1';
+ const char *from_size = uint64_to_str(orig_dict_size >> 20, 0);
+ const char *to_size = uint64_to_str(opt->dict_size >> 20, 1);
+ const char *limit_size = uint64_to_str(round_up_to_mib(
+ memory_limit), 2);
+ if (i == 0)
+ message(V_WARNING, _("Adjusted LZMA%c dictionary "
+ "size from %s MiB to %s MiB to not exceed the "
+ "memory usage limit of %s MiB"),
+ lzma_num, from_size, to_size, limit_size);
+ else
+ message(V_WARNING, _("Adjusted LZMA%c dictionary size "
+ "for --filters%u from %s MiB to %s MiB to not "
+ "exceed the memory usage limit of %s MiB"),
+ lzma_num, i, from_size, to_size, limit_size);
+ }
#endif
return;
@@ -512,6 +817,13 @@ coder_init(file_pair *pair)
// These will be handled later in this function.
allow_trailing_input = false;
+ // Set the first filter chain. If the --block-list option is not
+ // used then use the default filter chain (chains[0]).
+ // Otherwise, use first filter chain from the block list.
+ lzma_filter *active_filters = opt_block_list == NULL
+ ? chains[0]
+ : chains[opt_block_list[0].chain_num];
+
if (opt_mode == MODE_COMPRESS) {
#ifdef HAVE_ENCODERS
switch (opt_format) {
@@ -522,17 +834,19 @@ coder_init(file_pair *pair)
case FORMAT_XZ:
# ifdef MYTHREAD_ENABLED
+ mt_options.filters = active_filters;
if (hardware_threads_is_mt())
ret = lzma_stream_encoder_mt(
&strm, &mt_options);
else
# endif
ret = lzma_stream_encoder(
- &strm, filters, check);
+ &strm, active_filters, check);
break;
case FORMAT_LZMA:
- ret = lzma_alone_encoder(&strm, filters[0].options);
+ ret = lzma_alone_encoder(&strm,
+ active_filters[0].options);
break;
# ifdef HAVE_LZIP_DECODER
@@ -544,7 +858,7 @@ coder_init(file_pair *pair)
# endif
case FORMAT_RAW:
- ret = lzma_raw_encoder(&strm, filters);
+ ret = lzma_raw_encoder(&strm, active_filters);
break;
}
#endif
@@ -668,7 +982,7 @@ coder_init(file_pair *pair)
case FORMAT_RAW:
// Memory usage has already been checked in
// coder_set_compression_settings().
- ret = lzma_raw_decoder(&strm, filters);
+ ret = lzma_raw_decoder(&strm, active_filters);
break;
}
@@ -716,6 +1030,7 @@ coder_init(file_pair *pair)
}
+#ifdef HAVE_ENCODERS
/// Resolve conflicts between opt_block_size and opt_block_list in single
/// threaded mode. We want to default to opt_block_list, except when it is
/// larger than opt_block_size. If this is the case for the current Block
@@ -746,12 +1061,39 @@ split_block(uint64_t *block_remaining,
} else {
// The Block at *list_pos has been finished. Go to the next
- // entry in the list. If the end of the list has been reached,
- // reuse the size of the last Block.
- if (opt_block_list[*list_pos + 1] != 0)
+ // entry in the list. If the end of the list has been
+ // reached, reuse the size and filters of the last Block.
+ if (opt_block_list[*list_pos + 1].size != 0) {
++*list_pos;
- *block_remaining = opt_block_list[*list_pos];
+ // Update the filters if needed.
+ if (opt_block_list[*list_pos - 1].chain_num
+ != opt_block_list[*list_pos].chain_num) {
+ const unsigned chain_num
+ = opt_block_list[*list_pos].chain_num;
+ const lzma_filter *next = chains[chain_num];
+ const lzma_ret ret = lzma_filters_update(
+ &strm, next);
+
+ if (ret != LZMA_OK) {
+ // This message is only possible if
+ // the filter chain has unsupported
+ // options since the filter chain is
+ // validated using
+ // lzma_raw_encoder_memusage() or
+ // lzma_stream_encoder_mt_memusage().
+ // Some options are not validated until
+ // the encoders are initialized.
+ message_fatal(
+ _("Error changing to "
+ "filter chain %u: %s"),
+ chain_num,
+ message_strm(ret));
+ }
+ }
+ }
+
+ *block_remaining = opt_block_list[*list_pos].size;
// If in single-threaded mode, split up the Block if needed.
// This is not needed in multi-threaded mode because liblzma
@@ -764,6 +1106,7 @@ split_block(uint64_t *block_remaining,
}
}
}
+#endif
static bool
@@ -796,6 +1139,7 @@ coder_normal(file_pair *pair)
// Assume that something goes wrong.
bool success = false;
+#ifdef HAVE_ENCODERS
// block_remaining indicates how many input bytes to encode before
// finishing the current .xz Block. The Block size is set with
// --block-size=SIZE and --block-list. They have an effect only when
@@ -829,15 +1173,18 @@ coder_normal(file_pair *pair)
// output is still not identical because in single-threaded
// mode the size info isn't written into Block Headers.
if (opt_block_list != NULL) {
- if (block_remaining < opt_block_list[list_pos]) {
+ if (block_remaining < opt_block_list[list_pos].size) {
assert(!hardware_threads_is_mt());
- next_block_remaining = opt_block_list[list_pos]
+ next_block_remaining =
+ opt_block_list[list_pos].size
- block_remaining;
} else {
- block_remaining = opt_block_list[list_pos];
+ block_remaining =
+ opt_block_list[list_pos].size;
}
}
}
+#endif
strm.next_out = out_buf.u8;
strm.avail_out = IO_BUFFER_SIZE;
@@ -847,17 +1194,22 @@ coder_normal(file_pair *pair)
// flushing or finishing.
if (strm.avail_in == 0 && action == LZMA_RUN) {
strm.next_in = in_buf.u8;
- strm.avail_in = io_read(pair, &in_buf,
- my_min(block_remaining,
- IO_BUFFER_SIZE));
+#ifdef HAVE_ENCODERS
+ const size_t read_size = my_min(block_remaining,
+ IO_BUFFER_SIZE);
+#else
+ const size_t read_size = IO_BUFFER_SIZE;
+#endif
+ strm.avail_in = io_read(pair, &in_buf, read_size);
if (strm.avail_in == SIZE_MAX)
break;
if (pair->src_eof) {
action = LZMA_FINISH;
-
- } else if (block_remaining != UINT64_MAX) {
+ }
+#ifdef HAVE_ENCODERS
+ else if (block_remaining != UINT64_MAX) {
// Start a new Block after every
// opt_block_size bytes of input.
block_remaining -= strm.avail_in;
@@ -867,6 +1219,7 @@ coder_normal(file_pair *pair)
if (action == LZMA_RUN && pair->flush_needed)
action = LZMA_SYNC_FLUSH;
+#endif
}
// Let liblzma do the actual work.
@@ -878,6 +1231,7 @@ coder_normal(file_pair *pair)
break;
}
+#ifdef HAVE_ENCODERS
if (ret == LZMA_STREAM_END && (action == LZMA_SYNC_FLUSH
|| action == LZMA_FULL_BARRIER)) {
if (action == LZMA_SYNC_FLUSH) {
@@ -907,8 +1261,9 @@ coder_normal(file_pair *pair)
// Start a new Block after LZMA_FULL_FLUSH or continue
// the same block after LZMA_SYNC_FLUSH.
action = LZMA_RUN;
-
- } else if (ret != LZMA_OK) {
+ } else
+#endif
+ if (ret != LZMA_OK) {
// Determine if the return value indicates that we
// won't continue coding. LZMA_NO_CHECK would be
// here too if LZMA_TELL_ANY_CHECK was used.
@@ -1103,6 +1458,16 @@ coder_run(const char *filename)
extern void
coder_free(void)
{
+ // Free starting from the second filter chain since the default
+ // filter chain may have its options set from a static variable
+ // in coder_set_compression_settings(). Since this is only run in
+ // debug mode and will be freed when the process ends anyway, we
+ // don't worry about freeing it.
+ for (uint32_t i = 1; i < ARRAY_SIZE(chains); i++) {
+ if (chains_used_mask & (1U << i))
+ lzma_filters_free(chains[i], NULL);
+ }
+
lzma_end(&strm);
return;
}
diff --git a/src/xz/coder.h b/src/xz/coder.h
index b4f43a2..96755f3 100644
--- a/src/xz/coder.h
+++ b/src/xz/coder.h
@@ -1,12 +1,12 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file coder.h
/// \brief Compresses or uncompresses a file
//
-// Author: Lasse Collin
-//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
+// Authors: Lasse Collin
+// Jia Tan
//
///////////////////////////////////////////////////////////////////////////////
@@ -30,6 +30,16 @@ enum format_type {
};
+/// Array of these hold the entries specified with --block-list.
+typedef struct {
+ /// Uncompressed size of the Block
+ uint64_t size;
+
+ /// Filter chain to use for this Block (chains[chain_num])
+ unsigned chain_num;
+} block_list_entry;
+
+
/// Operation mode of the command line tool. This is set in args.c and read
/// in several files.
extern enum operation_mode opt_mode;
@@ -50,9 +60,21 @@ extern bool opt_single_stream;
/// of input. This has an effect only when compressing to the .xz format.
extern uint64_t opt_block_size;
-/// This is non-NULL if --block-list was used. This contains the Block sizes
-/// as an array that is terminated with 0.
-extern uint64_t *opt_block_list;
+/// List of block size and filter chain pointer pairs.
+extern block_list_entry *opt_block_list;
+
+/// Size of the largest Block that was specified in --block-list.
+/// This is used to limit the block_size option of multithreaded encoder.
+/// It's waste of memory to specify a too large block_size and reducing
+/// it might even allow using more threads in some cases.
+///
+/// NOTE: If the last entry in --block-list is the special value of 0
+/// (which gets converted to UINT64_MAX), it counts here as UINT64_MAX too.
+/// This way the multithreaded encoder's Block size won't be reduced.
+extern uint64_t block_list_largest;
+
+/// Bitmask indicating which filter chains we specified in --block-list.
+extern uint32_t block_list_chain_mask;
/// Set the integrity check type used when compressing
extern void coder_set_check(lzma_check check);
@@ -77,3 +99,9 @@ extern void coder_run(const char *filename);
/// Free the memory allocated for the coder and kill the worker threads.
extern void coder_free(void);
#endif
+
+/// Create filter chain from string
+extern void coder_add_filters_from_str(const char *filter_str);
+
+/// Add or overwrite a filter that can be used by the block-list.
+extern void coder_add_block_filters(const char *str, size_t slot);
diff --git a/src/xz/file_io.c b/src/xz/file_io.c
index 2828029..678a9a5 100644
--- a/src/xz/file_io.c
+++ b/src/xz/file_io.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file file_io.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "private.h"
@@ -29,15 +28,33 @@ static bool warn_fchown;
# include <utime.h>
#endif
-#ifdef HAVE_CAPSICUM
-# ifdef HAVE_SYS_CAPSICUM_H
-# include <sys/capsicum.h>
+#include "tuklib_open_stdxxx.h"
+
+#ifdef _MSC_VER
+# ifdef _WIN64
+ typedef __int64 ssize_t;
# else
-# include <sys/capability.h>
+ typedef int ssize_t;
# endif
-#endif
-#include "tuklib_open_stdxxx.h"
+ typedef int mode_t;
+# define S_IRUSR _S_IREAD
+# define S_IWUSR _S_IWRITE
+
+# define setmode _setmode
+# define open _open
+# define close _close
+# define lseek _lseeki64
+# define unlink _unlink
+
+ // The casts are to silence warnings.
+ // The sizes are known to be small enough.
+# define read(fd, buf, size) _read(fd, buf, (unsigned int)(size))
+# define write(fd, buf, size) _write(fd, buf, (unsigned int)(size))
+
+# define S_ISDIR(m) (((m) & _S_IFMT) == _S_IFDIR)
+# define S_ISREG(m) (((m) & _S_IFMT) == _S_IFREG)
+#endif
#ifndef O_BINARY
# define O_BINARY 0
@@ -66,11 +83,6 @@ typedef enum {
/// If true, try to create sparse files when decompressing.
static bool try_sparse = true;
-#ifdef ENABLE_SANDBOX
-/// True if the conditions for sandboxing (described in main()) have been met.
-static bool sandbox_allowed = false;
-#endif
-
#ifndef TUKLIB_DOSLIKE
/// File status flags of standard input. This is used by io_open_src()
/// and io_close_src().
@@ -155,105 +167,6 @@ io_no_sparse(void)
}
-#ifdef ENABLE_SANDBOX
-extern void
-io_allow_sandbox(void)
-{
- sandbox_allowed = true;
- return;
-}
-
-
-/// Enables operating-system-specific sandbox if it is possible.
-/// src_fd is the file descriptor of the input file.
-static void
-io_sandbox_enter(int src_fd)
-{
- if (!sandbox_allowed) {
- // This message is more often annoying than useful so
- // it's commented out. It can be useful when developing
- // the sandboxing code.
- //message(V_DEBUG, _("Sandbox is disabled due "
- // "to incompatible command line arguments"));
- return;
- }
-
- const char dummy_str[] = "x";
-
- // Try to ensure that both libc and xz locale files have been
- // loaded when NLS is enabled.
- snprintf(NULL, 0, "%s%s", _(dummy_str), strerror(EINVAL));
-
- // Try to ensure that iconv data files needed for handling multibyte
- // characters have been loaded. This is needed at least with glibc.
- tuklib_mbstr_width(dummy_str, NULL);
-
-#ifdef HAVE_CAPSICUM
- // Capsicum needs FreeBSD 10.0 or later.
- cap_rights_t rights;
-
- if (cap_enter())
- goto error;
-
- if (cap_rights_limit(src_fd, cap_rights_init(&rights,
- CAP_EVENT, CAP_FCNTL, CAP_LOOKUP, CAP_READ, CAP_SEEK)))
- goto error;
-
- if (src_fd != STDIN_FILENO && cap_rights_limit(
- STDIN_FILENO, cap_rights_clear(&rights)))
- goto error;
-
- if (cap_rights_limit(STDOUT_FILENO, cap_rights_init(&rights,
- CAP_EVENT, CAP_FCNTL, CAP_FSTAT, CAP_LOOKUP,
- CAP_WRITE, CAP_SEEK)))
- goto error;
-
- if (cap_rights_limit(STDERR_FILENO, cap_rights_init(&rights,
- CAP_WRITE)))
- goto error;
-
- if (cap_rights_limit(user_abort_pipe[0], cap_rights_init(&rights,
- CAP_EVENT)))
- goto error;
-
- if (cap_rights_limit(user_abort_pipe[1], cap_rights_init(&rights,
- CAP_WRITE)))
- goto error;
-
-#elif defined(HAVE_PLEDGE)
- // pledge() was introduced in OpenBSD 5.9.
- //
- // main() unconditionally calls pledge() with fairly relaxed
- // promises which work in all situations. Here we make the
- // sandbox more strict.
- if (pledge("stdio", ""))
- goto error;
-
- (void)src_fd;
-
-#else
-# error ENABLE_SANDBOX is defined but no sandboxing method was found.
-#endif
-
- // This message is annoying in xz -lvv.
- //message(V_DEBUG, _("Sandbox was successfully enabled"));
- return;
-
-error:
-#ifdef HAVE_CAPSICUM
- // If a kernel is configured without capability mode support or
- // used in an emulator that does not implement the capability
- // system calls, then the Capsicum system calls will fail and set
- // errno to ENOSYS. In that case xz will silently run without
- // the sandbox.
- if (errno == ENOSYS)
- return;
-#endif
- message_fatal(_("Failed to enable the sandbox"));
-}
-#endif // ENABLE_SANDBOX
-
-
#ifndef TUKLIB_DOSLIKE
/// \brief Waits for input or output to become available or for a signal
///
@@ -407,7 +320,7 @@ io_copy_attrs(const file_pair *pair)
message_warning(_("%s: Cannot set the file group: %s"),
pair->dest_name, strerror(errno));
// We can still safely copy some additional permissions:
- // `group' must be at least as strict as `other' and
+ // 'group' must be at least as strict as 'other' and
// also vice versa.
//
// NOTE: After this, the owner of the source file may
@@ -809,7 +722,8 @@ io_open_src(const char *src_name)
#ifdef ENABLE_SANDBOX
if (!error)
- io_sandbox_enter(pair.src_fd);
+ sandbox_enable_strict_if_allowed(pair.src_fd,
+ user_abort_pipe[0], user_abort_pipe[1]);
#endif
return error ? NULL : &pair;
diff --git a/src/xz/file_io.h b/src/xz/file_io.h
index 6992efa..ae7e2f3 100644
--- a/src/xz/file_io.h
+++ b/src/xz/file_io.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file file_io.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
// Some systems have suboptimal BUFSIZ. Use a bit bigger value on them.
@@ -18,6 +17,16 @@
# define IO_BUFFER_SIZE (BUFSIZ & ~7U)
#endif
+#ifdef _MSC_VER
+ // The first one renames both "struct stat" -> "struct _stat64"
+ // and stat() -> _stat64(). The documentation mentions only
+ // "struct __stat64", not "struct _stat64", but the latter
+ // works too.
+# define stat _stat64
+# define fstat _fstat64
+# define off_t __int64
+#endif
+
/// is_sparse() accesses the buffer as uint64_t for maximum speed.
/// The u32 and u64 members must only be access through this union
@@ -90,12 +99,6 @@ extern void io_write_to_user_abort_pipe(void);
extern void io_no_sparse(void);
-#ifdef ENABLE_SANDBOX
-/// \brief main() calls this if conditions for sandboxing have been met.
-extern void io_allow_sandbox(void);
-#endif
-
-
/// \brief Open the source file
extern file_pair *io_open_src(const char *src_name);
diff --git a/src/xz/hardware.c b/src/xz/hardware.c
index c694882..952652f 100644
--- a/src/xz/hardware.c
+++ b/src/xz/hardware.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file hardware.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "private.h"
@@ -15,7 +14,7 @@
/// Maximum number of worker threads. This can be set with
/// the --threads=NUM command line option.
-static uint32_t threads_max = 1;
+static uint32_t threads_max;
/// True when the number of threads is automatically determined based
/// on the available hardware threads.
@@ -334,5 +333,9 @@ hardware_init(void)
memlimit_mt_default = mem_ceiling;
#endif
+ // Enable threaded mode by default. xz 5.4.x and older
+ // used single-threaded mode by default.
+ hardware_threads_set(0);
+
return;
}
diff --git a/src/xz/hardware.h b/src/xz/hardware.h
index a67b26e..25b351e 100644
--- a/src/xz/hardware.h
+++ b/src/xz/hardware.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file hardware.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
/// Initialize some hardware-specific variables, which are needed by other
diff --git a/src/xz/list.c b/src/xz/list.c
index 86c3a76..ca9cf03 100644
--- a/src/xz/list.c
+++ b/src/xz/list.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file list.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "private.h"
@@ -544,11 +543,21 @@ parse_block_header(file_pair *pair, const lzma_index_iter *iter,
xfi->memusage_max = bhi->memusage;
// Determine the minimum XZ Utils version that supports this Block.
+ // - RISC-V filter needs 5.6.0.
//
// - ARM64 filter needs 5.4.0.
//
// - 5.0.0 doesn't support empty LZMA2 streams and thus empty
// Blocks that use LZMA2. This decoder bug was fixed in 5.0.2.
+ if (xfi->min_version < 50060002U) {
+ for (size_t i = 0; filters[i].id != LZMA_VLI_UNKNOWN; ++i) {
+ if (filters[i].id == LZMA_FILTER_RISCV) {
+ xfi->min_version = 50060002U;
+ break;
+ }
+ }
+ }
+
if (xfi->min_version < 50040002U) {
for (size_t i = 0; filters[i].id != LZMA_VLI_UNKNOWN; ++i) {
if (filters[i].id == LZMA_FILTER_ARM64) {
@@ -1266,10 +1275,22 @@ list_totals(void)
extern void
list_file(const char *filename)
{
- if (opt_format != FORMAT_XZ && opt_format != FORMAT_AUTO)
- message_fatal(_("--list works only on .xz files "
+ if (opt_format != FORMAT_XZ && opt_format != FORMAT_AUTO) {
+ // The 'lzmainfo' message is printed only when --format=lzma
+ // is used (it is implied if using "lzma" as the command
+ // name). Thus instead of using message_fatal(), print
+ // the messages separately and then call tuklib_exit()
+ // like message_fatal() does.
+ message(V_ERROR, _("--list works only on .xz files "
"(--format=xz or --format=auto)"));
+ if (opt_format == FORMAT_LZMA)
+ message(V_ERROR,
+ _("Try 'lzmainfo' with .lzma files."));
+
+ tuklib_exit(E_ERROR, E_ERROR, false);
+ }
+
message_filename(filename);
if (filename == stdin_filename) {
diff --git a/src/xz/list.h b/src/xz/list.h
index a4c6ec7..805880d 100644
--- a/src/xz/list.h
+++ b/src/xz/list.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file list.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
/// \brief List information about the given .xz file
diff --git a/src/xz/main.c b/src/xz/main.c
index c9c3dec..71b5ef7 100644
--- a/src/xz/main.c
+++ b/src/xz/main.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file main.c
@@ -5,14 +7,12 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "private.h"
#include <ctype.h>
+
/// Exit status to use. This can be changed with set_exit_status().
static enum exit_status_type exit_status = E_SUCCESS;
@@ -119,8 +119,8 @@ read_name(const args_info *args)
// newlines.
message_error(_("%s: Null character found when "
"reading filenames; maybe you meant "
- "to use `--files0' instead "
- "of `--files'?"), args->files_name);
+ "to use '--files0' instead "
+ "of '--files'?"), args->files_name);
return NULL;
}
@@ -142,35 +142,38 @@ read_name(const args_info *args)
int
main(int argc, char **argv)
{
-#ifdef HAVE_PLEDGE
- // OpenBSD's pledge(2) sandbox
- //
- // Unconditionally enable sandboxing with fairly relaxed promises.
- // This is still way better than having no sandbox at all. :-)
- // More strict promises will be made later in file_io.c if possible.
- if (pledge("stdio rpath wpath cpath fattr", "")) {
- // Don't translate the string or use message_fatal() as
- // those haven't been initialized yet.
- fprintf(stderr, "%s: Failed to enable the sandbox\n", argv[0]);
- return E_ERROR;
- }
-#endif
-
#if defined(_WIN32) && !defined(__CYGWIN__)
InitializeCriticalSection(&exit_status_cs);
#endif
- // Set up the progname variable.
+ // Set up the progname variable needed for messages.
tuklib_progname_init(argv);
// Initialize the file I/O. This makes sure that
// stdin, stdout, and stderr are something valid.
+ // This must be done before we might open any files
+ // even indirectly like locale and gettext initializations.
io_init();
+#ifdef ENABLE_SANDBOX
+ // Enable such sandboxing that can always be enabled.
+ // This requires that progname has been set up.
+ // It's also good that io_init() has been called because it
+ // might need to do things that the initial sandbox won't allow.
+ // Otherwise this should be called as early as possible.
+ //
+ // NOTE: Calling this before tuklib_gettext_init() means that
+ // translated error message won't be available if sandbox
+ // initialization fails. However, sandbox_init() shouldn't
+ // fail and this order simply feels better.
+ sandbox_init();
+#endif
+
// Set up the locale and message translations.
tuklib_gettext_init(PACKAGE, LOCALEDIR);
- // Initialize handling of error/warning/other messages.
+ // Initialize progress message handling. It's not always needed
+ // but it's simpler to do this unconditionally.
message_init();
// Set hardware-dependent default values. These can be overridden
@@ -220,21 +223,41 @@ main(int argc, char **argv)
signals_init();
#ifdef ENABLE_SANDBOX
- // Set a flag that sandboxing is allowed if all these are true:
- // - --files or --files0 wasn't used.
- // - There is exactly one input file or we are reading from stdin.
- // - We won't create any files: output goes to stdout or --test
- // or --list was used. Note that --test implies opt_stdout = true
- // but --list doesn't.
+ // Read-only sandbox can be enabled if we won't create or delete
+ // any files:
//
- // This is obviously not ideal but it was easy to implement and
- // it covers the most common use cases.
+ // - --stdout, --test, or --list was used. Note that --test
+ // implies opt_stdout = true but --list doesn't.
//
- // TODO: Make sandboxing work for other situations too.
- if (args.files_name == NULL && args.arg_count == 1
- && (opt_stdout || strcmp("-", args.arg_names[0]) == 0
- || opt_mode == MODE_LIST))
- io_allow_sandbox();
+ // - Output goes to stdout because --files or --files0 wasn't used
+ // and no arguments were given on the command line or the
+ // arguments are all "-" (indicating standard input).
+ bool to_stdout_only = opt_stdout || opt_mode == MODE_LIST;
+ if (!to_stdout_only && args.files_name == NULL) {
+ // If all of the filenames provided are "-" (more than one
+ // "-" could be specified), then we are only going to be
+ // writing to standard output. Note that if no filename args
+ // were provided, args.c puts a single "-" in arg_names[0].
+ to_stdout_only = true;
+
+ for (unsigned i = 0; i < args.arg_count; ++i) {
+ if (strcmp("-", args.arg_names[i]) != 0) {
+ to_stdout_only = false;
+ break;
+ }
+ }
+ }
+
+ if (to_stdout_only) {
+ sandbox_enable_read_only();
+
+ // Allow strict sandboxing if we are processing exactly one
+ // file to standard output. This requires that --files or
+ // --files0 wasn't specified (an unknown number of filenames
+ // could be provided that way).
+ if (args.files_name == NULL && args.arg_count == 1)
+ sandbox_allow_strict();
+ }
#endif
// coder_run() handles compression, decompression, and testing.
diff --git a/src/xz/main.h b/src/xz/main.h
index 323f2f7..a8a1b45 100644
--- a/src/xz/main.h
+++ b/src/xz/main.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file main.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
/// Possible exit status values. These are the same as used by gzip and bzip2.
diff --git a/src/xz/message.c b/src/xz/message.c
index abf30ad..deafdb4 100644
--- a/src/xz/message.c
+++ b/src/xz/message.c
@@ -1,12 +1,12 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file message.c
/// \brief Printing messages
//
-// Author: Lasse Collin
-//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
+// Authors: Lasse Collin
+// Jia Tan
//
///////////////////////////////////////////////////////////////////////////////
@@ -42,7 +42,7 @@ static bool current_filename_printed = false;
/// True if we should print progress indicator and update it automatically
/// if also verbose >= V_VERBOSE.
-static bool progress_automatic;
+static bool progress_automatic = false;
/// True if message_progress_start() has been called but
/// message_progress_end() hasn't been called yet.
@@ -119,26 +119,7 @@ message_init(void)
// exception, even if --verbose was not used, user can send SIGALRM
// to make us print progress information once without automatic
// updating.
- progress_automatic = isatty(STDERR_FILENO);
-
- // Commented out because COLUMNS is rarely exported to environment.
- // Most users have at least 80 columns anyway, let's think something
- // fancy here if enough people complain.
-/*
- if (progress_automatic) {
- // stderr is a terminal. Check the COLUMNS environment
- // variable to see if the terminal is wide enough. If COLUMNS
- // doesn't exist or it has some unparsable value, we assume
- // that the terminal is wide enough.
- const char *columns_str = getenv("COLUMNS");
- if (columns_str != NULL) {
- char *endptr;
- const long columns = strtol(columns_str, &endptr, 10);
- if (*endptr != '\0' || columns < 80)
- progress_automatic = false;
- }
- }
-*/
+ progress_automatic = is_tty(STDERR_FILENO);
#ifdef SIGALRM
// Establish the signal handlers which set a flag to tell us that
@@ -932,7 +913,7 @@ message_try_help(void)
{
// Print this with V_WARNING instead of V_ERROR to prevent it from
// showing up when --quiet has been specified.
- message(V_WARNING, _("Try `%s --help' for more information."),
+ message(V_WARNING, _("Try '%s --help' for more information."),
progname);
return;
}
@@ -994,7 +975,7 @@ message_help(bool long_help)
" ignore possible remaining input data"));
puts(_(
" --no-sparse do not create sparse files when decompressing\n"
-" -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n"
+" -S, --suffix=.SUF use the suffix '.SUF' on compressed files\n"
" --files[=FILE] read filenames to process from FILE; if FILE is\n"
" omitted, filenames are read from the standard input;\n"
" filenames must be terminated with the newline character\n"
@@ -1005,9 +986,9 @@ message_help(bool long_help)
puts(_("\n Basic file format and compression options:\n"));
puts(_(
" -F, --format=FMT file format to encode or decode; possible values are\n"
-" `auto' (default), `xz', `lzma', `lzip', and `raw'\n"
-" -C, --check=CHECK integrity check type: `none' (use with caution),\n"
-" `crc32', `crc64' (default), or `sha256'"));
+" 'auto' (default), 'xz', 'lzma', 'lzip', and 'raw'\n"
+" -C, --check=CHECK integrity check type: 'none' (use with caution),\n"
+" 'crc32', 'crc64' (default), or 'sha256'"));
puts(_(
" --ignore-check don't verify the integrity check when decompressing"));
}
@@ -1021,8 +1002,8 @@ message_help(bool long_help)
" does not affect decompressor memory requirements"));
puts(_(
-" -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"));
+" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
+" as many threads as there are processor cores"));
if (long_help) {
puts(_(
@@ -1030,9 +1011,11 @@ message_help(bool long_help)
" start a new .xz block after every SIZE bytes of input;\n"
" use this to set the block size for threaded compression"));
puts(_(
-" --block-list=SIZES\n"
+" --block-list=BLOCKS\n"
" start a new .xz block after the given comma-separated\n"
-" intervals of uncompressed data"));
+" intervals of uncompressed data; optionally, specify a\n"
+" filter chain number (0-9) followed by a ':' before the\n"
+" uncompressed data size"));
puts(_(
" --flush-timeout=TIMEOUT\n"
" when compressing, if more than TIMEOUT milliseconds has\n"
@@ -1057,6 +1040,23 @@ message_help(bool long_help)
puts(_(
"\n Custom filter chain for compression (alternative for using presets):"));
+ puts(_(
+"\n"
+" --filters=FILTERS set the filter chain using the liblzma filter string\n"
+" syntax; use --filters-help for more information"
+ ));
+
+ puts(_(
+" --filters1=FILTERS ... --filters9=FILTERS\n"
+" set additional filter chains using the liblzma filter\n"
+" string syntax to use with --block-list"
+ ));
+
+ puts(_(
+" --filters-help display more information about the liblzma filter string\n"
+" syntax and exit."
+ ));
+
#if defined(HAVE_ENCODER_LZMA1) || defined(HAVE_DECODER_LZMA1) \
|| defined(HAVE_ENCODER_LZMA2) || defined(HAVE_DECODER_LZMA2)
// TRANSLATORS: The word "literal" in "literal context bits"
@@ -1087,6 +1087,7 @@ message_help(bool long_help)
" --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n"
" --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n"
" --sparc[=OPTS] SPARC BCJ filter\n"
+" --riscv[=OPTS] RISC-V BCJ filter\n"
" Valid OPTS for all BCJ filters:\n"
" start=NUM start offset for conversions (default=0)"));
@@ -1144,3 +1145,28 @@ message_help(bool long_help)
tuklib_exit(E_SUCCESS, E_ERROR, verbosity != V_SILENT);
}
+
+
+extern void
+message_filters_help(void)
+{
+ char *encoder_options;
+ if (lzma_str_list_filters(&encoder_options, LZMA_VLI_UNKNOWN,
+ LZMA_STR_ENCODER, NULL) != LZMA_OK)
+ message_bug();
+
+ if (!opt_robot) {
+ puts(_(
+"Filter chains are set using the --filters=FILTERS or\n"
+"--filters1=FILTERS ... --filters9=FILTERS options. Each filter in the chain\n"
+"can be separated by spaces or '--'. Alternatively a preset <0-9>[e] can be\n"
+"specified instead of a filter chain.\n"
+ ));
+
+ puts(_("The supported filters and their options are:"));
+ }
+
+ puts(encoder_options);
+
+ tuklib_exit(E_SUCCESS, E_ERROR, verbosity != V_SILENT);
+}
diff --git a/src/xz/message.h b/src/xz/message.h
index f608ec7..3f6e183 100644
--- a/src/xz/message.h
+++ b/src/xz/message.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file message.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
/// Verbosity levels
@@ -24,7 +23,10 @@ enum message_verbosity {
extern const int message_progress_sigs[];
-/// \brief Initializes the message functions
+/// \brief Initializes the progress message functions
+///
+/// message_fatal() and such can be called even before message_init()
+/// has been called.
///
/// If an error occurs, this function doesn't return.
///
@@ -111,6 +113,12 @@ tuklib_attr_noreturn
extern void message_help(bool long_help);
+/// Prints a help message specifically for using the --filters and
+/// --filtersX command line options.
+tuklib_attr_noreturn
+extern void message_filters_help(void);
+
+
/// \brief Set the total number of files to be processed
///
/// Standard input is counted as a file here. This is used when printing
diff --git a/src/xz/mytime.c b/src/xz/mytime.c
index 7e8a074..7d9a27d 100644
--- a/src/xz/mytime.c
+++ b/src/xz/mytime.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file mytime.c
@@ -5,14 +7,14 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "private.h"
-#if defined(HAVE_CLOCK_GETTIME) && defined(HAVE_CLOCK_MONOTONIC)
+#if defined(MYTHREAD_VISTA) || defined(_MSC_VER)
+ // Nothing
+#elif defined(HAVE_CLOCK_GETTIME) \
+ && (!defined(__MINGW32__) || defined(MYTHREAD_POSIX))
# include <time.h>
#else
# include <sys/time.h>
@@ -20,7 +22,22 @@
uint64_t opt_flush_timeout = 0;
+// start_time holds the time when the (de)compression was started.
+// It's from mytime_now() and thus only useful for calculating relative
+// time differences (elapsed time). start_time is initialized by calling
+// mytime_set_start_time() and modified by mytime_sigtstp_handler().
+//
+// When mytime_sigtstp_handler() is used, start_time is made volatile.
+// I'm not sure if that is really required since access to it is guarded
+// by signals_block()/signals_unblock() since accessing an uint64_t isn't
+// atomic on all systems. But since the variable isn't accessed very
+// frequently making it volatile doesn't hurt.
+#ifdef USE_SIGTSTP_HANDLER
+static volatile uint64_t start_time;
+#else
static uint64_t start_time;
+#endif
+
static uint64_t next_flush;
@@ -30,16 +47,41 @@ static uint64_t next_flush;
static uint64_t
mytime_now(void)
{
-#if defined(HAVE_CLOCK_GETTIME) && defined(HAVE_CLOCK_MONOTONIC)
+#if defined(MYTHREAD_VISTA) || defined(_MSC_VER)
+ // Since there is no SIGALRM on Windows, this function gets
+ // called frequently when the progress indicator is in use.
+ // Progress indicator doesn't need high-resolution time.
+ // GetTickCount64() has very low overhead but needs at least WinVista.
+ //
+ // MinGW-w64 provides the POSIX functions clock_gettime() and
+ // gettimeofday() in a manner that allow xz to run on older
+ // than WinVista. If the threading method needs WinVista anyway,
+ // there's no reason to avoid a WinVista API here either.
+ return GetTickCount64();
+
+#elif defined(HAVE_CLOCK_GETTIME) \
+ && (!defined(__MINGW32__) || defined(MYTHREAD_POSIX))
+ // MinGW-w64: clock_gettime() is defined in winpthreads but we need
+ // nothing else from winpthreads (unless, for some odd reason, POSIX
+ // threading has been selected). By avoiding clock_gettime(), we
+ // avoid the dependency on libwinpthread-1.dll or the need to link
+ // against the static version. The downside is that the fallback
+ // method, gettimeofday(), doesn't provide monotonic time.
+ struct timespec tv;
+
+# ifdef HAVE_CLOCK_MONOTONIC
// If CLOCK_MONOTONIC was available at compile time but for some
// reason isn't at runtime, fallback to CLOCK_REALTIME which
// according to POSIX is mandatory for all implementations.
static clockid_t clk_id = CLOCK_MONOTONIC;
- struct timespec tv;
while (clock_gettime(clk_id, &tv))
clk_id = CLOCK_REALTIME;
+# else
+ clock_gettime(CLOCK_REALTIME, &tv);
+# endif
return (uint64_t)tv.tv_sec * 1000 + (uint64_t)(tv.tv_nsec / 1000000);
+
#else
struct timeval tv;
gettimeofday(&tv, NULL);
@@ -48,10 +90,49 @@ mytime_now(void)
}
+#ifdef USE_SIGTSTP_HANDLER
+extern void
+mytime_sigtstp_handler(int sig lzma_attribute((__unused__)))
+{
+ // Measure how long the process stays in the stopped state and add
+ // that amount to start_time. This way the the progress indicator
+ // won't count the stopped time as elapsed time and the estimated
+ // remaining time won't be confused by the time spent in the
+ // stopped state.
+ //
+ // FIXME? Is raising SIGSTOP the correct thing to do? POSIX.1-2017
+ // says that orphan processes shouldn't stop on SIGTSTP. So perhaps
+ // the most correct thing to do could be to revert to the default
+ // handler for SIGTSTP, unblock SIGTSTP, and then raise(SIGTSTP).
+ // It's quite a bit more complicated than just raising SIGSTOP though.
+ //
+ // The difference between raising SIGTSTP vs. SIGSTOP can be seen on
+ // the shell command line too by running "echo $?" after stopping
+ // a process but perhaps that doesn't matter.
+ const uint64_t t = mytime_now();
+ raise(SIGSTOP);
+ start_time += mytime_now() - t;
+ return;
+}
+#endif
+
+
extern void
mytime_set_start_time(void)
{
+#ifdef USE_SIGTSTP_HANDLER
+ // Block the signals when accessing start_time so that we cannot
+ // end up with a garbage value. start_time is volatile but access
+ // to it isn't atomic at least on 32-bit systems.
+ signals_block();
+#endif
+
start_time = mytime_now();
+
+#ifdef USE_SIGTSTP_HANDLER
+ signals_unblock();
+#endif
+
return;
}
@@ -59,7 +140,17 @@ mytime_set_start_time(void)
extern uint64_t
mytime_get_elapsed(void)
{
- return mytime_now() - start_time;
+#ifdef USE_SIGTSTP_HANDLER
+ signals_block();
+#endif
+
+ const uint64_t t = mytime_now() - start_time;
+
+#ifdef USE_SIGTSTP_HANDLER
+ signals_unblock();
+#endif
+
+ return t;
}
diff --git a/src/xz/mytime.h b/src/xz/mytime.h
index a7be2aa..6dfaeae 100644
--- a/src/xz/mytime.h
+++ b/src/xz/mytime.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file mytime.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
@@ -21,6 +20,12 @@
extern uint64_t opt_flush_timeout;
+#ifdef USE_SIGTSTP_HANDLER
+/// \brief Signal handler for SIGTSTP
+extern void mytime_sigtstp_handler(int sig);
+#endif
+
+
/// \brief Store the time when (de)compression was started
///
/// The start time is also stored as the time of the first flush.
diff --git a/src/xz/options.c b/src/xz/options.c
index 4d5e899..bc8bc1a 100644
--- a/src/xz/options.c
+++ b/src/xz/options.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file options.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "private.h"
@@ -83,7 +82,7 @@ parse_options(const char *str, const option_map *opts,
*value++ = '\0';
if (value == NULL || value[0] == '\0')
- message_fatal(_("%s: Options must be `name=value' "
+ message_fatal(_("%s: Options must be 'name=value' "
"pairs separated with commas"), str);
// Look for the option name from the option map.
diff --git a/src/xz/options.h b/src/xz/options.h
index 61ec8d5..4a1314d 100644
--- a/src/xz/options.h
+++ b/src/xz/options.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file options.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
/// \brief Parser for Delta options
diff --git a/src/xz/private.h b/src/xz/private.h
index 6414bdb..b370472 100644
--- a/src/xz/private.h
+++ b/src/xz/private.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file private.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "sysdefs.h"
@@ -21,7 +20,10 @@
#include <signal.h>
#include <locale.h>
#include <stdio.h>
-#include <unistd.h>
+
+#ifndef _MSC_VER
+# include <unistd.h>
+#endif
#include "tuklib_gettext.h"
#include "tuklib_progname.h"
@@ -33,6 +35,10 @@
# include <windows.h>
#endif
+#ifdef _MSC_VER
+# define fileno _fileno
+#endif
+
#ifndef STDIN_FILENO
# define STDIN_FILENO (fileno(stdin))
#endif
@@ -45,8 +51,15 @@
# define STDERR_FILENO (fileno(stderr))
#endif
-#if defined(HAVE_CAPSICUM) || defined(HAVE_PLEDGE)
-# define ENABLE_SANDBOX 1
+// Handling SIGTSTP keeps time-keeping for progress indicator correct
+// if xz is stopped. It requires use of clock_gettime() as that is
+// async-signal safe in POSIX. Require also SIGALRM support since
+// on systems where SIGALRM isn't available, progress indicator code
+// polls the time and the SIGTSTP handling adds slight overhead to
+// that code. Most (all?) systems that have SIGTSTP also have SIGALRM
+// so this requirement won't exclude many systems.
+#if defined(HAVE_CLOCK_GETTIME) && defined(SIGTSTP) && defined(SIGALRM)
+# define USE_SIGTSTP_HANDLER 1
#endif
#include "main.h"
@@ -57,6 +70,7 @@
#include "hardware.h"
#include "file_io.h"
#include "options.h"
+#include "sandbox.h"
#include "signals.h"
#include "suffix.h"
#include "util.h"
diff --git a/src/xz/sandbox.c b/src/xz/sandbox.c
new file mode 100644
index 0000000..5bd2273
--- /dev/null
+++ b/src/xz/sandbox.c
@@ -0,0 +1,355 @@
+// SPDX-License-Identifier: 0BSD
+
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file sandbox.c
+/// \brief Sandbox support
+//
+// Author: Lasse Collin
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include "private.h"
+
+
+#ifndef ENABLE_SANDBOX
+
+// Prevent an empty translation unit when no sandboxing is supported.
+typedef int dummy;
+
+#else
+
+/// If the conditions for strict sandboxing (described in main())
+/// have been met, sandbox_allow_strict() can be called to set this
+/// variable to true.
+static bool strict_sandbox_allowed = false;
+
+
+extern void
+sandbox_allow_strict(void)
+{
+ strict_sandbox_allowed = true;
+ return;
+}
+
+
+// Strict sandboxing prevents opening any files. This *tries* to ensure
+// that any auxiliary files that might be required are already open.
+//
+// Returns true if strict sandboxing is allowed, false otherwise.
+static bool
+prepare_for_strict_sandbox(void)
+{
+ if (!strict_sandbox_allowed)
+ return false;
+
+ const char dummy_str[] = "x";
+
+ // Try to ensure that both libc and xz locale files have been
+ // loaded when NLS is enabled.
+ snprintf(NULL, 0, "%s%s", _(dummy_str), strerror(EINVAL));
+
+ // Try to ensure that iconv data files needed for handling multibyte
+ // characters have been loaded. This is needed at least with glibc.
+ tuklib_mbstr_width(dummy_str, NULL);
+
+ return true;
+}
+
+#endif
+
+
+#if defined(HAVE_PLEDGE)
+
+///////////////
+// pledge(2) //
+///////////////
+
+#include <unistd.h>
+
+
+extern void
+sandbox_init(void)
+{
+ if (pledge("stdio rpath wpath cpath fattr", "")) {
+ // gettext hasn't been initialized yet so
+ // there's no point to call it here.
+ message_fatal("Failed to enable the sandbox");
+ }
+
+ return;
+}
+
+
+extern void
+sandbox_enable_read_only(void)
+{
+ // We will be opening files for reading but
+ // won't create or remove any files.
+ if (pledge("stdio rpath", ""))
+ message_fatal(_("Failed to enable the sandbox"));
+
+ return;
+}
+
+
+extern void
+sandbox_enable_strict_if_allowed(int src_fd lzma_attribute((__unused__)),
+ int pipe_event_fd lzma_attribute((__unused__)),
+ int pipe_write_fd lzma_attribute((__unused__)))
+{
+ if (!prepare_for_strict_sandbox())
+ return;
+
+ // All files that need to be opened have already been opened.
+ if (pledge("stdio", ""))
+ message_fatal(_("Failed to enable the sandbox"));
+
+ return;
+}
+
+
+#elif defined(HAVE_LINUX_LANDLOCK)
+
+//////////////
+// Landlock //
+//////////////
+
+#include <linux/landlock.h>
+#include <sys/syscall.h>
+#include <sys/prctl.h>
+
+
+// Highest Landlock ABI version supported by this file:
+// - For ABI versions 1-3 we don't need anything from <linux/landlock.h>
+// that isn't part of version 1.
+// - For ABI version 4 we need the larger struct landlock_ruleset_attr
+// with the handled_access_net member. That is bundled with the macros
+// LANDLOCK_ACCESS_NET_BIND_TCP and LANDLOCK_ACCESS_NET_CONNECT_TCP.
+#ifdef LANDLOCK_ACCESS_NET_BIND_TCP
+# define LANDLOCK_ABI_MAX 4
+#else
+# define LANDLOCK_ABI_MAX 3
+#endif
+
+
+/// Landlock ABI version supported by the kernel
+static int landlock_abi;
+
+
+// The required_rights should have those bits set that must not be restricted.
+// This function will then bitwise-and ~required_rights with a mask matching
+// the Landlock ABI version, leaving only those bits set that are supported
+// by the ABI and allowed to be restricted by the function argument.
+static void
+enable_landlock(uint64_t required_rights)
+{
+ assert(landlock_abi <= LANDLOCK_ABI_MAX);
+
+ if (landlock_abi <= 0)
+ return;
+
+ // We want to set all supported flags in handled_access_fs.
+ // This way the ruleset will initially forbid access to all
+ // actions that the available Landlock ABI version supports.
+ // Exceptions can be added using landlock_add_rule(2) to
+ // allow certain actions on certain files or directories.
+ //
+ // The same flag values are used on all archs. ABI v2 and v3
+ // both add one new flag.
+ //
+ // First in ABI v1: LANDLOCK_ACCESS_FS_EXECUTE = 1ULL << 0
+ // Last in ABI v1: LANDLOCK_ACCESS_FS_MAKE_SYM = 1ULL << 12
+ // Last in ABI v2: LANDLOCK_ACCESS_FS_REFER = 1ULL << 13
+ // Last in ABI v3: LANDLOCK_ACCESS_FS_TRUNCATE = 1ULL << 14
+ //
+ // This makes it simple to set the mask based on the ABI
+ // version and we don't need to care which flags are #defined
+ // in the installed <linux/landlock.h> for ABI versions 1-3.
+ const struct landlock_ruleset_attr attr = {
+ .handled_access_fs = ~required_rights
+ & ((1ULL << (12 + my_min(3, landlock_abi))) - 1),
+#if LANDLOCK_ABI_MAX >= 4
+ .handled_access_net = landlock_abi < 4 ? 0 :
+ (LANDLOCK_ACCESS_NET_BIND_TCP
+ | LANDLOCK_ACCESS_NET_CONNECT_TCP),
+#endif
+ };
+
+ const int ruleset_fd = syscall(SYS_landlock_create_ruleset,
+ &attr, sizeof(attr), 0U);
+ if (ruleset_fd < 0)
+ message_fatal(_("Failed to enable the sandbox"));
+
+ // All files we need should have already been opened. Thus,
+ // we don't need to add any rules using landlock_add_rule(2)
+ // before activating the sandbox.
+ //
+ // NOTE: It's possible that the hack prepare_for_strict_sandbox()
+ // isn't be good enough. It tries to get translations and
+ // libc-specific files loaded but if it's not good enough
+ // then perhaps a Landlock rule to allow reading from /usr
+ // and/or the xz installation prefix would be needed.
+ //
+ // prctl(PR_SET_NO_NEW_PRIVS, ...) was already called in
+ // sandbox_init() so we don't do it here again.
+ if (syscall(SYS_landlock_restrict_self, ruleset_fd, 0U) != 0)
+ message_fatal(_("Failed to enable the sandbox"));
+
+ return;
+}
+
+
+extern void
+sandbox_init(void)
+{
+ // Prevent the process from gaining new privileges. This must be done
+ // before landlock_restrict_self(2) but since we will never need new
+ // privileges, this call can be done here already.
+ //
+ // This is supported since Linux 3.5. Ignore the return value to
+ // keep compatibility with old kernels. landlock_restrict_self(2)
+ // will fail if the no_new_privs attribute isn't set, thus if prctl()
+ // fails here the error will still be detected when it matters.
+ (void)prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0);
+
+ // Get the highest Landlock ABI version supported by the kernel.
+ landlock_abi = syscall(SYS_landlock_create_ruleset,
+ (void *)NULL, 0, LANDLOCK_CREATE_RULESET_VERSION);
+
+ // The kernel might support a newer ABI than this file.
+ if (landlock_abi > LANDLOCK_ABI_MAX)
+ landlock_abi = LANDLOCK_ABI_MAX;
+
+ // These are all in ABI version 1 already. We don't need truncate
+ // rights because files are created with open() using O_EXCL and
+ // without O_TRUNC.
+ //
+ // LANDLOCK_ACCESS_FS_READ_DIR is included here to get a clear error
+ // message if xz is given a directory name. Without this permission
+ // the message would be "Permission denied" but with this permission
+ // it's "Is a directory, skipping". It could be worked around with
+ // stat()/lstat() but just giving this permission is simpler and
+ // shouldn't make the sandbox much weaker in practice.
+ const uint64_t required_rights
+ = LANDLOCK_ACCESS_FS_WRITE_FILE
+ | LANDLOCK_ACCESS_FS_READ_FILE
+ | LANDLOCK_ACCESS_FS_READ_DIR
+ | LANDLOCK_ACCESS_FS_REMOVE_FILE
+ | LANDLOCK_ACCESS_FS_MAKE_REG;
+
+ enable_landlock(required_rights);
+ return;
+}
+
+
+extern void
+sandbox_enable_read_only(void)
+{
+ // We will be opening files for reading but
+ // won't create or remove any files.
+ const uint64_t required_rights
+ = LANDLOCK_ACCESS_FS_READ_FILE
+ | LANDLOCK_ACCESS_FS_READ_DIR;
+ enable_landlock(required_rights);
+ return;
+}
+
+
+extern void
+sandbox_enable_strict_if_allowed(int src_fd lzma_attribute((__unused__)),
+ int pipe_event_fd lzma_attribute((__unused__)),
+ int pipe_write_fd lzma_attribute((__unused__)))
+{
+ if (!prepare_for_strict_sandbox())
+ return;
+
+ // Allow all restrictions that the kernel supports with the
+ // highest Landlock ABI version that the kernel or xz supports.
+ //
+ // NOTE: LANDLOCK_ACCESS_FS_READ_DIR isn't needed here because
+ // the only input file has already been opened.
+ enable_landlock(0);
+ return;
+}
+
+
+#elif defined(HAVE_CAP_RIGHTS_LIMIT)
+
+//////////////
+// Capsicum //
+//////////////
+
+#include <sys/capsicum.h>
+
+
+extern void
+sandbox_init(void)
+{
+ // Nothing to do.
+ return;
+}
+
+
+extern void
+sandbox_enable_read_only(void)
+{
+ // Nothing to do.
+ return;
+}
+
+
+extern void
+sandbox_enable_strict_if_allowed(
+ int src_fd, int pipe_event_fd, int pipe_write_fd)
+{
+ if (!prepare_for_strict_sandbox())
+ return;
+
+ // Capsicum needs FreeBSD 10.2 or later.
+ cap_rights_t rights;
+
+ if (cap_enter())
+ goto error;
+
+ if (cap_rights_limit(src_fd, cap_rights_init(&rights,
+ CAP_EVENT, CAP_FCNTL, CAP_LOOKUP, CAP_READ, CAP_SEEK)))
+ goto error;
+
+ // If not reading from stdin, remove all capabilities from it.
+ if (src_fd != STDIN_FILENO && cap_rights_limit(
+ STDIN_FILENO, cap_rights_clear(&rights)))
+ goto error;
+
+ if (cap_rights_limit(STDOUT_FILENO, cap_rights_init(&rights,
+ CAP_EVENT, CAP_FCNTL, CAP_FSTAT, CAP_LOOKUP,
+ CAP_WRITE, CAP_SEEK)))
+ goto error;
+
+ if (cap_rights_limit(STDERR_FILENO, cap_rights_init(&rights,
+ CAP_WRITE)))
+ goto error;
+
+ if (cap_rights_limit(pipe_event_fd, cap_rights_init(&rights,
+ CAP_EVENT)))
+ goto error;
+
+ if (cap_rights_limit(pipe_write_fd, cap_rights_init(&rights,
+ CAP_WRITE)))
+ goto error;
+
+ return;
+
+error:
+ // If a kernel is configured without capability mode support or
+ // used in an emulator that does not implement the capability
+ // system calls, then the Capsicum system calls will fail and set
+ // errno to ENOSYS. In that case xz will silently run without
+ // the sandbox.
+ if (errno == ENOSYS)
+ return;
+
+ message_fatal(_("Failed to enable the sandbox"));
+}
+
+#endif
diff --git a/src/xz/sandbox.h b/src/xz/sandbox.h
new file mode 100644
index 0000000..98b9862
--- /dev/null
+++ b/src/xz/sandbox.h
@@ -0,0 +1,43 @@
+// SPDX-License-Identifier: 0BSD
+
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file sandbox.h
+/// \brief Sandbox support
+//
+// Author: Lasse Collin
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#if defined(HAVE_PLEDGE) || defined(HAVE_LINUX_LANDLOCK) \
+ || defined(HAVE_CAP_RIGHTS_LIMIT)
+# define ENABLE_SANDBOX 1
+#endif
+
+
+/// \brief Enables early sandboxing that can always be enabled
+///
+/// This requires that tuklib_progname() and io_init() have been called.
+extern void sandbox_init(void);
+
+
+/// \brief Enable sandboxing that only allows opening files for reading
+extern void sandbox_enable_read_only(void);
+
+
+/// \brief Tell sandboxing code that strict sandboxing can be used
+///
+/// This function only sets a flag which will be read by
+/// sandbox_enable_strict_if_allowed().
+extern void sandbox_allow_strict(void);
+
+
+/// \brief Enable sandboxing that allows reading from one file
+///
+/// This does nothing if sandbox_allow_strict() hasn't been called.
+///
+/// \param src_fd File descriptor open for reading
+/// \param pipe_event_fd user_abort_pipe[0] from file_io.c
+/// \param pipe_write_fd user_abort_pipe[1] from file_io.c
+extern void sandbox_enable_strict_if_allowed(
+ int src_fd, int pipe_event_fd, int pipe_write_fd);
diff --git a/src/xz/signals.c b/src/xz/signals.c
index 7aef463..20f03be 100644
--- a/src/xz/signals.c
+++ b/src/xz/signals.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file signals.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "private.h"
@@ -50,6 +49,10 @@ signal_handler(int sig)
}
+#ifdef __APPLE__
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wsign-conversion"
+#endif
extern void
signals_init(void)
{
@@ -82,6 +85,11 @@ signals_init(void)
sigaddset(&hooked_signals, message_progress_sigs[i]);
#endif
+#ifdef USE_SIGTSTP_HANDLER
+ // Add the SIGTSTP handler from mytime.c to hooked_signals.
+ sigaddset(&hooked_signals, SIGTSTP);
+#endif
+
// Using "my_sa" because "sa" may conflict with a sockaddr variable
// from system headers on Solaris.
struct sigaction my_sa;
@@ -96,10 +104,11 @@ signals_init(void)
my_sa.sa_flags = 0;
my_sa.sa_handler = &signal_handler;
+ struct sigaction old;
+
for (size_t i = 0; i < ARRAY_SIZE(sigs); ++i) {
// If the parent process has left some signals ignored,
// we don't unignore them.
- struct sigaction old;
if (sigaction(sigs[i], NULL, &old) == 0
&& old.sa_handler == SIG_IGN)
continue;
@@ -109,10 +118,22 @@ signals_init(void)
message_signal_handler();
}
+#ifdef USE_SIGTSTP_HANDLER
+ if (!(sigaction(SIGTSTP, NULL, &old) == 0
+ && old.sa_handler == SIG_IGN)) {
+ my_sa.sa_handler = &mytime_sigtstp_handler;
+ if (sigaction(SIGTSTP, &my_sa, NULL))
+ message_signal_handler();
+ }
+#endif
+
signals_are_initialized = true;
return;
}
+#ifdef __APPLE__
+# pragma GCC diagnostic pop
+#endif
#ifndef __VMS
diff --git a/src/xz/signals.h b/src/xz/signals.h
index 5b125e0..629335d 100644
--- a/src/xz/signals.h
+++ b/src/xz/signals.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file signals.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
/// If this is true, we will clean up the possibly incomplete output file,
diff --git a/src/xz/suffix.c b/src/xz/suffix.c
index 6ce9787..1d548e4 100644
--- a/src/xz/suffix.c
+++ b/src/xz/suffix.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file suffix.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "private.h"
@@ -21,7 +20,13 @@
# ifdef HAVE_STRINGS_H
# include <strings.h>
# endif
-# define strcmp strcasecmp
+# ifdef _MSC_VER
+# define suffix_strcmp _stricmp
+# else
+# define suffix_strcmp strcasecmp
+# endif
+#else
+# define suffix_strcmp strcmp
#endif
@@ -98,7 +103,7 @@ test_suffix(const char *suffix, const char *src_name, size_t src_len)
|| is_dir_sep(src_name[src_len - suffix_len - 1]))
return 0;
- if (strcmp(suffix, src_name + src_len - suffix_len) == 0)
+ if (suffix_strcmp(suffix, src_name + src_len - suffix_len) == 0)
return src_len - suffix_len;
return 0;
@@ -178,7 +183,7 @@ uncompressed_name(const char *src_name, const size_t src_len)
static void
msg_suffix(const char *src_name, const char *suffix)
{
- message_warning(_("%s: File already has `%s' suffix, skipping"),
+ message_warning(_("%s: File already has '%s' suffix, skipping"),
src_name, suffix);
return;
}
diff --git a/src/xz/suffix.h b/src/xz/suffix.h
index 135e905..f59e312 100644
--- a/src/xz/suffix.h
+++ b/src/xz/suffix.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file suffix.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
/// \brief Get the name of the destination file
diff --git a/src/xz/util.c b/src/xz/util.c
index 6ab4c2d..0d339ae 100644
--- a/src/xz/util.c
+++ b/src/xz/util.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file util.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "private.h"
@@ -148,8 +147,8 @@ str_to_uint64(const char *name, const char *value, uint64_t min, uint64_t max)
if (multiplier == 0) {
message(V_ERROR, _("%s: Invalid multiplier suffix"),
value - 1);
- message_fatal(_("Valid suffixes are `KiB' (2^10), "
- "`MiB' (2^20), and `GiB' (2^30)."));
+ message_fatal(_("Valid suffixes are 'KiB' (2^10), "
+ "'MiB' (2^20), and 'GiB' (2^30)."));
}
// Don't overflow here either.
@@ -165,7 +164,7 @@ str_to_uint64(const char *name, const char *value, uint64_t min, uint64_t max)
return result;
error:
- message_fatal(_("Value of the option `%s' must be in the range "
+ message_fatal(_("Value of the option '%s' must be in the range "
"[%" PRIu64 ", %" PRIu64 "]"),
name, min, max);
}
@@ -262,9 +261,30 @@ my_snprintf(char **pos, size_t *left, const char *fmt, ...)
extern bool
+is_tty(int fd)
+{
+#if defined(_WIN32) && !defined(__CYGWIN__)
+ // There is no need to check if handle == INVALID_HANDLE_VALUE
+ // because it will return false anyway when used in GetConsoleMode().
+ // The resulting HANDLE is owned by the file descriptor.
+ // The HANDLE must not be closed here.
+ intptr_t handle = _get_osfhandle(fd);
+ DWORD mode;
+
+ // GetConsoleMode() is an easy way to tell if the HANDLE is a
+ // console or not. We do not care about the value of mode since we
+ // do not plan to use any further Windows console functions.
+ return GetConsoleMode((HANDLE)handle, &mode);
+#else
+ return isatty(fd);
+#endif
+}
+
+
+extern bool
is_tty_stdin(void)
{
- const bool ret = isatty(STDIN_FILENO);
+ const bool ret = is_tty(STDIN_FILENO);
if (ret)
message_error(_("Compressed data cannot be read from "
@@ -277,7 +297,7 @@ is_tty_stdin(void)
extern bool
is_tty_stdout(void)
{
- const bool ret = isatty(STDOUT_FILENO);
+ const bool ret = is_tty(STDOUT_FILENO);
if (ret)
message_error(_("Compressed data cannot be written to "
diff --git a/src/xz/util.h b/src/xz/util.h
index 6d7e148..a2fdd05 100644
--- a/src/xz/util.h
+++ b/src/xz/util.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file util.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
/// \brief Safe malloc() that never returns NULL
@@ -105,6 +104,20 @@ lzma_attribute((__format__(__printf__, 3, 4)))
extern void my_snprintf(char **pos, size_t *left, const char *fmt, ...);
+/// \brief Test if file descriptor is a terminal
+///
+/// For POSIX systems, this is a simple wrapper around isatty(). However on
+/// Windows, isatty() returns true for all character devices, not just
+/// terminals.
+///
+/// \param fd File descriptor to test
+///
+/// \return bool:
+/// - true if file descriptor is a terminal
+/// - false otherwise
+extern bool is_tty(int fd);
+
+
/// \brief Test if stdin is a terminal
///
/// If stdin is a terminal, an error message is printed and exit status set
diff --git a/src/xz/xz.1 b/src/xz/xz.1
index 73ca6ef..5b880e8 100644
--- a/src/xz/xz.1
+++ b/src/xz/xz.1
@@ -1,12 +1,10 @@
'\" t
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Authors: Lasse Collin
.\" Jia Tan
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
-.\"
-.TH XZ 1 "2023-07-17" "Tukaani" "XZ Utils"
+.TH XZ 1 "2024-04-08" "Tukaani" "XZ Utils"
.
.SH NAME
xz, unxz, xzcat, lzma, unlzma, lzcat \- Compress or decompress .xz and .lzma files
@@ -801,8 +799,6 @@ 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.
.IP \(bu 3
DecMem contains the decompressor memory requirements.
That is, the compression settings determine
@@ -811,6 +807,15 @@ 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.
.RE
+.IP ""
+Memory requirements of the multi-threaded mode are
+significantly higher than that of the single-threaded mode.
+With the default value of
+.BR \-\-block\-size ,
+each thread needs 3*3*DictSize plus CompMem or DecMem.
+For example, four threads with preset
+.B \-6
+needs 660\(en670\ MiB of memory.
.TP
.BR \-e ", " \-\-extreme
Use a slower variant of the selected compression preset level
@@ -902,50 +907,90 @@ 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.
+In multi-threaded mode,
+the sizes of the blocks are stored in the block headers.
+This size information is required for multi-threaded decompression.
.IP ""
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
+The lack of size information also means that
.B xz
won't be able decompress the files in multi-threaded mode.
.TP
-.BI \-\-block\-list= sizes
+.BI \-\-block\-list= items
When compressing to the
.B .xz
-format, start a new block after
+format, start a new block with an optional custom filter chain after
the given intervals of uncompressed data.
.IP ""
-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.
+The
+.I items
+are a comma-separated list.
+Each item consists of an optional filter chain number
+between 0 and 9 followed by a colon
+.RB ( : )
+and a required size of uncompressed data.
+Omitting an item (two or more consecutive commas) is a
+shorthand to use the size and filters of the previous item.
.IP ""
If the input file is bigger than the sum of
-.IR sizes ,
-the last value in
-.I sizes
-is repeated until the end of the file.
+the sizes in
+.IR items ,
+the last item is repeated until the end of the file.
A special value of
.B 0
-may be used as the last value to indicate that
+may be used as the last size to indicate that
the rest of the file should be encoded as a single block.
.IP ""
-If one specifies
-.I sizes
-that exceed the encoder's block size
+An alternative filter chain for each block can be
+specified in combination with the
+.BI \-\-filters1= filters
+\&...\&
+.BI \-\-filters9= filters
+options.
+These options define filter chains with an identifier
+between 1\(en9.
+Filter chain 0 can be used to refer to the default filter chain,
+which is the same as not specifying a filter chain.
+The filter chain identifier can be used before the uncompressed
+size, followed by a colon
+.RB ( : ).
+For example, if one specifies
+.B \-\-block\-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB
+then blocks will be created using:
+.RS
+.IP \(bu 3
+The filter chain specified by
+.B \-\-filters1
+and 2 MiB input
+.IP \(bu 3
+The filter chain specified by
+.B \-\-filters3
+and 2 MiB input
+.IP \(bu 3
+The filter chain specified by
+.B \-\-filters2
+and 4 MiB input
+.IP \(bu 3
+The filter chain specified by
+.B \-\-filters2
+and 4 MiB input
+.IP \(bu 3
+The default filter chain and 2 MiB input
+.IP \(bu 3
+The default filter chain and 4 MiB input for every block until
+end of input.
+.RE
+.IP ""
+If one specifies a size that exceeds the encoder's block size
(either the default value in threaded mode or
the value specified with \fB\-\-block\-size=\fIsize\fR),
the encoder will create additional blocks while
keeping the boundaries specified in
-.IR sizes .
+.IR items .
For example, if one specifies
.B \-\-block\-size=10MiB
.B \-\-block\-list=5MiB,10MiB,8MiB,12MiB,24MiB
@@ -1262,6 +1307,15 @@ meet this condition,
but files compressed in single-threaded mode don't even if
.BI \-\-block\-size= size
has been used.
+.IP ""
+The default value for
+.I threads
+is
+.BR 0 .
+In
+.B xz
+5.4.x and older the default is
+.BR 1 .
.
.SS "Custom compressor filter chains"
A custom filter chain allows specifying
@@ -1295,22 +1349,37 @@ in the chain.
Depending on the filter, this limitation is either inherent to
the filter design or exists to prevent security issues.
.PP
-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!
+A custom filter chain can be specified in two different ways.
+The options
+.BI \-\-filters= filters
+and
+.BI \-\-filters1= filters
+\&...\&
+.BI \-\-filters9= filters
+allow specifying an entire filter chain in one option using the
+liblzma filter string syntax.
+Alternatively, a filter chain can be specified by using one or more
+individual filter options in the order they are wanted in the filter chain.
+That is, the order of the individual filter options is significant!
When decoding raw streams
.RB ( \-\-format=raw ),
-the filter chain is specified in the same order as
+the filter chain must be specified in the same order as
it was specified when compressing.
-.PP
-Filters take filter-specific
+Any individual filter or preset options specified before the full
+chain option
+(\fB\-\-filters=\fIfilters\fR)
+will be forgotten.
+Individual filters specified after the full chain option will reset the
+filter chain.
+.PP
+Both the full and individual filter options 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.
+Every option has a default value, so
+specify those you want to change.
.PP
To see the whole filter chain and
.IR options ,
@@ -1321,6 +1390,45 @@ use
twice).
This works also for viewing the filter chain options used by presets.
.TP
+.BI \-\-filters= filters
+Specify the full filter chain or a preset in a single option.
+Each filter can be separated by spaces or two dashes
+.RB ( \-\- ).
+.I filters
+may need to be quoted on the shell command line so it is
+parsed as a single option.
+To denote
+.IR options ,
+use
+.B :
+or
+.BR = .
+A preset can be prefixed with a
+.B \-
+and followed with zero or more flags.
+The only supported flag is
+.B e
+to apply the same options as
+.BR \-\-extreme .
+.TP
+\fB\-\-filters1\fR=\fIfilters\fR ... \fB\-\-filters9\fR=\fIfilters
+Specify up to nine additional filter chains that can be used with
+.BR \-\-block\-list .
+.IP ""
+For example, when compressing an archive with executable files
+followed by text files, the executable part could use a filter
+chain with a BCJ filter and the text part only the LZMA2 filter.
+.TP
+.B \-\-filters-help
+Display a help message describing how to specify presets and
+custom filter chains in the
+.B \-\-filters
+and
+.BI \-\-filters1= filters
+\&...\&
+.BI \-\-filters9= filters
+options, and exit successfully.
+.TP
\fB\-\-lzma1\fR[\fB=\fIoptions\fR]
.PD 0
.TP
@@ -1704,6 +1812,8 @@ and
\fB\-\-ia64\fR[\fB=\fIoptions\fR]
.TP
\fB\-\-sparc\fR[\fB=\fIoptions\fR]
+.TP
+\fB\-\-riscv\fR[\fB=\fIoptions\fR]
.PD
Add a branch/call/jump (BCJ) filter to the filter chain.
These filters can be used only as a non-last filter
@@ -1762,6 +1872,7 @@ ARM64;4;4096-byte alignment is best
PowerPC;4;Big endian only
IA-64;16;Itanium
SPARC;4;
+RISC-V;2;
.TE
.RE
.RE
@@ -1770,14 +1881,38 @@ 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
-or even
+Examples:
+.RS
+.IP \(bu 3
+IA-64 filter has 16-byte alignment so
.B pb=4,lp=4,lc=0
+is good
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.
+.IP \(bu 3
+RISC-V code has 2-byte or 4-byte alignment
+depending on whether the file contains
+16-bit compressed instructions (the C extension).
+When 16-bit instructions are used,
+.B pb=2,lp=1,lc=3
+or
+.B pb=1,lp=1,lc=3
+is good.
+When 16-bit instructions aren't present,
+.B pb=2,lp=2,lc=2
+is the best.
+.B readelf \-h
+can be used to check if "RVC"
+appears on the "Flags" line.
+.IP \(bu 3
+ARM64 is always 4-byte aligned so
+.B pb=2,lp=2,lc=2
+is the best.
+.IP \(bu 3
+The x86 filter is an exception.
+It's usually good to stick to LZMA2's defaults
+.RB ( pb=2,lp=0,lc=3 )
+when compressing x86 executables.
+.RE
.IP ""
All BCJ filters support the same
.IR options :
@@ -1954,107 +2089,14 @@ easier to parse by other programs.
Currently
.B \-\-robot
is supported only together with
-.BR \-\-version ,
+.BR \-\-list ,
+.BR \-\-filters\-help ,
.BR \-\-info\-memory ,
and
-.BR \-\-list .
+.BR \-\-version .
It will be supported for compression and
decompression in the future.
.
-.SS Version
-.B "xz \-\-robot \-\-version"
-prints the version number of
-.B xz
-and liblzma in the following format:
-.PP
-.BI XZ_VERSION= XYYYZZZS
-.br
-.BI LIBLZMA_VERSION= XYYYZZZS
-.TP
-.I X
-Major version.
-.TP
-.I YYY
-Minor version.
-Even numbers are stable.
-Odd numbers are alpha or beta versions.
-.TP
-.I ZZZ
-Patch level for stable releases or
-just a counter for development releases.
-.TP
-.I S
-Stability.
-0 is alpha, 1 is beta, and 2 is stable.
-.I S
-should be always 2 when
-.I YYY
-is even.
-.PP
-.I XYYYZZZS
-are the same on both lines if
-.B xz
-and liblzma are from the same XZ Utils release.
-.PP
-Examples: 4.999.9beta is
-.B 49990091
-and
-5.0.0 is
-.BR 50000002 .
-.
-.SS "Memory limit information"
-.B "xz \-\-robot \-\-info\-memory"
-prints a single line with multiple tab-separated columns:
-.IP 1. 4
-Total amount of physical memory (RAM) in bytes.
-.IP 2. 4
-Memory usage limit for compression in bytes
-.RB ( \-\-memlimit\-compress ).
-A special value of
-.B 0
-indicates the default setting
-which for single-threaded mode is the same as no limit.
-.IP 3. 4
-Memory usage limit for decompression in bytes
-.RB ( \-\-memlimit\-decompress ).
-A special value of
-.B 0
-indicates the default setting
-which for single-threaded mode is the same as no limit.
-.IP 4. 4
-Since
-.B xz
-5.3.4alpha:
-Memory usage for multi-threaded decompression in bytes
-.RB ( \-\-memlimit\-mt\-decompress ).
-This is never zero because a system-specific default value
-shown in the column 5
-is used if no limit has been specified explicitly.
-This is also never greater than the value in the column 3
-even if a larger value has been specified with
-.BR \-\-memlimit\-mt\-decompress .
-.IP 5. 4
-Since
-.B xz
-5.3.4alpha:
-A system-specific default memory usage limit
-that is used to limit the number of threads
-when compressing with an automatic number of threads
-.RB ( \-\-threads=0 )
-and no memory usage limit has been specified
-.RB ( \-\-memlimit\-compress ).
-This is also used as the default value for
-.BR \-\-memlimit\-mt\-decompress .
-.IP 6. 4
-Since
-.B xz
-5.3.4alpha:
-Number of available processor threads.
-.PP
-In the future, the output of
-.B "xz \-\-robot \-\-info\-memory"
-may have more columns, but never more than a single line.
-.
.SS "List mode"
.B "xz \-\-robot \-\-list"
uses tab-separated output.
@@ -2339,6 +2381,127 @@ 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.
.
+.SS "Filters help"
+.B "xz \-\-robot \-\-filters-help"
+prints the supported filters in the following format:
+.PP
+\fIfilter\fB:\fIoption\fB=<\fIvalue\fB>,\fIoption\fB=<\fIvalue\fB>\fR...
+.TP
+.I filter
+Name of the filter
+.TP
+.I option
+Name of a filter specific option
+.TP
+.I value
+Numeric
+.I value
+ranges appear as
+\fB<\fImin\fB\-\fImax\fB>\fR.
+String
+.I value
+choices are shown within
+.B "< >"
+and separated by a
+.B |
+character.
+.PP
+Each filter is printed on its own line.
+.
+.SS "Memory limit information"
+.B "xz \-\-robot \-\-info\-memory"
+prints a single line with multiple tab-separated columns:
+.IP 1. 4
+Total amount of physical memory (RAM) in bytes.
+.IP 2. 4
+Memory usage limit for compression in bytes
+.RB ( \-\-memlimit\-compress ).
+A special value of
+.B 0
+indicates the default setting
+which for single-threaded mode is the same as no limit.
+.IP 3. 4
+Memory usage limit for decompression in bytes
+.RB ( \-\-memlimit\-decompress ).
+A special value of
+.B 0
+indicates the default setting
+which for single-threaded mode is the same as no limit.
+.IP 4. 4
+Since
+.B xz
+5.3.4alpha:
+Memory usage for multi-threaded decompression in bytes
+.RB ( \-\-memlimit\-mt\-decompress ).
+This is never zero because a system-specific default value
+shown in the column 5
+is used if no limit has been specified explicitly.
+This is also never greater than the value in the column 3
+even if a larger value has been specified with
+.BR \-\-memlimit\-mt\-decompress .
+.IP 5. 4
+Since
+.B xz
+5.3.4alpha:
+A system-specific default memory usage limit
+that is used to limit the number of threads
+when compressing with an automatic number of threads
+.RB ( \-\-threads=0 )
+and no memory usage limit has been specified
+.RB ( \-\-memlimit\-compress ).
+This is also used as the default value for
+.BR \-\-memlimit\-mt\-decompress .
+.IP 6. 4
+Since
+.B xz
+5.3.4alpha:
+Number of available processor threads.
+.PP
+In the future, the output of
+.B "xz \-\-robot \-\-info\-memory"
+may have more columns, but never more than a single line.
+.
+.SS Version
+.B "xz \-\-robot \-\-version"
+prints the version number of
+.B xz
+and liblzma in the following format:
+.PP
+.BI XZ_VERSION= XYYYZZZS
+.br
+.BI LIBLZMA_VERSION= XYYYZZZS
+.TP
+.I X
+Major version.
+.TP
+.I YYY
+Minor version.
+Even numbers are stable.
+Odd numbers are alpha or beta versions.
+.TP
+.I ZZZ
+Patch level for stable releases or
+just a counter for development releases.
+.TP
+.I S
+Stability.
+0 is alpha, 1 is beta, and 2 is stable.
+.I S
+should be always 2 when
+.I YYY
+is even.
+.PP
+.I XYYYZZZS
+are the same on both lines if
+.B xz
+and liblzma are from the same XZ Utils release.
+.PP
+Examples: 4.999.9beta is
+.B 49990091
+and
+5.0.0 is
+.BR 50000002 .
+.
.SH "EXIT STATUS"
.TP
.B 0
@@ -2391,7 +2554,7 @@ is run by a script or tool, for example, GNU
.RS
.PP
.nf
-.ft CW
+.ft CR
XZ_OPT=\-2v tar caf foo.tar.xz foo
.ft R
.fi
@@ -2411,7 +2574,7 @@ scripts one may use something like this:
.RS
.PP
.nf
-.ft CW
+.ft CR
XZ_OPT=${XZ_OPT\-"\-7e"}
export XZ_OPT
.ft R
@@ -2669,7 +2832,7 @@ if compression is successful:
.RS
.PP
.nf
-.ft CW
+.ft CR
xz foo
.ft R
.fi
@@ -2685,7 +2848,7 @@ even if decompression is successful:
.RS
.PP
.nf
-.ft CW
+.ft CR
xz \-dk bar.xz
.ft R
.fi
@@ -2703,7 +2866,7 @@ and 5\ MiB, respectively):
.RS
.PP
.nf
-.ft CW
+.ft CR
tar cf \- baz | xz \-4e > baz.tar.xz
.ft R
.fi
@@ -2714,7 +2877,7 @@ to standard output with a single command:
.RS
.PP
.nf
-.ft CW
+.ft CR
xz \-dcf a.txt b.txt.xz c.txt d.txt.lzma > abcd.txt
.ft R
.fi
@@ -2729,7 +2892,7 @@ can be used to parallelize compression of many files:
.RS
.PP
.nf
-.ft CW
+.ft CR
find . \-type f \e! \-name '*.xz' \-print0 \e
| xargs \-0r \-P4 \-n16 xz \-T1
.ft R
@@ -2769,7 +2932,7 @@ after compressing multiple files:
.RS
.PP
.nf
-.ft CW
+.ft CR
xz \-\-robot \-\-list *.xz | awk '/^totals/{print $5\-$4}'
.ft R
.fi
@@ -2789,7 +2952,7 @@ option:
.RS
.PP
.nf
-.ft CW
+.ft CR
if ! eval "$(xz \-\-robot \-\-version 2> /dev/null)" ||
[ "$XZ_VERSION" \-lt 50000002 ]; then
echo "Your xz is too old."
@@ -2805,7 +2968,7 @@ but if a limit has already been set, don't increase it:
.RS
.PP
.nf
-.ft CW
+.ft CR
NEWLIM=$((123 << 20))\ \ # 123 MiB
OLDLIM=$(xz \-\-robot \-\-info\-memory | cut \-f3)
if [ $OLDLIM \-eq 0 \-o $OLDLIM \-gt $NEWLIM ]; then
@@ -2858,7 +3021,7 @@ can be modified to use a bigger dictionary:
.RS
.PP
.nf
-.ft CW
+.ft CR
xz \-\-lzma2=preset=1,dict=32MiB foo.tar
.ft R
.fi
@@ -2886,7 +3049,7 @@ would use:
.RS
.PP
.nf
-.ft CW
+.ft CR
xz \-vv \-\-lzma2=dict=192MiB big_foo.tar
.ft R
.fi
@@ -2916,7 +3079,7 @@ using about 100\ KiB of memory.
.RS
.PP
.nf
-.ft CW
+.ft CR
xz \-\-check=crc32 \-\-lzma2=preset=6e,dict=64KiB foo
.ft R
.fi
@@ -2944,7 +3107,7 @@ slightly (like 0.1\ %) smaller file than
.RS
.PP
.nf
-.ft CW
+.ft CR
xz \-\-lzma2=preset=6e,pb=0,lc=4 source_code.tar
.ft R
.fi
@@ -2957,7 +3120,7 @@ using the x86 BCJ filter:
.RS
.PP
.nf
-.ft CW
+.ft CR
xz \-\-x86 \-\-lzma2 libfoo.so
.ft R
.fi
@@ -2992,7 +3155,7 @@ to LZMA2 to accommodate the three-byte alignment:
.RS
.PP
.nf
-.ft CW
+.ft CR
xz \-\-delta=dist=3 \-\-lzma2=pb=0 foo.tiff
.ft R
.fi
diff --git a/src/xz/xz_w32res.rc b/src/xz/xz_w32res.rc
index bad3020..e80903e 100644
--- a/src/xz/xz_w32res.rc
+++ b/src/xz/xz_w32res.rc
@@ -1,8 +1,7 @@
+/* SPDX-License-Identifier: 0BSD */
+
/*
* Author: Lasse Collin
- *
- * This file has been put into the public domain.
- * You can do whatever you want with this file.
*/
#define MY_TYPE VFT_APP
diff --git a/src/xzdec/Makefile.am b/src/xzdec/Makefile.am
index 90f1e92..31a6508 100644
--- a/src/xzdec/Makefile.am
+++ b/src/xzdec/Makefile.am
@@ -1,9 +1,5 @@
-##
+## SPDX-License-Identifier: 0BSD
## Author: Lasse Collin
-##
-## This file has been put into the public domain.
-## You can do whatever you want with this file.
-##
# Windows resource compiler support. It's fine to use xz_CPPFLAGS
# also for lzmadec.
diff --git a/src/xzdec/Makefile.in b/src/xzdec/Makefile.in
index b05cff1..7d44f9b 100644
--- a/src/xzdec/Makefile.in
+++ b/src/xzdec/Makefile.in
@@ -103,8 +103,8 @@ bin_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2)
@COND_LZMADEC_TRUE@@COND_XZDEC_TRUE@am__append_6 = lzmadec
subdir = src/xzdec
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_capsicum.m4 \
- $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/getopt.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
+ $(top_srcdir)/m4/build-to-host.m4 $(top_srcdir)/m4/getopt.m4 \
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/host-cpu-c-abi.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -264,7 +264,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CAPSICUM_LIB = @CAPSICUM_LIB@
CC = @CC@
CCAS = @CCAS@
CCASDEPMODE = @CCASDEPMODE@
@@ -393,6 +392,8 @@ install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
+localedir_c = @localedir_c@
+localedir_c_make = @localedir_c_make@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
diff --git a/src/xzdec/lzmadec_w32res.rc b/src/xzdec/lzmadec_w32res.rc
index b85962d..b4b89b1 100644
--- a/src/xzdec/lzmadec_w32res.rc
+++ b/src/xzdec/lzmadec_w32res.rc
@@ -1,8 +1,7 @@
+/* SPDX-License-Identifier: 0BSD */
+
/*
* Author: Lasse Collin
- *
- * This file has been put into the public domain.
- * You can do whatever you want with this file.
*/
#define MY_TYPE VFT_APP
diff --git a/src/xzdec/xzdec.1 b/src/xzdec/xzdec.1
index 78bc9b4..5198efb 100644
--- a/src/xzdec/xzdec.1
+++ b/src/xzdec/xzdec.1
@@ -1,10 +1,8 @@
+.\" SPDX-License-Identifier: 0BSD
.\"
.\" Author: Lasse Collin
.\"
-.\" This file has been put into the public domain.
-.\" You can do whatever you want with this file.
-.\"
-.TH XZDEC 1 "2017-04-19" "Tukaani" "XZ Utils"
+.TH XZDEC 1 "2024-04-08" "Tukaani" "XZ Utils"
.SH NAME
xzdec, lzmadec \- Small .xz and .lzma decompressors
.SH SYNOPSIS
diff --git a/src/xzdec/xzdec.c b/src/xzdec/xzdec.c
index 556c548..4d88174 100644
--- a/src/xzdec/xzdec.c
+++ b/src/xzdec/xzdec.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file xzdec.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "sysdefs.h"
@@ -16,7 +15,30 @@
#include <stdarg.h>
#include <errno.h>
#include <stdio.h>
-#include <unistd.h>
+
+#ifndef _MSC_VER
+# include <unistd.h>
+#endif
+
+#ifdef HAVE_CAP_RIGHTS_LIMIT
+# include <sys/capsicum.h>
+#endif
+
+#ifdef HAVE_LINUX_LANDLOCK
+# include <linux/landlock.h>
+# include <sys/prctl.h>
+# include <sys/syscall.h>
+# ifdef LANDLOCK_ACCESS_NET_BIND_TCP
+# define LANDLOCK_ABI_MAX 4
+# else
+# define LANDLOCK_ABI_MAX 3
+# endif
+#endif
+
+#if defined(HAVE_CAP_RIGHTS_LIMIT) || defined(HAVE_PLEDGE) \
+ || defined(HAVE_LINUX_LANDLOCK)
+# define ENABLE_SANDBOX 1
+#endif
#include "getopt.h"
#include "tuklib_progname.h"
@@ -25,6 +47,10 @@
#ifdef TUKLIB_DOSLIKE
# include <fcntl.h>
# include <io.h>
+# ifdef _MSC_VER
+# define fileno _fileno
+# define setmode _setmode
+# endif
#endif
@@ -273,9 +299,123 @@ uncompress(lzma_stream *strm, FILE *file, const char *filename)
}
+#ifdef ENABLE_SANDBOX
+static void
+sandbox_enter(int src_fd)
+{
+#if defined(HAVE_CAP_RIGHTS_LIMIT)
+ // Capsicum needs FreeBSD 10.2 or later.
+ cap_rights_t rights;
+
+ if (cap_enter())
+ goto error;
+
+ if (cap_rights_limit(src_fd, cap_rights_init(&rights, CAP_READ)))
+ goto error;
+
+ // If not reading from stdin, remove all capabilities from it.
+ if (src_fd != STDIN_FILENO && cap_rights_limit(
+ STDIN_FILENO, cap_rights_clear(&rights)))
+ goto error;
+
+ if (cap_rights_limit(STDOUT_FILENO, cap_rights_init(&rights,
+ CAP_WRITE)))
+ goto error;
+
+ if (cap_rights_limit(STDERR_FILENO, cap_rights_init(&rights,
+ CAP_WRITE)))
+ goto error;
+
+#elif defined(HAVE_PLEDGE)
+ // pledge() was introduced in OpenBSD 5.9.
+ if (pledge("stdio", ""))
+ goto error;
+
+ (void)src_fd;
+
+#elif defined(HAVE_LINUX_LANDLOCK)
+ int landlock_abi = syscall(SYS_landlock_create_ruleset,
+ (void *)NULL, 0, LANDLOCK_CREATE_RULESET_VERSION);
+
+ if (landlock_abi > 0) {
+ if (landlock_abi > LANDLOCK_ABI_MAX)
+ landlock_abi = LANDLOCK_ABI_MAX;
+
+ const struct landlock_ruleset_attr attr = {
+ .handled_access_fs = (1ULL
+ << (12 + my_min(3, landlock_abi))) - 1,
+# if LANDLOCK_ABI_MAX >= 4
+ .handled_access_net = landlock_abi < 4 ? 0 :
+ (LANDLOCK_ACCESS_NET_BIND_TCP
+ | LANDLOCK_ACCESS_NET_CONNECT_TCP),
+# endif
+ };
+
+ const int ruleset_fd = syscall(SYS_landlock_create_ruleset,
+ &attr, sizeof(attr), 0U);
+ if (ruleset_fd < 0)
+ goto error;
+
+ // All files we need should have already been opened. Thus,
+ // we don't need to add any rules using landlock_add_rule(2)
+ // before activating the sandbox.
+ if (syscall(SYS_landlock_restrict_self, ruleset_fd, 0U) != 0)
+ goto error;
+ }
+
+ (void)src_fd;
+
+#else
+# error ENABLE_SANDBOX is defined but no sandboxing method was found.
+#endif
+
+ return;
+
+error:
+#ifdef HAVE_CAP_RIGHTS_LIMIT
+ // If a kernel is configured without capability mode support or
+ // used in an emulator that does not implement the capability
+ // system calls, then the Capsicum system calls will fail and set
+ // errno to ENOSYS. In that case xzdec will silently run without
+ // the sandbox.
+ if (errno == ENOSYS)
+ return;
+#endif
+
+ my_errorf("Failed to enable the sandbox");
+ exit(EXIT_FAILURE);
+}
+#endif
+
+
int
main(int argc, char **argv)
{
+#ifdef HAVE_PLEDGE
+ // OpenBSD's pledge(2) sandbox.
+ // Initially enable the sandbox slightly more relaxed so that
+ // the process can still open files. This allows the sandbox to
+ // be enabled when parsing command line arguments and decompressing
+ // all files (the more strict sandbox only restricts the last file
+ // that is decompressed).
+ if (pledge("stdio rpath", "")) {
+ my_errorf("Failed to enable the sandbox");
+ exit(EXIT_FAILURE);
+ }
+#endif
+
+#ifdef HAVE_LINUX_LANDLOCK
+ // Prevent the process from gaining new privileges. This must be done
+ // before landlock_restrict_self(2) but since we will never need new
+ // privileges, this call can be done here already.
+ //
+ // This is supported since Linux 3.5. Ignore the return value to
+ // keep compatibility with old kernels. landlock_restrict_self(2)
+ // will fail if the no_new_privs attribute isn't set, thus if prctl()
+ // fails here the error will still be detected when it matters.
+ (void)prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0);
+#endif
+
// Initialize progname which we will be used in error messages.
tuklib_progname_init(argv);
@@ -295,24 +435,42 @@ main(int argc, char **argv)
if (optind == argc) {
// No filenames given, decode from stdin.
+#ifdef ENABLE_SANDBOX
+ sandbox_enter(STDIN_FILENO);
+#endif
uncompress(&strm, stdin, "(stdin)");
} else {
// Loop through the filenames given on the command line.
do {
+ FILE *src_file;
+ const char *src_name;
+
// "-" indicates stdin.
if (strcmp(argv[optind], "-") == 0) {
- uncompress(&strm, stdin, "(stdin)");
+ src_file = stdin;
+ src_name = "(stdin)";
} else {
- FILE *file = fopen(argv[optind], "rb");
- if (file == NULL) {
- my_errorf("%s: %s", argv[optind],
+ src_name = argv[optind];
+ src_file = fopen(src_name, "rb");
+ if (src_file == NULL) {
+ my_errorf("%s: %s", src_name,
strerror(errno));
exit(EXIT_FAILURE);
}
-
- uncompress(&strm, file, argv[optind]);
- fclose(file);
}
+#ifdef ENABLE_SANDBOX
+ // Enable the strict sandbox for the last file.
+ // Then the process can no longer open additional
+ // files. The typical xzdec use case is to decompress
+ // a single file so this way the strictest sandboxing
+ // is used in most cases.
+ if (optind == argc - 1)
+ sandbox_enter(fileno(src_file));
+#endif
+ uncompress(&strm, src_file, src_name);
+
+ if (src_file != stdin)
+ (void)fclose(src_file);
} while (++optind < argc);
}
diff --git a/src/xzdec/xzdec_w32res.rc b/src/xzdec/xzdec_w32res.rc
index 0e26a22..fdbb102 100644
--- a/src/xzdec/xzdec_w32res.rc
+++ b/src/xzdec/xzdec_w32res.rc
@@ -1,8 +1,7 @@
+/* SPDX-License-Identifier: 0BSD */
+
/*
* Author: Lasse Collin
- *
- * This file has been put into the public domain.
- * You can do whatever you want with this file.
*/
#define MY_TYPE VFT_APP
diff --git a/tests/Makefile.am b/tests/Makefile.am
index ebc33a7..d85328d 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,26 +1,19 @@
-##
+## SPDX-License-Identifier: 0BSD
## Author: Lasse Collin
-##
-## This file has been put into the public domain.
-## You can do whatever you want with this file.
-##
EXTRA_DIST = \
files \
ossfuzz \
+ tests.cmake \
tuktest.h \
tests.h \
test_files.sh \
test_compress.sh \
- test_compress_prepared_bcj_sparc \
- test_compress_prepared_bcj_x86 \
test_compress_generated_abc \
test_compress_generated_random \
test_compress_generated_text \
test_scripts.sh \
- bcj_test.c \
- compress_prepared_bcj_sparc \
- compress_prepared_bcj_x86 \
+ test_suffix.sh \
xzgrep_expected_output
AM_CPPFLAGS = \
@@ -61,12 +54,16 @@ TESTS = \
test_lzip_decoder \
test_vli \
test_files.sh \
- test_compress_prepared_bcj_sparc \
- test_compress_prepared_bcj_x86 \
+ test_suffix.sh \
test_compress_generated_abc \
test_compress_generated_random \
test_compress_generated_text
+if COND_MICROLZMA
+check_PROGRAMS += test_microlzma
+TESTS += test_microlzma
+endif
+
if COND_SCRIPTS
TESTS += test_scripts.sh
endif
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 46cf0f0..5c80f0b 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -93,22 +93,23 @@ check_PROGRAMS = create_compress_files$(EXEEXT) test_check$(EXEEXT) \
test_block_header$(EXEEXT) test_index$(EXEEXT) \
test_index_hash$(EXEEXT) test_bcj_exact_size$(EXEEXT) \
test_memlimit$(EXEEXT) test_lzip_decoder$(EXEEXT) \
- test_vli$(EXEEXT)
+ test_vli$(EXEEXT) $(am__EXEEXT_1)
TESTS = test_check$(EXEEXT) test_hardware$(EXEEXT) \
test_stream_flags$(EXEEXT) test_filter_flags$(EXEEXT) \
test_filter_str$(EXEEXT) test_block_header$(EXEEXT) \
test_index$(EXEEXT) test_index_hash$(EXEEXT) \
test_bcj_exact_size$(EXEEXT) test_memlimit$(EXEEXT) \
test_lzip_decoder$(EXEEXT) test_vli$(EXEEXT) test_files.sh \
- test_compress_prepared_bcj_sparc \
- test_compress_prepared_bcj_x86 test_compress_generated_abc \
+ test_suffix.sh test_compress_generated_abc \
test_compress_generated_random test_compress_generated_text \
- $(am__append_1)
-@COND_SCRIPTS_TRUE@am__append_1 = test_scripts.sh
+ $(am__EXEEXT_1) $(am__append_3)
+@COND_MICROLZMA_TRUE@am__append_1 = test_microlzma
+@COND_MICROLZMA_TRUE@am__append_2 = test_microlzma
+@COND_SCRIPTS_TRUE@am__append_3 = test_scripts.sh
subdir = tests
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_capsicum.m4 \
- $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/getopt.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
+ $(top_srcdir)/m4/build-to-host.m4 $(top_srcdir)/m4/getopt.m4 \
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/host-cpu-c-abi.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
@@ -131,6 +132,7 @@ mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
+@COND_MICROLZMA_TRUE@am__EXEEXT_1 = test_microlzma$(EXEEXT)
create_compress_files_SOURCES = create_compress_files.c
create_compress_files_OBJECTS = create_compress_files.$(OBJEXT)
create_compress_files_LDADD = $(LDADD)
@@ -191,6 +193,11 @@ test_memlimit_OBJECTS = test_memlimit.$(OBJEXT)
test_memlimit_LDADD = $(LDADD)
test_memlimit_DEPENDENCIES = $(top_builddir)/src/liblzma/liblzma.la \
$(am__DEPENDENCIES_1)
+test_microlzma_SOURCES = test_microlzma.c
+test_microlzma_OBJECTS = test_microlzma.$(OBJEXT)
+test_microlzma_LDADD = $(LDADD)
+test_microlzma_DEPENDENCIES = $(top_builddir)/src/liblzma/liblzma.la \
+ $(am__DEPENDENCIES_1)
test_stream_flags_SOURCES = test_stream_flags.c
test_stream_flags_OBJECTS = test_stream_flags.$(OBJEXT)
test_stream_flags_LDADD = $(LDADD)
@@ -223,7 +230,8 @@ am__depfiles_remade = ./$(DEPDIR)/create_compress_files.Po \
./$(DEPDIR)/test_filter_str.Po ./$(DEPDIR)/test_hardware.Po \
./$(DEPDIR)/test_index.Po ./$(DEPDIR)/test_index_hash.Po \
./$(DEPDIR)/test_lzip_decoder.Po ./$(DEPDIR)/test_memlimit.Po \
- ./$(DEPDIR)/test_stream_flags.Po ./$(DEPDIR)/test_vli.Po
+ ./$(DEPDIR)/test_microlzma.Po ./$(DEPDIR)/test_stream_flags.Po \
+ ./$(DEPDIR)/test_vli.Po
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -247,12 +255,12 @@ SOURCES = create_compress_files.c test_bcj_exact_size.c \
test_block_header.c test_check.c test_filter_flags.c \
test_filter_str.c test_hardware.c test_index.c \
test_index_hash.c test_lzip_decoder.c test_memlimit.c \
- test_stream_flags.c test_vli.c
+ test_microlzma.c test_stream_flags.c test_vli.c
DIST_SOURCES = create_compress_files.c test_bcj_exact_size.c \
test_block_header.c test_check.c test_filter_flags.c \
test_filter_str.c test_hardware.c test_index.c \
test_index_hash.c test_lzip_decoder.c test_memlimit.c \
- test_stream_flags.c test_vli.c
+ test_microlzma.c test_stream_flags.c test_vli.c
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@@ -494,7 +502,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CAPSICUM_LIB = @CAPSICUM_LIB@
CC = @CC@
CCAS = @CCAS@
CCASDEPMODE = @CCASDEPMODE@
@@ -623,6 +630,8 @@ install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
+localedir_c = @localedir_c@
+localedir_c_make = @localedir_c_make@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
@@ -644,19 +653,16 @@ xz = @xz@
EXTRA_DIST = \
files \
ossfuzz \
+ tests.cmake \
tuktest.h \
tests.h \
test_files.sh \
test_compress.sh \
- test_compress_prepared_bcj_sparc \
- test_compress_prepared_bcj_x86 \
test_compress_generated_abc \
test_compress_generated_random \
test_compress_generated_text \
test_scripts.sh \
- bcj_test.c \
- compress_prepared_bcj_sparc \
- compress_prepared_bcj_x86 \
+ test_suffix.sh \
xzgrep_expected_output
AM_CPPFLAGS = \
@@ -752,6 +758,10 @@ test_memlimit$(EXEEXT): $(test_memlimit_OBJECTS) $(test_memlimit_DEPENDENCIES) $
@rm -f test_memlimit$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_memlimit_OBJECTS) $(test_memlimit_LDADD) $(LIBS)
+test_microlzma$(EXEEXT): $(test_microlzma_OBJECTS) $(test_microlzma_DEPENDENCIES) $(EXTRA_test_microlzma_DEPENDENCIES)
+ @rm -f test_microlzma$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_microlzma_OBJECTS) $(test_microlzma_LDADD) $(LIBS)
+
test_stream_flags$(EXEEXT): $(test_stream_flags_OBJECTS) $(test_stream_flags_DEPENDENCIES) $(EXTRA_test_stream_flags_DEPENDENCIES)
@rm -f test_stream_flags$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_stream_flags_OBJECTS) $(test_stream_flags_LDADD) $(LIBS)
@@ -777,6 +787,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_index_hash.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_lzip_decoder.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_memlimit.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_microlzma.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_stream_flags.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_vli.Po@am__quote@ # am--include-marker
@@ -1097,16 +1108,9 @@ test_files.sh.log: test_files.sh
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
-test_compress_prepared_bcj_sparc.log: test_compress_prepared_bcj_sparc
- @p='test_compress_prepared_bcj_sparc'; \
- b='test_compress_prepared_bcj_sparc'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-test_compress_prepared_bcj_x86.log: test_compress_prepared_bcj_x86
- @p='test_compress_prepared_bcj_x86'; \
- b='test_compress_prepared_bcj_x86'; \
+test_suffix.sh.log: test_suffix.sh
+ @p='test_suffix.sh'; \
+ b='test_suffix.sh'; \
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
@@ -1132,6 +1136,13 @@ test_compress_generated_text.log: test_compress_generated_text
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+test_microlzma.log: test_microlzma$(EXEEXT)
+ @p='test_microlzma$(EXEEXT)'; \
+ b='test_microlzma'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
test_scripts.sh.log: test_scripts.sh
@p='test_scripts.sh'; \
b='test_scripts.sh'; \
@@ -1242,6 +1253,7 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/test_index_hash.Po
-rm -f ./$(DEPDIR)/test_lzip_decoder.Po
-rm -f ./$(DEPDIR)/test_memlimit.Po
+ -rm -f ./$(DEPDIR)/test_microlzma.Po
-rm -f ./$(DEPDIR)/test_stream_flags.Po
-rm -f ./$(DEPDIR)/test_vli.Po
-rm -f Makefile
@@ -1300,6 +1312,7 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/test_index_hash.Po
-rm -f ./$(DEPDIR)/test_lzip_decoder.Po
-rm -f ./$(DEPDIR)/test_memlimit.Po
+ -rm -f ./$(DEPDIR)/test_microlzma.Po
-rm -f ./$(DEPDIR)/test_stream_flags.Po
-rm -f ./$(DEPDIR)/test_vli.Po
-rm -f Makefile
diff --git a/tests/bcj_test.c b/tests/bcj_test.c
deleted file mode 100644
index 05de38a..0000000
--- a/tests/bcj_test.c
+++ /dev/null
@@ -1,65 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//
-/// \file bcj_test.c
-/// \brief Source code of compress_prepared_bcj_*
-///
-/// This is a simple program that should make the compiler to generate
-/// PC-relative branches, jumps, and calls. The compiled files can then
-/// be used to test the branch conversion filters. Note that this program
-/// itself does nothing useful.
-///
-/// Compiling: gcc -std=c99 -fPIC -c bcj_test.c
-/// Don't optimize or strip.
-//
-// Author: Lasse Collin
-//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-extern int jump(int a, int b);
-
-
-extern int
-call(int a, int b)
-{
- if (a < b)
- a = jump(a, b);
-
- return a;
-}
-
-
-extern int
-jump(int a, int b)
-{
- // The loop generates conditional jump backwards.
- while (1) {
- if (a < b) {
- a *= 2;
- a += 3 * b;
- break;
- } else {
- // Put enough code here to prevent JMP SHORT on x86.
- a += b;
- a /= 2;
- b += b % 5;
- a -= b / 3;
- b = 2 * b + a - 1;
- a *= b + a + 1;
- b += a - 1;
- a += b * 2 - a / 5;
- }
- }
-
- return a;
-}
-
-
-int
-main(int argc, char **argv)
-{
- int a = call(argc, argc + 1);
- return a == 0;
-}
diff --git a/tests/compress_prepared_bcj_sparc b/tests/compress_prepared_bcj_sparc
deleted file mode 100644
index 86ea7dd..0000000
--- a/tests/compress_prepared_bcj_sparc
+++ /dev/null
Binary files differ
diff --git a/tests/compress_prepared_bcj_x86 b/tests/compress_prepared_bcj_x86
deleted file mode 100644
index bcc546f..0000000
--- a/tests/compress_prepared_bcj_x86
+++ /dev/null
Binary files differ
diff --git a/tests/create_compress_files.c b/tests/create_compress_files.c
index 76aa3e3..2106ac8 100644
--- a/tests/create_compress_files.c
+++ b/tests/create_compress_files.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file create_compress_files.c
@@ -8,9 +10,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "sysdefs.h"
diff --git a/tests/files/README b/tests/files/README
index 119cac4..584e6ba 100644
--- a/tests/files/README
+++ b/tests/files/README
@@ -1,6 +1,6 @@
-.xz and .lzma Test Files
-------------------------
+.xz, .lzma, and .lz Test Files
+------------------------------
0. Introduction
@@ -8,7 +8,8 @@
.lzma (LZMA_Alone), and .lz (lzip) files in decoder implementations.
Many of the files have been created by hand with a hex editor, thus
there is no better "source code" than the files themselves. All the
- test files and this README have been put into the public domain.
+ test files and this README may be distributed under the terms of
+ the BSD Zero Clause License (0BSD).
1. File Types
@@ -65,20 +66,25 @@
good-1-delta-lzma2.tiff.xz is an image file that compresses
better with Delta+LZMA2 than with plain LZMA2.
- good-1-x86-lzma2.xz uses the x86 filter (BCJ) and LZMA2. The
- uncompressed file is compress_prepared_bcj_x86 found from the tests
- directory.
-
- good-1-sparc-lzma2.xz uses the SPARC filter and LZMA2. The
- uncompressed file is compress_prepared_bcj_sparc found from the tests
- directory.
-
good-1-arm64-lzma2-1.xz uses the ARM64 filter and LZMA2. The
uncompressed data is constructed so that it tests integer
- wrap around and sign extension.
+ wrap around and sign extension. To recreate the file, compress
+ using XZ Utils 5.4.x (newer may or may not work too):
+
+ ./debug/testfilegen-arm64 \
+ | xz -T1 -Ccrc32 --arm64 \
+ --lzma2=dict=64KiB,lp=2,lc=2 \
+ > good-1-arm64-lzma2-1.xz
good-1-arm64-lzma2-2.xz is like good-1-arm64-lzma2-1.xz but with
non-zero start offset. XZ Embedded doesn't support this file.
+ To recreate the file, compress using XZ Utils 5.4.x (newer may or
+ may not work too):
+
+ ./debug/testfilegen-arm64 \
+ | xz -T1 -Ccrc32 --arm64=start=4294963200 \
+ --lzma2=dict=64KiB,lp=2,lc=2 \
+ > good-1-arm64-lzma2-2.xz
good-1-lzma2-1.xz has two LZMA2 chunks, of which the second sets
new properties.
diff --git a/tests/files/good-1-sparc-lzma2.xz b/tests/files/good-1-sparc-lzma2.xz
deleted file mode 100644
index 4532bc6..0000000
--- a/tests/files/good-1-sparc-lzma2.xz
+++ /dev/null
Binary files differ
diff --git a/tests/files/good-1-x86-lzma2.xz b/tests/files/good-1-x86-lzma2.xz
deleted file mode 100644
index 8053917..0000000
--- a/tests/files/good-1-x86-lzma2.xz
+++ /dev/null
Binary files differ
diff --git a/tests/ossfuzz/Makefile b/tests/ossfuzz/Makefile
index 747fb66..742e063 100644
--- a/tests/ossfuzz/Makefile
+++ b/tests/ossfuzz/Makefile
@@ -1,7 +1,17 @@
-fuzz: fuzz.c
- $(CC) $(CFLAGS) -c fuzz.c -I ../../src/liblzma/api/
- $(CXX) $(CXXFLAGS) $(LIB_FUZZING_ENGINE) fuzz.o -o $(OUT)/fuzz \
- ../../src/liblzma/.libs/liblzma.a
+# SPDX-License-Identifier: 0BSD
+FUZZ_TARGET_SRCS = $(wildcard *.c)
+FUZZ_TARGET_BINS = $(FUZZ_TARGET_SRCS:.c=)
+
+all: $(FUZZ_TARGET_BINS)
+
+%: %.c
+ $(CC) $(CFLAGS) -c $< -I ../../src/liblzma/api/ ;
+ $(CXX) $(CXXFLAGS) $(LIB_FUZZING_ENGINE) $(<:.c=.o) -o $(OUT)/$@ \
+ ../../src/liblzma/.libs/liblzma.a ;
+
+# The generated binaries are not removed, just the object files. The
+# binaries are created to the $(OUT) directory and must be removed by the
+# fuzzing framework.
clean:
rm -f *.o
diff --git a/tests/ossfuzz/config/fuzz.dict b/tests/ossfuzz/config/fuzz.dict
deleted file mode 100644
index 932d67c..0000000
--- a/tests/ossfuzz/config/fuzz.dict
+++ /dev/null
@@ -1,2 +0,0 @@
-"\xFD7zXZ\x00"
-"YZ"
diff --git a/tests/ossfuzz/config/fuzz.options b/tests/ossfuzz/config/fuzz.options
deleted file mode 100644
index d59dfc1..0000000
--- a/tests/ossfuzz/config/fuzz.options
+++ /dev/null
@@ -1,2 +0,0 @@
-[libfuzzer]
-dict = fuzz.dict
diff --git a/tests/ossfuzz/config/fuzz_decode_alone.options b/tests/ossfuzz/config/fuzz_decode_alone.options
new file mode 100644
index 0000000..1351d96
--- /dev/null
+++ b/tests/ossfuzz/config/fuzz_decode_alone.options
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: 0BSD
+
+[libfuzzer]
+max_len = 4096
+dict = fuzz_lzma.dict
diff --git a/tests/ossfuzz/config/fuzz_decode_stream.options b/tests/ossfuzz/config/fuzz_decode_stream.options
new file mode 100644
index 0000000..bbf43ac
--- /dev/null
+++ b/tests/ossfuzz/config/fuzz_decode_stream.options
@@ -0,0 +1,4 @@
+# SPDX-License-Identifier: 0BSD
+
+[libfuzzer]
+dict = fuzz_xz.dict
diff --git a/tests/ossfuzz/config/fuzz_encode_stream.options b/tests/ossfuzz/config/fuzz_encode_stream.options
new file mode 100644
index 0000000..86d4f0c
--- /dev/null
+++ b/tests/ossfuzz/config/fuzz_encode_stream.options
@@ -0,0 +1,4 @@
+# SPDX-License-Identifier: 0BSD
+
+[libfuzzer]
+max_len = 4096
diff --git a/tests/ossfuzz/config/fuzz_lzma.dict b/tests/ossfuzz/config/fuzz_lzma.dict
new file mode 100644
index 0000000..b9d5dff
--- /dev/null
+++ b/tests/ossfuzz/config/fuzz_lzma.dict
@@ -0,0 +1,22 @@
+# SPDX-License-Identifier: 0BSD
+
+# first 5 header bytes of .lzma archives based on the info from
+# /doc/lzma-file-format.txt
+
+# byte 0 is created by encoding LZMA property values (lc, lp, pb)
+# using the algorithm described in the documentation above.
+
+# lc=3, lp=0, pb=2 and dictionary size = 0x00100000
+"\x5d\x00\x00\x10\x00"
+
+# lc=3, lp=1, pb=3 and dictionary size = 0x00100000
+"\x93\x00\x00\x10\x00"
+
+# lc=2, lp=2, pb=4 and dictionary size = 0x00100000
+"\xc8\x00\x00\x10\x00"
+
+# lc=1, lp=3, pb=1 and dictionary size = 0x00200000
+"\x49\x00\x00\x20\x00"
+
+# lc=0, lp=4, pb=0 and dictionary size = 0x00200000
+"\x24\x00\x00\x20\x00"
diff --git a/tests/ossfuzz/config/fuzz_xz.dict b/tests/ossfuzz/config/fuzz_xz.dict
new file mode 100644
index 0000000..6ba4f24
--- /dev/null
+++ b/tests/ossfuzz/config/fuzz_xz.dict
@@ -0,0 +1,4 @@
+# SPDX-License-Identifier: 0BSD
+
+"\xFD7zXZ\x00"
+"YZ"
diff --git a/tests/ossfuzz/fuzz.c b/tests/ossfuzz/fuzz.c
deleted file mode 100644
index 6d89930..0000000
--- a/tests/ossfuzz/fuzz.c
+++ /dev/null
@@ -1,82 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//
-/// \file fuzz.c
-/// \brief Fuzz test program for liblzma
-//
-// Author: Lasse Collin
-//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#include <inttypes.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include "lzma.h"
-
-
-// Output buffer for decompressed data. This is write only; nothing cares
-// about the actual data written here.
-static uint8_t outbuf[4096];
-
-
-extern int
-LLVMFuzzerTestOneInput(const uint8_t *inbuf, size_t inbuf_size)
-{
- // Some header values can make liblzma allocate a lot of RAM
- // (up to about 4 GiB with liblzma 5.2.x). We set a limit here to
- // prevent extreme allocations when fuzzing.
- const uint64_t memlimit = 300 << 20; // 300 MiB
-
- // Initialize a .xz decoder using the above memory usage limit.
- // Enable support for concatenated .xz files which is used when
- // decompressing regular .xz files (instead of data embedded inside
- // some other file format). Integrity checks on the uncompressed
- // data are ignored to make fuzzing more effective (incorrect check
- // values won't prevent the decoder from processing more input).
- //
- // The flag LZMA_IGNORE_CHECK doesn't disable verification of header
- // CRC32 values. Those checks are disabled when liblzma is built
- // with the #define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION.
- lzma_stream strm = LZMA_STREAM_INIT;
- lzma_ret ret = lzma_stream_decoder(&strm, memlimit,
- LZMA_CONCATENATED | LZMA_IGNORE_CHECK);
- if (ret != LZMA_OK) {
- // This should never happen unless the system has
- // no free memory or address space to allow the small
- // allocations that the initialization requires.
- fprintf(stderr, "lzma_stream_decoder() failed (%d)\n", ret);
- abort();
- }
-
- // Give the whole input buffer at once to liblzma.
- // Output buffer isn't initialized as liblzma only writes to it.
- strm.next_in = inbuf;
- strm.avail_in = inbuf_size;
- strm.next_out = outbuf;
- strm.avail_out = sizeof(outbuf);
-
- while ((ret = lzma_code(&strm, LZMA_FINISH)) == LZMA_OK) {
- if (strm.avail_out == 0) {
- // outbuf became full. We don't care about the
- // uncompressed data there, so we simply reuse
- // the outbuf and overwrite the old data.
- strm.next_out = outbuf;
- strm.avail_out = sizeof(outbuf);
- }
- }
-
- // LZMA_PROG_ERROR should never happen as long as the code calling
- // the liblzma functions is correct. Thus LZMA_PROG_ERROR is a sign
- // of a bug in either this function or in liblzma.
- if (ret == LZMA_PROG_ERROR) {
- fprintf(stderr, "lzma_code() returned LZMA_PROG_ERROR\n");
- abort();
- }
-
- // Free the allocated memory.
- lzma_end(&strm);
-
- return 0;
-}
diff --git a/tests/ossfuzz/fuzz_common.h b/tests/ossfuzz/fuzz_common.h
new file mode 100644
index 0000000..4537f1b
--- /dev/null
+++ b/tests/ossfuzz/fuzz_common.h
@@ -0,0 +1,55 @@
+// SPDX-License-Identifier: 0BSD
+
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file fuzz_common.h
+/// \brief Common macros and functions needed by the fuzz targets
+//
+// Authors: Maksym Vatsyk
+// Lasse Collin
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include <inttypes.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "lzma.h"
+
+// Some header values can make liblzma allocate a lot of RAM
+// (up to about 4 GiB with liblzma 5.2.x). We set a limit here to
+// prevent extreme allocations when fuzzing.
+#define MEM_LIMIT (300 << 20) // 300 MiB
+
+
+static void
+fuzz_code(lzma_stream *stream, const uint8_t *inbuf, size_t inbuf_size) {
+ // Output buffer for decompressed data. This is write only; nothing
+ // cares about the actual data written here.
+ uint8_t outbuf[4096];
+
+ // Give the whole input buffer at once to liblzma.
+ // Output buffer isn't initialized as liblzma only writes to it.
+ stream->next_in = inbuf;
+ stream->avail_in = inbuf_size;
+ stream->next_out = outbuf;
+ stream->avail_out = sizeof(outbuf);
+
+ lzma_ret ret;
+ while ((ret = lzma_code(stream, LZMA_FINISH)) == LZMA_OK) {
+ if (stream->avail_out == 0) {
+ // outbuf became full. We don't care about the
+ // uncompressed data there, so we simply reuse
+ // the outbuf and overwrite the old data.
+ stream->next_out = outbuf;
+ stream->avail_out = sizeof(outbuf);
+ }
+ }
+
+ // LZMA_PROG_ERROR should never happen as long as the code calling
+ // the liblzma functions is correct. Thus LZMA_PROG_ERROR is a sign
+ // of a bug in either this function or in liblzma.
+ if (ret == LZMA_PROG_ERROR) {
+ fprintf(stderr, "lzma_code() returned LZMA_PROG_ERROR\n");
+ abort();
+ }
+}
diff --git a/tests/ossfuzz/fuzz_decode_alone.c b/tests/ossfuzz/fuzz_decode_alone.c
new file mode 100644
index 0000000..1ef2f9e
--- /dev/null
+++ b/tests/ossfuzz/fuzz_decode_alone.c
@@ -0,0 +1,41 @@
+// SPDX-License-Identifier: 0BSD
+
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file fuzz_decode_alone.c
+/// \brief Fuzz test program for liblzma .lzma decoding
+//
+// Authors: Maksym Vatsyk
+// Lasse Collin
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include <inttypes.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "lzma.h"
+#include "fuzz_common.h"
+
+
+extern int
+LLVMFuzzerTestOneInput(const uint8_t *inbuf, size_t inbuf_size)
+{
+ lzma_stream strm = LZMA_STREAM_INIT;
+ // Initialize a LZMA alone decoder using the memory usage limit
+ // defined in fuzz_common.h
+ lzma_ret ret = lzma_alone_decoder(&strm, MEM_LIMIT);
+
+ if (ret != LZMA_OK) {
+ // This should never happen unless the system has
+ // no free memory or address space to allow the small
+ // allocations that the initialization requires.
+ fprintf(stderr, "lzma_alone_decoder() failed (%d)\n", ret);
+ abort();
+ }
+
+ fuzz_code(&strm, inbuf, inbuf_size);
+
+ // Free the allocated memory.
+ lzma_end(&strm);
+ return 0;
+}
diff --git a/tests/ossfuzz/fuzz_decode_stream.c b/tests/ossfuzz/fuzz_decode_stream.c
new file mode 100644
index 0000000..d786061
--- /dev/null
+++ b/tests/ossfuzz/fuzz_decode_stream.c
@@ -0,0 +1,53 @@
+// SPDX-License-Identifier: 0BSD
+
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file fuzz_decode_stream.c
+/// \brief Fuzz test program for single threaded .xz decoding
+//
+// Authors: Lasse Collin
+// Maksym Vatsyk
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include <inttypes.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "lzma.h"
+#include "fuzz_common.h"
+
+
+extern int
+LLVMFuzzerTestOneInput(const uint8_t *inbuf, size_t inbuf_size)
+{
+ lzma_stream strm = LZMA_STREAM_INIT;
+ // Initialize a .xz decoder using the memory usage limit
+ // defined in fuzz_common.h
+ //
+ // Enable support for concatenated .xz files which is used when
+ // decompressing regular .xz files (instead of data embedded inside
+ // some other file format). Integrity checks on the uncompressed
+ // data are ignored to make fuzzing more effective (incorrect check
+ // values won't prevent the decoder from processing more input).
+ //
+ // The flag LZMA_IGNORE_CHECK doesn't disable verification of
+ // header CRC32 values. Those checks are disabled when liblzma is
+ // built with the #define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION.
+ lzma_ret ret = lzma_stream_decoder(&strm, MEM_LIMIT,
+ LZMA_CONCATENATED | LZMA_IGNORE_CHECK);
+
+ if (ret != LZMA_OK) {
+ // This should never happen unless the system has
+ // no free memory or address space to allow the small
+ // allocations that the initialization requires.
+ fprintf(stderr, "lzma_stream_decoder() failed (%d)\n", ret);
+ abort();
+ }
+
+ fuzz_code(&strm, inbuf, inbuf_size);
+
+ // Free the allocated memory.
+ lzma_end(&strm);
+
+ return 0;
+}
diff --git a/tests/ossfuzz/fuzz_encode_stream.c b/tests/ossfuzz/fuzz_encode_stream.c
new file mode 100644
index 0000000..9438263
--- /dev/null
+++ b/tests/ossfuzz/fuzz_encode_stream.c
@@ -0,0 +1,86 @@
+// SPDX-License-Identifier: 0BSD
+
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file fuzz_encode_stream.c
+/// \brief Fuzz test program for .xz encoding
+//
+// Authors: Maksym Vatsyk
+// Lasse Collin
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include <inttypes.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "lzma.h"
+#include "fuzz_common.h"
+
+
+extern int
+LLVMFuzzerTestOneInput(const uint8_t *inbuf, size_t inbuf_size)
+{
+ if (inbuf_size == 0) {
+ fprintf(stderr, "no input data provided\n");
+ return 0;
+ }
+
+ // Set the LZMA options based on the first input byte. The fuzzer
+ // will learn through its mutational genetic algorithm with the
+ // code coverage feedback that the first byte must be one of the
+ // values with a switch case label. This allows us to have one fuzz
+ // target cover many critical code paths so the fuzz resources can
+ // be used efficiently.
+ uint32_t preset_level;
+ const uint8_t decider = inbuf[0];
+
+ switch (decider) {
+ case 0:
+ case 1:
+ case 5:
+ preset_level = (uint32_t)decider;
+ break;
+ case 6:
+ preset_level = 0 | LZMA_PRESET_EXTREME;
+ break;
+ case 7:
+ preset_level = 3 | LZMA_PRESET_EXTREME;
+ break;
+ default:
+ return 0;
+ }
+
+ // Initialize lzma_options with the above preset level
+ lzma_options_lzma opt_lzma;
+ if (lzma_lzma_preset(&opt_lzma, preset_level)){
+ fprintf(stderr, "lzma_lzma_preset() failed\n");
+ abort();
+ }
+
+ // Set the filter chain as only LZMA2.
+ lzma_filter filters[2] = {
+ {
+ .id = LZMA_FILTER_LZMA2,
+ .options = &opt_lzma,
+ }, {
+ .id = LZMA_VLI_UNKNOWN,
+ }
+ };
+
+ // initialize empty LZMA stream
+ lzma_stream strm = LZMA_STREAM_INIT;
+
+ // Initialize the stream encoder using the above
+ // stream, filter chain and CRC64.
+ lzma_ret ret = lzma_stream_encoder(&strm, filters, LZMA_CHECK_CRC64);
+ if (ret != LZMA_OK) {
+ fprintf(stderr, "lzma_stream_encoder() failed (%d)\n", ret);
+ abort();
+ }
+
+ fuzz_code(&strm, inbuf + 1, inbuf_size - 1);
+
+ // Free the allocated memory.
+ lzma_end(&strm);
+ return 0;
+}
diff --git a/tests/test_bcj_exact_size.c b/tests/test_bcj_exact_size.c
index 551166c..fa82f0d 100644
--- a/tests/test_bcj_exact_size.c
+++ b/tests/test_bcj_exact_size.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file test_bcj_exact_size.c
@@ -7,9 +9,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tests.h"
diff --git a/tests/test_block_header.c b/tests/test_block_header.c
index b310135..d8e6221 100644
--- a/tests/test_block_header.c
+++ b/tests/test_block_header.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file test_block_header.c
@@ -6,9 +8,6 @@
// Authors: Lasse Collin
// Jia Tan
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tests.h"
@@ -320,7 +319,7 @@ test_lzma_block_header_encode(void)
uint8_t flags = out[1];
// Should have number of filters = 1
- assert_uint_eq((flags & 0x3) + 1, 1);
+ assert_uint_eq((flags & 0x3) + 1U, 1);
// Bits 2-7 must be empty not set
assert_uint_eq(flags & (0xFF - 0x3), 0);
diff --git a/tests/test_check.c b/tests/test_check.c
index cb1ad25..9d51aa0 100644
--- a/tests/test_check.c
+++ b/tests/test_check.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file test_check.c
@@ -6,9 +8,6 @@
// Authors: Lasse Collin
// Jia Tan
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tests.h"
diff --git a/tests/test_compress.sh b/tests/test_compress.sh
index ff13cef..a10343a 100755
--- a/tests/test_compress.sh
+++ b/tests/test_compress.sh
@@ -1,26 +1,37 @@
#!/bin/sh
+# SPDX-License-Identifier: 0BSD
###############################################################################
#
# Author: Lasse Collin
#
-# This file has been put into the public domain.
-# You can do whatever you want with this file.
-#
###############################################################################
+# Mandatory argument:
+# $1 = test filename: compress_generated_<foo> or compress_prepared_<foo>
+#
+# Optional argument:
+# $2 = directory of the xz and xzdec executables
+
+XZ=${2:-../src/xz}/xz
+XZDEC=${2:-../src/xzdec}/xzdec
+
# If xz wasn't built, this test is skipped.
-if test -x ../src/xz/xz ; then
- :
-else
+if test ! -x "$XZ"; then
+ echo "xz was not built, skipping this test."
exit 77
fi
+# xzdec isn't mandatory for this script.
+test -x "$XZDEC" || XZDEC=
+
# If compression or decompression support is missing, this test is skipped.
# This isn't perfect as if only some compressors or decompressors are disabled
# then this script can still fail because for now this doesn't check the
# availability of each filter.
-if grep 'define HAVE_ENCODERS' ../config.h > /dev/null \
+if test ! -f ../config.h ; then
+ :
+elif grep 'define HAVE_ENCODERS' ../config.h > /dev/null \
&& grep 'define HAVE_DECODERS' ../config.h > /dev/null ; then
:
else
@@ -76,12 +87,12 @@ test_xz() {
fi
}
-XZ="../src/xz/xz --memlimit-compress=48MiB --memlimit-decompress=5MiB \
- --no-adjust --threads=1 --check=crc32"
-grep "define HAVE_CHECK_CRC64" ../config.h > /dev/null \
- && XZ="$XZ --check=crc64"
-XZDEC="../src/xzdec/xzdec" # No memory usage limiter available
-test -x ../src/xzdec/xzdec || XZDEC=
+# Set memory usage limit for xz. xzdec has no memory usage limiter.
+# Force single-threaded mode as the test files are small
+# (so more than one thread wouldn't be used anyway) and
+# the tests are usually run in parallel.
+XZ="$XZ --memlimit-compress=48MiB --memlimit-decompress=5MiB \
+ --no-adjust --threads=1"
# Create the required input file if needed.
#
@@ -130,21 +141,26 @@ test_xz -4
test_filter()
{
- grep "define HAVE_ENCODER_$1 1" ../config.h > /dev/null || return
- grep "define HAVE_DECODER_$1 1" ../config.h > /dev/null || return
+ if test -f ../config.h ; then
+ grep "define HAVE_ENCODER_$1 1" ../config.h > /dev/null \
+ || return
+ grep "define HAVE_DECODER_$1 1" ../config.h > /dev/null \
+ || return
+ fi
shift
- test_xz "$@" --lzma2=dict=64KiB,nice=32,mode=fast
+ test_xz --filters="$* lzma2:dict=64KiB,nice=32,mode=fast"
}
-test_filter DELTA --delta=dist=1
-test_filter DELTA --delta=dist=4
-test_filter DELTA --delta=dist=256
-test_filter X86 --x86
-test_filter POWERPC --power
-test_filter IA64 --ia64
-test_filter ARM --arm
-test_filter ARMTHUMB --armthumb
-test_filter ARM64 --arm64
-test_filter SPARC --sparc
+test_filter DELTA delta:dist=1
+test_filter DELTA delta:dist=4
+test_filter DELTA delta:dist=256
+test_filter X86 x86
+test_filter POWERPC powerpc
+test_filter IA64 ia64
+test_filter ARM arm
+test_filter ARMTHUMB armthumb
+test_filter ARM64 arm64
+test_filter SPARC sparc
+test_filter RISCV riscv
exit 0
diff --git a/tests/test_compress_generated_abc b/tests/test_compress_generated_abc
index 43c6951..b31d631 100755
--- a/tests/test_compress_generated_abc
+++ b/tests/test_compress_generated_abc
@@ -1,3 +1,4 @@
#!/bin/sh
+# SPDX-License-Identifier: 0BSD
exec "$srcdir/test_compress.sh" compress_generated_abc
diff --git a/tests/test_compress_generated_random b/tests/test_compress_generated_random
index e47555d..c20f3da 100755
--- a/tests/test_compress_generated_random
+++ b/tests/test_compress_generated_random
@@ -1,3 +1,4 @@
#!/bin/sh
+# SPDX-License-Identifier: 0BSD
exec "$srcdir/test_compress.sh" compress_generated_random
diff --git a/tests/test_compress_generated_text b/tests/test_compress_generated_text
index 412ae0e..2c8c171 100755
--- a/tests/test_compress_generated_text
+++ b/tests/test_compress_generated_text
@@ -1,3 +1,4 @@
#!/bin/sh
+# SPDX-License-Identifier: 0BSD
exec "$srcdir/test_compress.sh" compress_generated_text
diff --git a/tests/test_compress_prepared_bcj_sparc b/tests/test_compress_prepared_bcj_sparc
deleted file mode 100755
index deb76ef..0000000
--- a/tests/test_compress_prepared_bcj_sparc
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-exec "$srcdir/test_compress.sh" compress_prepared_bcj_sparc
diff --git a/tests/test_compress_prepared_bcj_x86 b/tests/test_compress_prepared_bcj_x86
deleted file mode 100755
index 3452d7f..0000000
--- a/tests/test_compress_prepared_bcj_x86
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-exec "$srcdir/test_compress.sh" compress_prepared_bcj_x86
diff --git a/tests/test_files.sh b/tests/test_files.sh
index 60402e7..99c9f2f 100755
--- a/tests/test_files.sh
+++ b/tests/test_files.sh
@@ -1,17 +1,18 @@
#!/bin/sh
+# SPDX-License-Identifier: 0BSD
###############################################################################
#
# Author: Lasse Collin
#
-# This file has been put into the public domain.
-# You can do whatever you want with this file.
-#
###############################################################################
-# If both xz and xzdec were not build, skip this test.
-XZ=../src/xz/xz
-XZDEC=../src/xzdec/xzdec
+# Optional argument:
+# $1 = directory of the xz executable
+
+# If both xz and xzdec were not built, skip this test.
+XZ=${1:-../src/xz}/xz
+XZDEC=${2:-../src/xzdec}/xzdec
test -x "$XZ" || XZ=
test -x "$XZDEC" || XZDEC=
if test -z "$XZ$XZDEC"; then
@@ -23,7 +24,9 @@ fi
# This isn't perfect as if only some decompressors are disabled
# then some good files might not decompress and the test fails
# for a (kind of) wrong reason.
-if grep 'define HAVE_DECODERS' ../config.h > /dev/null ; then
+if test ! -f ../config.h ; then
+ :
+elif grep 'define HAVE_DECODERS' ../config.h > /dev/null ; then
:
else
echo "Decompression support is disabled, skipping this test."
@@ -35,6 +38,7 @@ fi
EXIT_STATUS=0
have_feature()
{
+ test -f ../config.h || return 0
grep "define HAVE_$1 1" ../config.h > /dev/null && return 0
printf '%s: Skipping because HAVE_%s is not enabled\n' "$2" "$1"
EXIT_STATUS=77
@@ -49,8 +53,10 @@ have_feature()
# If these integrity check types were disabled at build time,
# allow the tests to pass still.
NO_WARN=
-grep 'define HAVE_CHECK_CRC64' ../config.h > /dev/null || NO_WARN=-qQ
-grep 'define HAVE_CHECK_SHA256' ../config.h > /dev/null || NO_WARN=-qQ
+if test -f ../config.h ; then
+ grep 'define HAVE_CHECK_CRC64' ../config.h > /dev/null || NO_WARN=-qQ
+ grep 'define HAVE_CHECK_SHA256' ../config.h > /dev/null || NO_WARN=-qQ
+fi
for I in "$srcdir"/files/good-*.xz
do
@@ -80,6 +86,11 @@ do
have_feature DECODER_ARM64 "$I" || continue
;;
esac
+ case $I in
+ */good-1-riscv-lzma2-*.xz)
+ have_feature DECODER_RISCV "$I" || continue
+ ;;
+ esac
if test -z "$XZ" || "$XZ" $NO_WARN -dc "$I" > /dev/null; then
:
diff --git a/tests/test_filter_flags.c b/tests/test_filter_flags.c
index 6d9f0b9..9dfc16e 100644
--- a/tests/test_filter_flags.c
+++ b/tests/test_filter_flags.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file test_filter_flags.c
@@ -6,9 +8,6 @@
// Authors: Jia Tan
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tests.h"
@@ -48,6 +47,10 @@ static lzma_filter bcj_filters_encoders[] = {
#ifdef HAVE_ENCODER_SPARC
{ LZMA_FILTER_SPARC, NULL },
#endif
+#ifdef HAVE_ENCODER_RISCV
+ { LZMA_FILTER_RISCV, NULL },
+#endif
+ { LZMA_VLI_UNKNOWN, NULL }
};
// HAVE_ENCODERS ifdef not terminated here because decoders are
@@ -77,6 +80,10 @@ static lzma_filter bcj_filters_decoders[] = {
#ifdef HAVE_DECODER_SPARC
{ LZMA_FILTER_SPARC, NULL },
#endif
+#ifdef HAVE_DECODER_RISCV
+ { LZMA_FILTER_RISCV, NULL },
+#endif
+ { LZMA_VLI_UNKNOWN, NULL }
};
#endif
#endif
@@ -94,6 +101,7 @@ test_lzma_filter_flags_size(void)
// block header.
uint32_t size = 0;
if (lzma_filter_encoder_is_supported(LZMA_FILTER_LZMA1)) {
+ // LZMA1 isn't supported in .xz so we get LZMA_PROG_ERROR.
assert_lzma_ret(lzma_filter_flags_size(&size,
&lzma1_filter), LZMA_PROG_ERROR);
}
@@ -104,12 +112,8 @@ test_lzma_filter_flags_size(void)
assert_true(size != 0 && size < LZMA_BLOCK_HEADER_SIZE_MAX);
}
- // Do not use macro ARRAY_SIZE() in the for loop condition directly.
- // If the BCJ filters are not configured and built, then ARRAY_SIZE()
- // will return 0 and cause a warning because the for loop will never
- // execute since any unsigned number cannot be < 0 (-Werror=type-limits).
- const uint32_t bcj_array_size = ARRAY_SIZE(bcj_filters_encoders);
- for (uint32_t i = 0; i < bcj_array_size; i++) {
+ for (size_t i = 0; bcj_filters_encoders[i].id != LZMA_VLI_UNKNOWN;
+ ++i) {
assert_lzma_ret(lzma_filter_flags_size(&size,
&bcj_filters_encoders[i]), LZMA_OK);
assert_true(size != 0 && size < LZMA_BLOCK_HEADER_SIZE_MAX);
@@ -153,7 +157,7 @@ verify_filter_flags_encode(lzma_filter *filter, bool should_encode)
// First calculate the size of Filter Flags to know how much
// memory to allocate to hold the encoded Filter Flags
assert_lzma_ret(lzma_filter_flags_size(&size, filter), LZMA_OK);
- uint8_t *encoded_out = tuktest_malloc(size * sizeof(uint8_t));
+ uint8_t *encoded_out = tuktest_malloc(size);
size_t out_pos = 0;
if (!should_encode) {
assert_false(lzma_filter_flags_encode(filter, encoded_out,
@@ -220,8 +224,8 @@ test_lzma_filter_flags_encode(void)
.start_offset = 257
};
- const uint32_t bcj_array_size = ARRAY_SIZE(bcj_filters_encoders);
- for (uint32_t i = 0; i < bcj_array_size; i++) {
+ for (size_t i = 0; bcj_filters_encoders[i].id != LZMA_VLI_UNKNOWN;
+ ++i) {
// NULL options should pass for bcj filters
verify_filter_flags_encode(&bcj_filters_encoders[i], true);
lzma_filter bcj_with_options = {
@@ -263,7 +267,6 @@ test_lzma_filter_flags_encode(void)
size_t out_size = LZMA_BLOCK_HEADER_SIZE_MAX;
uint8_t out[LZMA_BLOCK_HEADER_SIZE_MAX];
-
// Filter ID outside of valid range
assert_lzma_ret(lzma_filter_flags_encode(&bad_filter, out, &out_pos,
out_size), LZMA_PROG_ERROR);
@@ -328,7 +331,8 @@ test_lzma_filter_flags_encode(void)
// because it is agnostic to the type of options used in the call
#if defined(HAVE_ENCODERS) && defined(HAVE_DECODERS)
static void
-verify_filter_flags_decode(lzma_filter *filter_in, lzma_filter *filter_out)
+verify_filter_flags_decode(const lzma_filter *filter_in,
+ lzma_filter *filter_out)
{
uint32_t total_size = 0;
@@ -383,8 +387,8 @@ test_lzma_filter_flags_decode(void)
free(decoded);
}
- const uint32_t bcj_array_size = ARRAY_SIZE(bcj_filters_decoders);
- for (uint32_t i = 0; i < bcj_array_size; i++) {
+ for (size_t i = 0; bcj_filters_decoders[i].id != LZMA_VLI_UNKNOWN;
+ ++i) {
if (lzma_filter_encoder_is_supported(
bcj_filters_decoders[i].id)) {
lzma_filter bcj_decoded = {
@@ -398,7 +402,11 @@ test_lzma_filter_flags_decode(void)
&bcj_decoded);
assert_true(bcj_decoded.options == NULL);
- // Next test with offset
+ // Next test with start_offset.
+ //
+ // NOTE: The encoder and decoder don't verify if
+ // the start_offset is valid for the filter. Only
+ // the encoder or decoder initialization does.
lzma_options_bcj options = {
.start_offset = 257
};
diff --git a/tests/test_filter_str.c b/tests/test_filter_str.c
index 15aee55..42d9a22 100644
--- a/tests/test_filter_str.c
+++ b/tests/test_filter_str.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file test_filter_str.c
@@ -5,9 +7,6 @@
//
// Author: Jia Tan
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tests.h"
@@ -20,37 +19,56 @@ test_lzma_str_to_filters(void)
int error_pos;
// Test with NULL string.
+ error_pos = -1;
assert_true(lzma_str_to_filters(NULL, &error_pos, filters, 0,
NULL) != NULL);
+ assert_int_eq(error_pos, 0);
// Test with NULL filter array.
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma2", &error_pos, NULL, 0,
NULL) != NULL);
+ assert_int_eq(error_pos, 0);
// Test with unsupported flags.
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma2", &error_pos, filters,
UINT32_MAX, NULL) != NULL);
+ assert_int_eq(error_pos, 0);
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma2", &error_pos, filters,
LZMA_STR_NO_SPACES << 1, NULL) != NULL);
+ assert_int_eq(error_pos, 0);
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma2", &error_pos, filters,
LZMA_STR_NO_SPACES, NULL) != NULL);
+ assert_int_eq(error_pos, 0);
// Test with empty string.
+ error_pos = -1;
assert_true(lzma_str_to_filters("", &error_pos,
filters, 0, NULL) != NULL);
assert_int_eq(error_pos, 0);
// Test with invalid filter name and missing filter name.
+ error_pos = -1;
+ assert_true(lzma_str_to_filters("abcd", &error_pos,
+ filters, 0, NULL) != NULL);
+ assert_int_eq(error_pos, 0);
+
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma2 abcd", &error_pos,
filters, 0, NULL) != NULL);
assert_int_eq(error_pos, 6);
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma2--abcd", &error_pos,
filters, 0, NULL) != NULL);
assert_int_eq(error_pos, 7);
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma2--", &error_pos,
filters, 0, NULL) != NULL);
assert_int_eq(error_pos, 7);
@@ -58,12 +76,15 @@ test_lzma_str_to_filters(void)
// Test LZMA_STR_ALL_FILTERS flag (should work with LZMA1 if built).
#if defined(HAVE_ENCODER_LZMA1) || defined(HAVE_DECODER_LZMA1)
// Using LZMA1 as a Filter should fail without LZMA_STR_ALL_FILTERS.
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma1", &error_pos, filters,
0, NULL) != NULL);
assert_int_eq(error_pos, 0);
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma1", &error_pos, filters,
LZMA_STR_ALL_FILTERS, NULL) == NULL);
+ assert_int_eq(error_pos, 5);
// Verify Filters array IDs are correct. The array should contain
// only two elements:
@@ -79,11 +100,15 @@ test_lzma_str_to_filters(void)
// same Filter multiple times in the chain and having a non-last
// Filter like lzma2 appear before another Filter.
// Without the flag, "lzma2 lzma2" must fail.
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma2 lzma2", &error_pos, filters,
0, NULL) != NULL);
+ assert_int_eq(error_pos, 11);
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma2 lzma2", &error_pos, filters,
LZMA_STR_NO_VALIDATION, NULL) == NULL);
+ assert_int_eq(error_pos, 11);
assert_uint_eq(filters[0].id, LZMA_FILTER_LZMA2);
assert_uint_eq(filters[1].id, LZMA_FILTER_LZMA2);
@@ -92,48 +117,65 @@ test_lzma_str_to_filters(void)
lzma_filters_free(filters, NULL);
// Should fail with invalid Filter options (lc + lp must be <= 4).
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma2:lc=3,lp=3", &error_pos, filters,
LZMA_STR_NO_VALIDATION, NULL) != NULL);
+ assert_int_eq(error_pos, 15);
// Test invalid option name.
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma2:foo=1,bar=2", &error_pos,
filters, 0, NULL) != NULL);
assert_int_eq(error_pos, 6);
+ error_pos = -1;
+ assert_true(lzma_str_to_filters("lzma2:pb=1,bar=2", &error_pos,
+ filters, 0, NULL) != NULL);
+ assert_int_eq(error_pos, 11);
+
// Test missing option value.
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma2:lc=", &error_pos,
filters, 0, NULL) != NULL);
assert_int_eq(error_pos, 9);
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma2:=,pb=1", &error_pos,
filters, 0, NULL) != NULL);
assert_int_eq(error_pos, 6);
// Test unsupported preset value.
+ error_pos = -1;
assert_true(lzma_str_to_filters("-10", &error_pos,
filters, 0, NULL) != NULL);
assert_int_eq(error_pos, 2);
+ error_pos = -1;
assert_true(lzma_str_to_filters("-5f", &error_pos,
filters, 0, NULL) != NULL);
assert_int_eq(error_pos, 2);
// Test filter chain too long.
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma2 lzma2 lzma2 lzma2 lzma2",
&error_pos, filters, LZMA_STR_NO_VALIDATION,
NULL) != NULL);
- assert_int_eq(error_pos, 24);
+ assert_int_eq(error_pos, 24); // The fifth is too many.
#if defined(HAVE_ENCODER_LZMA1) || defined(HAVE_DECODER_LZMA1)
// Should fail with a Filter not supported in the .xz format (lzma1).
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma1", &error_pos, filters,
LZMA_STR_NO_VALIDATION, NULL) != NULL);
+ assert_int_eq(error_pos, 0);
#endif
// Test setting options with the "=" format.
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma2=dict=4096,lc=2,lp=2,pb=1,"
"mode=fast,nice=3,mf=hc3,depth=10", &error_pos,
filters, 0, NULL) == NULL);
+ assert_int_eq(error_pos, 63);
assert_uint_eq(filters[0].id, LZMA_FILTER_LZMA2);
assert_uint_eq(filters[1].id, LZMA_VLI_UNKNOWN);
@@ -151,8 +193,10 @@ test_lzma_str_to_filters(void)
#if defined(HAVE_ENCODER_X86) || defined(HAVE_DECODER_X86)
// Test BCJ Filter options.
+ error_pos = -1;
assert_true(lzma_str_to_filters("x86:start=16", &error_pos, filters,
LZMA_STR_NO_VALIDATION, NULL) == NULL);
+ assert_int_eq(error_pos, 12);
assert_uint_eq(filters[0].id, LZMA_FILTER_X86);
assert_uint_eq(filters[1].id, LZMA_VLI_UNKNOWN);
@@ -165,8 +209,10 @@ test_lzma_str_to_filters(void)
#if defined(HAVE_ENCODER_DELTA) || defined(HAVE_DECODER_DELTA)
// Test Delta Filter options.
+ error_pos = -1;
assert_true(lzma_str_to_filters("delta:dist=20", &error_pos, filters,
LZMA_STR_NO_VALIDATION, NULL) == NULL);
+ assert_int_eq(error_pos, 13);
assert_uint_eq(filters[0].id, LZMA_FILTER_DELTA);
assert_uint_eq(filters[1].id, LZMA_VLI_UNKNOWN);
@@ -178,8 +224,10 @@ test_lzma_str_to_filters(void)
#endif
// Test skipping leading spaces.
+ error_pos = -1;
assert_true(lzma_str_to_filters(" lzma2", &error_pos, filters,
0, NULL) == NULL);
+ assert_int_eq(error_pos, 9);
assert_uint_eq(filters[0].id, LZMA_FILTER_LZMA2);
assert_uint_eq(filters[1].id, LZMA_VLI_UNKNOWN);
@@ -187,8 +235,10 @@ test_lzma_str_to_filters(void)
lzma_filters_free(filters, NULL);
// Test skipping trailing spaces.
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma2 ", &error_pos, filters,
0, NULL) == NULL);
+ assert_int_eq(error_pos, 9);
assert_uint_eq(filters[0].id, LZMA_FILTER_LZMA2);
assert_uint_eq(filters[1].id, LZMA_VLI_UNKNOWN);
@@ -196,8 +246,10 @@ test_lzma_str_to_filters(void)
lzma_filters_free(filters, NULL);
// Test with "--" instead of space separating.
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma2--lzma2", &error_pos, filters,
LZMA_STR_NO_VALIDATION, NULL) == NULL);
+ assert_int_eq(error_pos, 12);
assert_uint_eq(filters[0].id, LZMA_FILTER_LZMA2);
assert_uint_eq(filters[1].id, LZMA_FILTER_LZMA2);
@@ -206,24 +258,30 @@ test_lzma_str_to_filters(void)
lzma_filters_free(filters, NULL);
// Test preset with and without leading "-", and with "e".
+ error_pos = -1;
assert_true(lzma_str_to_filters("-3", &error_pos, filters,
0, NULL) == NULL);
+ assert_int_eq(error_pos, 2);
assert_uint_eq(filters[0].id, LZMA_FILTER_LZMA2);
assert_uint_eq(filters[1].id, LZMA_VLI_UNKNOWN);
lzma_filters_free(filters, NULL);
+ error_pos = -1;
assert_true(lzma_str_to_filters("4", &error_pos, filters,
0, NULL) == NULL);
+ assert_int_eq(error_pos, 1);
assert_uint_eq(filters[0].id, LZMA_FILTER_LZMA2);
assert_uint_eq(filters[1].id, LZMA_VLI_UNKNOWN);
lzma_filters_free(filters, NULL);
+ error_pos = -1;
assert_true(lzma_str_to_filters("9e", &error_pos, filters,
0, NULL) == NULL);
+ assert_int_eq(error_pos, 2);
assert_uint_eq(filters[0].id, LZMA_FILTER_LZMA2);
assert_uint_eq(filters[1].id, LZMA_VLI_UNKNOWN);
@@ -231,8 +289,10 @@ test_lzma_str_to_filters(void)
lzma_filters_free(filters, NULL);
// Test using a preset as an lzma2 option.
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma2:preset=9e", &error_pos, filters,
0, NULL) == NULL);
+ assert_int_eq(error_pos, 15);
assert_uint_eq(filters[0].id, LZMA_FILTER_LZMA2);
assert_uint_eq(filters[1].id, LZMA_VLI_UNKNOWN);
@@ -240,23 +300,33 @@ test_lzma_str_to_filters(void)
lzma_filters_free(filters, NULL);
// Test setting dictionary size with invalid modifier suffix.
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma2:dict=4096ZiB", &error_pos, filters,
0, NULL) != NULL);
+ assert_int_eq(error_pos, 15);
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma2:dict=4096KiBs", &error_pos, filters,
0, NULL) != NULL);
+ assert_int_eq(error_pos, 15);
// Test option that cannot have multiplier modifier.
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma2:pb=1k", &error_pos, filters,
0, NULL) != NULL);
+ assert_int_eq(error_pos, 10);
// Test option value too large.
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma2:dict=4096GiB", &error_pos, filters,
0, NULL) != NULL);
+ assert_int_eq(error_pos, 11);
// Test valid uses of multiplier modifiers (k,m,g).
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma2:dict=4096KiB", &error_pos, filters,
0, NULL) == NULL);
+ assert_int_eq(error_pos, 18);
assert_uint_eq(filters[0].id, LZMA_FILTER_LZMA2);
assert_uint_eq(filters[1].id, LZMA_VLI_UNKNOWN);
@@ -266,8 +336,10 @@ test_lzma_str_to_filters(void)
lzma_filters_free(filters, NULL);
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma2:dict=40Mi", &error_pos, filters,
0, NULL) == NULL);
+ assert_int_eq(error_pos, 15);
assert_uint_eq(filters[0].id, LZMA_FILTER_LZMA2);
assert_uint_eq(filters[1].id, LZMA_VLI_UNKNOWN);
@@ -277,8 +349,10 @@ test_lzma_str_to_filters(void)
lzma_filters_free(filters, NULL);
+ error_pos = -1;
assert_true(lzma_str_to_filters("lzma2:dict=1g", &error_pos, filters,
0, NULL) == NULL);
+ assert_int_eq(error_pos, 13);
assert_uint_eq(filters[0].id, LZMA_FILTER_LZMA2);
assert_uint_eq(filters[1].id, LZMA_VLI_UNKNOWN);
@@ -362,6 +436,10 @@ test_lzma_str_from_filters(void)
assert_true(lzma_str_to_filters("x86 lzma2", NULL, filters, 0, NULL)
== NULL);
+ // It always allocates the options structure even when it's not
+ // needed due to start_offset = 0 being the default.
+ assert_true(filters[0].options != NULL);
+
assert_lzma_ret(lzma_str_from_filters(&output_str, filters, 0, NULL),
LZMA_OK);
@@ -370,9 +448,7 @@ test_lzma_str_from_filters(void)
free(output_str);
// Test setting BCJ option to NULL.
- assert_false(filters[0].options == NULL);
free(filters[0].options);
-
filters[0].options = NULL;
assert_lzma_ret(lzma_str_from_filters(&output_str, filters, 0, NULL),
@@ -386,6 +462,7 @@ test_lzma_str_from_filters(void)
lzma_options_lzma opts;
assert_false(lzma_lzma_preset(&opts, LZMA_PRESET_DEFAULT));
+
// Test with too many Filters (array terminated after 4+ filters).
lzma_filter oversized_filters[LZMA_FILTERS_MAX + 2];
@@ -438,6 +515,9 @@ static const char supported_encoders[][9] = {
#ifdef HAVE_ENCODER_ARM64
"arm64",
#endif
+#ifdef HAVE_ENCODER_RISCV
+ "riscv",
+#endif
#ifdef HAVE_ENCODER_DELTA
"delta",
#endif
@@ -466,6 +546,9 @@ static const char supported_decoders[][9] = {
#ifdef HAVE_DECODER_ARM64
"arm64",
#endif
+#ifdef HAVE_DECODER_RISCV
+ "riscv",
+#endif
#ifdef HAVE_DECODER_DELTA
"delta",
#endif
@@ -494,6 +577,9 @@ static const char supported_filters[][9] = {
#if defined(HAVE_ENCODER_ARM64) || defined(HAVE_DECODER_ARM64)
"arm64",
#endif
+#if defined(HAVE_ENCODER_RISCV) || defined(HAVE_DECODER_RISCV)
+ "riscv",
+#endif
#if defined(HAVE_ENCODER_DELTA) || defined(HAVE_DECODER_DELTA)
"delta",
#endif
@@ -512,18 +598,23 @@ test_lzma_str_list_filters(void)
// Test with bad flags.
assert_lzma_ret(lzma_str_list_filters(&str, LZMA_VLI_UNKNOWN,
LZMA_STR_NO_VALIDATION , NULL), LZMA_OPTIONS_ERROR);
+ assert_true(str == NULL);
assert_lzma_ret(lzma_str_list_filters(&str, LZMA_VLI_UNKNOWN,
LZMA_STR_NO_SPACES, NULL), LZMA_OPTIONS_ERROR);
+ assert_true(str == NULL);
// Test with bad Filter ID.
assert_lzma_ret(lzma_str_list_filters(&str, LZMA_VLI_UNKNOWN - 1,
0, NULL), LZMA_OPTIONS_ERROR);
+ assert_true(str == NULL);
// Test LZMA_STR_ENCODER flag.
assert_lzma_ret(lzma_str_list_filters(&str, LZMA_VLI_UNKNOWN,
LZMA_STR_ENCODER, NULL), LZMA_OK);
+ // NOTE: Just checking for "contains" is a bit weak check as
+ // "arm" matches "armthumb" and "arm64" too.
for (uint32_t i = 0; i < ARRAY_SIZE(supported_encoders); i++)
assert_str_contains(str, supported_encoders[i]);
@@ -541,6 +632,7 @@ test_lzma_str_list_filters(void)
// Test LZMA_STR_GETOPT_LONG flag.
assert_lzma_ret(lzma_str_list_filters(&str, LZMA_VLI_UNKNOWN,
LZMA_STR_GETOPT_LONG, NULL), LZMA_OK);
+ assert_str_contains(str, "--");
free(str);
diff --git a/tests/test_hardware.c b/tests/test_hardware.c
index c72d9b2..45763f6 100644
--- a/tests/test_hardware.c
+++ b/tests/test_hardware.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file test_hardware.c
@@ -9,9 +11,6 @@
//
// Author: Jia Tan
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tests.h"
diff --git a/tests/test_index.c b/tests/test_index.c
index a14b33d..ba1b978 100644
--- a/tests/test_index.c
+++ b/tests/test_index.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file test_index.c
@@ -8,10 +10,6 @@
// Authors: Jia Tan
// Lasse Collin
//
-//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tests.h"
@@ -25,8 +23,11 @@
#define MEMLIMIT (UINT64_C(1) << 20)
+#ifdef HAVE_ENCODERS
static uint8_t *decode_buffer;
static size_t decode_buffer_size = 0;
+#endif
+
static lzma_index *decode_test_index;
@@ -44,8 +45,11 @@ test_lzma_index_memusage(void)
assert_uint_eq(lzma_index_memusage((lzma_vli)UINT32_MAX + 1, 1),
UINT64_MAX);
- // The maximum number of Blocks should be LZMA_VLI_MAX
- assert_uint_eq(lzma_index_memusage(1, LZMA_VLI_MAX), UINT64_MAX);
+ // While the number of blocks is lzma_vli, the real maximum value is
+ // much smaller than LZMA_VLI_MAX. Just check that it fails with a
+ // huge but valid VLI and that it succeeds with a smaller one.
+ assert_uint_eq(lzma_index_memusage(1, LZMA_VLI_MAX / 5), UINT64_MAX);
+ assert_uint(lzma_index_memusage(1, LZMA_VLI_MAX / 11), <, UINT64_MAX);
// Number of Streams must be non-zero
assert_uint_eq(lzma_index_memusage(0, 1), UINT64_MAX);
@@ -100,7 +104,7 @@ test_lzma_index_memused(void)
static void
test_lzma_index_append(void)
{
- // Basic input-ouput test done here.
+ // Basic input-output test done here.
// Less trivial tests for this function are done throughout
// other tests.
@@ -135,7 +139,7 @@ test_lzma_index_append(void)
lzma_index_end(idx, NULL);
// Test compressed .xz file size growing too large. This also tests
- // a failing assert fixed in 68bda971bb8b666a009331455fcedb4e18d837a4.
+ // a failing assert fixed in ae5c07b22a6b3766b84f409f1b6b5c100469068a.
// Should result in LZMA_DATA_ERROR.
idx = lzma_index_init(NULL);
@@ -224,28 +228,28 @@ test_lzma_index_checks(void)
assert_lzma_ret(lzma_index_stream_flags(idx, &stream_flags),
LZMA_OK);
assert_uint_eq(lzma_index_checks(idx),
- UINT32_C(1) << LZMA_CHECK_NONE);
+ LZMA_INDEX_CHECK_MASK_NONE);
// Set the check type to CRC32 and repeat
stream_flags.check = LZMA_CHECK_CRC32;
assert_lzma_ret(lzma_index_stream_flags(idx, &stream_flags),
LZMA_OK);
assert_uint_eq(lzma_index_checks(idx),
- UINT32_C(1) << LZMA_CHECK_CRC32);
+ LZMA_INDEX_CHECK_MASK_CRC32);
// Set the check type to CRC64 and repeat
stream_flags.check = LZMA_CHECK_CRC64;
assert_lzma_ret(lzma_index_stream_flags(idx, &stream_flags),
LZMA_OK);
assert_uint_eq(lzma_index_checks(idx),
- UINT32_C(1) << LZMA_CHECK_CRC64);
+ LZMA_INDEX_CHECK_MASK_CRC64);
// Set the check type to SHA256 and repeat
stream_flags.check = LZMA_CHECK_SHA256;
assert_lzma_ret(lzma_index_stream_flags(idx, &stream_flags),
LZMA_OK);
assert_uint_eq(lzma_index_checks(idx),
- UINT32_C(1) << LZMA_CHECK_SHA256);
+ LZMA_INDEX_CHECK_MASK_SHA256);
// Create second lzma_index and cat to first
lzma_index *second = lzma_index_init(NULL);
@@ -257,14 +261,14 @@ test_lzma_index_checks(void)
LZMA_OK);
assert_uint_eq(lzma_index_checks(second),
- UINT32_C(1) << LZMA_CHECK_CRC32);
+ LZMA_INDEX_CHECK_MASK_CRC32);
assert_lzma_ret(lzma_index_cat(idx, second, NULL), LZMA_OK);
// Index should now have both CRC32 and SHA256
assert_uint_eq(lzma_index_checks(idx),
- (UINT32_C(1) << LZMA_CHECK_CRC32) |
- (UINT32_C(1) << LZMA_CHECK_SHA256));
+ LZMA_INDEX_CHECK_MASK_CRC32 |
+ LZMA_INDEX_CHECK_MASK_SHA256);
// Change the check type of the second Stream to SHA256
stream_flags.check = LZMA_CHECK_SHA256;
@@ -273,7 +277,7 @@ test_lzma_index_checks(void)
// Index should now have only SHA256
assert_uint_eq(lzma_index_checks(idx),
- UINT32_C(1) << LZMA_CHECK_SHA256);
+ LZMA_INDEX_CHECK_MASK_SHA256);
// Test with a third Stream
lzma_index *third = lzma_index_init(NULL);
@@ -284,14 +288,14 @@ test_lzma_index_checks(void)
LZMA_OK);
assert_uint_eq(lzma_index_checks(third),
- UINT32_C(1) << LZMA_CHECK_CRC64);
+ LZMA_INDEX_CHECK_MASK_CRC64);
assert_lzma_ret(lzma_index_cat(idx, third, NULL), LZMA_OK);
// Index should now have CRC64 and SHA256
assert_uint_eq(lzma_index_checks(idx),
- (UINT32_C(1) << LZMA_CHECK_CRC64) |
- (UINT32_C(1) << LZMA_CHECK_SHA256));
+ LZMA_INDEX_CHECK_MASK_CRC64 |
+ LZMA_INDEX_CHECK_MASK_SHA256);
lzma_index_end(idx, NULL);
}
@@ -467,15 +471,18 @@ test_lzma_index_stream_size(void)
// Next, append a few Blocks and retest
assert_lzma_ret(lzma_index_append(idx, NULL, 1000, 1), LZMA_OK);
- assert_lzma_ret(lzma_index_append(idx, NULL, 1000, 1), LZMA_OK);
- assert_lzma_ret(lzma_index_append(idx, NULL, 1000, 1), LZMA_OK);
+ assert_lzma_ret(lzma_index_append(idx, NULL, 999, 1), LZMA_OK);
+ assert_lzma_ret(lzma_index_append(idx, NULL, 997, 1), LZMA_OK);
// Stream size should be:
// Size of Stream Header - 12 bytes
- // Size of all Blocks - 3000 bytes
+ // Size of all Blocks - 3000 bytes [*]
// Size of Index - 16 bytes
// Size of Stream Footer - 12 bytes
// Total: 3040 bytes
+ //
+ // [*] Block size is a multiple of 4 bytes so 999 and 997 get
+ // rounded up to 1000 bytes.
assert_uint_eq(lzma_index_stream_size(idx), 3040);
lzma_index *second = lzma_index_init(NULL);
@@ -520,10 +527,10 @@ test_lzma_index_total_size(void)
assert_lzma_ret(lzma_index_append(idx, NULL, 1000, 1), LZMA_OK);
assert_uint_eq(lzma_index_total_size(idx), 1000);
- assert_lzma_ret(lzma_index_append(idx, NULL, 1000, 1), LZMA_OK);
+ assert_lzma_ret(lzma_index_append(idx, NULL, 999, 1), LZMA_OK);
assert_uint_eq(lzma_index_total_size(idx), 2000);
- assert_lzma_ret(lzma_index_append(idx, NULL, 1000, 1), LZMA_OK);
+ assert_lzma_ret(lzma_index_append(idx, NULL, 997, 1), LZMA_OK);
assert_uint_eq(lzma_index_total_size(idx), 3000);
// Create second lzma_index and append Blocks to it.
@@ -545,6 +552,16 @@ test_lzma_index_total_size(void)
// from both Streams
assert_uint_eq(lzma_index_total_size(idx), 3200);
+ // Test sizes that aren't multiples of four bytes
+ assert_lzma_ret(lzma_index_append(idx, NULL, 11, 1), LZMA_OK);
+ assert_uint_eq(lzma_index_total_size(idx), 3212);
+
+ assert_lzma_ret(lzma_index_append(idx, NULL, 11, 1), LZMA_OK);
+ assert_uint_eq(lzma_index_total_size(idx), 3224);
+
+ assert_lzma_ret(lzma_index_append(idx, NULL, 9, 1), LZMA_OK);
+ assert_uint_eq(lzma_index_total_size(idx), 3236);
+
lzma_index_end(idx, NULL);
}
@@ -560,8 +577,8 @@ test_lzma_index_file_size(void)
assert_uint_eq(lzma_index_file_size(idx), 32);
assert_lzma_ret(lzma_index_append(idx, NULL, 1000, 1), LZMA_OK);
- assert_lzma_ret(lzma_index_append(idx, NULL, 1000, 1), LZMA_OK);
- assert_lzma_ret(lzma_index_append(idx, NULL, 1000, 1), LZMA_OK);
+ assert_lzma_ret(lzma_index_append(idx, NULL, 999, 1), LZMA_OK);
+ assert_lzma_ret(lzma_index_append(idx, NULL, 997, 1), LZMA_OK);
assert_uint_eq(lzma_index_file_size(idx), 3040);
@@ -690,6 +707,7 @@ test_lzma_index_iter_rewind(void)
assert_false(lzma_index_iter_next(&iter,
LZMA_INDEX_ITER_BLOCK));
assert_uint_eq(iter.block.number_in_file, i + 1);
+ assert_uint_eq(iter.block.number_in_stream, i + 1);
}
// Rewind back to the beginning and iterate over the Blocks again
@@ -700,6 +718,7 @@ test_lzma_index_iter_rewind(void)
assert_false(lzma_index_iter_next(&iter,
LZMA_INDEX_ITER_BLOCK));
assert_uint_eq(iter.block.number_in_file, i + 1);
+ assert_uint_eq(iter.block.number_in_stream, i + 1);
}
// Next concatenate two more lzma_indexes, iterate over them,
@@ -919,8 +938,9 @@ test_lzma_index_iter_next(void)
// Verify both Blocks
// Next call to iterate Block should return true because the
- // first Block can already be read from the LZMA_INDEX_ITER_STREAM
- // call.
+ // first Block can already be read from the earlier *successful*
+ // LZMA_INDEX_ITER_STREAM call; the previous failed call doesn't
+ // modify the iterator.
assert_true(lzma_index_iter_next(&iter, LZMA_INDEX_ITER_BLOCK));
// Rewind to test LZMA_INDEX_ITER_ANY
@@ -1046,13 +1066,14 @@ test_lzma_index_iter_locate(void)
lzma_index_iter_init(&iter, idx);
for (uint32_t n = 4; n <= 4 * 5555; n += 4)
- assert_lzma_ret(lzma_index_append(idx, NULL, n + 8, n),
+ assert_lzma_ret(lzma_index_append(idx, NULL, n + 7, n),
LZMA_OK);
assert_uint_eq(lzma_index_block_count(idx), 5555);
// First Record
assert_false(lzma_index_iter_locate(&iter, 0));
+ assert_uint_eq(iter.block.unpadded_size, 4 + 7);
assert_uint_eq(iter.block.total_size, 4 + 8);
assert_uint_eq(iter.block.uncompressed_size, 4);
assert_uint_eq(iter.block.compressed_file_offset,
@@ -1060,6 +1081,7 @@ test_lzma_index_iter_locate(void)
assert_uint_eq(iter.block.uncompressed_file_offset, 0);
assert_false(lzma_index_iter_locate(&iter, 3));
+ assert_uint_eq(iter.block.unpadded_size, 4 + 7);
assert_uint_eq(iter.block.total_size, 4 + 8);
assert_uint_eq(iter.block.uncompressed_size, 4);
assert_uint_eq(iter.block.compressed_file_offset,
@@ -1068,6 +1090,7 @@ test_lzma_index_iter_locate(void)
// Second Record
assert_false(lzma_index_iter_locate(&iter, 4));
+ assert_uint_eq(iter.block.unpadded_size, 2 * 4 + 7);
assert_uint_eq(iter.block.total_size, 2 * 4 + 8);
assert_uint_eq(iter.block.uncompressed_size, 2 * 4);
assert_uint_eq(iter.block.compressed_file_offset,
@@ -1077,6 +1100,7 @@ test_lzma_index_iter_locate(void)
// Last Record
assert_false(lzma_index_iter_locate(
&iter, lzma_index_uncompressed_size(idx) - 1));
+ assert_uint_eq(iter.block.unpadded_size, 4 * 5555 + 7);
assert_uint_eq(iter.block.total_size, 4 * 5555 + 8);
assert_uint_eq(iter.block.uncompressed_size, 4 * 5555);
assert_uint_eq(iter.block.compressed_file_offset,
@@ -1142,6 +1166,7 @@ test_lzma_index_iter_locate(void)
for (n = 0; n < group_multiple; ++n)
assert_lzma_ret(lzma_index_append(idx, NULL, 8, 0),
LZMA_OK);
+
assert_lzma_ret(lzma_index_append(idx, NULL, 16, 1), LZMA_OK);
assert_false(lzma_index_iter_locate(&iter, 0));
assert_uint_eq(iter.block.total_size, 16);
@@ -1171,17 +1196,17 @@ test_lzma_index_cat(void)
assert_lzma_ret(lzma_index_cat(dest, NULL, NULL), LZMA_PROG_ERROR);
assert_lzma_ret(lzma_index_cat(NULL, src, NULL), LZMA_PROG_ERROR);
- // Check for uncompressed size overflow
+ // Check for compressed size overflow
assert_lzma_ret(lzma_index_append(dest, NULL,
(UNPADDED_SIZE_MAX / 2) + 1, 1), LZMA_OK);
assert_lzma_ret(lzma_index_append(src, NULL,
(UNPADDED_SIZE_MAX / 2) + 1, 1), LZMA_OK);
assert_lzma_ret(lzma_index_cat(dest, src, NULL), LZMA_DATA_ERROR);
- // Check for compressed size overflow
lzma_index_end(src, NULL);
lzma_index_end(dest, NULL);
+ // Check for uncompressed size overflow
dest = lzma_index_init(NULL);
assert_true(dest != NULL);
@@ -1189,9 +1214,9 @@ test_lzma_index_cat(void)
assert_true(src != NULL);
assert_lzma_ret(lzma_index_append(dest, NULL,
- UNPADDED_SIZE_MIN, LZMA_VLI_MAX - 1), LZMA_OK);
+ UNPADDED_SIZE_MIN, (LZMA_VLI_MAX / 2) + 1), LZMA_OK);
assert_lzma_ret(lzma_index_append(src, NULL,
- UNPADDED_SIZE_MIN, LZMA_VLI_MAX - 1), LZMA_OK);
+ UNPADDED_SIZE_MIN, (LZMA_VLI_MAX / 2) + 1), LZMA_OK);
assert_lzma_ret(lzma_index_cat(dest, src, NULL), LZMA_DATA_ERROR);
lzma_index_end(dest, NULL);
@@ -1263,13 +1288,17 @@ my_alloc(void *opaque, size_t a, size_t b)
{
(void)opaque;
+ assert_true(SIZE_MAX / a >= b);
+
static unsigned count = 0;
- if (++count > 2)
+ if (count >= 2)
return NULL;
+ ++count;
return malloc(a * b);
}
+
static const lzma_allocator test_index_dup_alloc = { &my_alloc, NULL, NULL };
@@ -1326,6 +1355,7 @@ test_lzma_index_dup(void)
lzma_index_end(idx, NULL);
}
+
#if defined(HAVE_ENCODERS) && defined(HAVE_DECODERS)
static void
verify_index_buffer(const lzma_index *idx, const uint8_t *buffer,
@@ -1459,31 +1489,30 @@ test_lzma_index_encoder(void)
#endif
}
+
static void
generate_index_decode_buffer(void)
{
#ifdef HAVE_ENCODERS
decode_test_index = lzma_index_init(NULL);
- if (decode_test_index == NULL)
- return;
+ assert_true(decode_test_index != NULL);
// Add 4 Blocks
for (uint32_t i = 1; i < 5; i++)
- if (lzma_index_append(decode_test_index, NULL,
- 0x1000 * i, 0x100 * i) != LZMA_OK)
- return;
+ assert_lzma_ret(lzma_index_append(decode_test_index, NULL,
+ 0x1000 * i, 0x100 * i), LZMA_OK);
- size_t size = lzma_index_size(decode_test_index);
+ const size_t size = (size_t)lzma_index_size(decode_test_index);
decode_buffer = tuktest_malloc(size);
- if (lzma_index_buffer_encode(decode_test_index,
- decode_buffer, &decode_buffer_size, size) != LZMA_OK)
- decode_buffer_size = 0;
+ assert_lzma_ret(lzma_index_buffer_encode(decode_test_index,
+ decode_buffer, &decode_buffer_size, size), LZMA_OK);
+ assert_true(decode_buffer_size != 0);
#endif
}
-#ifdef HAVE_DECODERS
+#if defined(HAVE_ENCODERS) && defined(HAVE_DECODERS)
static void
decode_index(const uint8_t *buffer, const size_t size, lzma_stream *strm,
lzma_ret expected_error)
@@ -1498,11 +1527,10 @@ decode_index(const uint8_t *buffer, const size_t size, lzma_stream *strm,
static void
test_lzma_index_decoder(void)
{
-#ifndef HAVE_DECODERS
- assert_skip("Decoder support disabled");
+#if !defined(HAVE_ENCODERS) || !defined(HAVE_DECODERS)
+ assert_skip("Encoder or decoder support disabled");
#else
- if (decode_buffer_size == 0)
- assert_skip("Could not initialize decode test buffer");
+ assert_true(decode_buffer_size != 0);
lzma_stream strm = LZMA_STREAM_INIT;
@@ -1510,11 +1538,21 @@ test_lzma_index_decoder(void)
LZMA_PROG_ERROR);
assert_lzma_ret(lzma_index_decoder(&strm, NULL, MEMLIMIT),
LZMA_PROG_ERROR);
- assert_lzma_ret(lzma_index_decoder(NULL, &decode_test_index,
- MEMLIMIT), LZMA_PROG_ERROR);
+
+ // If the first argument (lzma_stream *strm) is NULL then
+ // *idx must still become NULL since the API docs say that
+ // it's done if an error occurs. This was fixed in
+ // 71eed2520e2eecae89bade9dceea16e56cfa2ea0.
+ lzma_index *idx_allocated = lzma_index_init(NULL);
+ lzma_index *idx = idx_allocated;
+ assert_lzma_ret(lzma_index_decoder(NULL, &idx, MEMLIMIT),
+ LZMA_PROG_ERROR);
+ assert_true(idx == NULL);
+
+ lzma_index_end(idx_allocated, NULL);
+ idx_allocated = NULL;
// Do actual decode
- lzma_index *idx;
assert_lzma_ret(lzma_index_decoder(&strm, &idx, MEMLIMIT),
LZMA_OK);
@@ -1579,8 +1617,8 @@ test_lzma_index_buffer_encode(void)
#if !defined(HAVE_ENCODERS) || !defined(HAVE_DECODERS)
assert_skip("Encoder or decoder support disabled");
#else
- // More simple test than test_lzma_index_encoder() because
- // currently lzma_index_buffer_encode() is mostly a wrapper
+ // These are simpler test than in test_lzma_index_encoder()
+ // because lzma_index_buffer_encode() is mostly a wrapper
// around lzma_index_encoder() anyway.
lzma_index *idx = lzma_index_init(NULL);
assert_true(idx != NULL);
@@ -1607,6 +1645,9 @@ test_lzma_index_buffer_encode(void)
0), LZMA_PROG_ERROR);
out_pos = 0;
assert_lzma_ret(lzma_index_buffer_encode(idx, buffer, &out_pos,
+ 0), LZMA_BUF_ERROR);
+ assert_uint_eq(out_pos, 0);
+ assert_lzma_ret(lzma_index_buffer_encode(idx, buffer, &out_pos,
1), LZMA_BUF_ERROR);
// Do encoding
@@ -1625,11 +1666,10 @@ test_lzma_index_buffer_encode(void)
static void
test_lzma_index_buffer_decode(void)
{
-#ifndef HAVE_DECODERS
- assert_skip("Decoder support disabled");
+#if !defined(HAVE_ENCODERS) || !defined(HAVE_DECODERS)
+ assert_skip("Encoder or decoder support disabled");
#else
- if (decode_buffer_size == 0)
- assert_skip("Could not initialize decode test buffer");
+ assert_true(decode_buffer_size != 0);
// Simple test since test_lzma_index_decoder() covers most of the
// lzma_index_buffer_decode() code anyway.
@@ -1638,34 +1678,70 @@ test_lzma_index_buffer_decode(void)
assert_lzma_ret(lzma_index_buffer_decode(NULL, NULL, NULL, NULL,
NULL, 0), LZMA_PROG_ERROR);
- lzma_index *idx;
uint64_t memlimit = MEMLIMIT;
size_t in_pos = 0;
+ lzma_index *idx_allocated = lzma_index_init(NULL);
+ lzma_index *idx = idx_allocated;
assert_lzma_ret(lzma_index_buffer_decode(&idx, NULL, NULL, NULL,
NULL, 0), LZMA_PROG_ERROR);
+ assert_true(idx == NULL);
+ idx = idx_allocated;
assert_lzma_ret(lzma_index_buffer_decode(&idx, &memlimit, NULL,
NULL, NULL, 0), LZMA_PROG_ERROR);
+ assert_true(idx == NULL);
+ idx = idx_allocated;
assert_lzma_ret(lzma_index_buffer_decode(&idx, &memlimit, NULL,
decode_buffer, NULL, 0), LZMA_PROG_ERROR);
+ assert_true(idx == NULL);
+ idx = idx_allocated;
assert_lzma_ret(lzma_index_buffer_decode(&idx, &memlimit, NULL,
decode_buffer, NULL, 0), LZMA_PROG_ERROR);
+ assert_true(idx == NULL);
+ idx = idx_allocated;
assert_lzma_ret(lzma_index_buffer_decode(&idx, &memlimit, NULL,
decode_buffer, &in_pos, 0), LZMA_DATA_ERROR);
+ assert_true(idx == NULL);
in_pos = 1;
+ idx = idx_allocated;
assert_lzma_ret(lzma_index_buffer_decode(&idx, &memlimit, NULL,
decode_buffer, &in_pos, 0), LZMA_PROG_ERROR);
+ assert_true(idx == NULL);
+
+ // Test too short input
in_pos = 0;
+ idx = idx_allocated;
+ assert_lzma_ret(lzma_index_buffer_decode(&idx, &memlimit, NULL,
+ decode_buffer, &in_pos, decode_buffer_size - 1),
+ LZMA_DATA_ERROR);
+ assert_true(idx == NULL);
+
+ lzma_index_end(idx_allocated, NULL);
+ idx_allocated = NULL;
// Test expected successful decode
+ in_pos = 0;
assert_lzma_ret(lzma_index_buffer_decode(&idx, &memlimit, NULL,
decode_buffer, &in_pos, decode_buffer_size), LZMA_OK);
+ assert_uint_eq(in_pos, decode_buffer_size);
+ assert_true(index_is_equal(decode_test_index, idx));
+
+ lzma_index_end(idx, NULL);
+
+ // Test too much input. This won't read past
+ // the end of the allocated array (decode_buffer_size bytes).
+ in_pos = 0;
+ assert_lzma_ret(lzma_index_buffer_decode(&idx, &memlimit, NULL,
+ decode_buffer, &in_pos, decode_buffer_size + 16),
+ LZMA_OK);
+
+ assert_uint_eq(in_pos, decode_buffer_size);
assert_true(index_is_equal(decode_test_index, idx));
lzma_index_end(idx, NULL);
diff --git a/tests/test_index_hash.c b/tests/test_index_hash.c
index f3c6e8f..842d534 100644
--- a/tests/test_index_hash.c
+++ b/tests/test_index_hash.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file test_index_hash.c
@@ -9,9 +11,6 @@
//
// Author: Jia Tan
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tests.h"
diff --git a/tests/test_lzip_decoder.c b/tests/test_lzip_decoder.c
index 3743d43..cee97b8 100644
--- a/tests/test_lzip_decoder.c
+++ b/tests/test_lzip_decoder.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file test_lzip_decoder.c
@@ -5,9 +7,6 @@
//
// Author: Jia Tan
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tests.h"
@@ -43,11 +42,11 @@ basic_lzip_decode(const char *src, const uint32_t expected_crc)
lzma_stream strm = LZMA_STREAM_INIT;
assert_lzma_ret(lzma_lzip_decoder(&strm, MEMLIMIT, 0), LZMA_OK);
- uint8_t *output_buffer = tuktest_malloc(DECODE_CHUNK_SIZE);
+ uint8_t output_buffer[DECODE_CHUNK_SIZE];
strm.next_in = data;
strm.next_out = output_buffer;
- strm.avail_out = DECODE_CHUNK_SIZE;
+ strm.avail_out = sizeof(output_buffer);
// Feed 1 byte at a time to the decoder to look for any bugs
// when switching between decoding sequences
@@ -59,12 +58,8 @@ basic_lzip_decode(const char *src, const uint32_t expected_crc)
checksum = lzma_crc32(output_buffer,
(size_t)(strm.next_out - output_buffer),
checksum);
- // No need to free output_buffer because it will
- // automatically be freed at the end of the test by
- // tuktest.
- output_buffer = tuktest_malloc(DECODE_CHUNK_SIZE);
strm.next_out = output_buffer;
- strm.avail_out = DECODE_CHUNK_SIZE;
+ strm.avail_out = sizeof(output_buffer);
}
}
@@ -126,12 +121,12 @@ trailing_helper(const char *src, const uint32_t expected_data_checksum,
assert_lzma_ret(lzma_lzip_decoder(&strm, MEMLIMIT,
LZMA_CONCATENATED), LZMA_OK);
- uint8_t *output_buffer = tuktest_malloc(DECODE_CHUNK_SIZE);
+ uint8_t output_buffer[DECODE_CHUNK_SIZE];
strm.next_in = data;
- strm.next_out = output_buffer;
strm.avail_in = file_size;
- strm.avail_out = DECODE_CHUNK_SIZE;
+ strm.next_out = output_buffer;
+ strm.avail_out = sizeof(output_buffer);
lzma_ret ret = LZMA_OK;
while (ret == LZMA_OK) {
@@ -140,12 +135,8 @@ trailing_helper(const char *src, const uint32_t expected_data_checksum,
checksum = lzma_crc32(output_buffer,
(size_t)(strm.next_out - output_buffer),
checksum);
- // No need to free output_buffer because it will
- // automatically be freed at the end of the test by
- // tuktest.
- output_buffer = tuktest_malloc(DECODE_CHUNK_SIZE);
strm.next_out = output_buffer;
- strm.avail_out = DECODE_CHUNK_SIZE;
+ strm.avail_out = sizeof(output_buffer);
}
}
@@ -182,20 +173,18 @@ decode_expect_error(const char *src, lzma_ret expected_error)
strm.avail_in = file_size;
strm.next_in = data;
- strm.avail_out = DECODE_CHUNK_SIZE;
- strm.next_out = output_buffer;
lzma_ret ret = LZMA_OK;
- while (ret == LZMA_OK) {
+ do {
// Discard output since we are only looking for errors
strm.next_out = output_buffer;
- strm.avail_out = DECODE_CHUNK_SIZE;
+ strm.avail_out = sizeof(output_buffer);
if (strm.avail_in == 0)
ret = lzma_code(&strm, LZMA_FINISH);
else
ret = lzma_code(&strm, LZMA_RUN);
- }
+ } while (ret == LZMA_OK);
assert_lzma_ret(ret, expected_error);
lzma_end(&strm);
@@ -233,26 +222,25 @@ test_v1_trailing(void)
static void
-test_concatentated(void)
+test_concatenated(void)
{
// First test a file with one v0 member and one v1 member
// The first member should contain "Hello\n" and
// the second member should contain "World!\n"
-
lzma_stream strm = LZMA_STREAM_INIT;
size_t file_size;
uint8_t *v0_v1 = tuktest_file_from_srcdir("files/good-2-v0-v1.lz",
- &file_size);
+ &file_size);
assert_lzma_ret(lzma_lzip_decoder(&strm, MEMLIMIT,
LZMA_CONCATENATED), LZMA_OK);
uint8_t output_buffer[DECODE_CHUNK_SIZE];
- strm.avail_in = file_size;
strm.next_in = v0_v1;
- strm.avail_out = DECODE_CHUNK_SIZE;
+ strm.avail_in = file_size;
strm.next_out = output_buffer;
+ strm.avail_out = sizeof(output_buffer);
assert_lzma_ret(lzma_code(&strm, LZMA_FINISH), LZMA_STREAM_END);
@@ -263,15 +251,15 @@ test_concatentated(void)
// The second file contains one v1 member and one v2 member
uint8_t *v1_v0 = tuktest_file_from_srcdir("files/good-2-v1-v0.lz",
- &file_size);
+ &file_size);
assert_lzma_ret(lzma_lzip_decoder(&strm, MEMLIMIT,
LZMA_CONCATENATED), LZMA_OK);
- strm.avail_in = file_size;
strm.next_in = v1_v0;
- strm.avail_out = DECODE_CHUNK_SIZE;
+ strm.avail_in = file_size;
strm.next_out = output_buffer;
+ strm.avail_out = sizeof(output_buffer);
assert_lzma_ret(lzma_code(&strm, LZMA_FINISH), LZMA_STREAM_END);
@@ -281,15 +269,15 @@ test_concatentated(void)
// The third file contains 2 v1 members
uint8_t *v1_v1 = tuktest_file_from_srcdir("files/good-2-v1-v1.lz",
- &file_size);
+ &file_size);
assert_lzma_ret(lzma_lzip_decoder(&strm, MEMLIMIT,
LZMA_CONCATENATED), LZMA_OK);
- strm.avail_in = file_size;
strm.next_in = v1_v1;
- strm.avail_out = DECODE_CHUNK_SIZE;
+ strm.avail_in = file_size;
strm.next_out = output_buffer;
+ strm.avail_out = sizeof(output_buffer);
assert_lzma_ret(lzma_code(&strm, LZMA_FINISH), LZMA_STREAM_END);
@@ -315,10 +303,10 @@ test_crc(void)
uint8_t output_buffer[DECODE_CHUNK_SIZE];
- strm.avail_in = file_size;
strm.next_in = data;
- strm.avail_out = DECODE_CHUNK_SIZE;
+ strm.avail_in = file_size;
strm.next_out = output_buffer;
+ strm.avail_out = sizeof(output_buffer);
assert_lzma_ret(lzma_code(&strm, LZMA_FINISH), LZMA_DATA_ERROR);
@@ -326,10 +314,10 @@ test_crc(void)
assert_lzma_ret(lzma_lzip_decoder(&strm, MEMLIMIT,
LZMA_CONCATENATED | LZMA_IGNORE_CHECK), LZMA_OK);
- strm.avail_in = file_size;
strm.next_in = data;
- strm.avail_out = DECODE_CHUNK_SIZE;
+ strm.avail_in = file_size;
strm.next_out = output_buffer;
+ strm.avail_out = sizeof(output_buffer);
assert_lzma_ret(lzma_code(&strm, LZMA_FINISH), LZMA_STREAM_END);
assert_uint_eq(strm.total_in, file_size);
@@ -338,10 +326,10 @@ test_crc(void)
assert_lzma_ret(lzma_lzip_decoder(&strm, MEMLIMIT,
LZMA_CONCATENATED | LZMA_TELL_ANY_CHECK), LZMA_OK);
- strm.avail_in = file_size;
strm.next_in = data;
- strm.avail_out = DECODE_CHUNK_SIZE;
+ strm.avail_in = file_size;
strm.next_out = output_buffer;
+ strm.avail_out = sizeof(output_buffer);
assert_lzma_ret(lzma_code(&strm, LZMA_FINISH), LZMA_GET_CHECK);
assert_uint_eq(lzma_get_check(&strm), LZMA_CHECK_CRC32);
@@ -367,7 +355,7 @@ test_invalid_magic_bytes(void)
strm.next_in = lzip_id_string;
strm.avail_in = sizeof(lzip_id_string);
strm.next_out = output_buffer;
- strm.avail_out = DECODE_CHUNK_SIZE;
+ strm.avail_out = sizeof(output_buffer);
assert_lzma_ret(lzma_code(&strm, LZMA_RUN),
LZMA_FORMAT_ERROR);
@@ -393,10 +381,10 @@ test_invalid_version(void)
static void
test_invalid_dictionary_size(void)
{
- // First file has too small dictionary size field
+ // The first file has a too small dictionary size field.
decode_expect_error("files/bad-1-v1-dict-1.lz", LZMA_DATA_ERROR);
- // Second file has too large dictionary size field
+ // The second file has a too large dictionary size field.
decode_expect_error("files/bad-1-v1-dict-2.lz", LZMA_DATA_ERROR);
}
@@ -426,7 +414,7 @@ static void
test_invalid_memlimit(void)
{
// A very low memlimit should prevent decoding.
- // Should be able to update the memlimit after failing
+ // It should be possible to update the memlimit after the error.
size_t file_size;
uint8_t *data = tuktest_file_from_srcdir("files/good-1-v1.lz",
&file_size);
@@ -440,12 +428,12 @@ test_invalid_memlimit(void)
strm.next_in = data;
strm.avail_in = file_size;
strm.next_out = output_buffer;
- strm.avail_out = DECODE_CHUNK_SIZE;
+ strm.avail_out = sizeof(output_buffer);
assert_lzma_ret(lzma_code(&strm, LZMA_FINISH), LZMA_MEMLIMIT_ERROR);
- // Up the memlimit so decoding can continue.
- // First only increase by a small amount and expect an error
+ // Up the memlimit so that decoding can continue.
+ // First only increase by a small amount and expect an error.
assert_lzma_ret(lzma_memlimit_set(&strm, 100), LZMA_MEMLIMIT_ERROR);
assert_lzma_ret(lzma_memlimit_set(&strm, MEMLIMIT), LZMA_OK);
@@ -474,7 +462,7 @@ main(int argc, char **argv)
tuktest_run(test_v1_decode);
tuktest_run(test_v0_trailing);
tuktest_run(test_v1_trailing);
- tuktest_run(test_concatentated);
+ tuktest_run(test_concatenated);
tuktest_run(test_crc);
tuktest_run(test_invalid_magic_bytes);
tuktest_run(test_invalid_version);
@@ -484,5 +472,4 @@ main(int argc, char **argv)
tuktest_run(test_invalid_memlimit);
return tuktest_end();
#endif
-
}
diff --git a/tests/test_memlimit.c b/tests/test_memlimit.c
index c45a44b..7e8f862 100644
--- a/tests/test_memlimit.c
+++ b/tests/test_memlimit.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file test_memlimit.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tests.h"
diff --git a/tests/test_microlzma.c b/tests/test_microlzma.c
new file mode 100644
index 0000000..c1d99d7
--- /dev/null
+++ b/tests/test_microlzma.c
@@ -0,0 +1,568 @@
+// SPDX-License-Identifier: 0BSD
+
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file test_microlzma.c
+/// \brief Tests MicroLZMA encoding and decoding
+//
+// Author: Jia Tan
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include "tests.h"
+
+#define BUFFER_SIZE 1024
+
+
+#ifdef HAVE_ENCODER_LZMA1
+
+// MicroLZMA encoded "Hello\nWorld\n" output size in bytes.
+#define ENCODED_OUTPUT_SIZE 17
+
+// Byte array of "Hello\nWorld\n". This is used for various encoder tests.
+static const uint8_t hello_world[] = { 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x0A,
+ 0x57, 0x6F, 0x72, 0x6C, 0x64, 0x0A };
+
+// This is the CRC32 value of the MicroLZMA encoding of "Hello\nWorld\n".
+// The settings used were based on LZMA_PRESET_DEFAULT as of liblzma 5.6.0.
+// This assumes MicroLZMA is correct in liblzma 5.6.0, which is safe
+// considering the encoded "Hello\nWorld\n" can successfully be decoded at
+// this time. This is to test for regressions that cause MicroLZMA output
+// to change.
+static const uint32_t hello_world_encoded_crc = 0x3CDE40A8;
+
+
+// Function implementation borrowed from lzma_decoder.c. It is needed to
+// ensure the first byte of a MicroLZMA stream is set correctly with the
+// negation of the LZMA properties.
+static bool
+lzma_lzma_lclppb_decode(lzma_options_lzma *options, uint8_t byte)
+{
+ if (byte > (4 * 5 + 4) * 9 + 8)
+ return true;
+
+ // See the file format specification to understand this.
+ options->pb = byte / (9 * 5);
+ byte -= options->pb * 9 * 5;
+ options->lp = byte / 9;
+ options->lc = byte - options->lp * 9;
+
+ return options->lc + options->lp > LZMA_LCLP_MAX;
+}
+
+
+///////////////////
+// Encoder tests //
+///////////////////
+
+// This tests a few of the basic options. These options are not unique to
+// MicroLZMA in any way, its mostly ensuring that the options are actually
+// being checked before initializing the decoder internals.
+static void
+test_encode_options(void)
+{
+ lzma_stream strm = LZMA_STREAM_INIT;
+ lzma_options_lzma opt_lzma;
+
+ // Initialize with default options.
+ assert_false(lzma_lzma_preset(&opt_lzma, LZMA_PRESET_DEFAULT));
+
+ // NULL stream
+ assert_lzma_ret(lzma_microlzma_encoder(NULL, &opt_lzma),
+ LZMA_PROG_ERROR);
+
+ // lc/lp/pb = 5/0/2 (lc invalid)
+ opt_lzma.lc = 5;
+ opt_lzma.lp = 0;
+ opt_lzma.pb = 2;
+ assert_lzma_ret(lzma_microlzma_encoder(&strm, &opt_lzma),
+ LZMA_OPTIONS_ERROR);
+
+ // lc/lp/pb = 0/5/2 (lp invalid)
+ opt_lzma.lc = 0;
+ opt_lzma.lp = 5;
+ opt_lzma.pb = 2;
+ assert_lzma_ret(lzma_microlzma_encoder(&strm, &opt_lzma),
+ LZMA_OPTIONS_ERROR);
+
+ // lc/lp/pb = 3/2/2 (lc + lp invalid)
+ opt_lzma.lc = 3;
+ opt_lzma.lp = 2;
+ opt_lzma.pb = 2;
+ assert_lzma_ret(lzma_microlzma_encoder(&strm, &opt_lzma),
+ LZMA_OPTIONS_ERROR);
+
+ // lc/lp/pb = 3/0/5 (pb invalid)
+ opt_lzma.lc = 3;
+ opt_lzma.lp = 0;
+ opt_lzma.pb = 5;
+ assert_lzma_ret(lzma_microlzma_encoder(&strm, &opt_lzma),
+ LZMA_OPTIONS_ERROR);
+
+ // Zero out lp, pb, lc options to not interfere with later tests.
+ opt_lzma.lp = 0;
+ opt_lzma.pb = 0;
+ opt_lzma.lc = 0;
+
+ // Set invalid dictionary size.
+ opt_lzma.dict_size = LZMA_DICT_SIZE_MIN - 1;
+ assert_lzma_ret(lzma_microlzma_encoder(&strm, &opt_lzma),
+ LZMA_OPTIONS_ERROR);
+
+ // Maximum dictionary size for the encoder, as described in lzma12.h
+ // is 1.5 GiB.
+ opt_lzma.dict_size = (UINT32_C(1) << 30) + (UINT32_C(1) << 29) + 1;
+ assert_lzma_ret(lzma_microlzma_encoder(&strm, &opt_lzma),
+ LZMA_OPTIONS_ERROR);
+
+ lzma_end(&strm);
+}
+
+
+static void
+test_encode_basic(void)
+{
+ lzma_stream strm = LZMA_STREAM_INIT;
+ lzma_options_lzma opt_lzma;
+
+ // The lzma_lzma_preset return value is inverse of what it perhaps
+ // should be, that is, it returns false on success.
+ assert_false(lzma_lzma_preset(&opt_lzma, LZMA_PRESET_DEFAULT));
+
+ // Initialize the encoder using the default options.
+ assert_lzma_ret(lzma_microlzma_encoder(&strm, &opt_lzma), LZMA_OK);
+
+ uint8_t output[BUFFER_SIZE];
+
+ strm.next_in = hello_world;
+ strm.avail_in = sizeof(hello_world);
+ strm.next_out = output;
+ strm.avail_out = sizeof(output);
+
+ // Everything must be encoded in one lzma_code() call.
+ assert_lzma_ret(lzma_code(&strm, LZMA_FINISH), LZMA_STREAM_END);
+
+ // Check that the entire input was consumed.
+ assert_uint_eq(strm.total_in, sizeof(hello_world));
+
+ // Check that the first byte in the output stream is not 0x00.
+ // In a regular raw LZMA stream the first byte is always 0x00.
+ // In MicroLZMA the first byte replaced by the bitwise-negation
+ // of the LZMA properties.
+ assert_uint(output[0], !=, 0x00);
+
+ const uint8_t props = ~output[0];
+
+ lzma_options_lzma test_options;
+ assert_false(lzma_lzma_lclppb_decode(&test_options, props));
+
+ assert_uint_eq(opt_lzma.lc, test_options.lc);
+ assert_uint_eq(opt_lzma.lp, test_options.lp);
+ assert_uint_eq(opt_lzma.pb, test_options.pb);
+
+ // Compute the check over the output data. This is compared to
+ // the expected check value.
+ const uint32_t check_val = lzma_crc32(output, strm.total_out, 0);
+
+ assert_uint_eq(check_val, hello_world_encoded_crc);
+
+ lzma_end(&strm);
+}
+
+
+// This tests the behavior when strm.avail_out is so small it cannot hold
+// the header plus 1 encoded byte (< 6).
+static void
+test_encode_small_out(void)
+{
+ lzma_stream strm = LZMA_STREAM_INIT;
+ lzma_options_lzma opt_lzma;
+
+ assert_false(lzma_lzma_preset(&opt_lzma, LZMA_PRESET_DEFAULT));
+
+ assert_lzma_ret(lzma_microlzma_encoder(&strm, &opt_lzma), LZMA_OK);
+
+ uint8_t output[BUFFER_SIZE];
+
+ strm.next_in = hello_world;
+ strm.avail_in = sizeof(hello_world);
+ strm.next_out = output;
+ strm.avail_out = 5;
+
+ // LZMA_PROG_ERROR is expected when strm.avail_out < 6
+ assert_lzma_ret(lzma_code(&strm, LZMA_FINISH), LZMA_PROG_ERROR);
+
+ // The encoder must be reset because coders cannot be used again
+ // after returning LZMA_PROG_ERROR.
+ assert_lzma_ret(lzma_microlzma_encoder(&strm, &opt_lzma), LZMA_OK);
+
+ // Reset strm.avail_out to be > 6, but not enough to hold all of the
+ // compressed data.
+ strm.avail_out = ENCODED_OUTPUT_SIZE - 1;
+
+ // Encoding should not return an error now.
+ assert_lzma_ret(lzma_code(&strm, LZMA_FINISH), LZMA_STREAM_END);
+ assert_uint(strm.total_in, <, sizeof(hello_world));
+
+ lzma_end(&strm);
+}
+
+
+// LZMA_FINISH is the only supported action. All others must
+// return LZMA_PROG_ERROR.
+static void
+test_encode_actions(void)
+{
+ lzma_stream strm = LZMA_STREAM_INIT;
+ lzma_options_lzma opt_lzma;
+
+ assert_false(lzma_lzma_preset(&opt_lzma, LZMA_PRESET_DEFAULT));
+
+ const lzma_action actions[] = {
+ LZMA_RUN,
+ LZMA_SYNC_FLUSH,
+ LZMA_FULL_FLUSH,
+ LZMA_FULL_BARRIER,
+ };
+
+ for (size_t i = 0; i < ARRAY_SIZE(actions); ++i) {
+ assert_lzma_ret(lzma_microlzma_encoder(&strm, &opt_lzma),
+ LZMA_OK);
+
+ uint8_t output[BUFFER_SIZE];
+
+ strm.next_in = hello_world;
+ strm.avail_in = sizeof(hello_world);
+ strm.next_out = output;
+ strm.avail_out = sizeof(output);
+
+ assert_lzma_ret(lzma_code(&strm, actions[i]),
+ LZMA_PROG_ERROR);
+ }
+
+ lzma_end(&strm);
+}
+#endif // HAVE_ENCODER_LZMA1
+
+
+///////////////////
+// Decoder tests //
+///////////////////
+
+#if defined(HAVE_DECODER_LZMA1) && defined(HAVE_ENCODER_LZMA1)
+
+// Byte array of "Goodbye World!". This is used for various decoder tests.
+static const uint8_t goodbye_world[] = { 0x47, 0x6F, 0x6F, 0x64, 0x62,
+ 0x79, 0x65, 0x20, 0x57, 0x6F, 0x72, 0x6C, 0x64, 0x21 };
+
+static uint8_t *goodbye_world_encoded = NULL;
+static size_t goodbye_world_encoded_size = 0;
+
+
+// Helper function to encode data and return the compressed size.
+static size_t
+basic_microlzma_encode(const uint8_t *input, size_t in_size,
+ uint8_t **compressed)
+{
+ lzma_stream strm = LZMA_STREAM_INIT;
+ lzma_options_lzma opt_lzma;
+
+ // Lazy way to set the output size since the input should never
+ // inflate by much in these simple test cases. This is tested to
+ // be large enough after encoding to fit the entire input, so if
+ // this assumption does not hold then this will fail.
+ const size_t out_size = in_size << 1;
+
+ *compressed = tuktest_malloc(out_size);
+
+ // Always encode with the default options for simplicity.
+ if (lzma_lzma_preset(&opt_lzma, LZMA_PRESET_DEFAULT))
+ goto decoder_setup_error;
+
+ if (lzma_microlzma_encoder(&strm, &opt_lzma) != LZMA_OK)
+ goto decoder_setup_error;
+
+ strm.next_in = input;
+ strm.avail_in = in_size;
+ strm.next_out = *compressed;
+ strm.avail_out = out_size;
+
+ if (lzma_code(&strm, LZMA_FINISH) != LZMA_STREAM_END)
+ goto decoder_setup_error;
+
+ // Check that the entire input was consumed and that it fit into
+ // the output buffer.
+ if (strm.total_in != in_size)
+ goto decoder_setup_error;
+
+ lzma_end(&strm);
+
+ // lzma_end() doesn't touch other members of lzma_stream than
+ // lzma_stream.internal so using strm.total_out here is fine.
+ return strm.total_out;
+
+decoder_setup_error:
+ tuktest_error("Failed to initialize decoder tests");
+ return 0;
+}
+
+
+static void
+test_decode_options(void)
+{
+ // NULL stream
+ assert_lzma_ret(lzma_microlzma_decoder(NULL, BUFFER_SIZE,
+ sizeof(hello_world), true,
+ LZMA_DICT_SIZE_DEFAULT), LZMA_PROG_ERROR);
+
+ // Uncompressed size larger than max
+ lzma_stream strm = LZMA_STREAM_INIT;
+ assert_lzma_ret(lzma_microlzma_decoder(&strm, BUFFER_SIZE,
+ LZMA_VLI_MAX + 1, true, LZMA_DICT_SIZE_DEFAULT),
+ LZMA_OPTIONS_ERROR);
+}
+
+
+// Test that decoding succeeds when uncomp_size is correct regardless of
+// the value of uncomp_size_is_exact.
+static void
+test_decode_uncomp_size_is_exact(void)
+{
+ lzma_stream strm = LZMA_STREAM_INIT;
+
+ assert_lzma_ret(lzma_microlzma_decoder(&strm,
+ goodbye_world_encoded_size,
+ sizeof(goodbye_world), true,
+ LZMA_DICT_SIZE_DEFAULT), LZMA_OK);
+
+ uint8_t output[BUFFER_SIZE];
+
+ strm.next_in = goodbye_world_encoded;
+ strm.avail_in = goodbye_world_encoded_size;
+ strm.next_out = output;
+ strm.avail_out = sizeof(output);
+
+ assert_lzma_ret(lzma_code(&strm, LZMA_RUN), LZMA_STREAM_END);
+ assert_uint_eq(strm.total_in, goodbye_world_encoded_size);
+
+ assert_uint_eq(strm.total_out, sizeof(goodbye_world));
+ assert_array_eq(goodbye_world, output, sizeof(goodbye_world));
+
+ // Reset decoder with uncomp_size_is_exact set to false and
+ // uncomp_size set to correct value. Also test using the
+ // uncompressed size as the dictionary size.
+ assert_lzma_ret(lzma_microlzma_decoder(&strm,
+ goodbye_world_encoded_size,
+ sizeof(goodbye_world), false,
+ sizeof(goodbye_world)), LZMA_OK);
+
+ strm.next_in = goodbye_world_encoded;
+ strm.avail_in = goodbye_world_encoded_size;
+ strm.next_out = output;
+ strm.avail_out = sizeof(output);
+
+ assert_lzma_ret(lzma_code(&strm, LZMA_RUN), LZMA_STREAM_END);
+ assert_uint_eq(strm.total_in, goodbye_world_encoded_size);
+
+ assert_uint_eq(strm.total_out, sizeof(goodbye_world));
+ assert_array_eq(goodbye_world, output, sizeof(goodbye_world));
+
+ lzma_end(&strm);
+}
+
+
+// This tests decoding when MicroLZMA decoder is called with
+// an incorrect uncompressed size.
+static void
+test_decode_uncomp_size_wrong(void)
+{
+ lzma_stream strm = LZMA_STREAM_INIT;
+ assert_lzma_ret(lzma_microlzma_decoder(&strm,
+ goodbye_world_encoded_size,
+ sizeof(goodbye_world) + 1, false,
+ LZMA_DICT_SIZE_DEFAULT), LZMA_OK);
+
+ uint8_t output[BUFFER_SIZE];
+
+ strm.next_in = goodbye_world_encoded;
+ strm.avail_in = goodbye_world_encoded_size;
+ strm.next_out = output;
+ strm.avail_out = sizeof(output);
+
+ // LZMA_OK should be returned because the input size given was
+ // larger than the actual encoded size. The decoder is expecting
+ // more input to possibly fill the uncompressed size that was set.
+ assert_lzma_ret(lzma_code(&strm, LZMA_FINISH), LZMA_OK);
+
+ assert_uint_eq(strm.total_out, sizeof(goodbye_world));
+
+ assert_array_eq(goodbye_world, output, sizeof(goodbye_world));
+
+ // Next, test with uncomp_size_is_exact set.
+ assert_lzma_ret(lzma_microlzma_decoder(&strm,
+ goodbye_world_encoded_size,
+ sizeof(goodbye_world) + 1, true,
+ LZMA_DICT_SIZE_DEFAULT), LZMA_OK);
+
+ strm.next_in = goodbye_world_encoded;
+ strm.avail_in = goodbye_world_encoded_size;
+ strm.next_out = output;
+ strm.avail_out = sizeof(output);
+
+ // No error detected, even though all input was consumed and there
+ // is more room in the output buffer.
+ //
+ // FIXME? LZMA_FINISH tells that no more input is coming and
+ // the MicroLZMA decoder knows the exact compressed size from
+ // the initialization as well. So should it return LZMA_DATA_ERROR
+ // on the first call instead of relying on the generic lzma_code()
+ // logic to eventually get LZMA_BUF_ERROR?
+ assert_lzma_ret(lzma_code(&strm, LZMA_FINISH), LZMA_OK);
+ assert_lzma_ret(lzma_code(&strm, LZMA_FINISH), LZMA_OK);
+ assert_lzma_ret(lzma_code(&strm, LZMA_FINISH), LZMA_BUF_ERROR);
+
+ assert_uint_eq(strm.total_out, sizeof(goodbye_world));
+ assert_array_eq(goodbye_world, output, sizeof(goodbye_world));
+
+ // Reset stream with uncomp_size smaller than the real
+ // uncompressed size.
+ assert_lzma_ret(lzma_microlzma_decoder(&strm,
+ goodbye_world_encoded_size,
+ ARRAY_SIZE(hello_world) - 1, true,
+ LZMA_DICT_SIZE_DEFAULT), LZMA_OK);
+
+ strm.next_in = goodbye_world_encoded;
+ strm.avail_in = goodbye_world_encoded_size;
+ strm.next_out = output;
+ strm.avail_out = sizeof(output);
+
+ // This case actually results in an error since it decodes the full
+ // uncompressed size but the range coder is not in the proper state
+ // for the stream to end.
+ assert_lzma_ret(lzma_code(&strm, LZMA_RUN), LZMA_DATA_ERROR);
+
+ lzma_end(&strm);
+}
+
+
+static void
+test_decode_comp_size_wrong(void)
+{
+ lzma_stream strm = LZMA_STREAM_INIT;
+
+ // goodbye_world_encoded_size + 1 is safe because extra space was
+ // allocated for goodbye_world_encoded. The extra space isn't
+ // initialized but it shouldn't be read either, thus Valgrind
+ // has to remain happy with this code.
+ assert_lzma_ret(lzma_microlzma_decoder(&strm,
+ goodbye_world_encoded_size + 1,
+ sizeof(goodbye_world), true,
+ LZMA_DICT_SIZE_DEFAULT), LZMA_OK);
+
+ uint8_t output[BUFFER_SIZE];
+
+ strm.next_in = goodbye_world_encoded;
+ strm.avail_in = goodbye_world_encoded_size;
+ strm.next_out = output;
+ strm.avail_out = sizeof(output);
+
+ // When uncomp_size_is_exact is set, the compressed size must be
+ // correct or else LZMA_DATA_ERROR is returned.
+ assert_lzma_ret(lzma_code(&strm, LZMA_FINISH), LZMA_DATA_ERROR);
+
+ assert_lzma_ret(lzma_microlzma_decoder(&strm,
+ goodbye_world_encoded_size + 1,
+ sizeof(goodbye_world), false,
+ LZMA_DICT_SIZE_DEFAULT), LZMA_OK);
+
+ strm.next_in = goodbye_world_encoded;
+ strm.avail_in = goodbye_world_encoded_size;
+ strm.next_out = output;
+ strm.avail_out = sizeof(output);
+
+ // When uncomp_size_is_exact is not set, the decoder does not
+ // detect when the compressed size is wrong as long as all of the
+ // expected output has been decoded. This is because the decoder
+ // assumes that the real uncompressed size might be bigger than
+ // the specified value and in that case more input might be needed
+ // as well.
+ assert_lzma_ret(lzma_code(&strm, LZMA_FINISH), LZMA_STREAM_END);
+
+ lzma_end(&strm);
+}
+
+
+static void
+test_decode_bad_lzma_properties(void)
+{
+ // Alter first byte to encode invalid LZMA properties.
+ uint8_t *compressed = tuktest_malloc(goodbye_world_encoded_size);
+ memcpy(compressed, goodbye_world_encoded, goodbye_world_encoded_size);
+
+ // lc=3, lp=2, pb=2
+ compressed[0] = (uint8_t)~0x6FU;
+
+ lzma_stream strm = LZMA_STREAM_INIT;
+ assert_lzma_ret(lzma_microlzma_decoder(&strm,
+ goodbye_world_encoded_size,
+ sizeof(goodbye_world), false,
+ LZMA_DICT_SIZE_DEFAULT), LZMA_OK);
+
+ uint8_t output[BUFFER_SIZE];
+
+ strm.next_in = compressed;
+ strm.avail_in = goodbye_world_encoded_size;
+ strm.next_out = output;
+ strm.avail_out = sizeof(output);
+
+ assert_lzma_ret(lzma_code(&strm, LZMA_RUN), LZMA_OPTIONS_ERROR);
+
+ // Use valid, but incorrect LZMA properties.
+ // lc=3, lp=1, pb=2
+ compressed[0] = (uint8_t)~0x66;
+
+ assert_lzma_ret(lzma_microlzma_decoder(&strm,
+ goodbye_world_encoded_size,
+ ARRAY_SIZE(goodbye_world), true,
+ LZMA_DICT_SIZE_DEFAULT), LZMA_OK);
+
+ strm.next_in = compressed;
+ strm.avail_in = goodbye_world_encoded_size;
+ strm.next_out = output;
+ strm.avail_out = sizeof(output);
+
+ assert_lzma_ret(lzma_code(&strm, LZMA_RUN), LZMA_DATA_ERROR);
+
+ lzma_end(&strm);
+}
+#endif
+
+
+extern int
+main(int argc, char **argv)
+{
+ tuktest_start(argc, argv);
+
+#ifndef HAVE_ENCODER_LZMA1
+ tuktest_early_skip("LZMA1 encoder disabled");
+#else
+ tuktest_run(test_encode_options);
+ tuktest_run(test_encode_basic);
+ tuktest_run(test_encode_small_out);
+ tuktest_run(test_encode_actions);
+
+ // MicroLZMA decoder tests require the basic encoder functionality.
+# ifdef HAVE_DECODER_LZMA1
+ goodbye_world_encoded_size = basic_microlzma_encode(goodbye_world,
+ sizeof(goodbye_world), &goodbye_world_encoded);
+
+ tuktest_run(test_decode_options);
+ tuktest_run(test_decode_uncomp_size_is_exact);
+ tuktest_run(test_decode_uncomp_size_wrong);
+ tuktest_run(test_decode_comp_size_wrong);
+ tuktest_run(test_decode_bad_lzma_properties);
+# endif
+
+ return tuktest_end();
+#endif
+}
diff --git a/tests/test_scripts.sh b/tests/test_scripts.sh
index ee82361..ca9600e 100755
--- a/tests/test_scripts.sh
+++ b/tests/test_scripts.sh
@@ -1,18 +1,18 @@
#!/bin/sh
+# SPDX-License-Identifier: 0BSD
###############################################################################
#
# Author: Jonathan Nieder
#
-# This file has been put into the public domain.
-# You can do whatever you want with this file.
-#
###############################################################################
# If scripts weren't built, this test is skipped.
-XZ=../src/xz/xz
-XZDIFF=../src/scripts/xzdiff
-XZGREP=../src/scripts/xzgrep
+# When this is run from CMake, $1 is a relative path
+# to the directory with the executables and the scripts.
+XZ=${1:-../src/xz}/xz
+XZDIFF=${1:-../src/scripts}/xzdiff
+XZGREP=${1:-../src/scripts}/xzgrep
for i in XZ XZDIFF XZGREP; do
eval test -x "\$$i" && continue
@@ -23,14 +23,15 @@ done
# Installing the scripts in this case is a bit silly but they
# could still be used with other decompression tools so configure
# doesn't automatically disable scripts if decoders are disabled.
-if grep 'define HAVE_DECODERS' ../config.h > /dev/null ; then
+if test ! -f ../config.h \
+ || grep 'define HAVE_DECODERS' ../config.h > /dev/null ; then
:
else
echo "Decompression support is disabled, skipping this test."
exit 77
fi
-PATH=`pwd`/../src/xz:$PATH
+PATH=`pwd`/${1:-../src/xz}:$PATH
export PATH
test -z "$srcdir" && srcdir=.
diff --git a/tests/test_stream_flags.c b/tests/test_stream_flags.c
index 2248e67..3bc48be 100644
--- a/tests/test_stream_flags.c
+++ b/tests/test_stream_flags.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file test_stream_flags.c
@@ -6,9 +8,6 @@
// Authors: Jia Tan
// Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tests.h"
diff --git a/tests/test_suffix.sh b/tests/test_suffix.sh
new file mode 100755
index 0000000..7fc5996
--- /dev/null
+++ b/tests/test_suffix.sh
@@ -0,0 +1,192 @@
+#!/bin/sh
+# SPDX-License-Identifier: 0BSD
+
+###############################################################################
+#
+# Author: Jia Tan
+#
+###############################################################################
+
+# Optional argument:
+# $1 = directory of the xz executable
+
+# If xz was not built, skip this test. Autotools and CMake put
+# the xz executable in a different location.
+XZ=${1:-../src/xz}/xz
+if test ! -x "$XZ"; then
+ echo "xz was not built, skipping this test."
+ exit 77
+fi
+
+# If compression or decompression support is missing, this test is skipped.
+# This isn't perfect because it does not specifically check for LZMA1/2
+# filters. Many of the other tests also assume LZMA1/2 support if encoders
+# or decoders are enabled.
+if test ! -f ../config.h ; then
+ :
+elif grep 'define HAVE_ENCODERS' ../config.h > /dev/null \
+ && grep 'define HAVE_DECODERS' ../config.h > /dev/null ; then
+ :
+else
+ echo "Compression or decompression support is disabled, skipping this test."
+ exit 77
+fi
+
+# Create temporary input file. The file contents are not important.
+SUFFIX_INPUT="suffix_temp"
+SUFFIX_INPUT_FILES="$SUFFIX_INPUT"_files
+SUFFIX_INPUT_FILES0="$SUFFIX_INPUT"_files0
+
+# Remove possible leftover temporary files
+rm -f \
+ "$SUFFIX_INPUT" \
+ "$SUFFIX_INPUT.foo" \
+ "$SUFFIX_INPUT_FILES" \
+ "$SUFFIX_INPUT_FILES"
+
+echo "foobar" > "$SUFFIX_INPUT"
+
+# Test basic suffix when compressing with raw format.
+if "$XZ" -zfk --suffix=".foo" -Fraw --lzma1=preset=0 "$SUFFIX_INPUT" ; then
+ :
+else
+ echo "Failed to compress a file with a suffix set in raw format"
+ exit 1
+fi
+
+# Test the output file is named properly.
+if test -f "$SUFFIX_INPUT.foo" ; then
+ :
+else
+ echo "Raw format compressed output file not named properly"
+ exit 1
+fi
+
+# Expect an error when compressing with raw format without a suffix
+if "$XZ" -zfk -Fraw --lzma1=preset=0 "$SUFFIX_INPUT" 2> /dev/null; then
+ echo "Error not reported when compressing in raw format without a suffix"
+ exit 1
+fi
+
+# Expect an error when decompressing with raw format without a suffix
+if "$XZ" -df -Fraw --lzma1=preset=0 "$SUFFIX_INPUT.foo" 2> /dev/null; then
+ echo "Error not reported when decompressing in raw format without a suffix"
+ exit 1
+fi
+
+# Test basic decompression with raw format and a suffix. This will also
+# delete $SUFFIX_INPUT.foo
+if "$XZ" -df --suffix=".foo" -Fraw --lzma1=preset=0 "$SUFFIX_INPUT.foo"; then
+ :
+else
+ echo "Failed to decompress a file with a suffix set in raw format"
+ exit 1
+fi
+
+# Test basic compression with .xz format and a suffix
+if "$XZ" -zfk --suffix=".foo" --lzma2=preset=0 "$SUFFIX_INPUT" ; then
+ :
+else
+ echo "Failed to compress a file with a suffix set in .xz format"
+ exit 1
+fi
+
+# Test the output file is named properly.
+if test -f "$SUFFIX_INPUT.foo" ; then
+ :
+else
+ echo ".xz format compressed output file named properly"
+ exit 1
+fi
+
+# This will delete $SUFFIX_INPUT.foo
+if "$XZ" -df --suffix=".foo" "$SUFFIX_INPUT.foo"; then
+ :
+else
+ echo "Failed to decompress a file with a suffix set in .xz format"
+ exit 1
+fi
+
+# Test reading from stdin in raw mode. This was broken in
+# cc5aa9ab138beeecaee5a1e81197591893ee9ca0 and fixed in
+# 837ea40b1c9d4998cac4500b55171bf33e0c31a6
+if echo foo | "$XZ" -Fraw --lzma1=preset=0 > /dev/null ; then
+ :
+else
+ echo "Implicit write to stdout not detected"
+ exit 1
+fi
+
+# Create two temporary files to be used with --files and --files0.
+printf "$SUFFIX_INPUT\n" > "$SUFFIX_INPUT_FILES"
+printf "$SUFFIX_INPUT\0" > "$SUFFIX_INPUT_FILES0"
+
+# Test proper handling of --files/--files0 when no suffix is set. This
+# must result in an error because xz does not know how to rename the output
+# file from the input files. This caused a segmentation fault due to a
+# mistake in f481523baac946fa3bc13d79186ffaf0c0b818a7, which was fixed by
+# 0a601ddc89fd7e1370807c6b58964f361dfcd34a.
+if "$XZ" -Fraw --lzma1=preset=0 --files="$SUFFIX_INPUT_FILES" 2> /dev/null ; then
+ echo "Failed to report error when compressing a file specified by --files in raw mode without a suffix"
+ exit 1
+fi
+
+if "$XZ" -Fraw --lzma1=preset=0 --files0="$SUFFIX_INPUT_FILES0" 2> /dev/null ; then
+ echo "Failed to report error when compressing a file specified by --files0 in raw mode without a suffix"
+ exit 1
+fi
+
+# Test proper suffix usage in raw mode with --files and --files0.
+if "$XZ" -zfk -Fraw --lzma1=preset=0 --suffix=.foo --files="$SUFFIX_INPUT_FILES" ; then
+ :
+else
+ echo "Error compressing a file specified by --files in raw mode with a suffix set"
+ exit 1
+fi
+
+if test -f "$SUFFIX_INPUT.foo" ; then
+ :
+else
+ echo "Entry processed by --files not named properly"
+ exit 1
+fi
+
+# Remove the artifact so we can be sure the next test executes properly.
+rm "$SUFFIX_INPUT.foo"
+
+if "$XZ" -zfk -Fraw --lzma1=preset=0 --suffix=.foo --files0="$SUFFIX_INPUT_FILES0" ; then
+ :
+else
+ echo "Error compressing a file specified by --files0 in raw mode with a suffix set"
+ exit 1
+fi
+
+if test -f "$SUFFIX_INPUT.foo" ; then
+ :
+else
+ echo "Entry processed by --files0 not named properly"
+ exit 1
+fi
+
+# When the file type cannot be determined by xz, it will copy the contents
+# of the file only if -c,--stdout is used. This was broken by
+# 837ea40b1c9d4998cac4500b55171bf33e0c31a6 and fixed by
+# f481523baac946fa3bc13d79186ffaf0c0b818a7.
+if echo foo | "$XZ" -df > /dev/null 2>&1; then
+ echo "Failed to report error when decompressing unknown file type without -c,--stdout"
+ exit 1
+fi
+
+if echo foo | "$XZ" -dfc > /dev/null; then
+ :
+else
+ echo "Failed to copy input to standard out when decompressing unknown file type with -c,--stdout"
+ exit 1
+fi
+
+# Remove remaining test artifacts
+rm -f \
+ "$SUFFIX_INPUT" \
+ "$SUFFIX_INPUT.foo" \
+ "$SUFFIX_INPUT_FILES" \
+ "$SUFFIX_INPUT_FILES0"
diff --git a/tests/test_vli.c b/tests/test_vli.c
index 996b775..51487dc 100644
--- a/tests/test_vli.c
+++ b/tests/test_vli.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file test_vli.c
@@ -5,9 +7,6 @@
//
// Author: Jia Tan
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tests.h"
diff --git a/tests/tests.cmake b/tests/tests.cmake
new file mode 100644
index 0000000..62c546c
--- /dev/null
+++ b/tests/tests.cmake
@@ -0,0 +1,198 @@
+# SPDX-License-Identifier: 0BSD
+
+#############################################################################
+#
+# Optional file to be included by the top-level CMakeLists.txt to run tests
+#
+# The CMake rules for the tests are in this separate optional file so
+# that it's trivial to just delete the whole "tests" directory and still
+# get an otherwise normal CMake-based build. This way it's easy to ensure
+# that nothing in the "tests" directory can affect the build process.
+#
+# Author: Lasse Collin
+#
+#############################################################################
+
+include(CTest)
+
+if(BUILD_TESTING)
+ #################
+ # liblzma tests #
+ #################
+
+ set(LIBLZMA_TESTS
+ test_bcj_exact_size
+ test_block_header
+ test_check
+ test_filter_flags
+ test_filter_str
+ test_hardware
+ test_index
+ test_index_hash
+ test_lzip_decoder
+ test_memlimit
+ test_stream_flags
+ test_vli
+ )
+
+ # MicroLZMA encoder is needed for both encoder and decoder tests.
+ # If MicroLZMA decoder is not configured but LZMA1 decoder is, then
+ # test_microlzma will fail to compile because this configuration is
+ # not possible in the Autotools build, so the test was not made to
+ # support it since it would have required additional changes.
+ if (MICROLZMA_ENCODER AND (MICROLZMA_DECODER
+ OR NOT "lzma1" IN_LIST DECODERS))
+ list(APPEND LIBLZMA_TESTS test_microlzma)
+ endif()
+
+ foreach(TEST IN LISTS LIBLZMA_TESTS)
+ add_executable("${TEST}" "tests/${TEST}.c")
+
+ target_include_directories("${TEST}" PRIVATE
+ src/common
+ src/liblzma/api
+ src/liblzma
+ )
+
+ target_link_libraries("${TEST}" PRIVATE liblzma)
+
+ # Put the test programs into their own subdirectory so they don't
+ # pollute the top-level dir which might contain xz and xzdec.
+ set_target_properties("${TEST}" PROPERTIES
+ RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/tests_bin"
+ )
+
+ add_test(NAME "${TEST}"
+ COMMAND "${CMAKE_CURRENT_BINARY_DIR}/tests_bin/${TEST}"
+ )
+
+ # Set srcdir environment variable so that the tests find their
+ # input files from the source tree.
+ #
+ # Set the return code for skipped tests to match Automake convention.
+ set_tests_properties("${TEST}" PROPERTIES
+ ENVIRONMENT "srcdir=${CMAKE_CURRENT_SOURCE_DIR}/tests"
+ SKIP_RETURN_CODE 77
+ )
+ endforeach()
+
+
+ ###########################
+ # Command line tool tests #
+ ###########################
+
+ # Since the CMake-based build doesn't use config.h, the test scripts
+ # cannot grep the contents of config.h to know which features have
+ # been disabled. When config.h is missing, they assume that all
+ # features are enabled. Thus, check if certain groups of features have
+ # been disabled and then possibly skip some of the tests entirely instead
+ # of letting them fail.
+ set(SUPPORTED_FILTERS_SORTED "${SUPPORTED_FILTERS}")
+ list(SORT SUPPORTED_FILTERS_SORTED)
+
+ set(ENCODERS_SORTED "${ENCODERS}")
+ list(SORT ENCODERS_SORTED)
+
+ if("${ENCODERS_SORTED}" STREQUAL "${SUPPORTED_FILTERS_SORTED}")
+ set(HAVE_ALL_ENCODERS ON)
+ else()
+ set(HAVE_ALL_ENCODERS OFF)
+ endif()
+
+ set(DECODERS_SORTED "${DECODERS}")
+ list(SORT DECODERS_SORTED)
+
+ if("${DECODERS_SORTED}" STREQUAL "${SUPPORTED_FILTERS_SORTED}")
+ set(HAVE_ALL_DECODERS ON)
+ else()
+ set(HAVE_ALL_DECODERS OFF)
+ endif()
+
+ set(ADDITIONAL_SUPPORTED_CHECKS_SORTED "${ADDITIONAL_SUPPORTED_CHECKS}")
+ list(SORT ADDITIONAL_SUPPORTED_CHECKS_SORTED)
+
+ set(ADDITIONAL_CHECK_TYPES_SORTED "${ADDITIONAL_CHECK_TYPES}")
+ list(SORT ADDITIONAL_CHECK_TYPES_SORTED)
+
+ if("${ADDITIONAL_SUPPORTED_CHECKS_SORTED}" STREQUAL
+ "${ADDITIONAL_CHECK_TYPES_SORTED}")
+ set(HAVE_ALL_CHECK_TYPES ON)
+ else()
+ set(HAVE_ALL_CHECK_TYPES OFF)
+ endif()
+
+ # test_scripts.sh only needs LZMA2 decoder and CRC32.
+ if(UNIX AND HAVE_DECODERS)
+ file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test_scripts")
+
+ add_test(NAME test_scripts.sh
+ COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/tests/test_scripts.sh" ".."
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test_scripts"
+ )
+
+ set_tests_properties(test_scripts.sh PROPERTIES
+ ENVIRONMENT "srcdir=${CMAKE_CURRENT_SOURCE_DIR}/tests"
+ SKIP_RETURN_CODE 77
+ )
+ endif()
+
+ # test_suffix.sh only needs LZMA2 encoder and decoder.
+ if(UNIX AND HAVE_ENCODERS AND HAVE_DECODERS)
+ file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test_suffix")
+
+ add_test(NAME test_suffix.sh
+ COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/tests/test_suffix.sh" ".."
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test_suffix"
+ )
+
+ set_tests_properties(test_suffix.sh PROPERTIES
+ SKIP_RETURN_CODE 77
+ )
+ endif()
+
+ # The test_compress.sh based tests compress and decompress using different
+ # filters so run it only if all encoders and decoders have been enabled.
+ if(UNIX AND HAVE_ALL_ENCODERS AND HAVE_ALL_DECODERS)
+ file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test_compress")
+
+ add_executable(create_compress_files tests/create_compress_files.c)
+ target_include_directories(create_compress_files PRIVATE src/common)
+ set_target_properties(create_compress_files PROPERTIES
+ RUNTIME_OUTPUT_DIRECTORY test_compress)
+
+ foreach(T compress_generated_abc
+ compress_generated_text
+ compress_generated_random)
+ add_test(NAME "test_${T}"
+ COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/tests/test_compress.sh"
+ "${T}" ".."
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test_compress"
+ )
+
+ set_tests_properties("test_${T}" PROPERTIES
+ ENVIRONMENT "srcdir=${CMAKE_CURRENT_SOURCE_DIR}/tests"
+ SKIP_RETURN_CODE 77
+ )
+ endforeach()
+ endif()
+
+ # test_files.sh decompresses files that use different filters and
+ # check types so run it only if support for all of them has been enabled.
+ if(UNIX AND HAVE_ALL_DECODERS AND HAVE_ALL_CHECK_TYPES AND LZIP_DECODER)
+ # test_files.sh doesn't make any temporary files but it
+ # must not be run at the top-level build directory because
+ # it checks if ../config.h exists. We don't want to read
+ # files outside the build directory!
+ file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test_files")
+
+ add_test(NAME test_files.sh
+ COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/tests/test_files.sh" ".."
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test_files"
+ )
+
+ set_tests_properties(test_files.sh PROPERTIES
+ ENVIRONMENT "srcdir=${CMAKE_CURRENT_SOURCE_DIR}/tests"
+ SKIP_RETURN_CODE 77
+ )
+ endif()
+endif()
diff --git a/tests/tests.h b/tests/tests.h
index 2d42700..f706cab 100644
--- a/tests/tests.h
+++ b/tests/tests.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tests.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_TESTS_H
diff --git a/tests/tuktest.h b/tests/tuktest.h
index 508eace..12abd53 100644
--- a/tests/tuktest.h
+++ b/tests/tuktest.h
@@ -1,10 +1,13 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuktest.h
/// \brief Helper macros for writing simple test programs
-/// \version 2023-01-08
+/// \version 2024-02-14
///
-/// Some inspiration was taken from STest by Keith Nicholas.
+/// Some inspiration was taken from Seatest by Keith Nicholas and
+/// from STest which is a fork of Seatest by Jia Tan.
///
/// This is standard C99/C11 only and thus should be fairly portable
/// outside POSIX systems too.
@@ -110,8 +113,8 @@
/// Meson: https://mesonbuild.com/Unit-tests.html
///
/// CMake handles passing and failing tests by default but treats hard
-/// errors as regular fails. To CMake support skipped tests correctly,
-/// one has to set the SKIP_RETURN_CODE property for each test:
+/// errors as regular fails. To make CMake support skipped tests
+/// correctly, one has to set the SKIP_RETURN_CODE property for each test:
///
/// set_tests_properties(foo_test_name PROPERTIES SKIP_RETURN_CODE 77)
///
@@ -121,9 +124,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef TUKTEST_H
@@ -155,14 +155,14 @@
// This is silencing warnings about unused functions. Not all test programs
// need all functions from this header.
-#if TUKTEST_GNUC_REQ(3, 0)
+#if TUKTEST_GNUC_REQ(3, 0) || defined(__clang__)
# define tuktest_maybe_unused __attribute__((__unused__))
#else
# define tuktest_maybe_unused
#endif
// We need printf("") so silence the warning about empty format string.
-#if TUKTEST_GNUC_REQ(4, 2)
+#if TUKTEST_GNUC_REQ(4, 2) || defined(__clang__)
# pragma GCC diagnostic ignored "-Wformat-zero-length"
#endif
diff --git a/windows/INSTALL-MSVC.txt b/windows/INSTALL-MSVC.txt
index 2fdd1e7..ba483fb 100644
--- a/windows/INSTALL-MSVC.txt
+++ b/windows/INSTALL-MSVC.txt
@@ -5,41 +5,33 @@ Building XZ Utils with Microsoft Visual Studio
Introduction
------------
+ liblzma got MSVC support in XZ Utils 5.2.0, and the xz, xzdec,
+ lzmadec, and lzmainfo command line tools in XZ Utils 5.6.0.
+
+ NOTE: The *.exe files are linked against GNU getopt_long from
+ the "lib" directory. That code is under the GNU LGPLv2.1
+ and thus the matching source code must be provided when
+ distributing the *.exe files. The simplest way to comply with
+ the license requirements is to distribute the matching XZ Utils
+ source package alongside the *.exe files.
+
MSVC 2013 update 2 and later have enough C99 support to build
liblzma from XZ Utils 5.2.0 and later without modifications.
- Older MSVC versions would require a large number of changes to
- the XZ Utils code and thus the old MSVC versions aren't supported.
- As of 2015-06-19, some work has been done to get xz.exe and other
- command line tools built with MSVC, but it's not complete enough
- to be included in XZ Utils.
+ Visual Studio 2015 or later is required to build the command line
+ tools.
Building
--------
- It is recommended to use CMake to generate build files for MSVC.
- The project files in vs201x directories will be removed in the
- future (5.4.x releases will include them still).
-
- Descriptions of the files in the vs201x directories:
-
- config.h liblzma configuration #defines for MSVC.
- liblzma.vcxproj This builds static liblzma.
- liblzma_dll.vcxproj This builds liblzma.dll.
- xz_win.sln Solution using the above project files.
-
- The projects have x86 and x86-64 platform configurations, as well
- as a Debug, Release, and ReleaseMT configuration -- MT is the
- compiler switch to link to the CRT statically, so it will not
- have any other DLL dependencies.
-
- The VS2017 project files don't set <WindowsTargetPlatformVersion>.
- This means that you may need to either install Windows SDK 8.1 or
- you may need to set the target platform version before building.
+ Use CMake to generate build files for MSVC. Visual Studio project
+ files are no longer provided (XZ Utils 5.4.x were the last versions
+ to include the project files).
- Currently no test programs are built or run under MSVC from the
- project files. CMake-based builds include tests too.
+ NOTE: GCC and Clang compatible inline assembly isn't supported by
+ the MSVC compiler. Using clang-cl under MSVC should make inline
+ assembly work (untested).
Notes
diff --git a/windows/INSTALL-MinGW-w64_with_Autotools.txt b/windows/INSTALL-MinGW-w64_with_Autotools.txt
new file mode 100644
index 0000000..89c7440
--- /dev/null
+++ b/windows/INSTALL-MinGW-w64_with_Autotools.txt
@@ -0,0 +1,49 @@
+
+Creating XZ Utils Windows package with build.bash
+=================================================
+
+Introduction
+------------
+
+ The script build.bash can be used for building XZ Utils with
+ GCC + MinGW-w64 under MSYS2, under the ancient MSYS, or
+ cross-compiling from GNU/Linux. The script will create a package
+ with binaries and documentation in a hopefully-convenient bundle.
+
+ NOTE: build.bash requires files that are only included
+ in release tarballs. If building from xz.git, a distribution
+ tarball should be created first.
+
+ For native builds on Windows, the CMake-based build described
+ in the file INSTALL-MinGW-w64_with_CMake.txt is simpler to do as
+ it has no need for MSYS2 and it works from xz.git without extra
+ steps. For cross-compilation and package creation the script can
+ be convenient though.
+
+ These instructions are for making a package with build.bash and thus
+ don't apply to normal Autotool-based builds under Cygwin or MSYS2.
+
+
+Usage
+-----
+
+ First copy the file COPYING.MinGW-w64-runtime.txt from MinGW-w64
+ to this directory. It contains copyright and license notices that
+ apply to the MinGW-w64 runtime that gets statically linked into
+ the XZ Utils binaries being built. build.bash will include the file
+ in the final package.
+
+ Put i686 and/or x86_64 GCC-based toolchain in PATH depending on
+ which builds are wanted.
+
+ Optional: Put the 7z tool from 7-Zip or p7zip in PATH. Without
+ this, .zip and .7z files won't be created from the finished "pkg"
+ directory contents.
+
+ Run build.bash:
+
+ bash windows/build.bash
+
+ Note that it does an in-tree build so the build files will be mixed
+ with the source files in the same directory tree.
+
diff --git a/windows/INSTALL-MinGW-w64_with_CMake.txt b/windows/INSTALL-MinGW-w64_with_CMake.txt
new file mode 100644
index 0000000..5d2be5b
--- /dev/null
+++ b/windows/INSTALL-MinGW-w64_with_CMake.txt
@@ -0,0 +1,203 @@
+
+Building XZ Utils on Windows using MinGW-w64 and CMake
+======================================================
+
+ 1. Introduction
+ 1.1. Licensing considerations
+ 2. MSVCRT or UCRT
+ 3. CMake
+ 4. MinGW-w64 toolchains
+ 4.1. MinGW-w64 with GCC
+ 4.2. MinGW-w64 with Clang/LLVM
+ 5. Building XZ Utils
+ 5.1. Advanced build options
+ 6. Creating an import library for MSVC / Visual Studio
+
+
+1. Introduction
+---------------
+
+ This document explains how to build XZ Utils using MinGW-w64,
+ GCC or Clang/LLVM, CMake, and GNU make (mingw32-make) natively
+ on Windows. The resulting XZ Utils library and executable files
+ will only depend on DLLs that are included in Windows.
+
+ The build tools can be extracted into separate directories and used
+ directly from there and deleted when no longer needed. There are no
+ installers to run for these and no configuration needed.
+
+ These instructions don't apply to Cygwin. XZ Utils can be built
+ under Cygwin in the same way as many other packages.
+
+
+1.1. Licensing considerations
+
+ Parts of MinGW-w64 runtime are statically linked into the binaries
+ being built. The file COPYING.MinGW-w64-runtime.txt in MinGW-w64
+ contains the license notices that apply to some parts of the
+ runtime. The notices must be distributed alongside the binaries
+ that have been built with MinGW-w64.
+
+ MinGW-w64 includes getopt_long(). The GNU getopt_long() (LGPLv2.1)
+ included in XZ Utils isn't used when building with MinGW-w64.
+
+ The code from XZ Utils that ends up liblzma.dll and the *.exe files
+ is under the BSD Zero Clause License (0BSD) which doesn't require
+ any copyright or license notices to be included when distributing
+ the binaries. See the file COPYING in the parent directory.
+
+
+2. MSVCRT or UCRT
+-----------------
+
+ Both GCC and Clang/LLVM based MinGW-w64 toolchains come in MSVCRT
+ and Universal C runtime (UCRT) variants. MSVCRT is the old one.
+ 32-bit builds of XZ Utils with MSVCRT should run on Windows 2000
+ and later (even Windows 95 should still be possible with trivial
+ edits to the source code).
+
+ UCRT is included in Windows 10, and it's possible to install UCRT
+ on Windows XP and later. UCRT might be the preferred choice if
+ out-of-the-box compatibility with Windows versions older than 10
+ is not required. Visual Studio 2015 and later produce binaries
+ that use UCRT.
+
+ If you want to build liblzma.dll for use with your application,
+ it's recommended to use the same CRT for all components. If this
+ isn't possible, see the file liblzma-crt-mixing.txt.
+
+ If you only need the command line tools, the choice of CRT isn't
+ important, at least for now.
+
+
+3. CMake
+--------
+
+ CMake is used for selecting build options and generating makefiles.
+ It can also be used to extract archives, including .tar.xz and .7z.
+
+ Download a CMake binary package (.zip) from its homepage:
+
+ https://cmake.org/download/
+
+ Extract it to, for example, C:\devel\cmake so that the executables
+ end up in C:\devel\cmake\bin. Avoid spaces and other special
+ characters in the path.
+
+
+4. MinGW-w64 toolchains
+-----------------------
+
+ There are a few choices of prebuilt toolchains listed on
+ the MinGW-w64 homepage:
+
+ https://www.mingw-w64.org/downloads/
+
+ These instructions list one GCC-based version and one
+ Clang/LLVM-based version. Both include mingw32-make too.
+
+
+4.1. MinGW-w64 with GCC
+
+ For GCC, download appropriate packages from Mingw-builds depending
+ on if you want to build 32-bit or 64-bit x86 version of XZ Utils
+ and if the XZ Utils binaries should link against MSVCRT or UCRT:
+
+ https://github.com/niXman/mingw-builds-binaries/releases
+
+ i686-*-release-win32-*-msvcrt-*.7z 32-bit, uses MSVCRT (old)
+ i686-*-release-win32-*-ucrt-*.7z 32-bit, uses UCRT (new)
+ x86_64-*-release-win32-*-msvcrt-*.7z 64-bit, uses MSVCRT (old)
+ x86_64-*-release-win32-*-ucrt-*.7z 64-bit, uses UCRT (new)
+
+ Extract it, for example, to C:\devel so that the executables are
+ in C:\devel\mingw32\bin or C:\devel\mingw64\bin. To extract,
+ you can install 7-Zip from <https://7-zip.org/> or use CMake
+ on the command line:
+
+ set PATH=C:\devel\cmake\bin;%PATH%
+ c:
+ cd \devel
+ cmake -E tar xf x86_64-13.1.0-release-win32-seh-ucrt-rt_v11-rev1.7z
+
+ Then skip to the section "Building XZ Utils".
+
+
+4.2. MinGW-w64 with Clang/LLVM
+
+ For Clang/LLVM, download an appropriate package from LLVM-MinGW:
+
+ https://github.com/mstorsjo/llvm-mingw/releases
+
+ llvm-mingw-*-msvcrt-i686.zip 32-bit, uses MSVCRT (old)
+ llvm-mingw-*-ucrt-i686.zip 32-bit, uses UCRT (new)
+ llvm-mingw-*-msvcrt-x86_64.zip 64-bit, uses MSVCRT (old)
+ llvm-mingw-*-ucrt-x86_64.zip 64-bit, uses UCRT (new)
+
+ Extract it, for example, to C:\devel so that the executables end up
+ in a directory like C:\devel\llvm-mingw-20230919-ucrt-x86_64\bin.
+
+
+5. Building XZ Utils
+--------------------
+
+ For a simple builds, you can use the included build-with-cmake.bat
+ which takes these arguments:
+
+ %1 = Path to CMake's bin directory. Example:
+ c:\devel\cmake\bin
+
+ %2 = Path to MinGW-w64's bin directory. Example:
+ c:\devel\mingw64\bin
+
+ %3 = ON or OFF: Set to ON to build liblzma.dll or OFF for
+ static liblzma.a. With OFF, the *.exe files won't
+ depend on liblzma.dll.
+
+ Example:
+
+ build-with-cmake C:\devel\cmake\bin C:\devel\mingw64\bin ON
+
+ If successful, the "build" directory should then contain:
+
+ liblzma.dll liblzma compression library
+ liblzma.def DEF file for creating an import library
+ xz.exe xz command line tool
+ xzdec.exe Decompression-only tool (smaller than xz.exe)
+ lzmadec.exe Decompression-only tool for legacy .lzma files
+ lzmainfo.exe Shows header info of legacy .lzma files
+
+ Ignore the other files. :-)
+
+
+5.1. Advanced build options
+
+ For 32-bit x86 builds, adding -msse2 to CFLAGS improves
+ compression speed a little (but not decompression speed).
+ There is no runtime detection for SSE2 support. It is
+ recommended to use 64-bit version when possible.
+
+ It's possible to omit features from the build to reduce code size.
+ There are several CMake configuration options available. One may
+ change from CMAKE_BUILD_TYPE=Release to =MinSizeRel as well but
+ it makes the code slower.
+
+ If building for multiple targets, keep only one toolchain in PATH
+ at a time.
+
+
+6. Creating an import library for MSVC / Visual Studio
+------------------------------------------------------
+
+ To link against liblzma.dll, you need to create an import library
+ first. You need the "lib" command from MSVC and liblzma.def. Here
+ is the command that works on 32-bit x86:
+
+ lib /def:liblzma.def /out:liblzma.lib /machine:ix86
+
+ On x86-64, the /machine argument has to be changed:
+
+ lib /def:liblzma.def /out:liblzma.lib /machine:x64
+
+ IMPORTANT: See also the file liblzma-crt-mixing.txt.
+
diff --git a/windows/INSTALL-MinGW.txt b/windows/INSTALL-MinGW.txt
deleted file mode 100644
index 72e2718..0000000
--- a/windows/INSTALL-MinGW.txt
+++ /dev/null
@@ -1,138 +0,0 @@
-
-Building XZ Utils on Windows
-============================
-
-Introduction
-------------
-
- This document explains shortly where to get and how to install the
- build tools that are needed to build XZ Utils on Windows. The final
- binary package will be standalone in sense that it will depend only
- on DLLs that are included in all Windows installations.
-
- These instructions don't apply to Cygwin. XZ Utils can be built under
- Cygwin in the same way as many other packages.
-
- These instructions don't apply to MinGW and MSYS developers either,
- who may want to package XZ Utils for MinGW or MSYS distributions.
- You know who you are, and will probably use quite different configure
- options etc. than what is described here.
-
-
-Installing the toolchain(s)
----------------------------
-
- Some of the following is needed:
- - MSYS is always needed to use the GNU Autotools based build system.
- - MinGW builds 32-bit x86 binaries.
- - 32-bit MinGW-w64 (I call it MingW-w32 here) builds 32-bit x86
- executables too.
- - MinGW-w64 builds 64-bit x86-64 binaries.
-
- So you need to pick between MinGW and MinGW-w32 when building
- 32-bit version. You don't need both.
-
- You might find 7-Zip <https://7-zip.org/> handy when extracting
- some files. The ready-made build script build.bash will also use
- 7-Zip to create the distributable .zip and .7z files.
-
- I used the following directory structure but you can use whatever
- you want. Just note that I will use these in my examples. Each of
- these should have a subdirectory "bin":
-
- C:\devel\tools\msys
- C:\devel\tools\mingw
- C:\devel\tools\mingw-w32
- C:\devel\tools\mingw-w64
-
-
-Installing MSYS
-
- You can download MSYS from MinGW's Sourceforge page:
-
- https://sourceforge.net/projects/mingw/files/MSYS/Base/msys-core/
-
- I recommend using MSYS 1.0.11 (MSYS-1.0.11.exe or
- msysCORE-1.0.11-bin.tar.gz) because that package includes all the
- required tools. At least some of the later versions include only
- a subset and thus you would need to download the rest separately.
- The old version will work fine for building XZ Utils.
-
- You can use either the .exe or .tar.gz package. I prefer .tar.gz,
- because it can be extracted into any directory and later removed
- without worrying about uninstallers.
-
-
-Installing MinGW
-
- NOTE: This section may be outdated. I haven't tried MinGW recently.
-
- You can download the required packages from MinGW's Sourceforge page:
-
- https://sourceforge.net/projects/mingw/files/
-
- These version numbers were the latest when I wrote this document, but
- you probably should pick the latest versions:
-
- MinGW Runtime -> mingwrt-3.17-mingw32-dev.tar.gz
- MinGW API for MS-Windows -> w32api-3.14-mingw32-dev.tar.gz
- GNU Binutils -> binutils-2.20-1-bin.tar.gz
- GCC Version 4 -> gcc-full-4.4.0-mingw32-bin-2.tar.lzma
-
- The full GCC package is quite big, but if you want a smaller
- download, you will need to download more than one file, so I'm
- using the full package in this document for simplicity.
-
- Extract the packages in the above order, possibly overwriting files
- from packages that were extracted earlier.
-
-
-Installing MinGW-w32 or MinGW-w64
-
- I used the packages from Mingw-builds project. With that it is
- enough to pick one .7z file for 32-bit and another for 64-bit
- toolchain. For XZ Utils 5.2.0 I used the packages from these
- directories:
-
- https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/4.9.2/threads-win32/sjlj/
-
- https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/4.9.2/threads-win32/sjlj/
-
- If you install both MinGW-w32 and MinGW-w64, remember to extract
- them into different directories. build.bash looks at
- C:\devel\tools\mingw-w32 and C:\devel\tools\mingw-w64 by default.
-
-
-Building XZ Utils
------------------
-
- Start MSYS by going to the directory C:\devel\tools\msys and running
- msys.bat there (double-click or use command prompt). It will start
- at "home" directory, which is C:\devel\tools\msys\home\YourUserName.
-
- If you have xz-5.x.x.tar.gz in C:\devel, you should be able to build
- it now with the following commands:
-
- cd /c/devel
- tar xzf xz-5.x.x.tar.gz
- cd xz-5.x.x
- bash windows/build.bash
-
- If you used some other directory than C:\devel\tools for the build
- tools, edit the variables near the beginning of build.bash first.
-
- If you want to build manually, read the buildit() function in
- build.bash. Look especially at the latter configure invocation.
-
- Be patient. Running configure and other scripts used by the build
- system is (very) slow under Windows.
-
-
-Using a snapshot from the Git repository
-
- To use a snapshot, the build system files need to be generated with
- autogen.sh or "autoreconf -fi" before trying to build using the
- above build instructions. You can install the relevant extra packages
- from MinGW or use Cygwin or use e.g. a GNU/Linux system to create a
- source package with the required build system files.
-
diff --git a/windows/README-Windows.txt b/windows/README-Windows.txt
index 83f902e..d97d842 100644
--- a/windows/README-Windows.txt
+++ b/windows/README-Windows.txt
@@ -5,25 +5,31 @@ XZ Utils for Windows
Introduction
------------
- This package includes command line tools (xz.exe and a few others)
- and the liblzma compression library from XZ Utils. You can find the
- latest version and full source code from <https://tukaani.org/xz/>.
+ This package includes command line tools (xz.exe and a few
+ others) and the liblzma compression library from XZ Utils.
+ You can find the latest version and full source code from
+ <https://tukaani.org/xz/>.
The parts of the XZ Utils source code, that are relevant to this
- binary package, are in the public domain. XZ Utils have been built
- for this package with MinGW-w64 and linked statically against its
- runtime libraries. See COPYING-Windows.txt for the copyright and
- license information that applies to the MinGW-w64 runtime. You must
- include it when redistributing these XZ Utils binaries.
+ binary package, are under the BSD Zero Clause License (0BSD).
+ XZ Utils have been built using GCC and MinGW-w64 and linked
+ statically against the MinGW-w64 runtime libraries. See
+ COPYING.MinGW-w64-runtime.txt for copyright and license
+ information that applies to the MinGW-w64 runtime.
+
+ IMPORTANT: You must include COPYING.MinGW-w64-runtime.txt
+ when distributing these XZ Utils binaries to meet
+ the license terms of the MinGW-w64 runtime!
+
+ (The file COPYING mentions GNU getopt_long. It's *not* used when
+ XZ Utils is built with MinGW-w64. Thus GNU LGPLv2.1 doesn't apply.)
Package contents
----------------
- All executables and libraries in this package require msvcrt.dll.
- It's included in all recent Windows versions. (On Windows 95 it
- might be missing, but once you get it somewhere, the i686 binaries
- should run even on Windows 95 if the processor is new enough.)
+ All executables and libraries in this package require msvcrt.dll,
+ not Universal CRT (UCRT).
There is a SSE2 optimization in the compression code but this
version of XZ Utils doesn't include run-time processor detection.
@@ -31,57 +37,47 @@ Package contents
There is one directory for each type of executable and library files:
- bin_i686 32-bit x86 (i686 and newer), Windows 95 and later
- bin_i686-sse2 32-bit x86 (i686 with SSE2), Windows 98 and later
+ bin_i686 32-bit x86 (i686 and newer), Windows 2000 and later
+ bin_i686-sse2 32-bit x86 (i686 with SSE2), Windows 2000 and later
bin_x86-64 64-bit x86-64, Windows Vista and later
Each of the above directories have the following files:
- *.exe Command line tools. (It's useless to double-click
- these; use the command prompt instead.) These have
- been linked statically against liblzma, so they
- don't require liblzma.dll. Thus, you can copy e.g.
- xz.exe to a directory that is in PATH without copying
- any other files from this package.
+ *.exe Command line tools. (It's useless to double-click
+ these; use the command prompt instead.) These have
+ been linked statically against liblzma, so they
+ don't require liblzma.dll. Thus, you can copy e.g.
+ xz.exe to a directory that is in PATH without
+ copying any other files from this package.
- liblzma.dll Shared version of the liblzma compression library.
- This file is mostly useful to developers, although
- some non-developers might use it to upgrade their
- copy of liblzma.
+ NOTE: xzdec.exe and lzmadec.exe are optimized for
+ size, single-threaded, and slower than xz.exe.
+ Use xz.exe unless program size is important.
- liblzma.a Static version of the liblzma compression library.
- This file is useful only for developers.
+ liblzma.dll Shared version of the liblzma compression library.
+ This file is mostly useful to developers, although
+ some non-developers might use it to upgrade their
+ copy of liblzma.
The rest of the directories contain architecture-independent files:
- doc Documentation in the plain text (TXT) format. The
- manuals of the command line tools are provided also
- in the PDF format. liblzma.def is in this directory
- too.
-
- include C header files for liblzma. These should be
- compatible with most C and C++ compilers. If you
- have problems, try to fix it and send your fixes
- upstream, or at least report a bug, thanks.
+ doc Basic documentation in the plain text (TXT)
+ format. COPYING.txt, COPYING.0BSD.txt, and
+ COPYING.MinGW-w64-runtime.txt contain
+ copyright and license information.
+ liblzma.def is in this directory too.
+ doc/manuals The manuals of the command line tools in
+ plain text (TXT) format.
-Linking against liblzma
------------------------
+ doc/examples Example programs for basic liblzma usage.
-MinGW
+ include C header files for liblzma. These should be
+ compatible with most C and C++ compilers.
- If you use MinGW, linking against liblzma.dll or liblzma.a should
- be straightforward. You don't need an import library to link
- against liblzma.dll, and for static linking, you don't need to
- worry about the LZMA_API_STATIC macro.
- Note that the MinGW distribution includes liblzma. If you are
- building packages that will be part of the MinGW distribution, you
- probably should use the version of liblzma shipped in MinGW instead
- of this package.
-
-
-Microsoft Visual C++
+Creating an import library for MSVC / Visual Studio
+---------------------------------------------------
To link against liblzma.dll, you need to create an import library
first. You need the "lib" command from MSVC and liblzma.def from
@@ -90,29 +86,11 @@ Microsoft Visual C++
lib /def:liblzma.def /out:liblzma.lib /machine:ix86
- On x86-64, the /machine argument has to naturally be changed:
+ On x86-64, the /machine argument has to be changed:
lib /def:liblzma.def /out:liblzma.lib /machine:x64
- If you need to link statically against liblzma, you should build
- liblzma with MSVC 2013 update 2 or later. Alternatively, if having
- a decompressor is enough, consider using XZ Embedded or LZMA SDK.
-
- When you plan to link against static liblzma, you need to tell
- lzma.h to not use __declspec(dllimport) by defining the macro
- LZMA_API_STATIC. You can do it either in the C/C++ code
-
- #define LZMA_API_STATIC
- #include <lzma.h>
-
- or by adding it to compiler options.
-
-
-Other compilers
-
- If you are using some other compiler, see its documentation how to
- create an import library (if it is needed). If it is simple, I
- might consider including the instructions here.
+ IMPORTANT: See also the file liblzma-crt-mixing.txt.
Reporting bugs
diff --git a/windows/build-with-cmake.bat b/windows/build-with-cmake.bat
new file mode 100644
index 0000000..24978ba
--- /dev/null
+++ b/windows/build-with-cmake.bat
@@ -0,0 +1,35 @@
+@rem # SPDX-License-Identifier: 0BSD
+@rem # Author: Lasse Collin
+@rem #
+@rem ########################################################################
+@rem #
+@rem # This builds XZ Utils with CMake + MinGW-w64 (GCC or Clang/LLVM).
+@rem # See INSTALL-MinGW-w64_with_CMake.txt for detailed instructions.
+@rem #
+@rem # Summary of command line arguments:
+@rem #
+@rem # %1 = Path to CMake's bin directory. Example:
+@rem # C:\devel\cmake\bin
+@rem #
+@rem # %2 = Path to MinGW-w64's bin directory. Example:
+@rem # C:\devel\mingw64\bin
+@rem #
+@rem # %3 = ON or OFF: Set to ON to build liblzma.dll or OFF for
+@rem # static liblzma.a. With OFF, the *.exe files won't
+@rem # depend on liblzma.dll.
+@rem #
+@rem ########################################################################
+
+setlocal
+set PATH=%1;%2;%PATH%
+
+md build || exit /b
+cd build || exit /b
+
+cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DENABLE_NLS=OFF -DBUILD_SHARED_LIBS=%3 ..\.. || exit /b
+mingw32-make || exit /b
+mingw32-make test || exit /b
+
+@rem liblzma.dll might not exist so ignore errors.
+strip xz.exe xzdec.exe lzmadec.exe lzmainfo.exe liblzma.dll
+exit /b 0
diff --git a/windows/build.bash b/windows/build.bash
index e083fe7..a68bd7c 100644
--- a/windows/build.bash
+++ b/windows/build.bash
@@ -1,42 +1,36 @@
#!/bin/bash
-#
+# SPDX-License-Identifier: 0BSD
+
###############################################################################
#
-# Build a binary package on Windows with MinGW and MSYS
+# This build a XZ Utils binary package using the GNU Autotools build system
+#
+# NOTE: This requires files that are generated as part of "make mydist".
+# So if building from xz.git, create a distribution tarball first,
+# extract it, and run this script from there.
#
-# Set the paths where MinGW, Mingw-w32, or MinGW-w64 are installed. If both
-# MinGW and MinGW-w32 are specified, MinGW-w32 will be used. If there is no
-# 32-bit or 64-bit compiler at all, it is simply skipped.
+# These were tested and known to work:
+# - Cross-compilation with MinGW-w64 v10.0.0 and GCC 12.2.0 from
+# GNU/Linux ("make check" will be skipped)
+# - MSYS2 with MinGW-w64 and GCC
+# - MSYS 1.0.11 (from 2009) with MinGW-w64 v11.0.0 and GCC 13.1.0
#
# Optionally, 7-Zip is used to create the final .zip and .7z packages.
-# If you have installed it in the default directory, this script should
-# find it automatically. Otherwise adjust the path manually.
+# If the 7z tool is in PATH or if you have installed it in the default
+# directory on Windows, this script should find it automatically.
#
-# If you want to use a cross-compiler e.g. on GNU/Linux, this script won't
-# work out of the box. You need to omit "make check" commands and replace
-# u2d with some other tool to convert newlines from LF to CR+LF. You will
-# also need to pass the --host option to configure.
+# Before running this script, copy COPYING.MinGW-w64-runtime.txt to
+# the 'windows' directory.
+#
+# NOTE: MinGW-w64 includes getopt_long(). The GNU getopt_long() (LGPLv2.1)
+# included in XZ Utils isn't used when building with MinGW-w64.
#
###############################################################################
#
# Author: Lasse Collin
#
-# This file has been put into the public domain.
-# You can do whatever you want with this file.
-#
###############################################################################
-MINGW_DIR=/c/devel/tools/mingw
-MINGW_W32_DIR=/c/devel/tools/mingw-w32
-MINGW_W64_DIR=/c/devel/tools/mingw-w64
-
-for SEVENZ_EXE in "$PROGRAMW6432/7-Zip/7z.exe" "$PROGRAMFILES/7-Zip/7z.exe" \
- "/c/Program Files/7-Zip/7z.exe"
-do
- [ -x "$SEVENZ_EXE" ] && break
-done
-
-
# Abort immediately if something goes wrong.
set -e
@@ -51,11 +45,34 @@ esac
if [ ! -f windows/build.bash ]; then
cd ..
if [ ! -f windows/build.bash ]; then
- echo "You are in a wrong directory." >&2
+ echo "ERROR: You are in a wrong directory. This script" >&2
+ echo "can be run either at the top-level directory of" >&2
+ echo "the package or in the same directory containing" >&2
+ echo "this script." >&2
exit 1
fi
fi
+# COPYING.MinGW-w64-runtime.txt needs to be manually copied from MinGW-w64.
+if [ ! -f windows/COPYING.MinGW-w64-runtime.txt ]; then
+ echo "ERROR: The file 'windows/COPYING.MinGW-w64-runtime.txt'" >&2
+ echo "doesn't exists. Copy it from MinGW-w64 so that the" >&2
+ echo "copyright and license notices of the MinGW-w64 runtime" >&2
+ echo "can be included in the package." >&2
+ echo "(Or create an empty file if only doing a test build.)" >&2
+ exit 1
+fi
+
+# Number of jobs for "make":
+MAKE_JOBS=$(nproc 2> /dev/null || echo 1)
+
+# "make check" has to be skipped when cross-compiling.
+if [ "x$(uname -o)" = xMsys ]; then
+ IS_NATIVE_BUILD=true
+else
+ IS_NATIVE_BUILD=false
+fi
+
# Run configure and copy the binaries to the given directory.
#
# The first argument is the directory where to copy the binaries.
@@ -63,9 +80,26 @@ fi
buildit()
{
DESTDIR=$1
- BUILD=$2
+ TRIPLET=$2
CFLAGS=$3
+ # In the MinGW-w64 + GCC toolchains running natively on Windows,
+ # $TRIPLET-windres and $TRIPLET-strip commands might not exist.
+ # Only the short names "windres" and "strip" might be available.
+ # If both i686 and x86_64 toolchains are in PATH, wrong windres.exe
+ # will be used for one of the builds, making the build fail. The
+ # workaround is to put the directory of $TRIPLET-gcc to the front
+ # of PATH if $TRIPLET-windres or $TRIPLET-strip is missing.
+ OLD_PATH=$PATH
+ if type -P "$TRIPLET-windres" > /dev/null \
+ && type -P "$TRIPLET-strip" > /dev/null; then
+ STRIP=$TRIPLET-strip
+ else
+ STRIP=strip
+ GCC_DIR=$(type -P "$TRIPLET-gcc")
+ PATH=${GCC_DIR%/*}:$PATH
+ fi
+
# Clean up if it was already configured.
[ -f Makefile ] && make distclean
@@ -82,9 +116,13 @@ buildit()
--disable-threads \
--disable-shared \
--enable-small \
- --build="$BUILD" \
+ --host="$TRIPLET" \
CFLAGS="$CFLAGS -Os"
- make check
+ make -j"$MAKE_JOBS"
+
+ if "$IS_NATIVE_BUILD"; then
+ make -j"$MAKE_JOBS" check
+ fi
mkdir -pv "$DESTDIR"
cp -v src/xzdec/{xz,lzma}dec.exe src/lzmainfo/lzmainfo.exe "$DESTDIR"
@@ -99,17 +137,20 @@ buildit()
--disable-dependency-tracking \
--disable-nls \
--disable-scripts \
- --build="$BUILD" \
+ --host="$TRIPLET" \
CFLAGS="$CFLAGS -O2"
- make -C src/liblzma
- make -C src/xz LDFLAGS=-static
- make -C tests check
+ make -j"$MAKE_JOBS" -C src/liblzma
+ make -j"$MAKE_JOBS" -C src/xz LDFLAGS=-static
- cp -v src/xz/xz.exe src/liblzma/.libs/liblzma.a "$DESTDIR"
- cp -v src/liblzma/.libs/liblzma-*.dll "$DESTDIR/liblzma.dll"
+ if "$IS_NATIVE_BUILD"; then
+ make -j"$MAKE_JOBS" -C tests check
+ fi
- strip -v "$DESTDIR/"*.{exe,dll}
- strip -vg "$DESTDIR/"*.a
+ cp -v src/xz/xz.exe "$DESTDIR"
+ cp -v src/liblzma/.libs/liblzma-5.dll "$DESTDIR/liblzma.dll"
+ "$STRIP" -v "$DESTDIR/"*.{exe,dll}
+
+ PATH=$OLD_PATH
}
# Copy files and convert newlines from LF to CR+LF. Optionally add a suffix
@@ -117,7 +158,7 @@ buildit()
#
# The first argument is the destination directory. The second argument is
# the suffix to append to the filenames; use empty string if no extra suffix
-# is wanted. The rest of the arguments are actual the filenames.
+# is wanted. The rest of the arguments are the actual filenames.
txtcp()
{
DESTDIR=$1
@@ -125,80 +166,72 @@ txtcp()
shift 2
for SRCFILE; do
DESTFILE="$DESTDIR/${SRCFILE##*/}$SUFFIX"
- echo "Converting \`$SRCFILE' -> \`$DESTFILE'"
- u2d < "$SRCFILE" > "$DESTFILE"
+ echo "Converting '$SRCFILE' -> '$DESTFILE'"
+ sed s/\$/$'\r'/ < "$SRCFILE" > "$DESTFILE"
done
}
-if [ -d "$MINGW_W32_DIR" ]; then
- # 32-bit x86, Win95 or later, using MinGW-w32
- PATH=$MINGW_W32_DIR/bin:$MINGW_W32_DIR/i686-w64-mingw32/bin:$PATH \
- buildit \
- pkg/bin_i686 \
- i686-w64-mingw32 \
+if type -P i686-w64-mingw32-gcc > /dev/null; then
+ # 32-bit x86, Win2k or later
+ buildit pkg/bin_i686 i686-w64-mingw32 \
'-march=i686 -mtune=generic'
- # 32-bit x86 with SSE2, Win98 or later, using MinGW-w32
- PATH=$MINGW_W32_DIR/bin:$MINGW_W32_DIR/i686-w64-mingw32/bin:$PATH \
- buildit \
- pkg/bin_i686-sse2 \
- i686-w64-mingw32 \
- '-march=i686 -msse2 -mfpmath=sse -mtune=generic'
-elif [ -d "$MINGW_DIR" ]; then
- # 32-bit x86, Win95 or later, using MinGW
- PATH=$MINGW_DIR/bin:$PATH \
- buildit \
- pkg/bin_i486 \
- i486-pc-mingw32 \
- '-march=i486 -mtune=generic'
+
+ # 32-bit x86 with SSE2, Win2k or later
+ buildit pkg/bin_i686-sse2 i686-w64-mingw32 \
+ '-march=i686 -msse2 -mtune=generic'
+else
+ echo
+ echo "i686-w64-mingw32-gcc is not in PATH, skipping 32-bit x86 builds"
+ echo
fi
-if [ -d "$MINGW_W64_DIR" ]; then
- # x86-64, Windows Vista or later, using MinGW-w64
- PATH=$MINGW_W64_DIR/bin:$MINGW_W64_DIR/x86_64-w64-mingw32/bin:$PATH \
- buildit \
- pkg/bin_x86-64 \
- x86_64-w64-mingw32 \
+if type -P x86_64-w64-mingw32-gcc > /dev/null; then
+ # x86-64, Windows Vista or later
+ buildit pkg/bin_x86-64 x86_64-w64-mingw32 \
'-march=x86-64 -mtune=generic'
+else
+ echo
+ echo "x86_64-w64-mingw32-gcc is not in PATH, skipping x86-64 build"
+ echo
fi
# Copy the headers, the .def file, and the docs.
# They are the same for all architectures and builds.
-mkdir -pv pkg/{include/lzma,doc/{api,manuals,examples}}
+mkdir -pv pkg/{include/lzma,doc/{manuals,examples}}
txtcp pkg/include "" src/liblzma/api/lzma.h
txtcp pkg/include/lzma "" src/liblzma/api/lzma/*.h
txtcp pkg/doc "" src/liblzma/liblzma.def
-txtcp pkg/doc .txt AUTHORS COPYING NEWS README THANKS TODO
-txtcp pkg/doc "" doc/*.txt windows/README-Windows.txt
+txtcp pkg/doc .txt AUTHORS COPYING COPYING.0BSD NEWS README THANKS
+txtcp pkg/doc "" doc/*.txt \
+ windows/README-Windows.txt \
+ windows/liblzma-crt-mixing.txt \
+ windows/COPYING.MinGW-w64-runtime.txt
txtcp pkg/doc/manuals "" doc/man/txt/{xz,xzdec,lzmainfo}.txt
-cp -v doc/man/pdf-*/{xz,xzdec,lzmainfo}-*.pdf pkg/doc/manuals
-cp -v doc/api/* pkg/doc/api
+# cp -v doc/man/pdf-*/{xz,xzdec,lzmainfo}-*.pdf pkg/doc/manuals
+# cp -rv doc/api pkg/doc/api
txtcp pkg/doc/examples "" doc/examples/*
-if [ -f windows/COPYING-Windows.txt ]; then
- txtcp pkg/doc "" windows/COPYING-Windows.txt
-fi
+# Create the package. This requires 7z from 7-Zip.
+# If it isn't found, this step is skipped.
+for SEVENZ in "$(type -P 7z || true)" \
+ "$PROGRAMW6432/7-Zip/7z.exe" "$PROGRAMFILES/7-Zip/7z.exe" \
+ "/c/Program Files/7-Zip/7z.exe"
+do
+ [ -x "$SEVENZ" ] && break
+done
-# Create the package. This requires 7z.exe from 7-Zip. If it wasn't found,
-# this step is skipped and you have to zip it yourself.
-VER=$(sh build-aux/version.sh)
-cd pkg
-if [ -x "$SEVENZ_EXE" ]; then
- "$SEVENZ_EXE" a -tzip ../xz-$VER-windows.zip *
- "$SEVENZ_EXE" a ../xz-$VER-windows.7z *
+if [ -x "$SEVENZ" ]; then
+ VER=$(sh build-aux/version.sh)
+ cd pkg
+ "$SEVENZ" a -tzip ../xz-$VER-windows.zip *
+ "$SEVENZ" a ../xz-$VER-windows.7z *
else
echo
- echo "NOTE: 7z.exe was not found. xz-$VER-windows.zip"
+ echo "NOTE: 7z was not found. xz-$VER-windows.zip"
echo " and xz-$VER-windows.7z were not created."
echo " You can create them yourself from the pkg directory."
fi
-if [ ! -f ../windows/COPYING-Windows.txt ]; then
- echo
- echo "NOTE: windows/COPYING-Windows.txt doesn't exists."
- echo " MinGW(-w64) runtime copyright information"
- echo " is not included in the package."
-fi
-
echo
echo "Build completed successfully."
echo
diff --git a/windows/liblzma-crt-mixing.txt b/windows/liblzma-crt-mixing.txt
new file mode 100644
index 0000000..4ef2f8a
--- /dev/null
+++ b/windows/liblzma-crt-mixing.txt
@@ -0,0 +1,70 @@
+
+liblzma.dll and mixing C runtimes (CRTs)
+----------------------------------------
+
+ If possible, liblzma.dll should be linked against the same CRT
+ (MSVCRT or UCRT) as the application calling the liblzma functions.
+ When this isn't possible, liblzma.dll will still work but there
+ are a few API functions that need extra care.
+
+ Each CRT has its own memory allocator, stdio FILE implementation,
+ mapping of file descriptors from _open() to Windows' HANDLEs, and
+ so on. Mixing CRTs is a problem if, for example, one library calls
+ fopen() and then passes the resulting FILE* to a second library and
+ these two libraries use different CRTs. liblzma doesn't expose FILE
+ pointers or file descriptors in the API but the problem can occur
+ with memory allocation with a few specific functions.
+
+ The most commonly-used API functions in liblzma are such that both
+ memory allocation and deallocation is done internally by liblzma,
+ thus most applications won't have any problems with mixing CRTs
+ with liblzma.dll. The following API functions are the exception:
+
+ lzma/block.h:
+ lzma_block_header_decode
+
+ lzma/filter.h:
+ lzma_filters_copy
+ lzma_filters_free
+ lzma_properties_decode
+ lzma_filter_flags_decode
+ lzma_str_to_filters
+ lzma_str_from_filters
+ lzma_str_list_filters
+
+ Excluding lzma_filters_free(), the above functions allocate memory
+ and leave it to the caller to free it. lzma_filters_free() frees
+ memory given to it, and that memory may have been allocated outside
+ of liblzma.
+
+ For example, if application calls lzma_str_list_filters(&ptr, ...)
+ and then uses free(ptr), something bad (memory corruption, crash)
+ will happen if the application and liblzma.dll aren't using the
+ same CRT. This can be worked around with a few lines of extra code.
+
+ All these functions (and many others too) take a pointer to
+ lzma_allocator structure as an argument. Typically it is set to
+ NULL to let liblzma use malloc() and free() (and also calloc()
+ as it is faster than malloc() + memset()). A custom lzma_allocator
+ can be used to wrap malloc() and free() from application's CRT:
+
+ static void * LZMA_API_CALL
+ my_alloc(void *opaque, size_t nmemb, size_t size)
+ {
+ // liblzma guarantees that this won't overflow.
+ return malloc(nmemb * size);
+ }
+
+ static void LZMA_API_CALL
+ my_free(void *opaque, void *ptr)
+ {
+ free(ptr);
+ }
+
+ static const lzma_allocator allocator
+ = { &my_alloc, &my_free, NULL };
+
+ By passing &allocator to the problematic functions, CRT mixing
+ should not cause any problems. There is no need to use &allocator
+ with functions other than those listed above.
+
diff --git a/windows/vs2013/config.h b/windows/vs2013/config.h
deleted file mode 100644
index 1a78b9b..0000000
--- a/windows/vs2013/config.h
+++ /dev/null
@@ -1,157 +0,0 @@
-/* config.h for compiling liblzma (*not* the whole XZ Utils) with MSVC 2013 */
-
-/* Prefix for symbols exported by tuklib_*.c files */
-#define TUKLIB_SYMBOL_PREFIX lzma_
-
-/* How many MiB of RAM to assume if the real amount cannot be determined. */
-#define ASSUME_RAM 128
-
-/* Define to 1 if crc32 integrity check is enabled. */
-#define HAVE_CHECK_CRC32 1
-
-/* Define to 1 if crc64 integrity check is enabled. */
-#define HAVE_CHECK_CRC64 1
-
-/* Define to 1 if sha256 integrity check is enabled. */
-#define HAVE_CHECK_SHA256 1
-
-/* Define to 1 if any of HAVE_DECODER_foo have been defined. */
-#define HAVE_DECODERS 1
-
-/* Define to 1 if arm decoder is enabled. */
-#define HAVE_DECODER_ARM 1
-
-/* Define to 1 if arm64 decoder is enabled. */
-#define HAVE_DECODER_ARM64 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 arm64 encoder is enabled. */
-#define HAVE_ENCODER_ARM64 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 if .lz (lzip) decompression support is enabled. */
-#define HAVE_LZIP_DECODER 1
-
-/* Define to 1 to enable bt2 match finder. */
-#define HAVE_MF_BT2 1
-
-/* 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 or 0, depending whether the compiler supports simple visibility
- declarations. */
-#define HAVE_VISIBILITY 0
-
-/* Define to 1 if the system has the type `_Bool'. */
-#define HAVE__BOOL 1
-
-#ifdef _M_IX86
-/* Define to 1 when using Windows 95 (and thus XP) compatible threads. This
- avoids use of features that were added in Windows Vista.
- This is used for 32-bit x86 builds for compatibility reasons since it
- makes no measurable difference in performance compared to Vista threads. */
-#define MYTHREAD_WIN95 1
-#else
-/* Define to 1 when using Windows Vista compatible threads. This uses features
- that are not available on Windows XP. */
-#define MYTHREAD_VISTA 1
-#endif
-
-/* Define to 1 to disable debugging code. */
-#define NDEBUG 1
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "XZ Utils"
-
-/* Define to the home page for this package. */
-#define PACKAGE_URL "https://tukaani.org/xz/"
-
-/* The size of `size_t', as computed by sizeof. */
-#ifdef _WIN64
-#define SIZEOF_SIZE_T 8
-#else
-#define SIZEOF_SIZE_T 4
-#endif
-
-/* Define to 1 if the system supports fast unaligned access to 16-bit and
- 32-bit integers. */
-#define TUKLIB_FAST_UNALIGNED_ACCESS 1
diff --git a/windows/vs2013/liblzma.vcxproj b/windows/vs2013/liblzma.vcxproj
deleted file mode 100644
index 0e9b8b1..0000000
--- a/windows/vs2013/liblzma.vcxproj
+++ /dev/null
@@ -1,363 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="ReleaseMT|Win32">
- <Configuration>ReleaseMT</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="ReleaseMT|x64">
- <Configuration>ReleaseMT</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{12728250-16EC-4DC6-94D7-E21DD88947F8}</ProjectGuid>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v120</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v120</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v120</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v120</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v120</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v120</PlatformToolset>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <TargetMachine>MachineX86</TargetMachine>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <TargetMachine>MachineX86</TargetMachine>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <TargetMachine>MachineX86</TargetMachine>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="..\..\src\common\tuklib_cpucores.c" />
- <ClCompile Include="..\..\src\common\tuklib_physmem.c" />
- <ClCompile Include="..\..\src\liblzma\check\check.c" />
- <ClCompile Include="..\..\src\liblzma\check\crc32_fast.c" />
- <ClCompile Include="..\..\src\liblzma\check\crc32_table.c" />
- <ClCompile Include="..\..\src\liblzma\check\crc64_fast.c" />
- <ClCompile Include="..\..\src\liblzma\check\crc64_table.c" />
- <ClCompile Include="..\..\src\liblzma\check\sha256.c" />
- <ClCompile Include="..\..\src\liblzma\common\alone_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\alone_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\auto_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_buffer_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_buffer_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_header_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_header_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_util.c" />
- <ClCompile Include="..\..\src\liblzma\common\common.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_buffer_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_decoder_memusage.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_encoder_memusage.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_preset.c" />
- <ClCompile Include="..\..\src\liblzma\common\file_info.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_buffer_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_buffer_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_common.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_flags_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_flags_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\hardware_cputhreads.c" />
- <ClCompile Include="..\..\src\liblzma\common\hardware_physmem.c" />
- <ClCompile Include="..\..\src\liblzma\common\index.c" />
- <ClCompile Include="..\..\src\liblzma\common\index_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\index_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\index_hash.c" />
- <ClCompile Include="..\..\src\liblzma\common\lzip_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\microlzma_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\microlzma_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\outqueue.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_buffer_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_buffer_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_decoder_mt.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_encoder_mt.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_flags_common.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_flags_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_flags_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\string_conversion.c" />
- <ClCompile Include="..\..\src\liblzma\common\vli_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\vli_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\vli_size.c" />
- <ClCompile Include="..\..\src\liblzma\delta\delta_common.c" />
- <ClCompile Include="..\..\src\liblzma\delta\delta_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\delta\delta_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\fastpos_table.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma2_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma2_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_encoder_optimum_fast.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_encoder_optimum_normal.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_encoder_presets.c" />
- <ClCompile Include="..\..\src\liblzma\lz\lz_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\lz\lz_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\lz\lz_encoder_mf.c" />
- <ClCompile Include="..\..\src\liblzma\rangecoder\price_table.c" />
- <ClCompile Include="..\..\src\liblzma\simple\arm.c" />
- <ClCompile Include="..\..\src\liblzma\simple\arm64.c" />
- <ClCompile Include="..\..\src\liblzma\simple\armthumb.c" />
- <ClCompile Include="..\..\src\liblzma\simple\ia64.c" />
- <ClCompile Include="..\..\src\liblzma\simple\powerpc.c" />
- <ClCompile Include="..\..\src\liblzma\simple\simple_coder.c" />
- <ClCompile Include="..\..\src\liblzma\simple\simple_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\simple\simple_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\simple\sparc.c" />
- <ClCompile Include="..\..\src\liblzma\simple\x86.c" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\src\common\mythread.h" />
- <ClInclude Include="..\..\src\common\sysdefs.h" />
- <ClInclude Include="..\..\src\common\tuklib_common.h" />
- <ClInclude Include="..\..\src\common\tuklib_config.h" />
- <ClInclude Include="..\..\src\common\tuklib_cpucores.h" />
- <ClInclude Include="..\..\src\common\tuklib_integer.h" />
- <ClInclude Include="..\..\src\common\tuklib_physmem.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\base.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\bcj.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\block.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\check.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\container.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\delta.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\filter.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\hardware.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\index.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\index_hash.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\lzma12.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\stream_flags.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\version.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\vli.h" />
- <ClInclude Include="..\..\src\liblzma\check\check.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc32_table_be.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc32_table_le.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc64_table_be.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc64_table_le.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc_macros.h" />
- <ClInclude Include="..\..\src\liblzma\common\alone_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\block_buffer_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\block_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\block_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\common.h" />
- <ClInclude Include="..\..\src\liblzma\common\easy_preset.h" />
- <ClInclude Include="..\..\src\liblzma\common\filter_common.h" />
- <ClInclude Include="..\..\src\liblzma\common\filter_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\filter_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\index.h" />
- <ClInclude Include="..\..\src\liblzma\common\index_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\index_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\memcmplen.h" />
- <ClInclude Include="..\..\src\liblzma\common\lzip_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\outqueue.h" />
- <ClInclude Include="..\..\src\liblzma\common\stream_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\stream_flags_common.h" />
- <ClInclude Include="..\..\src\liblzma\delta\delta_common.h" />
- <ClInclude Include="..\..\src\liblzma\delta\delta_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\delta\delta_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\delta\delta_private.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\fastpos.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma2_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma2_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma_common.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma_encoder_private.h" />
- <ClInclude Include="..\..\src\liblzma\lz\lz_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\lz\lz_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\lz\lz_encoder_hash.h" />
- <ClInclude Include="..\..\src\liblzma\lz\lz_encoder_hash_table.h" />
- <ClInclude Include="..\..\src\liblzma\rangecoder\price.h" />
- <ClInclude Include="..\..\src\liblzma\rangecoder\range_common.h" />
- <ClInclude Include="..\..\src\liblzma\rangecoder\range_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\rangecoder\range_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\simple\simple_coder.h" />
- <ClInclude Include="..\..\src\liblzma\simple\simple_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\simple\simple_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\simple\simple_private.h" />
- <ClInclude Include="config.h" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project>
diff --git a/windows/vs2013/liblzma_dll.vcxproj b/windows/vs2013/liblzma_dll.vcxproj
deleted file mode 100644
index c2c3498..0000000
--- a/windows/vs2013/liblzma_dll.vcxproj
+++ /dev/null
@@ -1,398 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="ReleaseMT|Win32">
- <Configuration>ReleaseMT</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="ReleaseMT|x64">
- <Configuration>ReleaseMT</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{E0F247DB-EF12-4755-8DF9-F74BCD1348F7}</ProjectGuid>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v120</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v120</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v120</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v120</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v120</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v120</PlatformToolset>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- <TargetName>liblzma</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- <TargetName>liblzma</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <LinkIncremental>
- </LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- <TargetName>liblzma</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <LinkIncremental />
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- <TargetName>liblzma</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'">
- <LinkIncremental>
- </LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- <TargetName>liblzma</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'">
- <LinkIncremental />
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- <TargetName>liblzma</TargetName>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;DLL_EXPORT;_DEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <TargetMachine>MachineX86</TargetMachine>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- </Link>
- <ResourceCompile>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions>
- </ResourceCompile>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;DLL_EXPORT;_DEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- </Link>
- <ResourceCompile>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions>
- </ResourceCompile>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <TargetMachine>MachineX86</TargetMachine>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- <ResourceCompile>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions>
- </ResourceCompile>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- <ResourceCompile>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions>
- </ResourceCompile>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <TargetMachine>MachineX86</TargetMachine>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- <ResourceCompile>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions>
- </ResourceCompile>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- <ResourceCompile>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions>
- </ResourceCompile>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="..\..\src\common\tuklib_cpucores.c" />
- <ClCompile Include="..\..\src\common\tuklib_physmem.c" />
- <ClCompile Include="..\..\src\liblzma\check\check.c" />
- <ClCompile Include="..\..\src\liblzma\check\crc32_fast.c" />
- <ClCompile Include="..\..\src\liblzma\check\crc32_table.c" />
- <ClCompile Include="..\..\src\liblzma\check\crc64_fast.c" />
- <ClCompile Include="..\..\src\liblzma\check\crc64_table.c" />
- <ClCompile Include="..\..\src\liblzma\check\sha256.c" />
- <ClCompile Include="..\..\src\liblzma\common\alone_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\alone_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\auto_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_buffer_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_buffer_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_header_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_header_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_util.c" />
- <ClCompile Include="..\..\src\liblzma\common\common.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_buffer_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_decoder_memusage.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_encoder_memusage.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_preset.c" />
- <ClCompile Include="..\..\src\liblzma\common\file_info.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_buffer_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_buffer_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_common.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_flags_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_flags_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\hardware_cputhreads.c" />
- <ClCompile Include="..\..\src\liblzma\common\hardware_physmem.c" />
- <ClCompile Include="..\..\src\liblzma\common\index.c" />
- <ClCompile Include="..\..\src\liblzma\common\index_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\index_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\index_hash.c" />
- <ClCompile Include="..\..\src\liblzma\common\lzip_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\microlzma_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\microlzma_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\outqueue.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_buffer_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_buffer_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_decoder_mt.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_encoder_mt.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_flags_common.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_flags_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_flags_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\string_conversion.c" />
- <ClCompile Include="..\..\src\liblzma\common\vli_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\vli_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\vli_size.c" />
- <ClCompile Include="..\..\src\liblzma\delta\delta_common.c" />
- <ClCompile Include="..\..\src\liblzma\delta\delta_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\delta\delta_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\fastpos_table.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma2_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma2_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_encoder_optimum_fast.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_encoder_optimum_normal.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_encoder_presets.c" />
- <ClCompile Include="..\..\src\liblzma\lz\lz_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\lz\lz_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\lz\lz_encoder_mf.c" />
- <ClCompile Include="..\..\src\liblzma\rangecoder\price_table.c" />
- <ClCompile Include="..\..\src\liblzma\simple\arm.c" />
- <ClCompile Include="..\..\src\liblzma\simple\arm64.c" />
- <ClCompile Include="..\..\src\liblzma\simple\armthumb.c" />
- <ClCompile Include="..\..\src\liblzma\simple\ia64.c" />
- <ClCompile Include="..\..\src\liblzma\simple\powerpc.c" />
- <ClCompile Include="..\..\src\liblzma\simple\simple_coder.c" />
- <ClCompile Include="..\..\src\liblzma\simple\simple_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\simple\simple_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\simple\sparc.c" />
- <ClCompile Include="..\..\src\liblzma\simple\x86.c" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\src\common\mythread.h" />
- <ClInclude Include="..\..\src\common\sysdefs.h" />
- <ClInclude Include="..\..\src\common\tuklib_common.h" />
- <ClInclude Include="..\..\src\common\tuklib_config.h" />
- <ClInclude Include="..\..\src\common\tuklib_cpucores.h" />
- <ClInclude Include="..\..\src\common\tuklib_integer.h" />
- <ClInclude Include="..\..\src\common\tuklib_physmem.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\base.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\bcj.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\block.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\check.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\container.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\delta.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\filter.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\hardware.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\index.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\index_hash.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\lzma12.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\stream_flags.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\version.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\vli.h" />
- <ClInclude Include="..\..\src\liblzma\check\check.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc32_table_be.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc32_table_le.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc64_table_be.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc64_table_le.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc_macros.h" />
- <ClInclude Include="..\..\src\liblzma\common\alone_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\block_buffer_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\block_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\block_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\common.h" />
- <ClInclude Include="..\..\src\liblzma\common\easy_preset.h" />
- <ClInclude Include="..\..\src\liblzma\common\filter_common.h" />
- <ClInclude Include="..\..\src\liblzma\common\filter_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\filter_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\index.h" />
- <ClInclude Include="..\..\src\liblzma\common\index_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\index_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\memcmplen.h" />
- <ClInclude Include="..\..\src\liblzma\common\lzip_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\outqueue.h" />
- <ClInclude Include="..\..\src\liblzma\common\stream_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\stream_flags_common.h" />
- <ClInclude Include="..\..\src\liblzma\delta\delta_common.h" />
- <ClInclude Include="..\..\src\liblzma\delta\delta_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\delta\delta_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\delta\delta_private.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\fastpos.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma2_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma2_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma_common.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma_encoder_private.h" />
- <ClInclude Include="..\..\src\liblzma\lz\lz_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\lz\lz_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\lz\lz_encoder_hash.h" />
- <ClInclude Include="..\..\src\liblzma\lz\lz_encoder_hash_table.h" />
- <ClInclude Include="..\..\src\liblzma\rangecoder\price.h" />
- <ClInclude Include="..\..\src\liblzma\rangecoder\range_common.h" />
- <ClInclude Include="..\..\src\liblzma\rangecoder\range_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\rangecoder\range_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\simple\simple_coder.h" />
- <ClInclude Include="..\..\src\liblzma\simple\simple_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\simple\simple_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\simple\simple_private.h" />
- <ClInclude Include="config.h" />
- </ItemGroup>
- <ItemGroup>
- <ResourceCompile Include="..\..\src\liblzma\liblzma_w32res.rc" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project>
diff --git a/windows/vs2013/xz_win.sln b/windows/vs2013/xz_win.sln
deleted file mode 100644
index 3d25291..0000000
--- a/windows/vs2013/xz_win.sln
+++ /dev/null
@@ -1,48 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2013
-VisualStudioVersion = 12.0.31101.0
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblzma", "liblzma.vcxproj", "{12728250-16EC-4DC6-94D7-E21DD88947F8}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblzma_dll", "liblzma_dll.vcxproj", "{E0F247DB-EF12-4755-8DF9-F74BCD1348F7}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- ReleaseMT|Win32 = ReleaseMT|Win32
- ReleaseMT|x64 = ReleaseMT|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|Win32.ActiveCfg = Debug|Win32
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|Win32.Build.0 = Debug|Win32
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|x64.ActiveCfg = Debug|x64
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|x64.Build.0 = Debug|x64
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|Win32.ActiveCfg = Release|Win32
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|Win32.Build.0 = Release|Win32
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|x64.ActiveCfg = Release|x64
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|x64.Build.0 = Release|x64
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|Win32.ActiveCfg = ReleaseMT|Win32
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|Win32.Build.0 = ReleaseMT|Win32
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|x64.ActiveCfg = ReleaseMT|x64
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|x64.Build.0 = ReleaseMT|x64
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|Win32.ActiveCfg = Debug|Win32
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|Win32.Build.0 = Debug|Win32
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|x64.ActiveCfg = Debug|x64
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|x64.Build.0 = Debug|x64
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|Win32.ActiveCfg = Release|Win32
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|Win32.Build.0 = Release|Win32
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|x64.ActiveCfg = Release|x64
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|x64.Build.0 = Release|x64
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|Win32.ActiveCfg = ReleaseMT|Win32
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|Win32.Build.0 = ReleaseMT|Win32
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|x64.ActiveCfg = ReleaseMT|x64
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|x64.Build.0 = ReleaseMT|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/windows/vs2017/config.h b/windows/vs2017/config.h
deleted file mode 100644
index 06da83c..0000000
--- a/windows/vs2017/config.h
+++ /dev/null
@@ -1,157 +0,0 @@
-/* config.h for compiling liblzma (*not* the whole XZ Utils) with MSVC 2017 */
-
-/* Prefix for symbols exported by tuklib_*.c files */
-#define TUKLIB_SYMBOL_PREFIX lzma_
-
-/* How many MiB of RAM to assume if the real amount cannot be determined. */
-#define ASSUME_RAM 128
-
-/* Define to 1 if crc32 integrity check is enabled. */
-#define HAVE_CHECK_CRC32 1
-
-/* Define to 1 if crc64 integrity check is enabled. */
-#define HAVE_CHECK_CRC64 1
-
-/* Define to 1 if sha256 integrity check is enabled. */
-#define HAVE_CHECK_SHA256 1
-
-/* Define to 1 if any of HAVE_DECODER_foo have been defined. */
-#define HAVE_DECODERS 1
-
-/* Define to 1 if arm decoder is enabled. */
-#define HAVE_DECODER_ARM 1
-
-/* Define to 1 if arm64 decoder is enabled. */
-#define HAVE_DECODER_ARM64 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 arm64 encoder is enabled. */
-#define HAVE_ENCODER_ARM64 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 if .lz (lzip) decompression support is enabled. */
-#define HAVE_LZIP_DECODER 1
-
-/* Define to 1 to enable bt2 match finder. */
-#define HAVE_MF_BT2 1
-
-/* 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 or 0, depending whether the compiler supports simple visibility
- declarations. */
-#define HAVE_VISIBILITY 0
-
-/* Define to 1 if the system has the type `_Bool'. */
-#define HAVE__BOOL 1
-
-#ifdef _M_IX86
-/* Define to 1 when using Windows 95 (and thus XP) compatible threads. This
- avoids use of features that were added in Windows Vista.
- This is used for 32-bit x86 builds for compatibility reasons since it
- makes no measurable difference in performance compared to Vista threads. */
-#define MYTHREAD_WIN95 1
-#else
-/* Define to 1 when using Windows Vista compatible threads. This uses features
- that are not available on Windows XP. */
-#define MYTHREAD_VISTA 1
-#endif
-
-/* Define to 1 to disable debugging code. */
-#define NDEBUG 1
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "XZ Utils"
-
-/* Define to the home page for this package. */
-#define PACKAGE_URL "https://tukaani.org/xz/"
-
-/* The size of `size_t', as computed by sizeof. */
-#ifdef _WIN64
-#define SIZEOF_SIZE_T 8
-#else
-#define SIZEOF_SIZE_T 4
-#endif
-
-/* Define to 1 if the system supports fast unaligned access to 16-bit and
- 32-bit integers. */
-#define TUKLIB_FAST_UNALIGNED_ACCESS 1
diff --git a/windows/vs2017/liblzma.vcxproj b/windows/vs2017/liblzma.vcxproj
deleted file mode 100644
index f9241a2..0000000
--- a/windows/vs2017/liblzma.vcxproj
+++ /dev/null
@@ -1,363 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="ReleaseMT|Win32">
- <Configuration>ReleaseMT</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="ReleaseMT|x64">
- <Configuration>ReleaseMT</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{12728250-16EC-4DC6-94D7-E21DD88947F8}</ProjectGuid>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v141</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v141</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v141</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v141</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v141</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v141</PlatformToolset>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <TargetMachine>MachineX86</TargetMachine>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <TargetMachine>MachineX86</TargetMachine>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <TargetMachine>MachineX86</TargetMachine>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="..\..\src\common\tuklib_cpucores.c" />
- <ClCompile Include="..\..\src\common\tuklib_physmem.c" />
- <ClCompile Include="..\..\src\liblzma\check\check.c" />
- <ClCompile Include="..\..\src\liblzma\check\crc32_fast.c" />
- <ClCompile Include="..\..\src\liblzma\check\crc32_table.c" />
- <ClCompile Include="..\..\src\liblzma\check\crc64_fast.c" />
- <ClCompile Include="..\..\src\liblzma\check\crc64_table.c" />
- <ClCompile Include="..\..\src\liblzma\check\sha256.c" />
- <ClCompile Include="..\..\src\liblzma\common\alone_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\alone_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\auto_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_buffer_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_buffer_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_header_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_header_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_util.c" />
- <ClCompile Include="..\..\src\liblzma\common\common.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_buffer_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_decoder_memusage.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_encoder_memusage.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_preset.c" />
- <ClCompile Include="..\..\src\liblzma\common\file_info.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_buffer_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_buffer_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_common.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_flags_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_flags_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\hardware_cputhreads.c" />
- <ClCompile Include="..\..\src\liblzma\common\hardware_physmem.c" />
- <ClCompile Include="..\..\src\liblzma\common\index.c" />
- <ClCompile Include="..\..\src\liblzma\common\index_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\index_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\index_hash.c" />
- <ClCompile Include="..\..\src\liblzma\common\lzip_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\microlzma_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\microlzma_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\outqueue.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_buffer_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_buffer_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_decoder_mt.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_encoder_mt.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_flags_common.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_flags_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_flags_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\string_conversion.c" />
- <ClCompile Include="..\..\src\liblzma\common\vli_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\vli_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\vli_size.c" />
- <ClCompile Include="..\..\src\liblzma\delta\delta_common.c" />
- <ClCompile Include="..\..\src\liblzma\delta\delta_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\delta\delta_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\fastpos_table.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma2_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma2_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_encoder_optimum_fast.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_encoder_optimum_normal.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_encoder_presets.c" />
- <ClCompile Include="..\..\src\liblzma\lz\lz_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\lz\lz_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\lz\lz_encoder_mf.c" />
- <ClCompile Include="..\..\src\liblzma\rangecoder\price_table.c" />
- <ClCompile Include="..\..\src\liblzma\simple\arm.c" />
- <ClCompile Include="..\..\src\liblzma\simple\arm64.c" />
- <ClCompile Include="..\..\src\liblzma\simple\armthumb.c" />
- <ClCompile Include="..\..\src\liblzma\simple\ia64.c" />
- <ClCompile Include="..\..\src\liblzma\simple\powerpc.c" />
- <ClCompile Include="..\..\src\liblzma\simple\simple_coder.c" />
- <ClCompile Include="..\..\src\liblzma\simple\simple_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\simple\simple_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\simple\sparc.c" />
- <ClCompile Include="..\..\src\liblzma\simple\x86.c" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\src\common\mythread.h" />
- <ClInclude Include="..\..\src\common\sysdefs.h" />
- <ClInclude Include="..\..\src\common\tuklib_common.h" />
- <ClInclude Include="..\..\src\common\tuklib_config.h" />
- <ClInclude Include="..\..\src\common\tuklib_cpucores.h" />
- <ClInclude Include="..\..\src\common\tuklib_integer.h" />
- <ClInclude Include="..\..\src\common\tuklib_physmem.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\base.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\bcj.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\block.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\check.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\container.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\delta.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\filter.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\hardware.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\index.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\index_hash.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\lzma12.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\stream_flags.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\version.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\vli.h" />
- <ClInclude Include="..\..\src\liblzma\check\check.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc32_table_be.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc32_table_le.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc64_table_be.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc64_table_le.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc_macros.h" />
- <ClInclude Include="..\..\src\liblzma\common\alone_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\block_buffer_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\block_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\block_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\common.h" />
- <ClInclude Include="..\..\src\liblzma\common\easy_preset.h" />
- <ClInclude Include="..\..\src\liblzma\common\filter_common.h" />
- <ClInclude Include="..\..\src\liblzma\common\filter_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\filter_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\index.h" />
- <ClInclude Include="..\..\src\liblzma\common\index_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\index_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\memcmplen.h" />
- <ClInclude Include="..\..\src\liblzma\common\lzip_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\outqueue.h" />
- <ClInclude Include="..\..\src\liblzma\common\stream_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\stream_flags_common.h" />
- <ClInclude Include="..\..\src\liblzma\delta\delta_common.h" />
- <ClInclude Include="..\..\src\liblzma\delta\delta_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\delta\delta_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\delta\delta_private.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\fastpos.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma2_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma2_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma_common.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma_encoder_private.h" />
- <ClInclude Include="..\..\src\liblzma\lz\lz_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\lz\lz_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\lz\lz_encoder_hash.h" />
- <ClInclude Include="..\..\src\liblzma\lz\lz_encoder_hash_table.h" />
- <ClInclude Include="..\..\src\liblzma\rangecoder\price.h" />
- <ClInclude Include="..\..\src\liblzma\rangecoder\range_common.h" />
- <ClInclude Include="..\..\src\liblzma\rangecoder\range_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\rangecoder\range_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\simple\simple_coder.h" />
- <ClInclude Include="..\..\src\liblzma\simple\simple_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\simple\simple_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\simple\simple_private.h" />
- <ClInclude Include="config.h" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project>
diff --git a/windows/vs2017/liblzma_dll.vcxproj b/windows/vs2017/liblzma_dll.vcxproj
deleted file mode 100644
index 7818b2c..0000000
--- a/windows/vs2017/liblzma_dll.vcxproj
+++ /dev/null
@@ -1,398 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="ReleaseMT|Win32">
- <Configuration>ReleaseMT</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="ReleaseMT|x64">
- <Configuration>ReleaseMT</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{E0F247DB-EF12-4755-8DF9-F74BCD1348F7}</ProjectGuid>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v141</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v141</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v141</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v141</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v141</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v141</PlatformToolset>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- <TargetName>liblzma</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- <TargetName>liblzma</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <LinkIncremental>
- </LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- <TargetName>liblzma</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <LinkIncremental />
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- <TargetName>liblzma</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'">
- <LinkIncremental>
- </LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- <TargetName>liblzma</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'">
- <LinkIncremental />
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- <TargetName>liblzma</TargetName>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;DLL_EXPORT;_DEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <TargetMachine>MachineX86</TargetMachine>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- </Link>
- <ResourceCompile>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions>
- </ResourceCompile>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;DLL_EXPORT;_DEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- </Link>
- <ResourceCompile>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions>
- </ResourceCompile>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <TargetMachine>MachineX86</TargetMachine>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- <ResourceCompile>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions>
- </ResourceCompile>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- <ResourceCompile>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions>
- </ResourceCompile>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <TargetMachine>MachineX86</TargetMachine>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- <ResourceCompile>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions>
- </ResourceCompile>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- <ResourceCompile>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions>
- </ResourceCompile>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="..\..\src\common\tuklib_cpucores.c" />
- <ClCompile Include="..\..\src\common\tuklib_physmem.c" />
- <ClCompile Include="..\..\src\liblzma\check\check.c" />
- <ClCompile Include="..\..\src\liblzma\check\crc32_fast.c" />
- <ClCompile Include="..\..\src\liblzma\check\crc32_table.c" />
- <ClCompile Include="..\..\src\liblzma\check\crc64_fast.c" />
- <ClCompile Include="..\..\src\liblzma\check\crc64_table.c" />
- <ClCompile Include="..\..\src\liblzma\check\sha256.c" />
- <ClCompile Include="..\..\src\liblzma\common\alone_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\alone_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\auto_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_buffer_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_buffer_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_header_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_header_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_util.c" />
- <ClCompile Include="..\..\src\liblzma\common\common.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_buffer_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_decoder_memusage.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_encoder_memusage.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_preset.c" />
- <ClCompile Include="..\..\src\liblzma\common\file_info.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_buffer_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_buffer_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_common.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_flags_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_flags_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\hardware_cputhreads.c" />
- <ClCompile Include="..\..\src\liblzma\common\hardware_physmem.c" />
- <ClCompile Include="..\..\src\liblzma\common\index.c" />
- <ClCompile Include="..\..\src\liblzma\common\index_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\index_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\index_hash.c" />
- <ClCompile Include="..\..\src\liblzma\common\lzip_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\microlzma_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\microlzma_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\outqueue.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_buffer_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_buffer_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_decoder_mt.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_encoder_mt.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_flags_common.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_flags_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_flags_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\string_conversion.c" />
- <ClCompile Include="..\..\src\liblzma\common\vli_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\vli_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\vli_size.c" />
- <ClCompile Include="..\..\src\liblzma\delta\delta_common.c" />
- <ClCompile Include="..\..\src\liblzma\delta\delta_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\delta\delta_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\fastpos_table.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma2_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma2_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_encoder_optimum_fast.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_encoder_optimum_normal.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_encoder_presets.c" />
- <ClCompile Include="..\..\src\liblzma\lz\lz_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\lz\lz_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\lz\lz_encoder_mf.c" />
- <ClCompile Include="..\..\src\liblzma\rangecoder\price_table.c" />
- <ClCompile Include="..\..\src\liblzma\simple\arm.c" />
- <ClCompile Include="..\..\src\liblzma\simple\arm64.c" />
- <ClCompile Include="..\..\src\liblzma\simple\armthumb.c" />
- <ClCompile Include="..\..\src\liblzma\simple\ia64.c" />
- <ClCompile Include="..\..\src\liblzma\simple\powerpc.c" />
- <ClCompile Include="..\..\src\liblzma\simple\simple_coder.c" />
- <ClCompile Include="..\..\src\liblzma\simple\simple_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\simple\simple_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\simple\sparc.c" />
- <ClCompile Include="..\..\src\liblzma\simple\x86.c" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\src\common\mythread.h" />
- <ClInclude Include="..\..\src\common\sysdefs.h" />
- <ClInclude Include="..\..\src\common\tuklib_common.h" />
- <ClInclude Include="..\..\src\common\tuklib_config.h" />
- <ClInclude Include="..\..\src\common\tuklib_cpucores.h" />
- <ClInclude Include="..\..\src\common\tuklib_integer.h" />
- <ClInclude Include="..\..\src\common\tuklib_physmem.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\base.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\bcj.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\block.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\check.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\container.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\delta.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\filter.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\hardware.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\index.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\index_hash.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\lzma12.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\stream_flags.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\version.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\vli.h" />
- <ClInclude Include="..\..\src\liblzma\check\check.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc32_table_be.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc32_table_le.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc64_table_be.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc64_table_le.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc_macros.h" />
- <ClInclude Include="..\..\src\liblzma\common\alone_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\block_buffer_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\block_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\block_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\common.h" />
- <ClInclude Include="..\..\src\liblzma\common\easy_preset.h" />
- <ClInclude Include="..\..\src\liblzma\common\filter_common.h" />
- <ClInclude Include="..\..\src\liblzma\common\filter_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\filter_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\index.h" />
- <ClInclude Include="..\..\src\liblzma\common\index_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\index_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\memcmplen.h" />
- <ClInclude Include="..\..\src\liblzma\common\lzip_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\outqueue.h" />
- <ClInclude Include="..\..\src\liblzma\common\stream_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\stream_flags_common.h" />
- <ClInclude Include="..\..\src\liblzma\delta\delta_common.h" />
- <ClInclude Include="..\..\src\liblzma\delta\delta_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\delta\delta_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\delta\delta_private.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\fastpos.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma2_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma2_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma_common.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma_encoder_private.h" />
- <ClInclude Include="..\..\src\liblzma\lz\lz_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\lz\lz_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\lz\lz_encoder_hash.h" />
- <ClInclude Include="..\..\src\liblzma\lz\lz_encoder_hash_table.h" />
- <ClInclude Include="..\..\src\liblzma\rangecoder\price.h" />
- <ClInclude Include="..\..\src\liblzma\rangecoder\range_common.h" />
- <ClInclude Include="..\..\src\liblzma\rangecoder\range_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\rangecoder\range_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\simple\simple_coder.h" />
- <ClInclude Include="..\..\src\liblzma\simple\simple_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\simple\simple_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\simple\simple_private.h" />
- <ClInclude Include="config.h" />
- </ItemGroup>
- <ItemGroup>
- <ResourceCompile Include="..\..\src\liblzma\liblzma_w32res.rc" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project>
diff --git a/windows/vs2017/xz_win.sln b/windows/vs2017/xz_win.sln
deleted file mode 100644
index ba49f3e..0000000
--- a/windows/vs2017/xz_win.sln
+++ /dev/null
@@ -1,48 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26430.14
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblzma", "liblzma.vcxproj", "{12728250-16EC-4DC6-94D7-E21DD88947F8}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblzma_dll", "liblzma_dll.vcxproj", "{E0F247DB-EF12-4755-8DF9-F74BCD1348F7}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- ReleaseMT|Win32 = ReleaseMT|Win32
- ReleaseMT|x64 = ReleaseMT|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|Win32.ActiveCfg = Debug|Win32
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|Win32.Build.0 = Debug|Win32
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|x64.ActiveCfg = Debug|x64
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|x64.Build.0 = Debug|x64
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|Win32.ActiveCfg = Release|Win32
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|Win32.Build.0 = Release|Win32
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|x64.ActiveCfg = Release|x64
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|x64.Build.0 = Release|x64
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|Win32.ActiveCfg = ReleaseMT|Win32
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|Win32.Build.0 = ReleaseMT|Win32
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|x64.ActiveCfg = ReleaseMT|x64
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|x64.Build.0 = ReleaseMT|x64
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|Win32.ActiveCfg = Debug|Win32
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|Win32.Build.0 = Debug|Win32
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|x64.ActiveCfg = Debug|x64
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|x64.Build.0 = Debug|x64
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|Win32.ActiveCfg = Release|Win32
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|Win32.Build.0 = Release|Win32
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|x64.ActiveCfg = Release|x64
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|x64.Build.0 = Release|x64
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|Win32.ActiveCfg = ReleaseMT|Win32
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|Win32.Build.0 = ReleaseMT|Win32
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|x64.ActiveCfg = ReleaseMT|x64
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|x64.Build.0 = ReleaseMT|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/windows/vs2019/config.h b/windows/vs2019/config.h
deleted file mode 100644
index 6679da9..0000000
--- a/windows/vs2019/config.h
+++ /dev/null
@@ -1,157 +0,0 @@
-/* config.h for compiling liblzma (*not* the whole XZ Utils) with MSVC 2019 */
-
-/* Prefix for symbols exported by tuklib_*.c files */
-#define TUKLIB_SYMBOL_PREFIX lzma_
-
-/* How many MiB of RAM to assume if the real amount cannot be determined. */
-#define ASSUME_RAM 128
-
-/* Define to 1 if crc32 integrity check is enabled. */
-#define HAVE_CHECK_CRC32 1
-
-/* Define to 1 if crc64 integrity check is enabled. */
-#define HAVE_CHECK_CRC64 1
-
-/* Define to 1 if sha256 integrity check is enabled. */
-#define HAVE_CHECK_SHA256 1
-
-/* Define to 1 if any of HAVE_DECODER_foo have been defined. */
-#define HAVE_DECODERS 1
-
-/* Define to 1 if arm decoder is enabled. */
-#define HAVE_DECODER_ARM 1
-
-/* Define to 1 if arm64 decoder is enabled. */
-#define HAVE_DECODER_ARM64 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 arm64 encoder is enabled. */
-#define HAVE_ENCODER_ARM64 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 if .lz (lzip) decompression support is enabled. */
-#define HAVE_LZIP_DECODER 1
-
-/* Define to 1 to enable bt2 match finder. */
-#define HAVE_MF_BT2 1
-
-/* 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 or 0, depending whether the compiler supports simple visibility
- declarations. */
-#define HAVE_VISIBILITY 0
-
-/* Define to 1 if the system has the type `_Bool'. */
-#define HAVE__BOOL 1
-
-#ifdef _M_IX86
-/* Define to 1 when using Windows 95 (and thus XP) compatible threads. This
- avoids use of features that were added in Windows Vista.
- This is used for 32-bit x86 builds for compatibility reasons since it
- makes no measurable difference in performance compared to Vista threads. */
-#define MYTHREAD_WIN95 1
-#else
-/* Define to 1 when using Windows Vista compatible threads. This uses features
- that are not available on Windows XP. */
-#define MYTHREAD_VISTA 1
-#endif
-
-/* Define to 1 to disable debugging code. */
-#define NDEBUG 1
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "XZ Utils"
-
-/* Define to the home page for this package. */
-#define PACKAGE_URL "https://tukaani.org/xz/"
-
-/* The size of `size_t', as computed by sizeof. */
-#ifdef _WIN64
-#define SIZEOF_SIZE_T 8
-#else
-#define SIZEOF_SIZE_T 4
-#endif
-
-/* Define to 1 if the system supports fast unaligned access to 16-bit and
- 32-bit integers. */
-#define TUKLIB_FAST_UNALIGNED_ACCESS 1
diff --git a/windows/vs2019/liblzma.vcxproj b/windows/vs2019/liblzma.vcxproj
deleted file mode 100644
index defb2e7..0000000
--- a/windows/vs2019/liblzma.vcxproj
+++ /dev/null
@@ -1,364 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="ReleaseMT|Win32">
- <Configuration>ReleaseMT</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="ReleaseMT|x64">
- <Configuration>ReleaseMT</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{12728250-16EC-4DC6-94D7-E21DD88947F8}</ProjectGuid>
- <Keyword>Win32Proj</Keyword>
- <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <TargetMachine>MachineX86</TargetMachine>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <TargetMachine>MachineX86</TargetMachine>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <TargetMachine>MachineX86</TargetMachine>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="..\..\src\common\tuklib_cpucores.c" />
- <ClCompile Include="..\..\src\common\tuklib_physmem.c" />
- <ClCompile Include="..\..\src\liblzma\check\check.c" />
- <ClCompile Include="..\..\src\liblzma\check\crc32_fast.c" />
- <ClCompile Include="..\..\src\liblzma\check\crc32_table.c" />
- <ClCompile Include="..\..\src\liblzma\check\crc64_fast.c" />
- <ClCompile Include="..\..\src\liblzma\check\crc64_table.c" />
- <ClCompile Include="..\..\src\liblzma\check\sha256.c" />
- <ClCompile Include="..\..\src\liblzma\common\alone_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\alone_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\auto_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_buffer_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_buffer_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_header_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_header_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_util.c" />
- <ClCompile Include="..\..\src\liblzma\common\common.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_buffer_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_decoder_memusage.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_encoder_memusage.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_preset.c" />
- <ClCompile Include="..\..\src\liblzma\common\file_info.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_buffer_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_buffer_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_common.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_flags_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_flags_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\hardware_cputhreads.c" />
- <ClCompile Include="..\..\src\liblzma\common\hardware_physmem.c" />
- <ClCompile Include="..\..\src\liblzma\common\index.c" />
- <ClCompile Include="..\..\src\liblzma\common\index_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\index_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\index_hash.c" />
- <ClCompile Include="..\..\src\liblzma\common\lzip_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\microlzma_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\microlzma_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\outqueue.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_buffer_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_buffer_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_decoder_mt.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_encoder_mt.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_flags_common.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_flags_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_flags_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\string_conversion.c" />
- <ClCompile Include="..\..\src\liblzma\common\vli_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\vli_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\vli_size.c" />
- <ClCompile Include="..\..\src\liblzma\delta\delta_common.c" />
- <ClCompile Include="..\..\src\liblzma\delta\delta_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\delta\delta_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\fastpos_table.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma2_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma2_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_encoder_optimum_fast.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_encoder_optimum_normal.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_encoder_presets.c" />
- <ClCompile Include="..\..\src\liblzma\lz\lz_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\lz\lz_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\lz\lz_encoder_mf.c" />
- <ClCompile Include="..\..\src\liblzma\rangecoder\price_table.c" />
- <ClCompile Include="..\..\src\liblzma\simple\arm.c" />
- <ClCompile Include="..\..\src\liblzma\simple\arm64.c" />
- <ClCompile Include="..\..\src\liblzma\simple\armthumb.c" />
- <ClCompile Include="..\..\src\liblzma\simple\ia64.c" />
- <ClCompile Include="..\..\src\liblzma\simple\powerpc.c" />
- <ClCompile Include="..\..\src\liblzma\simple\simple_coder.c" />
- <ClCompile Include="..\..\src\liblzma\simple\simple_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\simple\simple_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\simple\sparc.c" />
- <ClCompile Include="..\..\src\liblzma\simple\x86.c" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\src\common\mythread.h" />
- <ClInclude Include="..\..\src\common\sysdefs.h" />
- <ClInclude Include="..\..\src\common\tuklib_common.h" />
- <ClInclude Include="..\..\src\common\tuklib_config.h" />
- <ClInclude Include="..\..\src\common\tuklib_cpucores.h" />
- <ClInclude Include="..\..\src\common\tuklib_integer.h" />
- <ClInclude Include="..\..\src\common\tuklib_physmem.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\base.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\bcj.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\block.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\check.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\container.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\delta.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\filter.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\hardware.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\index.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\index_hash.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\lzma12.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\stream_flags.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\version.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\vli.h" />
- <ClInclude Include="..\..\src\liblzma\check\check.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc32_table_be.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc32_table_le.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc64_table_be.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc64_table_le.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc_macros.h" />
- <ClInclude Include="..\..\src\liblzma\common\alone_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\block_buffer_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\block_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\block_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\common.h" />
- <ClInclude Include="..\..\src\liblzma\common\easy_preset.h" />
- <ClInclude Include="..\..\src\liblzma\common\filter_common.h" />
- <ClInclude Include="..\..\src\liblzma\common\filter_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\filter_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\index.h" />
- <ClInclude Include="..\..\src\liblzma\common\index_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\index_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\memcmplen.h" />
- <ClInclude Include="..\..\src\liblzma\common\lzip_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\outqueue.h" />
- <ClInclude Include="..\..\src\liblzma\common\stream_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\stream_flags_common.h" />
- <ClInclude Include="..\..\src\liblzma\delta\delta_common.h" />
- <ClInclude Include="..\..\src\liblzma\delta\delta_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\delta\delta_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\delta\delta_private.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\fastpos.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma2_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma2_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma_common.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma_encoder_private.h" />
- <ClInclude Include="..\..\src\liblzma\lz\lz_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\lz\lz_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\lz\lz_encoder_hash.h" />
- <ClInclude Include="..\..\src\liblzma\lz\lz_encoder_hash_table.h" />
- <ClInclude Include="..\..\src\liblzma\rangecoder\price.h" />
- <ClInclude Include="..\..\src\liblzma\rangecoder\range_common.h" />
- <ClInclude Include="..\..\src\liblzma\rangecoder\range_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\rangecoder\range_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\simple\simple_coder.h" />
- <ClInclude Include="..\..\src\liblzma\simple\simple_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\simple\simple_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\simple\simple_private.h" />
- <ClInclude Include="config.h" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project>
diff --git a/windows/vs2019/liblzma_dll.vcxproj b/windows/vs2019/liblzma_dll.vcxproj
deleted file mode 100644
index 8aa221b..0000000
--- a/windows/vs2019/liblzma_dll.vcxproj
+++ /dev/null
@@ -1,399 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="ReleaseMT|Win32">
- <Configuration>ReleaseMT</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="ReleaseMT|x64">
- <Configuration>ReleaseMT</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{E0F247DB-EF12-4755-8DF9-F74BCD1348F7}</ProjectGuid>
- <Keyword>Win32Proj</Keyword>
- <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- <TargetName>liblzma</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- <TargetName>liblzma</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <LinkIncremental>
- </LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- <TargetName>liblzma</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <LinkIncremental />
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- <TargetName>liblzma</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'">
- <LinkIncremental>
- </LinkIncremental>
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- <TargetName>liblzma</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'">
- <LinkIncremental />
- <OutDir>$(SolutionDir)$(Configuration)\$(Platform)\$(ProjectName)\</OutDir>
- <IntDir>$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
- <TargetName>liblzma</TargetName>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;DLL_EXPORT;_DEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <TargetMachine>MachineX86</TargetMachine>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- </Link>
- <ResourceCompile>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions>
- </ResourceCompile>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;DLL_EXPORT;_DEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- </Link>
- <ResourceCompile>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions>
- </ResourceCompile>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <TargetMachine>MachineX86</TargetMachine>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- <ResourceCompile>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions>
- </ResourceCompile>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- <ResourceCompile>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions>
- </ResourceCompile>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <TargetMachine>MachineX86</TargetMachine>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- <ResourceCompile>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions>
- </ResourceCompile>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'">
- <ClCompile>
- <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;DLL_EXPORT;NDEBUG;_WINDOWS;_USRDLL;LIBLZMADLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;../../src/liblzma/check;../../src/liblzma/delta;../../src/liblzma/lz;../../src/liblzma/lzma;../../src/liblzma/rangecoder;../../src/liblzma/simple</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- <ResourceCompile>
- <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions>
- </ResourceCompile>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="..\..\src\common\tuklib_cpucores.c" />
- <ClCompile Include="..\..\src\common\tuklib_physmem.c" />
- <ClCompile Include="..\..\src\liblzma\check\check.c" />
- <ClCompile Include="..\..\src\liblzma\check\crc32_fast.c" />
- <ClCompile Include="..\..\src\liblzma\check\crc32_table.c" />
- <ClCompile Include="..\..\src\liblzma\check\crc64_fast.c" />
- <ClCompile Include="..\..\src\liblzma\check\crc64_table.c" />
- <ClCompile Include="..\..\src\liblzma\check\sha256.c" />
- <ClCompile Include="..\..\src\liblzma\common\alone_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\alone_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\auto_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_buffer_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_buffer_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_header_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_header_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\block_util.c" />
- <ClCompile Include="..\..\src\liblzma\common\common.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_buffer_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_decoder_memusage.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_encoder_memusage.c" />
- <ClCompile Include="..\..\src\liblzma\common\easy_preset.c" />
- <ClCompile Include="..\..\src\liblzma\common\file_info.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_buffer_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_buffer_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_common.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_flags_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\filter_flags_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\hardware_cputhreads.c" />
- <ClCompile Include="..\..\src\liblzma\common\hardware_physmem.c" />
- <ClCompile Include="..\..\src\liblzma\common\index.c" />
- <ClCompile Include="..\..\src\liblzma\common\index_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\index_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\index_hash.c" />
- <ClCompile Include="..\..\src\liblzma\common\lzip_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\microlzma_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\microlzma_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\outqueue.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_buffer_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_buffer_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_decoder_mt.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_encoder_mt.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_flags_common.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_flags_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\stream_flags_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\string_conversion.c" />
- <ClCompile Include="..\..\src\liblzma\common\vli_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\vli_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\common\vli_size.c" />
- <ClCompile Include="..\..\src\liblzma\delta\delta_common.c" />
- <ClCompile Include="..\..\src\liblzma\delta\delta_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\delta\delta_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\fastpos_table.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma2_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma2_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_encoder_optimum_fast.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_encoder_optimum_normal.c" />
- <ClCompile Include="..\..\src\liblzma\lzma\lzma_encoder_presets.c" />
- <ClCompile Include="..\..\src\liblzma\lz\lz_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\lz\lz_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\lz\lz_encoder_mf.c" />
- <ClCompile Include="..\..\src\liblzma\rangecoder\price_table.c" />
- <ClCompile Include="..\..\src\liblzma\simple\arm.c" />
- <ClCompile Include="..\..\src\liblzma\simple\arm64.c" />
- <ClCompile Include="..\..\src\liblzma\simple\armthumb.c" />
- <ClCompile Include="..\..\src\liblzma\simple\ia64.c" />
- <ClCompile Include="..\..\src\liblzma\simple\powerpc.c" />
- <ClCompile Include="..\..\src\liblzma\simple\simple_coder.c" />
- <ClCompile Include="..\..\src\liblzma\simple\simple_decoder.c" />
- <ClCompile Include="..\..\src\liblzma\simple\simple_encoder.c" />
- <ClCompile Include="..\..\src\liblzma\simple\sparc.c" />
- <ClCompile Include="..\..\src\liblzma\simple\x86.c" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\src\common\mythread.h" />
- <ClInclude Include="..\..\src\common\sysdefs.h" />
- <ClInclude Include="..\..\src\common\tuklib_common.h" />
- <ClInclude Include="..\..\src\common\tuklib_config.h" />
- <ClInclude Include="..\..\src\common\tuklib_cpucores.h" />
- <ClInclude Include="..\..\src\common\tuklib_integer.h" />
- <ClInclude Include="..\..\src\common\tuklib_physmem.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\base.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\bcj.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\block.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\check.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\container.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\delta.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\filter.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\hardware.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\index.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\index_hash.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\lzma12.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\stream_flags.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\version.h" />
- <ClInclude Include="..\..\src\liblzma\api\lzma\vli.h" />
- <ClInclude Include="..\..\src\liblzma\check\check.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc32_table_be.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc32_table_le.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc64_table_be.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc64_table_le.h" />
- <ClInclude Include="..\..\src\liblzma\check\crc_macros.h" />
- <ClInclude Include="..\..\src\liblzma\common\alone_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\block_buffer_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\block_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\block_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\common.h" />
- <ClInclude Include="..\..\src\liblzma\common\easy_preset.h" />
- <ClInclude Include="..\..\src\liblzma\common\filter_common.h" />
- <ClInclude Include="..\..\src\liblzma\common\filter_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\filter_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\index.h" />
- <ClInclude Include="..\..\src\liblzma\common\index_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\index_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\memcmplen.h" />
- <ClInclude Include="..\..\src\liblzma\common\lzip_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\outqueue.h" />
- <ClInclude Include="..\..\src\liblzma\common\stream_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\common\stream_flags_common.h" />
- <ClInclude Include="..\..\src\liblzma\delta\delta_common.h" />
- <ClInclude Include="..\..\src\liblzma\delta\delta_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\delta\delta_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\delta\delta_private.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\fastpos.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma2_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma2_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma_common.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\lzma\lzma_encoder_private.h" />
- <ClInclude Include="..\..\src\liblzma\lz\lz_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\lz\lz_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\lz\lz_encoder_hash.h" />
- <ClInclude Include="..\..\src\liblzma\lz\lz_encoder_hash_table.h" />
- <ClInclude Include="..\..\src\liblzma\rangecoder\price.h" />
- <ClInclude Include="..\..\src\liblzma\rangecoder\range_common.h" />
- <ClInclude Include="..\..\src\liblzma\rangecoder\range_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\rangecoder\range_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\simple\simple_coder.h" />
- <ClInclude Include="..\..\src\liblzma\simple\simple_decoder.h" />
- <ClInclude Include="..\..\src\liblzma\simple\simple_encoder.h" />
- <ClInclude Include="..\..\src\liblzma\simple\simple_private.h" />
- <ClInclude Include="config.h" />
- </ItemGroup>
- <ItemGroup>
- <ResourceCompile Include="..\..\src\liblzma\liblzma_w32res.rc" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project>
diff --git a/windows/vs2019/xz_win.sln b/windows/vs2019/xz_win.sln
deleted file mode 100644
index c65cd3e..0000000
--- a/windows/vs2019/xz_win.sln
+++ /dev/null
@@ -1,51 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.28803.202
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblzma", "liblzma.vcxproj", "{12728250-16EC-4DC6-94D7-E21DD88947F8}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblzma_dll", "liblzma_dll.vcxproj", "{E0F247DB-EF12-4755-8DF9-F74BCD1348F7}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- ReleaseMT|Win32 = ReleaseMT|Win32
- ReleaseMT|x64 = ReleaseMT|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|Win32.ActiveCfg = Debug|Win32
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|Win32.Build.0 = Debug|Win32
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|x64.ActiveCfg = Debug|x64
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|x64.Build.0 = Debug|x64
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|Win32.ActiveCfg = Release|Win32
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|Win32.Build.0 = Release|Win32
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|x64.ActiveCfg = Release|x64
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|x64.Build.0 = Release|x64
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|Win32.ActiveCfg = ReleaseMT|Win32
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|Win32.Build.0 = ReleaseMT|Win32
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|x64.ActiveCfg = ReleaseMT|x64
- {12728250-16EC-4DC6-94D7-E21DD88947F8}.ReleaseMT|x64.Build.0 = ReleaseMT|x64
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|Win32.ActiveCfg = Debug|Win32
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|Win32.Build.0 = Debug|Win32
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|x64.ActiveCfg = Debug|x64
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Debug|x64.Build.0 = Debug|x64
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|Win32.ActiveCfg = Release|Win32
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|Win32.Build.0 = Release|Win32
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|x64.ActiveCfg = Release|x64
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.Release|x64.Build.0 = Release|x64
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|Win32.ActiveCfg = ReleaseMT|Win32
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|Win32.Build.0 = ReleaseMT|Win32
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|x64.ActiveCfg = ReleaseMT|x64
- {E0F247DB-EF12-4755-8DF9-F74BCD1348F7}.ReleaseMT|x64.Build.0 = ReleaseMT|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {78887FAE-FC02-4B67-A8DB-DC7863496039}
- EndGlobalSection
-EndGlobal