aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Arun Prakash Jana <engineerarun@gmail.com>2019-10-19 13:25:50 +0530
committerGravatar Arun Prakash Jana <engineerarun@gmail.com>2019-10-19 13:25:50 +0530
commit1b3b9f503df5f2e37664a2fb3ca5a069b741e18b (patch)
treec40de0f2c6227d9c1fde9ad8447d938f50e2ae82
parent95e9151c90a515b85a5243ce28ac0cdd26f5a0c6 (diff)
downloadnnn-1b3b9f503df5f2e37664a2fb3ca5a069b741e18b.tar.gz
Refactor cp, mv, cp-mv as, rm
-rw-r--r--src/.clang-tidy2
-rw-r--r--src/nnn.c91
2 files changed, 52 insertions, 41 deletions
diff --git a/src/.clang-tidy b/src/.clang-tidy
index 9a418ec..a2815f0 100644
--- a/src/.clang-tidy
+++ b/src/.clang-tidy
@@ -11,5 +11,5 @@ CheckOptions:
- key: fuchsia-restrict-system-includes.Includes
value: '*,-stdint.h,-stdbool.h'
- key: readability-function-size.StatementThreshold
- value: '1000'
+ value: '950'
...
diff --git a/src/nnn.c b/src/nnn.c
index cfee8dd..d10b943 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -1360,6 +1360,55 @@ finish:
return ret;
}
+static bool cpmvrm_selection(enum action sel, char *path, int *presel)
+{
+ int r;
+
+ endselection();
+
+ if (!selsafe()) {
+ *presel = MSGWAIT;
+ return FALSE;
+ }
+
+ switch (sel) {
+ case SEL_CP:
+ opstr(g_buf, cp);
+ break;
+ case SEL_MV:
+ opstr(g_buf, mv);
+ break;
+ case SEL_CPMVAS:
+ r = get_input("'c'p / 'm'v as?");
+ if (r != 'c' && r != 'm') {
+ if (cfg.filtermode)
+ *presel = FILTER;
+ return FALSE;
+ }
+
+ if (!cpmv_rename(r, path)) {
+ printwait(messages[OPERATION_FAILED], presel);
+ return FALSE;
+ }
+ break;
+ default: /* SEL_RMMUL */
+ rmmulstr(g_buf);
+ break;
+ }
+
+ if (sel != SEL_CPMVAS)
+ spawn(utils[SH_EXEC], g_buf, NULL, path, F_CLI);
+
+ /* Clear selection on move or delete */
+ if (sel != SEL_CP)
+ clearselection();
+
+ if (cfg.filtermode)
+ *presel = FILTER;
+
+ return TRUE;
+}
+
static bool batch_rename(const char *path)
{
int fd1, fd2, i;
@@ -4592,49 +4641,11 @@ nochange:
case SEL_CPMVAS: // fallthrough
case SEL_RMMUL:
{
- endselection();
-
- if (!selsafe()) {
- presel = MSGWAIT;
+ if (!cpmvrm_selection(sel, path, &presel))
goto nochange;
- }
-
- switch (sel) {
- case SEL_CP:
- opstr(g_buf, cp);
- break;
- case SEL_MV:
- opstr(g_buf, mv);
- break;
- case SEL_CPMVAS:
- r = get_input("'c'p / 'm'v as?");
- if (r != 'c' && r != 'm') {
- if (cfg.filtermode)
- presel = FILTER;
- goto nochange;
- }
-
- if (!cpmv_rename(r, path)) {
- printwait(messages[OPERATION_FAILED], &presel);
- goto nochange;
- }
- break;
- default: /* SEL_RMMUL */
- rmmulstr(g_buf);
- break;
- }
-
- if (sel != SEL_CPMVAS)
- spawn(utils[SH_EXEC], g_buf, NULL, path, F_CLI);
-
- /* Clear selection on move or delete */
- if (sel != SEL_CP)
- clearselection();
if (ndents)
copycurname();
- if (cfg.filtermode)
- presel = FILTER;
goto begin;
}
case SEL_RM:
@@ -5019,7 +5030,7 @@ nochange:
}
}
return;
- case SEL_SESSIONS:
+ case SEL_SESSIONS:
r = get_input("'s'(ave) / 'l'(oad) / 'r'(estore) session?");
if (r == 's') {