evolution-data-server r9239 - in trunk/camel: . providers/local
- From: sragavan svn gnome org
- To: svn-commits-list gnome org
- Subject: evolution-data-server r9239 - in trunk/camel: . providers/local
- Date: Thu, 31 Jul 2008 10:33:06 +0000 (UTC)
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]