Handle delimiter usage correctly.
This commit is contained in:
parent
a0a1fba166
commit
075d9885ee
1 changed files with 14 additions and 5 deletions
19
parse_ini
19
parse_ini
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue