+static char *
+get_filename_from_uri (const char *uri)
+{
+ char *filename;
+ char *basename;
+
+ filename = g_uri_unescape_string (uri, NULL);
+ basename = g_path_get_basename (filename);
+ g_free(filename);
+
+ return basename;
+}
+
+/* Some docs report titles with confusing extensions (ex. .doc for pdf).
+ Let's show the filename in this case */
+static void
+ev_window_title_sanitize_title (EvWindowTitle *window_title, char **title) {
+ const gchar *backend;
+ int i;
+
+ backend = ev_backends_manager_get_document_module_name (window_title->document);
+
+ for (i = 0; i < G_N_ELEMENTS (bad_extensions); i++) {
+ if (g_ascii_strcasecmp (bad_extensions[i].backend, backend) == 0 &&
+ g_str_has_suffix (*title, bad_extensions[i].text)) {
+ char *new_title;
+ char *filename = get_filename_from_uri (window_title->uri);
+
+ new_title = g_strdup_printf ("%s (%s)", *title, filename);
+ g_free (*title);
+ *title = new_title;
+
+ g_free (filename);
+ }
+ }
+ for (i = 0; i < G_N_ELEMENTS (bad_prefixes); i++) {
+ if (g_ascii_strcasecmp (bad_prefixes[i].backend, backend) == 0 &&
+ g_str_has_prefix (*title, bad_prefixes[i].text)) {
+ char *new_title;
+ int len = strlen(bad_prefixes[i].text);
+
+ new_title = g_strdup_printf ("%s", (*title) + len);
+ g_free (*title);
+ *title = new_title;
+ }
+ }
+}
+