/*
 * dbdatasize.c
 * File revision 0
 * Return the current minimum data size of an open database.
 * (c) 2000 Jacob Lundberg, jacob@chaos2.org
 */


/*
 * 2000.10.20	Initial implementation
 */


#include <stdio.h>
#include <errno.h>
#include "db.h"


int db_data_size(DB_FILE *db_fp) {
/*
 * db_data_size()
 * Return the data size currently required in db_fp.
 * Should an error occur, -1 will be returned.
 */

   db_header header;

   /* Take a read lock on the header of the database. */
   if(lock_read(db_fp->file, 0)) return(-1);

   /* Try and read in the database header. */
   if(fseek(db_fp->file, 0, SEEK_SET) || !fread(&header, DB_HEADER_SIZE, 1, db_fp->file))
      return(-1);

   /* Release the read lock. */
   read_unlock(db_fp->file, 0);

   /* Return the current maximum key size. */
   return(header.min_data_size);

}

