[tracker/urho-sync] Fixed restore on startup of meta.db is missing and meta-backup.db isn't



commit 4c59007564f1138c01a66e2e45f891d157da03e8
Author: Philip Van Hoof <philip codeminded be>
Date:   Mon Aug 24 15:57:19 2009 +0200

    Fixed restore on startup of meta.db is missing and meta-backup.db isn't

 src/libtracker-db/tracker-db-manager.c |   31 ++++++++++++++++++++++---------
 1 files changed, 22 insertions(+), 9 deletions(-)
---
diff --git a/src/libtracker-db/tracker-db-manager.c b/src/libtracker-db/tracker-db-manager.c
index e04255c..c22f48d 100644
--- a/src/libtracker-db/tracker-db-manager.c
+++ b/src/libtracker-db/tracker-db-manager.c
@@ -865,7 +865,7 @@ db_interface_create (TrackerDB db)
 }
 
 static void
-db_manager_remove_all (gboolean rm_backup_and_log)
+db_manager_remove_all (gboolean rm_backup_and_log, gboolean not_meta)
 {
 	guint i;
 
@@ -875,6 +875,11 @@ db_manager_remove_all (gboolean rm_backup_and_log)
 	 * calculate the absolute directories here. 
 	 */
 	for (i = 1; i < G_N_ELEMENTS (dbs); i++) {
+
+		if (not_meta && i == TRACKER_DB_METADATA) {
+			continue;
+		}
+
 		g_message ("  Removing database:'%s'",
 			   dbs[i].abs_filename);
 		g_unlink (dbs[i].abs_filename);
@@ -1040,7 +1045,7 @@ tracker_db_manager_ensure_locale (void)
 }
 
 static gboolean
-check_meta_backup (void)
+check_meta_backup (gboolean *did_copy)
 {
 	const gchar *meta_filename;
 	gboolean retval = FALSE;
@@ -1063,8 +1068,16 @@ check_meta_backup (void)
 			backup = tracker_db_backup_file (NULL, TRACKER_DB_BACKUP_META_FILENAME);
 
 			if (g_file_query_exists (backup, NULL)) {
-				g_file_move (backup, file, G_FILE_COPY_OVERWRITE, NULL,
-					     NULL, NULL, NULL);
+				GError *error = NULL;
+
+				g_file_copy (backup, file, G_FILE_COPY_OVERWRITE,
+				             NULL, NULL, NULL, &error);
+
+				if (!error && did_copy) {
+					*did_copy = TRUE;
+				}
+
+				g_clear_error (&error);
 			}
 
 			retval = TRUE;
@@ -1089,7 +1102,7 @@ tracker_db_manager_init (TrackerDBManagerFlags	flags,
 	gchar		   *filename;
 	const gchar	   *dir;
 	const gchar        *env_path;
-	gboolean	    need_reindex;
+	gboolean	    need_reindex, did_copy = FALSE;
 	guint		    i;
 
 	if (first_time) {
@@ -1190,7 +1203,7 @@ tracker_db_manager_init (TrackerDBManagerFlags	flags,
 	}
 
 	if (need_journal) {
-		*need_journal = check_meta_backup ();
+		*need_journal = check_meta_backup (&did_copy);
 	}
 
 	/* If we are just initializing to remove the databases,
@@ -1225,11 +1238,11 @@ tracker_db_manager_init (TrackerDBManagerFlags	flags,
 		 * will cause errors and do nothing.
 		 */
 		g_message ("Cleaning up database files for reindex");
-		db_manager_remove_all (FALSE);
+		db_manager_remove_all (FALSE, did_copy);
 
 		/* In cases where we re-init this module, make sure
 		 * we have cleaned up the ontology before we load all
-		 * new databases.
+		* new databases.
 		 */
 		tracker_ontology_shutdown ();
 
@@ -1388,7 +1401,7 @@ tracker_db_manager_remove_all (gboolean rm_backup_and_log)
 {
 	g_return_if_fail (initialized != FALSE);
 	
-	db_manager_remove_all (rm_backup_and_log);
+	db_manager_remove_all (rm_backup_and_log, FALSE);
 }
 
 void



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