From 8ffb131a88b15669f0c92cddf9a23db48f36d04f Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Mon, 16 Feb 2004 18:46:18 +0000 Subject: [PATCH] Clifford Wolf: fixed problems with ' in configure entries. Thanks to Dimitar Zhekov for pointing out the problem in the first place. git-svn-id: http://www.rocklinux.org/svn/rock-linux/trunk@2365 c5f82cb5-29bc-0310-9cd0-bff59a50e3bc --- scripts/Config | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/scripts/Config b/scripts/Config index 7f9562652..25b2fe04c 100755 --- a/scripts/Config +++ b/scripts/Config @@ -141,14 +141,16 @@ comment_id() { } const() { + local q="'" + local v="${2//$q/$q\\$q$q}" eval "$1=\"\$2\"" - echo "export $1='$2'" >> config/$config/config + echo "export $1='$v'" >> config/$config/config } # Usage: set_data NAME DEFAULT # set_data() { - set_name="ROCKCFGSET_${1#ROCKCFG_}" + local q="'" set_name="ROCKCFGSET_${1#ROCKCFG_}" if eval "[ \"\$$set_name\" ]" ; then eval "data=\"\$$set_name\"" @@ -166,7 +168,7 @@ set_data() { fi item="$1" - echo "export $1='$data'" >> config/$config/config + echo "export $1='${data//$q/$q\\$q$q}'" >> config/$config/config } choice() { @@ -223,21 +225,25 @@ choice_action() { } text() { + local q="'" set_data "$2" "$3" if [ "$menumode" -eq 1 -a $menu_current = $menu_this ] ; then - echo -e "$2\ttext_action '$1' '$2' '$data'" >> config.data + echo -e "$2\ttext_action '$1' '$2'" \ + "'${data//$q/$q\\$q$q}'" >> config.data fi if [ "$menumode" -gt 0 -a $menu_current = $menu_this ] ; then - xdata="$(echo $data | cut -c1-20)" + xdata="$( printf "%-${tabspace}s" \ + "$(echo $data | cut -c1-20)")" if [ "$menumode" -eq 1 ] ; then xdata="($xdata)" else xdata="=$xdata=" ; fi - printf "'$2' '$spacer%-${tabspace}s $1'\n" \ - "$xdata" >> config.dialog + printf "'$2' '$spacer%s $1'\n" \ + "${xdata//$q/$q\\$q$q}" >> config.dialog - # If you do not know what mighty esden is doin here see comment() + # If you do not know what mighty esden + # is doin here see comment() if [ "$4" != "" ] ; then set_help "$2" "$4" fi @@ -248,7 +254,7 @@ text_action() { ./src/rockdialog.bin --title 'Build Config' \ --backtitle "$configtitle" \ --inputbox "$1" 9 $(( $columns - 5 )) "$3" 2> config.out - [ "$?" -eq 0 -o "$?" -eq 1 ] && eval "$2='`cat config.out`'" + [ "$?" -eq 0 -o "$?" -eq 1 ] && eval "$2=\"\$(cat config.out)\"" } bool() { @@ -282,13 +288,14 @@ bool_action() { editfile() { if [ $ROCKCFG_EXPERT -eq 1 -o $expert -eq 0 ] ; then - local x="$spacer" + local x="$spacer" q="'" comment ",----< $3 >----." block_begin 0 ; spacer="${spacer%??}| " touch "$2" line_nr=1 while read line ; do + line="${line//$q/$q\\$q$q}" if [ $menu_current = $menu_this ] ; then printf "$1:${editfilenr} '$spacer%-${tabspace}s %s'\n" \ `printf "%03d:" $line_nr` "$line" >> config.dialog