Use local variables in getconf & printconf.
[matthijs/upstream/backupninja.git] / lib / tools.in
index 888dad133b627b3bd0d4a12f565609d8c127b40f..9879e741039a5994bd544fd8e60896c9612d6cd5 100644 (file)
@@ -31,8 +31,8 @@ function setsection() {
 # file and section and echoes its value. If it is empty or not found, $2
 # is used.
 function printconf() {
-   CURRENT_PARAM=$1
-   ret=`@AWK@ -f $libdirectory/parseini S=$CURRENT_SECTION P=$CURRENT_PARAM $CURRENT_CONF_FILE`
+   local CURRENT_PARAM=$1
+   local ret=`@AWK@ -f $libdirectory/parseini S=$CURRENT_SECTION P=$CURRENT_PARAM $CURRENT_CONF_FILE`
    # if nothing is returned, set the default
    if [ "$ret" == "" -a "$2" != "" ]; then
       ret="$2"
@@ -48,13 +48,11 @@ function printconf() {
 # same name. If it is empty or not found, $2 is used.
 #
 function getconf() {
-   ret=`printconf "$1" "$2"`
+   local ret=`printconf "$1" "$2"`
 
-   # replace * with %, so that it is not globbed.
-   ret="${ret//\\*/__star__}"
-
-   # this is weird, but single quotes are needed to
-   # allow for returned values with spaces. $ret is still expanded
-   # because it is in an 'eval' statement.
-   eval $1='$ret'
+   # We use escape the $ in $ret to delay expansion of $ret, so when $1
+   # is foo, eval sees foo=$ret and properly does the assignment
+   # (without the backslash, the right part of the assignment would be
+   # whatever is in ret and be subject to all kinds of expansion.
+   eval $1=\$ret
 }