From f6441eaf050267c05ef8df8d5614bb598528942f Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 27 Jul 2017 20:22:54 +0900 Subject: [PATCH] bash-completion: use the first argument instead of the global variable (#6457) Without this fix: $ systemctl start Display all 135 possibilities? (y or n) $ __get_startable_units --system | wc -l 224 the number of the suggestions are quite different, as __get_startable_units --system does not filter already started units. With this fix, $ systemctl start Display all 135 possibilities? (y or n) $ __get_startable_units --system | wc -l 123 $ __get_template_names --system | wc -l 12 the number of the suggestions matches one the function returns. For consistency with the other internal functions, it should use the first argument instead of the global variable $mode. [zj: add commit message to make it sound like we know what we're doing] (cherry picked from commit 6bda23dd6aaba50cf8e3e6024248cf736cc443ca) --- shell-completion/bash/systemctl.in | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/shell-completion/bash/systemctl.in b/shell-completion/bash/systemctl.in index 0398d09d18..bde28efc3e 100644 --- a/shell-completion/bash/systemctl.in +++ b/shell-completion/bash/systemctl.in @@ -68,7 +68,7 @@ __filter_units_by_properties () { done for ((i=0; i < ${#units[*]}; i++)); do for ((j=0; j < ${#conditions[*]}; j++)); do - if [[ "${props[ i * ${#conditions[*]} + j]}" != "${conditions[j]}" ]]; then + if [[ "${props[i * ${#conditions[*]} + j]}" != "${conditions[j]}" ]]; then break fi done @@ -87,19 +87,19 @@ __get_active_units () { __systemctl $1 list-units \ | { while read -r a b; do echo " $a"; done; }; } __get_startable_units () { # find startable inactive units - __filter_units_by_properties $mode ActiveState,CanStart inactive,yes $( - { __systemctl $mode list-unit-files --state enabled,enabled-runtime,linked,linked-runtime,static,indirect,disabled,generated,transient | \ + __filter_units_by_properties $1 ActiveState,CanStart inactive,yes $( + { __systemctl $1 list-unit-files --state enabled,enabled-runtime,linked,linked-runtime,static,indirect,disabled,generated,transient | \ { while read -r a b; do [[ $a =~ @\. ]] || echo " $a"; done; } - __systemctl $mode list-units --state inactive,failed | \ + __systemctl $1 list-units --state inactive,failed | \ { while read -r a b c; do [[ $b == "loaded" ]] && echo " $a"; done; } } | sort -u ) } __get_restartable_units () { # filter out masked and not-found - __filter_units_by_property $mode CanStart yes $( - __systemctl $mode list-unit-files --state enabled,disabled,static | \ + __filter_units_by_property $1 CanStart yes $( + __systemctl $1 list-unit-files --state enabled,disabled,static | \ { while read -r a b; do [[ $a =~ @\. ]] || echo " $a"; done; } - __systemctl $mode list-units | \ + __systemctl $1 list-units | \ { while read -r a b; do echo " $a"; done; } ) } __get_failed_units () { __systemctl $1 list-units \