+# Argument(s) or stdin to lowercase stdout
+function lower () {
+ if [ ${#*} -ge 1 ] ; then
+ tr A-Z a-z <<<$*
+ else
+ tr A-Z a-z
+ fi
+}
+
+# Argument(s) or stdin to uppercase stdout
+function upper () {
+ if [ ${#*} -ge 1 ] ; then
+ tr a-z A-Z <<<$*
+ else
+ tr a-z A-Z
+ fi
+}
+
+# Regenerate configuration files
+function plc_reload () {
+ force=$1
+
+ # Regenerate the main configuration file from default values
+ # overlaid with site-specific and current values.
+ # Thierry -- 2007-07-05 : values in plc_config.xml are *not* taken into account here
+ files=(
+ /etc/planetlab/default_config.xml
+ /etc/planetlab/configs/site.xml
+ )
+
+ for file in "${files[@]}" ; do
+ if [ -n "$force" -o $file -nt /etc/planetlab/plc_config.xml ] ; then
+ tmp=$(mktemp /tmp/plc_config.xml.XXXXXX)
+ plc-config --xml "${files[@]}" >$tmp
+ if [ $? -eq 0 ] ; then
+ mv $tmp /etc/planetlab/plc_config.xml
+ chmod 444 /etc/planetlab/plc_config.xml
+ else
+ echo "PLC: Warning: Invalid configuration file(s) detected"
+ rm -f $tmp
+ fi
+ break
+ fi
+ done
+
+ # Convert configuration to various formats
+ if [ -n "$force" -o /etc/planetlab/plc_config.xml -nt /etc/planetlab/plc_config ] ; then
+ plc-config --shell >/etc/planetlab/plc_config
+ fi
+ if [ -n "$force" -o /etc/planetlab/plc_config.xml -nt /etc/planetlab/plc_config.py ] ; then
+ plc-config --python >/etc/planetlab/plc_config.py
+ fi
+ if [ -n "$force" -o /etc/planetlab/plc_config.xml -nt /etc/planetlab/php/plc_config.php ] ; then
+ mkdir -p /etc/planetlab/php
+ plc-config --php >/etc/planetlab/php/plc_config.php
+ fi
+}
+