X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/ffb40f2f354954634cdd554071e60ef3650b3010..d98311be7b311946f199443443d9fab3ecbaead9:/mr?ds=inline diff --git a/mr b/mr index 87acef3..3c5321f 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 { @@ -586,7 +587,7 @@ my $no_chdir=0; my $jobs=1; my $trust_all=0; my $directory=getcwd(); -my $terminal=-t STDOUT && eval{require IO::Pty::Easy;IO::Pty::Easy->import();1;} eq 1; +my $terminal=-t STDOUT && eval{require IO::Pty::Easy;IO::Pty::Easy->import();1;}; my $HOME_MR_CONFIG = "$ENV{HOME}/.mrconfig"; $ENV{MR_CONFIG}=find_mrconfig(); @@ -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; } @@ -1312,6 +1317,7 @@ sub loadconfig { if ($parent eq '/') { $parent=""; } + loadconfig($parent); if (exists $config{$parent} && exists $config{$parent}{DEFAULT}) { $config{$dir}{DEFAULT}={ %{$config{$parent}{DEFAULT}} }; @@ -1323,7 +1329,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 +1378,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 +2098,7 @@ svn_grep = ack-grep "$@" git_svn_grep = git grep "$@" git_grep = git grep "$@" bzr_grep = ack-grep "$@" +darcs_grep = ack-grep "$@" run = "$@"