[systemd-devel] [PATCH] shell-completion: prevent mangling unit names (bash)
Zbigniew Jędrzejewski-Szmek
zbyszek at in.waw.pl
Sat Jul 26 16:52:53 PDT 2014
On Sat, Jul 26, 2014 at 05:24:11PM -0400, Eric Cook wrote:
> This looks seems like it should work. I would appreciate it if you could trail run it.
> My use of bash is limited and knowledge of it's completion system even more so.
> ---
Unfortunately it works only partially. It seems that completions are generated
properly, but bash doesn't seem to be able to continue after a backslash,
so one has to copy in the remaining part by hand.
Zbyszek
> shell-completion/bash/systemctl.in | 16 ++++++++--------
> 1 file changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/shell-completion/bash/systemctl.in b/shell-completion/bash/systemctl.in
> index c5950cc..113694f 100644
> --- a/shell-completion/bash/systemctl.in
> +++ b/shell-completion/bash/systemctl.in
> @@ -46,25 +46,25 @@ __filter_units_by_property () {
> <(__systemctl $mode show --property "$property" -- "${units[@]}")
> for ((i=0; $i < ${#units[*]}; i++)); do
> if [[ "${props[i]}" = "$property=$value" ]]; then
> - echo " ${units[i]}"
> + printf '%q\n' " ${units[i]}"
> fi
> done
> }
>
> __get_all_units () { __systemctl $1 list-units --all \
> - | { while read -r a b; do echo " $a"; done; }; }
> + | { while read -r a b; do printf '%q\n' " $a"; done; }; }
> __get_active_units () { __systemctl $1 list-units \
> - | { while read -r a b; do echo " $a"; done; }; }
> + | { while read -r a b; do printf '%q\n' " $a"; done; }; }
> __get_startable_units () { __systemctl $1 list-units --all -t service,timer,socket,mount,automount,path,snapshot,swap \
> - | { while read -r a b c d; do [[ $c == "inactive" || $c == "failed" ]] && echo " $a"; done; }; }
> + | { while read -r a b c d; do [[ $c == "inactive" || $c == "failed" ]] && printf '%q\n' " $a"; done; }; }
> __get_failed_units () { __systemctl $1 list-units \
> - | { while read -r a b c d; do [[ $c == "failed" ]] && echo " $a"; done; }; }
> + | { while read -r a b c d; do [[ $c == "failed" ]] && printf '%q\n' " $a"; done; }; }
> __get_enabled_units () { __systemctl $1 list-unit-files \
> - | { while read -r a b c ; do [[ $b == "enabled" ]] && echo " $a"; done; }; }
> + | { while read -r a b c ; do [[ $b == "enabled" ]] && printf '%q\n' " $a"; done; }; }
> __get_disabled_units () { __systemctl $1 list-unit-files \
> - | { while read -r a b c ; do [[ $b == "disabled" ]] && echo " $a"; done; }; }
> + | { while read -r a b c ; do [[ $b == "disabled" ]] && printf '%q\n' " $a"; done; }; }
> __get_masked_units () { __systemctl $1 list-unit-files \
> - | { while read -r a b c ; do [[ $b == "masked" ]] && echo " $a"; done; }; }
> + | { while read -r a b c ; do [[ $b == "masked" ]] && printf '%q\n' " $a"; done; }; }
>
> _systemctl () {
> local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
> --
> 2.0.2
>
> _______________________________________________
> systemd-devel mailing list
> systemd-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/systemd-devel
>
More information about the systemd-devel
mailing list