From 883b0e467ad1e7c9af9131b026b4446d571f3caa Mon Sep 17 00:00:00 2001 From: Yury Gribov Date: Tue, 18 Jul 2017 15:39:39 +0000 Subject: [PATCH] mklog: Fix extraction of changed file name. 2017-07-17 Yury Gribov * mklog: Fix extraction of changed file name. From-SVN: r250314 --- contrib/ChangeLog | 4 ++++ contrib/mklog | 18 +++++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/contrib/ChangeLog b/contrib/ChangeLog index 46e8a8284a13..35bd9e2f2322 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,7 @@ +2017-07-17 Yury Gribov + + * mklog: Fix extraction of changed file name. + 2017-07-17 Georg-Johann Lay * gcc_update (files_and_dependencies) diff --git a/contrib/mklog b/contrib/mklog index 61126280f1fe..ff20cf1ba0f7 100755 --- a/contrib/mklog +++ b/contrib/mklog @@ -1,5 +1,5 @@ #!/usr/bin/perl -# Copyright (C) 2012-2014 Free Software Foundation, Inc. +# Copyright (C) 2012-2017 Free Software Foundation, Inc. # # This file is part of GCC. # @@ -195,8 +195,20 @@ foreach (@diff_lines) { } elsif($right eq '/dev/null') { $filename = $left; } else { - print STDERR "Error: failed to parse diff for $left and $right\n"; - exit 1; + my @ldirs = split /[\/\\]/, $left; + my @rdirs = split /[\/\\]/, $right; + + $filename = ''; + while ((my $l = pop @ldirs) && (my $r = pop @rdirs)) { + last if ($l ne $r); + $filename = "$l/$filename"; + } + $filename =~ s/\/$//; + + if (!$filename) { + print STDERR "Error: failed to parse diff for $left and $right\n"; + exit 1; + } } $left = $right = undef; ($clname, $relname) = get_clname ($filename); -- 2.39.2