diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2017-10-11 05:26:04 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2017-10-11 15:50:29 +0200 |
commit | f6369780a862037dca429d3dd7aa2f176e42d6dd (patch) | |
tree | d9d03104f60c6cc46722fb74199c1ad3612af2fe /kernel-tree-scripts | |
parent | f57c2d64bfc646c16fd1f30c8e3557183f8a5369 (diff) |
contrib: filter compat lines
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'kernel-tree-scripts')
-rwxr-xr-x | kernel-tree-scripts/filter-compat-defines.sh | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/kernel-tree-scripts/filter-compat-defines.sh b/kernel-tree-scripts/filter-compat-defines.sh new file mode 100755 index 0000000..9d2cc08 --- /dev/null +++ b/kernel-tree-scripts/filter-compat-defines.sh @@ -0,0 +1,28 @@ +#!/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" |