-
- /* Gna! unrar */
- if (g_str_has_suffix (comics_document->selected_command, "unrar-free")
- || (g_str_has_suffix (comics_document->selected_command,
- "unrar") && comics_document->flag_FLOSS)) {
-
- comics_document->flag_temp = TRUE;
-
- comics_document->dir = g_build_filename (ev_tmp_dir (),
- g_compute_checksum_for_string (G_CHECKSUM_MD5,
- comics_document->archive, -1), NULL);
-
- /* unrar-free can't create directories so we do it on its
- * behalf */
- if (g_mkdir_with_parents (comics_document->dir, 0700) != 0) {
- g_set_error (error,
- EV_DOCUMENT_ERROR,
- EV_DOCUMENT_ERROR_INVALID,
- _("Failed to create a directory on the \
- temporary directory."));
- g_warning ("Failed to create directory %s: %s",
- comics_document->dir, g_strerror (errno));
- g_free (quoted_file);
- return FALSE;
- }
-
- command_decompress_tmp = g_strdup_printf ( "%s -xf %s %s",
- comics_document->selected_command,
- quoted_file,
- comics_document->dir);
-
- if (!comics_decompress_temp_dir (command_decompress_tmp,
- comics_document->selected_command,
- error)){
- g_free (command_decompress_tmp);
- g_free (quoted_file);
+ comics_document->extract_command =
+ g_strdup_printf (command_usage_def[type].extract,
+ quoted_command);
+ comics_document->offset = command_usage_def[type].offset;
+ if (command_usage_def[type].decompress_tmp) {
+ comics_document->dir = ev_mkdtemp ("evince-comics-XXXXXX", error);
+ if (comics_document->dir == NULL)
+ return FALSE;
+
+ /* unrar-free can't create directories, but ev_mkdtemp already created the dir */
+
+ comics_document->decompress_tmp =
+ g_strdup_printf (command_usage_def[type].decompress_tmp,
+ quoted_command, quoted_file,
+ comics_document->dir);
+ g_free (quoted_file);
+ g_free (quoted_command);
+
+ if (!comics_decompress_temp_dir (comics_document->decompress_tmp,
+ comics_document->selected_command, error))