summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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);