#! /bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2012 Laboratoire de Recherche et Développement de
# l'Epita (LRDE).
# Copyright (C) 2004, 2005 Laboratoire d'Informatique de Paris 6
# (LIP6), département Systèmes Répartis Coopératifs (SRC), Université
# Pierre et Marie Curie.
#
# This file is part of Spot, a model checking library.
#
# Spot is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Spot is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
# License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# Check that all files use at most 80 columns.

set -e

rm -f failures

LANG=en_US.UTF-8
export LANG

if [ "`echo '{r₁|r₂|r₃}' | wc -m`" != 11 ]; then
  LANG=C
  export LANG
  # The current locale does not grok unicode.
  # We still run this test, but only on lines that are purely ascii.
  x='[^	-~]' # This blank is a tab.
else
  x='.'
fi
x="$x$x$x$x$x$x$x$x$x" # 9x
x="$x$x$x$x$x$x$x$x$x" # 81x

for dir in "${INCDIR-..}" "${INCDIR-..}"/../iface; do

  find "$dir" \(    -name "${1-*}.hh" \
                 -o -name "${1-*}.hxx" \
                 -o -name "${1-*}.cc" \
		 -o -name "${1-*}.test" \) -a -type f -a -print |
  while read file; do
     if (expand $file | grep -q $x) 2>/dev/null; then
	if grep 'GNU Bison' "$file" >/dev/null ||
	   grep 'generated by flex' "$file" >/dev/null ; then
	  :
	else
	  echo "$file" >>failures
	fi
     fi
  done
done

if test -f failures; then
   echo "The following files contain lines with more than 80 characters:"
   cat failures
   rm failures
   exit 1;
fi
