As with public-inbox-fetch, we shouldn't waste time fetching
into read-only directories, since --epoch= will make unwanted
epoch directories read-only placeholders.
---
lib/PublicInbox/LeiMirror.pm | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/lib/PublicInbox/LeiMirror.pm b/lib/PublicInbox/LeiMirror.pm
index 967a6422..3ec8170f 100644
--- a/lib/PublicInbox/LeiMirror.pm
+++ b/lib/PublicInbox/LeiMirror.pm
@@ -593,8 +593,15 @@ sub clone_v1 {
die "$uri is a v1 inbox, --epoch is not supported\n";
$self->{-torsocks} //= $curl->torsocks($lei, $uri) or return;
my $dst = $self->{cur_dst} // $self->{dst};
- my $fini = PublicInbox::OnDestroy->new($$, \&v1_done, $self);
my $resume = -d $dst;
+ if ($resume) { # respect read-only cloned w/ --epoch=
+ my @st = stat(_); # for root
+ if (!-w _ || !($st[2] & 0222)) {
+ warn "# skipping $dst, not writable\n";
+ return;
+ }
+ }
+ my $fini = PublicInbox::OnDestroy->new($$, \&v1_done, $self);
if (my $fgrp = forkgroup_prep($self, $uri)) {
$fgrp->{-fini} = $fini;
if ($resume) {