#ifndef I_COMMAND
#define I_COMMAND

#define MAXCOMMANDLEN  30
 
#define c_amb    -2
#define c_none   -1

typedef struct command_node command_node;
struct command_node {
  char *command;
  union {
    char *constant_char;
    int constant_int;
  } param_type;
#define constant param_type.constant_char
};
 
typedef struct {
  char *command;
  void (*cmdfcn) ();
  int varpar;
} CmdList;

extern CmdList *exact_find_command (CmdList *clist, int oman, char *com);
extern CmdList *find_command (CmdList *clist, int oman, char *com, int *cnt);
extern int lookup_command(command_node *command_list, char *string, int *indx);

extern void parse_line(char *str, char *args, int append_flag,
                       int interactive);
extern void send_msg(char *outuser, char *string);
extern char *expand_alias(char *string, char *args, int *added, char *ret,
                          int len);
extern void user_quit(char *string, int varpar, char *subparams);
extern void user_server(char *string, int varpar, char *subparams);

extern void handle_command_line(char *string, int interactive,
                                char *param);

#endif
