mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 13:45:38 +00:00
bash-completion: Fix argument passing to $1
Our vsh bash completion string is merely just a wrapper over virsh/virt-admin complete (cmdComplete) - a hidden command that uses internal readline completion to generate list of candidates. But this means that we have to pass some additional arguments to the helper process: e.g. connection URI and R/O flag. Candidates are printed on a separate line each (and can contain space), which means that when bash is reading the helper's output into an array, it needs to split items on '\n' char - hence the IFS=$'\n' prefix on the line executing the helper. This was introduced inb889594a70
. But this introduced a regression - those extra arguments we might pass are stored in a string and previously were split on a space character (because $IFS was kept untouched and by default contains space). But now, after the fix that's no longer the case and thus virsh/virt-admin sees ' -r -c URI' as one argument. The solution is to take $IFS out of the picture by storing the extra arguments in an array instead of string. Fixes:b889594a70
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Erik Skultety <eskultet@redhat.com>
This commit is contained in:
parent
f0e5100f00
commit
7657804df7
@ -30,12 +30,12 @@ _vsh_complete()
|
||||
c=$((++c))
|
||||
done
|
||||
|
||||
CMDLINE=
|
||||
CMDLINE=( )
|
||||
if [ -n "${RO}" ]; then
|
||||
CMDLINE="${CMDLINE} -r"
|
||||
CMDLINE+=("-r")
|
||||
fi
|
||||
if [ -n "${URI}" ]; then
|
||||
CMDLINE="${CMDLINE} -c ${URI}"
|
||||
CMDLINE+=("-c" "${URI}")
|
||||
fi
|
||||
|
||||
INPUT=( "${COMP_WORDS[@]:$i:$COMP_CWORD}" )
|
||||
@ -56,7 +56,7 @@ _vsh_complete()
|
||||
# the name of the command whose arguments are being
|
||||
# completed.
|
||||
# Therefore, we might just run $1.
|
||||
IFS=$'\n' A=($($1 ${CMDLINE} complete -- "${INPUT[@]}" 2>/dev/null))
|
||||
IFS=$'\n' A=($($1 ${CMDLINE[@]} complete -- "${INPUT[@]}" 2>/dev/null))
|
||||
|
||||
COMPREPLY=($(compgen -W "${A[*]%--}" -- ${cur}))
|
||||
__ltrim_colon_completions "$cur"
|
||||
|
Loading…
Reference in New Issue
Block a user