diff options
author | Srinivasa Ragavan <sragavan@src.gnome.org> | 2006-04-22 03:23:18 +0800 |
---|---|---|
committer | Srinivasa Ragavan <sragavan@src.gnome.org> | 2006-04-22 03:23:18 +0800 |
commit | 6d472a771799cc453ad065b78f4635a7919f4769 (patch) | |
tree | 7dbf948f17415d6a1d37564225f6fad561a2b1d2 /plugins/save-calendar/ical-format.c | |
parent | 5eceef8c7f89897442bc888ff0239378fe25fe04 (diff) | |
download | gsoc2013-evolution-6d472a771799cc453ad065b78f4635a7919f4769.tar gsoc2013-evolution-6d472a771799cc453ad065b78f4635a7919f4769.tar.gz gsoc2013-evolution-6d472a771799cc453ad065b78f4635a7919f4769.tar.bz2 gsoc2013-evolution-6d472a771799cc453ad065b78f4635a7919f4769.tar.lz gsoc2013-evolution-6d472a771799cc453ad065b78f4635a7919f4769.tar.xz gsoc2013-evolution-6d472a771799cc453ad065b78f4635a7919f4769.tar.zst gsoc2013-evolution-6d472a771799cc453ad065b78f4635a7919f4769.zip |
Added code to see if the file already exist.
svn path=/trunk/; revision=31856
Diffstat (limited to 'plugins/save-calendar/ical-format.c')
-rw-r--r-- | plugins/save-calendar/ical-format.c | 50 |
1 files changed, 31 insertions, 19 deletions
diff --git a/plugins/save-calendar/ical-format.c b/plugins/save-calendar/ical-format.c index 459bd4c254..f4620b89a2 100644 --- a/plugins/save-calendar/ical-format.c +++ b/plugins/save-calendar/ical-format.c @@ -45,6 +45,7 @@ #include <string.h> #include "format-handler.h" +#include "e-util/e-error.h" static void display_error_message (GtkWidget *parent, const char *message) @@ -64,6 +65,8 @@ do_save_calendar_ical (FormatHandler *handler, EPlugin *ep, ECalPopupTargetSourc GError *error = NULL; GList *objects; icalcomponent *top_level = NULL; + GnomeVFSURI *uri; + gboolean doit = TRUE; primary_source = e_source_selector_peek_primary_selection (target->selector); @@ -97,27 +100,36 @@ do_save_calendar_ical (FormatHandler *handler, EPlugin *ep, ECalPopupTargetSourc } /* save the file */ - result = gnome_vfs_open (&handle, dest_uri, GNOME_VFS_OPEN_WRITE); - if (result != GNOME_VFS_OK) { - if ((result = gnome_vfs_create (&handle, dest_uri, GNOME_VFS_OPEN_WRITE, - TRUE, GNOME_VFS_PERM_USER_ALL)) != GNOME_VFS_OK) { - display_error_message (gtk_widget_get_toplevel (GTK_WIDGET (target->selector)), - gnome_vfs_result_to_string (result)); - } - } - - if (result == GNOME_VFS_OK) { - char *ical_str; - GnomeVFSFileSize bytes_written; - - ical_str = icalcomponent_as_ical_string (top_level); - if ((result = gnome_vfs_write (handle, (gconstpointer) ical_str, strlen (ical_str), &bytes_written)) - != GNOME_VFS_OK) { - display_error_message (gtk_widget_get_toplevel (GTK_WIDGET (target->selector)), + uri = gnome_vfs_uri_new (dest_uri); + + result = gnome_vfs_open_uri (&handle, uri, GNOME_VFS_OPEN_READ); + if (result == GNOME_VFS_OK) + doit = e_error_run(GTK_WINDOW(gtk_widget_get_toplevel (GTK_WIDGET (target->selector))), + E_ERROR_ASK_FILE_EXISTS_OVERWRITE, dest_uri, NULL) == GTK_RESPONSE_OK; + + if (doit) { + result = gnome_vfs_open (&handle, dest_uri, GNOME_VFS_OPEN_WRITE); + if (result != GNOME_VFS_OK) { + if ((result = gnome_vfs_create (&handle, dest_uri, GNOME_VFS_OPEN_WRITE, + TRUE, GNOME_VFS_PERM_USER_ALL)) != GNOME_VFS_OK) { + display_error_message (gtk_widget_get_toplevel (GTK_WIDGET (target->selector)), gnome_vfs_result_to_string (result)); + } + } + + if (result == GNOME_VFS_OK) { + char *ical_str; + GnomeVFSFileSize bytes_written; + + ical_str = icalcomponent_as_ical_string (top_level); + if ((result = gnome_vfs_write (handle, (gconstpointer) ical_str, strlen (ical_str), &bytes_written)) + != GNOME_VFS_OK) { + display_error_message (gtk_widget_get_toplevel (GTK_WIDGET (target->selector)), + gnome_vfs_result_to_string (result)); + } + + gnome_vfs_close (handle); } - - gnome_vfs_close (handle); } } else { display_error_message (gtk_widget_get_toplevel (GTK_WIDGET (target->selector)), error->message); |