Files
amneziawg-linux-kernel-module/kernel-tree-scripts/filter-compat-defines.sh
Jason A. Donenfeld f6369780a8 contrib: filter compat lines
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2017-10-11 15:50:29 +02:00

29 lines
682 B
Bash
Executable File

#!/bin/bash
silent=0
level=0
ifs=( )
while IFS= read -r line; do
if [[ $line =~ ^[[:space:]]*(#if.*) ]]; then
ifs[level++]=0
if [[ ${BASH_REMATCH[1]} == "#ifndef COMPAT_CANNOT_"* ]]; then
ifs[level-1]=-1
continue
elif [[ ${BASH_REMATCH[1]} == "#ifdef COMPAT_CANNOT_"* ]]; then
ifs[level-1]=1
((++silent))
continue
fi
elif [[ $line =~ ^[[:space:]]*#else && ${ifs[level-1]} -ne 0 ]]; then
((ifs[level-1]*=-1))
((silent+=ifs[level-1]))
continue
elif [[ $line =~ ^[[:space:]]*#endif ]]; then
((--level))
[[ ${ifs[level]} -eq 1 ]] && ((--silent))
[[ ${ifs[level]} -ne 0 ]] && continue
fi
[[ $silent -eq 0 ]] && printf '%s\n' "$line"
done < "$1"