checksrc-all.pl (844B)
1 #!/usr/bin/env perl 2 # Copyright (C) Viktor Szakats 3 # 4 # SPDX-License-Identifier: curl 5 6 use strict; 7 use warnings; 8 9 use File::Basename; 10 use File::Find; 11 use Cwd 'abs_path'; 12 13 my @files; 14 if(system('git rev-parse --is-inside-work-tree >/dev/null 2>&1') == 0) { 15 @files = `git ls-files '*.[ch]'`; 16 } 17 else { 18 find(sub { if(/\.[ch]$/) { push(@files, $File::Find::name) } }, ('.')); 19 } 20 if(@ARGV) { 21 find(sub { if(/\.[ch]$/) { push(@files, $File::Find::name) } }, @ARGV); 22 } 23 24 @files = grep !/\/CMakeFiles\//, @files; 25 @files = map { dirname($_) } @files; 26 my @dirs = sort { $a cmp $b } keys %{{ map { $_ => 1 } @files }}; 27 28 my $scripts_dir = dirname(abs_path($0)); 29 my $anyfailed = 0; 30 31 for my $dir (@dirs) { 32 @files = glob("$dir/*.[ch]"); 33 if(@files && system("$scripts_dir/checksrc.pl", @files) != 0) { 34 $anyfailed = 1; 35 } 36 } 37 38 exit $anyfailed;