#!/bin/bash

. "$(dirname "$0")/../isTopLevel.sh"

RETVAL=0

for f in $(git ls-files | grep -E '^src\/.*\.h$'); do
  # ファイルパスから正しいインクルードガードの文字列を生成する
  s1="$(echo "$f" | sed -r 's/^src\///; s/[\/\.-]+/_/g; s/^.*$/\U&/')_"

 # ファイルからインクルードガードを読み込む
  s2=$(grep -Pzo '#ifndef\s+\K\b(\w+)\b(?=\s+#define\s+\b\1\b)' "$f" | tr '\0' '\n')

  if [ -z "$s2" ]; then
    echo "error: $f: include guard is missing or incorrect" >&2
    echo "       ($s1)" >&2
    RETVAL=1
  elif [ "$s2" != "$s1" ]; then
    echo "error: $f: include guard is incorrect" >&2
    echo "       ($s2 => $s1)" >&2
    RETVAL=1
  fi
done

exit $RETVAL
