evolution r35519 - trunk/plugins/backup-restore
- From: psankar svn gnome org
 
- To: svn-commits-list gnome org
 
- Subject: evolution r35519 - trunk/plugins/backup-restore
 
- Date: Tue, 20 May 2008 11:28:05 +0000 (UTC)
 
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]