From dcbfea198cd2a4550fd4076d5787d15b34d1038f Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Wed, 8 Apr 2009 13:35:11 +0000 Subject: [PATCH] Delete the temp symlink created when opening a copy. 2009-04-08 Carlos Garcia Campos * shell/ev-window.c: (ev_window_clear_temp_symlink), (ev_window_dispose): Delete the temp symlink created when opening a copy. svn path=/trunk/; revision=3582 --- ChangeLog | 7 +++++++ shell/ev-window.c | 22 +++++++++++++++++++--- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index f24ee8eb..73655c8e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-04-08 Carlos Garcia Campos + + * shell/ev-window.c: (ev_window_clear_temp_symlink), + (ev_window_dispose): + + Delete the temp symlink created when opening a copy. + 2009-04-08 Carlos Garcia Campos * po/POTFILES.in: diff --git a/shell/ev-window.c b/shell/ev-window.c index 22409aae..284a11f6 100644 --- a/shell/ev-window.c +++ b/shell/ev-window.c @@ -1314,7 +1314,7 @@ ev_window_clear_local_uri (EvWindow *ev_window) } static void -ev_window_clear_temp_file (EvWindow *ev_window) +ev_window_clear_temp_symlink (EvWindow *ev_window) { GFile *file, *tempdir; @@ -1322,10 +1322,24 @@ ev_window_clear_temp_file (EvWindow *ev_window) return; file = g_file_new_for_uri (ev_window->priv->uri); - tempdir = g_file_new_for_path (g_get_tmp_dir ()); + tempdir = g_file_new_for_path (ev_tmp_dir ()); if (g_file_has_prefix (file, tempdir)) { - g_file_delete (file, NULL, NULL); + GFileInfo *file_info; + GError *error = NULL; + + file_info = g_file_query_info (file, + G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK, + G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, + NULL, &error); + if (file_info) { + if (g_file_info_get_is_symlink (file_info)) + g_file_delete (file, NULL, NULL); + g_object_unref (file_info); + } else { + g_warning ("Error deleting temp symlink: %s\n", error->message); + g_error_free (error); + } } g_object_unref (file); @@ -4741,6 +4755,8 @@ ev_window_dispose (GObject *object) } if (priv->uri) { + /* Delete the uri if it's a temp symlink (open a copy) */ + ev_window_clear_temp_symlink (window); g_free (priv->uri); priv->uri = NULL; } -- 2.47.1