summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Klinger <git@max-klinger.org>2015-09-20 01:11:12 +0200
committerYorhel <git@yorhel.nl>2015-09-20 07:58:07 +0200
commitc035c3859c05b664bbc5fcaf0688a538ab329f4b (patch)
tree5791721621fc5186f13d61840d5686a3c0b504bf
parent5aeb4f9b09a6e39ca0f8ab1e7fce55e8abb948ad (diff)
implement confirmation switch
-rw-r--r--doc/ncdu.pod5
-rw-r--r--src/browser.c4
-rw-r--r--src/browser.h1
-rw-r--r--src/global.h2
-rw-r--r--src/main.c3
5 files changed, 14 insertions, 1 deletions
diff --git a/doc/ncdu.pod b/doc/ncdu.pod
index ce8e8d3..43d6238 100644
--- a/doc/ncdu.pod
+++ b/doc/ncdu.pod
@@ -103,6 +103,11 @@ List sizes using base 10 prefixes, that is, powers of 1000 (KB, MB, etc), as
defined in the International System of Units (SI), instead of the usual base 2
prefixes, that is, powers of 1024 (KiB, MiB, etc).
+=item --confirm-quit
+
+Requires a confirmation before quitting ncdu. Very helpful when you
+accidentally press 'q' during or after a very long scan.
+
=back
=head2 Scan Options
diff --git a/src/browser.c b/src/browser.c
index d1adb4b..64f9bc6 100644
--- a/src/browser.c
+++ b/src/browser.c
@@ -397,7 +397,9 @@ int browse_key(int ch) {
if(info_show)
info_show = 0;
else
- quit_init();
+ if (confirm_quit)
+ quit_init();
+ else return 1;
break;
case 'g':
if(++graph > 3)
diff --git a/src/browser.h b/src/browser.h
index 76e79a6..bc3f3fc 100644
--- a/src/browser.h
+++ b/src/browser.h
@@ -28,6 +28,7 @@
#include "global.h"
+int confirm_quit;
int browse_key(int);
void browse_draw(void);
void browse_init(struct dir *);
diff --git a/src/global.h b/src/global.h
index 17f192d..679888d 100644
--- a/src/global.h
+++ b/src/global.h
@@ -90,6 +90,8 @@ extern int read_only;
extern long update_delay;
/* filter directories with CACHEDIR.TAG */
extern int cachedir_tags;
+/* flag if we should ask for confirmation when quitting */
+extern int confirm_quit;
/* handle input from keyboard and update display */
int input_handle(int);
diff --git a/src/main.c b/src/main.c
index 6eeca0c..73ddc61 100644
--- a/src/main.c
+++ b/src/main.c
@@ -130,6 +130,7 @@ static void argv_parse(int argc, char **argv) {
{ 'X', 1, "-X,--exclude-from" },
{ 'C', 0, "--exclude-caches" },
{ 's', 0, "--si" },
+ { 'Q', 0, "--confirm-quit" },
{0,0,NULL}
};
@@ -154,6 +155,7 @@ static void argv_parse(int argc, char **argv) {
printf(" --exclude PATTERN Exclude files that match PATTERN\n");
printf(" -X, --exclude-from FILE Exclude files that match any pattern in FILE\n");
printf(" --exclude-caches Exclude directories containing CACHEDIR.TAG\n");
+ printf(" --confirm-quit Confirm quitting ncdu\n");
exit(0);
case 'q': update_delay = 2000; break;
case 'v':
@@ -167,6 +169,7 @@ static void argv_parse(int argc, char **argv) {
case '0': dir_ui = 0; break;
case '1': dir_ui = 1; break;
case '2': dir_ui = 2; break;
+ case 'Q': confirm_quit = 1; break;
case 1 : exclude_add(val); break; /* --exclude */
case 'X':
if(exclude_addfile(val)) {