- key = tdb_alloc_read(tdb, off + sizeof(pad), klen);
- if (unlikely(!key))
- return 0;
- hash = tdb_hash(tdb, key, klen);
- free(key);
- return hash;
-}
-
-/* Give a piece of tdb data to a parser */
-int tdb_parse_data(struct tdb_context *tdb, TDB_DATA key,
- tdb_off_t offset, tdb_len_t len,
- int (*parser)(TDB_DATA key, TDB_DATA data,
- void *private_data),
- void *private_data)
-{
- TDB_DATA data;
- int result;
- bool allocated = false;
-
- data.dsize = len;
- data.dptr = tdb_direct(tdb, offset, len);
- if (unlikely(!data.dptr)) {
- if (!(data.dptr = tdb_alloc_read(tdb, offset, len))) {
+ if (!tdb_pwrite_all(tdb->fd, buf, n, off)) {
+ tdb->ecode = TDB_ERR_IO;
+ tdb->log(tdb, TDB_DEBUG_FATAL, tdb->log_priv,
+ "fill write failed: giving up!\n");