file-roller/file-roller-ignore-unrar-if-wrapper.patch
Dominique Leuenberger 1072a20f2e Accepting request 556822 from home:mgorse:branches: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).

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
2017-12-20 15:49:40 +00:00

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 */