#!/bin/csh -f
#
# This script updates the entire tree, saves the output in cvs.out,
# and then separately prints out the files that had merge conflicts,
# those that were merged successfully, and those that are new.
# Note that this script uses "cvs update -P -d".
#
# USAGE:
# 	cvsupdate	## normal run
# 	cvsupdate -n	## run grep commands on output of the last run of cvs
# 	cvsupdate -h	## usage information
#

set pstatus = 0
onintr cleanup
alias usage 'echo "USAGE: $0:t [-h][-n]"; set pstatus = 1; goto cleanup'

set doit = 1
set printnew = 0
unset options_done
while ( !( $?options_done ) && ($#argv > 0))
    switch ($argv[1])
	case -h :
	    usage
	case -n :
	    set doit = 0; shift argv; breaksw
	case -new :
	    set printnew = 1; shift argv; breaksw
	default :
	    set options_done; breaksw
    endsw
end

if ($doit == 1) then
    /bin/mv -f cvs.out cvs.out.bak >&/dev/null
    cvs update -P -d >& cvs.out
##    if ($status != 0) then
##        echo "ERROR: CVS update failed: "
##	cat cvs.out
##	exit 1
    endif
else
    echo ""; echo "NOT UPDATING FILES.  RESULTS FROM LAST RUN:"; echo ""
endif

echo ""; echo "	FILES UPDATED:"
grep '^U' cvs.out

echo ""; echo "	UPDATE CONFLICTS OCCURRED FOR THE FOLLOWING FILES:"
grep '^C' cvs.out

echo ""; echo " FILES REMOVED FROM YOUR DIRECTORY:"
grep 'no longer in the repository' cvs.out

echo ""; echo "	FILES SUCCESSFULLY MERGED (or locally modified):"
grep '^M' cvs.out | grep -v Merging

echo ""; echo "	NEW FILES AND DIRECTORIES:"
if ($printnew != 0) then
    grep '^\?' cvs.out | & grep -v '\.bc' | grep -v Updating | grep -v cvsup | grep -v 'cvs.out' | grep -v gnumake.out | grep -v '\.mc$' | grep -v '\.s$' | grep -v '\.native'
else
    echo '(USE "cvsupdate -n -new" TO SEE NEW FILES AND DIRECTORIES.)'
endif

echo ""


#=========================================================
# CODE TO BE EXECUTED IF INTERRUPT IS RECEIVED
#=========================================================
cleanup:
    exit($pstatus)
