X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fupstream%2Fbackupninja.git;a=blobdiff_plain;f=lib%2Ftools.in;h=2715a00643f4a2477c93378705191f8a28c47619;hp=0d368b8938b0ca1399840fc153c163237cc8f51b;hb=7d31791c5b913df3d2c330b51cf829dacda111ab;hpb=4ecaae94054c4eb919ddbd45904d834383a09558 diff --git a/lib/tools.in b/lib/tools.in index 0d368b8..2715a00 100644 --- a/lib/tools.in +++ b/lib/tools.in @@ -1,5 +1,6 @@ #!@BASH@ # -*- mode: sh; sh-basic-offset: 3; indent-tabs-mode: nil; -*- +# vim: set filetype=sh sw=3 sts=3 expandtab autoindent: # This file contains functions shared between ninjahelper and backupninja. @@ -26,11 +27,10 @@ function setsection() { } # -# sets a global var with name equal to $1 -# to the value of the configuration parameter $1 -# $2 is the default. -# -function getconf() { +# Retrieves the configuration variable named $1 from the current config +# 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` # if nothing is returned, set the default @@ -38,11 +38,21 @@ function getconf() { ret="$2" fi - # replace * with %, so that it is not globbed. - ret="${ret//\\*/__star__}" + echo "$ret" +} + + +# +# Retrieves the configuration variable named $1 from the current config +# file and section and assigns its value to the global variable with the +# same name. If it is empty or not found, $2 is used. +# +function getconf() { + ret=`printconf "$1" "$2"` - # 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 }