From 8a2f1d5f8d32b2196352f2c410c71e68e48cdc8a Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Mon, 20 Jan 2003 14:20:35 +0000 Subject: [PATCH] setval: Fix multi-word quotation marks and added -n switch --- scripts/jcs | 50 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/scripts/jcs b/scripts/jcs index d9b148e2..b23856f0 100644 --- a/scripts/jcs +++ b/scripts/jcs @@ -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 --