aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/kernel-tree-scripts
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2017-10-11 05:26:04 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2017-10-11 15:50:29 +0200
commitf6369780a862037dca429d3dd7aa2f176e42d6dd (patch)
treed9d03104f60c6cc46722fb74199c1ad3612af2fe /kernel-tree-scripts
parentreceive: disable bh before using stats seq lock (diff)
downloadwireguard-linux-compat-f6369780a862037dca429d3dd7aa2f176e42d6dd.tar.xz
wireguard-linux-compat-f6369780a862037dca429d3dd7aa2f176e42d6dd.zip
contrib: filter compat lines
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'kernel-tree-scripts')
-rwxr-xr-xkernel-tree-scripts/filter-compat-defines.sh28
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"