diff options
author | Eric Wong <e@80x24.org> | 2018-04-18 23:27:44 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2018-04-18 23:40:52 +0000 |
commit | 2a353273079b2491cbceb20526d3c9dbf43d8f62 (patch) | |
tree | e84d1b4f39fbb63231c8b3585d14bcd1a7240136 /lib/PublicInbox/V2Writable.pm | |
parent | cfb8d16578e7f2f2e300f9f436205e4a8fc7f322 (diff) | |
download | public-inbox-2a353273079b2491cbceb20526d3c9dbf43d8f62.tar.gz |
We can't have files with permissions inconsistent with what's in git objects.
Diffstat (limited to 'lib/PublicInbox/V2Writable.pm')
-rw-r--r-- | lib/PublicInbox/V2Writable.pm | 16 |
1 files changed, 14 insertions, 2 deletions
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; |