mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
tdb: Add tdb_storev
Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Ralph Boehme <slow@samba.org>
This commit is contained in:
parent
647e61b0e8
commit
504b04b817
70
lib/tdb/ABI/tdb-1.3.11.sigs
Normal file
70
lib/tdb/ABI/tdb-1.3.11.sigs
Normal file
@ -0,0 +1,70 @@
|
||||
tdb_add_flags: void (struct tdb_context *, unsigned int)
|
||||
tdb_append: int (struct tdb_context *, TDB_DATA, TDB_DATA)
|
||||
tdb_chainlock: int (struct tdb_context *, TDB_DATA)
|
||||
tdb_chainlock_mark: int (struct tdb_context *, TDB_DATA)
|
||||
tdb_chainlock_nonblock: int (struct tdb_context *, TDB_DATA)
|
||||
tdb_chainlock_read: int (struct tdb_context *, TDB_DATA)
|
||||
tdb_chainlock_read_nonblock: int (struct tdb_context *, TDB_DATA)
|
||||
tdb_chainlock_unmark: int (struct tdb_context *, TDB_DATA)
|
||||
tdb_chainunlock: int (struct tdb_context *, TDB_DATA)
|
||||
tdb_chainunlock_read: int (struct tdb_context *, TDB_DATA)
|
||||
tdb_check: int (struct tdb_context *, int (*)(TDB_DATA, TDB_DATA, void *), void *)
|
||||
tdb_close: int (struct tdb_context *)
|
||||
tdb_delete: int (struct tdb_context *, TDB_DATA)
|
||||
tdb_dump_all: void (struct tdb_context *)
|
||||
tdb_enable_seqnum: void (struct tdb_context *)
|
||||
tdb_error: enum TDB_ERROR (struct tdb_context *)
|
||||
tdb_errorstr: const char *(struct tdb_context *)
|
||||
tdb_exists: int (struct tdb_context *, TDB_DATA)
|
||||
tdb_fd: int (struct tdb_context *)
|
||||
tdb_fetch: TDB_DATA (struct tdb_context *, TDB_DATA)
|
||||
tdb_firstkey: TDB_DATA (struct tdb_context *)
|
||||
tdb_freelist_size: int (struct tdb_context *)
|
||||
tdb_get_flags: int (struct tdb_context *)
|
||||
tdb_get_logging_private: void *(struct tdb_context *)
|
||||
tdb_get_seqnum: int (struct tdb_context *)
|
||||
tdb_hash_size: int (struct tdb_context *)
|
||||
tdb_increment_seqnum_nonblock: void (struct tdb_context *)
|
||||
tdb_jenkins_hash: unsigned int (TDB_DATA *)
|
||||
tdb_lock_nonblock: int (struct tdb_context *, int, int)
|
||||
tdb_lockall: int (struct tdb_context *)
|
||||
tdb_lockall_mark: int (struct tdb_context *)
|
||||
tdb_lockall_nonblock: int (struct tdb_context *)
|
||||
tdb_lockall_read: int (struct tdb_context *)
|
||||
tdb_lockall_read_nonblock: int (struct tdb_context *)
|
||||
tdb_lockall_unmark: int (struct tdb_context *)
|
||||
tdb_log_fn: tdb_log_func (struct tdb_context *)
|
||||
tdb_map_size: size_t (struct tdb_context *)
|
||||
tdb_name: const char *(struct tdb_context *)
|
||||
tdb_nextkey: TDB_DATA (struct tdb_context *, TDB_DATA)
|
||||
tdb_null: dptr = 0xXXXX, dsize = 0
|
||||
tdb_open: struct tdb_context *(const char *, int, int, int, mode_t)
|
||||
tdb_open_ex: struct tdb_context *(const char *, int, int, int, mode_t, const struct tdb_logging_context *, tdb_hash_func)
|
||||
tdb_parse_record: int (struct tdb_context *, TDB_DATA, int (*)(TDB_DATA, TDB_DATA, void *), void *)
|
||||
tdb_printfreelist: int (struct tdb_context *)
|
||||
tdb_remove_flags: void (struct tdb_context *, unsigned int)
|
||||
tdb_reopen: int (struct tdb_context *)
|
||||
tdb_reopen_all: int (int)
|
||||
tdb_repack: int (struct tdb_context *)
|
||||
tdb_rescue: int (struct tdb_context *, void (*)(TDB_DATA, TDB_DATA, void *), void *)
|
||||
tdb_runtime_check_for_robust_mutexes: bool (void)
|
||||
tdb_set_logging_function: void (struct tdb_context *, const struct tdb_logging_context *)
|
||||
tdb_set_max_dead: void (struct tdb_context *, int)
|
||||
tdb_setalarm_sigptr: void (struct tdb_context *, volatile sig_atomic_t *)
|
||||
tdb_store: int (struct tdb_context *, TDB_DATA, TDB_DATA, int)
|
||||
tdb_storev: int (struct tdb_context *, TDB_DATA, const TDB_DATA *, int, int)
|
||||
tdb_summary: char *(struct tdb_context *)
|
||||
tdb_transaction_cancel: int (struct tdb_context *)
|
||||
tdb_transaction_commit: int (struct tdb_context *)
|
||||
tdb_transaction_prepare_commit: int (struct tdb_context *)
|
||||
tdb_transaction_start: int (struct tdb_context *)
|
||||
tdb_transaction_start_nonblock: int (struct tdb_context *)
|
||||
tdb_transaction_write_lock_mark: int (struct tdb_context *)
|
||||
tdb_transaction_write_lock_unmark: int (struct tdb_context *)
|
||||
tdb_traverse: int (struct tdb_context *, tdb_traverse_func, void *)
|
||||
tdb_traverse_read: int (struct tdb_context *, tdb_traverse_func, void *)
|
||||
tdb_unlock: int (struct tdb_context *, int, int)
|
||||
tdb_unlockall: int (struct tdb_context *)
|
||||
tdb_unlockall_read: int (struct tdb_context *)
|
||||
tdb_validate_freelist: int (struct tdb_context *, int *)
|
||||
tdb_wipe_all: int (struct tdb_context *)
|
@ -670,6 +670,31 @@ _PUBLIC_ int tdb_store(struct tdb_context *tdb, TDB_DATA key, TDB_DATA dbuf, int
|
||||
return ret;
|
||||
}
|
||||
|
||||
_PUBLIC_ int tdb_storev(struct tdb_context *tdb, TDB_DATA key,
|
||||
const TDB_DATA *dbufs, int num_dbufs, int flag)
|
||||
{
|
||||
uint32_t hash;
|
||||
int ret;
|
||||
|
||||
if (tdb->read_only || tdb->traverse_read) {
|
||||
tdb->ecode = TDB_ERR_RDONLY;
|
||||
tdb_trace_1plusn_rec_flag_ret(tdb, "tdb_storev", key,
|
||||
dbufs, num_dbufs, flag, -1);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* find which hash bucket it is in */
|
||||
hash = tdb->hash_fn(&key);
|
||||
if (tdb_lock(tdb, BUCKET(hash), F_WRLCK) == -1)
|
||||
return -1;
|
||||
|
||||
ret = _tdb_storev(tdb, key, dbufs, num_dbufs, flag, hash);
|
||||
tdb_trace_1plusn_rec_flag_ret(tdb, "tdb_storev", key,
|
||||
dbufs, num_dbufs, flag, -1);
|
||||
tdb_unlock(tdb, BUCKET(hash), F_WRLCK);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Append to an entry. Create if not exist. */
|
||||
_PUBLIC_ int tdb_append(struct tdb_context *tdb, TDB_DATA key, TDB_DATA new_dbuf)
|
||||
{
|
||||
|
@ -357,6 +357,32 @@ int tdb_delete(struct tdb_context *tdb, TDB_DATA key);
|
||||
*/
|
||||
int tdb_store(struct tdb_context *tdb, TDB_DATA key, TDB_DATA dbuf, int flag);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Store an element in the database.
|
||||
*
|
||||
* This replaces any existing element with the same key.
|
||||
*
|
||||
* @param[in] tdb The tdb to store the entry.
|
||||
*
|
||||
* @param[in] key The key to use to store the entry.
|
||||
*
|
||||
* @param[in] dbufs A vector of memory chunks to write
|
||||
*
|
||||
* @param[in] num_dbufs Length of the dbufs vector
|
||||
*
|
||||
* @param[in] flag The flags to store the key:\n\n
|
||||
* TDB_INSERT: Don't overwrite an existing entry.\n
|
||||
* TDB_MODIFY: Don't create a new entry\n
|
||||
*
|
||||
* @return 0 on success, -1 on error with error code set.
|
||||
*
|
||||
* @see tdb_error()
|
||||
* @see tdb_errorstr()
|
||||
*/
|
||||
int tdb_storev(struct tdb_context *tdb, TDB_DATA key,
|
||||
const TDB_DATA *dbufs, int num_dbufs, int flag);
|
||||
|
||||
/**
|
||||
* @brief Append data to an entry.
|
||||
*
|
||||
|
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
APPNAME = 'tdb'
|
||||
VERSION = '1.3.10'
|
||||
VERSION = '1.3.11'
|
||||
|
||||
blddir = 'bin'
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user