#!/bin/sh

SPATCH="`which ${SPATCH:=spatch}`"

if [ "$C" = "1" -o "$C" = "2" ]; then
    ONLINE=1

# This requires Coccinelle >= 0.2.3
#    FLAGS="-ignore_unknown_options -very_quiet"
#    OPTIONS=$*

# Workaround for Coccinelle < 0.2.3
    FLAGS="-I $srctree/include -very_quiet"
    shift $(( $# - 1 ))
    OPTIONS=$1
else
    ONLINE=0
    FLAGS="-very_quiet"
fi

if [ ! -x "$SPATCH" ]; then
    echo 'spatch is part of the Coccinelle project and is available at http://coccinelle.lip6.fr/'
    exit 1
fi

if [ "$MODE" = "" ] ; then
    if [ "$ONLINE" = "0" ] ; then
	echo 'You have not explicitly specify the mode to use. Fallback to "report".'
	echo 'You can specify the mode with "make coccicheck MODE=<mode>"'
	echo 'Available modes are: report, patch, context, org'
    fi
    MODE="report"
fi

if [ "$ONLINE" = "0" ] ; then
    echo ''
    echo 'Please check for false positives in the output before submitting a patch.'
    echo 'When using "patch" mode, carefully review the patch before submitting it.'
    echo ''
fi

coccinelle () {
    COCCI="$1"

    OPT=`grep "Option" $COCCI | cut -d':' -f2`

#   The option '-parse_cocci' can be used to syntaxically check the SmPL files.
#
#    $SPATCH -D $MODE $FLAGS -parse_cocci $COCCI $OPT > /dev/null

    if [ "$ONLINE" = "0" ] ; then

	FILE=`echo $COCCI | sed "s|$srctree/||"`

	echo "Processing `basename $COCCI` with option(s) \"$OPT\""
	echo 'Message example to submit a patch:'

	sed -e '/\/\/\//!d' -e 's|^///||' $COCCI

	echo ' The semantic patch that makes this change is available'
	echo " in $FILE."
	echo ''
	echo ' More information about semantic patching is available at'
	echo ' http://coccinelle.lip6.fr/'
	echo ''

	$SPATCH -D $MODE $FLAGS -sp_file $COCCI $OPT -dir $srctree || exit 1
    else
	$SPATCH -D $MODE $FLAGS -sp_file $COCCI $OPT $OPTIONS || exit 1
    fi

}

if [ "$COCCI" = "" ] ; then
    for f in `find $srctree/scripts/coccinelle/ -name '*.cocci' -type f | sort`; do
	coccinelle $f
    done
else
    coccinelle $COCCI
fi
