Accepting request 558863 from GNOME:Factory
- Add file-roller-ignore-unrar-if-wrapper.patch: Since unrar is non-free and it is planned to include a limited wrapper that would call unar, we should avoid this wrapper and call unar directly (bsc#1072118). - Add file-roller-rar-file-date.patch: fix wrong file date when using rar 5.30 or higher (bgo#758121). - Add file-roller-unar-dir-critical.patch: fix a warning when parsing lsar output (bgo#791505). (forwarded request 556822 from mgorse) OBS-URL: https://build.opensuse.org/request/show/558863 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/file-roller?expand=0&rev=135
This commit is contained in:
commit
efaf150e24
52
file-roller-ignore-unrar-if-wrapper.patch
Normal file
52
file-roller-ignore-unrar-if-wrapper.patch
Normal file
@ -0,0 +1,52 @@
|
||||
diff -urp file-roller-3.26.2.orig/src/fr-command-rar.c file-roller-3.26.2/src/fr-command-rar.c
|
||||
--- file-roller-3.26.2.orig/src/fr-command-rar.c 2017-10-31 15:07:52.000000000 -0500
|
||||
+++ file-roller-3.26.2/src/fr-command-rar.c 2017-12-13 12:25:16.159981774 -0600
|
||||
@@ -705,6 +705,39 @@ fr_command_rar_get_mime_types (FrArchive
|
||||
return rar_mime_type;
|
||||
}
|
||||
|
||||
+static gboolean
|
||||
+unrar_is_suse_wrapper ()
|
||||
+{
|
||||
+ const gchar *path = g_getenv ("PATH");
|
||||
+ gchar **paths;
|
||||
+ gchar **pp;
|
||||
+ gchar *p;
|
||||
+ gchar *full_name;
|
||||
+ FILE *fp;
|
||||
+ char bytes[2];
|
||||
+ gboolean ret = FALSE;
|
||||
+
|
||||
+ if (!path)
|
||||
+ path = "/usr/bin";
|
||||
+
|
||||
+ paths = g_strsplit (path, ":", 0);
|
||||
+ for (pp = paths; *pp; pp++)
|
||||
+ {
|
||||
+ p = *pp;
|
||||
+ full_name = g_strconcat (p, "/unrar", NULL);
|
||||
+ fp = fopen (full_name, "r");
|
||||
+ g_free (full_name);
|
||||
+ if (!fp)
|
||||
+ continue;
|
||||
+ bytes[0] = bytes[1] = 0;
|
||||
+ fread (bytes, 2, 1, fp);
|
||||
+ fclose (fp);
|
||||
+ ret = (bytes[0] == '#' && bytes[1] == '!');
|
||||
+ break;
|
||||
+ }
|
||||
+ g_strfreev (paths);
|
||||
+ return ret;
|
||||
+}
|
||||
|
||||
static FrArchiveCap
|
||||
fr_command_rar_get_capabilities (FrArchive *archive,
|
||||
@@ -716,7 +749,7 @@ fr_command_rar_get_capabilities (FrArchi
|
||||
capabilities = FR_ARCHIVE_CAN_STORE_MANY_FILES | FR_ARCHIVE_CAN_ENCRYPT | FR_ARCHIVE_CAN_ENCRYPT_HEADER;
|
||||
if (_g_program_is_available ("rar", check_command))
|
||||
capabilities |= FR_ARCHIVE_CAN_READ_WRITE | FR_ARCHIVE_CAN_CREATE_VOLUMES;
|
||||
- else if (_g_program_is_available ("unrar", check_command))
|
||||
+ else if (_g_program_is_available ("unrar", check_command) && !unrar_is_suse_wrapper ())
|
||||
capabilities |= FR_ARCHIVE_CAN_READ;
|
||||
|
||||
/* multi-volumes are read-only */
|
131
file-roller-rar-file-date.patch
Normal file
131
file-roller-rar-file-date.patch
Normal file
@ -0,0 +1,131 @@
|
||||
From f1e74492e765a3e055e0bed61cc5b2b930de12ad Mon Sep 17 00:00:00 2001
|
||||
From: Paolo Bacchilega <paobac@src.gnome.org>
|
||||
Date: Sun, 19 Nov 2017 16:49:32 +0100
|
||||
Subject: [PATCH] rar archives: wrong file date when using rar 5.30 or higher
|
||||
|
||||
adapt to the new format
|
||||
|
||||
[bug #758121]
|
||||
---
|
||||
src/fr-command-rar.c | 78 +++++++++++++++++++++++++++++++++++++++++++++-------
|
||||
src/fr-command-rar.h | 1 +
|
||||
2 files changed, 69 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/src/fr-command-rar.c b/src/fr-command-rar.c
|
||||
index adfc3daa..8f31f7a3 100644
|
||||
--- a/src/fr-command-rar.c
|
||||
+++ b/src/fr-command-rar.c
|
||||
@@ -84,6 +84,61 @@ mktime_from_string (const char *date_s,
|
||||
return mktime (&tm);
|
||||
}
|
||||
|
||||
+
|
||||
+static time_t
|
||||
+mktime_from_string_rar_5_30 (const char *date_s,
|
||||
+ const char *time_s)
|
||||
+{
|
||||
+ struct tm tm = {0, };
|
||||
+ char **fields;
|
||||
+
|
||||
+ tm.tm_isdst = -1;
|
||||
+
|
||||
+ /* date */
|
||||
+
|
||||
+ fields = g_strsplit (date_s, "-", 3);
|
||||
+ if (fields[0] != NULL) {
|
||||
+ tm.tm_year = atoi (fields[0]) - 1900;
|
||||
+ if (fields[1] != NULL) {
|
||||
+ tm.tm_mon = atoi (fields[1]) - 1;
|
||||
+ if (fields[2] != NULL)
|
||||
+ tm.tm_mday = atoi (fields[2]);
|
||||
+ }
|
||||
+ }
|
||||
+ g_strfreev (fields);
|
||||
+
|
||||
+ /* time */
|
||||
+
|
||||
+ fields = g_strsplit (time_s, ":", 2);
|
||||
+ if (fields[0] != NULL) {
|
||||
+ tm.tm_hour = atoi (fields[0]);
|
||||
+ if (fields[1] != NULL)
|
||||
+ tm.tm_min = atoi (fields[1]);
|
||||
+ }
|
||||
+ g_strfreev (fields);
|
||||
+
|
||||
+ return mktime (&tm);
|
||||
+}
|
||||
+
|
||||
+
|
||||
+/*
|
||||
+ * Sample rar 5.30 or higher output:
|
||||
+ *
|
||||
+
|
||||
+RAR 5.30 Copyright (c) 1993-2017 Alexander Roshal 11 Aug 2017
|
||||
+Trial version Type 'rar -?' for help
|
||||
+
|
||||
+Archive: test.rar
|
||||
+Details: RAR 5
|
||||
+
|
||||
+ Attributes Size Packed Ratio Date Time Checksum Name
|
||||
+----------- --------- -------- ----- ---------- ----- -------- ----
|
||||
+ -rw-r--r-- 51 47 92% 2017-11-19 16:20 80179DAB loremipsum.txt
|
||||
+----------- --------- -------- ----- ---------- ----- -------- ----
|
||||
+ 51 47 92% 1
|
||||
+
|
||||
+ */
|
||||
+
|
||||
/* Sample rar-5 listing output:
|
||||
|
||||
RAR 5.00 beta 8 Copyright (c) 1993-2013 Alexander Roshal 22 Aug 2013
|
||||
@@ -187,15 +242,17 @@ process_line (char *line,
|
||||
g_return_if_fail (line != NULL);
|
||||
|
||||
if (! rar_comm->list_started) {
|
||||
- if (strncmp (line, "RAR ", 4) == 0) {
|
||||
- int version;
|
||||
- sscanf (line, "RAR %d.", &version);
|
||||
- rar_comm->rar5 = (version >= 5);
|
||||
- }
|
||||
- else if (strncmp (line, "UNRAR ", 6) == 0) {
|
||||
- int version;
|
||||
- sscanf (line, "UNRAR %d.", &version);
|
||||
- rar_comm->rar5 = (version >= 5);
|
||||
+ if ((strncmp (line, "RAR ", 4) == 0) || (strncmp (line, "UNRAR ", 6) == 0)) {
|
||||
+ int major_version;
|
||||
+ int minor_version;
|
||||
+
|
||||
+ if (strncmp (line, "RAR ", 4) == 0)
|
||||
+ sscanf (line, "RAR %d.%d", &major_version, &minor_version);
|
||||
+ else
|
||||
+ sscanf (line, "UNRAR %d.%d", &major_version, &minor_version);
|
||||
+
|
||||
+ rar_comm->rar5 = (major_version >= 5);
|
||||
+ rar_comm->rar5_30 = ((major_version == 5) && (minor_version >= 30)) || (major_version >= 6);
|
||||
}
|
||||
else if (strncmp (line, "--------", 8) == 0) {
|
||||
rar_comm->list_started = TRUE;
|
||||
@@ -259,7 +316,8 @@ process_line (char *line,
|
||||
}
|
||||
else {
|
||||
fdata->size = g_ascii_strtoull (size_field, NULL, 10);
|
||||
- fdata->modified = mktime_from_string (date_field, time_field);
|
||||
+
|
||||
+ fdata->modified = rar_comm->rar5_30 ? mktime_from_string_rar_5_30 (date_field, time_field) : mktime_from_string (date_field, time_field);
|
||||
|
||||
if (attr_field_is_dir (attr_field, rar_comm)) {
|
||||
char *tmp;
|
||||
diff --git a/src/fr-command-rar.h b/src/fr-command-rar.h
|
||||
index 09ed2709..2a6e671d 100644
|
||||
--- a/src/fr-command-rar.h
|
||||
+++ b/src/fr-command-rar.h
|
||||
@@ -44,6 +44,7 @@ struct _FrCommandRar
|
||||
gboolean list_started;
|
||||
gboolean rar4_odd_line;
|
||||
gboolean rar5;
|
||||
+ gboolean rar5_30;
|
||||
FileData *fdata;
|
||||
};
|
||||
|
||||
--
|
||||
2.15.0
|
||||
|
30
file-roller-unar-dir-critical.patch
Normal file
30
file-roller-unar-dir-critical.patch
Normal file
@ -0,0 +1,30 @@
|
||||
From fe422f7c6b42a0d618b2b49999cfb2210f9ceca5 Mon Sep 17 00:00:00 2001
|
||||
From: Mike Gorse <mgorse@suse.com>
|
||||
Date: Mon, 11 Dec 2017 21:34:40 -0600
|
||||
Subject: [PATCH] unarchiver: check that XADFileSize is set before reading it
|
||||
|
||||
Lsar does not set XADFileSize for directories, so we would output a
|
||||
critical when encountering one.
|
||||
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=791505
|
||||
---
|
||||
src/fr-command-unarchiver.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/fr-command-unarchiver.c b/src/fr-command-unarchiver.c
|
||||
index a7cdb834..5e8fd705 100644
|
||||
--- a/src/fr-command-unarchiver.c
|
||||
+++ b/src/fr-command-unarchiver.c
|
||||
@@ -91,7 +91,8 @@ list_command_completed (gpointer data)
|
||||
|
||||
entry = json_array_get_object_element (content, i);
|
||||
fdata = file_data_new ();
|
||||
- fdata->size = json_object_get_int_member (entry, "XADFileSize");
|
||||
+ if (json_object_has_member (entry, "XADFileSize"))
|
||||
+ fdata->size = json_object_get_int_member (entry, "XADFileSize");
|
||||
fdata->modified = mktime_from_string (json_object_get_string_member (entry, "XADLastModificationDate"));
|
||||
if (json_object_has_member (entry, "XADIsEncrypted"))
|
||||
fdata->encrypted = json_object_get_int_member (entry, "XADIsEncrypted") == 1;
|
||||
--
|
||||
2.15.0
|
||||
|
@ -1,3 +1,15 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Dec 13 19:02:07 UTC 2017 - mgorse@suse.com
|
||||
|
||||
- Add file-roller-ignore-unrar-if-wrapper.patch: Since unrar is
|
||||
non-free and it is planned to include a limited wrapper that
|
||||
would call unar, we should avoid this wrapper and call unar
|
||||
directly (bsc#1072118).
|
||||
- Add file-roller-rar-file-date.patch: fix wrong file date when
|
||||
using rar 5.30 or higher (bgo#758121).
|
||||
- Add file-roller-unar-dir-critical.patch: fix a warning when
|
||||
parsing lsar output (bgo#791505).
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Oct 31 22:06:03 UTC 2017 - luc14n0@linuxmail.org
|
||||
|
||||
|
@ -28,6 +28,12 @@ Source: https://download.gnome.org/sources/file-roller/3.26/%{name}-%{ve
|
||||
Patch0: file-roller-3.4-change-archiver-priority.patch
|
||||
# PATCH-FEATURE-OPENSUSE file-roller-pkg-match.patch bnc#696530 dimstar@opensuse.org -- List package match names for automatic installation using PK.
|
||||
Patch1: file-roller-pkg-match.patch
|
||||
# PATCH-FIX-OPENSUSE file-roller-ignore-unrar-if-wrapper.patch bsc#1072118 mgorse@suse.com -- if unrar is a wrapper script for unar, then ignore it, and use unar instead.
|
||||
Patch2: file-roller-ignore-unrar-if-wrapper.patch
|
||||
# PATCH-FIX-UPSTREAM file-roller-rar-file-date.patch bgo#758121 mgorse@suse.com -- fix wrong file date when using rar 5.30 or higher.
|
||||
Patch3: file-roller-rar-file-date.patch
|
||||
# PATCH-FIX-UPSTREAM file-roller-unar-dir-critical.patch bgo#791505 mgorse@suse.com -- fix warning when parsing lsar output.
|
||||
Patch4: file-roller-unar-dir-critical.patch
|
||||
# Needed for directory ownership
|
||||
BuildRequires: dbus-1
|
||||
BuildRequires: fdupes
|
||||
@ -84,6 +90,9 @@ contained in the archive, and extract files from the archive.
|
||||
%setup -q
|
||||
%patch0
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
%if !0%{?is_opensuse}
|
||||
translation-update-upstream
|
||||
%endif
|
||||
|
Loading…
Reference in New Issue
Block a user