mirror of
https://github.com/samba-team/samba.git
synced 2025-03-26 18:50:30 +03:00
dbwrap: Make dbwrap_db_id return size_t
This will make an on-stack db-id easier Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Ralph Boehme <slow@samba.org>
This commit is contained in:
parent
71a407edad
commit
9964d60e3e
@ -449,9 +449,9 @@ int dbwrap_transaction_cancel(struct db_context *db)
|
||||
return db->transaction_cancel(db);
|
||||
}
|
||||
|
||||
void dbwrap_db_id(struct db_context *db, const uint8_t **id, size_t *idlen)
|
||||
size_t dbwrap_db_id(struct db_context *db, uint8_t *id, size_t idlen)
|
||||
{
|
||||
db->id(db, id, idlen);
|
||||
return db->id(db, id, idlen);
|
||||
}
|
||||
|
||||
bool dbwrap_is_persistent(struct db_context *db)
|
||||
|
@ -87,7 +87,7 @@ int dbwrap_transaction_start(struct db_context *db);
|
||||
NTSTATUS dbwrap_transaction_start_nonblock(struct db_context *db);
|
||||
int dbwrap_transaction_commit(struct db_context *db);
|
||||
int dbwrap_transaction_cancel(struct db_context *db);
|
||||
void dbwrap_db_id(struct db_context *db, const uint8_t **id, size_t *idlen);
|
||||
size_t dbwrap_db_id(struct db_context *db, uint8_t *id, size_t idlen);
|
||||
bool dbwrap_is_persistent(struct db_context *db);
|
||||
const char *dbwrap_name(struct db_context *db);
|
||||
|
||||
|
@ -179,12 +179,13 @@ static int dbwrap_cache_exists(struct db_context *db, TDB_DATA key)
|
||||
return dbwrap_exists(ctx->backing, key);
|
||||
}
|
||||
|
||||
static void dbwrap_cache_id(struct db_context *db, const uint8_t **id,
|
||||
size_t *idlen)
|
||||
static size_t dbwrap_cache_id(struct db_context *db, uint8_t *id,
|
||||
size_t idlen)
|
||||
{
|
||||
struct db_cache_ctx *ctx = talloc_get_type_abort(
|
||||
db->private_data, struct db_cache_ctx);
|
||||
dbwrap_db_id(ctx->backing, id, idlen);
|
||||
|
||||
return dbwrap_db_id(ctx->backing, id, idlen);
|
||||
}
|
||||
|
||||
struct db_context *db_open_cache(TALLOC_CTX *mem_ctx,
|
||||
|
@ -58,7 +58,8 @@ struct db_context {
|
||||
int (*exists)(struct db_context *db,TDB_DATA key);
|
||||
int (*wipe)(struct db_context *db);
|
||||
int (*check)(struct db_context *db);
|
||||
void (*id)(struct db_context *db, const uint8_t **id, size_t *idlen);
|
||||
size_t (*id)(struct db_context *db, uint8_t *id, size_t idlen);
|
||||
|
||||
const char *name;
|
||||
void *private_data;
|
||||
enum dbwrap_lock_order lock_order;
|
||||
|
@ -497,10 +497,12 @@ static int db_rbt_trans_dummy(struct db_context *db)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void db_rbt_id(struct db_context *db, const uint8_t **id, size_t *idlen)
|
||||
static size_t db_rbt_id(struct db_context *db, uint8_t *id, size_t idlen)
|
||||
{
|
||||
*id = (uint8_t *)db;
|
||||
*idlen = sizeof(struct db_context *);
|
||||
if (idlen >= sizeof(struct db_context *)) {
|
||||
memcpy(id, &db, sizeof(struct db_context *));
|
||||
}
|
||||
return sizeof(struct db_context *);
|
||||
}
|
||||
|
||||
struct db_context *db_open_rbt(TALLOC_CTX *mem_ctx)
|
||||
|
@ -388,12 +388,16 @@ static int db_tdb_transaction_cancel(struct db_context *db)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void db_tdb_id(struct db_context *db, const uint8_t **id, size_t *idlen)
|
||||
static size_t db_tdb_id(struct db_context *db, uint8_t *id, size_t idlen)
|
||||
{
|
||||
struct db_tdb_ctx *db_ctx =
|
||||
talloc_get_type_abort(db->private_data, struct db_tdb_ctx);
|
||||
*id = (uint8_t *)&db_ctx->id;
|
||||
*idlen = sizeof(db_ctx->id);
|
||||
|
||||
if (idlen >= sizeof(db_ctx->id)) {
|
||||
memcpy(id, &db_ctx->id, sizeof(db_ctx->id));
|
||||
}
|
||||
|
||||
return sizeof(db_ctx->id);
|
||||
}
|
||||
|
||||
struct db_context *db_open_tdb(TALLOC_CTX *mem_ctx,
|
||||
|
@ -1517,14 +1517,16 @@ static int db_ctdb_get_seqnum(struct db_context *db)
|
||||
return tdb_get_seqnum(ctx->wtdb->tdb);
|
||||
}
|
||||
|
||||
static void db_ctdb_id(struct db_context *db, const uint8_t **id,
|
||||
size_t *idlen)
|
||||
static size_t db_ctdb_id(struct db_context *db, uint8_t *id, size_t idlen)
|
||||
{
|
||||
struct db_ctdb_ctx *ctx = talloc_get_type_abort(
|
||||
db->private_data, struct db_ctdb_ctx);
|
||||
|
||||
*id = (uint8_t *)&ctx->db_id;
|
||||
*idlen = sizeof(ctx->db_id);
|
||||
if (idlen >= sizeof(ctx->db_id)) {
|
||||
memcpy(id, &ctx->db_id, sizeof(ctx->db_id));
|
||||
}
|
||||
|
||||
return sizeof(ctx->db_id);
|
||||
}
|
||||
|
||||
struct db_context *db_open_ctdb(TALLOC_CTX *mem_ctx,
|
||||
|
@ -50,11 +50,12 @@ static TDB_DATA dbwrap_record_watchers_key(TALLOC_CTX *mem_ctx,
|
||||
struct db_record *rec,
|
||||
TDB_DATA *rec_key)
|
||||
{
|
||||
const uint8_t *db_id;
|
||||
size_t db_id_len;
|
||||
size_t db_id_len = dbwrap_db_id(db, NULL, 0);
|
||||
uint8_t db_id[db_id_len];
|
||||
TDB_DATA key, wkey;
|
||||
|
||||
dbwrap_db_id(db, &db_id, &db_id_len);
|
||||
dbwrap_db_id(db, db_id, db_id_len);
|
||||
|
||||
key = dbwrap_record_get_key(rec);
|
||||
|
||||
wkey.dsize = sizeof(uint32_t) + db_id_len + key.dsize;
|
||||
|
Loading…
x
Reference in New Issue
Block a user