diff options
-rw-r--r-- | src/libstore/db.cc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/libstore/db.cc b/src/libstore/db.cc index c3cdd3232ff3..657f6b7b4bac 100644 --- a/src/libstore/db.cc +++ b/src/libstore/db.cc @@ -143,6 +143,15 @@ Database::~Database() void openEnv(DbEnv * & env, const string & path, u_int32_t flags) { try { + createDirs(path); + } catch (SysError & e) { + if (e.errNo == EPERM || e.errNo == EACCES) + throw DbNoPermission(format("cannot create the Nix database in `%1%'") % path); + else + throw; + } + + try { env->open(path.c_str(), DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN | DB_CREATE | flags, |