Merge "support proposed/* branches"
diff --git a/functions-common b/functions-common
index 333f31d..9f4acfe 100644
--- a/functions-common
+++ b/functions-common
@@ -119,33 +119,6 @@
[ -n "$line" ]
}
-# Add another config line for a multi-line option.
-# It's normally called after iniset of the same option and assumes
-# that the section already exists.
-#
-# Note that iniset_multiline requires all the 'lines' to be supplied
-# in the argument list. Doing that will cause incorrect configuration
-# if spaces are used in the config values.
-#
-# iniadd_literal config-file section option value
-function iniadd_literal {
- local xtrace=$(set +o | grep xtrace)
- set +o xtrace
- local file=$1
- local section=$2
- local option=$3
- local value=$4
-
- [[ -z $section || -z $option ]] && return
-
- # Add it
- sed -i -e "/^\[$section\]/ a\\
-$option = $value
-" "$file"
-
- $xtrace
-}
-
# Set an option in an INI file
# iniset config-file section option value
function iniset {
diff --git a/lib/config b/lib/config
index 6e8219c..b44e79a 100644
--- a/lib/config
+++ b/lib/config
@@ -86,11 +86,7 @@
# having to do nasty quoting games
get_meta_section $file $matchgroup $configfile | \
$CONFIG_AWK_CMD -v configfile=$configfile '
- BEGIN {
- section = ""
- last_section = ""
- section_count = 0
- }
+ BEGIN { section = "" }
/^\[.+\]/ {
gsub("[][]", "", $1);
section=$1
@@ -110,48 +106,10 @@
# need to strip leading & trailing whitespace from value
sub(/^[ \t]*/, "", value)
sub(/[ \t]*$/, "", value)
-
- # cfg_attr_count: number of config lines per [section, attr]
- # cfg_attr: two dimensional array to keep all the config lines per [section, attr]
- # cfg_section: keep the section names in the same order as they appear in local.conf
- # cfg_sec_attr_name: keep the attr names in the same order as they appear in local.conf
- if (! (section, attr) in cfg_attr_count) {
- if (section != last_section) {
- cfg_section[section_count++] = section
- last_section = section
- }
- attr_count = cfg_sec_attr_count[section_count - 1]++
- cfg_sec_attr_name[section_count - 1][attr_count] = attr
-
- cfg_attr[section, attr][0] = value
- cfg_attr_count[section, attr] = 1
- } else {
- lno = cfg_attr_count[section, attr]++
- cfg_attr[section, attr][lno] = value
- }
- }
- END {
- # Process each section in order
- for (sno = 0; sno < section_count; sno++) {
- section = cfg_section[sno]
- # The ini routines simply append a config item immediately
- # after the section header. To keep the same order as defined
- # in local.conf, invoke the ini routines in the reverse order
- for (attr_no = cfg_sec_attr_count[sno] - 1; attr_no >=0; attr_no--) {
- attr = cfg_sec_attr_name[sno][attr_no]
- if (cfg_attr_count[section, attr] == 1)
- print "iniset " configfile " " section " " attr " \x27" cfg_attr[section, attr][0] "\x27"
- else {
- # For multiline, invoke the ini routines in the reverse order
- count = cfg_attr_count[section, attr]
- print "iniset " configfile " " section " " attr " \x27" cfg_attr[section, attr][count - 1] "\x27"
- for (l = count -2; l >= 0; l--)
- print "iniadd_literal " configfile " " section " " attr " \x27" cfg_attr[section, attr][l] "\x27"
- }
- }
- }
+ print "iniset " configfile " " section " " attr " \x27" value "\x27"
}
' | while read a; do eval "$a"; done
+
}
diff --git a/tests/test_config.sh b/tests/test_config.sh
index 696e57f..50e8d7b 100755
--- a/tests/test_config.sh
+++ b/tests/test_config.sh
@@ -103,28 +103,11 @@
[[test6|test-strip.conf]]
[DEFAULT]
# next line has trailing space
-attr = strip_trailing_space
+attr = strip_trailing_space
-[[test-multi-sections|test-multi-sections.conf]]
-[sec-1]
-cfg_item1 = abcd
-cfg_item2 = efgh
-
-[sec-2]
-cfg_item1 = abcd
-cfg_item3 = /1/2/3/4:5
-cfg_item4 = end
-
-[sec-3]
-cfg_item5 = 5555
-cfg_item6 = 6666
-cfg_item5 = 5555another
-
-[[test-multiline|test-multiline.conf]]
-[multi]
-cfg_item1 = "ab":"cd", "ef": "gh"
-cfg_item1 = abcd
-cfg_item2 = efgh
+[[test7|test-colon.conf]]
+[DEFAULT]
+servers=10.11.12.13:80
EOF
echo -n "get_meta_section_files: test0 doesn't exist: "
@@ -206,39 +189,8 @@
# iniset adds a blank line if it creates the file...
EXPECT_VAL="
[ddd]
-type = new
-additional = true"
-check_result "$VAL" "$EXPECT_VAL"
-
-echo -n "merge_config_file test-multi-sections: "
-rm -f test-multi-sections.conf
-merge_config_file test.conf test-multi-sections test-multi-sections.conf
-VAL=$(cat test-multi-sections.conf)
-EXPECT_VAL='
-[sec-1]
-cfg_item1 = abcd
-cfg_item2 = efgh
-
-[sec-2]
-cfg_item1 = abcd
-cfg_item3 = /1/2/3/4:5
-cfg_item4 = end
-
-[sec-3]
-cfg_item5 = 5555
-cfg_item5 = 5555another
-cfg_item6 = 6666'
-check_result "$VAL" "$EXPECT_VAL"
-
-echo -n "merge_config_file test-multiline: "
-rm -f test-multiline.conf
-merge_config_file test.conf test-multiline test-multiline.conf
-VAL=$(cat test-multiline.conf)
-EXPECT_VAL='
-[multi]
-cfg_item1 = "ab":"cd", "ef": "gh"
-cfg_item1 = abcd
-cfg_item2 = efgh'
+additional = true
+type = new"
check_result "$VAL" "$EXPECT_VAL"
echo -n "merge_config_group test2: "
@@ -248,8 +200,8 @@
# iniset adds a blank line if it creates the file...
EXPECT_VAL="
[ddd]
-type = new
-additional = true"
+additional = true
+type = new"
check_result "$VAL" "$EXPECT_VAL"
echo -n "merge_config_group test2 no conf file: "
@@ -319,6 +271,14 @@
attr = strip_trailing_space"
check_result "$VAL" "$EXPECT_VAL"
-rm -f test.conf test1c.conf test2a.conf test-quote.conf test-space.conf test-equals.conf test-strip.conf
-rm -f test-multiline.conf test-multi-sections.conf
+echo -n "merge_config_file test7 colon in value: "
+rm -f test-colon.conf
+merge_config_file test.conf test7 test-colon.conf
+VAL=$(cat test-colon.conf)
+EXPECT_VAL="
+[DEFAULT]
+servers = 10.11.12.13:80"
+check_result "$VAL" "$EXPECT_VAL"
+
+rm -f test.conf test1c.conf test2a.conf test-quote.conf test-space.conf test-equals.conf test-strip.conf test-colon.conf
rm -rf test-etc