mirror of
https://github.com/samba-team/samba.git
synced 2025-03-08 04:58:40 +03:00
Refactor code to check whether already open into its own function.
(This used to be commit 52ef112e10dbe273b6e66c4a5081f468e4630b7d)
This commit is contained in:
parent
a23800be19
commit
dddef5d5b2
@ -1373,6 +1373,20 @@ int tdb_store(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, int flag)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int tdb_already_open(dev_t device,
|
||||
ino_t ino)
|
||||
{
|
||||
TDB_CONTEXT *i;
|
||||
|
||||
for (i = tdbs; i; i = i->next) {
|
||||
if (i->device == device && i->inode == ino) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* open the database, creating it if necessary
|
||||
|
||||
The open_flags and mode are passed straight to the open call on the
|
||||
@ -1392,7 +1406,7 @@ TDB_CONTEXT *tdb_open_ex(char *name, int hash_size, int tdb_flags,
|
||||
int open_flags, mode_t mode,
|
||||
tdb_log_func log_fn)
|
||||
{
|
||||
TDB_CONTEXT tdb[1], *ret, *i;
|
||||
TDB_CONTEXT tdb[1], *ret;
|
||||
struct stat st;
|
||||
int rev = 0, locked;
|
||||
|
||||
@ -1463,13 +1477,12 @@ TDB_CONTEXT *tdb_open_ex(char *name, int hash_size, int tdb_flags,
|
||||
goto fail;
|
||||
|
||||
/* Is it already in the open list? If so, fail. */
|
||||
if (tdb_already_open(st.st_dev, st.st_ino)
|
||||
for (i = tdbs; i; i = i->next) {
|
||||
if (i->device == st.st_dev && i->inode == st.st_ino) {
|
||||
errno = EBUSY;
|
||||
close(tdb->fd);
|
||||
goto fail;
|
||||
}
|
||||
if (tdb_already_open(st.st_dev, st.st_ino)) {
|
||||
TDB_LOG((tdb, 2,
|
||||
"tdb_open_ex: %s (%d,%d) is already open\n",
|
||||
name, st.st_dev, st.st_ino));
|
||||
errno = EBUSY;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
/* map the database and fill in the return structure */
|
||||
|
Loading…
x
Reference in New Issue
Block a user