my $addr = $self->{-primary_address};
PublicInbox::Import->new($git, $name, $addr, $self);
} else {
+ $! = 78; # EX_CONFIG 5.3.5 local configuration error
die "unsupported inbox version: $v\n";
}
}
}
sub filter {
- my ($self) = @_;
+ my ($self, $im) = @_;
my $f = $self->{filter};
if ($f && $f =~ /::/) {
+ # v2 keeps msgmap open, which causes conflicts for filters
+ # such as PublicInbox::Filter::RubyLang which overload msgmap
+ # for a predictable serial number.
+ if ($im && ($self->{version} || 1) >= 2 && $self->{altid}) {
+ $im->done;
+ }
+
my @args = (-inbox => $self);
# basic line splitting, only
# Perhaps we can have proper quote splitting one day...
sub import_maildir {
my ($self, $dir) = @_;
my $im = $self->importer(1);
- my $filter = $self->filter;
+
foreach my $sub (qw(cur new tmp)) {
-d "$dir/$sub" or die "$dir is not a Maildir (missing $sub)\n";
}
while (defined(my $fn = readdir($dh))) {
next unless is_maildir_basename($fn);
my $mime = maildir_file_load("$dir/$fn") or next;
- if ($filter) {
+
+ if (my $filter = $self->filter($im)) {
my $ret = $filter->scrub($mime) or return;
return if $ret == REJECT();
$mime = $ret;
sub _read_git_config_perm {
my ($self) = @_;
- my @cmd = qw(config);
chomp(my $perm = $self->git->qx('config', 'core.sharedRepository'));
$perm;
}
sub _git_config_perm {
my $self = shift;
my $perm = scalar @_ ? $_[0] : _read_git_config_perm($self);
- return PERM_GROUP if (!defined($perm) || $perm eq '');
+ return PERM_UMASK if (!defined($perm) || $perm eq '');
return PERM_UMASK if ($perm eq 'umask');
return PERM_GROUP if ($perm eq 'group');
if ($perm =~ /\A(?:all|world|everybody)\z/) {