#!/bin/ksh
#
# Component: sr
#
# Description:
#  Control script of component sr
#
# Last Updated     : $Author$
# Update Date Time : $Date$
# RCS File Name    : $RCSfile$
# RCS Revision     : $Revision$
# Locked by        : $Locker$
# Symbolic name    : $Name$
# State            : $State$

#--- INIT ------------------------------
#needs $HOME
. $HOME/etc/ctrl.main.shi

[ -f $HOME/etc/setenv.sh ] && . $HOME/etc/setenv.sh

#--- FUNC ------------------------------
do_shell_()
{
	cat <<-EndOfInlineData
		SR_HOME=$HOME/component/sr
		SR_VAR=\$VAR/sr
		SR_CODE_DIR=\$SR_VAR/codes
		SR_FORMAT_DIR=\$SR_VAR/format

	EndOfInlineData
} #do_shell_()


# Merges codetable files
#
# Will copy new fields from src file to dst file.
#
mergecodes_()
{
   FSRC="$1"
   FDST="$2"

	[ -z "$FSRC" -o -z "$FDST" ] && return 1
	[ ! -f "$FSRC" -o ! -f "$FDST" ] && return 1

	LSTSRC=$TMP/src.fields.$$
	LSTDST=$TMP/dst.fields.$$

	# collect field names in both src and dst files
	awk -vFS="=" '{print $1}' $FSRC | sort | sort -u > $LSTSRC
	awk -vFS="=" '{print $1}' $FDST | sort | sort -u > $LSTDST

	# create grep pattern for get new fields from src
	PGREP=`diff $LSTSRC $LSTDST | awk -vORS=" " '($1 == "<") {print "-e \"^" $2 "=\""}'`

	# add new fields from src to dst if any
	chmod +w $FDST
	[ -n "$PGREP" ] && eval grep $PGREP "$FSRC" >> "$FDST"
	chmod -w $FDST

	rm $LSTSRC $LSTDST
}


do_start_()
{
	# Creating data directories
	[ ! -d "$SR_VAR" ] && mkdir $SR_VAR
	[ ! -d "$SR_CODE_DIR" ] && mkdir $SR_CODE_DIR
	[ ! -d "$SR_FORMAT_DIR" ] && mkdir $SR_FORMAT_DIR

	if [ -d "$SR_HOME/codes" ] ; then
		CWD=`pwd`
		cd $SR_HOME/codes
		for codefile in `ls *.rec` ; do
			if [ ! -f "$SR_CODE_DIR/$codefile" ] ; then
				cp $codefile $SR_CODE_DIR/$codefile
			else
				mergecodes_ $codefile $SR_CODE_DIR/$codefile
			fi
		done
		cd $CWD
	fi

} #do_start_()


#
# List files/tables to be backed up grouped by categories
#
# output lines should be in '<category> <type> <names>' format
#
do_listbackup_()
{
	cat <<-EOFLISTBACKUP
		config.system FILE ${SR_VAR#$HOME/}
	EOFLISTBACKUP
}


#--- MAIN ------------------------------
check_action_ $1
if [ 0 = $? ]; then
	do_$1_ $2

else
	echo "--- Component sr [ctrl $$]: Bad command: $1" >&2
	exit 1

fi
