/*
 * dbkeysize.c
 * File revision 0
 * Return the current maximum key 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_key_size(DB_FILE *db_fp) {
/*
 * db_key_size()
 * Return the key size currently allowed 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(db_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. */
   db_unlock_read(db_fp->file, 0);

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

}

