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"
}
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
exit 0
fi
@ -1256,30 +1271,36 @@ if [ ! -w "$1" ] ; then
exit 1
fi
echo -n " + $1: set $2 to $3 ... "
MYNAME=`basename $0`
WD=`/bin/pwd`
DATE=`date`
test -e "$1".$MYNAME && rm "$1".$MYNAME
grep "$2" "$1" >/dev/null 2>&1 || cat << EOF >> "$1"
FILE=$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
# called from within $WD
#
$2="dummy"
$KEY="dummy"
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
# but delete all quotes before so we don't end up
# with a ""quotation"".
VAL=\"`echo $3 | tr -d "\""`\"
VAL=\"`echo $VALUES | tr -d "\""`\"
else
VAL="$3"
VAL="$VALUES"
fi
echo -n " + $FILE: set $KEY to $VAL ... "
awk '
BEGIN {
FS = "="
@ -1304,14 +1325,14 @@ END {
print "changed " (occ ? occ " occurence: " changed : "nothing.");
exit occ
} ' \
key="$2" val="$VAL" outfile="$1.$MYNAME" "$1"
key="$KEY" val="$VAL" outfile="$FILE.$MYNAME" "$FILE"
if [ ! $? = 0 ] ; then
mv "$1".$MYNAME "$1"
mv "$FILE".$MYNAME "$FILE"
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
rm "$1".$MYNAME
rm "$FILE".$MYNAME
fi
} # end function jcs_setval
@ -1751,7 +1772,8 @@ usage: jcs newdir [-h] [-t template_directory] target_directory
--<<<-- usage newdir --
-->>>-- 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 setvals --