#!/bin/sh
# This file is part of the coreboot project.
#
# Copyright (C) 2016 Google Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# DESCR: Check for non-ASCII and unprintable characters

LC_ALL=C export LC_ALL

INCLUDED_FILES='\.[chsS]$\|\.asl$\|\.cb$\|\.inc$\|Kconfig\|\.ld$|\.txt\|\.hex'
EXCLUDED_DIRS='^payloads/\|^src/vendorcode/\|^Documentation/\|^build/\|^3rdparty/\|^\.git/\|^coreboot-builds/\|^util/nvidia/cbootimage'
EXCLUDED_FILES='to-wiki/towiki\.sh$\|vga/vga_font\|video/font\|PDCurses.*x11'
EXCLUDED_PHRASES='Copyright\|Ported to\|Intel®\|°C\|°F\|Athlon™\|Copyright.*©\|A-Za-zÀ-ÿ'

# Use git ls-files if the code is in a git repo, otherwise use find.
if [ -n "$(command -v git)" ] && [ -d .git ]; then
	FIND_FILES="git ls-files"
else
	FIND_FILES="find . "
fi

# 1. Get the list of files to parse and send them through grep
# 2. Find any characters that aren't TAB, or space (0x20) to ~ (0x7F)
#    LF (0x10) isn't included, as it ends the grep line
# 3. Remove common phrases and names that have been found
# 4. Run the result through grep again to highlight the issues that were
#    found.  Without this step, the characters can be difficult to see.
grep -n "[^	 -~]" \
	$(${FIND_FILES} | sed 's|^\./||' | sort | \
		grep "$INCLUDED_FILES" | \
		grep -v "$EXCLUDED_DIRS" | \
		grep -v "$EXCLUDED_FILES") | \
	grep -iv "$EXCLUDED_PHRASES" | \
	grep --color='auto' "[^	 -~]"
