1
0
mirror of https://github.com/libssh2/libssh2.git synced 2026-10-24 03:48:58 +03:00
Files
libssh2/scripts/checksrc-all.pl
Viktor Szakats a73aa23c9f checksrc: stop disabling TYPEDEFSTRUCT globally
Silence locally in public headers. They are part of the documented
public interface, removing them would be a breaking change.

Follow-up to 35aa0b2cd7 #1910
Follow-up to 7dd7e62629 #1909
Follow-up to c07e953a2f #1908
Follow-up to 967647c4da #1907

Closes #1912
2026-05-01 14:19:03 +02:00

75 lines
1.5 KiB
Perl
Executable File

#!/usr/bin/env perl
# Copyright (C) Viktor Szakats
#
# SPDX-License-Identifier: curl
use strict;
use warnings;
use File::Basename;
use File::Find;
use Cwd 'abs_path';
my @options = (
"-i4", "-m79",
"-AFIXME", "-AERRNOVAR",
"-aaccept",
"-aatoi",
"-acalloc",
"-aclose",
"-aCreateFileA",
"-afclose",
"-afopen",
"-afprintf",
"-afree",
"-afstat",
"-amalloc",
"-aprintf",
"-arealloc",
"-arecv",
"-asend",
"-asnprintf",
"-asocket",
"-asocketpair",
"-astrdup",
"-astrtok",
"-astrtol",
"-avsnprintf",
);
my @files;
my $is_git = 0;
if(system('git rev-parse --is-inside-work-tree >/dev/null 2>&1') == 0) {
open(O, '-|', 'git', 'ls-files', '*.[ch]') || die; push @files, <O>; close(O);
$is_git = 1;
}
else {
find(sub { if(/\.[ch]$/) { push(@files, $File::Find::name) } }, ('.'));
}
if(@ARGV) {
find(sub { if(/\.[ch]$/) { push(@files, $File::Find::name) } }, @ARGV);
}
@files = grep !/\/CMakeFiles\//, @files;
@files = map { dirname($_) } @files;
my @dirs = sort { $a cmp $b } keys %{{ map { $_ => 1 } @files }};
my $scripts_dir = dirname(abs_path($0));
my $anyfailed = 0;
for my $dir (@dirs) {
if($is_git) {
@files = ();
open(O, '-|', 'git', 'ls-files', "$dir/*.[ch]") || die; push @files, <O>; close(O);
chomp(@files);
}
else {
@files = glob("$dir/*.[ch]");
}
if(@files && system("$scripts_dir/checksrc.pl", @options, @files) != 0) {
$anyfailed = 1;
}
}
exit $anyfailed;