Martin Roth | 0ad5fbd | 2020-12-24 12:06:38 -0700 | [diff] [blame] | 1 | #!/usr/bin/env sh |
Martin Roth | ae39fc4 | 2016-07-29 14:20:55 -0600 | [diff] [blame] | 2 | # |
Patrick Georgi | 7333a11 | 2020-05-08 20:48:04 +0200 | [diff] [blame] | 3 | # SPDX-License-Identifier: GPL-2.0-only |
| 4 | |
Martin Roth | ae39fc4 | 2016-07-29 14:20:55 -0600 | [diff] [blame] | 5 | # DESCR: Check for non-ASCII and unprintable characters |
| 6 | |
Martin Roth | d81debd | 2022-06-03 00:06:57 -0600 | [diff] [blame] | 7 | LINTDIR="$( |
| 8 | cd -- "$(dirname "$0")" > /dev/null 2>&1 || return |
| 9 | pwd -P |
| 10 | )" |
| 11 | |
| 12 | # shellcheck source=helper_functions.sh |
| 13 | . "${LINTDIR}/helper_functions.sh" |
Martin Roth | ae39fc4 | 2016-07-29 14:20:55 -0600 | [diff] [blame] | 14 | |
| 15 | INCLUDED_FILES='\.[chsS]$\|\.asl$\|\.cb$\|\.inc$\|Kconfig\|\.ld$|\.txt\|\.hex' |
Martin Roth | 3748aae | 2018-09-02 18:49:12 -0600 | [diff] [blame] | 16 | EXCLUDED_DIRS='^payloads/external/\|^src/vendorcode/\|^Documentation/' |
Martin Roth | ae39fc4 | 2016-07-29 14:20:55 -0600 | [diff] [blame] | 17 | EXCLUDED_FILES='to-wiki/towiki\.sh$\|vga/vga_font\|video/font\|PDCurses.*x11' |
Martin Roth | 3748aae | 2018-09-02 18:49:12 -0600 | [diff] [blame] | 18 | EXCLUDED_PHRASES='Copyright\|Ported to\|Intel®\|°C\|°F\|Athlon™\|Copyright.*©' |
Martin Roth | ae39fc4 | 2016-07-29 14:20:55 -0600 | [diff] [blame] | 19 | |
Martin Roth | d81debd | 2022-06-03 00:06:57 -0600 | [diff] [blame] | 20 | # Exit if the code isn't in a git repo |
| 21 | if [ "${IN_GIT_TREE}" -eq 0 ]; then |
| 22 | exit 0 |
Martin Roth | ae39fc4 | 2016-07-29 14:20:55 -0600 | [diff] [blame] | 23 | fi |
| 24 | |
| 25 | # 1. Get the list of files to parse and send them through grep |
| 26 | # 2. Find any characters that aren't TAB, or space (0x20) to ~ (0x7F) |
| 27 | # LF (0x10) isn't included, as it ends the grep line |
| 28 | # 3. Remove common phrases and names that have been found |
| 29 | # 4. Run the result through grep again to highlight the issues that were |
| 30 | # found. Without this step, the characters can be difficult to see. |
Martin Roth | 300b25a | 2018-09-02 18:45:43 -0600 | [diff] [blame] | 31 | # shellcheck disable=SC2046 |
Martin Roth | d81debd | 2022-06-03 00:06:57 -0600 | [diff] [blame] | 32 | ${GREP_FILES} -lP "[^\t-~]" | \ |
Martin Roth | 300b25a | 2018-09-02 18:45:43 -0600 | [diff] [blame] | 33 | grep "$INCLUDED_FILES" | \ |
| 34 | grep -v "$EXCLUDED_DIRS" | \ |
| 35 | grep -v "$EXCLUDED_FILES" | \ |
| 36 | xargs -I % \ |
| 37 | grep -n "[^ -~]" % | \ |
| 38 | grep -iv "$EXCLUDED_PHRASES" | \ |
| 39 | grep --color='auto' "[^ -~]" |