-#!/usr/bin/env perl
-#
-# su-filter.pl
+#! /usr/bin/env perl
+# Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
#
+# Licensed under the OpenSSL license (the "License"). You may not use
+# this file except in compliance with the License. You can obtain a copy
+# in the file LICENSE in the source distribution or at
+# https://www.openssl.org/source/license.html
+
use strict;
my $in_su = 0;
if($in_su == 1) {
if(/}(.*);/) {
$out .= $_;
- print $out;
+ do_output($out);
$in_su = 0;
} elsif(/^ *\} [^\s]+(\[\d*\])* = \{/) {
$tststr = $1;
my @strucdata = structureData($data);
$out .= displayData($indent, 0, \@strucdata);
$out .= "\n$indent};\n";
- print $out;
+ do_output($out);
$in_su = 0;
}
- } elsif($incomm <= 0 && /( *)(static )?(const )?(union|struct) ([^\s]+ )?\{/) {
+ } elsif($incomm <= 0 && /( *)(static )?(const )?(union|struct) ([a-zA-Z_\$][\$0-9a-zA-Z_]+ )?\{/) {
$in_su = 1;
$indent = $1;
$out = $_;
next;
} else {
- print $_;
+ do_output($_);
}
}
if($inbrace) {
if($item eq "}") {
$inbrace --;
-
+
if(!$inbrace) {
$substruc = structureData($dataitem);
$dataitem = $substruc;
}
return $out;
}
+
+sub do_output {
+ my $out = shift;
+ # Strip any trailing whitespace
+ $out =~ s/\s+\n/\n/g;
+ print $out;
+}