summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2016-05-03 03:16:41 +0200
committerCarlos Garnacho <carlosg@gnome.org>2016-05-05 13:43:25 +0200
commitea5479b114306a239e00c9124d6f4125efaa1e3a (patch)
treed06edeb562905af58fdc664f2a0510890c16c17c
parent938bd88a32e2f2c785164d64fa94846ef0b2134f (diff)
downloadtracker-ea5479b114306a239e00c9124d6f4125efaa1e3a.tar.gz
tracker: Make it superscary to reset databases
This is possibly a data loss situation, so warn the user that this is possibly what will happen.
-rw-r--r--src/tracker/tracker-color.h3
-rw-r--r--src/tracker/tracker-reset.c28
2 files changed, 31 insertions, 0 deletions
diff --git a/src/tracker/tracker-color.h b/src/tracker/tracker-color.h
index a297f8126..53d730376 100644
--- a/src/tracker/tracker-color.h
+++ b/src/tracker/tracker-color.h
@@ -29,4 +29,7 @@
#define WARN_BEGIN "\033[33m" /* Yellow */
#define WARN_END "\033[0m"
+#define CRIT_BEGIN "\033[1;31m" /* Red */
+#define CRIT_END "\033[0m"
+
#endif /* __TRACKER_COLOR_H__ */
diff --git a/src/tracker/tracker-reset.c b/src/tracker/tracker-reset.c
index 6e67a18a3..c92389f94 100644
--- a/src/tracker/tracker-reset.c
+++ b/src/tracker/tracker-reset.c
@@ -20,6 +20,7 @@
#include "config.h"
#include <stdlib.h>
+#include <stdio.h>
#include <glib.h>
#include <glib/gi18n.h>
@@ -33,6 +34,7 @@
#include "tracker-daemon.h"
#include "tracker-process.h"
#include "tracker-config.h"
+#include "tracker-color.h"
static gboolean hard_reset;
static gboolean soft_reset;
@@ -134,6 +136,32 @@ reset_run (void)
return EXIT_FAILURE;
}
+ if (hard_reset || soft_reset) {
+ gchar response[100] = { 0 };
+
+ g_print (CRIT_BEGIN "%s" CRIT_END "\n%s\n\n%s %s: ",
+ _("CAUTION: This process may irreversibly delete data."),
+ _("Although most content indexed by Tracker can "
+ "be safely reindexed, it can't be assured that "
+ "this is the case for all data. Be aware that "
+ "you may be incurring in a data loss situation, "
+ "proceed at your own risk."),
+ _("Are you sure you want to proceed?"),
+ /* TRANSLATORS: This is to be displayed on command line output */
+ _("[y|N]"));
+
+ fgets (response, 100, stdin);
+ response[strlen (response) - 1] = '\0';
+
+ /* TRANSLATORS: this is our test for a [y|N] question in the command line.
+ * A partial or full match will be considered an affirmative answer,
+ * it is intentionally lowercase, so please keep it like this.
+ */
+ if (!response[0] || !g_str_has_prefix (_("yes"), response)) {
+ return EXIT_FAILURE;
+ }
+ }
+
/* KILL processes first... */
if (hard_reset || soft_reset) {
tracker_process_stop (TRACKER_PROCESS_TYPE_NONE, TRACKER_PROCESS_TYPE_ALL);