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 $lnum=0; +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 %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