X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=bin%2Fblhc;h=c4fac96d01db2bdc7c21e8bed2a4755aa8e649b1;hb=018466d7ddd9c78f1e1efbafbb7be2f969e1bbd1;hp=2f8da5f2c4efdda473a2e3d414f98e65f3d796c8;hpb=06b7783ef223d0f58804f3f08d27c45dc3b97351;p=blhc%2Fblhc.git diff --git a/bin/blhc b/bin/blhc index 2f8da5f..c4fac96 100755 --- a/bin/blhc +++ b/bin/blhc @@ -24,7 +24,7 @@ use warnings; use Getopt::Long (); use Text::ParseWords (); -our $VERSION = '0.12'; +our $VERSION = '0.13'; # CONSTANTS/VARIABLES @@ -1022,9 +1022,29 @@ foreach my $file (@ARGV) { $complete_line = undef; } + my $noenv = $line; + # Strip (basic) environment variables for compiler detection. This + # prevents false positives when environment variables contain + # compiler binaries. Nested quotes, command substitution, etc. is + # not supported. + $noenv =~ s/^ + \s* + (?: + [a-zA-Z_]+ # environment variable name + = + (?: + [^\s"'\$`\\]+ # non-quoted string + | + '[^"'\$`\\]*' # single-quoted string + | + "[^"'\$`\\]*" # double-quoted string + ) + \s+ + )* + //x; # Ignore lines with no compiler commands. next if not $non_verbose - and not $line =~ /$cc_regex_normal/o; + and not $noenv =~ /$cc_regex_normal/o; # Ignore lines with no filenames with extensions. May miss some # non-verbose builds (e.g. "gcc -o test" [sic!]), but shouldn't be # a problem as the log will most likely contain other non-verbose @@ -1056,7 +1076,7 @@ foreach my $file (@ARGV) { # C++ files. No hardening flags are relevant during this step, # thus ignore `moc-qt*` lines. The resulting files will be # compiled in a separate step (and therefore checked). - next if $line =~ m{^\S+/bin/moc(?:-qt[45])? + next if $line =~ m{^\S+(?:/bin/moc(?:-qt[45])?|/lib/qt6/libexec/moc) \s.+\s -I\S+/mkspecs/[a-z]+-g\++(?:-64)? \s}x;