- my ($self) = @_;
- my ($fh, $fn) = tempfile('msgmap-XXXXXXXX', EXLOCK => 0, TMPDIR => 1);
- my $tmp;
- if ($self->{dbh}->can('sqlite_backup_to_dbh')) {
- $tmp = ref($self)->new_file($fn, 2);
- $tmp->{dbh}->do('PRAGMA journal_mode = MEMORY');
- $self->{dbh}->sqlite_backup_to_dbh($tmp->{dbh});
- } else { # DBD::SQLite <= 1.61_01
- $self->{dbh}->sqlite_backup_to_file($fn);
- $tmp = ref($self)->new_file($fn, 2);
- $tmp->{dbh}->do('PRAGMA journal_mode = MEMORY');
- }
+ my ($self, $dir) = @_;
+ require File::Temp;
+ my $tmp = "mm_tmp-$$-XXXX";
+ my ($fh, $fn) = File::Temp::tempfile($tmp, EXLOCK => 0, DIR => $dir);
+ PublicInbox::Spawn::nodatacow_fd(fileno($fh));
+ $self->{dbh}->sqlite_backup_to_file($fn);
+ $tmp = ref($self)->new_file($fn, 2);
+ $tmp->{dbh}->do('PRAGMA journal_mode = MEMORY');