Teach mkdef.pl to handle multiline declarations.
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>
diff --git a/util/mkdef.pl b/util/mkdef.pl
index b549a60..1d47561 100755
--- a/util/mkdef.pl
+++ b/util/mkdef.pl
@@ -487,7 +487,14 @@
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 @@
"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 = $_;