summaryrefslogtreecommitdiff
path: root/libre/xarchiver-libre
diff options
context:
space:
mode:
authorNicolás Reynolds <fauno@endefensadelsl.org>2014-02-21 03:34:10 +0000
committerNicolás Reynolds <fauno@endefensadelsl.org>2014-02-21 03:34:10 +0000
commit96cf9235f114b8d960c16a8625937b16979ae1aa (patch)
treed2eed8b5352413c7d68cf5856b8112c0620b1942 /libre/xarchiver-libre
parent2f8045ba14153d1665148e3cff527ce4f6bf66e5 (diff)
Fri Feb 21 03:31:53 UTC 2014
Diffstat (limited to 'libre/xarchiver-libre')
-rw-r--r--libre/xarchiver-libre/PKGBUILD80
-rw-r--r--libre/xarchiver-libre/xarchiver-0.5.2-add_xz_support.patch397
-rw-r--r--libre/xarchiver-libre/xarchiver-0.5.2-drag-n-drop_escaped_path.patch13
-rw-r--r--libre/xarchiver-libre/xarchiver-0.5.2-fix-non-existent-archive.patch26
-rw-r--r--libre/xarchiver-libre/xarchiver-0.5.2-fix_7z_support.patch110
-rw-r--r--libre/xarchiver-libre/xarchiver-0.5.2-no-donators-menu.patch50
-rw-r--r--libre/xarchiver-libre/xarchiver-0.5.2-rpm2cpio.patch84
-rw-r--r--libre/xarchiver-libre/xarchiver-0.5.2-segfault-delete-file.patch21
-rw-r--r--libre/xarchiver-libre/xarchiver-0.5.2-segfault-open-with.patch15
-rw-r--r--libre/xarchiver-libre/xarchiver-0.5.3-add-mime-types.patch (renamed from libre/xarchiver-libre/xarchiver-0.5.2-add_mime_types.patch)8
-rw-r--r--libre/xarchiver-libre/xarchiver-0.5.3-add-unar-support.patch (renamed from libre/xarchiver-libre/xarchiver-0.5.2-add_unar_support.patch)465
-rw-r--r--libre/xarchiver-libre/xarchiver-0.5.3-fix-double-escaping.patch (renamed from libre/xarchiver-libre/xarchiver-0.5.2-fix-double-escaping.patch)0
-rw-r--r--libre/xarchiver-libre/xarchiver-0.5.3-fix-password-protected.patch (renamed from libre/xarchiver-libre/xarchiver-0.5.2-segfault-password-protected.patch)19
-rw-r--r--libre/xarchiver-libre/xarchiver-0.5.3-fix-rpm-support.patch86
14 files changed, 436 insertions, 938 deletions
diff --git a/libre/xarchiver-libre/PKGBUILD b/libre/xarchiver-libre/PKGBUILD
index e606e65f4..a718b8252 100644
--- a/libre/xarchiver-libre/PKGBUILD
+++ b/libre/xarchiver-libre/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 104651 2014-01-24 08:23:36Z bgyorgy $
+# $Id: PKGBUILD 105928 2014-02-19 11:27:15Z bgyorgy $
# Maintainer: Balló György <ballogyor+arch at gmail dot com>
# Contributor: Alexander Fehr <pizzapunk gmail com>
# Contributor: Andrew Simmons <andrew.simmons@gmail.com>
@@ -6,8 +6,8 @@
_pkgname=xarchiver
pkgname=xarchiver-libre
-pkgver=0.5.2
-pkgrel=6
+pkgver=0.5.3
+pkgrel=1
pkgdesc="GTK+ frontend to various command line archivers, with unar support"
arch=('i686' 'x86_64' 'mips64el')
url="http://xarchiver.sourceforge.net/"
@@ -19,78 +19,42 @@ depends=('gtk2' 'desktop-file-utils')
makedepends=('intltool')
optdepends=('zip: ZIP support'
'unzip: ZIP support'
- 'unar: RAR support'
'p7zip: 7z support'
'arj: ARJ support'
'lzop: LZOP support'
- 'cpio: RPM support')
+ 'cpio: RPM support'
+ 'unar: RAR support')
install=xarchiver.install
source=(http://downloads.sourceforge.net/xarchiver/xarchiver-$pkgver.tar.bz2
- xarchiver-0.5.2-no-donators-menu.patch
- xarchiver-0.5.2-add_xz_support.patch
- xarchiver-0.5.2-segfault-open-with.patch
- xarchiver-0.5.2-fix_7z_support.patch
- xarchiver-0.5.2-drag-n-drop_escaped_path.patch
- xarchiver-0.5.2-fix-double-escaping.patch
- xarchiver-0.5.2-fix-non-existent-archive.patch
- xarchiver-0.5.2-segfault-delete-file.patch
- xarchiver-0.5.2-segfault-password-protected.patch
- xarchiver-0.5.2-add_unar_support.patch
- xarchiver-0.5.2-add_mime_types.patch)
-md5sums=('2bc7f06403cc6582dd4a8029ec9d038d'
- '7ef9fe9aee9f0fbc141ed9683e91ea1c'
- '5d5ef8dd1b8b7790af4ece5fcedcd370'
- 'f9036a44157b318cbc59ed012b04974b'
- '782f55c1f1021dc02c7739bf8a47336e'
- 'fcd9e04222c5e0ef459977bd7cd0ae4e'
+ xarchiver-0.5.3-fix-rpm-support.patch
+ xarchiver-0.5.3-fix-double-escaping.patch
+ xarchiver-0.5.3-fix-password-protected.patch
+ xarchiver-0.5.3-add-mime-types.patch
+ xarchiver-0.5.3-add-unar-support.patch)
+md5sums=('fd390bbd2df76a5f8a007bdeae82d4aa'
+ '812b93339f5e3332621f3c5abebfe277'
'6178d7ab679b761469c880a8db991907'
- '22ed2783e72684a102243c5834bf5ca3'
- 'e518b1e0bc4407383aae2783c0c19a04'
- 'c46daf2ee9fce7ece608eca33174db6b'
- '1bfed3e1a9f8f4858ec90f0d66cfc5ba'
- '36a4c3181230aab1e0ce1596acc5ef88')
+ '35ab96d98521a0a36f3e9e9ec0969107'
+ 'f9119f5290caa195a56b7d3c63d9137d'
+ '5f0b21efd0159d41f207e664b72210b8')
prepare() {
cd $_pkgname-$pkgver
- # Fix donators menu item (upstream patch)
- patch -Np2 -i ../xarchiver-0.5.2-no-donators-menu.patch
-
- # Add XZ support
- # http://sourceforge.net/p/xarchiver/bugs/28/
- patch -Np1 -i ../xarchiver-0.5.2-add_xz_support.patch
-
- # Fix segfault on open with dialog
- # http://sourceforge.net/p/xarchiver/bugs/52/
- patch -Np1 -i ../xarchiver-0.5.2-segfault-open-with.patch
-
- # Fix 7z support
- # http://sourceforge.net/p/xarchiver/patches/5/
- patch -Np1 -i ../xarchiver-0.5.2-fix_7z_support.patch
-
- # Fix extraction when the Drag'n'Drop target path contains spaces
- patch -Np1 -i ../xarchiver-0.5.2-drag-n-drop_escaped_path.patch
+ # Fix RPM support
+ patch -Np1 -i ../xarchiver-0.5.3-fix-rpm-support.patch
# Fix error when trying to create archives with spaces
- patch -Np1 -i ../xarchiver-0.5.2-fix-double-escaping.patch
-
- # Fix segfault when non-existent archive specified
- patch -Np1 -i ../xarchiver-0.5.2-fix-non-existent-archive.patch
-
- # Fix segfault when deleting a file
- patch -Np1 -i ../xarchiver-0.5.2-segfault-delete-file.patch
+ patch -Np1 -i ../xarchiver-0.5.3-fix-double-escaping.patch
# Fix segfault when handling password protected files
- patch -Np1 -i ../xarchiver-0.5.2-segfault-password-protected.patch
-
- # Add unar support
- patch -Np1 -i ../xarchiver-0.5.2-add_unar_support.patch
+ patch -Np1 -i ../xarchiver-0.5.3-fix-password-protected.patch
# Add more MIME types in the desktop file
- patch -Np1 -i ../xarchiver-0.5.2-add_mime_types.patch
+ patch -Np1 -i ../xarchiver-0.5.3-add-mime-types.patch
- # Update upstream URL
- find -type f | xargs sed -i 's|http://xarchiver.xfce.org|http://xarchiver.sf.net|'
+ # Add unar support
+ patch -Np1 -i ../xarchiver-0.5.3-add-unar-support.patch
}
build() {
diff --git a/libre/xarchiver-libre/xarchiver-0.5.2-add_xz_support.patch b/libre/xarchiver-libre/xarchiver-0.5.2-add_xz_support.patch
deleted file mode 100644
index d246a8e19..000000000
--- a/libre/xarchiver-libre/xarchiver-0.5.2-add_xz_support.patch
+++ /dev/null
@@ -1,397 +0,0 @@
-diff -uNr xarchiver-0.5.2.orig/src/add_dialog.c xarchiver-0.5.2/src/add_dialog.c
---- xarchiver-0.5.2.orig/src/add_dialog.c 2008-11-10 19:41:31.000000000 +0900
-+++ xarchiver-0.5.2/src/add_dialog.c 2013-05-11 10:01:47.887094708 +0900
-@@ -209,7 +209,7 @@
- else
- gtk_widget_set_size_request (add_dialog->dialog1,530,420);
-
-- if (archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_LZOP)
-+ if (archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_XZ || archive->type == XARCHIVETYPE_LZOP)
- gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(add_dialog->filechooserwidget1),FALSE);
- else
- gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(add_dialog->filechooserwidget1),TRUE);
-@@ -222,7 +222,7 @@
- else
- gtk_widget_set_sensitive(add_dialog->store_path,TRUE);
- /* 7z doesn't appear to let the user chooses if storing full paths */
-- if (archive->type == XARCHIVETYPE_7ZIP || archive->type == XARCHIVETYPE_LZOP || archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA)
-+ if (archive->type == XARCHIVETYPE_7ZIP || archive->type == XARCHIVETYPE_LZOP || archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_XZ )
- {
- flag = FALSE;
- }
-@@ -244,7 +244,7 @@
- flag = TRUE;
- gtk_widget_set_sensitive(add_dialog->solid_archive,flag);
-
-- if (archive->type != XARCHIVETYPE_TAR && archive->type != XARCHIVETYPE_TAR_GZ && archive->type != XARCHIVETYPE_TAR_LZMA && archive->type != XARCHIVETYPE_TAR_BZ2 && archive->type != XARCHIVETYPE_TAR_LZOP)
-+ if (archive->type != XARCHIVETYPE_TAR && archive->type != XARCHIVETYPE_TAR_GZ && archive->type != XARCHIVETYPE_TAR_LZMA && archive->type != XARCHIVETYPE_TAR_XZ && archive->type != XARCHIVETYPE_TAR_BZ2 && archive->type != XARCHIVETYPE_TAR_LZOP)
- {
- flag = TRUE;
- if (archive->type == XARCHIVETYPE_7ZIP)
-@@ -306,7 +306,7 @@
- g_signal_connect (G_OBJECT (add_dialog->compression_value),"value-changed",G_CALLBACK (fix_adjustment_value), NULL);
- gtk_tooltips_set_tip (add_dialog->option_tooltip,add_dialog->compression_scale, compression_msg, NULL );
-
-- if (archive->type == XARCHIVETYPE_TAR || archive->type == XARCHIVETYPE_TAR_GZ || archive->type == XARCHIVETYPE_TAR_LZMA || archive->type == XARCHIVETYPE_TAR_BZ2 || archive->type == XARCHIVETYPE_TAR_LZOP)
-+ if (archive->type == XARCHIVETYPE_TAR || archive->type == XARCHIVETYPE_TAR_GZ || archive->type == XARCHIVETYPE_TAR_LZMA || archive->type == XARCHIVETYPE_TAR_XZ || archive->type == XARCHIVETYPE_TAR_BZ2 || archive->type == XARCHIVETYPE_TAR_LZOP)
- flag = FALSE;
- else
- flag = TRUE;
-diff -uNr xarchiver-0.5.2.orig/src/archive.h xarchiver-0.5.2/src/archive.h
---- xarchiver-0.5.2.orig/src/archive.h 2008-11-07 17:49:41.000000000 +0900
-+++ xarchiver-0.5.2/src/archive.h 2013-05-11 10:01:47.888094708 +0900
-@@ -30,6 +30,7 @@
- XARCHIVETYPE_BZIP2,
- XARCHIVETYPE_GZIP,
- XARCHIVETYPE_LZMA,
-+ XARCHIVETYPE_XZ,
- XARCHIVETYPE_LZOP,
- XARCHIVETYPE_RAR,
- XARCHIVETYPE_RPM,
-@@ -37,6 +38,7 @@
- XARCHIVETYPE_TAR_BZ2,
- XARCHIVETYPE_TAR_GZ,
- XARCHIVETYPE_TAR_LZMA,
-+ XARCHIVETYPE_TAR_XZ,
- XARCHIVETYPE_TAR_LZOP,
- XARCHIVETYPE_ZIP,
- XARCHIVETYPE_LHA,
-diff -uNr xarchiver-0.5.2.orig/src/bzip2.c xarchiver-0.5.2/src/bzip2.c
---- xarchiver-0.5.2.orig/src/bzip2.c 2008-11-10 20:17:48.000000000 +0900
-+++ xarchiver-0.5.2/src/bzip2.c 2013-05-11 10:01:47.888094708 +0900
-@@ -54,6 +54,15 @@
- archive->extract = extract[archive->type];
- xa_open_tar_compressed_file(archive);
- }
-+ else if (g_str_has_suffix(archive->escaped_path,".tar.xz") || g_str_has_suffix (archive->escaped_path,".txz"))
-+ {
-+ archive->type = XARCHIVETYPE_TAR_XZ;
-+ archive->format = "TAR.XZ";
-+ archive->delete = delete[archive->type];
-+ archive->add = add[archive->type];
-+ archive->extract = extract[archive->type];
-+ xa_open_tar_compressed_file(archive);
-+ }
- else if (g_str_has_suffix(archive->escaped_path,".tar.lzop") ||
- g_str_has_suffix (archive->escaped_path,".tzo") ||
- g_str_has_suffix(archive->escaped_path,".tar.lzo"))
-@@ -85,6 +94,12 @@
- executable = "lzma ";
- len = 5;
- }
-+ else if (archive->type == XARCHIVETYPE_XZ)
-+ {
-+ archive->format = "XZ";
-+ executable = "xz ";
-+ len = 5;
-+ }
- else if (archive->type == XARCHIVETYPE_LZOP)
- {
- archive->format = "LZOP";
-@@ -163,6 +178,8 @@
- command = g_strconcat(tar," tfjv ",archive->escaped_path,NULL);
- else if (archive->type == XARCHIVETYPE_TAR_LZMA)
- command = g_strconcat(tar," tv --use-compress-program=lzma -f ",archive->escaped_path,NULL);
-+ else if (archive->type == XARCHIVETYPE_TAR_XZ)
-+ command = g_strconcat(tar," tv --use-compress-program=xz -f ",archive->escaped_path,NULL);
- else if (archive->type == XARCHIVETYPE_TAR_LZOP)
- command = g_strconcat(tar," tv --use-compress-program=lzop -f ",archive->escaped_path,NULL);
- /* else fail? */
-@@ -205,6 +222,11 @@
- executable = "lzma ";
- len = 5;
- }
-+ else if (archive->type == XARCHIVETYPE_XZ)
-+ {
-+ executable = "xz ";
-+ len = 5;
-+ }
- else if (archive->type == XARCHIVETYPE_LZOP)
- {
- executable = "lzop ";
-diff -uNr xarchiver-0.5.2.orig/src/extract_dialog.c xarchiver-0.5.2/src/extract_dialog.c
---- xarchiver-0.5.2.orig/src/extract_dialog.c 2008-11-10 19:28:11.000000000 +0900
-+++ xarchiver-0.5.2/src/extract_dialog.c 2013-05-11 10:01:47.889094708 +0900
-@@ -815,6 +815,11 @@
- archive->type = XARCHIVETYPE_TAR_LZMA;
- archive->extract = extract[XARCHIVETYPE_TAR_LZMA];
- }
-+ else if (g_str_has_suffix(archive->escaped_path,".tar.xz")|| g_str_has_suffix (archive->escaped_path,".txz"))
-+ {
-+ archive->type = XARCHIVETYPE_TAR_XZ;
-+ archive->extract = extract[XARCHIVETYPE_TAR_XZ];
-+ }
- else if (g_str_has_suffix(archive->escaped_path,".tar.lzop") ||
- g_str_has_suffix (archive->escaped_path,".tzo") ||
- g_str_has_suffix(archive->escaped_path,".tar.lzo"))
-diff -uNr xarchiver-0.5.2.orig/src/main.c xarchiver-0.5.2/src/main.c
---- xarchiver-0.5.2.orig/src/main.c 2008-11-10 20:21:43.000000000 +0900
-+++ xarchiver-0.5.2/src/main.c 2013-05-11 10:17:01.696094044 +0900
-@@ -296,9 +296,10 @@
- open_archive[XARCHIVETYPE_BZIP2] = &xa_open_bzip2_lzma;
- open_archive[XARCHIVETYPE_GZIP] = &xa_open_gzip;
- open_archive[XARCHIVETYPE_LZMA] = &xa_open_bzip2_lzma;
-+ open_archive[XARCHIVETYPE_XZ] = &xa_open_bzip2_lzma;
- open_archive[XARCHIVETYPE_RAR] = &xa_open_rar;
- open_archive[XARCHIVETYPE_RPM] = &xa_open_rpm;
-- open_archive[XARCHIVETYPE_TAR] = open_archive[XARCHIVETYPE_TAR_BZ2] = open_archive[XARCHIVETYPE_TAR_GZ] = open_archive[XARCHIVETYPE_TAR_LZMA] = open_archive[XARCHIVETYPE_TAR_LZOP] = &xa_open_tar;
-+ open_archive[XARCHIVETYPE_TAR] = open_archive[XARCHIVETYPE_TAR_BZ2] = open_archive[XARCHIVETYPE_TAR_GZ] = open_archive[XARCHIVETYPE_TAR_LZMA] = open_archive[XARCHIVETYPE_TAR_XZ] = open_archive[XARCHIVETYPE_TAR_LZOP] = &xa_open_tar;
- open_archive[XARCHIVETYPE_ZIP] = &xa_open_zip;
- open_archive[XARCHIVETYPE_LHA] = &xa_open_lha;
- open_archive[XARCHIVETYPE_LZOP] = &xa_open_bzip2_lzma;
-@@ -310,9 +311,10 @@
- delete[XARCHIVETYPE_BZIP2] = 0;
- delete[XARCHIVETYPE_GZIP] = 0;
- delete[XARCHIVETYPE_LZMA] = 0;
-+ delete[XARCHIVETYPE_XZ] = 0;
- delete[XARCHIVETYPE_RAR] = &xa_rar_delete;
- delete[XARCHIVETYPE_RPM] = 0;
-- delete[XARCHIVETYPE_TAR] = delete[XARCHIVETYPE_TAR_BZ2] = delete[XARCHIVETYPE_TAR_GZ] = delete[XARCHIVETYPE_TAR_LZMA] = delete[XARCHIVETYPE_TAR_LZOP] = &xa_tar_delete;
-+ delete[XARCHIVETYPE_TAR] = delete[XARCHIVETYPE_TAR_BZ2] = delete[XARCHIVETYPE_TAR_GZ] = delete[XARCHIVETYPE_TAR_LZMA] = delete[XARCHIVETYPE_TAR_XZ] = delete[XARCHIVETYPE_TAR_LZOP] = &xa_tar_delete;
- delete[XARCHIVETYPE_ZIP] = &xa_zip_delete;
- delete[XARCHIVETYPE_LHA] = &xa_lha_delete;
- delete[XARCHIVETYPE_LZOP] = 0;
-@@ -322,10 +324,10 @@
- add[XARCHIVETYPE_7ZIP] = &xa_7zip_add;
- add[XARCHIVETYPE_ARJ] = &xa_arj_add;
- add[XARCHIVETYPE_DEB] = 0;
-- add[XARCHIVETYPE_BZIP2] = add[XARCHIVETYPE_GZIP] = add[XARCHIVETYPE_LZMA] = &xa_tar_add;
-+ add[XARCHIVETYPE_BZIP2] = add[XARCHIVETYPE_GZIP] = add[XARCHIVETYPE_LZMA] = add[XARCHIVETYPE_XZ] = &xa_tar_add;
- add[XARCHIVETYPE_RAR] = &xa_rar_add;
- add[XARCHIVETYPE_RPM] = 0;
-- add[XARCHIVETYPE_TAR] = add[XARCHIVETYPE_TAR_BZ2] = add[XARCHIVETYPE_TAR_GZ] = add[XARCHIVETYPE_TAR_LZMA] = add[XARCHIVETYPE_TAR_LZOP] = &xa_tar_add;
-+ add[XARCHIVETYPE_TAR] = add[XARCHIVETYPE_TAR_BZ2] = add[XARCHIVETYPE_TAR_GZ] = add[XARCHIVETYPE_TAR_LZMA] = add[XARCHIVETYPE_TAR_XZ] = add[XARCHIVETYPE_TAR_LZOP] = &xa_tar_add;
- add[XARCHIVETYPE_ZIP] = &xa_zip_add;
- add[XARCHIVETYPE_LHA] = &xa_lha_add;
- add[XARCHIVETYPE_LZOP] = &xa_tar_add;
-@@ -334,10 +336,10 @@
- extract[XARCHIVETYPE_7ZIP] = &xa_7zip_extract;
- extract[XARCHIVETYPE_ARJ] = &xa_arj_extract;
- extract[XARCHIVETYPE_DEB] = &xa_deb_extract;;
-- extract[XARCHIVETYPE_BZIP2] = extract[XARCHIVETYPE_GZIP] = extract[XARCHIVETYPE_LZMA] = &xa_tar_extract;
-+ extract[XARCHIVETYPE_BZIP2] = extract[XARCHIVETYPE_GZIP] = extract[XARCHIVETYPE_LZMA] = extract[XARCHIVETYPE_XZ] = &xa_tar_extract;
- extract[XARCHIVETYPE_RAR] = &xa_rar_extract;
- extract[XARCHIVETYPE_RPM] = &xa_rpm_extract;
-- extract[XARCHIVETYPE_TAR] = extract[XARCHIVETYPE_TAR_BZ2] = extract[XARCHIVETYPE_TAR_GZ] = extract[XARCHIVETYPE_TAR_LZMA] = extract[XARCHIVETYPE_TAR_LZOP] = &xa_tar_extract;
-+ extract[XARCHIVETYPE_TAR] = extract[XARCHIVETYPE_TAR_BZ2] = extract[XARCHIVETYPE_TAR_GZ] = extract[XARCHIVETYPE_TAR_LZMA] = extract[XARCHIVETYPE_TAR_XZ] = extract[XARCHIVETYPE_TAR_LZOP] = &xa_tar_extract;
- extract[XARCHIVETYPE_ZIP] = &xa_zip_extract;
- extract[XARCHIVETYPE_LHA] = &xa_lha_extract;
- extract[XARCHIVETYPE_LZOP] = &xa_tar_extract;
-@@ -345,10 +347,10 @@
- test[0] = 0;
- test[XARCHIVETYPE_7ZIP] = &xa_7zip_test;
- test[XARCHIVETYPE_ARJ] = &xa_arj_test;
-- test[XARCHIVETYPE_DEB] = test[XARCHIVETYPE_BZIP2] = test[XARCHIVETYPE_GZIP] = test[XARCHIVETYPE_LZMA] = 0;
-+ test[XARCHIVETYPE_DEB] = test[XARCHIVETYPE_BZIP2] = test[XARCHIVETYPE_GZIP] = test[XARCHIVETYPE_LZMA] = test[XARCHIVETYPE_XZ] = 0;
- test[XARCHIVETYPE_RAR] = &xa_rar_test;
- test[XARCHIVETYPE_RPM] = 0;
-- test[XARCHIVETYPE_TAR] = test[XARCHIVETYPE_TAR_BZ2] = test[XARCHIVETYPE_TAR_GZ] = test[XARCHIVETYPE_TAR_LZMA] = test[XARCHIVETYPE_TAR_LZOP] = 0;
-+ test[XARCHIVETYPE_TAR] = test[XARCHIVETYPE_TAR_BZ2] = test[XARCHIVETYPE_TAR_GZ] = test[XARCHIVETYPE_TAR_LZMA] = test[XARCHIVETYPE_TAR_XZ] = test[XARCHIVETYPE_TAR_LZOP] = 0;
- test[XARCHIVETYPE_ZIP] = &xa_zip_test;
- test[XARCHIVETYPE_LHA] = &xa_lha_test;
- test[XARCHIVETYPE_LZOP] = 0;
-@@ -392,6 +394,14 @@
- g_free (absolute_path);
- }
-
-+ absolute_path = g_find_program_in_path("xz");
-+ if ( absolute_path )
-+ {
-+ ArchiveType = g_list_append(ArchiveType, "xz");
-+ ArchiveSuffix = g_list_append(ArchiveSuffix, "*.xz");
-+ g_free (absolute_path);
-+ }
-+
- absolute_path = g_find_program_in_path("lzop");
- if ( absolute_path )
- {
-@@ -460,6 +470,11 @@
- ArchiveType = g_list_append(ArchiveType, "tar.lzma");
- ArchiveSuffix = g_list_append(ArchiveSuffix, "*.tlz");
- }
-+ if ( g_list_find ( ArchiveType , "xz") )
-+ {
-+ ArchiveType = g_list_append(ArchiveType, "tar.xz");
-+ ArchiveSuffix = g_list_append(ArchiveSuffix, "*.txz");
-+ }
- if ( g_list_find ( ArchiveType , "lzo") )
- {
- ArchiveType = g_list_append(ArchiveType, "tar.lzo");
-@@ -528,6 +543,8 @@
- archive->type = XARCHIVETYPE_TAR_GZ;
- else if ( g_str_has_suffix ( archive->escaped_path , ".tar.lzma") || g_str_has_suffix ( archive->escaped_path , ".tlz") )
- archive->type = XARCHIVETYPE_TAR_LZMA;
-+ else if ( g_str_has_suffix ( archive->escaped_path , ".tar.xz") || g_str_has_suffix ( archive->escaped_path , ".txz") )
-+ archive->type = XARCHIVETYPE_TAR_XZ;
- else if ( g_str_has_suffix ( archive->escaped_path , ".tar.lzo") ||
- g_str_has_suffix ( archive->escaped_path , ".tzo") ||
- g_str_has_suffix ( archive->escaped_path , ".tar.lzop"))
-diff -uNr xarchiver-0.5.2.orig/src/new_dialog.c xarchiver-0.5.2/src/new_dialog.c
---- xarchiver-0.5.2.orig/src/new_dialog.c 2008-11-11 17:28:46.000000000 +0900
-+++ xarchiver-0.5.2/src/new_dialog.c 2013-05-11 10:01:47.890094708 +0900
-@@ -202,6 +202,8 @@
- type = XARCHIVETYPE_GZIP;
- else if (strcmp ( ComboArchiveType,"lzma") == 0)
- type = XARCHIVETYPE_LZMA;
-+ else if (strcmp ( ComboArchiveType,"xz") == 0)
-+ type = XARCHIVETYPE_XZ;
- else if (strcmp ( ComboArchiveType,"lzo") == 0)
- type = XARCHIVETYPE_LZOP;
- else if (strcmp ( ComboArchiveType,"rar") == 0)
-@@ -214,6 +216,8 @@
- type = XARCHIVETYPE_TAR_GZ;
- else if (strcmp ( ComboArchiveType,"tar.lzma") == 0)
- type = XARCHIVETYPE_TAR_LZMA;
-+ else if (strcmp ( ComboArchiveType,"tar.xz") == 0)
-+ type = XARCHIVETYPE_TAR_XZ;
- else if (strcmp ( ComboArchiveType,"tar.lzo") == 0)
- type = XARCHIVETYPE_TAR_LZOP;
- else if (strcmp ( ComboArchiveType,"jar") == 0 || strcmp ( ComboArchiveType,"zip") == 0 )
-diff -Naur xarchiver-0.5.2.orig/src/rpm.c xarchiver-0.5.2/src/rpm.c
---- xarchiver-0.5.2.orig/src/rpm.c 2014-01-24 03:07:47.729711000 +0100
-+++ xarchiver-0.5.2/src/rpm.c 2014-01-24 03:12:43.717122918 +0100
-@@ -111,8 +111,10 @@
- }
- if (xa_detect_archive_type (gzip_tmp) == XARCHIVETYPE_GZIP)
- executable = "gzip -dc ";
-- else
-+ else if (xa_detect_archive_type (gzip_tmp) == XARCHIVETYPE_BZIP2)
- executable = "bzip2 -dc ";
-+ else
-+ executable = "xz -dc ";
-
- command = g_strconcat("sh -c \"",executable,gzip_tmp," > ",archive->tmp,"/file.cpio\"",NULL);
- g_free(gzip_tmp);diff -uNr xarchiver-0.5.2.orig/src/tar.c xarchiver-0.5.2/src/tar.c
---- xarchiver-0.5.2.orig/src/tar.c 2008-11-10 19:28:34.000000000 +0900
-+++ xarchiver-0.5.2/src/tar.c 2013-05-11 10:12:01.027094262 +0900
-@@ -242,6 +242,17 @@
- files->str , NULL );
- break;
-
-+ case XARCHIVETYPE_TAR_XZ:
-+ if ( g_file_test ( archive->escaped_path , G_FILE_TEST_EXISTS ) )
-+ xa_add_delete_bzip2_gzip_lzma_compressed_tar (files,archive,1);
-+ else
-+ command = g_strconcat (tar, " ",
-+ archive->add_recurse ? "" : "--no-recursion ",
-+ archive->remove_files ? "--remove-files " : "",
-+ "--use-compress-program=xz -cvvf ",archive->escaped_path,
-+ files->str , NULL );
-+ break;
-+
- case XARCHIVETYPE_TAR_LZOP:
- if ( g_file_test ( archive->escaped_path , G_FILE_TEST_EXISTS ) )
- xa_add_delete_bzip2_gzip_lzma_compressed_tar (files,archive,1);
-@@ -265,6 +276,10 @@
- command = g_strconcat("sh -c \"lzma -c ",files->str,"> ",archive->escaped_path,"\"",NULL);
- break;
-
-+ case XARCHIVETYPE_XZ:
-+ command = g_strconcat("sh -c \"xz -c ",files->str,"> ",archive->escaped_path,"\"",NULL);
-+ break;
-+
- case XARCHIVETYPE_LZOP:
- command = g_strconcat("sh -c \"lzop -c ",files->str,"> ",archive->escaped_path,"\"",NULL);
- break;
-@@ -378,6 +393,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)
- {
-@@ -402,6 +436,11 @@
- command = NULL;
- break;
-
-+ case XARCHIVETYPE_XZ:
-+ result = lzma_bzip2_extract(archive,NULL);
-+ command = NULL;
-+ break;
-+
- case XARCHIVETYPE_LZOP:
- result = lzma_bzip2_extract(archive,NULL);
- command = NULL;
-@@ -449,6 +488,10 @@
- executable = "lzma -f ";
- filename = "dummy.lzma";
- break;
-+ case XARCHIVETYPE_TAR_XZ:
-+ executable = "xz -f ";
-+ filename = "dummy.xz";
-+ break;
- case XARCHIVETYPE_TAR_LZOP:
- executable = "lzop -f ";
- filename = "dummy.lzo";
-@@ -493,7 +536,7 @@
-
- gboolean is_tar_compressed (gint type)
- {
-- return (type == XARCHIVETYPE_TAR_BZ2 || type == XARCHIVETYPE_TAR_GZ || type == XARCHIVETYPE_TAR_LZMA || type == XARCHIVETYPE_TAR_LZOP);
-+ return (type == XARCHIVETYPE_TAR_BZ2 || type == XARCHIVETYPE_TAR_GZ || type == XARCHIVETYPE_TAR_LZMA || type == XARCHIVETYPE_TAR_XZ || type == XARCHIVETYPE_TAR_LZOP);
- }
-
- gboolean xa_extract_tar_without_directories (gchar *string,XArchive *archive,gchar *files_to_extract)
-diff -uNr xarchiver-0.5.2.orig/src/window.c xarchiver-0.5.2/src/window.c
---- xarchiver-0.5.2.orig/src/window.c 2008-11-11 17:31:45.000000000 +0900
-+++ xarchiver-0.5.2/src/window.c 2013-05-11 10:01:47.892094708 +0900
-@@ -1125,6 +1125,8 @@
- xx = XARCHIVETYPE_GZIP;
- else if (memcmp ( magic,"\x5d\x00\x00\x80",4) == 0)
- xx = XARCHIVETYPE_LZMA;
-+ else if ((memcmp ( magic,"\xFD" "7zXZ\x00\x00",7) == 0) || (memcmp ( magic,"\xFD" "7zXZ\x00\x10",7) == 0))
-+ xx = XARCHIVETYPE_XZ;
- else if (memcmp ( magic,"\211LZO",4) == 0)
- xx = XARCHIVETYPE_LZOP;
- else if (memcmp ( magic,"\xed\xab\xee\xdb",4) == 0)
-@@ -1462,6 +1464,7 @@
- case XARCHIVETYPE_GZIP:
- case XARCHIVETYPE_BZIP2:
- case XARCHIVETYPE_LZMA:
-+ case XARCHIVETYPE_XZ:
- case XARCHIVETYPE_LZOP:
- case XARCHIVETYPE_RPM:
- pos = 3;
-@@ -1481,6 +1484,7 @@
- case XARCHIVETYPE_TAR_GZ:
- case XARCHIVETYPE_TAR_BZ2:
- case XARCHIVETYPE_TAR_LZMA:
-+ case XARCHIVETYPE_TAR_XZ:
- case XARCHIVETYPE_TAR_LZOP:
- case XARCHIVETYPE_TAR:
- case XARCHIVETYPE_ZIP:
-@@ -1525,6 +1529,7 @@
- case XARCHIVETYPE_GZIP:
- case XARCHIVETYPE_BZIP2:
- case XARCHIVETYPE_LZMA:
-+ case XARCHIVETYPE_XZ:
- case XARCHIVETYPE_LZOP:
- case XARCHIVETYPE_RPM:
- pos = 3;
-@@ -1544,6 +1549,7 @@
- case XARCHIVETYPE_TAR_GZ:
- case XARCHIVETYPE_TAR_BZ2:
- case XARCHIVETYPE_TAR_LZMA:
-+ case XARCHIVETYPE_TAR_XZ:
- case XARCHIVETYPE_TAR_LZOP:
- case XARCHIVETYPE_TAR:
- case XARCHIVETYPE_ZIP:
diff --git a/libre/xarchiver-libre/xarchiver-0.5.2-drag-n-drop_escaped_path.patch b/libre/xarchiver-libre/xarchiver-0.5.2-drag-n-drop_escaped_path.patch
deleted file mode 100644
index 10def7d21..000000000
--- a/libre/xarchiver-libre/xarchiver-0.5.2-drag-n-drop_escaped_path.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -Naur xarchiver-0.5.2.orig/src/window.c xarchiver-0.5.2/src/window.c
---- xarchiver-0.5.2.orig/src/window.c 2012-01-12 13:28:54.000000000 +0100
-+++ xarchiver-0.5.2/src/window.c 2012-01-23 20:43:49.622745851 +0100
-@@ -1724,6 +1724,9 @@
- gtk_tree_selection_selected_foreach (selection,(GtkTreeSelectionForeachFunc) xa_concat_selected_filenames,&names);
- archive->full_path = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (extract_window->extract_full));
- archive->overwrite = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (extract_window->overwrite_check));
-+ gchar *unescaped_extraction_path = archive->extraction_path;
-+ archive->extraction_path = xa_escape_filename(unescaped_extraction_path, "$'`\"\\!?* ()[]&|:;<>#");
-+ g_free(unescaped_extraction_path);
- (*archive->extract) (archive,names);
-
- g_list_foreach (row_list,(GFunc) gtk_tree_path_free,NULL);
diff --git a/libre/xarchiver-libre/xarchiver-0.5.2-fix-non-existent-archive.patch b/libre/xarchiver-libre/xarchiver-0.5.2-fix-non-existent-archive.patch
deleted file mode 100644
index e63687579..000000000
--- a/libre/xarchiver-libre/xarchiver-0.5.2-fix-non-existent-archive.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From: Markus Koschany <apo@gambaru.de>
-Date: Thu, 28 Feb 2013 17:45:50 +0100
-Subject: fix segfault non-existent archive cmdl switch x
-
-If using the command line switch -x, the user needs to specify a valid/existent
-archive. If the name of the archive is mistyped, xarchiver will segfault. This
-patch fixes the issue.
-
-Bug: http://bugs.debian.org/701909
----
- src/main.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/main.c b/src/main.c
-index a6a7f93..a6e05e3 100644
---- a/src/main.c
-+++ b/src/main.c
-@@ -141,7 +141,7 @@ int main (int argc, char **argv)
- /* Switch -x */
- if (extract_path != NULL)
- {
-- if (argv[1] == NULL)
-+ if (argv[1] == NULL || archive == NULL)
- {
- response = xa_show_message_dialog (NULL,GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,_("Can't extract files from the archive:"),_("You missed the archive name!\n"));
- return -1;
diff --git a/libre/xarchiver-libre/xarchiver-0.5.2-fix_7z_support.patch b/libre/xarchiver-libre/xarchiver-0.5.2-fix_7z_support.patch
deleted file mode 100644
index f7ff098c0..000000000
--- a/libre/xarchiver-libre/xarchiver-0.5.2-fix_7z_support.patch
+++ /dev/null
@@ -1,110 +0,0 @@
-diff -Nur xarchiver-0.5.2.orig/src/7zip.c xarchiver-0.5.2/src/7zip.c
---- xarchiver-0.5.2.orig/src/7zip.c 2008-10-25 00:41:17.000000000 +1300
-+++ xarchiver-0.5.2/src/7zip.c 2010-12-15 11:24:26.000000000 +1300
-@@ -64,15 +64,14 @@
- XEntry *entry;
- gchar *filename;
- gpointer item[5];
-- gint linesize = 0,n = 0,a = 0;
-- gboolean dir = FALSE;
-+ gint linesize = 0,a = 0;
-
- if (last_line)
- return;
-
- if (jump_header == FALSE)
- {
-- if (line[0] == '-')
-+ if ((line[0] == '-') && (line[3] != NULL))
- {
- jump_header = TRUE;
- return;
-@@ -93,71 +92,42 @@
- item[4] = line;
-
- /* Time */
-- for(n=13; n < linesize; ++n)
-- if(line[n] == ' ')
-- break;
-- line[n] = '\0';
-+ line[19] = '\0';
- item[3] = line + 11;
-- a = ++n;
-
- /* Permissions */
-- for(; n < linesize; n++)
-- if(line[n] == ' ')
-- break;
-- line[n] = '\0';
-- if ((line+a)[0] == 'D')
-- dir = TRUE;
-- item[2] = line + a;
-+ line[25] = '\0';
-+ item[2] = line + 20;
-
- /* Size */
-- for(++n; n < linesize; ++n)
-- if(line[n] >= '0' && line[n] <= '9')
-+ for(a=26; a < linesize; ++a)
-+ if(line[a] >= '0' && line[a] <= '9')
- break;
-- a = n;
-
-- for(; n < linesize; ++n)
-- if(line[n] == ' ')
-- break;
--
-- line[n] = '\0';
-+ line[38] = '\0';
- item[0] = line + a;
- archive->dummy_size += g_ascii_strtoull(item[0],NULL,0);
-
- /* Compressed */
-- for(++n; n < linesize; ++n)
-- if(line[n] >= '0' && line[n] <= '9')
-- break;
-- a = n;
--
-- for(; n < linesize; ++n)
-- if(line[n] == ' ')
-- break;
--
-- line[n] = '\0';
--
-- if (line[50] != ' ')
-+ /* Is this item solid? */
-+ if (line[50] == ' ')
- {
-- n+=2;
-- item[1] = line + a;
- line[linesize-1] = '\0';
-- filename = g_strdup(line + n);
-+ filename = g_strdup(line + 53);
- }
-- /* Is this a solid archive? */
-+
- else
- {
-- item[1] = "0";
-- line[n-1] = '\0';
-+ for(a=39; a < linesize; ++a)
-+ if(line[a] >= '0' && line[a] <= '9')
-+ break;
-+
-+ line[51] = '\0';
-+ item[1] = line + a;
-+ line[linesize-1] = '\0';
- filename = g_strdup(line + 53);
- }
-
-- /* Work around for 7za which doesn't
-- * output / with directories */
-- if (dir)
-- {
-- gchar *filename_with_slash = g_strconcat (filename,"/",NULL);
-- g_free (filename);
-- filename = filename_with_slash;
-- }
- entry = xa_set_archive_entries_for_each_row (archive,filename,item);
- g_free(filename);
- }
diff --git a/libre/xarchiver-libre/xarchiver-0.5.2-no-donators-menu.patch b/libre/xarchiver-libre/xarchiver-0.5.2-no-donators-menu.patch
deleted file mode 100644
index aa2283a7e..000000000
--- a/libre/xarchiver-libre/xarchiver-0.5.2-no-donators-menu.patch
+++ /dev/null
@@ -1,50 +0,0 @@
---- xarchiver/trunk/src/interface.c 2009/03/19 18:03:52 29676
-+++ xarchiver/trunk/src/interface.c 2009/03/19 20:48:19 29677
-@@ -310,22 +310,14 @@
- gtk_widget_show (tmp_image);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (help1),tmp_image);
-
-+ donate = gtk_image_menu_item_new_with_mnemonic (_("_Donate"));
-+ gtk_widget_show (donate);
-+ gtk_container_add (GTK_CONTAINER (menuitem4_menu),donate);
-+
- about1 = gtk_image_menu_item_new_from_stock ("gtk-about",accel_group);
- gtk_widget_show (about1);
- gtk_container_add (GTK_CONTAINER (menuitem4_menu),about1);
-
-- thanks_to = gtk_image_menu_item_new_with_mnemonic (_("_Thanks to"));
-- gtk_widget_show (thanks_to);
-- gtk_container_add (GTK_CONTAINER (menuitem4_menu),thanks_to);
--
-- thanks_to_submenu = gtk_menu_new();
-- gtk_widget_show (thanks_to_submenu);
-- gtk_menu_item_set_submenu (GTK_MENU_ITEM (thanks_to),thanks_to_submenu);
--
-- donators = gtk_image_menu_item_new_with_mnemonic ("Your name and website here");
-- gtk_widget_show (donators);
-- gtk_container_add (GTK_CONTAINER (thanks_to_submenu),donators);
--
- /* Create the toolbar */
- toolbar1 = gtk_toolbar_new ();
- gtk_widget_show (toolbar1);
-@@ -543,7 +535,7 @@
- g_signal_connect ((gpointer) multi_extract_menu,"activate",G_CALLBACK (xa_show_multi_extract_dialog),NULL);
- g_signal_connect ((gpointer) help1,"activate",G_CALLBACK (xa_show_help),NULL);
- g_signal_connect ((gpointer) about1,"activate",G_CALLBACK (xa_about),NULL);
-- g_signal_connect ((gpointer) donators,"activate",G_CALLBACK (xa_show_donate_page_on_the_web),NULL);
-+ g_signal_connect ((gpointer) donate,"activate",G_CALLBACK (xa_show_donate_page_on_the_web),NULL);
-
- g_signal_connect ((gpointer) New_button, "clicked",G_CALLBACK (xa_new_archive),NULL);
- g_signal_connect ((gpointer) Open_button, "clicked",G_CALLBACK (xa_open_archive),NULL);
---- xarchiver/trunk/src/interface.h 2008/11/04 10:06:17 28603
-+++ xarchiver/trunk/src/interface.h 2009/03/19 20:48:19 29677
-@@ -48,8 +48,8 @@
- *name_label, *type_label, *compression_data, *encrypted_data, *encrypted_label,*number_of_files_data, *content_data, *comment_data, *size_data, *modified_data, *path_data, *type_data,
- *name_data, *separatormenuitem1, *separatormenuitem2, *separatormenuitem3, *separatormenuitem4, *separatormenuitem5, *separatormenuitem6, *quit1,
- *close1, *check_menu, *properties, *menuitem2, *menuitem2_menu, *addfile, *extract_menu, *delete_menu, *comment_menu, *multi_extract_menu,*view_shell_output1,
--*prefs_menu,*password_entry_menu, *image1, *image2, *menuitem4, *thanks_to,*thanks_to_submenu,*select_all,*deselect_all,*select_pattern, *exe_menu, *menuitem4_menu,
--*about1, *help1, *donators,*toolbar1, *toolbar2, *hbox1, *tmp_image, *pad_image, *New_button, *Open_button, *back_button, *home_button, *forward_button,
-+*prefs_menu,*password_entry_menu, *image1, *image2, *menuitem4, *donate,*select_all,*deselect_all,*select_pattern, *exe_menu, *menuitem4_menu,
-+*about1, *help1,*toolbar1, *toolbar2, *hbox1, *tmp_image, *pad_image, *New_button, *Open_button, *back_button, *home_button, *forward_button,
- *up_button,*separatortoolitem1,*separatortoolitem2,*separatortoolitem3,*AddFile_button,*Extract_button,*Stop_button,*toolitem1,*location_label,
- *location_entry,*hpaned1,*archive_dir_treeview,*scrolledwindow2,*ddelete,*rename_menu,*rrename,*cut,*copy,*paste,*view,*open_popupmenu;
diff --git a/libre/xarchiver-libre/xarchiver-0.5.2-rpm2cpio.patch b/libre/xarchiver-libre/xarchiver-0.5.2-rpm2cpio.patch
deleted file mode 100644
index d962a44af..000000000
--- a/libre/xarchiver-libre/xarchiver-0.5.2-rpm2cpio.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-diff -up ./src/rpm.c.rpm2cpio ./src/rpm.c
---- ./src/rpm.c.rpm2cpio 2008-10-24 13:43:04.000000000 +0200
-+++ ./src/rpm.c 2011-03-27 03:14:20.225742237 +0200
-@@ -23,11 +23,8 @@ extern gboolean batch_mode;
-
- void xa_open_rpm (XArchive *archive)
- {
-- unsigned char bytes[8];
- unsigned short int i;
-- int dl,il,sigsize,offset,response;
-- gchar *ibs,*executable;
-- gchar *gzip_tmp = NULL;
-+ int response;
- GSList *list = NULL;
- FILE *stream;
- gboolean result;
-@@ -56,66 +53,14 @@ void xa_open_rpm (XArchive *archive)
- archive->column_types[i] = types[i];
-
- xa_create_liststore (archive,names);
-- if (fseek ( stream, 104 , SEEK_CUR ) )
-- {
-- fclose (stream);
-- response = xa_show_message_dialog (GTK_WINDOW (xa_main_window),GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,_("Can't fseek to position 104:"),g_strerror(errno));
-- return;
-- }
-- if ( fread ( bytes, 1, 8, stream ) == 0 )
-- {
-- fclose ( stream );
-- response = xa_show_message_dialog (GTK_WINDOW (xa_main_window),GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,_("Can't read data from file:"),g_strerror(errno));
-- return;
-- }
-- il = 256 * ( 256 * ( 256 * bytes[0] + bytes[1]) + bytes[2] ) + bytes[3];
-- dl = 256 * ( 256 * ( 256 * bytes[4] + bytes[5]) + bytes[6] ) + bytes[7];
-- sigsize = 8 + 16 * il + dl;
-- offset = 104 + sigsize + ( 8 - ( sigsize % 8 ) ) % 8 + 8;
-- if (fseek ( stream, offset , SEEK_SET ) )
-- {
-- fclose (stream);
-- response = xa_show_message_dialog (GTK_WINDOW (xa_main_window),GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,_("Can't fseek in file:"),g_strerror(errno));
-- return;
-- }
-- if ( fread ( bytes, 1, 8, stream ) == 0 )
-- {
-- fclose ( stream );
-- response = xa_show_message_dialog (GTK_WINDOW (xa_main_window),GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,_("Can't read data from file:"),g_strerror(errno));
-- return;
-- }
-- il = 256 * ( 256 * ( 256 * bytes[0] + bytes[1]) + bytes[2] ) + bytes[3];
-- dl = 256 * ( 256 * ( 256 * bytes[4] + bytes[5]) + bytes[6] ) + bytes[7];
-- sigsize = 8 + 16 * il + dl;
-- offset = offset + sigsize;
-- fclose (stream);
-
- /* Create a unique temp dir in /tmp */
- result = xa_create_temp_directory (archive);
- if (!result)
- return;
-
-- gzip_tmp = g_strconcat (archive->tmp,"/file.gz_bz",NULL);
-- ibs = g_strdup_printf ( "%u" , offset );
--
- /* Now I run dd to have the bzip2 / gzip compressed cpio archive in /tmp */
-- gchar *command = g_strconcat ( "dd if=",archive->escaped_path," ibs=",ibs," skip=1 of=",gzip_tmp,NULL);
-- g_free (ibs);
-- list = g_slist_append(list,command);
-- batch_mode = TRUE;
-- result = xa_run_command (archive,list);
-- if (result == FALSE)
-- {
-- g_free (gzip_tmp);
-- return;
-- }
-- if (xa_detect_archive_type (gzip_tmp) == XARCHIVETYPE_GZIP)
-- executable = "gzip -dc ";
-- else
-- executable = "bzip2 -dc ";
--
-- command = g_strconcat("sh -c \"",executable,gzip_tmp," > ",archive->tmp,"/file.cpio\"",NULL);
-- g_free(gzip_tmp);
-+ gchar *command = g_strconcat ( "sh -c \"rpm2cpio ",archive->escaped_path," > ",archive->tmp, "/file.cpio\"",NULL);
- list = NULL;
- list = g_slist_append(list,command);
- result = xa_run_command (archive,list);
diff --git a/libre/xarchiver-libre/xarchiver-0.5.2-segfault-delete-file.patch b/libre/xarchiver-libre/xarchiver-0.5.2-segfault-delete-file.patch
deleted file mode 100644
index b8052544b..000000000
--- a/libre/xarchiver-libre/xarchiver-0.5.2-segfault-delete-file.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -Naur xarchiver-0.5.2.orig/src/window.c xarchiver-0.5.2/src/window.c
---- xarchiver-0.5.2.orig/src/window.c 2014-01-24 01:22:27.931903000 +0100
-+++ xarchiver-0.5.2/src/window.c 2014-01-24 01:24:49.952825715 +0100
-@@ -1573,7 +1573,7 @@
- gtk_widget_show(selected_frame);
- gtk_widget_set_sensitive(deselect_all,TRUE);
- }
-- if ( (archive->type == XARCHIVETYPE_RAR && unrar) || archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP)
-+ if ( (archive->type == XARCHIVETYPE_RAR && unrar) || archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_XZ || archive->type == XARCHIVETYPE_LZOP)
- {
- gtk_widget_set_sensitive (delete_menu,FALSE);
- gtk_widget_set_sensitive (rename_menu,FALSE);
-@@ -2287,7 +2287,7 @@
- else
- value = TRUE;
- }
-- if (archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_DEB || archive->type == XARCHIVETYPE_RPM)
-+ if (archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_XZ || archive->type == XARCHIVETYPE_LZOP || archive->type == XARCHIVETYPE_DEB || archive->type == XARCHIVETYPE_RPM)
- {
- gtk_widget_set_sensitive(ddelete,FALSE);
- gtk_widget_set_sensitive(rrename,FALSE);
diff --git a/libre/xarchiver-libre/xarchiver-0.5.2-segfault-open-with.patch b/libre/xarchiver-libre/xarchiver-0.5.2-segfault-open-with.patch
deleted file mode 100644
index e29d40c41..000000000
--- a/libre/xarchiver-libre/xarchiver-0.5.2-segfault-open-with.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -pur xarchiver-0.5.2/src/open-with-dlg.c xarchiver-0.5.2.new/src/open-with-dlg.c
---- xarchiver-0.5.2/src/open-with-dlg.c 2008-10-17 14:06:03.000000000 +0200
-+++ xarchiver-0.5.2.new/src/open-with-dlg.c 2011-05-16 21:48:49.042839556 +0200
-@@ -289,7 +289,10 @@ static void xa_open_with_dialog_selectio
- GtkTreeIter iter;
- GtkTreeModel *model;
-
-- gtk_tree_selection_get_selected(selection,&model,&iter);
-+ if (!gtk_tree_selection_get_selected(selection,&model,&iter)) {
-+ return;
-+ }
-+
- gtk_tree_model_get(model,&iter,2,&exec,-1);
-
- gtk_entry_set_text(GTK_ENTRY(data->custom_command_entry),exec);
diff --git a/libre/xarchiver-libre/xarchiver-0.5.2-add_mime_types.patch b/libre/xarchiver-libre/xarchiver-0.5.3-add-mime-types.patch
index 3b510fcb8..4552e5b96 100644
--- a/libre/xarchiver-libre/xarchiver-0.5.2-add_mime_types.patch
+++ b/libre/xarchiver-libre/xarchiver-0.5.3-add-mime-types.patch
@@ -1,9 +1,9 @@
-diff -Naur xarchiver-0.5.2.orig/xarchiver.desktop.in xarchiver-0.5.2/xarchiver.desktop.in
---- xarchiver-0.5.2.orig/xarchiver.desktop.in 2014-01-24 04:05:33.438561000 +0100
-+++ xarchiver-0.5.2/xarchiver.desktop.in 2014-01-24 04:44:00.625750394 +0100
+diff -Naur xarchiver-0.5.3.orig/xarchiver.desktop.in xarchiver-0.5.2/xarchiver.desktop.in
+--- xarchiver-0.5.3.orig/xarchiver.desktop.in 2014-01-24 04:05:33.438561000 +0100
++++ xarchiver-0.5.3/xarchiver.desktop.in 2014-01-24 04:44:00.625750394 +0100
@@ -11,4 +11,4 @@
X-MultipleArgs=false
Categories=GTK;Archiving;Utility;
StartupNotify=true
-MimeType=application/x-arj;application/arj;application/x-bzip;application/x-bzip-compressed-tar;application/x-gzip;application/x-rar;application/x-rar-compressed;application/x-tar;application/x-zip;application/x-zip-compressed;application/zip;multipart/x-zip;application/x-7z-compressed;application/x-compressed-tar;application/x-bzip2;application/x-bzip2-compressed-tar;
-+MimeType=application/x-arj;application/arj;application/x-bzip;application/x-bzip-compressed-tar;application/x-gzip;application/x-tar;application/x-zip;application/x-zip-compressed;application/zip;application/x-7z-compressed;application/x-compressed-tar;application/x-bzip2;application/x-bzip2-compressed-tar;application/x-lzma;application/x-lzma-compressed-tar;application/x-lzop;application/x-lzop-compressed-tar;application/x-xz;application/x-xz-compressed-tar;application/x-debian-package;application/x-rpm;
++MimeType=application/x-arj;application/arj;application/x-bzip;application/x-bzip-compressed-tar;application/x-gzip;application/x-rar;application/x-rar-compressed;application/x-tar;application/x-zip;application/x-zip-compressed;application/zip;application/x-7z-compressed;application/x-compressed-tar;application/x-bzip2;application/x-bzip2-compressed-tar;application/x-lzma;application/x-lzma-compressed-tar;application/x-lzop;application/x-lzop-compressed-tar;application/x-xz;application/x-xz-compressed-tar;application/x-debian-package;application/x-rpm;
diff --git a/libre/xarchiver-libre/xarchiver-0.5.2-add_unar_support.patch b/libre/xarchiver-libre/xarchiver-0.5.3-add-unar-support.patch
index 0168f4e63..0b54cacc1 100644
--- a/libre/xarchiver-libre/xarchiver-0.5.2-add_unar_support.patch
+++ b/libre/xarchiver-libre/xarchiver-0.5.3-add-unar-support.patch
@@ -1,6 +1,6 @@
-diff -Nur xarchiver-0.5.2.orig/doc/html/ch03s03.html xarchiver-0.5.2/doc/html/ch03s03.html
---- xarchiver-0.5.2.orig/doc/html/ch03s03.html 2008-11-03 04:49:49.000000000 -0200
-+++ xarchiver-0.5.2/doc/html/ch03s03.html 2014-01-24 11:02:20.640986656 -0200
+diff -Nur xarchiver-0.5.3.orig/doc/html/ch03s03.html xarchiver-0.5.3/doc/html/ch03s03.html
+--- xarchiver-0.5.3.orig/doc/html/ch03s03.html 2008-11-03 04:49:49.000000000 -0200
++++ xarchiver-0.5.3/doc/html/ch03s03.html 2014-02-20 04:35:34.820373529 -0200
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -10,9 +10,9 @@ diff -Nur xarchiver-0.5.2.orig/doc/html/ch03s03.html xarchiver-0.5.2/doc/html/ch
</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="how_it_works"></a>How it works</h3></div></div></div><p>
Xarchiver will run in the background the cmd-line executable of the archiver with the archiver's proper switches to perform the selected operation. If something goes wrong Xarchiver reports the full output of the archiver executable in the command line output window. From the release 0.5 the files in the archive can be opened within Xarchiver. The script <i>xdg-open</i> will detect the file type and run the proper application to handle it. If you don't have such script installed in your system (it's found in the xdg-utils package) Xarchiver will recognize HTML, txt and images files only. The Preferences dialog will notify this to you when you click the Advanced section inside it.
</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="dnd"></a>Drag and Drop</h3></div></div></div><p>
-diff -Nur xarchiver-0.5.2.orig/doc/xarchiver.docbook xarchiver-0.5.2/doc/xarchiver.docbook
---- xarchiver-0.5.2.orig/doc/xarchiver.docbook 2007-08-22 07:49:19.000000000 -0300
-+++ xarchiver-0.5.2/doc/xarchiver.docbook 2014-01-24 11:01:17.088748863 -0200
+diff -Nur xarchiver-0.5.3.orig/doc/xarchiver.docbook xarchiver-0.5.3/doc/xarchiver.docbook
+--- xarchiver-0.5.3.orig/doc/xarchiver.docbook 2007-08-22 07:49:19.000000000 -0300
++++ xarchiver-0.5.3/doc/xarchiver.docbook 2014-02-20 04:35:34.820373529 -0200
@@ -204,7 +204,7 @@
<section id="general_startup">
<title>Startup</title>
@@ -22,34 +22,9 @@ diff -Nur xarchiver-0.5.2.orig/doc/xarchiver.docbook xarchiver-0.5.2/doc/xarchiv
</para>
</section>
<section id="how_it_works">
-diff -Nur xarchiver-0.5.2.orig/src/extract_dialog.c xarchiver-0.5.2/src/extract_dialog.c
---- xarchiver-0.5.2.orig/src/extract_dialog.c 2008-11-10 08:28:11.000000000 -0200
-+++ xarchiver-0.5.2/src/extract_dialog.c 2014-01-24 10:55:28.209263885 -0200
-@@ -24,7 +24,7 @@
- #include "string_utils.h"
- #include "support.h"
-
--extern gboolean unrar,batch_mode;
-+extern gboolean unar,batch_mode;
- extern Prefs_dialog_data *prefs_window;
- extern Progress_bar_data *pb;
- extern extract_func extract [XARCHIVETYPE_COUNT];
-@@ -290,11 +290,7 @@
- GSList *names = NULL;
- GtkTreeModel *model;
- int response;
--
-- if (unrar)
-- rar = "unrar";
-- else
-- rar = "rar";
-+ rar = "unar";
-
- while (! done)
- {
-diff -Nur xarchiver-0.5.2.orig/src/interface.c xarchiver-0.5.2/src/interface.c
---- xarchiver-0.5.2.orig/src/interface.c 2008-11-11 06:09:01.000000000 -0200
-+++ xarchiver-0.5.2/src/interface.c 2014-01-24 10:56:03.893317117 -0200
+diff -Nur xarchiver-0.5.3.orig/src/interface.c xarchiver-0.5.3/src/interface.c
+--- xarchiver-0.5.3.orig/src/interface.c 2014-02-09 13:26:24.000000000 -0200
++++ xarchiver-0.5.3/src/interface.c 2014-02-20 04:58:54.470139199 -0200
@@ -45,7 +45,7 @@
{ "text/uri-list",0,0 },
};
@@ -59,18 +34,18 @@ diff -Nur xarchiver-0.5.2.orig/src/interface.c xarchiver-0.5.2/src/interface.c
static gboolean xa_progress_dialog_delete_event (GtkWidget *caller,GdkEvent *event,GPid pid);
static void xa_progress_dialog_stop_action (GtkWidget *widget,GPid pid);
-@@ -629,7 +629,7 @@
+@@ -623,7 +623,7 @@
{
gtk_widget_show(selected_frame);
gtk_widget_set_sensitive(deselect_all,TRUE);
-- if (archive[id]->type == XARCHIVETYPE_RAR && unrar)
-+ if (archive[id]->type == XARCHIVETYPE_RAR && unar)
+- if ((archive[id]->type == XARCHIVETYPE_RAR || archive[id]->type == XARCHIVETYPE_RAR5) && unrar)
++ if ((archive[id]->type == XARCHIVETYPE_RAR) && unar)
{
gtk_widget_set_sensitive (delete_menu,FALSE);
gtk_widget_set_sensitive (rename_menu,FALSE);
-diff -Nur xarchiver-0.5.2.orig/src/main.c xarchiver-0.5.2/src/main.c
---- xarchiver-0.5.2.orig/src/main.c 2008-11-10 09:21:43.000000000 -0200
-+++ xarchiver-0.5.2/src/main.c 2014-01-24 12:18:53.211684553 -0200
+diff -Nur xarchiver-0.5.3.orig/src/main.c xarchiver-0.5.3/src/main.c
+--- xarchiver-0.5.3.orig/src/main.c 2014-02-20 03:24:20.406301116 -0200
++++ xarchiver-0.5.3/src/main.c 2014-02-20 04:43:27.247666292 -0200
@@ -33,7 +33,7 @@
gchar *add_files;
gboolean error_output, file_to_open, ask_and_extract, ask_and_add, multi_extract;
@@ -78,44 +53,50 @@ diff -Nur xarchiver-0.5.2.orig/src/main.c xarchiver-0.5.2/src/main.c
-gboolean unrar = FALSE;
+gboolean unar = FALSE;
gboolean sevenzr = FALSE, sevenza = FALSE, xdg_open = FALSE;
+ static gboolean show_version = FALSE;
int response;
- extern gchar *current_open_directory;
-@@ -312,7 +312,6 @@
+@@ -330,7 +330,6 @@
delete[XARCHIVETYPE_GZIP] = 0;
delete[XARCHIVETYPE_LZMA] = 0;
delete[XARCHIVETYPE_XZ] = 0;
-- delete[XARCHIVETYPE_RAR] = &xa_rar_delete;
+- delete[XARCHIVETYPE_RAR] = delete[XARCHIVETYPE_RAR5] = &xa_rar_delete;
delete[XARCHIVETYPE_RPM] = 0;
delete[XARCHIVETYPE_TAR] = delete[XARCHIVETYPE_TAR_BZ2] = delete[XARCHIVETYPE_TAR_GZ] = delete[XARCHIVETYPE_TAR_LZMA] = delete[XARCHIVETYPE_TAR_XZ] = delete[XARCHIVETYPE_TAR_LZOP] = &xa_tar_delete;
delete[XARCHIVETYPE_ZIP] = &xa_zip_delete;
-@@ -325,7 +324,6 @@
+@@ -343,7 +342,6 @@
add[XARCHIVETYPE_ARJ] = &xa_arj_add;
add[XARCHIVETYPE_DEB] = 0;
- add[XARCHIVETYPE_BZIP2] = add[XARCHIVETYPE_GZIP] = add[XARCHIVETYPE_LZMA] = add[XARCHIVETYPE_XZ] = &xa_tar_add;
-- add[XARCHIVETYPE_RAR] = &xa_rar_add;
+ add[XARCHIVETYPE_BZIP2] = add[XARCHIVETYPE_GZIP] = add[XARCHIVETYPE_LZMA] = add[XARCHIVETYPE_XZ] = add[XARCHIVETYPE_LZOP] = &xa_tar_add;
+- add[XARCHIVETYPE_RAR] = add[XARCHIVETYPE_RAR5] = &xa_rar_add;
add[XARCHIVETYPE_RPM] = 0;
add[XARCHIVETYPE_TAR] = add[XARCHIVETYPE_TAR_BZ2] = add[XARCHIVETYPE_TAR_GZ] = add[XARCHIVETYPE_TAR_LZMA] = add[XARCHIVETYPE_TAR_XZ] = add[XARCHIVETYPE_TAR_LZOP] = &xa_tar_add;
add[XARCHIVETYPE_ZIP] = &xa_zip_add;
-@@ -348,7 +346,6 @@
+@@ -364,7 +362,6 @@
test[XARCHIVETYPE_7ZIP] = &xa_7zip_test;
test[XARCHIVETYPE_ARJ] = &xa_arj_test;
- test[XARCHIVETYPE_DEB] = test[XARCHIVETYPE_BZIP2] = test[XARCHIVETYPE_GZIP] = test[XARCHIVETYPE_LZMA] = test[XARCHIVETYPE_XZ] = 0;
-- test[XARCHIVETYPE_RAR] = &xa_rar_test;
+ test[XARCHIVETYPE_DEB] = test[XARCHIVETYPE_BZIP2] = test[XARCHIVETYPE_GZIP] = test[XARCHIVETYPE_LZMA] = test[XARCHIVETYPE_XZ] = test[XARCHIVETYPE_LZOP] = &xa_tar_test;
+- test[XARCHIVETYPE_RAR] = test[XARCHIVETYPE_RAR5] = &xa_rar_test;
test[XARCHIVETYPE_RPM] = 0;
- test[XARCHIVETYPE_TAR] = test[XARCHIVETYPE_TAR_BZ2] = test[XARCHIVETYPE_TAR_GZ] = test[XARCHIVETYPE_TAR_LZMA] = test[XARCHIVETYPE_TAR_XZ] = test[XARCHIVETYPE_TAR_LZOP] = 0;
+ test[XARCHIVETYPE_TAR] = test[XARCHIVETYPE_TAR_BZ2] = test[XARCHIVETYPE_TAR_GZ] = test[XARCHIVETYPE_TAR_LZMA] = test[XARCHIVETYPE_TAR_XZ] = test[XARCHIVETYPE_TAR_LZOP] = &xa_tar_test;
test[XARCHIVETYPE_ZIP] = &xa_zip_test;
-@@ -420,24 +417,14 @@
+@@ -435,38 +432,14 @@
//ArchiveSuffix = g_list_append(ArchiveSuffix, "");
}
- absolute_path = g_find_program_in_path ("rar");
-- if ( absolute_path )
-+ absolute_path = g_find_program_in_path("unar");
-+ if ( absolute_path )
++ absolute_path = g_find_program_in_path ("unar");
+ if ( absolute_path )
{
+ unar = TRUE;
ArchiveType = g_list_append(ArchiveType, "rar");
ArchiveSuffix = g_list_append(ArchiveSuffix, "*.rar");
+- // Is RAR v5 ?
+- xa_rar_checkversion (absolute_path);
+- if (rar_version == 5)
+- {
+- ArchiveType = g_list_append(ArchiveType, "rar5");
+- ArchiveSuffix = g_list_append(ArchiveSuffix, "*.rar5");
+- }
g_free (absolute_path);
}
- else
@@ -126,15 +107,22 @@ diff -Nur xarchiver-0.5.2.orig/src/main.c xarchiver-0.5.2/src/main.c
- unrar = TRUE;
- ArchiveType = g_list_append(ArchiveType, "rar");
- ArchiveSuffix = g_list_append(ArchiveSuffix, "*.rar");
+- // Is RAR v5 ?
+- xa_rar_checkversion (absolute_path);
+- if (rar_version == 5)
+- {
+- ArchiveType = g_list_append(ArchiveType, "rar5");
+- ArchiveSuffix = g_list_append(ArchiveSuffix, "*.rar5");
+- }
- g_free (absolute_path);
- }
- }
absolute_path = g_find_program_in_path("cpio");
if ( absolute_path )
-diff -Nur xarchiver-0.5.2.orig/src/new_dialog.c xarchiver-0.5.2/src/new_dialog.c
---- xarchiver-0.5.2.orig/src/new_dialog.c 2008-11-11 06:28:46.000000000 -0200
-+++ xarchiver-0.5.2/src/new_dialog.c 2014-01-24 10:56:34.274491565 -0200
+diff -Nur xarchiver-0.5.3.orig/src/new_dialog.c xarchiver-0.5.3/src/new_dialog.c
+--- xarchiver-0.5.3.orig/src/new_dialog.c 2014-02-09 13:26:24.000000000 -0200
++++ xarchiver-0.5.3/src/new_dialog.c 2014-02-20 05:13:00.058263839 -0200
@@ -24,7 +24,7 @@
#include "string_utils.h"
#include "main.h"
@@ -144,9 +132,18 @@ diff -Nur xarchiver-0.5.2.orig/src/new_dialog.c xarchiver-0.5.2/src/new_dialog.c
extern Prefs_dialog_data *prefs_window;
gchar *current_new_directory = NULL;
gint new_combo_box = -1;
-diff -Nur xarchiver-0.5.2.orig/src/pref_dialog.c xarchiver-0.5.2/src/pref_dialog.c
---- xarchiver-0.5.2.orig/src/pref_dialog.c 2008-11-10 06:05:07.000000000 -0200
-+++ xarchiver-0.5.2/src/pref_dialog.c 2014-01-24 10:54:07.611853842 -0200
+@@ -101,7 +101,7 @@
+
+ while (Name)
+ {
+- if (!(strncmp(Name->data, "rar", 3) == 0 && unrar))
++ if (!(strncmp(Name->data, "rar", 3) == 0 && unar))
+ gtk_combo_box_append_text(GTK_COMBO_BOX(combo_box),Name->data);
+ Name = g_list_next (Name);
+ }
+diff -Nur xarchiver-0.5.3.orig/src/pref_dialog.c xarchiver-0.5.3/src/pref_dialog.c
+--- xarchiver-0.5.3.orig/src/pref_dialog.c 2014-02-09 13:26:24.000000000 -0200
++++ xarchiver-0.5.3/src/pref_dialog.c 2014-02-20 04:44:40.225947167 -0200
@@ -23,7 +23,7 @@
#include "main.h"
#include "support.h"
@@ -160,14 +157,14 @@ diff -Nur xarchiver-0.5.2.orig/src/pref_dialog.c xarchiver-0.5.2/src/pref_dialog
{
if (strcmp(archive_type->data, "tgz") == 0 ||
strcmp(archive_type->data, "rpm") == 0 ||
-- (strcmp(archive_type->data, "rar") == 0 && unrar) )
-+ (strcmp(archive_type->data, "rar") == 0 && unar) )
+- (strncmp(archive_type->data, "rar", 3) == 0 && unrar) )
++ (strncmp(archive_type->data, "rar", 3) == 0 && unar) )
goto next;
else
gtk_combo_box_append_text (GTK_COMBO_BOX (prefs_data->combo_prefered_format),archive_type->data );
-diff -Nur xarchiver-0.5.2.orig/src/rar.c xarchiver-0.5.2/src/rar.c
---- xarchiver-0.5.2.orig/src/rar.c 2008-11-10 06:05:07.000000000 -0200
-+++ xarchiver-0.5.2/src/rar.c 2014-01-24 13:09:12.838038687 -0200
+diff -Nur xarchiver-0.5.3.orig/src/rar.c xarchiver-0.5.3/src/rar.c
+--- xarchiver-0.5.3.orig/src/rar.c 2014-02-09 13:26:24.000000000 -0200
++++ xarchiver-0.5.3/src/rar.c 2014-02-20 05:11:19.611884642 -0200
@@ -20,7 +20,7 @@
#include "rar.h"
#include <unistd.h>
@@ -176,14 +173,12 @@ diff -Nur xarchiver-0.5.2.orig/src/rar.c xarchiver-0.5.2/src/rar.c
+extern gboolean unar;
extern void xa_reload_archive_content(XArchive *archive);
extern void xa_create_liststore ( XArchive *archive, gchar *columns_names[]);
-
-@@ -30,19 +30,10 @@
+ extern int rar_version;
+@@ -36,44 +36,15 @@
gchar *command = NULL;
gchar *rar = NULL;
jump_header = read_filename = last_line = encrypted = FALSE;
-+ rar = "unar";
-+ archive->can_add = archive->has_sfx = FALSE;
-
+-
- if (unrar)
- {
- rar = "unrar";
@@ -194,13 +189,41 @@ diff -Nur xarchiver-0.5.2.orig/src/rar.c xarchiver-0.5.2/src/rar.c
- rar = "rar";
- archive->can_add = archive->has_sfx = TRUE;
- }
--
++ rar = "unar";
++ archive->can_add = archive->has_sfx = FALSE;
+
- command = g_strconcat ( rar," v " , archive->escaped_path, NULL );
+ command = g_strconcat ( rar, archive->escaped_path, NULL );
- archive->can_extract = archive->has_test = archive->has_properties = TRUE;
+ archive->has_sfx = archive->has_properties = archive->can_extract = archive->has_test = TRUE;
archive->dummy_size = 0;
archive->nr_of_files = 0;
-@@ -222,71 +213,6 @@
+
+- if (archive->type == XARCHIVETYPE_RAR5)
+- archive->format = "RAR5";
+- else
+- archive->format = "RAR";
+-
+-
+- if (rar_version == 5)
+- {
+- archive->nc = 8;
+- archive->parse_output = xa_get_rar5_line_content;
+- xa_spawn_async_process (archive,command);
+- g_free ( command );
+- if ( archive->child_pid == 0 )
+- return;
+- archive->column_types = g_malloc0(sizeof(types5));
+- for (i = 0; i < archive->nc+2; i++)
+- archive->column_types[i] = types5[i];
+-
+- xa_create_liststore (archive, names5);
+- }
+- else
++ archive->format = "RAR";
+ {
+ archive->nc = 10;
+ archive->parse_output = xa_get_rar_line_content;
+@@ -247,32 +218,6 @@
}
}
@@ -230,49 +253,10 @@ diff -Nur xarchiver-0.5.2.orig/src/rar.c xarchiver-0.5.2/src/rar.c
- xa_reload_archive_content(archive);
-}
-
--void xa_rar_add (XArchive *archive,GString *files,gchar *compression_string)
--{
-- GSList *list = NULL;
-- gchar *command = NULL;
--
-- if (archive->location_entry_path != NULL)
-- archive->working_dir = g_strdup(archive->tmp);
--
-- if (compression_string == NULL)
-- compression_string = "3";
-- if (archive->passwd != NULL)
-- command = g_strconcat ( "rar a ",
-- archive->update ? "-u " : "",
-- archive->freshen ? "-f " : "",
-- archive->solid_archive ? "-s " : "",
-- archive->remove_files ? "-df " : "",
-- "-p" , archive->passwd,
-- " -idp ",
-- "-m",compression_string," ",
-- archive->escaped_path,
-- files->str,NULL);
-- else
-- command = g_strconcat ( "rar a ",
-- archive->update ? "-u " : "",
-- archive->freshen ? "-f " : "",
-- archive->solid_archive ? "-s " : " ",
-- archive->remove_files ? "-df " : " ",
-- "-idp ",
-- "-m",compression_string," ",
-- archive->escaped_path,
-- files->str,NULL);
--
-- g_string_free(files,TRUE);
-- list = g_slist_append(list,command);
--
-- xa_run_command (archive,list);
-- xa_reload_archive_content(archive);
--}
--
gboolean xa_rar_extract(XArchive *archive,GSList *files)
{
gchar *rar, *command, *e_filename = NULL;
-@@ -295,10 +221,7 @@
+@@ -281,10 +226,7 @@
gboolean result = FALSE;
_files = files;
@@ -284,32 +268,7 @@ diff -Nur xarchiver-0.5.2.orig/src/rar.c xarchiver-0.5.2/src/rar.c
while (_files)
{
-@@ -311,42 +234,16 @@
- g_slist_free(_files);
-
- if (archive->passwd != NULL)
-- command = g_strconcat (rar," ",archive->full_path ? "x " : "e ",
-- archive->freshen ? "-f " : "" , archive->update ? "-u " : "",
-- " -p",archive->passwd,
-- archive->overwrite ? " -o+" : " -o-",
-- " -idp ",
-- archive->escaped_path,names->str," ",archive->extraction_path , NULL );
-- else
-- command = g_strconcat (rar," ",archive->full_path ? "x " : "e ",
-- archive->freshen ? "-f " : "" , archive->update ? "-u " : "",
-- archive->overwrite ? "-o+" : "-o-",
-- " -idp ",
-- archive->escaped_path,names->str," ",archive->extraction_path , NULL );
-+ command = g_strconcat (rar," -p",archive->passwd,
-+ archive->overwrite ? " -f" : "" ,
-+ archive->escaped_path,names->str," ",archive->extraction_path , NULL );
-+ else
-+ command = g_strconcat (rar," ",
-+ archive->overwrite ? " -f" : "" ,
-+ archive->escaped_path,names->str," ",archive->extraction_path , NULL );
- g_string_free(names,TRUE);
- list = g_slist_append(list,command);
-
+@@ -315,230 +257,3 @@
result = xa_run_command (archive,list);
return result;
}
@@ -334,9 +293,215 @@ diff -Nur xarchiver-0.5.2.orig/src/rar.c xarchiver-0.5.2/src/rar.c
- list = g_slist_append(list,command);
- xa_run_command (archive,list);
- }
-diff -Nur xarchiver-0.5.2.orig/src/rar.h xarchiver-0.5.2/src/rar.h
---- xarchiver-0.5.2.orig/src/rar.h 2008-08-22 05:12:38.000000000 -0300
-+++ xarchiver-0.5.2/src/rar.h 2014-01-24 10:49:13.140141939 -0200
+-
+-void xa_get_rar5_line_content (gchar *line, gpointer data)
+-{
+- XArchive *archive = data;
+- XEntry *entry;
+- gpointer item[7];
+- unsigned short int i = 0;
+- unsigned int linesize,n,a;
+- gboolean dir = FALSE;
+- static gchar *filename;
+-
+- if (last_line)
+- return;
+-
+- if (jump_header == FALSE)
+- {
+- if (strncmp(line,"Comment:",8) == 0)
+- {
+- jump_comment = archive->has_comment = TRUE;
+- archive->comment = g_string_new("");
+- archive->comment = g_string_append(archive->comment,&line[9]);
+- return;
+- }
+- if (jump_comment == TRUE)
+- {
+- if (strncmp(line,"Name",4) != 0)
+- { archive->comment = g_string_append(archive->comment,line);
+- return;
+- }
+- jump_comment = FALSE;
+- }
+- if (line[0] == '-')
+- {
+- jump_header = TRUE;
+- return;
+- }
+- return;
+- }
+-
+- linesize = strlen(line);
+- line[linesize - 1] = '\0';
+-
+- if(line[0] == '*')
+- {
+- archive->has_passwd = TRUE;
+- encrypted = TRUE;
+- }
+- else if (line[0] == '-')
+- {
+- last_line = TRUE;
+- return;
+- }
+-
+- archive->nr_of_files++;
+-
+- /* Permissions */
+- for(n=0; n < linesize && line[n] == ' '; n++);
+- a = n;
+- for(; n < linesize && line[n] != ' '; n++);
+- line[n] = '\0';
+- if ((line+a)[0] == 'd')
+- dir = TRUE;
+- item[5] = line + a;
+- n++;
+-
+- /* Size */
+- for(; n < linesize && line[n] == ' '; n++);
+- a = n;
+- for(; n < linesize && line[n] != ' '; n++);
+- line[n]='\0';
+- item[i] = line + a;
+- archive->dummy_size += g_ascii_strtoull(item[i],NULL,0);
+- i++;
+- n++;
+-
+- /* Compressed */
+- for(; n < linesize && line[n] == ' '; n++);
+- a = n;
+- for(; n < linesize && line[n] != ' '; n++);
+- line[n]='\0';
+- item[i] = line + a;
+- i++;
+- n++;
+-
+- /* Ratio */
+- for(; n < linesize && line[n] == ' '; n++);
+- a = n;
+- for(; n < linesize && line[n] != ' '; n++);
+- line[n] = '\0';
+- item[i] = line + a;
+- i++;
+- n++;
+-
+- /* Date */
+- for(; n < linesize && line[n] == ' '; n++);
+- a = n;
+- for(; n < linesize && line[n] != ' '; n++);
+- line[n] = '\0';
+- item[i] = line + a;
+- i++;
+- n++;
+-
+- /* Time */
+- for(; n < linesize && line[n] == ' '; n++);
+- a = n;
+- for(; n < linesize && line[n] != ' '; n++);
+- line[n] = '\0';
+- item[i] = line + a;
+- i+=2;
+- n++;
+-
+- /* CRC */
+- for(; n < linesize && line[n] == ' '; n++);
+- a = n;
+- for(; n < linesize && line[n] != ' '; n++);
+- line[n] = '\0';
+- item[i] = line + a;
+- i++;
+- n++;
+-
+- /* fileName */
+- for(n=64; n < linesize && line[n] == ' '; n++);
+- a = n;
+- for(; n < linesize && line[n] != ' ' && line[n] != '\n'; n++);
+- line[n]='\0';
+- filename = g_strdup(line + a);
+-
+- /* Work around for rar which doesn't
+- * output / with directories */
+- if (dir)
+- {
+- gchar *filename_with_slash = g_strconcat (filename,"/",NULL);
+- g_free (filename);
+- filename = filename_with_slash;
+- }
+-
+- entry = xa_set_archive_entries_for_each_row (archive,filename,item);
+- if (entry != NULL)
+- entry->is_encrypted = encrypted;
+- g_free(filename);
+- encrypted = FALSE;
+-}
+-
+-void xa_rar_add (XArchive *archive,GString *files,gchar *compression_string)
+-{
+- GSList *list = NULL;
+- gchar *command, *rar_version = NULL;
+-
+-
+- if (archive->location_entry_path != NULL)
+- archive->working_dir = g_strdup(archive->tmp);
+-
+- if (archive->type == XARCHIVETYPE_RAR5)
+- rar_version = "5";
+- else
+- rar_version = "4";
+-
+- if (compression_string == NULL)
+- compression_string = "3";
+-
+- if (archive->passwd != NULL)
+- command = g_strconcat ( "rar a -ma", rar_version, " ",
+- archive->update ? "-u " : "",
+- archive->freshen ? "-f " : "",
+- archive->solid_archive ? "-s " : "",
+- archive->remove_files ? "-df " : "",
+- "-p" , archive->passwd,
+- " -idp ",
+- "-m",compression_string," ",
+- archive->escaped_path,
+- files->str,NULL);
+- else
+- command = g_strconcat ( "rar a -ma", rar_version, " ",
+- archive->update ? "-u " : "",
+- archive->freshen ? "-f " : "",
+- archive->solid_archive ? "-s " : " ",
+- archive->remove_files ? "-df " : " ",
+- "-idp ",
+- "-m",compression_string," ",
+- archive->escaped_path,
+- files->str,NULL);
+-
+- g_string_free(files,TRUE);
+- list = g_slist_append(list,command);
+-
+- xa_run_command (archive,list);
+- xa_reload_archive_content(archive);
+-}
+-
+-int xa_rar_checkversion (gchar *absolute_path)
+-{
+- //gchar *command;
+- gchar *output = NULL;
+-
+- rar_version = 4; // Default version
+-
+- //command = g_strconcat (absolute_path, "" , NULL);
+- g_spawn_command_line_sync (absolute_path, &output, NULL, NULL, NULL);
+-
+- if (g_ascii_strncasecmp ("\nRAR 5", output, 6) == 0 || g_ascii_strncasecmp ("\nUNRAR 5", output, 8) == 0)
+- rar_version = 5;
+-
+- g_free(output);
+- //g_free(command);
+- return rar_version;
+-}
+diff -Nur xarchiver-0.5.3.orig/src/rar.h xarchiver-0.5.3/src/rar.h
+--- xarchiver-0.5.3.orig/src/rar.h 2014-02-09 13:26:24.000000000 -0200
++++ xarchiver-0.5.3/src/rar.h 2014-02-20 04:35:34.823706631 -0200
@@ -26,10 +26,7 @@
#include "support.h"
#include "archive.h"
@@ -348,9 +513,9 @@ diff -Nur xarchiver-0.5.2.orig/src/rar.h xarchiver-0.5.2/src/rar.h
void xa_get_rar_line_content (gchar *line, gpointer data);
void xa_open_rar ( XArchive *archive );
#endif
-diff -Nur xarchiver-0.5.2.orig/src/window.c xarchiver-0.5.2/src/window.c
---- xarchiver-0.5.2.orig/src/window.c 2008-11-11 06:31:45.000000000 -0200
-+++ xarchiver-0.5.2/src/window.c 2014-01-24 10:54:28.673636196 -0200
+diff -Nur xarchiver-0.5.3.orig/src/window.c xarchiver-0.5.3/src/window.c
+--- xarchiver-0.5.3.orig/src/window.c 2014-02-20 03:24:30.795581843 -0200
++++ xarchiver-0.5.3/src/window.c 2014-02-20 05:08:49.982243849 -0200
@@ -26,7 +26,7 @@
extern GList *ArchiveType;
@@ -360,21 +525,21 @@ diff -Nur xarchiver-0.5.2.orig/src/window.c xarchiver-0.5.2/src/window.c
extern gboolean xdg_open;
extern Prefs_dialog_data *prefs_window;
extern Extract_dialog_data *extract_window;
-@@ -1567,7 +1567,7 @@
+@@ -1584,7 +1584,7 @@
gtk_widget_show(selected_frame);
gtk_widget_set_sensitive(deselect_all,TRUE);
}
-- if ( (archive->type == XARCHIVETYPE_RAR && unrar) || archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_XZ || archive->type == XARCHIVETYPE_LZOP)
+- if ( (archive->type == XARCHIVETYPE_RAR && unrar) || (archive->type == XARCHIVETYPE_RAR5 && unrar) || archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_XZ || archive->type == XARCHIVETYPE_LZOP)
+ if ( (archive->type == XARCHIVETYPE_RAR && unar) || archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_XZ || archive->type == XARCHIVETYPE_LZOP)
{
gtk_widget_set_sensitive (delete_menu,FALSE);
gtk_widget_set_sensitive (rename_menu,FALSE);
-@@ -1781,7 +1781,7 @@
+@@ -1801,7 +1801,7 @@
else
idx = xa_find_archive_index (current_page);
-- if (archive[idx]->type == XARCHIVETYPE_RAR && unrar)
-+ if (archive[idx]->type == XARCHIVETYPE_RAR && unar)
+- if ((archive[idx]->type == XARCHIVETYPE_RAR || archive[idx]->type == XARCHIVETYPE_RAR5) && unrar)
++ if ((archive[idx]->type == XARCHIVETYPE_RAR) && unar)
{
response = xa_show_message_dialog (GTK_WINDOW (xa_main_window),GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,_("Can't perform this action:"),_("You have to install rar package!"));
return;
diff --git a/libre/xarchiver-libre/xarchiver-0.5.2-fix-double-escaping.patch b/libre/xarchiver-libre/xarchiver-0.5.3-fix-double-escaping.patch
index 8b44d91a0..8b44d91a0 100644
--- a/libre/xarchiver-libre/xarchiver-0.5.2-fix-double-escaping.patch
+++ b/libre/xarchiver-libre/xarchiver-0.5.3-fix-double-escaping.patch
diff --git a/libre/xarchiver-libre/xarchiver-0.5.2-segfault-password-protected.patch b/libre/xarchiver-libre/xarchiver-0.5.3-fix-password-protected.patch
index a1fa1f2ca..00969349d 100644
--- a/libre/xarchiver-libre/xarchiver-0.5.2-segfault-password-protected.patch
+++ b/libre/xarchiver-libre/xarchiver-0.5.3-fix-password-protected.patch
@@ -1,6 +1,6 @@
-diff -Naur xarchiver-0.5.2.orig/src/window.c xarchiver-0.5.2/src/window.c
---- xarchiver-0.5.2.orig/src/window.c 2014-01-24 08:10:09.305990000 +0100
-+++ xarchiver-0.5.2/src/window.c 2014-01-24 08:42:45.110729290 +0100
+diff -Naur xarchiver-0.5.3.orig/src/window.c xarchiver-0.5.2/src/window.c
+--- xarchiver-0.5.3.orig/src/window.c 2014-01-24 08:10:09.305990000 +0100
++++ xarchiver-0.5.3/src/window.c 2014-01-24 08:42:45.110729290 +0100
@@ -1694,7 +1694,7 @@
{
if (archive->passwd == NULL)
@@ -25,19 +25,18 @@ diff -Naur xarchiver-0.5.2.orig/src/window.c xarchiver-0.5.2/src/window.c
}
filename = g_strconcat(archive[idx]->tmp,"/",entry->filename,NULL);
if (g_file_test(filename,G_FILE_TEST_EXISTS))
-@@ -2766,6 +2769,15 @@
- /* The selected entry it's not a dir so extract it to the tmp dir and send it to xa_determine_program_to_run() */
- else
+@@ -2768,8 +2771,12 @@
{
-+ if (entry->is_encrypted)
-+ {
+ if (entry->is_encrypted)
+ {
+- if (archive->passwd == NULL)
+- return;
+ if (archive->passwd == NULL)
+ {
+ archive->passwd = xa_create_password_dialog(archive);
+ if (archive->passwd == NULL)
+ return;
+ }
-+ }
+ }
if (archive->extraction_path)
{
- dummy = g_strdup(archive->extraction_path);
diff --git a/libre/xarchiver-libre/xarchiver-0.5.3-fix-rpm-support.patch b/libre/xarchiver-libre/xarchiver-0.5.3-fix-rpm-support.patch
new file mode 100644
index 000000000..cf17ff738
--- /dev/null
+++ b/libre/xarchiver-libre/xarchiver-0.5.3-fix-rpm-support.patch
@@ -0,0 +1,86 @@
+diff -Naur xarchiver-0.5.3.orig/src/rpm.c xarchiver-0.5.3/src/rpm.c
+--- xarchiver-0.5.3.orig/src/rpm.c 2014-02-09 16:26:24.000000000 +0100
++++ xarchiver-0.5.3/src/rpm.c 2014-02-19 07:54:27.744136749 +0100
+@@ -23,8 +23,11 @@
+
+ void xa_open_rpm (XArchive *archive)
+ {
++ unsigned char bytes[8];
+ unsigned short int i;
+- int response;
++ int dl,il,sigsize,offset,response;
++ gchar *ibs,*executable;
++ gchar *gzip_tmp = NULL;
+ GSList *list = NULL;
+ FILE *stream;
+ gboolean result;
+@@ -53,14 +56,68 @@
+ archive->column_types[i] = types[i];
+
+ xa_create_liststore (archive,names);
++ if (fseek ( stream, 104 , SEEK_CUR ) )
++ {
++ fclose (stream);
++ response = xa_show_message_dialog (GTK_WINDOW (xa_main_window),GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,_("Can't fseek to position 104:"),g_strerror(errno));
++ return;
++ }
++ if ( fread ( bytes, 1, 8, stream ) == 0 )
++ {
++ fclose ( stream );
++ response = xa_show_message_dialog (GTK_WINDOW (xa_main_window),GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,_("Can't read data from file:"),g_strerror(errno));
++ return;
++ }
++ il = 256 * ( 256 * ( 256 * bytes[0] + bytes[1]) + bytes[2] ) + bytes[3];
++ dl = 256 * ( 256 * ( 256 * bytes[4] + bytes[5]) + bytes[6] ) + bytes[7];
++ sigsize = 8 + 16 * il + dl;
++ offset = 104 + sigsize + ( 8 - ( sigsize % 8 ) ) % 8 + 8;
++ if (fseek ( stream, offset , SEEK_SET ) )
++ {
++ fclose (stream);
++ response = xa_show_message_dialog (GTK_WINDOW (xa_main_window),GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,_("Can't fseek in file:"),g_strerror(errno));
++ return;
++ }
++ if ( fread ( bytes, 1, 8, stream ) == 0 )
++ {
++ fclose ( stream );
++ response = xa_show_message_dialog (GTK_WINDOW (xa_main_window),GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,_("Can't read data from file:"),g_strerror(errno));
++ return;
++ }
++ il = 256 * ( 256 * ( 256 * bytes[0] + bytes[1]) + bytes[2] ) + bytes[3];
++ dl = 256 * ( 256 * ( 256 * bytes[4] + bytes[5]) + bytes[6] ) + bytes[7];
++ sigsize = 8 + 16 * il + dl;
++ offset = offset + sigsize;
++ fclose (stream);
+
+ /* Create a unique temp dir in /tmp */
+ result = xa_create_temp_directory (archive);
+ if (!result)
+ return;
+
++ gzip_tmp = g_strconcat (archive->tmp,"/file.gz_bz",NULL);
++ ibs = g_strdup_printf ( "%u" , offset );
++
+ /* Now I run dd to have the bzip2 / gzip compressed cpio archive in /tmp */
+- gchar *command = g_strconcat ( "sh -c \"rpm2cpio ",archive->escaped_path," > ",archive->tmp, "/file.cpio\"",NULL);
++ gchar *command = g_strconcat ( "dd if=",archive->escaped_path," ibs=",ibs," skip=1 of=",gzip_tmp,NULL);
++ g_free (ibs);
++ list = g_slist_append(list,command);
++ batch_mode = TRUE;
++ result = xa_run_command (archive,list);
++ if (result == FALSE)
++ {
++ g_free (gzip_tmp);
++ return;
++ }
++ if (xa_detect_archive_type (gzip_tmp) == XARCHIVETYPE_GZIP)
++ executable = "gzip -dc ";
++ else if (xa_detect_archive_type (gzip_tmp) == XARCHIVETYPE_BZIP2)
++ executable = "bzip2 -dc ";
++ else
++ executable = "xz -dc ";
++
++ command = g_strconcat("sh -c \"",executable,gzip_tmp," > ",archive->tmp,"/file.cpio\"",NULL);
++ g_free(gzip_tmp);
+ list = NULL;
+ list = g_slist_append(list,command);
+ result = xa_run_command (archive,list);