#!/bin/sh 

# Run this from /tmp.
CVSROOT=${CVSROOT:-/cvs/gcc}
export CVSROOT
/bin/rm -rf /tmp/$$
/bin/mkdir /tmp/$$
cd /tmp/$$

# The path to cvs.
CVS=${CVS:-/usr/local/bin/cvs}

# Compute the branches which we should update.
$CVS co gcc/ChangeLog
BRANCHES=`$CVS status -v gcc/ChangeLog \
          | awk '{print $1;}' \
          | egrep 'gcc-[0-9]+_[0-9]+-branch$'`
# Always update the mainline.
BRANCHES="${BRANCHES} HEAD"

# ARGS is passed to 'cvs co'
CURR_DATE=`/bin/date +"%Y%m%d"`

# version is contained within a char*
textstring_FILES="gcc/gcc/version.c gcc/gcc/ada/gnatvsn.ads gcc/gcc/f/version.c gcc/libf2c/libF77/Version.c gcc/libf2c/libI77/Version.c gcc/libf2c/libU77/Version.c"

# version is contained within a #define
cppdefine_FILES="gcc/libstdc++-v3/include/bits/c++config"

# Assume all will go well.
RESULT=0

for BRANCH in $BRANCHES; do
  # Check out the files on the branch.  HEAD is a special case; if
  # you check out files with -r HEAD, CVS will not let you check 
  # in changes.
  if test "$BRANCH" = HEAD; then 
    ${CVS} co $textstring_FILES $cppdefine_FILES
  else
    ${CVS} co -r $BRANCH $textstring_FILES $cppdefine_FILES
  fi

  # There are no files to commit yet.
  COMMIT_FILES=""

  for file in $textstring_FILES; do
    if test -f $file; then 
      /bin/sed  <$file >$file.new -e \
  "s/\(.*\"[^ ]*\) [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/\1 ${CURR_DATE}/" 

      if /usr/bin/cmp -s $file $file.new; then
	rm -f $file.new
      else
	mv -f $file.new $file
        COMMIT_FILES="$COMMIT_FILES $file"
      fi
    fi
  done

  for file in $cppdefine_FILES; do
    if test -f $file; then
      /bin/sed <$file >$file.new -e \
  "s/\(#.*\) [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/\1 ${CURR_DATE}/"

      if /usr/bin/cmp -s $file $file.new; then
	rm -f $file.new
      else
	mv -f $file.new $file
        COMMIT_FILES="$COMMIT_FILES $file"
      fi
    fi
  done

  if test -n "$COMMIT_FILES" \
     && ! ${CVS} commit -m "Daily bump." $COMMIT_FILES; then
    # If we could not commit the files, indicate failure.
    RESULT=1
  fi

  # Remove the files.
  rm -rf gcc
done

/bin/rm -rf /tmp/$$
exit $RESULT

