- 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
#
# ---(accepted word)
#
-my $w;
+
+use strict;
+use warnings;
+
+my @whitelist;
+my %alt;
+my %exactcase;
+
+my @w;
while(<STDIN>) {
chomp;
if($_ =~ /^#/) {
# 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(<S>) {
#
###########################################################################
+use strict;
+use warnings;
+
my $autotools = $ARGV[0];
my $cmake = $ARGV[1];
# directory where it runs.
#
+use strict;
+use warnings;
+
my $curl = "../src/curl";
my $url = "localhost:7777"; # not listening to this
}
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) = @_;
my $o = getnum($nopts);
my $option = $opt[$o];
my $ar = "";
+ $uniq{$option} = 0 if(!exists $uniq{$option});
$uniq{$option}++;
if($arg{$option}) {
$ar = " ".randarg();
# Outputs: the same file, minus the header
#
-my $f = $ARGV[0];
+use strict;
+use warnings;
+
+my $f = $ARGV[0] || '';
open(F, "<$f") or die;
#
###########################################################################
+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;
}
return ($fail ? 0 : $l);
}
-my $count;
+my $count = 0;
for my $m (@files) {
#print "Verify $m\n";
my $out = extract($m);
#
###########################################################################
+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;
}
# 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(<F>) {
# version-check.pl [source file]
#
+use strict;
+use warnings;
+
open(S, "<../libcurl/symbols-in-versions") || die;
my %doc;
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;
# * SPDX-License-Identifier: curl
# *
# ***************************************************************************
+use strict;
+use warnings;
use POSIX qw(strftime);
my @ts;
# #endif
#
#
+use strict;
+use warnings;
+
open F, "<symbols-in-versions";
sub str2num {
my ($str)=@_;
- if($str =~ /([0-9]*)\.([0-9]*)\.*([0-9]*)/) {
- return sprintf("0x%06x", $1<<16 | $2 << 8 | $3);
+ if($str && $str =~ /([0-9]*)\.([0-9]*)\.*([0-9]*)/) {
+ return sprintf("0x%06x", $1 <<16 | $2 << 8 | ($3 || '0'));
}
}
#!/usr/bin/env perl
+use strict;
+use warnings;
+
print <<HEAD
/***************************************************************************
* _ _ ____ _
my $lastnum=0;
+my %opt;
+my %type;
+my @names;
+my %alias;
+
sub add {
- my($opt, $type, $num)=@_;
+ my($optstr, $typestr, $num)=@_;
my $name;
# remove all spaces from the type
- $type =~ s/ //g;
- my $ext = $type;
+ $typestr =~ s/ //g;
+ my $ext = $typestr;
- if($opt =~ /OBSOLETE/) {
+ if($optstr =~ /OBSOLETE/) {
# skip obsolete options
next;
}
- if($opt =~ /^CURLOPT_(.*)/) {
+ if($optstr =~ /^CURLOPT_(.*)/) {
$name=$1;
}
$ext =~ s/CURLOPTTYPE_//;
$ext =~ s/CBPOINT/CBPTR/;
$ext =~ s/POINT\z//;
- $type = "CURLOT_$ext";
+ $typestr = "CURLOT_$ext";
- $opt{$name} = $opt;
- $type{$name} = $type;
+ $opt{$name} = $optstr;
+ $type{$name} = $typestr;
push @names, $name;
if($num < $lastnum) {
- print STDERR "ERROR: $opt has bad number: $num < $lastnum\n";
+ print STDERR "ERROR: $optstr has bad number: $num < $lastnum\n";
exit 2;
}
else {
$name = $alias{$name};
$flag = "CURLOT_FLAG_ALIAS";
}
- $o = sprintf(" {\"%s\", %s, %s, %s},\n",
- $oname, $opt{$name}, $type{$name}, $flag);
+ my $o = sprintf(" {\"%s\", %s, %s, %s},\n",
+ $oname, $opt{$name}, $type{$name}, $flag);
if(length($o) < 80) {
print $o;
}
=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;
}
my $start = 0;
my $d;
my $line = 0;
+ my $salist = 0;
+ my $copyright;
+ my $spdx;
open(F, "<:crlf", "$f") ||
return 1;
while(<F>) {
single($a);
}
}
-else {
+elsif(@ARGV) {
exit single($ARGV[0]);
}
# 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";
#
###########################################################################
+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 = (
#
###########################################################################
+use strict;
+use warnings;
+
my %filelevel= ('file' => 1,
'service' => 1);
}
}
+my %job;
+
sub githubactions {
my ($tag)=@_;
my @files= `git ls-tree -r --name-only $tag .github/workflows 2>/dev/null`;
my $cmds;
my $jobs;
my $workflow;
+ my $cmdname;
+ my $jobname;
$job{'file'} = ".circleci/config.yml";
$job{'service'} = "circleci";
while(<G>) {
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(<G>) {
#
# In the git clone root, invoke 'scripts/delta [release tag]'
+use strict;
+use warnings;
+
$start = $ARGV[0];
if($start eq "-h") {
#
###########################################################################
+use strict;
+use warnings;
+
+my @proto;
+my %inc;
+
sub scanfile {
my ($file) = @_;
open(F, "<$file") || die "$file failed";
=end comment
=cut
+use strict;
+use warnings;
+
my %optshort;
my %optlong;
my %helplong;
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/\.$//) {
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?" ":"", $_;
}
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]*)\]//;
# 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";
$p = $lvl;
}
- outputpara($baselvl + $p, $para);
+ $pnum = $p;
+ $pnum =~ s/q$//;
+ outputpara($baselvl + $pnum, $para);
}
}
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 = $_;
$protocols=$1;
}
elsif(/^See-also: +(.+)/i) {
- if($seealso) {
+ if(@seealso) {
print STDERR "ERROR: duplicated See-also in $f\n";
return 1;
}
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) {
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";
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;
}
sub indexoptions {
my ($dir, @files) = @_;
- foreach my $f (@files) {
- getshortlong($dir, $f);
+ foreach my $file (@files) {
+ getshortlong($dir, $file);
}
}
}
close(F);
}
- return $ret if($ret);
for my $e (0 .. $#globalopts) {
$globals .= sprintf "%s--%s", $e?($globalopts[$e+1] ? ", " : " and "):"",
$globalopts[$e],;
my $dir = ".";
my $include = "../../include";
-my $cmd = shift @ARGV;
+my $cmd = shift @ARGV || '';
check:
if($cmd eq "-d") {
#
###########################################################################
+use strict;
+use warnings;
+
my %whitelist = (
'https://curl.se/' => 1,
'https://curl.se/changes.html' => 1,
);
+my %url;
+my %flink;
+
# list all .md files in the repo
my @files=`git ls-files '**.md'`;
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";
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++;
}
=end comment
=cut
+use strict;
+use warnings;
+
my $nroff2cd = "0.1"; # to keep check
sub single {
return !$header;
}
-exit single($ARGV[0]);
+if(@ARGV) {
+ exit single($ARGV[0]);
+}
# - 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) {
#
################################################
-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`;
# false alarm, not a valid line
}
+my @fixes;
+my @closes;
+my @bug;
+my @line;
+my %moreinfo;
+
my $short;
my $first;
for my $l (@gitlog) {
# 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
# --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',
my %exist;
my %uses;
-my $file;
while(<N>) {
my $l = $_;
chomp $l;
}
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{$_}) {
#
###########################################################################
+use strict;
+use warnings;
+
my $varname = "var";
-if($ARGV[0] eq "--var") {
+if(@ARGV && $ARGV[0] eq "--var") {
shift;
$varname = shift @ARGV;
}
#
###########################################################################
-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";
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 <<HEAD
#include <zlib.h>
#
###########################################################################
-# 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") ||
#
#***************************************************************************
+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;
#
#***************************************************************************
+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.
# SPDX-License-Identifier: curl
#
###########################################################################
+use strict;
+use warnings;
# Usage:
# perl mk-lib1521.pl < ../../include/curl/curl.h lib1521.c
HEADER
;
+my $infomode = 0;
+
while(<STDIN>) {
s/^\s*(.*?)\s*$/$1/; # Trim.
# Remove multi-line comment trail.
# SPDX-License-Identifier: curl
#
###########################################################################
+use strict;
+use warnings;
+
# Determine if curl-config --protocols/--features matches the
# curl --version protocols/features
if($#ARGV != 2) {
$curl_protocols =~ s/\r//;
$curl_protocols =~ /\w+: (.*)$/;
-@curl = split / /,$1;
+my @curl = split / /,$1;
# Read the output of curl-config
my @curl_config;
# 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";
# 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;
}
# 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";
# SPDX-License-Identifier: curl
#
###########################################################################
+use strict;
+use warnings;
+
# Prepare a directory with known files and clean up afterwards
use Time::Local;
# 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;
}
}
-my $file = $ARGV[0];
+my $file = $ARGV[0] || '';
if(! -f $file) {
print "Usage: memanalyze.pl [options] <dump file>\n",
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
$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;
$size = $1*$2;
$addr = $3;
- $arg1 = $1;
- $arg2 = $2;
+ my $arg1 = $1;
+ my $arg2 = $2;
if($sizeataddr{$addr}>0) {
# this means weeeeeirdo
$ok .= "m";
}
my @more=`$memanalyze -v "$logdir/$MEMDUMP"`;
- my $allocs;
+ my $allocs = 0;
my $max = 0;
for(@more) {
if(/^Allocations: (\d+)/) {
# 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 <docs root dir> [manpages]\n";
my %manp;
+my $errors = 0;
+
sub manpresent {
my ($man) = @_;
if($manp{$man}) {
print "OK\n" if(!$errors);
-exit $errors?1:0;
+exit ($errors ? 1 : 0);
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
#
###########################################################################
+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,
}
open(my $fh, "<", "$f");
my $l;
- my $prevl;
+ my $prevl = '';
my $ignore = 0;
my $metadata = 0;
while(<$fh>) {
#
###########################################################################
+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;
# a late evening in the #curl IRC channel.
#
+use strict;
use warnings;
use vars qw($Cpreprocessor);
use allversions;
# 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];
my %manpage;
my %symadded;
+our %pastversion;
+
sub checkmanpage {
my ($m) = @_;
}
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);
# $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)=@_;
close($fh);
}
+our %pastversion;
+
# get all the past versions
allversions($versions);
#
use strict;
+use warnings;
use Cwd;
use File::Spec;
$extvercmd $nogitpull $nobuildconf $crosscompile
$timestamp $notes);
+$notes='';
+$runtestopts='';
+
# version of this script
$version='2024-11-28';
$fixed=0;
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