Sun, 30 Aug 2009 11:46:30 -0400
add support for xz compression
INSTALL | file | annotate | diff | comparison | revisions | |
NEWS | file | annotate | diff | comparison | revisions | |
scripts/dtrx | file | annotate | diff | comparison | revisions | |
tests/test-text.xz | file | annotate | diff | comparison | revisions | |
tests/tests.yml | file | annotate | diff | comparison | revisions |
--- a/INSTALL Sun Aug 30 11:18:32 2009 -0400 +++ b/INSTALL Sun Aug 30 11:46:30 2009 -0400 @@ -54,6 +54,9 @@ Files compressed with lzma lzcat +Files compressed with xz + xzcat + Installation ------------
--- a/NEWS Sun Aug 30 11:18:32 2009 -0400 +++ b/NEWS Sun Aug 30 11:46:30 2009 -0400 @@ -4,6 +4,13 @@ Version 6.6 ----------- +Enhancements +~~~~~~~~~~~~ + + * dtrx can now handle `xz compression`_. + +.. _xz compression: http://tukaani.org/xz/ + Other changes ~~~~~~~~~~~~~
--- a/scripts/dtrx Sun Aug 30 11:18:32 2009 -0400 +++ b/scripts/dtrx Sun Aug 30 11:46:30 2009 -0400 @@ -44,7 +44,7 @@ except NameError: from sets import Set as set -VERSION = "6.5" +VERSION = "6.6" VERSION_BANNER = """dtrx version %s Copyright © 2006-2009 Brett Smith <brettcsmith@brettcsmith.org> Copyright © 2008 Peter Kelemen <Peter.Kelemen@gmail.com> @@ -80,6 +80,7 @@ mimetypes.encodings_map.setdefault('.bz2', 'bzip2') mimetypes.encodings_map.setdefault('.lzma', 'lzma') +mimetypes.encodings_map.setdefault('.xz', 'xz') mimetypes.types_map.setdefault('.gem', 'application/x-ruby-gem') logger = logging.getLogger('dtrx-log') @@ -138,7 +139,7 @@ class BaseExtractor(object): decoders = {'bzip2': 'bzcat', 'gzip': 'zcat', 'compress': 'zcat', - 'lzma': 'lzcat'} + 'lzma': 'lzcat', 'xz': 'xzcat'} name_checker = DirectoryChecker def __init__(self, filename, encoding): @@ -884,17 +885,20 @@ for mapping in (('tar', 'bzip2', 'tar.bz2', 'tbz2', 'tb2', 'tbz'), ('tar', 'gzip', 'tar.gz', 'tgz'), ('tar', 'lzma', 'tar.lzma', 'tlz'), + ('tar', 'xz', 'tar.xz'), ('tar', 'compress', 'tar.Z', 'taz'), ('compress', 'gzip', 'Z', 'gz'), ('compress', 'bzip2', 'bz2'), - ('compress', 'lzma', 'lzma')): + ('compress', 'lzma', 'lzma'), + ('compress', 'xz', 'xz')): for extension in mapping[2:]: extension_map.setdefault(extension, []).append(mapping[:2]) magic_encoding_map = {} for mapping in (('bzip2', 'bzip2 compressed'), ('gzip', 'gzip compressed'), - ('lzma', 'LZMA compressed')): + ('lzma', 'LZMA compressed'), + ('xz', 'xz compressed')): for pattern in mapping[1:]: magic_encoding_map[re.compile(pattern)] = mapping[0]
--- a/tests/tests.yml Sun Aug 30 11:18:32 2009 -0400 +++ b/tests/tests.yml Sun Aug 30 11:46:30 2009 -0400 @@ -107,6 +107,14 @@ posttest: | if [ "x`cat test-text`" != "xhi" ]; then exit 1; fi +- name: decompressing xz + directory: inside-dir + filenames: ../test-text.xz + baseline: | + xzcat $1 >test-text + posttest: | + if [ "x`cat test-text`" != "xhi" ]; then exit 1; fi + - name: decompression with -r directory: inside-dir filenames: ../test-text.gz