]> rtime.felk.cvut.cz Git - socketcan-devel.git/commitdiff
Add support for #elif.
authorthuermann <thuermann@030b6a49-0b11-0410-94ab-b0dab22257f2>
Mon, 17 Sep 2007 07:59:34 +0000 (07:59 +0000)
committerthuermann <thuermann@030b6a49-0b11-0410-94ab-b0dab22257f2>
Mon, 17 Sep 2007 07:59:34 +0000 (07:59 +0000)
git-svn-id: svn://svn.berlios.de//socketcan/trunk@465 030b6a49-0b11-0410-94ab-b0dab22257f2

strip-src

index 974ce0205bc654e3bbb437a5270a83508b4c6b14..e169dde7e9cb44edce3421abb83ce58ed11e0747 100755 (executable)
--- a/strip-src
+++ b/strip-src
@@ -28,7 +28,9 @@
 
 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:");
@@ -86,17 +88,24 @@ sub strip_kversion {
     $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;