Licensing Information

Open Source Used In Cisco FXOS 1.1(4) 962
if (tdb->fd != -1 && write(tdb->fd, &header, sizeof(header)) !=
sizeof(header)) {
tdb->ecode = TDB_ERR_IO;
return -1;
} else size += sizeof(header);
/* the freelist and hash pointers */
offset = 0;
memset(buf, 0, sizeof(buf));
for (i=0;(hash_size+1)-i >= 16; i += 16) {
if (tdb->fd != -1 && write(tdb->fd, buf, sizeof(buf)) !=
sizeof(buf)) {
tdb->ecode = TDB_ERR_IO;
return -1;
} else size += sizeof(buf);
}
for (;i<hash_size+1; i++) {
if (tdb->fd != -1 && write(tdb->fd, buf, sizeof(tdb_off)) !=
sizeof(tdb_off)) {
tdb->ecode = TDB_ERR_IO;
return -1;
} else size += sizeof(tdb_off);
}
if (tdb->fd == -1) {
tdb->map_ptr = calloc(size, 1);
tdb->map_size = size;
if (tdb->map_ptr == NULL) {
tdb->ecode = TDB_ERR_IO;
return -1;
}
memcpy(&tdb->header, &header, sizeof(header));
}
#if TDB_DEBUG
printf("initialised database of hash_size %u\n",
 hash_size);
#endif
return 0;
}
/* Returns 0 on fail. On success, return offset of record, and fills
in rec */
static tdb_off tdb_find(TDB_CONTEXT *tdb, TDB_DATA key, unsigned int hash,
struct list_struct *rec)