ecode = check_hash_tree(tdb, off, 0, hash, 64,
used, num_used, num_found, check, private_data);
if (ecode != TDB_SUCCESS) {
ecode = check_hash_tree(tdb, off, 0, hash, 64,
used, num_used, num_found, check, private_data);
if (ecode != TDB_SUCCESS) {
- if (check(key, data, private_data) != 0) {
- ecode = TDB_ERR_CORRUPT;
+ ecode = check(key, data, private_data);
+ if (ecode != TDB_SUCCESS) {
}
ecode = check_free(tdb, off, &f, prev, ftable_num, i);
if (ecode != TDB_SUCCESS) {
}
ecode = check_free(tdb, off, &f, prev, ftable_num, i);
if (ecode != TDB_SUCCESS) {
-int tdb_check(struct tdb_context *tdb,
- int (*check)(TDB_DATA key, TDB_DATA data, void *private_data),
- void *private_data)
+enum TDB_ERROR tdb_check_(struct tdb_context *tdb,
+ enum TDB_ERROR (*check)(TDB_DATA key, TDB_DATA data,
+ void *private),
+ void *private)
{
tdb_off_t *fr = NULL, *used = NULL, ft, recovery;
size_t num_free = 0, num_used = 0, num_found = 0, num_ftables = 0;
{
tdb_off_t *fr = NULL, *used = NULL, ft, recovery;
size_t num_free = 0, num_used = 0, num_found = 0, num_ftables = 0;
ecode = tdb_allrecord_lock(tdb, F_RDLCK, TDB_LOCK_WAIT, false);
if (ecode != TDB_SUCCESS) {
ecode = tdb_allrecord_lock(tdb, F_RDLCK, TDB_LOCK_WAIT, false);
if (ecode != TDB_SUCCESS) {
}
ecode = tdb_lock_expand(tdb, F_RDLCK);
if (ecode != TDB_SUCCESS) {
}
ecode = tdb_lock_expand(tdb, F_RDLCK);
if (ecode != TDB_SUCCESS) {
for (ft = first_ftable(tdb); ft; ft = next_ftable(tdb, ft)) {
if (TDB_OFF_IS_ERR(ft)) {
for (ft = first_ftable(tdb); ft; ft = next_ftable(tdb, ft)) {
if (TDB_OFF_IS_ERR(ft)) {
goto out;
}
ecode = check_free_table(tdb, ft, num_ftables, fr, num_free,
goto out;
}
ecode = check_free_table(tdb, ft, num_ftables, fr, num_free,
- ecode = check_hash(tdb, used, num_used, num_ftables, check,
- private_data);
+ ecode = check_hash(tdb, used, num_used, num_ftables, check, private);