#!/bin/csh -f
# script to displace an existing file to file.nAth
# so that Layered Athena can put a new verion there
# Also works for directories.

if ($#argv == 0) goto USAGE

foreach file ($argv)

	## Determine if mode is move, copy or restore
	if ("x"$file == "x-move") then
		set backupmode=move
		continue;
	endif

	if ("x"$file == "x-copy") then
		set backupmode=copy
		continue;
	endif

	if ("x"$file == "x-restore") then
		set backupmode=restore
		continue;
	endif

	## Make sure some mode is set
	if (! $?backupmode) goto USAGE

	## Initialize auxiliary filenames
	set displacefile=$file.nAth
	set noexistfile=`dirname $file`/.NO.`basename $file`

	## Handle restore mode
	if ($backupmode == restore) then
		if (-e $displacefile) then
			# Restore a backup
			rm -rf $file
			mv $displacefile $file
		else
			# If file didn't exist before, remove it now.
			if (-e $noexistfile) rm -rf $file $noexistfile
		endif
		continue
	endif

	## Handle copy and move mode

	if (-e $displacefile) continue	# Don't displace twice

	if (-e $file) then
		# File exists.  Displace it
		if ($backupmode == move) then
			mv $file $displacefile
		else
			cp -p -r $file $displacefile
		endif
	else
		# File doesn't exist.  Remember it didn't exist.
		touch $noexistfile
		continue
	endif
end

exit 0


USAGE:
echo 'Usage:  backup [ -move -copy -restore ] file ...'
exit 1
