From 2a353273079b2491cbceb20526d3c9dbf43d8f62 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Wed, 18 Apr 2018 23:27:44 +0000 Subject: ensure SQLite and Xapian files respect core.sharedRepository We can't have files with permissions inconsistent with what's in git objects. --- lib/PublicInbox/V2Writable.pm | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'lib/PublicInbox/V2Writable.pm') diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm index 1316d628..d8d75ec2 100644 --- a/lib/PublicInbox/V2Writable.pm +++ b/lib/PublicInbox/V2Writable.pm @@ -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; -- cgit v1.2.3-24-ge0c7