Hello community, here is the log from the commit of package file-roller for openSUSE:Factory checked in at 2017-12-29 18:46:55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/file-roller (Old) and /work/SRC/openSUSE:Factory/.file-roller.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "file-roller" Fri Dec 29 18:46:55 2017 rev:135 rq:558863 version:3.26.2 Changes: -------- --- /work/SRC/openSUSE:Factory/file-roller/file-roller.changes 2017-11-03 19:07:22.329313787 +0100 +++ /work/SRC/openSUSE:Factory/.file-roller.new/file-roller.changes 2017-12-29 18:47:01.235912445 +0100 @@ -1,0 +2,12 @@ +Wed Dec 13 19:02:07 UTC 2017 - mgo...@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). + +------------------------------------------------------------------- New: ---- file-roller-ignore-unrar-if-wrapper.patch file-roller-rar-file-date.patch file-roller-unar-dir-critical.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ file-roller.spec ++++++ --- /var/tmp/diff_new_pack.dsza7Y/_old 2017-12-29 18:47:02.127656334 +0100 +++ /var/tmp/diff_new_pack.dsza7Y/_new 2017-12-29 18:47:02.131655185 +0100 @@ -28,6 +28,12 @@ Patch0: file-roller-3.4-change-archiver-priority.patch # PATCH-FEATURE-OPENSUSE file-roller-pkg-match.patch bnc#696530 dims...@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 mgo...@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 mgo...@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 mgo...@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 @@ %setup -q %patch0 %patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 %if !0%{?is_opensuse} translation-update-upstream %endif ++++++ file-roller-ignore-unrar-if-wrapper.patch ++++++ 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 */ ++++++ file-roller-rar-file-date.patch ++++++ >From f1e74492e765a3e055e0bed61cc5b2b930de12ad Mon Sep 17 00:00:00 2001 From: Paolo Bacchilega <pao...@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 ++++++ file-roller-unar-dir-critical.patch ++++++ >From fe422f7c6b42a0d618b2b49999cfb2210f9ceca5 Mon Sep 17 00:00:00 2001 From: Mike Gorse <mgo...@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