aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'contrib')
-rwxr-xr-xcontrib/kernel-tree/filter-compat-defines.sh28
1 files changed, 28 insertions, 0 deletions
diff --git a/contrib/kernel-tree/filter-compat-defines.sh b/contrib/kernel-tree/filter-compat-defines.sh
new file mode 100755
index 0000000..9d2cc08
--- /dev/null
+++ b/contrib/kernel-tree/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"