talker/
talker/bin/
talker/files/whois/
talker/update/
talker/update/bin/
/*
     header for dynamic file types
*/

/* a couple of macros to save typing */

#define dynamic_seek_block(df,block) \
  if (lseek(df->data_fd,(block)*(df->granularity),SEEK_SET)<0) \
    handle_error("Failed to seek block");

#define pcp(df) printf("Current position = %d\n",lseek(df->data_fd,0,SEEK_CUR));


/* what the dfile structure looks like */

typedef struct {
  int data_fd;		/* file desc of the open data file */
  char fname[50];	/* the name of the file */
  int nkeys;		/* number of keys in the file */
  int *keylist;         /* pointer to the keys */
  int granularity;      /* size of each block in the data file */
  int first_free_block; /* start of the free block list */
  int first_free_key;   /* start of the free key list */
} dfile;