]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/InboxWritable.pm
$INBOX/_/text/color/ and sample user-side CSS
[public-inbox.git] / lib / PublicInbox / InboxWritable.pm
index 5c11a36c27631e4b82bed1de1dabe222e41ef484..2f1ca6f0ab2460638eef994c495706ad1a9b3286 100644 (file)
@@ -39,15 +39,23 @@ sub importer {
                        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...
@@ -99,7 +107,7 @@ sub maildir_path_load ($) {
 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";
        }
@@ -108,7 +116,8 @@ sub import_maildir {
                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;
@@ -167,7 +176,6 @@ sub import_mbox {
 
 sub _read_git_config_perm {
        my ($self) = @_;
-       my @cmd = qw(config);
        chomp(my $perm = $self->git->qx('config', 'core.sharedRepository'));
        $perm;
 }
@@ -175,7 +183,7 @@ sub _read_git_config_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/) {