aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/gui')
-rw-r--r--calendar/gui/calendar.c27
-rw-r--r--calendar/gui/main.c9
2 files changed, 26 insertions, 10 deletions
diff --git a/calendar/gui/calendar.c b/calendar/gui/calendar.c
index 339995cb92..dfeb1d6cc8 100644
--- a/calendar/gui/calendar.c
+++ b/calendar/gui/calendar.c
@@ -12,6 +12,8 @@
*
*/
+#include <gnome.h>
+#include <stdio.h>
#include <config.h>
#include <unistd.h>
#include <sys/stat.h>
@@ -396,8 +398,11 @@ void
calendar_save (Calendar *cal, char *fname)
{
VObject *vcal;
+ FILE *fp;
+ GtkWidget *dlg;
struct stat s;
-
+ int status;
+
if (fname == NULL)
fname = cal->filename;
@@ -412,11 +417,23 @@ calendar_save (Calendar *cal, char *fname)
g_free (backup_name);
}
- writeVObjectToFile (fname, vcal);
+ fp = fopen(fname,"w");
+ if (fp) {
+ writeVObject(fp, vcal);
+ fclose(fp);
+ if (strcmp(cal->filename, fname)) {
+ if (cal->filename)
+ g_free (cal->filename);
+ cal->filename = g_strdup (fname);
+ }
+ status = stat (fname, &s);
+ cal->file_time = s.st_mtime;
+ } else {
+ dlg = gnome_message_box_new(_("Failed to save calendar!"),
+ GNOME_MESSAGE_BOX_ERROR, "Ok", NULL);
+ gtk_widget_show(dlg);
+ }
- stat (fname, &s);
- cal->file_time = s.st_mtime;
-
cleanVObject (vcal);
cleanStrTbl ();
}
diff --git a/calendar/gui/main.c b/calendar/gui/main.c
index 3a49dfaa9a..6c4a4b4522 100644
--- a/calendar/gui/main.c
+++ b/calendar/gui/main.c
@@ -367,15 +367,14 @@ static void
save_ok (GtkWidget *widget, GtkFileSelection *fs)
{
GnomeCalendar *gcal;
+ gchar *fname;
gcal = GNOME_CALENDAR (gtk_object_get_user_data (GTK_OBJECT (fs)));
gtk_window_set_wmclass (GTK_WINDOW (gcal), "gnomecal", "gnomecal");
- if (gcal->cal->filename)
- g_free (gcal->cal->filename);
-
- gcal->cal->filename = g_strdup (gtk_file_selection_get_filename (fs));
- calendar_save (gcal->cal, gcal->cal->filename);
+ fname = g_strdup (gtk_file_selection_get_filename (fs));
+ calendar_save (gcal->cal, fname);
+ g_free(fname);
gtk_main_quit ();
}