#!/bin/sh

# Copyright 2008-2017 Free Software Foundation, Inc.
# This script is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.

# ck-copyright-notice can be run from the tools directory
dir=$(pwd)
[ -d src ] || [ "$(basename "$dir")" != tools ] || cd ..

err=0

# Note: if paragraphs are reformatted, this may need to be updated.

yrx="\([0-9][0-9][0-9][0-9]\)"

lgpl=$(sed -n "/version [0-9.]* or any later version/ {
  s/.*version //
  s/ or.*//
  p
  q
  }" doc/mpfr.texi)

clyr=$(sed -n "/^r/ {
  s/.* | $yrx-.*/\1/p
  q
  }" ChangeLog)

# Do not use "find ... | while read file do ... done" because the "do"
# part needs to be run in the current shell, and some shells behave in
# a different way.
srctests=$(find examples src tests -name '*.[ch]')

# Take the copyright notice last year of NEWS file as a reference.
z=$(sed -n "s/^Copyright 2000-$yrx Free Software Foundation.*/\1/p" NEWS)

if [ $z -lt $clyr ]; then
  echo "The copyright year of NEWS is out-of-date."
  err=1
fi

for file in $srctests BUGS INSTALL README TODO configure.ac
do
  y=""
  case $file in
    tests/RRTest.c)
      # This file doesn't have a copyright notice, but isn't distributed.
      continue ;;
    src/mini-gmp.[ch])
      # These files may have been added by the user or 3rd party.
      continue ;;
    src/mpfr-longlong.h)
      # This file (which comes from GMP) has a specific copyright notice.
      continue ;;
    src/get_patches.c)
      file="tools/get_patches.sh" ;;
    */mparam.h)
      y="2005-" ;;
  esac
  grep -q "Copyright $y.*$z Free Software Foundation" "$file" && \
  grep -q "GNU MPFR Library" "$file" && \
  grep -q "either version $lgpl of the License" "$file" && continue
  echo "Possibly missing or incorrect copyright notice in $file"
  err=1
done

exit $err
