unicode_lint.sh 1017 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/bin/bash
  2. # `unicode_lint.sh' determines whether source files under ${dirs} directories
  3. # contain Unicode characters, and fails if any do.
  4. #
  5. # We don't recommend to call this script directly.
  6. # Instead of it, use `make lint-unicode` via root directory Makefile.
  7. # ${dirs} : target directories
  8. dirs=(./ ./cli ./tests ./tests/bench ./tests/collisions)
  9. SCRIPT_DIR="`dirname "${BASH_SOURCE[0]}"`"
  10. cd ${SCRIPT_DIR}/..
  11. echo "Ensure no unicode character is present in source files *.{c,h}"
  12. pass=true
  13. # Scan each directory in ${dirs} for Unicode in source (*.c, *.h) files
  14. i=0
  15. while [ $i -lt ${#dirs[@]} ]
  16. do
  17. dir=${dirs[$i]}
  18. echo dir=$dir
  19. result=$(
  20. find ${dir} -regex '.*\.\(c\|h\)$' -exec grep -P -n "[^\x00-\x7F]" {} \; -exec echo "{}: FAIL" \;
  21. )
  22. if [[ $result ]]; then
  23. echo "$result"
  24. pass=false
  25. fi
  26. i=`expr $i + 1`
  27. done
  28. # Result
  29. if [ "$pass" = true ]; then
  30. echo "All tests successful: no unicode character detected"
  31. echo "Result: PASS"
  32. exit 0
  33. else
  34. echo "Result: FAIL"
  35. exit 1
  36. fi