ast_coredumper: Fix output directory and variable precedence
authorGeorge Joseph <gjoseph@digium.com>
Tue, 15 May 2018 13:45:20 +0000 (07:45 -0600)
committerGeorge Joseph <gjoseph@digium.com>
Thu, 24 May 2018 18:59:37 +0000 (12:59 -0600)
The OUTPUTDIR variable in ast_debug_tools.conf.sample is now set
to "/tmp" instead of "/some/directory".

Variables set on the command line or that are already in the
environment now take predecence over variables set in the config files.

ASTERISK-27846
Reported by: Ted G

Change-Id: Ie8baec52d531886bf5849ec1d59bb59dc87ad387

configs/samples/ast_debug_tools.conf.sample
contrib/scripts/ast_coredumper

index 1c4827f..0f90f85 100644 (file)
@@ -24,7 +24,7 @@ COREDUMPS=(/tmp/core[-._]asterisk!(*.txt) /tmp/core[-._]$(hostname)!(*.txt))
 # For output from existing core files, the default is the
 # directory that the core file is found in.  For core files
 # produced from a running process, the default is /tmp.
-OUTPUTDIR=/some/directory
+OUTPUTDIR=/tmp
 
 # Date command for the "running" coredump and tarballs.
 # DATEFORMAT will be executed to get the timestamp.
index 38d95cc..b2ab4ac 100755 (executable)
@@ -225,10 +225,28 @@ append_coredumps=false
 declare -a COREDUMPS
 declare -a ARGS_COREDUMPS
 
-# Read config files from least important to most important
-[ -f /etc/asterisk/ast_debug_tools.conf ] && source /etc/asterisk/ast_debug_tools.conf
-[ -f ~/ast_debug_tools.conf ] && source ~/ast_debug_tools.conf
-[ -f ./ast_debug_tools.conf ] && source ./ast_debug_tools.conf
+# readconf reads a bash-sourceable file and sets variables
+# that havn't already been set.  This allows variables set
+# on the command line or that are already in the environment
+# to take precedence over those read from the file.
+#
+# Setting the values can't be done in a subshell so you can't
+# just pipe the output of sed into the while.
+
+readconf() {
+       while read line ; do
+               declare -n v=${line%%=*}
+               [ -z "${v}" ] && eval $line || :
+       done <<EOF
+$( sed -r -e "/\s*#/d" -e "/^\s*$/d" $1 )
+EOF
+}
+
+# Read config files from most important to least important.
+# Variable set on the command line or environment always take precedence.
+[ -f ./ast_debug_tools.conf ] && readconf ./ast_debug_tools.conf
+[ -f ~/ast_debug_tools.conf ] && readconf ~/ast_debug_tools.conf
+[ -f /etc/asterisk/ast_debug_tools.conf ] && readconf /etc/asterisk/ast_debug_tools.conf
 
 # For *BSD, the preferred gdb may be in /usr/local/bin so we
 # need to search for one that supports python.