#!/usr/bin/env perl # SPDX-License-Identifier: GPL-2.0 # # checkdeclares: find struct declared more than once # # Copyright 2021 Wan Jiabing # Inspired by checkincludes.pl # # This script checks for duplicate struct declares. # Note that this will not take into consideration macros so # you should run this only if you know you do have real dups # and do not have them under #ifdef's. # You could also just review the results. use strict; sub usage { print "Usage: checkdeclares.pl file1.h ...\n"; print "Warns of struct declaration duplicates\n"; exit 1; } if ($#ARGV < 0) { usage(); } my $dup_counter = 0; foreach my $file (@ARGV) { open(my $f, '<', $file) or die "Cannot open $file: $!.\n"; my %declaredstructs = (); while (<$f>) { if (m/^\s*struct\s*(\w*);$/o) { ++$declaredstructs{$1}; } } close($f); foreach my $structname (keys %declaredstructs) { if ($declaredstructs{$structname} > 1) { print "$file: struct $structname is declared more than once.\n"; ++$dup_counter; } } } if ($dup_counter == 0) { print "No duplicate struct declares found.\n"; }