1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-03 13:47:25 +03:00

ctdb-scripts: Fix tunable setup code by making it shell-agnostic

All tunables set in configuration are currently set to 0 on system
where /bin/sh is dash (and perhaps other non-bash shells).  dash puts
single quotes around all values in the output of the "set" builtin
command, whereas bash only puts them around values when something
needs to be quoted.  Tunables always have a simple integer value so
dash will quote them and bash won't.  The setup code currently passes
the raw value, including any quotes to "ctdb setvar ...".  This
command does no error checking on the input, so "'1'" is converted to
0.

Change the code so that the value is determined from the shell
variable and is independent of the "set" output.

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
This commit is contained in:
Martin Schwenke 2015-02-16 14:04:09 +11:00 committed by Amitay Isaacs
parent 664d62b611
commit 39686f4505

View File

@ -121,10 +121,10 @@ update_config_from_tdb() {
set_ctdb_variables () {
# set any tunables from the config file
set | grep ^CTDB_SET_ | cut -d_ -f3- |
set | sed -n '/^CTDB_SET_/s/=.*//p' |
while read v; do
varname=`echo $v | cut -d= -f1`
value=`echo $v | cut -d= -f2`
varname="${v#CTDB_SET_}"
value=$(eval echo "\$$v")
ctdb setvar $varname $value || return 1
echo "Set $varname to $value"
done