while (my $line = <$fh>) {
# for windows
# for .in files
- $env_list{$1} = 1 if ($line =~ /GetEnvironmentVariableW\([\s\S]*"([^"]+)",/
- || $line =~ /\$ENV\{([^}"']+)\}/);
+ push @{$env_list{$1}}, "${filename}:$."
+ if ($line =~ /GetEnvironmentVariableW\([\s\S]*"([^"]+)",/
+ || $line =~ /\$ENV\{([^}"']+)\}/);
# this also handles ossl_safe_getenv
if ($line =~ /getenv\(([^()\s]+)\)/) {
my $env1 = $1;
if ($env1 =~ /"([^"]+)"/) {
- $env_list{$1} = 1;
+ push @{$env_list{$1}}, "${filename}:$.";
} elsif ($env1 =~ /([A-Z0-9_])/) {
push(@env_macro, $env1);
}
# if it's a string just add to the list
# otherwise look for the constant value later
if ($env1 =~ /"([^"]+)"/) {
- $env_list{$1} = 1;
+ push @{$env_list{$1}}, "${filename}:$.";
} else {
push(@env_macro, $env1);
}
if ($env2 =~ /"([^"]+)"/) {
- $env_list{$1} = 1;
+ push @{$env_list{$1}}, "${filename}:$.";
} else {
push(@env_macro, $env2);
}
find(sub { push @env_headers, $File::Find::name if /\.h$/; },
$config{sourcedir});
- foreach my $filename (@env_headers) {
+ foreach my $filename (@env_headers) {
open my $fh, '<', $filename or die "Can't open $filename: $!";
while (my $line = <$fh>) {
foreach my $em (@env_macro) {
- $env_list{$1} = 1 if ($line =~ /define\s+\Q$em\E\s+"(\S+)"/);
+ push @{$env_list{$1}}, "${filename}:$."
+ if ($line =~ /define\s+\Q$em\E\s+"(\S+)"/);
}
}
- }
+ }
# need to save the value before starting to delete from the hash
my $number_of_env = scalar keys %env_list;
$number_of_env = scalar keys %env_list;
if ($number_of_env != 0) {
print "Undocumented environment variables:\n";
- print join("\n", sort keys %env_list)."\n";
+ foreach my $env_name (sort keys %env_list) {
+ print $env_name;
+ print " (found in '", join("', '", @{$env_list{$env_name}}), "')"
+ if ref $env_list{$env_name} eq 'ARRAY';
+ print "\n";
+ }
err("Total:".$number_of_env."\n");
}
}