summaryrefslogtreecommitdiff
path: root/support/extern-squish
blob: eb8b32e18ff7e78d924f6367b548e3673671299b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/perl
# This script finds extraneous "extern" variables in the *.c files.
# Run it from inside the main rsync directory.

use strict;

my @files = glob('*.c');

foreach my $fn (@files) {
    open(IN, '<', $fn) or die;
    undef $/; $_ = <IN>; $/ = "\n";
    close IN;
    my @externs = /^extern .*?([^[\s(*;&.]+)(?:\[.*?\])?;/mg;
    foreach my $find (@externs) {
	my @matches = /(?<!\sstruct )\b(\Q$find\E)\b/g;
	print $fn, ': ', $find, "\n" if @matches == 1;
    }
}