Teach mkdef.pl to handle multiline declarations.
authorRichard Levitte <levitte@openssl.org>
Tue, 24 Mar 2015 14:02:51 +0000 (15:02 +0100)
committerRichard Levitte <levitte@openssl.org>
Tue, 24 Mar 2015 18:46:53 +0000 (19:46 +0100)
For the moment, this is specially crafted for DECLARE_DEPRECATED because
that's where we found the problem, but it can easily be expanded to other
types of special delarations when needed.

Reviewed-by: Matt Caswell <matt@openssl.org>
util/mkdef.pl

index b549a60..1d47561 100755 (executable)
@@ -487,7 +487,14 @@ sub do_defs
                while(<IN>) {
                        if($parens > 0) {
                                #Inside a DECLARE_DEPRECATED
-                               $parens += count_parens($_);
+                               $stored_multiline .= $_;
+                               chomp $stored_multiline;
+                               print STDERR "DEBUG: Continuing multiline DEPRECATED: $stored_multiline\n" if $debug;
+                               $parens = count_parens($stored_multiline);
+                               if ($parens == 0) {
+                                       $stored_multiline =~ /^\s*DECLARE_DEPRECATED\s*\(\s*(\w*(\s|\*|\w)*)/;
+                                       $def .= "$1(void);";
+                               }
                                next;
                        }
                        if (/\/\* Error codes for the \w+ functions\. \*\//)
@@ -881,9 +888,15 @@ sub do_defs
                                                      "EXPORT_VAR_AS_FUNCTION",
                                                      "FUNCTION");
                                } elsif (/^\s*DECLARE_DEPRECATED\s*\(\s*(\w*(\s|\*|\w)*)/) {
-                                       $def .= "$1(void);";
                                        $parens = count_parens($_);
-                                       next;
+                                       if ($parens == 0) {
+                                               $def .= "$1(void);";
+                                       } else {
+                                               $stored_multiline = $_;
+                                               chomp $stored_multiline;
+                                               print STDERR "DEBUG: Found multiline DEPRECATED starting with: $stored_multiline\n" if $debug;
+                                               next;
+                                       }
                                } elsif ($tag{'CONST_STRICT'} != 1) {
                                        if (/\{|\/\*|\([^\)]*$/) {
                                                $line = $_;