[evolution-patches] Folder creation patch



This makes the shell not report an error if, when, creating a new
folder, the corresponding directory already exists.

The problem is that if you get in a situation like the one described in
#40989 (the files in the folder's directory get removed but not the
directory itself), then the folder doesn't appear on the folder tree but
it is also impossible to recreate it because the directory already
exists.

-- Ettore
? GNOME_Evolution_Shell.oaf
? e-shell-importer.c.new
? selection_change_id
? test.evocomp
? glade/e-active-connection-dialog.gladep
? glade/e-shell-folder-creation-dialog.gladep
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/shell/ChangeLog,v
retrieving revision 1.1240
diff -u -p -r1.1240 ChangeLog
--- ChangeLog	16 Apr 2003 14:49:22 -0000	1.1240
+++ ChangeLog	16 Apr 2003 15:24:23 -0000
@@ -1,5 +1,11 @@
 2003-04-16  Ettore Perazzoli  <ettore ximian com>
 
+	* e-local-storage.c (create_folder_directory): Don't signal an
+	error if mkdir() returns EEXIST.  This should at least help with
+	situations like the one described in #40989.
+
+2003-04-16  Ettore Perazzoli  <ettore ximian com>
+
 	* apps_evolution_shell.schemas: Increase the default value for
 	/schemas/apps/evolution/shell/view_defaults/folder_bar/width to
 	200. 	[#41002]
Index: e-local-storage.c
===================================================================
RCS file: /cvs/gnome/evolution/shell/e-local-storage.c,v
retrieving revision 1.91
diff -u -p -r1.91 e-local-storage.c
--- e-local-storage.c	26 Mar 2003 19:31:37 -0000	1.91
+++ e-local-storage.c	16 Apr 2003 15:24:23 -0000
@@ -393,13 +393,12 @@ create_folder_directory (ELocalStorage *
 		parent = g_strdup_printf ("%s/", parent_path);
 		subfolders_directory_physical_path = e_path_to_physical (priv->base_path, parent);
 
-		if (! g_file_test (subfolders_directory_physical_path, G_FILE_TEST_EXISTS)) {
-			if (mkdir (subfolders_directory_physical_path, 0700) == -1) {
-				g_free (subfolders_directory_physical_path);
-				g_free (parent);
-				return errno_to_storage_result ();
-			}
+		if (mkdir (subfolders_directory_physical_path, 0700) == -1 && errno != EEXIST) {
+			g_free (subfolders_directory_physical_path);
+			g_free (parent);
+			return errno_to_storage_result ();
 		}
+
 		g_free (subfolders_directory_physical_path);
 		g_free (parent);
 	}

Attachment: signature.asc
Description: This is a digitally signed message part



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