mirror of
https://github.com/curl/curl.git
synced 2026-01-18 17:21:26 +01:00
- add 'use warnings' and 'use strict' where missing from Perl scripts. - fix 'Use of uninitialized value'. - fix missing declarations. - test1140.pl: fix 'Possible precedence issue with control flow operator'. - fix other misc issues. Most actual errors found during this PR were fixed and merged via separate PRs. Likely there are remaining warnings not found and fixed in this PR. Closes #17877
109 lines
2.7 KiB
Perl
Executable File
109 lines
2.7 KiB
Perl
Executable File
#!/usr/bin/env perl
|
|
#***************************************************************************
|
|
# _ _ ____ _
|
|
# Project ___| | | | _ \| |
|
|
# / __| | | | |_) | |
|
|
# | (__| |_| | _ <| |___
|
|
# \___|\___/|_| \_\_____|
|
|
#
|
|
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
|
#
|
|
# This software is licensed as described in the file COPYING, which
|
|
# you should have received as part of this distribution. The terms
|
|
# are also available at https://curl.se/docs/copyright.html.
|
|
#
|
|
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
|
# copies of the Software, and permit persons to whom the Software is
|
|
# furnished to do so, under the terms of the COPYING file.
|
|
#
|
|
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
|
# KIND, either express or implied.
|
|
#
|
|
# SPDX-License-Identifier: curl
|
|
#
|
|
###########################################################################
|
|
|
|
# This script accepts a source file as input on the command line.
|
|
#
|
|
# It first loads the 'symbols-in-versions' document and stores a lookup
|
|
# table for all known symbols for which version they were introduced.
|
|
#
|
|
# It then scans the given source file to dig up all symbols starting with CURL.
|
|
# Finally, it sorts the internal list of found symbols (using the version
|
|
# number as sort key) and then it outputs the most recent version number and
|
|
# the symbols from that version that are used.
|
|
#
|
|
# Usage:
|
|
#
|
|
# version-check.pl [source file]
|
|
#
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
open(S, "<../libcurl/symbols-in-versions") || die;
|
|
|
|
my %doc;
|
|
my %rem;
|
|
while(<S>) {
|
|
if(/(^CURL[^ \n]*) *(.*)/) {
|
|
my ($sym, $rest)=($1, $2);
|
|
my @a=split(/ +/, $rest);
|
|
|
|
$doc{$sym}=$a[0]; # when it was introduced
|
|
|
|
if($a[2]) {
|
|
# this symbol is documented to have been present the last time
|
|
# in this release
|
|
$rem{$sym}=$a[2];
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
close(S);
|
|
|
|
sub age {
|
|
my ($ver)=@_;
|
|
|
|
my @s=split(/\./, $ver);
|
|
return $s[0]*10000+$s[1]*100+($s[2] || 0);
|
|
}
|
|
|
|
my %used;
|
|
open(C, "<$ARGV[0]") || die;
|
|
|
|
while(<C>) {
|
|
if(/\W(CURL[_A-Z0-9v]+)\W/) {
|
|
#print "$1\n";
|
|
$used{$1}++;
|
|
}
|
|
}
|
|
|
|
close(C);
|
|
|
|
sub sortversions {
|
|
my $r = age($doc{$a}) <=> age($doc{$b});
|
|
if(!$r) {
|
|
$r = $a cmp $b;
|
|
}
|
|
return $r;
|
|
}
|
|
|
|
my @recent = reverse sort sortversions keys %used;
|
|
|
|
# the most recent symbol
|
|
my $newsym = $recent[0];
|
|
# the most recent version
|
|
my $newver = $doc{$newsym};
|
|
|
|
print "The scanned source uses these symbols introduced in $newver:\n";
|
|
|
|
for my $w (@recent) {
|
|
if($doc{$w} eq $newver) {
|
|
printf " $w\n";
|
|
next;
|
|
}
|
|
last;
|
|
}
|