Index: sylpheed-3.1.1/libsylph/procmime.c =================================================================== --- sylpheed-3.1.1.orig/libsylph/procmime.c +++ sylpheed-3.1.1/libsylph/procmime.c @@ -1685,74 +1685,13 @@ static GList *procmime_parse_mailcap(con gint procmime_execute_open_file(const gchar *file, const gchar *mime_type) { - gchar *mime_type_ = NULL; - GList *cur; - MailCap *mailcap; gchar *cmdline; gint ret = -1; - static gboolean mailcap_list_init = FALSE; g_return_val_if_fail(file != NULL, -1); - if (!mime_type || - g_ascii_strcasecmp(mime_type, "application/octet-stream") == 0) { - gchar *tmp; - tmp = procmime_get_mime_type(file); - if (!tmp) - return -1; - mime_type_ = g_ascii_strdown(tmp, -1); - g_free(tmp); - } else - mime_type_ = g_ascii_strdown(mime_type, -1); - - if (!mailcap_list_init && !mailcap_list) { - GList *list; - gchar *path; - - path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, "mailcap", - NULL); - mailcap_list = procmime_parse_mailcap(path); - g_free(path); -#ifdef G_OS_WIN32 - path = g_strconcat(get_startup_dir(), G_DIR_SEPARATOR_S "etc" - G_DIR_SEPARATOR_S "mailcap", NULL); - list = procmime_parse_mailcap(path); - g_free(path); -#else - if (!mailcap_list) { - path = g_strconcat(get_home_dir(), G_DIR_SEPARATOR_S, - ".mailcap", NULL); - mailcap_list = procmime_parse_mailcap(path); - g_free(path); - } - list = procmime_parse_mailcap(SYSCONFDIR "/mailcap"); - if (!list) - list = procmime_parse_mailcap("/etc/mailcap"); -#endif - mailcap_list = g_list_concat(mailcap_list, list); - - mailcap_list_init = TRUE; - } - - for (cur = mailcap_list; cur != NULL; cur = cur->next) { - mailcap = (MailCap *)cur->data; - - if (!g_pattern_match_simple(mailcap->mime_type, mime_type_)) - continue; - if (mailcap->needs_terminal) - continue; - - if (str_find_format_times(mailcap->cmdline_fmt, 's') == 1) - cmdline = g_strdup_printf(mailcap->cmdline_fmt, file); - else - cmdline = g_strconcat(mailcap->cmdline_fmt, " \"", file, - "\"", NULL); - ret = execute_command_line(cmdline, TRUE); - g_free(cmdline); - break; - } - - g_free(mime_type_); + cmdline = g_strdup_printf("/usr/bin/xdg-open '%s'", file); + ret = execute_command_line(cmdline, TRUE); return ret; }