X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FInboxWritable.pm;h=f2ba21fcbdfa02051d1a5d8677a81279942978f5;hb=f63bdad8579f96901e08d2e7d9cd46ea528ffcce;hp=228e786ce7ecc07946cb74769a615d608e7b72ff;hpb=a7d4f457ec2b4531b3aaeb6cef1383bbda5b431a;p=public-inbox.git diff --git a/lib/PublicInbox/InboxWritable.pm b/lib/PublicInbox/InboxWritable.pm index 228e786c..f2ba21fc 100644 --- a/lib/PublicInbox/InboxWritable.pm +++ b/lib/PublicInbox/InboxWritable.pm @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2019 all contributors +# Copyright (C) 2018-2020 all contributors # License: AGPL-3.0+ # Extends read-only Inbox for writing @@ -19,12 +19,13 @@ use constant { sub new { my ($class, $ibx, $creat_opt) = @_; + return $ibx if ref($ibx) eq $class; my $self = bless $ibx, $class; # TODO: maybe stop supporting this if ($creat_opt) { # for { nproc => $N } $self->{-creat_opt} = $creat_opt; - init_inbox($self) if ($self->{version} || 1) == 1; + init_inbox($self) if $self->version == 1; } $self; } @@ -39,8 +40,7 @@ sub assert_usable_dir { sub init_inbox { my ($self, $shards, $skip_epoch, $skip_artnum) = @_; # TODO: honor skip_artnum - my $v = $self->{version} || 1; - if ($v == 1) { + if ($self->version == 1) { my $dir = assert_usable_dir($self); PublicInbox::Import::init_bare($dir); } else { @@ -51,7 +51,7 @@ sub init_inbox { sub importer { my ($self, $parallel) = @_; - my $v = $self->{version} || 1; + my $v = $self->version; if ($v == 2) { eval { require PublicInbox::V2Writable }; die "v2 not supported: $@\n" if $@; @@ -75,7 +75,7 @@ sub filter { # 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}) { + if ($im && $self->version >= 2 && $self->{altid}) { $im->done; } @@ -157,12 +157,12 @@ my $from_strict = qr/^From \S+ +\S+ \S+ +\S+ [^:]+:[^:]+:[^:]+ [^:]+/; sub mb_add ($$$$) { my ($im, $variant, $filter, $msg) = @_; $$msg =~ s/(\r?\n)+\z/$1/s; - my $mime = PublicInbox::MIME->new($msg); if ($variant eq 'mboxrd') { - $$msg =~ s/^>(>*From )/$1/sm; + $$msg =~ s/^>(>*From )/$1/gms; } elsif ($variant eq 'mboxo') { - $$msg =~ s/^>From /From /sm; + $$msg =~ s/^>From /From /gms; } + my $mime = PublicInbox::MIME->new($msg); if ($filter) { my $ret = $filter->scrub($mime) or return; return if $ret == REJECT();