diff options
Diffstat (limited to 'FICS/command.h')
-rw-r--r-- | FICS/command.h | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/FICS/command.h b/FICS/command.h new file mode 100644 index 0000000..f7ca75f --- /dev/null +++ b/FICS/command.h @@ -0,0 +1,148 @@ +/* command.h + * + */ + +/* + fics - An internet chess server. + Copyright (C) 1993 Richard V. Nash + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. +*/ + +/* Revision history: + name email yy/mm/dd Change + Richard Nash 93/10/22 Created + Markus Uhlin 23/12/19 Cleaned up the file + Markus Uhlin 24/04/07 Added missing parameter lists +*/ + +#ifndef _COMMAND_H +#define _COMMAND_H + +#include "variable.h" +#include "stdinclude.h" + +/* + * Maximum length of a login name + */ +#define MAX_LOGIN_NAME 20 + +/* + * Maximum number of parameters per command + */ +#define MAXNUMPARAMS 10 + +/* + * Maximum string length of a single command word + */ +#define MAX_COM_LENGTH 50 + +/* + * Maximum string length of the whole command line + */ +#define MAX_STRING_LENGTH 1024 + +#define COM_OK 0 +#define COM_FAILED 1 +#define COM_ISMOVE 2 +#define COM_AMBIGUOUS 3 +#define COM_BADPARAMETERS 4 +#define COM_BADCOMMAND 5 +#define COM_LOGOUT 6 +#define COM_FLUSHINPUT 7 +#define COM_RIGHTS 8 +#define COM_OK_NOPROMPT 9 + +#define ADMIN_USER 0 +#define ADMIN_ADMIN 10 +#define ADMIN_MASTER 20 +#define ADMIN_DEMIGOD 60 +#define ADMIN_GOD 100 + +#define TYPE_NULL 0 +#define TYPE_WORD 1 +#define TYPE_STRING 2 +#define TYPE_INT 3 +typedef struct u_parameter { + int type; + + union { + char *word; + char *string; + int integer; + } val; +} parameter; + +typedef parameter param_list[MAXNUMPARAMS]; + +typedef struct s_command_type { + char *comm_name; + char *param_string; + int (*comm_func)(int, param_list); + int adminLevel; +} command_type; + +typedef struct s_alias_type { + char *comm_name; + char *alias; +} alias_type; + +typedef struct { + char com[MAX_STRING_LENGTH]; +} comstr_t; + +extern char *adhelp_dir; +extern char *adj_dir; +extern char *board_dir; +extern char *comhelp_dir; +extern char *config_dir; +extern char *def_prompt; +extern char *help_dir[NUM_LANGS]; +extern char *hist_dir; +extern char *index_dir; +extern char *info_dir; +extern char *journal_dir; +extern char *lists_dir; +extern char *mess_dir; +extern char *news_dir; +extern char *player_dir; +extern char *source_dir; +extern char *stats_dir; +extern char *usage_dir[NUM_LANGS]; +extern char *uscf_dir; + +extern char *hadmin_handle; + +extern char fics_hostname[81]; +extern int MailGameResult; +extern int game_high; +extern int player_high; +extern time_t startuptime; + +/* + * The player whose command you're in + */ +extern int commanding_player; + +extern int alias_lookup(char *, alias_type *, int); +extern int process_command(int, char *, char **); +extern int process_disconnection(int); +extern int process_heartbeat(int *); +extern int process_input(int, char *); +extern int process_new_connection(int, unsigned int); +extern void TerminateCleanup(void); +extern void commands_init(void); + +/* From variable.c */ +extern int com_partner(int, param_list); +extern int com_variables(int, param_list); + +#endif /* _COMMAND_H */ |