Dominique Leuenberger
1072a20f2e
- 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). OBS-URL: https://build.opensuse.org/request/show/556822 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/file-roller?expand=0&rev=260
53 lines
1.6 KiB
Diff
53 lines
1.6 KiB
Diff
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 */
|