about summary refs log tree commit homepage
path: root/lib/PublicInbox/Emergency.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/PublicInbox/Emergency.pm')
-rw-r--r--lib/PublicInbox/Emergency.pm6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/PublicInbox/Emergency.pm b/lib/PublicInbox/Emergency.pm
index 02900bb1..b705e776 100644
--- a/lib/PublicInbox/Emergency.pm
+++ b/lib/PublicInbox/Emergency.pm
@@ -12,11 +12,13 @@ use IO::Handle; # ->flush, ->autoflush
 sub new {
         my ($class, $dir) = @_;
 
-        -d $dir or mkdir($dir) or die "failed to mkdir($dir): $!\n";
         foreach (qw(new tmp cur)) {
                 my $d = "$dir/$_";
                 next if -d $d;
-                -d $d or mkdir($d) or die "failed to mkdir($d): $!\n";
+                require File::Path;
+                if (!File::Path::mkpath($d) && !-d $d) {
+                        die "failed to mkpath($d): $!\n";
+                }
         }
         bless { dir => $dir, files => {}, t => 0, cnt => 0, pid => $$ }, $class;
 }