diff options
Diffstat (limited to 'lib/ntdb/open.c')
-rw-r--r-- | lib/ntdb/open.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/lib/ntdb/open.c b/lib/ntdb/open.c index abec117236..2a265afe7d 100644 --- a/lib/ntdb/open.c +++ b/lib/ntdb/open.c @@ -679,6 +679,17 @@ _PUBLIC_ struct ntdb_context *ntdb_open(const char *name, int ntdb_flags, ntdb->file->device = st.st_dev; ntdb->file->inode = st.st_ino; + + /* call their open hook if they gave us one. */ + if (ntdb->openhook) { + ecode = ntdb->openhook(ntdb->file->fd, ntdb->openhook_data); + if (ecode != NTDB_SUCCESS) { + ntdb_logerr(ntdb, ecode, NTDB_LOG_ERROR, + "ntdb_open: open hook failed"); + goto fail; + } + open_flags |= O_CREAT; + } } else { /* ensure there is only one process initialising at once */ ecode = ntdb_lock_open(ntdb, openlock, @@ -689,17 +700,6 @@ _PUBLIC_ struct ntdb_context *ntdb_open(const char *name, int ntdb_flags, } } - /* call their open hook if they gave us one. */ - if (ntdb->openhook) { - ecode = ntdb->openhook(ntdb->file->fd, ntdb->openhook_data); - if (ecode != NTDB_SUCCESS) { - ntdb_logerr(ntdb, ecode, NTDB_LOG_ERROR, - "ntdb_open: open hook failed"); - goto fail; - } - open_flags |= O_CREAT; - } - /* If they used O_TRUNC, read will return 0. */ rlen = pread(ntdb->file->fd, &hdr, sizeof(hdr), 0); if (rlen == 0 && (open_flags & O_CREAT)) { |