1#!/bin/sh
2# Check the set of headers with conformtest expectations for a given standard.
3# Copyright (C) 2014-2022 Free Software Foundation, Inc.
4# This file is part of the GNU C Library.
5
6# The GNU C Library is free software; you can redistribute it and/or
7# modify it under the terms of the GNU Lesser General Public
8# License as published by the Free Software Foundation; either
9# version 2.1 of the License, or (at your option) any later version.
10
11# The GNU C Library is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14# Lesser General Public License for more details.
15
16# You should have received a copy of the GNU Lesser General Public
17# License along with the GNU C Library; if not, see
18# <https://www.gnu.org/licenses/>.
19
20set -e
21
22std=$1
23CC=$2
24expected_list=$3
25all_data_files=$4
26
27new_list=
28
29for f in $all_data_files; do
30  h=${f#data/}
31  h=${h%-data}
32  exp=$($CC -D$std -x c -E $f | sed -e '/^#/d' -e '/^[ 	]*$/d')
33  if [ "$exp" ]; then
34    new_list="$new_list $h"
35  fi
36done
37
38echo "Headers with expectations for $std: $new_list"
39echo "Expected list: $expected_list"
40
41rc=0
42
43for h in $expected_list; do
44  case " $new_list " in
45    (*" $h "*)
46      ;;
47    (*)
48      echo "Missing expectations for $h."
49      rc=1
50      ;;
51  esac
52done
53
54for h in $new_list; do
55  case " $expected_list " in
56    (*" $h "*)
57      ;;
58    (*)
59      echo "Spurious expectations for $h."
60      rc=1
61      ;;
62  esac
63done
64
65exit $rc
66