1*27162e4eSAndroid Build Coastguard Worker#!/bin/bash 2*27162e4eSAndroid Build Coastguard Worker 3*27162e4eSAndroid Build Coastguard Worker# `unicode_lint.sh' determines whether source files under the ./lib/, ./tests/ and ./programs/ directories 4*27162e4eSAndroid Build Coastguard Worker# contain Unicode characters, and fails if any do. 5*27162e4eSAndroid Build Coastguard Worker# 6*27162e4eSAndroid Build Coastguard Worker# See https://github.com/lz4/lz4/issues/1018 7*27162e4eSAndroid Build Coastguard Worker 8*27162e4eSAndroid Build Coastguard Workerecho "Ensure no unicode character is present in source files *.{c,h}" 9*27162e4eSAndroid Build Coastguard Workerpass=true 10*27162e4eSAndroid Build Coastguard Worker 11*27162e4eSAndroid Build Coastguard Worker# Scan ./lib/ for Unicode in source (*.c, *.h) files 12*27162e4eSAndroid Build Coastguard Workerecho "Scanning lib/" 13*27162e4eSAndroid Build Coastguard Workerresult=$( 14*27162e4eSAndroid Build Coastguard Worker find ./lib/ -regex '.*\.\(c\|h\)$' -exec grep -P -n "[^\x00-\x7F]" {} \; -exec echo "{}: FAIL" \; 15*27162e4eSAndroid Build Coastguard Worker) 16*27162e4eSAndroid Build Coastguard Workerif [[ $result ]]; then 17*27162e4eSAndroid Build Coastguard Worker echo "$result" 18*27162e4eSAndroid Build Coastguard Worker pass=false 19*27162e4eSAndroid Build Coastguard Workerfi 20*27162e4eSAndroid Build Coastguard Worker 21*27162e4eSAndroid Build Coastguard Worker# Scan ./programs/ for Unicode in source (*.c, *.h) files 22*27162e4eSAndroid Build Coastguard Workerecho "Scanning programs/" 23*27162e4eSAndroid Build Coastguard Workerresult=$( 24*27162e4eSAndroid Build Coastguard Worker find ./programs/ -regex '.*\.\(c\|h\)$' -exec grep -P -n "[^\x00-\x7F]" {} \; -exec echo "{}: FAIL" \; 25*27162e4eSAndroid Build Coastguard Worker) 26*27162e4eSAndroid Build Coastguard Workerif [[ $result ]]; then 27*27162e4eSAndroid Build Coastguard Worker echo "$result" 28*27162e4eSAndroid Build Coastguard Worker pass=false 29*27162e4eSAndroid Build Coastguard Workerfi 30*27162e4eSAndroid Build Coastguard Worker 31*27162e4eSAndroid Build Coastguard Worker# Scan ./tests/ for Unicode in source (*.c, *.h) files 32*27162e4eSAndroid Build Coastguard Workerecho "Scanning tests/" 33*27162e4eSAndroid Build Coastguard Workerresult=$( 34*27162e4eSAndroid Build Coastguard Worker find ./tests/ -regex '.*\.\(c\|h\)$' -exec grep -P -n "[^\x00-\x7F]" {} \; -exec echo "{}: FAIL" \; 35*27162e4eSAndroid Build Coastguard Worker) 36*27162e4eSAndroid Build Coastguard Workerif [[ $result ]]; then 37*27162e4eSAndroid Build Coastguard Worker echo "$result" 38*27162e4eSAndroid Build Coastguard Worker pass=false 39*27162e4eSAndroid Build Coastguard Workerfi 40*27162e4eSAndroid Build Coastguard Worker 41*27162e4eSAndroid Build Coastguard Workerif [ "$pass" = true ]; then 42*27162e4eSAndroid Build Coastguard Worker echo "All tests successful: no unicode character detected" 43*27162e4eSAndroid Build Coastguard Worker echo "Result: PASS" 44*27162e4eSAndroid Build Coastguard Worker exit 0 45*27162e4eSAndroid Build Coastguard Workerelse 46*27162e4eSAndroid Build Coastguard Worker echo "Result: FAIL" 47*27162e4eSAndroid Build Coastguard Worker exit 1 48*27162e4eSAndroid Build Coastguard Workerfi 49