From a0cc4262ac9a3a58c65631f751eefe4a45e7b051 Mon Sep 17 00:00:00 2001 From: Benjamin Schieder Date: Wed, 16 Feb 2005 15:41:38 +0000 Subject: [PATCH] Benjamin Schieder: bool options should actually toggle the first time you hit them [2005020116265718488] (https://www.rocklinux.net/submaster) git-svn-id: http://www.rocklinux.org/svn/rock-linux/trunk@5623 c5f82cb5-29bc-0310-9cd0-bff59a50e3bc --- scripts/config.func | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/scripts/config.func b/scripts/config.func index b616571d8..e35d1c231 100644 --- a/scripts/config.func +++ b/scripts/config.func @@ -354,7 +354,7 @@ bool() { if [ "$menumode" -gt 0 -a $menu_current = $menu_this ] ; then if [ $data -eq 0 ] ; then x="${obegin} ${oend}" ; else x="${obegin}*${oend}" ; fi - echo -e "$2\tbool_action '$usr_name' '$usr_data'" >> config.data.$swpid + echo -e "$2\tbool_action '$usr_name' '$usr_data' '$3'" >> config.data.$swpid printf "$2 '$spacer%-${tabspace}s ${1//_/ }'\n" "$x" >> config.dialog.$swpid @@ -367,10 +367,20 @@ bool() { } bool_action() { - case "$2" in - "") eval "$1=1" ;; - 1) eval "$1=0" ;; - *) eval "$1=" ;; + local usrvar=$1 + local origval=$3 + local usrval + eval "usrval=\${$usrvar}" + case "$usrval" in + "") [ "$origval" == "0" ] && eval "$usrvar=1" + [ "$origval" == "1" ] && eval "$usrvar=0" + ;; + 1) [ "$origval" == "0" ] && eval "$usrvar=0" + [ "$origval" == "1" ] && eval "$usrvar=" + ;; + 0) [ "$origval" == "0" ] && eval "$usrvar=" + [ "$origval" == "1" ] && eval "$usrvar=1" + ;; esac }