1#!/bin/sh
2
3# Copyright 2008-2023 Free Software Foundation, Inc.
4# This script is free software; the Free Software Foundation
5# gives unlimited permission to copy and/or distribute it,
6# with or without modifications, as long as this notice is preserved.
7
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
10# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11# PARTICULAR PURPOSE.
12
13# ck-copyright-notice can be run from the tools directory
14dir=`pwd`
15[ -d src ] || [ "`basename \"$dir\"`" != tools ] || cd ..
16
17err=0
18
19# Note: if paragraphs are reformatted, this may need to be updated.
20
21yrx="\([0-9][0-9][0-9][0-9]\)"
22
23lgpl=`sed -n "/version [0-9.]* or any later version/ {
24    s/.*version //
25    s/ or.*//
26    p
27    q
28  }" doc/mpfr.texi`
29
30clyr=`sed -n "/^r/ {
31    s/.* | $yrx-.*/\1/p
32    q
33  }
34  /^$yrx-/ {
35    s/^$yrx-.*/\1/p
36    q
37  }" ChangeLog`
38
39# Do not use "find ... | while read file do ... done" because the "do"
40# part needs to be run in the current shell, and some shells behave in
41# a different way.
42srctests=`find examples src tests -name '*.[ch]' ! -name '.#*'`
43
44# Take the copyright notice last year of NEWS file as a reference.
45z=`sed -n "s/^Copyright 2000-$yrx Free Software Foundation.*/\1/p" NEWS`
46
47if [ $z -ge $clyr ]; then
48  : no errors and up-to-date NEWS file
49else
50  # The condition may be false due to an error when getting years.
51  # The following two lines avoid an incorrect message in such a case.
52  set -e
53  [ $z -lt $clyr ] 2> /dev/null
54  echo "The copyright year of NEWS is out-of-date."
55  err=1
56fi
57
58# Note: mpfr.pc.in is not checked as it does not have a copyright notice
59# (it is distributed with MPFR, but regarded as trivial).
60
61for file in $srctests BUGS INSTALL README TODO configure.ac
62do
63  y=""
64  case $file in
65    tests/RRTest.c)
66      # This file doesn't have a copyright notice, but isn't distributed.
67      continue ;;
68    src/mini-gmp.[ch])
69      # These files may have been added by the user or 3rd party.
70      continue ;;
71    src/mpfr-longlong.h)
72      # This file (which comes from GMP) has a specific copyright notice.
73      continue ;;
74    src/get_patches.c)
75      file="tools/get_patches.sh" ;;
76    src/mparam.h)
77      file="src/mparam_h.in" ;;
78    */mparam.h)
79      y="2005-" ;;
80  esac
81  grep -q "Copyright $y.*$z Free Software Foundation" "$file" && \
82  grep -q "GNU MPFR Library" "$file" && \
83  grep -q "either version $lgpl of the License" "$file" && continue
84  echo "Possibly missing or incorrect copyright notice in $file"
85  err=1
86done
87
88exit $err
89