diff options
author | Marat Zakirov <m.zakirov@samsung.com> | 2014-11-07 08:15:19 +0000 |
---|---|---|
committer | Marat Zakirov <mzakirov@gcc.gnu.org> | 2014-11-07 08:15:19 +0000 |
commit | a8cfbbdc7413f05278fa54d4c4644ec6eb5d943b (patch) | |
tree | d7a4550afd1767a5e8e18e8e54c63c5ba8992337 /contrib/mklog | |
parent | decfc6e1135287625cfa81c3a56bfa84512c7b5a (diff) | |
download | gcc-a8cfbbdc7413f05278fa54d4c4644ec6eb5d943b.zip gcc-a8cfbbdc7413f05278fa54d4c4644ec6eb5d943b.tar.gz gcc-a8cfbbdc7413f05278fa54d4c4644ec6eb5d943b.tar.bz2 |
mklog: Always doubt in functions.
contrib/
2014-11-07 Marat Zakirov <m.zakirov@samsung.com>
* mklog: Always doubt in functions.
Add EOF protection.
From-SVN: r217212
Diffstat (limited to 'contrib/mklog')
-rwxr-xr-x | contrib/mklog | 41 |
1 files changed, 24 insertions, 17 deletions
diff --git a/contrib/mklog b/contrib/mklog index 6ed4c6e..8e3c6b6 100755 --- a/contrib/mklog +++ b/contrib/mklog @@ -108,10 +108,22 @@ sub remove_suffixes ($) { return $filename; } +sub is_context_hunk_start { + return @_[0] =~ /^\*\*\*\*\*\** ([a-zA-Z0-9_].*)/; +} + +sub is_unified_hunk_start { + return @_[0] =~ /^@@ .* @@ ([a-zA-Z0-9_].*)/; +} + # Check if line is a top-level declaration. # TODO: ignore preprocessor directives except maybe #define ? sub is_top_level { my ($function, $is_context_diff) = (@_); + if (is_unified_hunk_start ($function) + || is_context_hunk_start ($function)) { + return 1; + } if ($is_context_diff) { $function =~ s/^..//; } else { @@ -200,14 +212,10 @@ foreach (@diff_lines) { $look_for_funs = 0; } - # Mark if we met doubtfully changed function. - $doubtfunc = 0; - if ($diff_lines[$line_idx] =~ /^@@ .* @@ ([a-zA-Z0-9_].*)/) { - $doubtfunc = 1; + if (is_unified_hunk_start ($diff_lines[$line_idx])) { $is_context_diff = 0; } - elsif ($diff_lines[$line_idx] =~ /^\*\*\*\*\*\** ([a-zA-Z0-9_].*)/) { - $doubtfunc = 1; + elsif (is_context_hunk_start ($diff_lines[$line_idx])) { $is_context_diff = 1; } @@ -222,7 +230,6 @@ foreach (@diff_lines) { # # The third pattern looks for the starts of functions or classes # within a diff block both for context and unified diff files. - if ($look_for_funs && (/^\*\*\*\*\*\** ([a-zA-Z0-9_].*)/ || /^@@ .* @@ ([a-zA-Z0-9_].*)/ @@ -249,19 +256,19 @@ foreach (@diff_lines) { } # Check is function really modified $no_real_change = 0; - if ($doubtfunc) { - $idx = $line_idx; + $idx = $line_idx; # Skip line info in context diffs. - while ($is_context_diff && $diff_lines[$idx + 1] =~ /^[-\*]{3} [0-9]/) { - ++$idx; - } + while ($idx <= $#diff_lines && $is_context_diff + && $diff_lines[$idx + 1] =~ /^[-\*]{3} [0-9]/) { + ++$idx; + } # Check all lines till the first change # for the presence of really changed function - do { - ++$idx; - $no_real_change = is_top_level ($diff_lines[$idx], $is_context_diff); - } while (!$no_real_change && ($diff_lines[$idx] !~ /^[-+!]/)) - } + do { + ++$idx; + $no_real_change = $idx > $#diff_lines + || is_top_level ($diff_lines[$idx], $is_context_diff); + } while (!$no_real_change && ($diff_lines[$idx] !~ /^[-+!]/)); if ($fn && !$seen_names{$fn} && !$no_real_change) { # If this is the first function in the file, we display it next # to the filename, so we need an extra space before the opening |