#!/bin/bash

GAWK=gawk
MV=mv

# GAWK=/usr/bin/gawk
# MV=/bin/mv

Date=`date -u +%Y`

CommentStart=''
CommentEnd=''
PrologEnd=0

if [ "`basename $1`" != "`basename $1 .h`" -o \
     "`basename $1`" != "`basename $1 .c`" -o \
     "`basename $1`" != "`basename $1 .cpp`" -o \
     "`basename $1`" != "`basename $1 .hpp`" -o \
     "`basename $1`" != "`basename $1 .i`" -o \
     "`basename $1`" != "`basename $1 .java`" ]; then
  CommentStart='//'
elif [ "`basename $1`" != "`basename $1 .pro`" -o \
       "`basename $1`" != "`basename $1 .pri`" ]; then
  CommentStart=#
elif [ "`basename $1`" != "`basename $1 .xsd`" -o \
       "`basename $1`" != "`basename $1 .xml`" ]; then
  CommentStart='<!--'
  CommentEnd='-->'
  PrologEnd='>'
elif [ "`basename $1`" != "`basename $1 .ui`" ]; then
  CommentStart='<comment>'
  CommentEnd='</comment>'
  PrologEnd='<ui.*>'
elif [ "`basename $1`" != "`basename $1 .py`" ]; then
  CommentStart=#
  PrologEnd='-\\*-'
fi

if [ x$CommentStart != x"" ]; then

$GAWK -- '
BEGIN {
  CVSHeader = 0
  Copyright = 0
  Prolog = "'$PrologEnd'"
  EmptyLine = 0
  PrintLine = 1
  IgnoreOldCopyright = 0
}

{
  if (Prolog == 0 && Copyright < 2) {      
    if (CVSHeader == 0) {
      if ($0 !~ ".*Begin CVS Header.*") {
        printf "'$CommentStart' Begin CVS Header '$CommentEnd'\n"
        printf "'$CommentStart'   $Source: /Volumes/Home/Users/shoops/cvs/copasi_dev/cvs_admin/addHeader,v $ '$CommentEnd'\n"
        printf "'$CommentStart'   $Revision: 1.18 $ '$CommentEnd'\n"
        printf "'$CommentStart'   $Name:  $ '$CommentEnd'\n"
        printf "'$CommentStart'   $Author: shoops $ '$CommentEnd'\n"
        printf "'$CommentStart'   $Date: 2012/03/07 20:49:51 $ '$CommentEnd'\n"
        printf "'$CommentStart' End CVS Header '$CommentEnd'\n"
        printf "\n"
        EmptyLine = 1
        CVSHeader = 2
      } else {
        CVSHeader = 1
      }
    } else if (CVSHeader == 1) {
      if ($0 ~ ".* End CVS Header.*") {
        print $0
        printf "\n"
        EmptyLine = 1
        PrintLine = 0
        CVSHeader = 2
      }
    } 

    if (Copyright == 0 && CVSHeader == 2 && $0 !~ ".* End CVS Header.*") {
      if ($0 ~ "Copyright \\(C\\) 2012.* by Pedro Mendes") {
        Copyright = 2
      } else if ($0 ~ "Copyright \\(C\\) 2011 by Pedro Mendes") {
        printf "'$CommentStart' Copyright (C) 2012 - 2011 by Pedro Mendes, Virginia Tech Intellectual '$CommentEnd'\n"
        PrintLine = 0
        Copyright = 2
      } else if ($0 ~ "Copyright \\(C\\) 2011 - 2010 by Pedro Mendes") {
        printf "'$CommentStart' Copyright (C) 2012 - 2010 by Pedro Mendes, Virginia Tech Intellectual '$CommentEnd'\n"
        PrintLine = 0
        Copyright = 2
      } else if ($0 ~ "Copyright \\(C\\) 2010 by Pedro Mendes") {
        printf "'$CommentStart' Copyright (C) 2012 - 2010 by Pedro Mendes, Virginia Tech Intellectual '$CommentEnd'\n"
        PrintLine = 0
        Copyright = 2
      } else if ($0 ~ "Copyright \\(C\\) 2008 by Pedro Mendes") {
        printf "'$CommentStart' Copyright (C) 2012 by Pedro Mendes, Virginia Tech Intellectual '$CommentEnd'\n"
        printf "'$CommentStart' Properties, Inc., University of Heidelberg, and The University '$CommentEnd'\n"
        printf "'$CommentStart' of Manchester. '$CommentEnd'\n"
        printf "'$CommentStart' All rights reserved. '$CommentEnd'\n"
        printf "\n"
        EmptyLine = 1
        Copyright = 2
      } else if ($0 ~ "Copyright.*by Pedro Mendes") {
        printf "'$CommentStart' Copyright (C) 2012 by Pedro Mendes, Virginia Tech Intellectual '$CommentEnd'\n"
        printf "'$CommentStart' Properties, Inc., University of Heidelberg, and The University '$CommentEnd'\n"
        printf "'$CommentStart' of Manchester. '$CommentEnd'\n"
        printf "'$CommentStart' All rights reserved. '$CommentEnd'\n"
        printf "\n"
        printf "'$CommentStart' Copyright (C) 2001 - 2007 by Pedro Mendes, Virginia Tech Intellectual '$CommentEnd'\n"
        printf "'$CommentStart' Properties, Inc. and EML Research, gGmbH. '$CommentEnd'\n"
        printf "'$CommentStart' All rights reserved. '$CommentEnd'\n"
        printf "\n"
        EmptyLine = 1
        Copyright = 2
        IgnoreOldCopyright = 1
      } else if ($0 !~ "^$") {
        printf "'$CommentStart' Copyright (C) 2012 by Pedro Mendes, Virginia Tech Intellectual '$CommentEnd'\n"
        printf "'$CommentStart' Properties, Inc., University of Heidelberg, and The University '$CommentEnd'\n"
        printf "'$CommentStart' of Manchester. '$CommentEnd'\n"
        printf "'$CommentStart' All rights reserved. '$CommentEnd'\n"
        printf "\n"
        EmptyLine = 1
        Copyright = 2
      }        
    } else if (Copyright == 1) {
      if ($0 ~ ".* All rights reserved.*") {
        print $0
        printf "\n"
        EmptyLine = 1
        PrintLine = 0
        Copyright = 2
      }
    }
  }

  if (IgnoreOldCopyright == 1) {
    PrintLine = 0

    if ($0 ~ ".* All rights reserved.*") {
      IgnoreOldCopyright = 0
    }
  }
 
  if (PrintLine == 0) {
    PrintLine = 1
  } else if (EmptyLine == 0){
    print $0
  } else {
    if ($0 !~ "^$") {
      print $0
    }
    EmptyLine = 0
  }
}

$0 ~ Prolog {
  Prolog = 0
}
' $1 > $1.tmp && \
$MV -f $1.tmp $1
fi

