diff options
author | Arun Prakash Jana <engineerarun@gmail.com> | 2019-10-19 13:25:50 +0530 |
---|---|---|
committer | Arun Prakash Jana <engineerarun@gmail.com> | 2019-10-19 13:25:50 +0530 |
commit | 1b3b9f503df5f2e37664a2fb3ca5a069b741e18b (patch) | |
tree | c40de0f2c6227d9c1fde9ad8447d938f50e2ae82 | |
parent | 95e9151c90a515b85a5243ce28ac0cdd26f5a0c6 (diff) | |
download | nnn-1b3b9f503df5f2e37664a2fb3ca5a069b741e18b.tar.gz |
Refactor cp, mv, cp-mv as, rm
-rw-r--r-- | src/.clang-tidy | 2 | ||||
-rw-r--r-- | src/nnn.c | 91 |
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' ... @@ -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') { |