diff options
author | Carlos Garcia Campos <carlosgc@gnome.org> | 2009-04-08 13:35:11 (GMT) |
---|---|---|
committer | Carlos Garcia Campos <carlosgc@src.gnome.org> | 2009-04-08 13:35:11 (GMT) |
commit | dcbfea198cd2a4550fd4076d5787d15b34d1038f (patch) | |
tree | 1ac8fc74dd7a8cc49b663ed263e9a7b5ed5b80d1 /shell | |
parent | aa2e482d53d5e0b936fa5ac58d306976362b231e (diff) |
Delete the temp symlink created when opening a copy.
2009-04-08 Carlos Garcia Campos <carlosgc@gnome.org>
* 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
Diffstat (limited to 'shell')
-rw-r--r-- | shell/ev-window.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/shell/ev-window.c b/shell/ev-window.c index 22409aa..284a11f 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; } |