aboutsummaryrefslogtreecommitdiff
path: root/src/libstore
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstore')
-rw-r--r--src/libstore/db.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/libstore/db.cc b/src/libstore/db.cc
index c3cdd3232..657f6b7b4 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,