mirror of
https://git.telodendria.io/Telodendria/Cytoplasm.git
synced 2025-04-25 10:26:03 +00:00
[ADD/FIX] Add DbOPERATIONArgs functions, fix LMDB
This commit is contained in:
parent
39e81139f0
commit
100d61050f
5 changed files with 118 additions and 8 deletions
75
src/Db/Db.c
75
src/Db/Db.c
|
@ -262,6 +262,16 @@ DbClose(Db * db)
|
|||
Free(db);
|
||||
}
|
||||
|
||||
DbRef *
|
||||
DbCreateArgs(Db * db, Array *args)
|
||||
{
|
||||
if (!args || !db || !db->create)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return db->create(db, args);
|
||||
}
|
||||
DbRef *
|
||||
DbCreate(Db * db, size_t nArgs,...)
|
||||
{
|
||||
|
@ -283,12 +293,22 @@ DbCreate(Db * db, size_t nArgs,...)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
ret = db->create(db, args);
|
||||
ret = DbCreateArgs(db, args);
|
||||
ArrayFree(args);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool
|
||||
DbDeleteArgs(Db * db, Array *args)
|
||||
{
|
||||
if (!args || !db || !db->delete)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return db->delete(db, args);
|
||||
}
|
||||
bool
|
||||
DbDelete(Db * db, size_t nArgs,...)
|
||||
{
|
||||
|
@ -305,12 +325,22 @@ DbDelete(Db * db, size_t nArgs,...)
|
|||
args = ArrayFromVarArgs(nArgs, ap);
|
||||
va_end(ap);
|
||||
|
||||
ret = db->delete(db, args);
|
||||
ret = DbDeleteArgs(db, args);
|
||||
|
||||
ArrayFree(args);
|
||||
return ret;
|
||||
}
|
||||
|
||||
DbRef *
|
||||
DbLockArgs(Db * db, Array *args)
|
||||
{
|
||||
if (!args || !db || !db->lockFunc)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return db->lockFunc(db, DB_HINT_WRITE, args);
|
||||
}
|
||||
DbRef *
|
||||
DbLock(Db * db, size_t nArgs,...)
|
||||
{
|
||||
|
@ -318,6 +348,11 @@ DbLock(Db * db, size_t nArgs,...)
|
|||
Array *args;
|
||||
DbRef *ret;
|
||||
|
||||
if (!db)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
va_start(ap, nArgs);
|
||||
args = ArrayFromVarArgs(nArgs, ap);
|
||||
va_end(ap);
|
||||
|
@ -327,13 +362,22 @@ DbLock(Db * db, size_t nArgs,...)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
ret = db->lockFunc(db, DB_HINT_WRITE, args);
|
||||
ret = DbLockArgs(db, args);
|
||||
|
||||
ArrayFree(args);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
DbRef *
|
||||
DbLockIntentArgs(Db * db, DbHint hint, Array *args)
|
||||
{
|
||||
if (!db || !args || !db->lockFunc)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
return db->lockFunc(db, hint, args);
|
||||
}
|
||||
DbRef *
|
||||
DbLockIntent(Db * db, DbHint hint, size_t nArgs,...)
|
||||
{
|
||||
|
@ -350,7 +394,7 @@ DbLockIntent(Db * db, DbHint hint, size_t nArgs,...)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
ret = db->lockFunc(db, hint, args);
|
||||
ret = DbLockIntentArgs(db, hint, args);
|
||||
|
||||
ArrayFree(args);
|
||||
|
||||
|
@ -368,6 +412,16 @@ DbUnlock(Db * db, DbRef * ref)
|
|||
return db->unlock(db, ref);
|
||||
}
|
||||
|
||||
bool
|
||||
DbExistsArgs(Db * db, Array *args)
|
||||
{
|
||||
if (!args || !db || !db->exists)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return db->exists(db, args);
|
||||
}
|
||||
bool
|
||||
DbExists(Db * db, size_t nArgs,...)
|
||||
{
|
||||
|
@ -388,12 +442,21 @@ DbExists(Db * db, size_t nArgs,...)
|
|||
return false;
|
||||
}
|
||||
|
||||
ret = db->exists(db, args);
|
||||
ret = DbExistsArgs(db, args);
|
||||
ArrayFree(args);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
Array *
|
||||
DbListArgs(Db *db, Array *args)
|
||||
{
|
||||
if (!db || !args || !db->list)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
return db->list(db, args);
|
||||
}
|
||||
Array *
|
||||
DbList(Db * db, size_t nArgs,...)
|
||||
{
|
||||
|
@ -410,7 +473,7 @@ DbList(Db * db, size_t nArgs,...)
|
|||
path = ArrayFromVarArgs(nArgs, ap);
|
||||
va_end(ap);
|
||||
|
||||
result = db->list(db, path);
|
||||
result = DbListArgs(db, path);
|
||||
|
||||
ArrayFree(path);
|
||||
return result;
|
||||
|
|
|
@ -54,7 +54,8 @@ DbDirName(FlatDb * db, Array * args, size_t strip)
|
|||
{
|
||||
char *tmp;
|
||||
char *sanitise = StrDuplicate(ArrayGet(args, i));
|
||||
for (j = 0; j < strlen(sanitise); j++)
|
||||
size_t len = strlen(sanitise);
|
||||
for (j = 0; j < len; j++)
|
||||
{
|
||||
sanitise[j] = DbSanitiseChar(sanitise[j]);
|
||||
}
|
||||
|
|
|
@ -128,7 +128,9 @@ LMDBKeyHead(MDB_val key)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
while ((void *) (end - 1) >= key.mv_data && *(end - 1))
|
||||
/* Doing >= will lead to cases where it is sent straight to the
|
||||
* start. Don't do that. */
|
||||
while ((void *) (end - 1) > key.mv_data && *(end - 1))
|
||||
{
|
||||
end--;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue