diff options
author | mzakirov <mzakirov@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-11-07 08:15:19 +0000 |
---|---|---|
committer | mzakirov <mzakirov@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-11-07 08:15:19 +0000 |
commit | daf8408de3d45fce7eb2b5989ea663ad9b7ac8db (patch) | |
tree | d7a4550afd1767a5e8e18e8e54c63c5ba8992337 | |
parent | 7e3c779eb394710cfe246129e6d79683dc7eda65 (diff) | |
download | gcc-daf8408de3d45fce7eb2b5989ea663ad9b7ac8db.tar.gz |
contrib/
2014-11-07 Marat Zakirov <m.zakirov@samsung.com>
* mklog: Always doubt in functions.
Add EOF protection.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217212 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | contrib/ChangeLog | 5 | ||||
-rwxr-xr-x | contrib/mklog | 41 |
2 files changed, 29 insertions, 17 deletions
diff --git a/contrib/ChangeLog b/contrib/ChangeLog index 3878803bdf2..9dcc7ea3ac9 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,8 @@ +2014-11-07 Marat Zakirov <m.zakirov@samsung.com> + + * mklog: Always doubt in functions. + Add EOF protection. + 2014-10-31 Jan-Benedict Glaw <jbglaw@lug-owl.de> * config-list.mk: Don't build Go for certain targets. diff --git a/contrib/mklog b/contrib/mklog index 6ed4c6e8f51..8e3c6b619ac 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 |