add support for xz compression trunk

Sun, 30 Aug 2009 11:46:30 -0400

author
Brett Smith <brettcsmith@brettcsmith.org>
date
Sun, 30 Aug 2009 11:46:30 -0400
branch
trunk
changeset 123
8570c14304bb
parent 122
2b676283366a
child 124
19c34f5fc8eb

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]
 
Binary file tests/test-text.xz has changed
--- 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

mercurial