From 302b9b775c76ae84a845c596d3aa6aedf764f8de Mon Sep 17 00:00:00 2001 From: Ludwig Ortmann Date: Fri, 10 Oct 2014 09:05:12 +0200 Subject: [PATCH] dist/tools: add check for extern "C" declaration --- dist/tools/externc/check.sh | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100755 dist/tools/externc/check.sh diff --git a/dist/tools/externc/check.sh b/dist/tools/externc/check.sh new file mode 100755 index 000000000..c83ec323f --- /dev/null +++ b/dist/tools/externc/check.sh @@ -0,0 +1,37 @@ +#!/bin/sh + +# customizable +CHECKROOT=$(dirname "${0}") + +# prepare +ROOT=$(git rev-parse --show-toplevel) +EXIT_CODE=0 +BRANCH="${1}" +DIFFFILTER="${2}" + +# set default diff-filter +if [ -z "${DIFFFILTER}" ]; then + DIFFFILTER="ACMR" +fi + +# select files to check +if [ -z "${BRANCH}" ]; then + FILES="$(git ls-tree -r --full-tree --name-only HEAD | grep -E '\.h$')" +else + FILES="$(git diff --diff-filter=${DIFFFILTER} --name-only ${BRANCH} | grep -E '\.h$')" +fi + +# check files +for FILE in ${FILES}; do + if head -100 "${ROOT}/${FILE}" \ + | sed -e 's/$/ /' \ + | tr -d '\r\n' \ + | sed -e 's/ */ /g' \ + | grep -v -q '#ifdef __cplusplus extern "C" { #endif'; \ + then + EXIT_CODE=1 + echo "file does not have a C++ compatible header: '${FILE}'" + fi +done + +exit ${EXIT_CODE}