checkpatch: add scripts/check for batch processing

Co-Authored-By: @Consolatis
This commit is contained in:
Johan Malm 2022-10-14 23:16:01 +01:00 committed by Johan Malm
parent a361bae699
commit 4305f54e37
3 changed files with 61 additions and 2 deletions

View file

@ -102,7 +102,7 @@ The reasons for specifying a style is not that we enjoy creating rules, but
because it makes reading/maintaining the code and spotting problems much easier.
If you are new to this style and want to get going quickly, either just imitate
the style around you, or read the summary below and use [checkpatch.pl] to run
the style around you, or read the summary below and use `./scripts/check` to run
some formatting checks.
## Linux Kernel Style Basics
@ -341,7 +341,6 @@ xgettext --keyword=_ --language=C --add-comments -o po/labwc.pot src/menu/menu.c
[common/mem.h]: https://github.com/labwc/labwc/blob/master/include/common/mem.h
[common/list.h]: https://github.com/labwc/labwc/blob/master/include/common/list.h
[commit messages]: https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/CONTRIBUTING.md#commit-messages
[checkpatch.pl]: https://github.com/johanmalm/checkpatch.pl
[GNU C extensions]: https://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html
[`wl_container_of()`]: https://github.com/wayland-project/wayland/blob/985ab55d59db45ea62795c76dff5949343e86b2f/src/wayland-util.h#L409

10
scripts/README.md Normal file
View file

@ -0,0 +1,10 @@
These scripts are intended to be run from the project top-level directory
like this: `scripts/foo.sh`
- `scripts/check`: wrapper to check all files in `src/` and `include/`
- `scripts/checkpatch.pl`: Quick hack on the Linux kernel [checkpatch.pl]
to lint C files written according to the labwc coding style. Run like
this: `./checkpatch.pl --no-tree --terse --strict --file <file>`
[checkpatch.pl]: https://raw.githubusercontent.com/torvalds/linux/4ce9f970457899defdf68e26e0502c7245002eb3/scripts/checkpatch.pl

50
scripts/check Executable file
View file

@ -0,0 +1,50 @@
#!/bin/sh
file=
usage_message="Usage: check [OPTIONS]
OPTIONS:
--file=<filename> Specify file to check. If none specified, all
files in src/ and include/ will be checked.
"
run_checkpatch() {
nice scripts/checkpatch.pl --terse --no-tree --strict --file "$1"
return $?
}
run_checks () {
if [ ! -z "$file" ]; then
run_checkpatch "${file}"
return $?
fi
find src/ include/ \( -name "*.c" -o -name "*.h" \) -type f |
{
errors=0
while IFS= read -r file; do
run_checkpatch "$file" || errors=1
done
return ${errors}
}
}
main () {
for arg
do
opt=${arg%%=*}
var=${arg#*=}
case "$opt" in
--file)
file="$var" ;;
-h|--help)
printf '%b' "$usage_message"; exit 1 ;;
*)
printf '%b\n' "warn: unknown option $opt" >&2 ;;
esac
done
run_checks
}
main "$@"