mirror of
https://github.com/systemd/systemd.git
synced 2024-12-26 03:22:00 +03:00
ca21d59a3f
* flag-set.cocci: perform the transformation only if the second argument is a constant * sd-journal/lookup3.c: skip the cocci completely for this file, since it's not "ours" * strjoina.cocci: skip the transformation on the "test_strjoina" test, since it intentionally tests the "incorrect" expression we're trying to transform (the same thing was already done in strjoin.cocci)
44 lines
1.2 KiB
Bash
Executable File
44 lines
1.2 KiB
Bash
Executable File
#!/bin/bash -e
|
|
|
|
# Exclude following paths from the Coccinelle transformations
|
|
EXCLUDED_PATHS=(
|
|
"src/boot/efi/*"
|
|
"src/shared/linux/*"
|
|
"src/basic/linux/*"
|
|
# Symlinked to test-bus-vtable-cc.cc, which causes issues with the IN_SET macro
|
|
"src/libsystemd/sd-bus/test-bus-vtable.c"
|
|
"src/libsystemd/sd-journal/lookup3.c"
|
|
)
|
|
|
|
top="$(git rev-parse --show-toplevel)"
|
|
args=
|
|
|
|
# Create an array from files tracked by git...
|
|
mapfile -t files < <(git ls-files ':/*.[ch]')
|
|
# ...and filter everything that matches patterns from EXCLUDED_PATHS
|
|
for excl in "${EXCLUDED_PATHS[@]}"; do
|
|
files=(${files[@]//$excl})
|
|
done
|
|
|
|
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 --macro-file="$top/coccinelle/macros.h" --sp-file $SCRIPT $args ::: "${files[@]}" \
|
|
2>"$TMPFILE" || cat "$TMPFILE"
|
|
echo -e "--x-- Processed $SCRIPT --x--\n"
|
|
done
|