setval: Fix multi-word quotation marks and added -n switch

This commit is contained in:
Jan Lindemann 2003-01-20 14:20:35 +00:00 committed by Jan Lindemann
commit 8a2f1d5f8d

View file

@ -1243,7 +1243,22 @@ usage() {
txtout "usage setval" txtout "usage setval"
} }
if [ $# != 3 ] ; then NO_QUOTES=0
set -- `getopt hn $*`
while [ $1 != -- ] ; do
case $1 in
-n)
NO_QUOTES=1;;
-h)
usage; exit 0;;
*)
usage; exit 1;;
esac
shift
done
shift
if [ $# -lt 3 ] ; then
usage usage
exit 0 exit 0
fi fi
@ -1256,30 +1271,36 @@ if [ ! -w "$1" ] ; then
exit 1 exit 1
fi fi
echo -n " + $1: set $2 to $3 ... "
MYNAME=`basename $0` MYNAME=`basename $0`
WD=`/bin/pwd` WD=`/bin/pwd`
DATE=`date` DATE=`date`
test -e "$1".$MYNAME && rm "$1".$MYNAME FILE=$1
grep "$2" "$1" >/dev/null 2>&1 || cat << EOF >> "$1" KEY=$2
shift 2
VALUES="$*"
test -e "$FILE".$MYNAME && rm "$FILE".$MYNAME
grep "$KEY" "$FILE" >/dev/null 2>&1 || cat << EOF >> "$FILE"
# #
# added by $MYNAME on $DATE # added by $MYNAME on $DATE
# called from within $WD # called from within $WD
# #
$2="dummy" $KEY="dummy"
EOF EOF
if echo "$3" grep -e " \|\t" >/dev/null 2>&1 ; then if [ -n "` echo "$VALUES" | grep -e ' \|\t'`" -a "$NO_QUOTES" != 1 ] ; then
# put multi-word value in quotes # put multi-word value in quotes
# but delete all quotes before so we don't end up # but delete all quotes before so we don't end up
# with a ""quotation"". # with a ""quotation"".
VAL=\"`echo $3 | tr -d "\""`\" VAL=\"`echo $VALUES | tr -d "\""`\"
else else
VAL="$3" VAL="$VALUES"
fi fi
echo -n " + $FILE: set $KEY to $VAL ... "
awk ' awk '
BEGIN { BEGIN {
FS = "=" FS = "="
@ -1304,14 +1325,14 @@ END {
print "changed " (occ ? occ " occurence: " changed : "nothing."); print "changed " (occ ? occ " occurence: " changed : "nothing.");
exit occ exit occ
} ' \ } ' \
key="$2" val="$VAL" outfile="$1.$MYNAME" "$1" key="$KEY" val="$VAL" outfile="$FILE.$MYNAME" "$FILE"
if [ ! $? = 0 ] ; then if [ ! $? = 0 ] ; then
mv "$1".$MYNAME "$1" mv "$FILE".$MYNAME "$FILE"
mkdir -p $cfg_jcs_log_dir mkdir -p $cfg_jcs_log_dir
echo "$1" >> $cfg_jcs_log_dir/changed_files.log echo "$FILE" >> $cfg_jcs_log_dir/changed_files.log
else else
rm "$1".$MYNAME rm "$FILE".$MYNAME
fi fi
} # end function jcs_setval } # end function jcs_setval
@ -1751,7 +1772,8 @@ usage: jcs newdir [-h] [-t template_directory] target_directory
--<<<-- usage newdir -- --<<<-- usage newdir --
-->>>-- usage setval -- -->>>-- usage setval --
usage : jcs setval config-file key value usage : jcs setval [-n] config-file key value
options: -n: don't put quotation marks around a multiword value
--<<<-- usage setval -- --<<<-- usage setval --
-->>>-- usage setvals -- -->>>-- usage setvals --