#
# this script is normally run by `setup' at /etc/install time to
# link things from /usr/tcprt/revision to the appropriate locations.
#
# this script may also be used to backdate to a different revision
# by saying:
#	cd /usr/tcprt/old_rev; find -type f >packlist
#	setup_links /usr/tcprt/old_rev; /etc/install_tcp
# note: if file locations change, this script does not track that.
#
function lnhs {
	ln -vf $1 $2
	if test $? -eq 1; then
		ln -svf $1 $2
	fi
}

if test -z "$1"; then
	echo $0 tcprt_root
	exit 1
fi

if test "$PWD" = "/"; then
        ROOT=
else
        ROOT=$PWD
fi

list=$ROOT/tmp/setup_links.$$.1
tmp=$ROOT/tmp/setup_links.$$.2
current=$ROOT/usr/tcprt/current
current_ln=/usr/tcprt/current

if test -f $ROOT/etc/namedb; then
	mkdir -p $ROOT/usr/tcprt/old/etc
	mv -v $ROOT/etc/namedb $ROOT/usr/tcprt/old/etc/ >> $3 2>&1
fi

mkdir -p $ROOT/etc/config/socket $ROOT/etc/namedb $ROOT/etc/ppp $ROOT/etc/readme
mkdir -p $ROOT/usr/ucb $ROOT/usr/lib $ROOT/usr/spool/rwho $ROOT/usr/tmp

ln -fvs $1 $current >> $3 2>&1
awk '{print $3}' $current/packlist >$list
if (test -L $ROOT/etc/mib.txt); then
	rm -f $ROOT/etc/mib.txt
fi
# only copy the following files if they don't already exist
fgrep etc/config/socket $list >$tmp
for f in $(<$tmp); do
	f=${f#??} # strip ./
	if test ! -f $current/$f; then
		continue # don't do anything but regular files
	fi
	#
	# link is created/changed only if the file is not older
	#
	if [ ! -r $ROOT/$f -o  ! $ROOT/$f -nt $current/$f ] ; then
		ln -fvs $current_ln/$f $ROOT/$f >> $3 2>&1
	else
        	echo "Originl $ROOT/$f is newer than $current/$f. Link is not changed." >> $3 2>&1
	fi
	case $f in
		*root.cache|*localhost.rev)
			cp -fXv $current/$f $ROOT/etc/namedb >> $3 2>&1
			;;
		*)
			cp -fXv $current/$f $ROOT/etc >> $3 2>&1
			;;
	esac
done

ln -svf $current/etc/install_tcp $ROOT/etc/install_tcp >> $3 2>&1
ln -svf $current_ln/etc/nslookup.help $ROOT/etc/nslookup.help >> $3 2>&1
#ln -svf $current_ln/bin/Net.atm200 $ROOT/bin/Net.atm200 >> $3 2>&1

for d in etc/readme usr/bin usr/ucb usr/lib; do
	fgrep $d $list >$tmp
	for f in $(<$tmp); do
		f=${f#??} # strip ./
		#
		# link is created/changed only if the file is not older
		#
		if [ ! -r $ROOT/$f -o ! $ROOT/$f -nt $current/$f ] ; then
			ln -fvs $current_ln/$f $ROOT/$f >> $3 2>&1
		else
        		echo "Originl $ROOT/$f is newer than $current/$f. Link is not changed." >> $3 2>&1
		fi
	done
done

ln -fvs /usr/ucb/sendmail $ROOT/usr/bin/sendmail >> $3 2>&1
ln -fvs /usr/ucb/sendmail $ROOT/usr/ucb/mailq >> $3 2>&1
ln -fvs /usr/ucb/sendmail $ROOT/usr/ucb/newaliases >> $3 2>&1
ln -fvs /usr/ucb/sendmail $ROOT/usr/ucb/smtpd >> $3 2>&1
#ln -fvs /usr/ucb/rmail.sendmail $ROOT/usr/bin/rmail >> $3 2>&1
ln -fvs /usr/ucb/socket_so.100 $ROOT/usr/ucb/socket_so >> $3 2>&1
ln -fvs /usr/ucb/socket_so $ROOT/bin/socket_so >> $3 2>&1
ln -fvs /usr/ucb/rpc_so.100 $ROOT/usr/ucb/rpc_so >> $3 2>&1
ln -fvs /usr/ucb/rpc_so $ROOT/bin/rpc_so >> $3 2>&1
ln -fvs /usr/ucb/snmp_so.100 $ROOT/usr/ucb/snmp_so >> $3 2>&1
ln -fvs /usr/ucb/snmp_so $ROOT/bin/snmp_so >> $3 2>&1

if test "$PWD" != "/"; then
	ln -fvs $2 $current
	echo
fi

rm -f $list
rm -f $tmp
