/*********************************************************************/ /* file: tintin.h - the include file for tintin */ /* TINTIN III */ /* (T)he K(I)cki(N) (T)ickin D(I)kumud Clie(N)t */ /* coded by peter unold 1992 */ /*********************************************************************/ #include <stdio.h> /************************/ /* The meaning of life: */ /************************/ #define TRUE 1 #define FALSE 0 /***********************************************/ /* Some default values you might wanna change: */ /***********************************************/ #define HISTORY_SIZE 15 /* history size */ #define MAX_PATH_LENGHT 50 /* max path lenght */ #define DEFAULT_TINTIN_CHAR '#' /* tintin char */ #define DEFAULT_ECHO FALSE /* echo */ #define DEFAULT_IGNORE FALSE /* ignore */ #define DEFAULT_SPEEDWALK TRUE /* speedwalk */ /**************************************************************************/ /* Whenever TINTIN has written something to the screen, the program sends */ /* a CR/LF to the diku to force a new prompt to appear. You can have */ /* TINTIN print it's own pseudo prompt instead. */ /**************************************************************************/ #define PSEUDO_PROMPT FALSE /*************************************************************************/ /* The text below is checked for. If it trickers then echo is turned off */ /* echo is turned back on the next time the user types a return */ /*************************************************************************/ #define PROMPT_FOR_PW_TEXT "Password:" /**************************************************************************/ /* The stuff below here shouldn't be modified unless you know what you're */ /* doing........ */ /**************************************************************************/ #define BUFFER_SIZE 1024 /************************ structures *********************/ struct listnode { struct listnode *next; char *left, *right; }; struct session { struct session *next; char *name; char *address; int tickstatus; int snoopstatus; FILE *logfile; struct listnode *aliases, *actions, *subs; char *history[HISTORY_SIZE]; char path[MAX_PATH_LENGHT]; int path_mark, path_now, path_lenght; int socket, socketbit; }; /******************** prototypes main.c ******************/ void tintin(); void read_mud(struct session *ses); static void myquitsig(); void tintin_puts(char *cptr, struct session *ses); static void tick_func(); void snoop(char *buffer, struct session *ses); /******************** prototypes parse.c ******************/ struct session *parse_input(char *input, struct session *ses); struct session *parse_tintin_command(char *command, char *arg, struct session *ses); void write_com_arg_mud(char *command, char *argument, struct session *ses); int is_speedwalk_dirs(char *cp); void do_speedwalk(char *cp, struct session *ses); char *get_arg_all(char *s, char *arg); char *get_arg_with_spaces(char *s, char *arg); char *get_arg_stop_spaces(char *s, char *arg); char *space_out(char *s); void prompt(struct session *ses); /******************* prototypes llist.c ******************/ struct listnode *init_list(); void insertnode_list(struct listnode *listhead, char *ltext, char *rtext); void deletenode_list(struct listnode *listhead, struct listnode *nptr); struct listnode *searchnode_list(struct listnode *listhead, char *cptr); void shownode_list(struct listnode *nptr); void show_list(struct listnode *listhead); void kill_list(struct listnode *nptr); struct listnode *copy_list(struct listnode *sourcelist); /******************** prototypes action.c *****************/ void parse_action(char *arg, struct session *ses); void unaction_command(char *arg, struct session *ses); void prepare_actionalias(char *string, char *result); void substitute_vars(char *arg, char *result); void check_all_actions(char *line, struct session *ses); int check_one_action(char *text, char *action); int do_tricker(char *text, char *action); void split_check_all_actions(char *buffer, struct session *ses); /******************** prototypes alias.c *****************/ void alias_command(char *arg, struct session *ses); void unalias_command(char *arg, struct session *ses); /***************** prototypes substitute.c *****************/ void parse_sub(char *arg, struct session *ses); void unsubstitute_command(char *arg, struct session *ses); void do_all_subs(char *buffer, char *result, struct session *ses); void do_one_sub(char *line, struct session *ses); /***************** prototypes session.c *********************/ struct session *session_command(char *arg, struct session *ses); struct session *newactive_session(); struct session *new_session(char *name, char *address, struct session *ses); void cleanup_session(struct session *ses); void show_session(struct session *ses); /******************** prototypes ticks.c *****************/ void tick_command(struct session *ses); void tickoff_command(struct session *ses); void tickon_command(struct session *ses); void tickset_command(struct session *ses); void ticksize_command(char *arg, struct session *ses); /******************** prototypes path.c ******************/ void mark_command(struct session *ses); void path_command(struct session *ses); void return_command(struct session *ses); void unpath_command(struct session *ses); void check_insert_path(char *command, struct session *ses); void insert_path(char dir, struct session *ses); char reverse_dir(char dir); /******************** prototypes files.c *****************/ void log_command(char *arg, struct session *ses); struct session *write_command(char *filename, struct session *ses); struct session *writesession_command(char *filename, struct session *ses); struct session *read_command(char *filename, struct session *ses); void prepare_quotes(char *string); void prepare_for_write(char *command, char *left, char *right, char *result); /******************** prototypes utils.c *****************/ int is_abrev(char *s1, char *s2); #ifdef DUNNO_strstr char *strstr(const char *s1, const char *s2); #endif char *mystrdup(const char *s); void syserr(char *msg); /******************** prototypes history.c ***************/ void history_command(struct session *ses); void insert_history(char *buffer, struct session *ses); void do_history(char *buffer, struct session *ses); /******************** prototypes misc.c *****************/ struct session *all_command(char *arg, struct session *ses); void bell_command(struct session *ses); void boss_command(struct session *ses); void char_command(char *arg, struct session *ses); void echo_command(struct session *ses); void end_command(char *command, struct session *ses); void ignore_command(struct session *ses); void snoop_command(char *arg, struct session *ses); void speedwalk_command(struct session *ses); void system_command(char *arg, struct session *ses); struct session *zap_command(struct session *ses); void wizlist_command(struct session *ses); void help_command(struct session *ses); /******************** prototypes net.c *******************/ int connect_mud(char *host, char *port, struct session *ses); void write_com_arg_mud(char *command, char *argument, struct session *ses); void write_line_mud(char *line, struct session *ses); int read_buffer_mud(char *buffer, struct session *ses); void do_telnet_protecol(int dat0, int dat1, int dat2, struct session *ses); /******************** prototypes echo.c ******************/ void term_echo(); void term_noecho();