Use local variables in getconf & printconf.
[matthijs/upstream/backupninja.git] / lib / tools.in
index 90df264566d7ad2055af38883bdfde4371f5b0b5..9879e741039a5994bd544fd8e60896c9612d6cd5 100644 (file)
@@ -1,4 +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.
 
 # create a temporary file in a secure way.
 #
 function maketemp() {
-       if [ -x /bin/mktemp ]
-       then
-               local tempfile=`mktemp /tmp/$1.XXXXXXXX`
-       else
-               DATE=`date`
-               sectmp=`echo $DATE | /usr/bin/md5sum | cut -d- -f1`
-               local tempfile=/tmp/$1.$sectmp
-       fi
-       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
 }