-$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:");
"KERNEL_VERSION\\((\\d+),(\\d+),(\\d+)\\)";
Getopts("div:");
- for ($i = 1; $i <= $#lines; $i++) {
$_ = $lines[$i];
if ($state == -1) {
$_ = $lines[$i];
if ($state == -1) {
$state = compare($version, $1, $2, $3, $4);
$state = compare($version, $1, $2, $3, $4);
delete_line($i, "<del>");
$skip = ($lines[$i-1] eq "\n");
}
} else {
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;
delete_line($i, "<del>");
} elsif ($level == 0 && /^\#endif/) {
$state = -1;