Handle delimiter usage correctly.

This commit is contained in:
Darren 'Tadgy' Austin 2019-07-21 20:00:11 +01:00
commit 075d9885ee

View file

@ -9,8 +9,6 @@
parser_getopts() { parser_getopts() {
local DELIM_SET=0
while [[ ! -z "$1" ]]; do while [[ ! -z "$1" ]]; do
case "$1" in case "$1" in
-b|-bound|--bound) -b|-bound|--bound)
@ -267,7 +265,7 @@ parse_ini() {
# Variables. # Variables.
local DELIM IGNORE_SECTION=0 INIFD KEY LINE LINENUMBER=0 PREFIX SECTIONS_SEEN=() SHOWN_SEC_HEAD=0 TEMP VALUE local DELIM IGNORE_SECTION=0 INIFD KEY LINE LINENUMBER=0 PREFIX SECTIONS_SEEN=() SHOWN_SEC_HEAD=0 TEMP VALUE
declare INIFILE declare DELIM_SET=0 INIFILE
# Parse options. # Parse options.
parser_getopts "$@" parser_getopts "$@"
@ -488,11 +486,22 @@ parse_ini() {
SHOWN_SEC_HEAD=1 SHOWN_SEC_HEAD=1
fi fi
# If prefix is empty, but delim has been specifically set, use it.
if [[ -z "$PREFIX" ]]; then
if ((DELIM_SET == 1)); then
TEMP="$DELIM"
else
TEMP=""
fi
else
TEMP="$DELIM"
fi
# Output the associative array element definition. # Output the associative array element definition.
if ((DUPLICATES_MERGE == 0)); then if ((DUPLICATES_MERGE == 0)); then
((CHECK_ONLY == 0)) && printf "%s%s%s[\"%s\"]='%s'\\n" "$PREFIX" "${PREFIX:+$DELIM}" "$CURRENT_SECTION" "$KEY" "${VALUE//\'/\'\\\'\'}" ((CHECK_ONLY == 0)) && printf "%s%s%s[\"%s\"]='%s'\\n" "$PREFIX" "$TEMP" "$CURRENT_SECTION" "$KEY" "${VALUE//\'/\'\\\'\'}"
else else
((CHECK_ONLY == 0)) && printf "%s%s%s[\"%s\"]+='%s'\\n" "$PREFIX" "${PREFIX:+$DELIM}" "$CURRENT_SECTION" "$KEY" "${VALUE//\'/\'\\\'\'}" ((CHECK_ONLY == 0)) && printf "%s%s%s[\"%s\"]+='%s'\\n" "$PREFIX" "$TEMP" "$CURRENT_SECTION" "$KEY" "${VALUE//\'/\'\\\'\'}"
fi fi
else else
((CHECK_ONLY == 1)) && echo "${0##*/}: line $LINENUMBER: skipping line" >&2 ((CHECK_ONLY == 1)) && echo "${0##*/}: line $LINENUMBER: skipping line" >&2