From 2ec54556d4e3f3ab551b5298adab0c703d85a463 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Wed, 9 Jul 2025 21:18:29 +0200 Subject: [PATCH] scripts: enable strict warnings in Perl where missing, fix fallouts - 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 --- .github/scripts/badwords.pl | 10 ++++- .github/scripts/cleancmd.pl | 5 +++ .github/scripts/cmp-config.pl | 3 ++ .github/scripts/randcurl.pl | 12 ++++++ .github/scripts/trimmarkdownheader.pl | 5 ++- .github/scripts/verify-examples.pl | 9 ++-- .github/scripts/verify-synopsis.pl | 5 ++- docs/examples/adddocsref.pl | 5 ++- docs/examples/version-check.pl | 5 ++- docs/libcurl/mksymbolsmanpage.pl | 2 + docs/libcurl/symbols.pl | 7 ++- lib/optiontable.pl | 30 ++++++++----- scripts/cd2cd | 10 ++++- scripts/cdall | 3 ++ scripts/ciconfig.pl | 8 ++++ scripts/cijobs.pl | 11 +++++ scripts/delta | 3 ++ scripts/extract-unit-protos | 6 +++ scripts/managen | 61 +++++++++++++++------------ scripts/mdlinkcheck | 9 +++- scripts/nroff2cd | 7 ++- scripts/randdisable | 5 +++ scripts/release-notes.pl | 13 +++++- scripts/singleuse.pl | 10 +++-- src/mk-file-embed.pl | 5 ++- src/mkhelp.pl | 14 ++++-- tests/allversions.pm | 7 ++- tests/http2-server.pl | 3 ++ tests/http3-server.pl | 3 ++ tests/libtest/mk-lib1521.pl | 4 ++ tests/libtest/test1013.pl | 5 ++- tests/libtest/test1022.pl | 3 ++ tests/libtest/test307.pl | 5 ++- tests/libtest/test610.pl | 3 ++ tests/libtest/test613.pl | 3 ++ tests/memanalyze.pl | 48 +++++++++++++++++---- tests/runtests.pl | 2 +- tests/test1140.pl | 9 +++- tests/test1175.pl | 2 +- tests/test1275.pl | 7 ++- tests/test1276.pl | 5 ++- tests/test1488.pl | 5 ++- tests/test1707.pl | 2 +- tests/test971.pl | 9 ++++ tests/testcurl.pl | 32 ++++++++------ 45 files changed, 323 insertions(+), 97 deletions(-) diff --git a/.github/scripts/badwords.pl b/.github/scripts/badwords.pl index fe30120a6f..e51d99f0d1 100755 --- a/.github/scripts/badwords.pl +++ b/.github/scripts/badwords.pl @@ -13,7 +13,15 @@ # # ---(accepted word) # -my $w; + +use strict; +use warnings; + +my @whitelist; +my %alt; +my %exactcase; + +my @w; while() { chomp; if($_ =~ /^#/) { diff --git a/.github/scripts/cleancmd.pl b/.github/scripts/cleancmd.pl index 283a9f4e93..7b79c2e65a 100755 --- a/.github/scripts/cleancmd.pl +++ b/.github/scripts/cleancmd.pl @@ -10,6 +10,11 @@ # might have a problem with that we still deem is fine. # +use strict; +use warnings; + +my @asyms; + open(S, "<./docs/libcurl/symbols-in-versions") || die "can't find symbols-in-versions"; while() { diff --git a/.github/scripts/cmp-config.pl b/.github/scripts/cmp-config.pl index cb47870fe3..88df37b795 100755 --- a/.github/scripts/cmp-config.pl +++ b/.github/scripts/cmp-config.pl @@ -23,6 +23,9 @@ # ########################################################################### +use strict; +use warnings; + my $autotools = $ARGV[0]; my $cmake = $ARGV[1]; diff --git a/.github/scripts/randcurl.pl b/.github/scripts/randcurl.pl index 84804d6960..c07ba9b7de 100755 --- a/.github/scripts/randcurl.pl +++ b/.github/scripts/randcurl.pl @@ -18,6 +18,9 @@ # directory where it runs. # +use strict; +use warnings; + my $curl = "../src/curl"; my $url = "localhost:7777"; # not listening to this @@ -31,6 +34,14 @@ if(!$seconds) { } print "Run $curl for $seconds seconds\n"; +my @opt; +my %arg; +my %uniq; +my %allrc; + +my $totalargs = 0; +my $totalcmds = 0; + my $counter = 0xabcdef + time(); sub getnum { my ($max) = @_; @@ -164,6 +175,7 @@ sub runconfig { my $o = getnum($nopts); my $option = $opt[$o]; my $ar = ""; + $uniq{$option} = 0 if(!exists $uniq{$option}); $uniq{$option}++; if($arg{$option}) { $ar = " ".randarg(); diff --git a/.github/scripts/trimmarkdownheader.pl b/.github/scripts/trimmarkdownheader.pl index 9c623730b9..89b2e7d9fd 100755 --- a/.github/scripts/trimmarkdownheader.pl +++ b/.github/scripts/trimmarkdownheader.pl @@ -7,7 +7,10 @@ # Outputs: the same file, minus the header # -my $f = $ARGV[0]; +use strict; +use warnings; + +my $f = $ARGV[0] || ''; open(F, "<$f") or die; diff --git a/.github/scripts/verify-examples.pl b/.github/scripts/verify-examples.pl index 5853f46b56..27c4de6db8 100755 --- a/.github/scripts/verify-examples.pl +++ b/.github/scripts/verify-examples.pl @@ -23,12 +23,15 @@ # ########################################################################### +use strict; +use warnings; + my @files = @ARGV; my $cfile = "test.c"; my $check = "./scripts/checksrc.pl"; -my $error; +my $error = 0; -if($files[0] eq "-h") { +if(!@files || $files[0] eq "-h") { print "Usage: verify-examples [markdown pages]\n"; exit; } @@ -82,7 +85,7 @@ sub extract { return ($fail ? 0 : $l); } -my $count; +my $count = 0; for my $m (@files) { #print "Verify $m\n"; my $out = extract($m); diff --git a/.github/scripts/verify-synopsis.pl b/.github/scripts/verify-synopsis.pl index aa26917946..1c6b00b60b 100755 --- a/.github/scripts/verify-synopsis.pl +++ b/.github/scripts/verify-synopsis.pl @@ -23,10 +23,13 @@ # ########################################################################### +use strict; +use warnings; + my @files = @ARGV; my $cfile = "test.c"; -if($files[0] eq "-h") { +if(!@files || $files[0] eq "-h") { print "Usage: verify-synopsis [man pages]\n"; exit; } diff --git a/docs/examples/adddocsref.pl b/docs/examples/adddocsref.pl index e2e2553dc5..aba9abe2a0 100755 --- a/docs/examples/adddocsref.pl +++ b/docs/examples/adddocsref.pl @@ -25,9 +25,12 @@ # pass files as argument(s) +use strict; +use warnings; + my $docroot="https://curl.se/libcurl/c"; -for $f (@ARGV) { +for my $f (@ARGV) { open(NEW, ">$f.new"); open(F, "<$f"); while() { diff --git a/docs/examples/version-check.pl b/docs/examples/version-check.pl index 932d154bdb..bc065770bc 100755 --- a/docs/examples/version-check.pl +++ b/docs/examples/version-check.pl @@ -38,6 +38,9 @@ # version-check.pl [source file] # +use strict; +use warnings; + open(S, "<../libcurl/symbols-in-versions") || die; my %doc; @@ -64,7 +67,7 @@ sub age { my ($ver)=@_; my @s=split(/\./, $ver); - return $s[0]*10000+$s[1]*100+$s[2]; + return $s[0]*10000+$s[1]*100+($s[2] || 0); } my %used; diff --git a/docs/libcurl/mksymbolsmanpage.pl b/docs/libcurl/mksymbolsmanpage.pl index a79688953c..c70e994957 100755 --- a/docs/libcurl/mksymbolsmanpage.pl +++ b/docs/libcurl/mksymbolsmanpage.pl @@ -22,6 +22,8 @@ # * SPDX-License-Identifier: curl # * # *************************************************************************** +use strict; +use warnings; use POSIX qw(strftime); my @ts; diff --git a/docs/libcurl/symbols.pl b/docs/libcurl/symbols.pl index 1105ae66b6..1751a4887d 100755 --- a/docs/libcurl/symbols.pl +++ b/docs/libcurl/symbols.pl @@ -44,12 +44,15 @@ # #endif # # +use strict; +use warnings; + open F, " > =end comment =cut +use strict; +use warnings; + my $cd2cd = "0.1"; # to keep check my $dir; my $extension; my $inplace = 0; while(1) { - if($ARGV[0] eq "--in-place") { + if(@ARGV && $ARGV[0] eq "--in-place") { shift @ARGV; $inplace = 1; } @@ -84,6 +87,9 @@ sub single { my $start = 0; my $d; my $line = 0; + my $salist = 0; + my $copyright; + my $spdx; open(F, "<:crlf", "$f") || return 1; while() { @@ -221,6 +227,6 @@ if($inplace) { single($a); } } -else { +elsif(@ARGV) { exit single($ARGV[0]); } diff --git a/scripts/cdall b/scripts/cdall index 507ccc6be2..aab41b6505 100755 --- a/scripts/cdall +++ b/scripts/cdall @@ -25,6 +25,9 @@ # provide all dir names to scan on the cmdline +use strict; +use warnings; + sub convert { my ($dir)=@_; opendir(my $dh, $dir) || die "could not open $dir"; diff --git a/scripts/ciconfig.pl b/scripts/ciconfig.pl index 93358def21..1d8f235564 100755 --- a/scripts/ciconfig.pl +++ b/scripts/ciconfig.pl @@ -23,6 +23,14 @@ # ########################################################################### +use strict; +use warnings; + +my %with; +my %without; +my %used; +my %avail; + # these options are enabled by default in the sense that they will attempt to # check for and use this feature without the configure flag my %defaulton = ( diff --git a/scripts/cijobs.pl b/scripts/cijobs.pl index 56916bcd82..2be9d2565c 100755 --- a/scripts/cijobs.pl +++ b/scripts/cijobs.pl @@ -23,6 +23,9 @@ # ########################################################################### +use strict; +use warnings; + my %filelevel= ('file' => 1, 'service' => 1); @@ -39,6 +42,8 @@ sub submit { } } +my %job; + sub githubactions { my ($tag)=@_; my @files= `git ls-tree -r --name-only $tag .github/workflows 2>/dev/null`; @@ -341,6 +346,8 @@ sub circle { my $cmds; my $jobs; my $workflow; + my $cmdname; + my $jobname; $job{'file'} = ".circleci/config.yml"; $job{'service'} = "circleci"; while() { @@ -408,6 +415,10 @@ sub zuul { my %job; my $line=0; my $type; + my $jobmode; + my $apt = 0; + my $env = 0; + my $envcont; $job{'file'} = "zuul.d/jobs.yaml"; $job{'service'} = "zuul"; while() { diff --git a/scripts/delta b/scripts/delta index f950077774..3aab7e5795 100755 --- a/scripts/delta +++ b/scripts/delta @@ -30,6 +30,9 @@ # # In the git clone root, invoke 'scripts/delta [release tag]' +use strict; +use warnings; + $start = $ARGV[0]; if($start eq "-h") { diff --git a/scripts/extract-unit-protos b/scripts/extract-unit-protos index 48fa1e8791..80c2831ede 100755 --- a/scripts/extract-unit-protos +++ b/scripts/extract-unit-protos @@ -23,6 +23,12 @@ # ########################################################################### +use strict; +use warnings; + +my @proto; +my %inc; + sub scanfile { my ($file) = @_; open(F, "<$file") || die "$file failed"; diff --git a/scripts/managen b/scripts/managen index bf5bca5b1a..e4fccdc065 100755 --- a/scripts/managen +++ b/scripts/managen @@ -39,6 +39,9 @@ Unfortunately it seems some perls like msysgit cannot handle a global input-only =end comment =cut +use strict; +use warnings; + my %optshort; my %optlong; my %helplong; @@ -65,7 +68,7 @@ my $indent = 4; sub manpageify { my ($k)=@_; my $l; - my $trail; + my $trail = ''; # the matching pattern might include a trailing dot that cannot be part of # the option name if($k =~ s/\.$//) { @@ -127,8 +130,10 @@ sub justline { sub lastline { my ($lvl, @line) = @_; + my $l = 0; $line[0] =~ s/^( +)//; - prefixline($lvl * $indent + length($1)); + $l = length($1) if($1); + prefixline($lvl * $indent + $l); my $prev = 0; for(@line) { printf "%s%s", $prev?" ":"", $_; @@ -174,9 +179,11 @@ sub printdesc { } else { my $p = -1; - my $para; + my $pnum; + my $para = ''; for my $l (@desc) { - my $lvl; + my $lvl = 0; + my $lvlnum; if($l !~ /^[\n\r]+/) { # get the indent level off the string $l =~ s/^\[([0-9q]*)\]//; @@ -186,15 +193,19 @@ sub printdesc { # the previous was quoted, this is not print "\n"; } - if($lvl != $p) { - outputpara($baselvl + $p, $para); + if($lvl ne $p) { + $pnum = $p; + $pnum =~ s/q$//; + outputpara($baselvl + $pnum, $para); $para = ""; } if($lvl =~ /q/) { # quoted, do not right-justify chomp $l; - lastline($baselvl + $lvl + 1, $l); - my $w = ($baselvl + $lvl + 1) * $indent + length($l); + $lvlnum = $lvl; + $lvlnum =~ s/q$//; + lastline($baselvl + $lvlnum + 1, $l); + my $w = ($baselvl + $lvlnum + 1) * $indent + length($l); if($w > $colwidth) { print STDERR "ERROR: $w columns is too long\n"; print STDERR "$l\n"; @@ -207,7 +218,9 @@ sub printdesc { $p = $lvl; } - outputpara($baselvl + $p, $para); + $pnum = $p; + $pnum =~ s/q$//; + outputpara($baselvl + $pnum, $para); } } @@ -281,10 +294,11 @@ sub render { my $header = 0; # if $top is TRUE, it means a top-level page and not a command line option my $top = ($line == 1); - my $quote; - my $level; + my $quote = 0; + my $level = 0; my $finalblank; - $start = 0; + my $blankline = 0; + my $start = 0; while(<$fh>) { my $d = $_; @@ -575,7 +589,7 @@ sub single { $protocols=$1; } elsif(/^See-also: +(.+)/i) { - if($seealso) { + if(@seealso) { print STDERR "ERROR: duplicated See-also in $f\n"; return 1; } @@ -666,10 +680,6 @@ sub single { my @desc = render($manpage, $fh, $f, $line); close($fh); - if($tablemode) { - # end of table - push @desc, ".RE\n.IP\n"; - } my $opt; if(defined($short) && $long) { @@ -802,7 +812,7 @@ sub single { my @m=split(/ /, $mutexed); my $mstr; my $num = scalar(@m); - my $count; + my $count = 0; for my $k (@m) { if(!$helplong{$k}) { print STDERR "WARN: $f mutexes a non-existing option: $k\n"; @@ -876,13 +886,13 @@ sub single { push @foot, seealso($standalone, $mstr); print "\n"; - my $f = join("", @foot); + my $ft = join("", @foot); if($manpage) { - $f =~ s/ +\z//; # remove trailing space - print "$f\n"; + $ft =~ s/ +\z//; # remove trailing space + print "$ft\n"; } else { - printdesc($manpage, 2, "[1]$f"); + printdesc($manpage, 2, "[1]$ft"); } return 0; } @@ -950,8 +960,8 @@ sub getshortlong { sub indexoptions { my ($dir, @files) = @_; - foreach my $f (@files) { - getshortlong($dir, $f); + foreach my $file (@files) { + getshortlong($dir, $file); } } @@ -1122,7 +1132,6 @@ sub listglobals { } close(F); } - return $ret if($ret); for my $e (0 .. $#globalopts) { $globals .= sprintf "%s--%s", $e?($globalopts[$e+1] ? ", " : " and "):"", $globalopts[$e],; @@ -1257,7 +1266,7 @@ sub getargs { my $dir = "."; my $include = "../../include"; -my $cmd = shift @ARGV; +my $cmd = shift @ARGV || ''; check: if($cmd eq "-d") { diff --git a/scripts/mdlinkcheck b/scripts/mdlinkcheck index 33fcac9de6..f5b123a24a 100755 --- a/scripts/mdlinkcheck +++ b/scripts/mdlinkcheck @@ -23,6 +23,9 @@ # ########################################################################### +use strict; +use warnings; + my %whitelist = ( 'https://curl.se/' => 1, 'https://curl.se/changes.html' => 1, @@ -70,6 +73,9 @@ my %whitelist = ( ); +my %url; +my %flink; + # list all .md files in the repo my @files=`git ls-files '**.md'`; @@ -127,6 +133,7 @@ sub checkurl { print "check $url\n"; my $curlcmd="curl -ILfsm10 --retry 2 --retry-delay 5 -A \"Mozilla/curl.se link-probe\""; + $url =~ s/\+/%2B/g; my @content = `$curlcmd \"$url\"`; if(!$content[0]) { print STDERR "FAIL\n"; @@ -146,7 +153,7 @@ for my $u (sort keys %url) { my $r = checkurl($u); if($r) { - for my $f (split(/ /, $url{$l})) { + for my $f (split(/ /, $url{$u})) { printf "%s ERROR links to missing URL %s\n", $f, $u; $error++; } diff --git a/scripts/nroff2cd b/scripts/nroff2cd index 17361b227b..b0308b6ef0 100755 --- a/scripts/nroff2cd +++ b/scripts/nroff2cd @@ -36,6 +36,9 @@ for code. =end comment =cut +use strict; +use warnings; + my $nroff2cd = "0.1"; # to keep check sub single { @@ -189,4 +192,6 @@ HEAD return !$header; } -exit single($ARGV[0]); +if(@ARGV) { + exit single($ARGV[0]); +} diff --git a/scripts/randdisable b/scripts/randdisable index f8a7a147ed..1ccaf6f10d 100755 --- a/scripts/randdisable +++ b/scripts/randdisable @@ -20,8 +20,13 @@ # - edit the @tls array to include all TLS backends you can build with # - do a checkout in a ram-based filesystem # +use strict; +use warnings; + use List::Util qw/shuffle/; +my @disable; + sub getoptions { my @all = `./configure --help`; for my $o (@all) { diff --git a/scripts/release-notes.pl b/scripts/release-notes.pl index 741235a3e6..331941bc9b 100755 --- a/scripts/release-notes.pl +++ b/scripts/release-notes.pl @@ -54,7 +54,10 @@ # ################################################ -my $cleanup = ($ARGV[0] eq "cleanup"); +use strict; +use warnings; + +my $cleanup = (@ARGV && $ARGV[0] eq "cleanup"); my @gitlog=`git log @^{/RELEASE-NOTES:.synced}..` if(!$cleanup); my @releasenotes=`cat RELEASE-NOTES`; @@ -120,6 +123,12 @@ sub extract { # false alarm, not a valid line } +my @fixes; +my @closes; +my @bug; +my @line; +my %moreinfo; + my $short; my $first; for my $l (@gitlog) { @@ -167,7 +176,7 @@ if($first) { # call at the end of a parsed commit sub onecommit { my ($short)=@_; - my $ref; + my $ref = ''; if($dupe{$short}) { # this git commit message was found in the file diff --git a/scripts/singleuse.pl b/scripts/singleuse.pl index 0251594b12..6156496019 100755 --- a/scripts/singleuse.pl +++ b/scripts/singleuse.pl @@ -33,13 +33,16 @@ # --unit : built to support unit tests # +use strict; +use warnings; + my $unittests; -if($ARGV[0] eq "--unit") { +if(@ARGV && $ARGV[0] eq "--unit") { $unittests = "tests/unit "; shift @ARGV; } -my $file = $ARGV[0]; +my $file = $ARGV[0] || ''; my %wl = ( 'Curl_xfer_write_resp' => 'internal api', @@ -178,7 +181,6 @@ open(N, "nm $file|") || my %exist; my %uses; -my $file; while() { my $l = $_; chomp $l; @@ -204,7 +206,7 @@ while() { } close(N); -my $err; +my $err = 0; for(sort keys %exist) { #printf "%s is defined in %s, used by: %s\n", $_, $exist{$_}, $uses{$_}; if(!$uses{$_}) { diff --git a/src/mk-file-embed.pl b/src/mk-file-embed.pl index 17530cfa14..fcd8e04136 100755 --- a/src/mk-file-embed.pl +++ b/src/mk-file-embed.pl @@ -23,8 +23,11 @@ # ########################################################################### +use strict; +use warnings; + my $varname = "var"; -if($ARGV[0] eq "--var") { +if(@ARGV && $ARGV[0] eq "--var") { shift; $varname = shift @ARGV; } diff --git a/src/mkhelp.pl b/src/mkhelp.pl index 782c466524..d1a040c0cc 100755 --- a/src/mkhelp.pl +++ b/src/mkhelp.pl @@ -23,11 +23,17 @@ # ########################################################################### -if($ARGV[0] eq "-c") { - $c=1; +use strict; +use warnings; + +my $c = 0; +if(@ARGV && $ARGV[0] eq "-c") { + $c = 1; shift @ARGV; } +my @out; + push @out, " _ _ ____ _\n"; push @out, " ___| | | | _ \\| |\n"; push @out, " / __| | | | |_) | |\n"; @@ -67,8 +73,8 @@ if($c) my $gzippedContent; IO::Compress::Gzip::gzip( \$content, \$gzippedContent, Level => 9, TextFlag => 1, Time=>0) or die "gzip failed:"; - $gzip = length($content); - $gzipped = length($gzippedContent); + my $gzip = length($content); + my $gzipped = length($gzippedContent); print < diff --git a/tests/allversions.pm b/tests/allversions.pm index f38612403c..7673a5fcca 100644 --- a/tests/allversions.pm +++ b/tests/allversions.pm @@ -22,9 +22,14 @@ # ########################################################################### -# populate the has %pastversion hash table with the version number as key and +# populate the %pastversion hash table with the version number as key and # release date as value +use strict; +use warnings; + +our %pastversion; + sub allversions { my ($file) = @_; open(A, "<$file") || diff --git a/tests/http2-server.pl b/tests/http2-server.pl index 8762000333..1a36a8b1f6 100755 --- a/tests/http2-server.pl +++ b/tests/http2-server.pl @@ -23,6 +23,9 @@ # #*************************************************************************** +use strict; +use warnings; + # This script invokes nghttpx properly to have it serve HTTP/2 for us. # nghttpx runs as a proxy in front of our "actual" HTTP/1 server. use Cwd; diff --git a/tests/http3-server.pl b/tests/http3-server.pl index b78d712b32..6b3de3d748 100755 --- a/tests/http3-server.pl +++ b/tests/http3-server.pl @@ -23,6 +23,9 @@ # #*************************************************************************** +use strict; +use warnings; + # This script invokes nghttpx properly to have it serve HTTP/3 for us. # nghttpx runs as a proxy in front of our "actual" HTTP/1 server. diff --git a/tests/libtest/mk-lib1521.pl b/tests/libtest/mk-lib1521.pl index 8f207a2d14..0dc4fe15e0 100755 --- a/tests/libtest/mk-lib1521.pl +++ b/tests/libtest/mk-lib1521.pl @@ -22,6 +22,8 @@ # SPDX-License-Identifier: curl # ########################################################################### +use strict; +use warnings; # Usage: # perl mk-lib1521.pl < ../../include/curl/curl.h lib1521.c @@ -363,6 +365,8 @@ static CURLcode test_lib1521(char *URL) HEADER ; +my $infomode = 0; + while() { s/^\s*(.*?)\s*$/$1/; # Trim. # Remove multi-line comment trail. diff --git a/tests/libtest/test1013.pl b/tests/libtest/test1013.pl index 878077d80c..b97341d0cb 100755 --- a/tests/libtest/test1013.pl +++ b/tests/libtest/test1013.pl @@ -22,6 +22,9 @@ # SPDX-License-Identifier: curl # ########################################################################### +use strict; +use warnings; + # Determine if curl-config --protocols/--features matches the # curl --version protocols/features if($#ARGV != 2) { @@ -41,7 +44,7 @@ close CURL; $curl_protocols =~ s/\r//; $curl_protocols =~ /\w+: (.*)$/; -@curl = split / /,$1; +my @curl = split / /,$1; # Read the output of curl-config my @curl_config; diff --git a/tests/libtest/test1022.pl b/tests/libtest/test1022.pl index 4427d633b5..e1c3cd598e 100755 --- a/tests/libtest/test1022.pl +++ b/tests/libtest/test1022.pl @@ -22,6 +22,9 @@ # SPDX-License-Identifier: curl # ########################################################################### +use strict; +use warnings; + # Determine if curl-config --version matches the curl --version if($#ARGV != 2) { print "Usage: $0 curl-config-script curl-version-output-file version|vernum\n"; diff --git a/tests/libtest/test307.pl b/tests/libtest/test307.pl index ea54b59824..5a0a97a3a6 100755 --- a/tests/libtest/test307.pl +++ b/tests/libtest/test307.pl @@ -22,12 +22,15 @@ # SPDX-License-Identifier: curl # ########################################################################### +use strict; +use warnings; + # Determine if the given curl executable supports the 'openssl' SSL engine if($#ARGV != 0) { print "Usage: $0 curl-executable\n"; exit 3; } -if(!open(CURL, "@ARGV[0] -s --engine list|")) { +if(!open(CURL, "$ARGV[0] -s --engine list|")) { print "Can't get SSL engine list\n"; exit 2; } diff --git a/tests/libtest/test610.pl b/tests/libtest/test610.pl index b37c25286a..10f665620a 100755 --- a/tests/libtest/test610.pl +++ b/tests/libtest/test610.pl @@ -22,6 +22,9 @@ # SPDX-License-Identifier: curl # ########################################################################### +use strict; +use warnings; + # Perform simple file and directory manipulation in a portable way if($#ARGV <= 0) { print "Usage: $0 mkdir|rmdir|rm|move|gone path1 [path2] [more commands...]\n"; diff --git a/tests/libtest/test613.pl b/tests/libtest/test613.pl index 9abc0c41cd..429168abfc 100755 --- a/tests/libtest/test613.pl +++ b/tests/libtest/test613.pl @@ -22,6 +22,9 @@ # SPDX-License-Identifier: curl # ########################################################################### +use strict; +use warnings; + # Prepare a directory with known files and clean up afterwards use Time::Local; diff --git a/tests/memanalyze.pl b/tests/memanalyze.pl index 339da664e0..e794972a33 100755 --- a/tests/memanalyze.pl +++ b/tests/memanalyze.pl @@ -29,17 +29,22 @@ # MEM mprintf.c:1103 realloc(e5718, 64) = e6118 # MEM sendf.c:232 free(f6520) +use strict; +use warnings; + my $mallocs=0; my $callocs=0; my $reallocs=0; my $strdups=0; my $wcsdups=0; -my $showlimit; +my $showlimit=0; my $sends=0; my $recvs=0; my $sockets=0; +my $verbose=0; +my $trace=0; -while(1) { +while(@ARGV) { if($ARGV[0] eq "-v") { $verbose=1; shift @ARGV; @@ -70,7 +75,7 @@ sub newtotal { } } -my $file = $ARGV[0]; +my $file = $ARGV[0] || ''; if(! -f $file) { print "Usage: memanalyze.pl [options] \n", @@ -94,11 +99,36 @@ if($showlimit) { exit; } +my %sizeataddr; +my %getmem; + +my $totalmem = 0; +my $frees = 0; + +my $dup; +my $size; +my $addr; + +my %filedes; +my %getfile; + +my %fopen; +my %fopenfile; +my $openfile = 0; +my $fopens = 0; -my $lnum=0; +my %addrinfo; +my %addrinfofile; +my $addrinfos = 0; + +my $source; +my $linenum; +my $function; + +my $lnum = 0; while(<$fileh>) { chomp $_; - $line = $_; + my $line = $_; $lnum++; if($line =~ /^LIMIT ([^ ]*):(\d*) (.*)/) { # new memory limit test prefix @@ -145,13 +175,13 @@ while(<$fileh>) { $size = $1; $addr = $2; - if($sizeataddr{$addr}>0) { + if($sizeataddr{$addr} && $sizeataddr{$addr}>0) { # this means weeeeeirdo print "Mixed debug compile ($source:$linenum at line $lnum), rebuild curl now\n"; print "We think $sizeataddr{$addr} bytes are already allocated at that memory address: $addr!\n"; } - $sizeataddr{$addr}=$size; + $sizeataddr{$addr} = $size; $totalmem += $size; $memsum += $size; @@ -169,8 +199,8 @@ while(<$fileh>) { $size = $1*$2; $addr = $3; - $arg1 = $1; - $arg2 = $2; + my $arg1 = $1; + my $arg2 = $2; if($sizeataddr{$addr}>0) { # this means weeeeeirdo diff --git a/tests/runtests.pl b/tests/runtests.pl index 3908c1a25a..dfa35aaea5 100755 --- a/tests/runtests.pl +++ b/tests/runtests.pl @@ -1722,7 +1722,7 @@ sub singletest_check { $ok .= "m"; } my @more=`$memanalyze -v "$logdir/$MEMDUMP"`; - my $allocs; + my $allocs = 0; my $max = 0; for(@more) { if(/^Allocations: (\d+)/) { diff --git a/tests/test1140.pl b/tests/test1140.pl index ac06c4af30..8900ef439f 100755 --- a/tests/test1140.pl +++ b/tests/test1140.pl @@ -26,7 +26,10 @@ # scan manpages to find basic syntactic problems such as unbalanced \f # codes or references to non-existing curl manpages. -my $docsroot = $ARGV[0]; +use strict; +use warnings; + +my $docsroot = $ARGV[0] || '.'; if(!$docsroot || ($docsroot eq "-g")) { print "Usage: test1140.pl [manpages]\n"; @@ -40,6 +43,8 @@ my @f = @ARGV; my %manp; +my $errors = 0; + sub manpresent { my ($man) = @_; if($manp{$man}) { @@ -111,4 +116,4 @@ foreach my $f (@f) { print "OK\n" if(!$errors); -exit $errors?1:0; +exit ($errors ? 1 : 0); diff --git a/tests/test1175.pl b/tests/test1175.pl index c981046b7e..2e67142613 100755 --- a/tests/test1175.pl +++ b/tests/test1175.pl @@ -27,7 +27,7 @@ use strict; use warnings; # we may get the dir root pointed out -my $root=$ARGV[0] || "."; +my $root = $ARGV[0] || "."; my %error; # from the include file my %docs; # from libcurl-errors.3 diff --git a/tests/test1275.pl b/tests/test1275.pl index e5f54c627e..d9429ea3dc 100755 --- a/tests/test1275.pl +++ b/tests/test1275.pl @@ -23,11 +23,14 @@ # ########################################################################### +use strict; +use warnings; + my $root=$ARGV[0] || ".."; my @m = `git ls-files -- $root`; -my $errors; +my $errors = 0; my %accepted=('curl' => 1, 'libcurl' => 1, @@ -45,7 +48,7 @@ sub checkfile { } open(my $fh, "<", "$f"); my $l; - my $prevl; + my $prevl = ''; my $ignore = 0; my $metadata = 0; while(<$fh>) { diff --git a/tests/test1276.pl b/tests/test1276.pl index 74d4651734..3eb04c035f 100755 --- a/tests/test1276.pl +++ b/tests/test1276.pl @@ -23,13 +23,16 @@ # ########################################################################### +use strict; +use warnings; + sub showline { my ($l) = @_; $l =~ s/([^\x20-\x7f])/sprintf "%%%02x", ord $1/eg; return $l; } -my $root = $ARGV[0]; +my $root = $ARGV[0] || '..'; open(my $fh, "-|", "perl $root/lib/optiontable.pl < $root/include/curl/curl.h"); binmode $fh; diff --git a/tests/test1488.pl b/tests/test1488.pl index a8f998845e..1994f93bee 100755 --- a/tests/test1488.pl +++ b/tests/test1488.pl @@ -27,6 +27,7 @@ # a late evening in the #curl IRC channel. # +use strict; use warnings; use vars qw($Cpreprocessor); use allversions; @@ -52,7 +53,7 @@ my $root=$ARGV[0] || "."; # need an include directory when building out-of-tree my $i = ($ARGV[1]) ? "-I$ARGV[1] " : ''; -my $error; +my $error = 0; my $versions = $ARGV[2]; @@ -60,6 +61,8 @@ my @syms; my %manpage; my %symadded; +our %pastversion; + sub checkmanpage { my ($m) = @_; diff --git a/tests/test1707.pl b/tests/test1707.pl index d9090d4f9b..249d2914f1 100755 --- a/tests/test1707.pl +++ b/tests/test1707.pl @@ -98,7 +98,7 @@ while() { } close(R); -my $error; +my $error = 0; if(scalar(@curlout) != scalar(@txtout)) { printf "curl -h $opt is %d lines, $txt says %d lines\n", scalar(@curlout), scalar(@txtout); diff --git a/tests/test971.pl b/tests/test971.pl index 8669145000..b7046ac678 100755 --- a/tests/test971.pl +++ b/tests/test971.pl @@ -29,12 +29,19 @@ # $cmddir # +use strict; +use warnings; + use allversions; my $opts = $ARGV[0]; my $cmddir = $ARGV[1]; my $versions = $ARGV[2]; +my %file; +my %oiv; +my $error = 0; + sub cmdfiles { my ($dir)=@_; @@ -93,6 +100,8 @@ sub versioncheck { close($fh); } +our %pastversion; + # get all the past versions allversions($versions); diff --git a/tests/testcurl.pl b/tests/testcurl.pl index 791e366257..8d6183102b 100755 --- a/tests/testcurl.pl +++ b/tests/testcurl.pl @@ -61,6 +61,7 @@ # use strict; +use warnings; use Cwd; use File::Spec; @@ -76,6 +77,9 @@ use vars qw($name $email $desc $confopts $runtestopts $setupfile $mktarball $extvercmd $nogitpull $nobuildconf $crosscompile $timestamp $notes); +$notes=''; +$runtestopts=''; + # version of this script $version='2024-11-28'; $fixed=0; @@ -338,20 +342,20 @@ logit "DESC = $desc"; logit "NOTES = $notes"; logit "CONFOPTS = $confopts"; logit "RUNTESTOPTS = ".$runtestopts; -logit "CPPFLAGS = ".$ENV{CPPFLAGS}; -logit "CFLAGS = ".$ENV{CFLAGS}; -logit "LDFLAGS = ".$ENV{LDFLAGS}; -logit "LIBS = ".$ENV{LIBS}; -logit "CC = ".$ENV{CC}; -logit "TMPDIR = ".$ENV{TMPDIR}; -logit "MAKEFLAGS = ".$ENV{MAKEFLAGS}; -logit "ACLOCAL_FLAGS = ".$ENV{ACLOCAL_FLAGS}; -logit "PKG_CONFIG_PATH = ".$ENV{PKG_CONFIG_PATH}; -logit "DYLD_LIBRARY_PATH = ".$ENV{DYLD_LIBRARY_PATH}; -logit "LD_LIBRARY_PATH = ".$ENV{LD_LIBRARY_PATH}; -logit "LIBRARY_PATH = ".$ENV{LIBRARY_PATH}; -logit "SHLIB_PATH = ".$ENV{SHLIB_PATH}; -logit "LIBPATH = ".$ENV{LIBPATH}; +logit "CPPFLAGS = ".($ENV{CPPFLAGS} || ''); +logit "CFLAGS = ".($ENV{CFLAGS} || ''); +logit "LDFLAGS = ".($ENV{LDFLAGS} || ''); +logit "LIBS = ".($ENV{LIBS} || ''); +logit "CC = ".($ENV{CC} || ''); +logit "TMPDIR = ".($ENV{TMPDIR} || ''); +logit "MAKEFLAGS = ".($ENV{MAKEFLAGS} || ''); +logit "ACLOCAL_FLAGS = ".($ENV{ACLOCAL_FLAGS} || ''); +logit "PKG_CONFIG_PATH = ".($ENV{PKG_CONFIG_PATH} || ''); +logit "DYLD_LIBRARY_PATH = ".($ENV{DYLD_LIBRARY_PATH} || ''); +logit "LD_LIBRARY_PATH = ".($ENV{LD_LIBRARY_PATH} || ''); +logit "LIBRARY_PATH = ".($ENV{LIBRARY_PATH} || ''); +logit "SHLIB_PATH = ".($ENV{SHLIB_PATH} || ''); +logit "LIBPATH = ".($ENV{LIBPATH} || ''); logit "target = ".$targetos; logit "version = $version"; # script version logit "date = $timestamp"; # When the test build starts -- 2.47.2