#!/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 '^[UP] ' cvs.out

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

echo ""; echo "	NEW FILES THAT NEED TO BE COMMITTED:"
grep '^[AR] ' 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

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)
