diff -Nur xarchiver-0.5.2-basic-xz/src/tar.c xarchiver-0.5.2/src/tar.c --- xarchiver-0.5.2-basic-xz/src/tar.c 2011-06-08 14:29:27.916496785 +0300 +++ xarchiver-0.5.2/src/tar.c 2011-06-08 14:31:09.904916851 +0300 @@ -389,6 +389,25 @@ } break; + case XARCHIVETYPE_TAR_XZ: + if (archive->full_path == 1) + { + command = g_strconcat (tar, " --use-compress-program=xz -xvf " , archive->escaped_path, + #ifdef __FreeBSD__ + archive->overwrite ? " " : " -k", + #else + archive->overwrite ? " --overwrite" : " --keep-old-files", + #endif + archive->tar_touch ? " --touch" : "", + " -C ",archive->extraction_path," ",names->str,NULL); + } + else + { + result = xa_extract_tar_without_directories ( "tar --use-compress-program=xz -xvf ",archive,names->str); + command = NULL; + } + break; + case XARCHIVETYPE_TAR_LZOP: if (archive->full_path == 1) { @@ -412,6 +431,11 @@ result = lzma_bzip2_extract(archive,NULL); command = NULL; break; + + case XARCHIVETYPE_XZ: + result = lzma_bzip2_extract(archive,NULL); + command = NULL; + break; case XARCHIVETYPE_LZOP: result = lzma_bzip2_extract(archive,NULL);