# HG changeset patch # User Brett Smith # Date 1251647190 14400 # Node ID 8570c14304bbf2403a6fc0e40812966516e417f2 # Parent 2b676283366ad6501ee8791270d28edd874f9459 add support for xz compression diff -r 2b676283366a -r 8570c14304bb INSTALL --- 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 ------------ diff -r 2b676283366a -r 8570c14304bb NEWS --- 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 ~~~~~~~~~~~~~ diff -r 2b676283366a -r 8570c14304bb scripts/dtrx --- 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 Copyright © 2008 Peter Kelemen @@ -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] diff -r 2b676283366a -r 8570c14304bb tests/test-text.xz Binary file tests/test-text.xz has changed diff -r 2b676283366a -r 8570c14304bb tests/tests.yml --- 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