kconfig: fix whitespace handling bug of savedefconfig

Commit 3ff291f371
(kconfig: convert Kconfig helper script into a shell script)
introduced another regression.

Shell usually handles whitespaces as separators,
so "make saveconfig" outputs

  # CONFIG_FOO is not set

into:

  #
  CONFIG_FOO
  is
  not
  set

Whitespaces should not be treated as separators here.

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Acked-by: Simon Glass <sjg@chromium.org>
master
Masahiro Yamada 10 years ago committed by Tom Rini
parent 93481b9f6b
commit 8dffe663a2
  1. 37
      scripts/multiconfig.sh

@ -170,7 +170,7 @@ do_savedefconfig () {
# backslashes as an escape character
while read -r line
do
output_lines="$output_lines $line"
output_lines="$output_lines%$line"
done < defconfig
for img in $subimages
@ -185,43 +185,64 @@ do_savedefconfig () {
tmp=
match=
# "# CONFIG_FOO is not set" should not be divided.
# Use "%" as a separator, instead of a whitespace.
# "%" is unlikely to appear in defconfig context.
save_IFS=$IFS
IFS=%
# coalesce common lines together
for i in $output_lines
do
case "$i" in
"[+A-Z]*:$line")
tmp="$tmp $unmatched"
tmp="$tmp%$unmatched"
i=$(echo "$i" | \
sed -e "s/^\([^:]\)*/\1$symbol/")
tmp="$tmp $i"
tmp="$tmp%$i"
match=1
;;
"$line")
tmp="$tmp $unmatched"
tmp="$tmp +$symbol:$i"
tmp="$tmp%$unmatched"
tmp="$tmp%+$symbol:$i"
match=1
;;
*)
tmp="$tmp $i"
tmp="$tmp%$i"
;;
esac
done
# Restore the default separator for the outer for loop.
IFS=$save_IFS
if [ "$match" ]; then
output_lines="$tmp"
unmatched=
else
unmatched="$unmatched $symbol:$line"
unmatched="$unmatched%$symbol:$line"
fi
done < defconfig
done
rm -f defconfig
touch defconfig
save_IFS=$IFS
IFS=%
for line in $output_lines
do
echo $line >> defconfig
case "$line" in
"")
# do not output blank lines
;;
*)
echo $line >> defconfig
;;
esac
done
IFS=$save_IFS
}
# Usage:

Loading…
Cancel
Save