]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/IMAPTracker.pm
imaptracker: use ~/.local/share/public-inbox/imap.sqlite3
[public-inbox.git] / lib / PublicInbox / IMAPTracker.pm
index c7da422b725f0c9d8cab1c8bb3ccdb22aa7898c6..bb4a39cc41a64968b526a09d3f4fe4b972ba8ec0 100644 (file)
@@ -52,8 +52,23 @@ VALUES (?, ?, ?)
 }
 
 sub new {
-       my ($class) = @_;
-       my $dbname = PublicInbox::Config->config_dir() . "/imap.sqlite3";
+       my ($class, $dbname) = @_;
+
+       # original name for compatibility with old setups:
+       $dbname //= PublicInbox::Config->config_dir() . "/imap.sqlite3";
+
+       # use the new XDG-compliant name for new setups:
+       if (!-f $dbname) {
+               $dbname = ($ENV{XDG_DATA_HOME} //
+                       (($ENV{HOME} // '/nonexistent').'/.local/share')) .
+                       '/public-inbox/imap.sqlite3';
+       }
+       if (!-f $dbname) {
+               require File::Path;
+               require File::Basename;;
+               File::Path::mkpath(File::Basename::dirname($dbname));
+       }
+
        my $dbh = dbh_new($dbname);
        bless { dbname => $dbname, dbh => $dbh }, $class;
 }