evolution-data-server r9239 - in trunk/camel: . providers/local



Author: sragavan
Date: Thu Jul 31 10:33:06 2008
New Revision: 9239
URL: http://svn.gnome.org/viewvc/evolution-data-server?rev=9239&view=rev

Log:
2008-07-31  Srinivasa Ragavan  <sragavan novell com>

	** Fix for bug #545082

	* camel/camel-db.c: Added support apis.
	* camel/camel-db.h:
	* camel/camel-folder.c: Added support to rename folder.
	* camel/camel-store.c: Added code to delete folder cleanly
2008-07-31  Srinivasa Ragavan  <sragavan novell com>

	* camel/providers/local/camel-local-store.c: Support delete folder wrt
	disk summary.


Modified:
   trunk/camel/ChangeLog
   trunk/camel/camel-db.c
   trunk/camel/camel-db.h
   trunk/camel/camel-folder.c
   trunk/camel/camel-store.c
   trunk/camel/providers/local/ChangeLog
   trunk/camel/providers/local/camel-local-store.c

Modified: trunk/camel/camel-db.c
==============================================================================
--- trunk/camel/camel-db.c	(original)
+++ trunk/camel/camel-db.c	Thu Jul 31 10:33:06 2008
@@ -930,6 +930,24 @@
 	return ret;	
 }
 
+int
+camel_db_rename_folder (CamelDB *cdb, const char *old_folder, const char *new_folder, CamelException *ex)
+{
+	int ret;
+	char *cmd;
+
+	cmd = sqlite3_mprintf ("ALTER TABLE %Q RENAME TO  %Q", old_folder, new_folder);
+	ret = camel_db_command (cdb, cmd, ex);
+	sqlite3_free (cmd);
+
+	cmd = sqlite3_mprintf ("UPDATE folders SET folder_name = %Q WHERE folder_name = %Q", new_folder, old_folder);
+	ret = camel_db_command (cdb, cmd, ex);
+	sqlite3_free (cmd);
+	
+	CAMEL_DB_RELEASE_SQLITE_MEMORY;
+	return ret;	
+}
+
 void
 camel_db_camel_mir_free (CamelMIRecord *record)
 {

Modified: trunk/camel/camel-db.h
==============================================================================
--- trunk/camel/camel-db.h	(original)
+++ trunk/camel/camel-db.h	Thu Jul 31 10:33:06 2008
@@ -109,6 +109,7 @@
 int camel_db_end_transaction (CamelDB *cdb, CamelException *ex);
 int camel_db_abort_transaction (CamelDB *cdb, CamelException *ex);
 int camel_db_clear_folder_summary (CamelDB *cdb, char *folder, CamelException *ex);
+int camel_db_rename_folder (CamelDB *cdb, const char *old_folder, const char *new_folder, CamelException *ex);
 
 int camel_db_delete_folder (CamelDB *cdb, const char *folder, CamelException *ex);
 int camel_db_delete_uid (CamelDB *cdb, const char *folder, const char *uid, CamelException *ex);

Modified: trunk/camel/camel-folder.c
==============================================================================
--- trunk/camel/camel-folder.c	(original)
+++ trunk/camel/camel-folder.c	Thu Jul 31 10:33:06 2008
@@ -1590,9 +1590,12 @@
 	folder->folder_flags |= CAMEL_FOLDER_HAS_BEEN_DELETED;
 	
 	CF_CLASS (folder)->delete (folder);
-
+	
 	CAMEL_FOLDER_REC_UNLOCK (folder, lock);
 
+	/* Delete the references of the folder from the DB.*/
+	camel_db_delete_folder (folder->cdb, folder->full_name, NULL);
+	
 	camel_object_trigger_event (folder, "deleted", NULL);
 }
 
@@ -1629,7 +1632,7 @@
 	old = g_strdup(folder->full_name);
 
 	CF_CLASS (folder)->rename(folder, new);
-
+	camel_db_rename_folder (folder->cdb, old, new, NULL);
 	camel_object_trigger_event (folder, "renamed", old);
 	g_free(old);
 }

Modified: trunk/camel/camel-store.c
==============================================================================
--- trunk/camel/camel-store.c	(original)
+++ trunk/camel/camel-store.c	Thu Jul 31 10:33:06 2008
@@ -456,8 +456,10 @@
 
 	if (!camel_exception_is_set(&local))
 		cs_delete_cached_folder(store, folder_name);
-	else
+	else {
 		camel_exception_xfer(ex, &local);
+		printf("excep: %s\n", camel_exception_get_description (ex));
+	}
 	
 	CAMEL_STORE_UNLOCK(store, folder_lock);
 }

Modified: trunk/camel/providers/local/camel-local-store.c
==============================================================================
--- trunk/camel/providers/local/camel-local-store.c	(original)
+++ trunk/camel/providers/local/camel-local-store.c	Thu Jul 31 10:33:06 2008
@@ -458,26 +458,6 @@
 	
 	/* remove metadata only */
 	name = g_strdup_printf("%s%s", CAMEL_LOCAL_STORE(store)->toplevel_dir, folder_name);
-	str = g_strdup_printf("%s.ev-summary", name);
-	if (g_unlink(str) == -1 && errno != ENOENT) {
-		camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
-				      _("Could not delete folder summary file '%s': %s"),
-				      str, g_strerror (errno));
-		g_free(str);
-		g_free (name);
-		return;
-	}
-	g_free(str);
-	str = g_strdup_printf("%s.ev-summary-meta", name);
-	if (g_unlink(str) == -1 && errno != ENOENT) {
-		camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
-				      _("Could not delete folder summary file '%s': %s"),
-				      str, g_strerror (errno));
-		g_free(str);
-		g_free (name);
-		return;
-	}
-	g_free(str);
 	str = g_strdup_printf("%s.ibex", name);
 	if (camel_text_index_remove(str) == -1 && errno != ENOENT) {
 		camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,



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