hdf5/bin/chkcopyright
Albert Cheng 779af14613 [svn-r7359] Purpose:
New features

Description:
Add options of verbose (-v, -v9) and -fname which limits to
checking file with the file name pattern.

Solution:

Platforms tested:
Did not h5committest which does not cover this command.
Verified it by hand.

Misc. update:
2003-08-13 16:41:34 -05:00

289 lines
8.8 KiB
Bash
Executable File

#! /bin/sh
##
## Copyright by the Board of Trustees of the University of Illinois.
## All rights reserved.
##
## This file is part of HDF5. The full HDF5 copyright notice, including
## terms governing use, modification, and redistribution, is contained in
## the files COPYING and Copyright.html. COPYING can be found at the root
## of the source code distribution tree; Copyright.html can be found at the
## root level of an installed copy of the electronic HDF5 document set and
## is linked from the top-level documents page. It can also be found at
## http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have
## access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu.
##
# Check Copyright notice.
# Check that all the files have the proper copyright notice.
# It goes down directories recursively.
#
# Programmer: Albert Cheng
# Created Data: 2003/07/22
PROGNAME=$0
DIFF="diff"
COPYRIGHTFILE=/tmp/copy.$$
EXTRACTEDFILE=/tmp/extracted.$$
VERBOSE= # default no
DIRS=. # default current directory
USAGE()
{
cat <<EOF
Usage: $PROGNAME [-h | -help] [-fname name-patter] [-v | -v9] [dir1 dir2 ...]
Check copyright notices of files in [dir1 dir2 ...}.
Default is to check files in current directory.
-h | -help
show this page.
-fname name-pattern
limit to files of name-pattern
-v
verbose mode
-v9
highly verbose
EOF
}
# Parse Options
#
PARSE_OPTION()
{
while test $# -gt 0 ; do
case "$1" in
-h | -help )
USAGE
exit 0
;;
-fname )
shift
FNAME="$1"
;;
-v* )
VERBOSE=yes
if test X$1 = X-v9; then
set -x
fi
;;
-* )
echo "***Unknown option ($1)"
USAGE
exit 1
;;
* )
DIRS=$*
break
;;
esac
shift
done
}
# Check C and C++ source files
#
C_SOURCE()
{
f=$1
cat > ${COPYRIGHTFILE} << \EOF
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Copyright by the Board of Trustees of the University of Illinois. *
* All rights reserved. *
* *
* This file is part of HDF5. The full HDF5 copyright notice, including *
* terms governing use, modification, and redistribution, is contained in *
* the files COPYING and Copyright.html. COPYING can be found at the root *
* of the source code distribution tree; Copyright.html can be found at the *
* root level of an installed copy of the electronic HDF5 document set and *
* is linked from the top-level documents page. It can also be found at *
* http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
* access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
EOF
# Must use stdin for wc to prevent filename from popping up.
nlines=`wc -l < ${COPYRIGHTFILE}| tr -d ' '`
head -${nlines} $f | $DIFF - ${COPYRIGHTFILE} >/dev/null 2>&1
if test $? -ne 0; then
# show the difference
echo ${f}:
head -${nlines} $f | $DIFF - ${COPYRIGHTFILE}
fi
}
# Check Fortran90 source files
#
FORTRAN_SOURCE()
{
f=$1
cat > ${COPYRIGHTFILE} << \EOF
! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
! Copyright by the Board of Trustees of the University of Illinois. *
! All rights reserved. *
! *
! This file is part of HDF5. The full HDF5 copyright notice, including *
! terms governing use, modification, and redistribution, is contained in *
! the files COPYING and Copyright.html. COPYING can be found at the root *
! of the source code distribution tree; Copyright.html can be found at the *
! root level of an installed copy of the electronic HDF5 document set and *
! is linked from the top-level documents page. It can also be found at *
! http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
! access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
EOF
# Must use stdin for wc to prevent filename from popping up.
nlines=`wc -l < ${COPYRIGHTFILE}| tr -d ' '`
head -${nlines} $f | $DIFF - ${COPYRIGHTFILE} >/dev/null 2>&1
if test $? -ne 0; then
# show the differences
echo ${f}:
head -${nlines} $f | $DIFF - ${COPYRIGHTFILE}
fi
}
# Check HTML Files
#
HTML_FILE()
{
f=$1
cat > ${COPYRIGHTFILE} << \EOF
<!--
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Copyright by the Board of Trustees of the University of Illinois. *
* All rights reserved. *
* *
* This file is part of HDF5. The full HDF5 copyright notice, including *
* terms governing use, modification, and redistribution, is contained in *
* the files COPYING and Copyright.html. COPYING can be found at the root *
* of the source code distribution tree; Copyright.html can be found at the *
* root level of an installed copy of the electronic HDF5 document set and *
* is linked from the top-level documents page. It can also be found at *
* http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
* access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-->
EOF
# Must use stdin for wc to prevent filename from popping up.
nlines=`wc -l < ${COPYRIGHTFILE}| tr -d ' '`
sed -n -e '/^<!--$/,/^ -->$/p' < $f | head -${nlines} > ${EXTRACTEDFILE}
$DIFF ${EXTRACTEDFILE} ${COPYRIGHTFILE} >/dev/null 2>&1
if test $? -ne 0; then
# show the differences
echo ${f}:
$DIFF ${EXTRACTEDFILE} ${COPYRIGHTFILE}
fi
}
# Check Shell script files
#
SHELL_FILE()
{
f=$1
cat > ${COPYRIGHTFILE} << \EOF
#! /bin/sh
##
## Copyright by the Board of Trustees of the University of Illinois.
## All rights reserved.
##
## This file is part of HDF5. The full HDF5 copyright notice, including
## terms governing use, modification, and redistribution, is contained in
## the files COPYING and Copyright.html. COPYING can be found at the root
## of the source code distribution tree; Copyright.html can be found at the
## root level of an installed copy of the electronic HDF5 document set and
## is linked from the top-level documents page. It can also be found at
## http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have
## access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu.
##
EOF
# Must use stdin for wc to prevent filename from popping up.
nlines=`wc -l < ${COPYRIGHTFILE}| tr -d ' '`
head -${nlines} $f | $DIFF - ${COPYRIGHTFILE} >/dev/null 2>&1
if test $? -ne 0; then
# show the differences
echo ${f}:
head -${nlines} $f | $DIFF - ${COPYRIGHTFILE}
fi
}
# Check Makefile
#
MAKE_FILE()
{
f=$1
cat > ${COPYRIGHTFILE} << \EOF
##
## Copyright by the Board of Trustees of the University of Illinois.
## All rights reserved.
##
## This file is part of HDF5. The full HDF5 copyright notice, including
## terms governing use, modification, and redistribution, is contained in
## the files COPYING and Copyright.html. COPYING can be found at the root
## of the source code distribution tree; Copyright.html can be found at the
## root level of an installed copy of the electronic HDF5 document set and
## is linked from the top-level documents page. It can also be found at
## http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have
## access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu.
##
EOF
# Must use stdin for wc to prevent filename from popping up.
nlines=`wc -l < ${COPYRIGHTFILE}| tr -d ' '`
head -${nlines} $f | $DIFF - ${COPYRIGHTFILE} >/dev/null 2>&1
if test $? -ne 0; then
# show the differences
echo ${f}:
head -${nlines} $f | $DIFF - ${COPYRIGHTFILE}
fi
}
#
# Main body
PARSE_OPTION "$@"
# use find to list all those file names and process them
# one by one.
(
if test -z "$FNAME" ; then
find $DIRS -type f -print
else
find $DIRS -type f -name "${FNAME}" -print
fi
) |
while read file; do
if test X-$VERBOSE = X-yes; then
echo checking ${file}...
fi
case ${file} in
*.c | *.h | *.cpp )
C_SOURCE ${file}
;;
*.f90 )
FORTRAN_SOURCE ${file}
;;
*.htm | *.html )
HTML_FILE ${file}
;;
*.sh | *.sh.in )
SHELL_FILE ${file}
;;
*Makefile | *Makefile.in )
MAKE_FILE ${file}
;;
*CVS/* )
# Skip
continue
;;
*)
echo "Unknown file type (${file})"
;;
esac
done
# Cleanup
rm -f ${EXTRACTEDFILE} ${COPYRIGHTFILE}