#!@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.
# create a temporary file in a secure way.
#
function maketemp() {
- local tempfile=`mktemp /tmp/$1.XXXXXXXX`
- echo $tempfile
+ local tempfile=`mktemp /tmp/$1.XXXXXXXX`
+ echo $tempfile
}
#####################################################
## CONFIG-FILE RELATED FUNCTIONS
function setfile() {
- CURRENT_CONF_FILE=$1
+ CURRENT_CONF_FILE=$1
}
function setsection() {
- CURRENT_SECTION=$1
+ CURRENT_SECTION=$1
}
#
-# sets a global var with name equal to $1
-# to the value of the configuration parameter $1
-# $2 is the default.
-#
+# 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() {
+ 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"
+ fi
+
+ 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() {
- CURRENT_PARAM=$1
- 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"
- fi
-
- # 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'
+ local ret=`printconf "$1" "$2"`
+
+ # 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
}