Blame telepathy-account-widgets/tools/check-c-style.sh

Packit Service c6b9b0
#!/bin/sh
Packit Service c6b9b0
fail=0
Packit Service c6b9b0
Packit Service c6b9b0
( . "${tools_dir}"/check-misc.sh ) || fail=$?
Packit Service c6b9b0
Packit Service c6b9b0
# The first regex finds function calls like foo() (as opposed to foo ()).
Packit Service c6b9b0
#   It attempts to ignore string constants (may cause false negatives).
Packit Service c6b9b0
# The second and third ignore block comments (gtkdoc uses foo() as markup).
Packit Service c6b9b0
# The fourth ignores cpp so you can
Packit Service c6b9b0
#   #define foo(bar) (_real_foo (__FUNC__, bar)) (cpp insists on foo() style).
Packit Service c6b9b0
if grep -n '^[^"]*[[:lower:]](' "$@" \
Packit Service c6b9b0
  | grep -v '^[-[:alnum:]_./]*:[[:digit:]]*: *\*' \
Packit Service c6b9b0
  | grep -v '^[-[:alnum:]_./]*:[[:digit:]]*: */\*' \
Packit Service c6b9b0
  | grep -v '^[-[:alnum:]_./]*:[[:digit:]]*: *#'
Packit Service c6b9b0
then
Packit Service c6b9b0
  echo "^^^ Our coding style is to use function calls like foo (), not foo()"
Packit Service c6b9b0
  fail=1
Packit Service c6b9b0
fi
Packit Service c6b9b0
Packit Service c6b9b0
if grep -En '[(][[:alnum:]_]+ ?\*[)][(]?[[:alpha:]_]' "$@"; then
Packit Service c6b9b0
  echo "^^^ Our coding style is to have a space between a cast and the "
Packit Service c6b9b0
  echo "    thing being cast"
Packit Service c6b9b0
  fail=1
Packit Service c6b9b0
fi
Packit Service c6b9b0
Packit Service c6b9b0
# this only spots casts
Packit Service c6b9b0
if grep -En '[(][[:alnum:]_]+\*+[)]' "$@"; then
Packit Service c6b9b0
  echo "^^^ Our coding style is to have a space before the * of pointer types"
Packit Service c6b9b0
  echo "    (regex 1)"
Packit Service c6b9b0
  fail=1
Packit Service c6b9b0
fi
Packit Service c6b9b0
# ... and this only spots variable declarations and function return types
Packit Service c6b9b0
if grep -En '^ *(static |const |)* *[[:alnum:]_]+\*+([[:alnum:]_]|;|$)' \
Packit Service c6b9b0
    "$@"; then
Packit Service c6b9b0
  echo "^^^ Our coding style is to have a space before the * of pointer types"
Packit Service c6b9b0
  echo "    (regex 2)"
Packit Service c6b9b0
  fail=1
Packit Service c6b9b0
fi
Packit Service c6b9b0
Packit Service c6b9b0
if grep -n 'g_hash_table_destroy' "$@"; then
Packit Service c6b9b0
  echo "^^^ Our coding style is to use g_hash_table_unref"
Packit Service c6b9b0
  fail=1
Packit Service c6b9b0
fi
Packit Service c6b9b0
Packit Service c6b9b0
for p in "" "ptr_" "byte_"; do
Packit Service c6b9b0
  if grep -En "g_${p}array_free \(([^ ,]+), TRUE\)" "$@"; then
Packit Service c6b9b0
    echo "^^^ Our coding style is to use g_${p}array_unref in the case "
Packit Service c6b9b0
    echo "    the underlying C array is not used"
Packit Service c6b9b0
    fail=1
Packit Service c6b9b0
  fi
Packit Service c6b9b0
done
Packit Service c6b9b0
Packit Service c6b9b0
if test -n "$CHECK_FOR_LONG_LINES"
Packit Service c6b9b0
then
Packit Service c6b9b0
  if egrep -n '.{80,}' "$@"
Packit Service c6b9b0
  then
Packit Service c6b9b0
    echo "^^^ The above files contain long lines"
Packit Service c6b9b0
    fail=1
Packit Service c6b9b0
  fi
Packit Service c6b9b0
fi
Packit Service c6b9b0
Packit Service c6b9b0
exit $fail