evolution r35519 - trunk/plugins/backup-restore



Author: psankar
Date: Tue May 20 11:28:05 2008
New Revision: 35519
URL: http://svn.gnome.org/viewvc/evolution?rev=35519&view=rev

Log:
2008-05-20  Sankar P  <psankar novell com>

	* backup-restore.c: (epbr_perform_pre_backup_checks),
	(org_gnome_backup_restore_backup):
	* org-gnome-backup-restore.error.xml:
	Indicate error if backup folder chosen lacks permissions.

	** Fixes bug #534012




Modified:
   trunk/plugins/backup-restore/ChangeLog
   trunk/plugins/backup-restore/backup-restore.c
   trunk/plugins/backup-restore/org-gnome-backup-restore.error.xml

Modified: trunk/plugins/backup-restore/backup-restore.c
==============================================================================
--- trunk/plugins/backup-restore/backup-restore.c	(original)
+++ trunk/plugins/backup-restore/backup-restore.c	Tue May 20 11:28:05 2008
@@ -3,6 +3,7 @@
 #include <sys/wait.h>
 #include <gtk/gtk.h>
 #include <glib/gi18n.h>
+#include <glib/gstdio.h>
 #include <libgnomeui/libgnomeui.h>
 #include "shell/es-menu.h"
 #include "mail/em-config.h"
@@ -86,6 +87,16 @@
 	return mask;
 }
 
+static gboolean
+epbr_perform_pre_backup_checks (char* dir)
+{
+#ifdef G_OS_WIN32
+	return TRUE;
+#else
+	return (g_access (dir, W_OK) == 0); 
+#endif
+}
+
 void
 org_gnome_backup_restore_backup (EPlugin *ep, ESMenuTargetShell *target)
 {
@@ -110,18 +121,27 @@
 		char *filename;
 		guint32 mask;
 		char *uri = NULL;
+		char *dir;
 
 		uri = gtk_file_chooser_get_current_folder_uri(GTK_FILE_CHOOSER (dlg));
 		e_file_update_save_path(uri, TRUE);
 
 		filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dlg));
+		dir = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (dlg));
 		gtk_widget_destroy (dlg);
 
-		mask = dialog_prompt_user (GTK_WINDOW (target->target.widget), _("_Restart Evolution after backup"), "org.gnome.backup-restore:backup-confirm", NULL);
-		if (mask & BR_OK)
-			backup (filename, (mask & BR_START) ? TRUE: FALSE);
+
+		if (epbr_perform_pre_backup_checks (dir)) {
+
+			mask = dialog_prompt_user (GTK_WINDOW (target->target.widget), _("_Restart Evolution after backup"), "org.gnome.backup-restore:backup-confirm", NULL);
+			if (mask & BR_OK)
+				backup (filename, (mask & BR_START) ? TRUE: FALSE);
+		} else {
+			e_error_run (NULL, "org.gnome.backup-restore:insufficient-permissions", NULL);
+		}
 
 		g_free (filename);
+		g_free (dir);
 
 		return;
 	}

Modified: trunk/plugins/backup-restore/org-gnome-backup-restore.error.xml
==============================================================================
--- trunk/plugins/backup-restore/org-gnome-backup-restore.error.xml	(original)
+++ trunk/plugins/backup-restore/org-gnome-backup-restore.error.xml	Tue May 20 11:28:05 2008
@@ -17,4 +17,8 @@
     <button stock="gtk-no" response="GTK_RESPONSE_NO"/>
     <button stock="gtk-yes" response="GTK_RESPONSE_YES"/>
   </error>  
+   <error id="insufficient-permissions" type="error">
+   	<_title>Insufficient Permissions</_title>
+	<_secondary>The selected folder does not have enough permissions to create the file</_secondary>
+   </error>
 </error-list>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]