mirror of
https://github.com/libssh2/libssh2.git
synced 2026-10-24 03:48:58 +03:00
Low-level logic copied from curl, and adapted to libssh2. Also: use secure fopen CRT functions. Credits-to: Jay Satiro Credits-to: Viktor Szakats Closes #2318
61 lines
1.3 KiB
Perl
Executable File
61 lines
1.3 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",
|
|
"-acalloc",
|
|
"-aclose",
|
|
"-afclose",
|
|
"-afree",
|
|
"-amalloc",
|
|
"-arealloc",
|
|
"-asocket",
|
|
"-berrno",
|
|
);
|
|
|
|
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]', '*.cc') || die; push @files, <O>; close(O);
|
|
$is_git = 1;
|
|
}
|
|
else {
|
|
find(sub { if(/\.([ch]|cc)$/) { push(@files, $File::Find::name) } }, ('.'));
|
|
}
|
|
if(@ARGV) {
|
|
find(sub { if(/\.([ch]|cc)$/) { 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', ":(glob)$dir/*.[ch]", ":(glob)$dir/*.cc") || die; push @files, <O>; close(O);
|
|
chomp(@files);
|
|
}
|
|
else {
|
|
@files = glob("$dir/*.[ch] $dir/*.cc");
|
|
}
|
|
if(@files && system("$scripts_dir/checksrc.pl", @options, @files) != 0) {
|
|
$anyfailed = 1;
|
|
}
|
|
}
|
|
|
|
exit $anyfailed;
|