63 lines
1.3 KiB
Bash
63 lines
1.3 KiB
Bash
die() { echo >&2 $"FATAL: $@" ; exit 1 ; }
|
|
error() { echo >&2 $"ERROR: $@" ; }
|
|
error_q() { echo >&2 $" $@" ; }
|
|
warn() { echo >&2 $"WARNING: $@" ; }
|
|
warn_q() { echo >&2 $" $@" ; }
|
|
info() { echo >&2 $" * $@" ; }
|
|
info_q() { echo >&2 $" $@" ; }
|
|
debug() { test "$option_debug" != "1" || echo >&2 $"DEBUG: $@"; }
|
|
|
|
|
|
set_var()
|
|
{
|
|
eval "$1=\"$2\""
|
|
}
|
|
|
|
|
|
root_prereq()
|
|
{
|
|
test -z "$PGSETUP_TEST" || return 0
|
|
test "$(id -u)" -eq 0 || die "$0 requires root access for this action"
|
|
}
|
|
|
|
|
|
read_config_file()
|
|
{
|
|
local key="" val=""
|
|
|
|
test -r "$1" || die "can't read file '$1'"
|
|
|
|
for i in $2; do
|
|
eval "unset __pg_conf_$i"
|
|
done
|
|
|
|
# No easy (and secure) way to read configuration files from bash script,
|
|
# sorry.
|
|
while read key val; do
|
|
[[ $key =~ ^[a-zA-Z_][a-zA-Z0-9_]*$ ]] || return 1
|
|
|
|
case " $2 " in
|
|
*" $key "*)
|
|
;;
|
|
*)
|
|
warn "config file '$1': unknown key '$key'"
|
|
continue
|
|
;;
|
|
esac
|
|
|
|
# Strip double quotes
|
|
case "$val" in
|
|
\"*\")
|
|
val=${val##\"}
|
|
val=${val%%\"}
|
|
;;
|
|
esac
|
|
|
|
# Make it reasonably safe. Keep dolar-sign escaped.
|
|
eval "__pg_conf_$key=\$val"
|
|
|
|
done < <(grep -v -e "^$" -e "^#" < "$1")
|
|
}
|
|
|
|
|