require("getopts.pl");
-$re = "^\\#if LINUX_VERSION_CODE (<|<=|>|>=) " .
+$re_if = "^\\#if LINUX_VERSION_CODE (<|<=|>|>=) " .
+ "KERNEL_VERSION\\((\\d+),(\\d+),(\\d+)\\)";
+$re_elif = "^\\#elif LINUX_VERSION_CODE (<|<=|>|>=) " .
"KERNEL_VERSION\\((\\d+),(\\d+),(\\d+)\\)";
Getopts("div:");
$level = 0;
$state = -1;
- for ($i = 1; $i <= $#lines; $i++) {
+ for $i (1..$#lines) {
$_ = $lines[$i];
if ($state == -1) {
- if (/$re/) {
+ if (/$re_if/) {
$state = compare($version, $1, $2, $3, $4);
+ $done = $state;
delete_line($i, "<del>");
$skip = ($lines[$i-1] eq "\n");
}
} else {
- if ($level == 0 && /^\#else/) {
- $state = !$state;
+ if ($level == 0 && /$re_elif/) {
+ $state = compare($version, $1, $2, $3, $4);
+ $state &= !$done;
+ $done |= $state;
+ delete_line($i, "<del>");
+ } elsif ($level == 0 && /^\#else/) {
+ $state = !$done;
+ $done |= $state;
delete_line($i, "<del>");
} elsif ($level == 0 && /^\#endif/) {
$state = -1;