4.4BSD/usr/src/contrib/news/inn/site/do-subst.sh

#! /bin/sh
##  $Revision: 1.3 $
##  Run subst over a list of files.  Get files in and out of source control
##  if present.

##  Assume no source control.
MODE=none
PLAIN="$*"
CONTROLLED=
BASEDIRNAME=`basename \`pwd\``

if [ -d RCS -a ! -d SCCS ] ; then
    # Find out which files are under RCS control.
    MODE=rcs
    PLAIN=
    for I
    do
	if [ -f RCS/${I},v ] ; then
	    CONTROLLED="${CONTROLLED} ${I}"
	else
	    PLAIN="${PLAIN} ${I}"
	fi
    done
    test -n "${CONTROLLED}" && co -l -q ${CONTROLLED}
fi
if [ -d SCCS -a ! -d RCS ] ; then
    # Find out which files are under SCCS control.
    MODE=sccs
    PLAIN=
    for I
    do
	if [ -f SCCS/s.${I} ] ; then
	    CONTROLLED="${CONTROLLED} ${I}"
	else
	    PLAIN="${PLAIN} ${I}"
	fi
    done
    test -n "${CONTROLLED}" && sccs get -e ${CONTROLLED}
fi

##  Make an unmodified copy of all files.
for I in ${CONTROLLED} ${PLAIN}; do
    rm -f bak.${I}
    cp ${I} bak.${I}
done

##  Make sure we can write all non-controlled files.
test ! -z "${PLAIN}" && chmod u+w,g+w ${PLAIN}

##  Make the list of files, run config over it.
LISTOFFILES=../${BASEDIRNAME}/files.$$
for I in ${PLAIN} ${CONTROLLED} ; do
    echo ../${BASEDIRNAME}/${I}
done >${LISTOFFILES}
( cd ../config; make quiet FILE=${LISTOFFILES} )
rm -f ${LISTOFFILES}

# check which files we really changed
for I in ${CONTROLLED} ${PLAIN} ; do
    if cmp -s ${I} bak.${I}; then
	##  No change was made, restore things.
	case ${MODE} in
	sccs)
	    test -f SCCS/s.${I} && sccs unedit ${I}
	    ;;
	rcs)
	    test -f $RCS/${I},v && rcs -q -u ${I} && ci -u -q -f ${I}
	    ;;
	esac
    else
	##  Check files back into source control, if we have to.
	case ${MODE} in
	rcs)
	    echo 'Ran subst from Makefile' | ci -u -q -f ${I}
	    ;;
	sccs)
	    echo 'Ran subst from Makefile' | sccs delget -s ${I}
	    ;;
	esac
    fi
    rm -f bak.${I}
done

exit 0