diff options
| author | 2020-03-15 20:26:53 +0530 | |
|---|---|---|
| committer | 2020-03-15 20:26:53 +0530 | |
| commit | ea2de804f8ffa524ec62e6098b986792d1e83044 (patch) | |
| tree | d479ebfd8afccf2d3be213803678762784680974 | |
| parent | 03e6d7d553e6024d26b7ce51927c97f40e09925a (diff) | |
| download | nnn-ea2de804f8ffa524ec62e6098b986792d1e83044.tar.gz | |
batch rename: check dep, handle invalid input
| -rwxr-xr-x | plugins/.nmv | 8 | ||||
| -rw-r--r-- | src/nnn.c | 7 |
2 files changed, 11 insertions, 4 deletions
diff --git a/plugins/.nmv b/plugins/.nmv index 8b080ae..b89842f 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" @@ -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; |