mklog: Fix extraction of changed file name.
authorYury Gribov <tetra2005@gmail.com>
Tue, 18 Jul 2017 15:39:39 +0000 (15:39 +0000)
committerMaxim Ostapenko <chefmax@gcc.gnu.org>
Tue, 18 Jul 2017 15:39:39 +0000 (18:39 +0300)
2017-07-17  Yury Gribov  <tetra2005@gmail.com>

* mklog: Fix extraction of changed file name.

From-SVN: r250314

contrib/ChangeLog
contrib/mklog

index 46e8a8284a136e5d598413e0646818de78e2bf17..35bd9e2f2322deefa2c127903b56d7b32ac7cf54 100644 (file)
@@ -1,3 +1,7 @@
+2017-07-17  Yury Gribov  <tetra2005@gmail.com>
+
+       * mklog: Fix extraction of changed file name.
+
 2017-07-17  Georg-Johann Lay  <avr@gjlay.de>
 
        * gcc_update (files_and_dependencies)
index 61126280f1fef07fecf0ba6b82f002bf08049f86..ff20cf1ba0f74c73fabc9310bf029bf66c507fb7 100755 (executable)
@@ -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);