Merge "Fix ini functions to handle spaces in section names"

This commit is contained in:
Jenkins 2012-11-28 16:54:17 +00:00 committed by Gerrit Code Review
commit 518f1f5c6f
2 changed files with 17 additions and 7 deletions

View File

@ -415,7 +415,7 @@ function inicomment() {
local file=$1
local section=$2
local option=$3
sed -i -e "/^\[$section\]/,/^\[.*\]/ s|^\($option[ \t]*=.*$\)|#\1|" $file
sed -ie "/^\[ *$section *\]/,/^\[.*\]/ s|^\($option[ \t]*=.*$\)|#\1|" $file
}
# Uncomment an option in an INI file
@ -424,7 +424,7 @@ function iniuncomment() {
local file=$1
local section=$2
local option=$3
sed -i -e "/^\[$section\]/,/^\[.*\]/ s|[^ \t]*#[ \t]*\($option[ \t]*=.*$\)|\1|" $file
sed -ie "/^\[ *$section *\]/,/^\[.*\]/ s|[^ \t]*#[ \t]*\($option[ \t]*=.*$\)|\1|" $file
}
@ -435,7 +435,7 @@ function iniget() {
local section=$2
local option=$3
local line
line=$(sed -ne "/^\[$section\]/,/^\[.*\]/ { /^$option[ \t]*=/ p; }" $file)
line=$(sed -ne "/^\[ *$section *\]/,/^\[.*\]/ { /^$option[ \t]*=/ p; }" $file)
echo ${line#*=}
}
@ -447,18 +447,18 @@ function iniset() {
local section=$2
local option=$3
local value=$4
if ! grep -q "^\[$section\]" $file; then
if ! grep -q "^\[ *$section *\]" $file; then
# Add section at the end
echo -e "\n[$section]" >>$file
fi
if [[ -z "$(iniget $file $section $option)" ]]; then
# Add it
sed -i -e "/^\[$section\]/ a\\
sed -ie "/^\[ *$section *\]/ a\\
$option = $value
" $file
else
# Replace it
sed -i -e "/^\[$section\]/,/^\[.*\]/ s|^\($option[ \t]*=[ \t]*\).*$|\1$value|" $file
sed -ie "/^\[ *$section *\]/,/^\[.*\]/ s|^\($option[ \t]*=[ \t]*\).*$|\1$value|" $file
fi
}

View File

@ -54,6 +54,9 @@ handlers = aa, bb
[bbb]
handlers=ee,ff
[ ccc ]
spaces = yes
EOF
# Test with spaces
@ -74,6 +77,14 @@ else
echo "iniget failed: $VAL"
fi
# Test with spaces in section header
VAL=$(iniget test.ini ccc spaces)
if [[ "$VAL" == "yes" ]]; then
echo "OK: $VAL"
else
echo "iniget failed: $VAL"
fi
# Test without spaces, end of file
@ -112,7 +123,6 @@ else
echo "iniget failed: $VAL"
fi
# Test option not exist
VAL=$(iniget test.ini aaa debug)