X-Git-Url: https://ruderich.org/simon/gitweb/?p=blhc%2Fblhc.git;a=blobdiff_plain;f=bin%2Fblhc;h=d8c621bddbfd853a9bec9a552f0e6de8d24106a4;hp=38ca653cd655b8dd6209df0229fdf86e1754edc6;hb=ec6915157c741c96bfeed5a2a58246d59ccefdb5;hpb=d7e5c1de20c3adb24676f405e8930a61c5746759 diff --git a/bin/blhc b/bin/blhc index 38ca653..d8c621b 100755 --- a/bin/blhc +++ b/bin/blhc @@ -266,6 +266,7 @@ my @input = (); my $start = 0; my $continuation = 0; +my $complete_line = undef; while (my $line = <>) { # We skip over unimportant lines at the beginning to prevent false # positives. @@ -297,10 +298,26 @@ while (my $line = <>) { # Join lines, but leave the "\" in place so it's clear where the # original line break was. - chomp $input[-1]; - $input[-1] .= ' ' . $line; + chomp $complete_line; + $complete_line .= ' ' . $line; + } + # Line continuation, line ends with "\". + if ($line =~ /\\\s*$/) { + $continuation = 1; + # Start line continuation. + if (not defined $complete_line) { + $complete_line = $line; + } + next; + } + + if (not $continuation) { + # Use the complete line if a line continuation occurred. + if (defined $complete_line) { + $line = $complete_line; + $complete_line = undef; + } - } else { # Ignore lines with no compiler commands. next if $line !~ /\b$cc_regex(?:\s|\\)/ and not $non_verbose; @@ -311,11 +328,6 @@ while (my $line = <>) { push @input, $line; } - - # Line continuation, line ends with "\". - if ($line =~ /\\\s*$/) { - $continuation = 1; - } } }