#include "struct.h"
#include "ircaux.h"
#include "server.h"
#include "output.h"
#include "module.h"
#include "parse.h"
#include "timer.h"
#include <sys/time.h>
#include <stdlib.h>
#include <stdio.h>
#define INIT_MODULE
#include "modval.h"
#ifndef new_realloc
#define new_realloc(x,y) n_realloc((x),(y),__FILE__,__LINE__)
#endif
#define MINPLAYERS 2
#define MAXPLAYERS 10
#define MINLENGTH 3
#define MAXLENGTH 5
#define ROUNDS 10
#define EXTENSIONS 3
#define TOP 10
#define MAXLEN 15
#define SCOREFILE ".BitchX/acro.score"
#define WEBSCORE "acro.html"
typedef struct _prec {
char *nick;
char *host;
char *acro;
char *last;
struct _prec *next;
} prec;
typedef struct _vrec {
char *nick;
char *host;
int vote;
struct _vrec *next;
} vrec;
typedef struct {
int progress;
int round;
int rounds;
int players;
int extended;
int top;
int maxlen;
char *nym;
} grec;
typedef struct _srec {
char *nick;
unsigned long score;
struct _srec *next;
} srec;
struct settings {
int minplayers;
int maxplayers;
int minlength;
int maxlength;
int rounds;
int extensions;
int top;
int maxlen;
char *scorefile;
char *webscore;
};
static char letters[] = "ABCDEFGHIJKLMNOPRSTUVWY";
static int acro_main (char *, char *, char *, char **);
int Acro_Init(IrcCommandDll **, Function_ptr *);
BUILT_IN_DLL(put_scores);
grec *init_acro(grec *);
void make_acro(grec *);
int valid_acro(grec *, char *);
srec *read_scores(void);
int write_scores(srec *);
prec *take_acro(grec *, prec *, char *, char *, char *);
vrec *take_vote(grec *, vrec *, prec *, char *, char *, char *);
srec *end_vote(vrec *, prec *, srec *);
srec *sort_scores(srec *);
int comp_score(srec **one, srec **two);
void show_scores(grec *, srec *, srec *, char *);
void warn_acro(char *);
void start_vote(char *);
void warn_vote(char *);
void end_voting(char *);
void show_acros(prec *, char *);
void free_round(prec **, vrec **);
void free_score(srec **);