Blame conform/check-header-lists.sh

Packit 6c4009
#!/bin/sh
Packit 6c4009
# Check the set of headers with conformtest expectations for a given standard.
Packit 6c4009
# Copyright (C) 2014-2018 Free Software Foundation, Inc.
Packit 6c4009
# This file is part of the GNU C Library.
Packit 6c4009
Packit 6c4009
# The GNU C Library is free software; you can redistribute it and/or
Packit 6c4009
# modify it under the terms of the GNU Lesser General Public
Packit 6c4009
# License as published by the Free Software Foundation; either
Packit 6c4009
# version 2.1 of the License, or (at your option) any later version.
Packit 6c4009
Packit 6c4009
# The GNU C Library is distributed in the hope that it will be useful,
Packit 6c4009
# but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 6c4009
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 6c4009
# Lesser General Public License for more details.
Packit 6c4009
Packit 6c4009
# You should have received a copy of the GNU Lesser General Public
Packit 6c4009
# License along with the GNU C Library; if not, see
Packit 6c4009
# <http://www.gnu.org/licenses/>.
Packit 6c4009
Packit 6c4009
set -e
Packit 6c4009
Packit 6c4009
std=$1
Packit 6c4009
CC=$2
Packit 6c4009
expected_list=$3
Packit 6c4009
all_data_files=$4
Packit 6c4009
Packit 6c4009
new_list=
Packit 6c4009
Packit 6c4009
for f in $all_data_files; do
Packit 6c4009
  h=${f#data/}
Packit 6c4009
  h=${h%-data}
Packit 6c4009
  exp=$($CC -D$std -x c -E $f | sed -e '/^#/d' -e '/^[ 	]*$/d')
Packit 6c4009
  if [ "$exp" ]; then
Packit 6c4009
    new_list="$new_list $h"
Packit 6c4009
  fi
Packit 6c4009
done
Packit 6c4009
Packit 6c4009
echo "Headers with expectations for $std: $new_list"
Packit 6c4009
echo "Expected list: $expected_list"
Packit 6c4009
Packit 6c4009
rc=0
Packit 6c4009
Packit 6c4009
for h in $expected_list; do
Packit 6c4009
  case " $new_list " in
Packit 6c4009
    (*" $h "*)
Packit 6c4009
      ;;
Packit 6c4009
    (*)
Packit 6c4009
      echo "Missing expectations for $h."
Packit 6c4009
      rc=1
Packit 6c4009
      ;;
Packit 6c4009
  esac
Packit 6c4009
done
Packit 6c4009
Packit 6c4009
for h in $new_list; do
Packit 6c4009
  case " $expected_list " in
Packit 6c4009
    (*" $h "*)
Packit 6c4009
      ;;
Packit 6c4009
    (*)
Packit 6c4009
      echo "Spurious expectations for $h."
Packit 6c4009
      rc=1
Packit 6c4009
      ;;
Packit 6c4009
  esac
Packit 6c4009
done
Packit 6c4009
Packit 6c4009
exit $rc