#define CHARSIZE sizeof(char)
#define LONGSIZE sizeof(long)


/* BLOCKSIZE must be greater than NAMESIZE * 2 + LONGSIZE * 2 + CHARSIZE */
/* 32 is the smallest BLOCKSIZE to use if NAMESIZE == 11, LONGSIZE == 4,
   and CHARSIZE == 1. */
/*  If your players write mostly short mails you may want to have a
  small blocksize and the other way around. Unfortunately it has not
        been tested what blocksize would be the most effective so I can't
        really tell. However I can imagine it'd be somewhere between 70-80
        and 150 if you're interested in making the mailfile as small as possible.
        If you're only interested in speed at game reboot and a slight increase
        in speed when writing/reading/deleting mails you could use a larger
        blocksize but the mailfile will get bigger. Well if you have the disk
  space...Try 150-500 bytes/block and see what happens. Remember that
  if you use a blocksize of 500, no mail will occupy less than 500 bytes.
  But as I said the optimal setting depends on how large your average
  mails are and also how much the mailsizes vary.
*/

#define BLOCKSIZE 114
#define NAMESIZE 11
/* NAMESIZE should perhaps be 12 instead */
#define HEADBLOCKSIZE (BLOCKSIZE-((LONGSIZE*2)+CHARSIZE+(NAMESIZE*2)))
#define DATABLOCKSIZE (BLOCKSIZE-(LONGSIZE+CHARSIZE))
#define OFFSETSIZE sizeof(struct mail_offset_struct)
#define FREESIZE sizeof(struct free_list_struct)
#define INDEXSIZE sizeof(struct mail_index_struct)

/* MAX_MAIL_AGE == 2 months (5184000 seconds) */

#define MAX_MAIL_AGE 5184000
#define MAILFILE "/usr/users/groo/mailsys/hej.x"


struct head_block {
  char the_mean_byte;
  long date;
  char to[NAMESIZE], from[NAMESIZE];
  char msg[HEADBLOCKSIZE];
  long offset;
};


struct dblock {
  char the_mean_byte;
  char msg[DATABLOCKSIZE];
  long offset;
};


struct free_list_struct {
  long zero_offset;
  struct free_list_struct *next;
};


struct mail_offset_struct {
  long mail_header_offset;
  char from[NAMESIZE];
  struct mail_offset_struct *my_next_mail;
};


struct mail_index_struct {
  char to[NAMESIZE];
  struct mail_offset_struct *my_first_mail;
  struct mail_index_struct *next;
};