/usr/share/arc/config_parser.sh is in nordugrid-arc-arex 5.4.2-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | ##############################################
# Configuration parser module.
# Requires a POSIX shell and perl
##############################################
#
# Synopsis:
#
# . config_parser.sh
#
# config_parse_file /etc/arc/arex.xml || exit 1
# config_import_section common
# config_import_section grid-manager
# config_import_section infosys
#
# set | grep CONFIG_
#
# config_match_section queue/short || echo No such queue
#
# port=$(config_print_option gridftpd port)
#
# for name in config_subsections queue; do
# echo Found section: queue/$name
# fi
#
##############################################
#
# Parse the config file given as an argument
#
config_parse_file() {
arex_conf=$1
if [ -z "$arex_conf" ]; then
echo 'config_parser: No config file given!' 1>&2
return 1
elif [ ! -r "$arex_conf" ]; then
echo "config_parser: Cannot read config file: $arex_conf" 1>&2
return 1
fi
if [ -z "$pkgdatadir" ]; then echo "pkgdatadir must be set" 1>&2; return 1; fi
config=`/usr/bin/perl -I$pkgdatadir -MConfigCentral -we 'ConfigCentral::printLRMSConfigScript($ARGV[0])' "$arex_conf"` || return $?
eval "$config" || return $?
unset config
return 0
}
#
# Imports a section of the config file into shell variables.
# Option names from will be prefixed with CONFIG_
#
config_import_section() {
block=$1
i=0
if [ -z "$_CONFIG_NUM_BLOCKS" ]; then return 1; fi
while [ $i -lt $_CONFIG_NUM_BLOCKS ]; do
i=$(($i+1))
eval name="\$_CONFIG_BLOCK${i}_NAME"
if [ "x$block" != "x$name" ]; then continue; fi
eval num="\$_CONFIG_BLOCK${i}_NUM"
if [ -z "$num" ]; then return 1; fi
j=0
while [ $j -lt $num ]; do
j=$(($j+1))
eval name="\$_CONFIG_BLOCK${i}_OPT${j}_NAME"
if [ -z "$name" ]; then return 1; fi
eval "CONFIG_$name=\$_CONFIG_BLOCK${i}_OPT${j}_VALUE"
done
return 0
done
return 1
}
config_print_option() {
block=$1
opt=$2
i=0
if [ -z "$_CONFIG_NUM_BLOCKS" ]; then return 1; fi
while [ $i -lt $_CONFIG_NUM_BLOCKS ]; do
i=$(($i+1))
eval name="\$_CONFIG_BLOCK${i}_NAME"
if [ "x$block" != "x$name" ]; then continue; fi
eval num="\$_CONFIG_BLOCK${i}_NUM"
if [ -z "$num" ]; then return 1; fi
j=0
val=
while [ $j -lt $num ]; do
j=$(($j+1))
eval name="\$_CONFIG_BLOCK${i}_OPT${j}_NAME"
if [ -z "$name" ]; then return 1; fi
if [ "x$name" = "x$opt" ]; then
eval "val=\$_CONFIG_BLOCK${i}_OPT${j}_VALUE"
fi
done
echo -n "$val"
[ -n "$val" ] && return 0
done
return 1
}
config_match_section() {
block=$1
i=0
if [ -z "$_CONFIG_NUM_BLOCKS" ]; then return 1; fi
while [ $i -lt $_CONFIG_NUM_BLOCKS ]; do
i=$(($i+1))
eval name="\$_CONFIG_BLOCK${i}_NAME"
if [ "x$block" = "x$name" ]; then return 0; fi
done
return 1
}
config_subsections() {
block=$1
i=0
if [ -z "$_CONFIG_NUM_BLOCKS" ]; then return 1; fi
{
while [ $i -lt $_CONFIG_NUM_BLOCKS ]; do
i=$(($i+1))
eval name="\$_CONFIG_BLOCK${i}_NAME"
tail=${name#$block/}
if [ "x$name" != "x$tail" ]; then echo ${tail%%/*}; fi
done
} | sort -u
}
config_hide_all() {
unset `set|cut -f1 -d=|grep '^CONFIG_[A-Za-z0-9_]*$'`
}
config_reset() {
config_hide_all
unset `set|cut -f1 -d=|grep '^_CONFIG_[A-Za-z0-9_]*$'`
}
config_destroy() {
config_reset
unset config_parse_file
unset config_import_section
unset config_match_section
unset config_subsections
unset config_hide_all
unset config_reset
unset config_destroy
}
|