@@ -481,7 +481,19 @@ _comp_cmd_scp__path_esc='[][(){}<>"'"'"',:;^&!$=?`\\|[:space:]]'
481
481
# types of the files.
482
482
_comp_cmd_scp__escape_path ()
483
483
{
484
- local dirs_only=$1 escape_replacement=${2:- ' \\&' }
484
+ local OPTIND=1 OPTARG=" " OPTERR=0 opt dirs_only=" "
485
+ while getopts ' :d' _flag " $@ " ; do
486
+ case $_flag in
487
+ d) dirs_only=set ;;
488
+ * )
489
+ echo " bash_completion: $FUNCNAME : usage error: $* " >&2
490
+ return 1
491
+ ;;
492
+ esac
493
+ done
494
+ shift " $(( OPTIND - 1 )) "
495
+ local escape_replacement=${1:- ' \\&' }
496
+
485
497
if [[ $dirs_only ]]; then
486
498
# escape problematic characters; remove non-dirs
487
499
command sed \
@@ -543,7 +555,8 @@ _comp_xfunc_scp_compgen_remote_files()
543
555
local _files
544
556
_files=$( ssh -o ' Batchmode yes' " $_userhost " \
545
557
command ls -aF1dL " $_path *" 2> /dev/null |
546
- _comp_cmd_scp__escape_path " $_dirs_only " " $_escape_replacement " )
558
+ _comp_cmd_scp__escape_path ${_dirs_only: +' -d' } -- \
559
+ " $_escape_replacement " )
547
560
_comp_compgen -R split -l -- " $_files "
548
561
}
549
562
@@ -570,7 +583,7 @@ _comp_xfunc_scp_compgen_local_files()
570
583
_comp_expand_glob files ' "$cur"*' || return 0
571
584
_comp_compgen -RU files split -l ${1: +-P " $1 " } -- " $(
572
585
command ls -aF1dL " ${files[@]} " 2> /dev/null |
573
- _comp_cmd_scp__escape_path " $ _dirs_only"
586
+ _comp_cmd_scp__escape_path ${ _dirs_only: + ' -d ' }
574
587
) "
575
588
}
576
589
0 commit comments