X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/85ecfb40a19334d7ea53de8b982915eff3cae07d..3e16fd0f80a12b3c74ae25a28fc4e2e5eca011b4:/mr diff --git a/mr b/mr index b5d5c11..4fe0c61 100755 --- a/mr +++ b/mr @@ -272,7 +272,7 @@ Use with caution. =back -=head1 "MRCONFIG FILES" +=head1 MRCONFIG FILES Here is an example .mrconfig file: @@ -389,7 +389,7 @@ due to being offline. You can delete or edit this file to remove commands, or even to add other commands for 'mr online' to run. If the file is present, mr assumes it is in offline mode. -=head1 "UNTRUSTED MRCONFIG FILES" +=head1 UNTRUSTED MRCONFIG FILES Since mrconfig files can contain arbitrary shell commands, they can do anything. This flexability is good, but it also allows a malicious mrconfig @@ -791,7 +791,9 @@ sub repodir { my $repo=shift; my $topdir=$repo->{topdir}; my $subdir=$repo->{subdir}; - return abs_path(($subdir =~/^\//) ? $subdir : $topdir.$subdir); + my $ret=($subdir =~/^\//) ? $subdir : $topdir.$subdir; + $ret=~s/\/\.$//; + return $ret; } # figure out which repos to act on @@ -1035,6 +1037,12 @@ sub loadconfig { } } $section=expandenv($section) if $trusted; + if ($section ne 'ALIAS' && + ! exists $config{$dir}{$section} && + exists $config{$dir}{DEFAULT}) { + # copy in defaults + $config{$dir}{$section}={ %{$config{$dir}{DEFAULT}} }; + } } elsif (/^(\w+)\s*=\s*(.*)/) { my $parameter=$1; @@ -1071,12 +1079,6 @@ sub loadconfig { if (! defined $section) { die "$f line $.: parameter ($parameter) not in section\n"; } - if ($section ne 'ALIAS' && - ! exists $config{$dir}{$section} && - exists $config{$dir}{DEFAULT}) { - # copy in defaults - $config{$dir}{$section}={ %{$config{$dir}{DEFAULT}} }; - } if ($section eq 'ALIAS') { $alias{$parameter}=$value; } @@ -1357,7 +1359,7 @@ sub bootstrap { eval q{use File::Temp}; die $@ if $@; my $tmpconfig=File::Temp->new(); - my @curlargs = ("curl", "-A", "mr", "-s", $url, "-o", $tmpconfig); + my @curlargs = ("curl", "-A", "mr", "-L", "-s", $url, "-o", $tmpconfig); push(@curlargs, "-k") if $insecure; my $curlstatus = system(@curlargs); die "mr bootstrap: invalid SSL certificate for $url (consider -k)\n" if $curlstatus >> 8 == 60; @@ -1545,10 +1547,10 @@ lib = fi delta=`perl -wle 'print -f shift() ? int((-M _) * 24) : 9999' "$flagfile"` if [ "$delta" -lt "$2" ]; then - exit 0 + return 1 else touch "$flagfile" - exit 1 + return 0 fi }