file-roller/file-roller-ignore-unrar-if-wrapper.patch

54 lines
1.6 KiB
Diff

Index: file-roller-3.32.0/src/fr-command-rar.c
===================================================================
--- file-roller-3.32.0.orig/src/fr-command-rar.c 2019-03-11 23:00:45.000000000 +0100
+++ file-roller-3.32.0/src/fr-command-rar.c 2019-03-14 20:21:40.103871799 +0100
@@ -775,6 +775,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,
@@ -786,7 +819,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 */