1*74425eeeSNicolas Palix#!/bin/sh 2*74425eeeSNicolas Palix 3*74425eeeSNicolas PalixSPATCH="`which ${SPATCH:=spatch}`" 4*74425eeeSNicolas Palix 5*74425eeeSNicolas Palixif [ ! -x "$SPATCH" ]; then 6*74425eeeSNicolas Palix echo 'spatch is part of the Coccinelle project and is available at http://coccinelle.lip6.fr/' 7*74425eeeSNicolas Palix exit 1 8*74425eeeSNicolas Palixfi 9*74425eeeSNicolas Palix 10*74425eeeSNicolas Palixif [ "$MODE" = "" ] ; then 11*74425eeeSNicolas Palix echo 'You have not explicitly specify the mode to use. Fallback to "report".' 12*74425eeeSNicolas Palix echo 'You can specify the mode with "make coccicheck MODE=<mode>"' 13*74425eeeSNicolas Palix echo 'Available modes are: report, patch, context, org' 14*74425eeeSNicolas Palix MODE="report" 15*74425eeeSNicolas Palixfi 16*74425eeeSNicolas Palix 17*74425eeeSNicolas Palixecho '' 18*74425eeeSNicolas Palixecho 'Please check for false positives in the output before submitting a patch.' 19*74425eeeSNicolas Palixecho 'When using "patch" mode, carefully review the patch before submitting it.' 20*74425eeeSNicolas Palixecho '' 21*74425eeeSNicolas Palix 22*74425eeeSNicolas Palixfunction coccinelle { 23*74425eeeSNicolas Palix COCCI="$1" 24*74425eeeSNicolas Palix DIR="$2" 25*74425eeeSNicolas Palix 26*74425eeeSNicolas Palix OPT=`grep "Option" $COCCI | cut -d':' -f2` 27*74425eeeSNicolas Palix FILE=`echo $COCCI | sed "s|$DIR/||"` 28*74425eeeSNicolas Palix 29*74425eeeSNicolas Palix echo "Processing `basename $COCCI` with option(s) \"$OPT\"" 30*74425eeeSNicolas Palix echo 'Message example to submit a patch:' 31*74425eeeSNicolas Palix 32*74425eeeSNicolas Palix sed -e '/\/\/\//!d' -e 's|^///||' $COCCI 33*74425eeeSNicolas Palix 34*74425eeeSNicolas Palix echo ' The semantic patch that makes this change is available' 35*74425eeeSNicolas Palix echo " in $FILE." 36*74425eeeSNicolas Palix echo '' 37*74425eeeSNicolas Palix echo ' More information about semantic patching is available at' 38*74425eeeSNicolas Palix echo ' http://coccinelle.lip6.fr/' 39*74425eeeSNicolas Palix echo '' 40*74425eeeSNicolas Palix 41*74425eeeSNicolas Palix# The option '-parse_cocci' can be used to syntaxically check the SmPL files. 42*74425eeeSNicolas Palix# 43*74425eeeSNicolas Palix# $SPATCH -D $MODE -very_quiet -parse_cocci $COCCI $OPT > /dev/null 44*74425eeeSNicolas Palix 45*74425eeeSNicolas Palix $SPATCH -D $MODE -very_quiet -sp_file $COCCI $OPT -dir $DIR 46*74425eeeSNicolas Palix} 47*74425eeeSNicolas Palix 48*74425eeeSNicolas Palixif [ "$COCCI" = "" ] ; then 49*74425eeeSNicolas Palix for f in `find $srctree/scripts/coccinelle/ -name '*.cocci' -type f | sort`; do 50*74425eeeSNicolas Palix coccinelle $f $srctree; 51*74425eeeSNicolas Palix done 52*74425eeeSNicolas Palixelse 53*74425eeeSNicolas Palix coccinelle $COCCI $srctree 54*74425eeeSNicolas Palixfi 55