X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/f38a8c145b6cc4b0b3ba9a765536c2ddaa235087..refs/heads/chdir-for-chain:/mr diff --git a/mr b/mr index 98e080c..b7cd3cb 100755 --- a/mr +++ b/mr @@ -563,6 +563,7 @@ use warnings; use strict; use Getopt::Long; use Cwd qw(getcwd abs_path); +use File::Basename; # things that can happen when mr runs a command use constant { @@ -853,7 +854,7 @@ sub action { } print "$actionmsg\n" unless $quiet || $minimal; - my $hookret=hook("pre_$action", $topdir, $subdir); + my ($hookret, $hook_out)=hook("pre_$action", $topdir, $subdir); return $hookret if $hookret != OK; my ($ret, $out)=runsh $action, $topdir, $subdir, @@ -908,7 +909,7 @@ sub action { return FAILED; } } - my $ret=hook("fixups", $topdir, $subdir); + my ($ret, $hook_out)=hook("fixups", $topdir, $subdir); return $ret if $ret != OK; } @@ -1278,6 +1279,7 @@ sub loadconfig { my @toload; my $in; + my $absf=abs_path($f); my $trusted; if (ref $f eq 'GLOB') { $dir=""; @@ -1285,7 +1287,6 @@ sub loadconfig { $trusted=1; } else { - my $absf=abs_path($f); if ($loaded{$absf}) { return; } @@ -1301,7 +1302,11 @@ sub loadconfig { } $dir=abs_path($dir)."/"; - + + if (chdir($dir)) { + $f=basename($f); + } + if (! exists $configfiles{$dir}) { $configfiles{$dir}=$f; } @@ -1323,7 +1328,12 @@ sub loadconfig { return; } - print "mr: loading config $f\n" if $verbose; + if ($f =~ /\//) { + print "mr: loading config $f\n" if $verbose; + } else { + print "mr: loading config $f (from ".getcwd().")\n" if $verbose; + } + open($in, "<", $f) || die "mr: open $f: $!\n"; } my @lines=<$in>; @@ -1367,7 +1377,7 @@ sub loadconfig { "this can allow arbitrary code execution!)\n"; } else { - die "mr: $msg in untrusted $f line $lineno\n". + die "mr: $msg in untrusted $absf line $lineno\n". "(To trust this file, list it in ~/.mrtrust.)\n"; } }; @@ -2087,6 +2097,7 @@ svn_grep = ack-grep "$@" git_svn_grep = git grep "$@" git_grep = git grep "$@" bzr_grep = ack-grep "$@" +darcs_grep = ack-grep "$@" run = "$@"