summaryrefslogtreecommitdiff
path: root/coccinelle/run-coccinelle.sh
blob: 22ab66d3dd593c18d0caea47b1709d7854a229fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/bin/bash -e

top="$(git rev-parse --show-toplevel)"
files="$(git ls-files ':/*.[ch]')"
args=

case "$1" in
        -i)
                args="$args --in-place"
                shift
                ;;
esac

if ! parallel -h >/dev/null; then
        echo 'Please install GNU parallel (package "parallel")'
        exit 1
fi

for SCRIPT in ${@-$top/coccinelle/*.cocci} ; do
        echo "--x-- Processing $SCRIPT --x--"
        TMPFILE=`mktemp`
        echo "+ spatch --sp-file $SCRIPT $args ..."
        parallel --halt now,fail=1 --keep-order --noswap --max-args=20 \
                 spatch --sp-file $SCRIPT $args ::: $files \
                 2>"$TMPFILE" || cat "$TMPFILE"
        echo -e "--x-- Processed $SCRIPT --x--\n"
done