freebsd-ports/net/cvsup-mirror/files/update.sh
John Polstra d173bd5e46 When sourcing "config.sh" in shell scripts, specify it as "./config.sh"
to prevent the shell from searching the PATH for the file.

Submitted by:	David Quattlebaum <sasdrq@unx.sas.com>
1998-02-12 01:14:02 +00:00

68 lines
1.6 KiB
Bash

#! /bin/sh
if ! export PREFIX=$(expr $0 : "\(/.*\)/etc/cvsup/update\.sh\$"); then
echo "$0: Cannot determine the PREFIX" >&2
exit 1
fi
export PATH=/bin:/usr/bin:${PREFIX}/bin
lock=/var/spool/lock/cvsup.lock
log=/var/log/cvsup.log
# Rotate the log files
umask 22
test -f ${log}.7 && mv -f ${log}.7 ${log}.8
test -f ${log}.6 && mv -f ${log}.6 ${log}.7
test -f ${log}.5 && mv -f ${log}.5 ${log}.6
test -f ${log}.4 && mv -f ${log}.4 ${log}.5
test -f ${log}.3 && mv -f ${log}.3 ${log}.4
test -f ${log}.2 && mv -f ${log}.2 ${log}.3
test -f ${log}.1 && mv -f ${log}.1 ${log}.2
test -f ${log}.0 && mv -f ${log}.0 ${log}.1
test -f ${log} && mv -f ${log} ${log}.0
exec >${log} 2>&1
# Do the update
date "+CVSup update begins at %Y/%m/%d %H:%M:%S"
# The rest of this is executed while holding the lock file, to ensure that
# multiple instances won't collide with one another.
lockf -t 0 ${lock} /bin/sh << 'E*O*F'
base=${PREFIX}/etc/cvsup
cd ${base} || exit
. ./config.sh || exit
colldir=sup.client
startup=${PREFIX}/etc/rc.d
umask 2
if [ ${host_crypto} = ${host} ]; then
echo "Updating from ${host}"
cvsup -1gL 1 -c ${colldir} -h ${host} supfile
else
if [ -d prefixes/FreeBSD-crypto.cvs ]; then
echo "Updating from ${host_crypto}"
cvsup -1gL 1 -c ${colldir} -h ${host_crypto} supfile.crypto
fi
echo "Updating from ${host}"
cvsup -1gL 1 -c ${colldir} -h ${host} supfile.non-crypto
fi
if [ -f .start_server ]; then
if [ -x ${startup}/cvsupd.sh ]; then
echo -n "Starting the server:"
/bin/sh ${startup}/cvsupd.sh
echo "."
fi
rm -f .start_server
fi
E*O*F
date "+CVSup update ends at %Y/%m/%d %H:%M:%S"