]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/V2Writable.pm
ensure SQLite and Xapian files respect core.sharedRepository
[public-inbox.git] / lib / PublicInbox / V2Writable.pm
index 1316d628491f576c0096b3be215826d94e03aae9..d8d75ec272d809335f91a82ce8b10e5fc1be5516 100644 (file)
@@ -63,6 +63,7 @@ sub new {
        }
 
        $v2ibx = PublicInbox::InboxWritable->new($v2ibx);
+       $v2ibx->umask_prepare;
 
        my $xpfx = "$dir/xap" . PublicInbox::Search::SCHEMA_VERSION;
        my $self = {
@@ -95,6 +96,13 @@ sub init_inbox {
 # mimics Import::add and wraps it for v2
 sub add {
        my ($self, $mime, $check_cb) = @_;
+       $self->{-inbox}->with_umask(sub {
+               _add($self, $mime, $check_cb)
+       });
+}
+
+sub _add {
+       my ($self, $mime, $check_cb) = @_;
 
        # spam check:
        if ($check_cb) {
@@ -348,12 +356,16 @@ sub remove_internal {
 
 sub remove {
        my ($self, $mime, $cmt_msg) = @_;
-       remove_internal($self, $mime, $cmt_msg);
+       $self->{-inbox}->with_umask(sub {
+               remove_internal($self, $mime, $cmt_msg);
+       });
 }
 
 sub purge {
        my ($self, $mime) = @_;
-       my $purges = remove_internal($self, $mime, undef, {});
+       my $purges = $self->{-inbox}->with_umask(sub {
+               remove_internal($self, $mime, undef, {});
+       });
        $self->idx_init if @$purges; # ->done is called on purges
        for my $i (0..$#$purges) {
                defined(my $cmt = $purges->[$i]) or next;