[tracker/urho-sync] Improvement for tracker-processes util



commit 6af3250b97b79c4adefa518306081c1e86e42be3
Author: Philip Van Hoof <philip codeminded be>
Date:   Mon Aug 24 12:00:15 2009 +0200

    Improvement for tracker-processes util

 src/libtracker-db/tracker-db-manager.c |   27 +++++++++++++++++++++++----
 src/libtracker-db/tracker-db-manager.h |    2 +-
 src/tracker-store/tracker-main.c       |    2 +-
 src/tracker-utils/tracker-processes.c  |    9 ++++++---
 4 files changed, 31 insertions(+), 9 deletions(-)
---
diff --git a/src/libtracker-db/tracker-db-manager.c b/src/libtracker-db/tracker-db-manager.c
index 9132452..e04255c 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 (void)
+db_manager_remove_all (gboolean rm_backup_and_log)
 {
 	guint i;
 
@@ -879,6 +879,25 @@ db_manager_remove_all (void)
 			   dbs[i].abs_filename);
 		g_unlink (dbs[i].abs_filename);
 	}
+
+	if (rm_backup_and_log) {
+		GFile *file;
+		gchar *path;
+
+		file = tracker_db_backup_file (NULL, TRACKER_DB_BACKUP_META_FILENAME);
+		path = g_file_get_path (file);
+		g_message ("  Removing database:'%s'",
+			   path);
+		g_free (path);
+		g_file_delete (file, NULL, NULL);
+		g_object_unref (file);
+		path = tracker_db_journal_filename ();
+		g_message ("  Removing database:'%s'",
+			   path);
+		file = g_file_new_for_path (path);
+		g_file_delete (file, NULL, NULL);
+		g_object_unref (file);
+	}
 }
 
 static TrackerDBVersion
@@ -1206,7 +1225,7 @@ tracker_db_manager_init (TrackerDBManagerFlags	flags,
 		 * will cause errors and do nothing.
 		 */
 		g_message ("Cleaning up database files for reindex");
-		db_manager_remove_all ();
+		db_manager_remove_all (FALSE);
 
 		/* In cases where we re-init this module, make sure
 		 * we have cleaned up the ontology before we load all
@@ -1365,11 +1384,11 @@ tracker_db_manager_shutdown (void)
 }
 
 void
-tracker_db_manager_remove_all (void)
+tracker_db_manager_remove_all (gboolean rm_backup_and_log)
 {
 	g_return_if_fail (initialized != FALSE);
 	
-	db_manager_remove_all ();
+	db_manager_remove_all (rm_backup_and_log);
 }
 
 void
diff --git a/src/libtracker-db/tracker-db-manager.h b/src/libtracker-db/tracker-db-manager.h
index eddf10f..95f0dd4 100644
--- a/src/libtracker-db/tracker-db-manager.h
+++ b/src/libtracker-db/tracker-db-manager.h
@@ -53,7 +53,7 @@ gboolean     tracker_db_manager_init			    (TrackerDBManagerFlags  flags,
 							     gboolean		   *need_journal);
 void	     tracker_db_manager_shutdown		    (void);
 
-void	     tracker_db_manager_remove_all		    (void);
+void	     tracker_db_manager_remove_all		    (gboolean		    rm_backup_and_log);
 void         tracker_db_manager_optimize		    (void);
 
 const gchar *tracker_db_manager_get_file		    (TrackerDB		    db);
diff --git a/src/tracker-store/tracker-main.c b/src/tracker-store/tracker-main.c
index fff0628..d7750b6 100644
--- a/src/tracker-store/tracker-main.c
+++ b/src/tracker-store/tracker-main.c
@@ -491,7 +491,7 @@ shutdown_directories (void)
 
 	/* If we are reindexing, just remove the databases */
 	if (private->reindex_on_shutdown) {
-		tracker_db_manager_remove_all ();
+		tracker_db_manager_remove_all (FALSE);
 	}
 }
 
diff --git a/src/tracker-utils/tracker-processes.c b/src/tracker-utils/tracker-processes.c
index c1ed7e0..d88c655 100644
--- a/src/tracker-utils/tracker-processes.c
+++ b/src/tracker-utils/tracker-processes.c
@@ -37,7 +37,7 @@
 
 static gboolean     should_kill;
 static gboolean     should_terminate;
-static gboolean     hard_reset;
+static gboolean     hard_reset, soft_reset;
 
 static GOptionEntry entries[] = {
 	{ "kill", 'k', 0, G_OPTION_ARG_NONE, &should_kill,
@@ -47,6 +47,9 @@ static GOptionEntry entries[] = {
 	  N_("Use SIGTERM to stop all tracker processes found"),
 	  NULL 
 	},
+	{ "soft-reset", 's', 0, G_OPTION_ARG_NONE, &soft_reset,
+	  N_("This will kill all Tracker processes and remove all databases except the backup and journal (a restart will restore the data)"),
+	  NULL },
 	{ "hard-reset", 'r', 0, G_OPTION_ARG_NONE, &hard_reset,
 	  N_("This will kill all Tracker processes and remove all databases"),
 	  NULL },
@@ -235,7 +238,7 @@ main (int argc, char **argv)
 	g_slist_foreach (pids, (GFunc) g_free, NULL);
 	g_slist_free (pids);
 
-	if (hard_reset) {
+	if (hard_reset || soft_reset) {
 		guint log_handler_id;
 
 		/* Set log handler for library messages */
@@ -251,7 +254,7 @@ main (int argc, char **argv)
 			return EXIT_FAILURE;
 		}
 
-		tracker_db_manager_remove_all ();
+		tracker_db_manager_remove_all (hard_reset);
 		tracker_db_manager_shutdown ();
 
 		/* Unset log handler */



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