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 | |
| 7 | LC_ALL=C export LC_ALL |
| 8 | |
| 9 | INCLUDED_FILES='\.[chsS]$\|\.asl$\|\.cb$\|\.inc$\|Kconfig\|\.ld$|\.txt\|\.hex' |
Martin Roth | 3748aae | 2018-09-02 18:49:12 -0600 | [diff] [blame] | 10 | EXCLUDED_DIRS='^payloads/external/\|^src/vendorcode/\|^Documentation/' |
Martin Roth | ae39fc4 | 2016-07-29 14:20:55 -0600 | [diff] [blame] | 11 | 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] | 12 | EXCLUDED_PHRASES='Copyright\|Ported to\|Intel®\|°C\|°F\|Athlon™\|Copyright.*©' |
Martin Roth | ae39fc4 | 2016-07-29 14:20:55 -0600 | [diff] [blame] | 13 | |
Martin Roth | 300b25a | 2018-09-02 18:45:43 -0600 | [diff] [blame] | 14 | # Exit if git isn't present or the code isn't in a git repo |
| 15 | if [ -z "$(command -v git)" ] || \ |
| 16 | [ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" != "true" ] |
Alex Thiessen | 73f19dc | 2018-01-16 23:05:48 +0000 | [diff] [blame] | 17 | then |
Martin Roth | 300b25a | 2018-09-02 18:45:43 -0600 | [diff] [blame] | 18 | exit |
Martin Roth | ae39fc4 | 2016-07-29 14:20:55 -0600 | [diff] [blame] | 19 | fi |
| 20 | |
| 21 | # 1. Get the list of files to parse and send them through grep |
| 22 | # 2. Find any characters that aren't TAB, or space (0x20) to ~ (0x7F) |
| 23 | # LF (0x10) isn't included, as it ends the grep line |
| 24 | # 3. Remove common phrases and names that have been found |
| 25 | # 4. Run the result through grep again to highlight the issues that were |
| 26 | # found. Without this step, the characters can be difficult to see. |
Martin Roth | 300b25a | 2018-09-02 18:45:43 -0600 | [diff] [blame] | 27 | # shellcheck disable=SC2046 |
| 28 | git grep -lP "[^\t-~]" | \ |
| 29 | grep "$INCLUDED_FILES" | \ |
| 30 | grep -v "$EXCLUDED_DIRS" | \ |
| 31 | grep -v "$EXCLUDED_FILES" | \ |
| 32 | xargs -I % \ |
| 33 | grep -n "[^ -~]" % | \ |
| 34 | grep -iv "$EXCLUDED_PHRASES" | \ |
| 35 | grep --color='auto' "[^ -~]" |