Licensing Information
Open Source Used In Cisco FXOS 1.1(4) 957
}
/* read a lump of data, allocating the space for it */
static char *tdb_alloc_read(TDB_CONTEXT *tdb, tdb_off offset, tdb_len len)
{
char *buf;
buf = (char *)malloc(len);
if (!buf) {
tdb->ecode = TDB_ERR_OOM;
return NULL;
}
if (tdb_read(tdb, offset, buf, len) == -1) {
free(buf);
return NULL;
}
return buf;
}
/* convenience routine for writing a record */
static int rec_write(TDB_CONTEXT *tdb, tdb_off offset, struct list_struct *rec)
{
return tdb_write(tdb, offset, (char *)rec, sizeof(*rec));
}
/* convenience routine for writing a tdb_off */
static int ofs_write(TDB_CONTEXT *tdb, tdb_off offset, tdb_off *d)
{
return tdb_write(tdb, offset, (char *)d, sizeof(*d));
}
/* read a tdb_off from the store */
static int ofs_read(TDB_CONTEXT *tdb, tdb_off offset, tdb_off *d)
{
return tdb_read(tdb, offset, (char *)d, sizeof(*d));
}
/* read a record and check for simple errors */
static int rec_read(TDB_CONTEXT *tdb, tdb_off offset, struct list_struct *rec)
{
if (tdb_read(tdb, offset, (char *)rec, sizeof(*rec)) == -1) return -1;
if (rec->magic != TDB_MAGIC) {
#if TDB_DEBUG
printf("bad magic 0x%08x at offset %d\n",