#!/bin/bash # `unicode_lint.sh' determines whether source files under ${dirs} directories # contain Unicode characters, and fails if any do. # # We don't recommend to call this script directly. # Instead of it, use `make lint-unicode` via root directory Makefile. # ${dirs} : target directories dirs=(./ ./cli ./tests ./tests/bench ./tests/collisions) SCRIPT_DIR="`dirname "${BASH_SOURCE[0]}"`" cd ${SCRIPT_DIR}/.. echo "Ensure no unicode character is present in source files *.{c,h}" pass=true # Scan each directory in ${dirs} for Unicode in source (*.c, *.h) files i=0 while [ $i -lt ${#dirs[@]} ] do dir=${dirs[$i]} echo dir=$dir result=$( find ${dir} -regex '.*\.\(c\|h\)$' -exec grep -P -n "[^\x00-\x7F]" {} \; -exec echo "{}: FAIL" \; ) if [[ $result ]]; then echo "$result" pass=false fi i=`expr $i + 1` done # Result if [ "$pass" = true ]; then echo "All tests successful: no unicode character detected" echo "Result: PASS" exit 0 else echo "Result: FAIL" exit 1 fi