/
#include <unistd.h>
#define COLLISIONFACTOR 0.5
struct HashFileHeader
{
int sig;//file signature
int reclen;//record length
int total_rec_num;//total record num;
int current_rec_num;//current record num,if current_record_num<total_rec_num,there are free record
};
struct CFTag
{
char collision;//collision count
char free;//free tag,0 is free,1 is occupied
};
int hashfile_creat(const char *filename,mode_t mode,int reclen,int recnum);
//int hashfile_open(const char *filename,int flags);
int hashfile_open(const char *filename,int flags, mode_t mode);
int hashfile_close(int fd);
int hashfile_read(int fd,int keyoffset,int keylen,void *buf);
int hashfile_write(int fd,int keyoffset,int keylen,void *buf);
int hashfile_delrec(int fd,int keyoffset,int keylen,void *buf);
int hashfile_findrec(int fd,int keyoffset,int keylen,void *buf);
int hashfile_saverec(int fd,int keyoffset,int keylen,void *buf);
int hash(int keyoffset,int keylen,void *buf,int recnum);
int checkHashFileFull(int fd);
int readHashFileHeader(int fd,struct HashFileHeader *hfh );