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