+
+ if (@dirstack && (my ($file, $line) = /^([^\s:]+):(\d+):\s/)) {
+ $file = File::Spec->rel2abs ($file, $dirstack[$#dirstack]);
+ my (@path) = grep ($_ ne '' && $_ ne '.', split ('/', $file));
+ for (my $i = 0; $i < $#path; ) {
+ if ($path[$i + 1] eq '..') {
+ splice (@path, $i, 2);
+ } else {
+ $i++;
+ }
+ }
+
+ $d{LINE} = $line;
+ $d{FILE} = join ('/', @path);
+ }