From db3211079fd594aa03c3b9bb3eb6ad86bdd32837 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 20 Oct 2006 08:06:14 +0000 Subject: [PATCH 1/1] r19423: merge some tdb changes from SAMBA_3_0 to SAMBA_4_0 this is in preparation of a merge in the other direction --- source/lib/tdb/common/io.c | 5 +++-- source/lib/tdb/common/open.c | 7 ++++--- source/lib/tdb/common/tdb.c | 5 +++++ source/lib/tdb/common/transaction.c | 17 ++++++++++------- source/lib/tdb/include/tdb.h | 1 + 5 files changed, 23 insertions(+), 12 deletions(-) diff --git a/source/lib/tdb/common/io.c b/source/lib/tdb/common/io.c index 383023e88a4..5d2c5c8e2ee 100644 --- a/source/lib/tdb/common/io.c +++ b/source/lib/tdb/common/io.c @@ -102,7 +102,7 @@ static int tdb_write(struct tdb_context *tdb, tdb_off_t off, /* Endian conversion: we only ever deal with 4 byte quantities */ void *tdb_convert(void *buf, u32 size) { - u32 i, *p = buf; + u32 i, *p = (u32 *)buf; for (i = 0; i < size / 4; i++) p[i] = TDB_BYTEREV(p[i]); return buf; @@ -282,7 +282,8 @@ int tdb_expand(struct tdb_context *tdb, tdb_off_t size) tdb->map_size += size; if (tdb->flags & TDB_INTERNAL) { - char *new_map_ptr = realloc(tdb->map_ptr, tdb->map_size); + char *new_map_ptr = (char *)realloc(tdb->map_ptr, + tdb->map_size); if (!new_map_ptr) { tdb->map_size -= size; goto fail; diff --git a/source/lib/tdb/common/open.c b/source/lib/tdb/common/open.c index 29ce1242ccf..e1f21aa8560 100644 --- a/source/lib/tdb/common/open.c +++ b/source/lib/tdb/common/open.c @@ -54,7 +54,7 @@ static int tdb_new_database(struct tdb_context *tdb, int hash_size) /* We make it up in memory, then write it out if not internal */ size = sizeof(struct tdb_header) + (hash_size+1)*sizeof(tdb_off_t); - if (!(newdb = calloc(size, 1))) + if (!(newdb = (struct tdb_header *)calloc(size, 1))) return TDB_ERRCODE(TDB_ERR_OOM, -1); /* Fill in the header */ @@ -140,7 +140,7 @@ struct tdb_context *tdb_open_ex(const char *name, int hash_size, int tdb_flags, unsigned char *vp; u32 vertest; - if (!(tdb = calloc(1, sizeof *tdb))) { + if (!(tdb = (struct tdb_context *)calloc(1, sizeof *tdb))) { /* Can't log this */ errno = ENOMEM; goto fail; @@ -263,7 +263,8 @@ struct tdb_context *tdb_open_ex(const char *name, int hash_size, int tdb_flags, tdb->map_size = st.st_size; tdb->device = st.st_dev; tdb->inode = st.st_ino; - tdb->locked = calloc(tdb->header.hash_size+1, sizeof(tdb->locked[0])); + tdb->locked = (struct tdb_lock_type *)calloc(tdb->header.hash_size+1, + sizeof(tdb->locked[0])); if (!tdb->locked) { TDB_LOG((tdb, TDB_DEBUG_ERROR, "tdb_open_ex: " "failed to allocate lock structure for %s\n", diff --git a/source/lib/tdb/common/tdb.c b/source/lib/tdb/common/tdb.c index 52e2d633b0a..8d067ebeccf 100644 --- a/source/lib/tdb/common/tdb.c +++ b/source/lib/tdb/common/tdb.c @@ -423,3 +423,8 @@ int tdb_get_seqnum(struct tdb_context *tdb) tdb_ofs_read(tdb, TDB_SEQNUM_OFS, &seqnum); return seqnum; } + +int tdb_hash_size(struct tdb_context *tdb) +{ + return tdb->header.hash_size; +} diff --git a/source/lib/tdb/common/transaction.c b/source/lib/tdb/common/transaction.c index 526aef7d038..7dff9a95e34 100644 --- a/source/lib/tdb/common/transaction.c +++ b/source/lib/tdb/common/transaction.c @@ -258,7 +258,8 @@ static int transaction_write(struct tdb_context *tdb, tdb_off_t off, off > tdb->transaction->old_map_size)) { unsigned char *data = best_el->data; el = best_el; - el->data = realloc(el->data, el->length + len); + el->data = (unsigned char *)realloc(el->data, + el->length + len); if (el->data == NULL) { tdb->ecode = TDB_ERR_OOM; tdb->transaction->transaction_error = 1; @@ -275,7 +276,7 @@ static int transaction_write(struct tdb_context *tdb, tdb_off_t off, } /* add a new entry at the end of the list */ - el = malloc(sizeof(*el)); + el = (struct tdb_transaction_el *)malloc(sizeof(*el)); if (el == NULL) { tdb->ecode = TDB_ERR_OOM; tdb->transaction->transaction_error = 1; @@ -285,7 +286,7 @@ static int transaction_write(struct tdb_context *tdb, tdb_off_t off, el->prev = tdb->transaction->elements_last; el->offset = off; el->length = len; - el->data = malloc(len); + el->data = (unsigned char *)malloc(len); if (el->data == NULL) { free(el); tdb->ecode = TDB_ERR_OOM; @@ -411,7 +412,8 @@ int tdb_transaction_start(struct tdb_context *tdb) return -1; } - tdb->transaction = calloc(sizeof(struct tdb_transaction), 1); + tdb->transaction = (struct tdb_transaction *) + calloc(sizeof(struct tdb_transaction), 1); if (tdb->transaction == NULL) { tdb->ecode = TDB_ERR_OOM; return -1; @@ -437,7 +439,8 @@ int tdb_transaction_start(struct tdb_context *tdb) /* setup a copy of the hash table heads so the hash scan in traverse can be fast */ - tdb->transaction->hash_heads = calloc(tdb->header.hash_size+1, sizeof(tdb_off_t)); + tdb->transaction->hash_heads = (u32 *) + calloc(tdb->header.hash_size+1, sizeof(u32)); if (tdb->transaction->hash_heads == NULL) { tdb->ecode = TDB_ERR_OOM; goto fail; @@ -684,7 +687,7 @@ static int transaction_setup_recovery(struct tdb_context *tdb, return -1; } - data = malloc(recovery_size + sizeof(*rec)); + data = (unsigned char *)malloc(recovery_size + sizeof(*rec)); if (data == NULL) { tdb->ecode = TDB_ERR_OOM; return -1; @@ -966,7 +969,7 @@ int tdb_transaction_recover(struct tdb_context *tdb) recovery_eof = rec.key_len; - data = malloc(rec.data_len); + data = (unsigned char *)malloc(rec.data_len); if (data == NULL) { TDB_LOG((tdb, TDB_DEBUG_FATAL, "tdb_transaction_recover: failed to allocate recovery data\n")); tdb->ecode = TDB_ERR_OOM; diff --git a/source/lib/tdb/include/tdb.h b/source/lib/tdb/include/tdb.h index af3792cbfef..8a2110ba6e7 100644 --- a/source/lib/tdb/include/tdb.h +++ b/source/lib/tdb/include/tdb.h @@ -123,6 +123,7 @@ int tdb_transaction_commit(struct tdb_context *tdb); int tdb_transaction_cancel(struct tdb_context *tdb); int tdb_transaction_recover(struct tdb_context *tdb); int tdb_get_seqnum(struct tdb_context *tdb); +int tdb_hash_size(struct tdb_context *tdb); /* Low level locking functions: use with care */ int tdb_chainlock(struct tdb_context *tdb, TDB_DATA key); -- 2.34.1