From ea2de804f8ffa524ec62e6098b986792d1e83044 Mon Sep 17 00:00:00 2001 From: Arun Prakash Jana Date: Sun, 15 Mar 2020 20:26:53 +0530 Subject: [PATCH] batch rename: check dep, handle invalid input --- plugins/.nmv | 8 ++++++-- src/nnn.c | 7 +++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/plugins/.nmv b/plugins/.nmv index 8b080ae2..b89842f0 100755 --- a/plugins/.nmv +++ b/plugins/.nmv @@ -26,6 +26,10 @@ dst_file=$(mktemp "$TMPDIR/.nnnXXXXXX") if [ -s "$selection" ]; then printf "Rename 'c'urrent / 's'election? " read -r resp + + if ! [ "$resp" = "c" ] && ! [ "$resp" = "s" ]; then + exit 1 + fi fi if [ "$resp" = "s" ]; then @@ -96,7 +100,7 @@ while read -r num name; do printf "%s: failed to rename %s to %s: %s\n" "$0" "$name" "$tmp" "$!" > /dev/stderr exit_status=1 fi - + for key in "${!items[@]}"; do if [ "${items[$key]}" = "$name" ]; then items[$key]="$tmp" @@ -116,7 +120,7 @@ while read -r num name; do for key in "${!items[@]}"; do items[$key]=$(printf "%s" "${items[$key]}" | sed "s|^$src\(\$\|\/\)|$name\1|") done - + printf "'%s' => '%s'\n" "$src" "$name" else printf "'%s' -> '%s'\n" "$src" "$name" diff --git a/src/nnn.c b/src/nnn.c index 1e0933ec..2810e0cb 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -431,7 +431,8 @@ static uchar g_states; #define UTIL_FZY 16 #define UTIL_NTFY 17 #define UTIL_CBCP 18 -#define UTIL_NMV 19 +#define UTIL_BASH 19 +#define UTIL_NMV 20 /* Utilities to open files, run actions */ static char * const utils[] = { @@ -470,6 +471,7 @@ static char * const utils[] = { "fzy", ".ntfy", ".cbcp", + "bash", ".nmv", }; @@ -5610,7 +5612,8 @@ nochange: case SEL_RENAMEMUL: endselection(); - if (!plugscript(utils[UTIL_NMV], newpath, path, F_CLI) + if (!(getutil(utils[UTIL_BASH]) + && plugscript(utils[UTIL_NMV], newpath, path, F_CLI)) && !batch_rename(path)) { printwait(messages[MSG_FAILED], &presel); goto nochange;