about summary refs log tree commit homepage
path: root/lib/PublicInbox/Msgmap.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-10-12 11:47:04 +0000
committerEric Wong <e@80x24.org>2021-10-12 21:46:36 +0000
commit9f02576da775abf208f5a03c03b6f7abd72596d0 (patch)
tree49d24d01fca0987281d087862e5149c60928b68a /lib/PublicInbox/Msgmap.pm
parent2a3c8d7a2c40ad9424db10d68470d8bb120bddf9 (diff)
downloadpublic-inbox-9f02576da775abf208f5a03c03b6f7abd72596d0.tar.gz
msgmap: ->new_file to supports $ibx arg, drop ->new
The original Msgmap->new API was v1-specific and not necessary.
The ->new_file API now supports an $ibx object being passed to
it, simplify -no_fsync use.  It will also make an upcoming
change easier...
Diffstat (limited to 'lib/PublicInbox/Msgmap.pm')
-rw-r--r--lib/PublicInbox/Msgmap.pm20
1 files changed, 9 insertions, 11 deletions
diff --git a/lib/PublicInbox/Msgmap.pm b/lib/PublicInbox/Msgmap.pm
index 978730e2..94a0cbeb 100644
--- a/lib/PublicInbox/Msgmap.pm
+++ b/lib/PublicInbox/Msgmap.pm
@@ -14,19 +14,17 @@ use DBI;
 use DBD::SQLite;
 use PublicInbox::Over;
 use PublicInbox::Spawn;
-
-sub new {
-        my ($class, $git_dir, $writable) = @_;
-        my $d = "$git_dir/public-inbox";
-        if ($writable && !-d $d && !mkdir $d) {
-                my $err = $!;
-                -d $d or die "$d not created: $err";
-        }
-        new_file($class, "$d/msgmap.sqlite3", $writable);
-}
+use Scalar::Util qw(blessed);
 
 sub new_file {
-        my ($class, $f, $rw) = @_;
+        my ($class, $ibx, $rw) = @_;
+        my $f;
+        if (blessed($ibx)) {
+                $f = $ibx->mm_file;
+                $rw = 2 if $rw && $ibx->{-no_fsync};
+        } else {
+                $f = $ibx;
+        }
         return if !$rw && !-r $f;
 
         my $self = bless { filename => $f }, $class;