/****************************************************************************** * TinTin++ * * Copyright (C) 2004 (See CREDITS file) * * * * This program is protected under the GNU GPL (See COPYING) * * * * 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. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * *******************************************************************************/ /****************************************************************************** * (T)he K(I)cki(N) (T)ickin D(I)kumud Clie(N)t * * * * coded by Igor van den Hoven 2004 * ******************************************************************************/ #include "tintin.h" struct command_type command_table[] = { { "action", do_action, TOKEN_TYPE_COMMAND }, // { "advertise", do_advertise, TOKEN_TYPE_COMMAND }, { "alias", do_alias, TOKEN_TYPE_COMMAND }, { "all", do_all, TOKEN_TYPE_COMMAND }, { "bell", do_bell, TOKEN_TYPE_COMMAND }, { "break", do_nop, TOKEN_TYPE_BREAK }, { "buffer", do_buffer, TOKEN_TYPE_COMMAND }, { "case", do_nop, TOKEN_TYPE_CASE }, { "chat", do_chat, TOKEN_TYPE_COMMAND }, { "class", do_class, TOKEN_TYPE_COMMAND }, { "commands", do_commands, TOKEN_TYPE_COMMAND }, { "config", do_configure, TOKEN_TYPE_COMMAND }, { "continue", do_nop, TOKEN_TYPE_CONTINUE}, { "cr", do_cr, TOKEN_TYPE_COMMAND }, { "cursor", do_cursor, TOKEN_TYPE_COMMAND }, { "debug", do_debug, TOKEN_TYPE_COMMAND }, { "default", do_nop, TOKEN_TYPE_DEFAULT }, { "delay", do_delay, TOKEN_TYPE_COMMAND }, { "echo", do_echo, TOKEN_TYPE_COMMAND }, { "else", do_nop, TOKEN_TYPE_ELSE }, { "elseif", do_nop, TOKEN_TYPE_ELSEIF }, { "end", do_end, TOKEN_TYPE_COMMAND }, { "event", do_event, TOKEN_TYPE_COMMAND }, { "forall", do_forall, TOKEN_TYPE_COMMAND }, { "foreach", do_nop, TOKEN_TYPE_FOREACH }, { "format", do_format, TOKEN_TYPE_COMMAND }, { "function", do_function, TOKEN_TYPE_COMMAND }, { "gag", do_gag, TOKEN_TYPE_COMMAND }, { "grep", do_grep, TOKEN_TYPE_COMMAND }, { "help", do_help, TOKEN_TYPE_COMMAND }, { "highlight", do_highlight, TOKEN_TYPE_COMMAND }, { "history", do_history, TOKEN_TYPE_COMMAND }, { "if", do_nop, TOKEN_TYPE_IF }, { "ignore", do_ignore, TOKEN_TYPE_COMMAND }, { "info", do_info, TOKEN_TYPE_COMMAND }, { "killall", do_kill, TOKEN_TYPE_COMMAND }, { "line", do_line, TOKEN_TYPE_COMMAND }, { "list", do_list, TOKEN_TYPE_COMMAND }, { "log", do_log, TOKEN_TYPE_COMMAND }, { "loop", do_nop, TOKEN_TYPE_LOOP }, { "macro", do_macro, TOKEN_TYPE_COMMAND }, { "map", do_map, TOKEN_TYPE_COMMAND }, { "math", do_math, TOKEN_TYPE_COMMAND }, { "message", do_message, TOKEN_TYPE_COMMAND }, { "nop", do_nop, TOKEN_TYPE_COMMAND }, { "parse", do_nop, TOKEN_TYPE_PARSE }, { "path", do_path, TOKEN_TYPE_COMMAND }, { "pathdir", do_pathdir, TOKEN_TYPE_COMMAND }, { "prompt", do_prompt, TOKEN_TYPE_COMMAND }, { "read", do_read, TOKEN_TYPE_COMMAND }, { "regexp", do_regexp, TOKEN_TYPE_REGEX }, { "replace", do_replace, TOKEN_TYPE_COMMAND }, { "return", do_nop, TOKEN_TYPE_RETURN }, { "run", do_run, TOKEN_TYPE_COMMAND }, { "scan", do_scan, TOKEN_TYPE_COMMAND }, { "script", do_script, TOKEN_TYPE_COMMAND }, { "send", do_send, TOKEN_TYPE_COMMAND }, { "session", do_session, TOKEN_TYPE_COMMAND }, { "showme", do_showme, TOKEN_TYPE_COMMAND }, { "snoop", do_snoop, TOKEN_TYPE_COMMAND }, { "split", do_split, TOKEN_TYPE_COMMAND }, { "substitute", do_substitute, TOKEN_TYPE_COMMAND }, { "switch", do_nop, TOKEN_TYPE_SWITCH }, { "system", do_system, TOKEN_TYPE_COMMAND }, { "tab", do_tab, TOKEN_TYPE_COMMAND }, // { "test", do_test, TOKEN_TYPE_COMMAND }, { "textin", do_textin, TOKEN_TYPE_COMMAND }, { "ticker", do_tick, TOKEN_TYPE_COMMAND }, { "unaction", do_unaction, TOKEN_TYPE_COMMAND }, { "unalias", do_unalias, TOKEN_TYPE_COMMAND }, { "undelay", do_undelay, TOKEN_TYPE_COMMAND }, { "unevent", do_unevent, TOKEN_TYPE_COMMAND }, { "unfunction", do_unfunction, TOKEN_TYPE_COMMAND }, { "ungag", do_ungag, TOKEN_TYPE_COMMAND }, { "unhighlight", do_unhighlight, TOKEN_TYPE_COMMAND }, { "unmacro", do_unmacro, TOKEN_TYPE_COMMAND }, { "unpathdir", do_unpathdir, TOKEN_TYPE_COMMAND }, { "unprompt", do_unprompt, TOKEN_TYPE_COMMAND }, { "unsplit", do_unsplit, TOKEN_TYPE_COMMAND }, { "unsubstitute", do_unsubstitute, TOKEN_TYPE_COMMAND }, { "untab", do_untab, TOKEN_TYPE_COMMAND }, { "unticker", do_untick, TOKEN_TYPE_COMMAND }, { "unvariable", do_unvariable, TOKEN_TYPE_COMMAND }, { "variable", do_variable, TOKEN_TYPE_COMMAND }, { "while", do_nop, TOKEN_TYPE_WHILE }, { "write", do_write, TOKEN_TYPE_COMMAND }, { "zap", do_zap, TOKEN_TYPE_COMMAND }, { "", NULL, TOKEN_TYPE_COMMAND } }; struct list_type list_table[LIST_MAX] = { { "ACTION", "ACTIONS", PRIORITY, 3, LIST_FLAG_SHOW|LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT }, { "ALIAS", "ALIASES", PRIORITY, 3, LIST_FLAG_SHOW|LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT }, { "CLASS", "CLASSES", ALPHA, 2, LIST_FLAG_SHOW|LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_INHERIT }, { "CONFIG", "CONFIGURATIONS", ALPHA, 2, LIST_FLAG_SHOW|LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_INHERIT }, { "DELAY", "DELAYS", ALPHA, 3, LIST_FLAG_SHOW|LIST_FLAG_MESSAGE|LIST_FLAG_READ }, { "EVENT", "EVENTS", ALPHA, 2, LIST_FLAG_SHOW|LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT }, { "FUNCTION", "FUNCTIONS", ALPHA, 2, LIST_FLAG_SHOW|LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT }, { "GAG", "GAGS", ALPHA, 1, LIST_FLAG_SHOW|LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT }, { "HIGHLIGHT", "HIGHLIGHTS", PRIORITY, 3, LIST_FLAG_SHOW|LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT }, { "HISTORY", "HISTORIES", APPEND, 1, LIST_FLAG_SHOW|LIST_FLAG_MESSAGE }, { "MACRO", "MACROS", ALPHA, 2, LIST_FLAG_SHOW|LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT }, { "PATH", "PATHS", APPEND, 2, LIST_FLAG_SHOW|LIST_FLAG_MESSAGE }, { "PATHDIR", "PATHDIRS", ALPHA, 3, LIST_FLAG_SHOW|LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT }, { "PROMPT", "PROMPTS", PRIORITY, 3, LIST_FLAG_SHOW|LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT }, { "SUBSTITUTE", "SUBSTITUTIONS", PRIORITY, 3, LIST_FLAG_SHOW|LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT }, { "TAB", "TABS", ALPHA, 1, LIST_FLAG_SHOW|LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT }, { "TABCYCLE", "TABCYCLE", APPEND, 1, LIST_FLAG_SHOW|LIST_FLAG_MESSAGE }, { "TICKER", "TICKERS", ALPHA, 3, LIST_FLAG_SHOW|LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT }, { "VARIABLE", "VARIABLES", ALPHA, 2, LIST_FLAG_SHOW|LIST_FLAG_MESSAGE|LIST_FLAG_READ|LIST_FLAG_WRITE|LIST_FLAG_CLASS|LIST_FLAG_INHERIT|LIST_FLAG_NEST } }; struct substitution_type substitution_table[] = { // { "ARGUMENTS", 1 }, { "VARIABLES", 2 }, { "FUNCTIONS", 4 }, { "COLORS", 8 }, { "ESCAPES", 16 }, // { "COMMANDS", 32 }, { "SECURE", 64 }, // { "EOL", 128 }, // { "LNF", 256 }, // { "FIX", 1024 }, { "", 0 } }; struct config_type config_table[] = { { "AUTO TAB", "", "Scroll back buffer lines used for tab completion", config_autotab }, { "BIG5", "Tintin skips BIG5 characters.", "Tintin doesn't skip BIG5 characters.", config_big5 }, { "BUFFER SIZE", "", "The size of the scroll back buffer", config_buffersize }, { "COLOR PATCH", "Tintin will properly color the start of each line", "Tintin will leave color handling to the server", config_colorpatch }, { "CONNECT RETRY", "", "Seconds Tintin will try to connect before giving up", config_connectretry }, { "CONVERT META", "Tintin converts meta prefixed characters", "Tintin doesn't convert meta prefixed characters", config_convertmeta }, { "DEBUG TELNET", "You see telnet negotiations", "You do not see telnet negotatiations", config_debugtelnet }, { "COMMAND COLOR", "", "The color of echoed commands", config_commandcolor }, { "COMMAND ECHO", "Your commands are echoed in split mode", "Your commands are not echoed in split mode", config_commandecho }, { "HISTORY SIZE", "", "The size of the command history", config_historysize }, { "LOG", "", "The data format of the log files", config_log }, { "LOG LEVEL", "Tintin only logs low level mud data", "Tintin only logs high level mud data", config_loglevel }, { "MCCP", "MCCP is enabled.", "MCCP is disabled.", config_mccp }, { "PACKET PATCH", "", "Seconds Tintin will try to patch broken packets", config_packetpatch }, { "REPEAT ENTER", "You send the last command on an enter", "You send a carriage return on an enter", config_repeatenter }, { "REPEAT CHAR", "", "The character used for repeating commands", config_repeatchar }, { "SCROLL LOCK", "You do not see mud output while scrolling", "You see mud output while scrolling", config_scrolllock }, { "SPEEDWALK", "Your input is scanned for speedwalk directions", "Your input is not scanned for speedwalk directions", config_speedwalk }, { "TINTIN CHAR", "", "The character used for Tintin commands", config_tintinchar }, { "VERBATIM", "Your keyboard input isn't modified by Tintin", "Your keyboard input is parsed by Tintin", config_verbatim }, { "VERBATIM CHAR", "", "The character used for unparsed text", config_verbatimchar }, { "VERBOSE", "Messages while reading in a script file are echoed", "Messages while reading in a script file are gagged", config_verbose }, { "WORDWRAP", "Mud output is word wrapped", "Mud output is line wrapped", config_wordwrap }, { "", "", 0, 0 } }; struct color_type color_table[] = { { "reset", "0", "<088>" }, { "light", "1", "<188>" }, { "bold", "1", "<188>" }, { "faint", "2", "<288>" }, { "underscore", "4", "<488>" }, { "blink", "5", "<588>" }, { "reverse", "7", "<788>" }, { "dim", "22", "<288>" }, { "dark", "22", "<288>" }, { "black", "30", "<808>" }, { "red", "31", "<818>" }, { "green", "32", "<828>" }, { "yellow", "33", "<838>" }, { "blue", "34", "<848>" }, { "magenta", "35", "<858>" }, { "cyan", "36", "<868>" }, { "white", "37", "<878>" }, { "b black", "40", "<880>" }, { "b red", "41", "<881>" }, { "b green", "42", "<882>" }, { "b yellow", "43", "<883>" }, { "b blue", "44", "<884>" }, { "b magenta", "45", "<885>" }, { "b cyan", "46", "<886>" }, { "b white", "47", "<887>" }, { "", "" , "<888>" } }; struct class_type class_table[] = { { "OPEN", class_open }, { "CLOSE", class_close }, { "READ", class_read }, { "WRITE", class_write }, { "KILL", class_kill }, { "", NULL }, }; struct chat_type chat_table[] = { { "ACCEPT", chat_accept, 1, 0, "Accept a file transfer" }, { "CALL", chat_call, 0, 0, "Call a buddy" }, { "CANCELFILE", chat_cancelfile, 1, 0, "Cancel a file transfer" }, { "COLOR", chat_color, 1, 0, "Set the default chat color" }, { "DECLINE", chat_decline, 1, 0, "Decline a file transfer" }, { "DND", chat_dnd, 0, 0, "Decline new connections" }, { "DOWNLOADDIR", chat_downloaddir, 1, 0, "Set the download directory" }, { "EMOTE", chat_emote, 0, 1, "Send an emoted chat message" }, { "FORWARD", chat_forward, 1, 0, "Forward all chat messages to a buddy" }, { "FORWARDALL", chat_forwardall, 1, 0, "Forward all chat/mud messages to a buddy" }, { "FILESTAT", chat_filestat, 1, 0, "Show file transfer data" }, { "GROUP", chat_group, 0, 1, "Assign a group to a buddy" }, { "IGNORE", chat_ignore, 1, 0, "Ignore all messages from a buddy" }, { "INITIALIZE", chat_initialize, 1, 0, "Initialize chat with an optional port number" }, { "INFO", chat_info, 0, 0, "Display the chat settings" }, { "IP", chat_ip, 1, 0, "Change the IP address, unset by default" }, { "MESSAGE", chat_message, 0, 1, "Send a private message to a buddy" }, { "NAME", chat_name, 1, 0, "Change the chat name" }, { "PASTE", chat_paste, 0, 1, "Paste a block of text to a buddy" }, { "PEEK", chat_peek, 1, 0, "Show a buddy's public connections" }, { "PING", chat_ping, 1, 0, "Display a buddy's response time" }, { "PRIVATE", chat_private, 1, 0, "Do not share a buddy's IP address" }, { "PUBLIC", chat_public, 1, 0, "Share a buddy's IP address" }, { "REPLY", chat_reply, 1, 0, "Reply to last private message" }, { "REQUEST", chat_request, 1, 0, "Request a buddy's public connections" }, { "SEND", chat_send, 0, 1, "Send a raw data message to a buddy" }, { "SENDFILE", chat_sendfile, 0, 1, "Send a file to a buddy" }, { "SERVE", chat_serve, 1, 0, "Forward all public chat messages to a buddy" }, { "UNINITIALIZE", chat_uninitialize, 0, 0, "Uninitializes the chat server" }, { "WHO", chat_who, 0, 0, "Show all connections" }, { "ZAP", chat_zap, 1, 0, "Close the connection to a buddy" }, { "", NULL, 0, 0, "" } }; struct array_type array_table[] = { { "ADD", array_add }, { "CLEAR", array_clear }, { "CLR", array_clear }, { "CREATE", array_create }, { "DELETE", array_delete }, { "FIND", array_find }, { "FND", array_find }, { "GET", array_get }, { "INSERT", array_insert }, { "LENGTH", array_size }, { "SET", array_set }, { "SIZE", array_size }, { "SORT", array_sort }, { "SRT", array_sort }, { "", NULL } }; struct map_type map_table[] = { { "AT", map_at, 1 }, { "COLOR", map_color, 1 }, { "CREATE", map_create, 0 }, { "DELETE", map_delete, 1 }, { "DESTROY", map_destroy, 1 }, { "DIG", map_dig, 2 }, { "EXIT", map_exit, 2 }, { "EXITFLAG", map_exitflag, 2 }, { "EXPLORE", map_explore, 2 }, { "FIND", map_find, 1 }, { "FLAG", map_flag, 1 }, { "GET", map_get, 2 }, { "GOTO", map_goto, 1 }, { "INFO", map_info, 1 }, { "INSERT", map_insert, 2 }, { "JUMP", map_jump, 1 }, { "LEAVE", map_leave, 2 }, { "LEGENDA", map_legend, 1 }, { "LINK", map_link, 2 }, { "LIST", map_list, 1 }, { "MAP", map_map, 2 }, { "MOVE", map_move, 2 }, { "NAME", map_name, 2 }, { "READ", map_read, 0 }, { "RESIZE", map_resize, 1 }, { "RETURN", map_return, 1 }, { "ROOMFLAG", map_roomflag, 2 }, { "RUN", map_run, 2 }, { "SET", map_set, 2 }, { "TRAVEL", map_travel, 2 }, { "UNDO", map_undo, 2 }, { "UNINSERT", map_uninsert, 2 }, { "UNLINK", map_unlink, 2 }, { "WRITE", map_write, 1 }, { "", NULL, 0 } }; struct cursor_type cursor_table[] = { { "AUTO TAB BACKWARD", "Tab completion from scrollback buffer, backward", "", cursor_auto_tab_backward }, { "AUTO TAB FORWARD", "Tab completion from scrollback buffer, forward", "", cursor_auto_tab_forward }, { "BACKSPACE", "Delete backward character", "", cursor_backspace }, { "BACKWARD", "Move cursor backward", "", cursor_left }, { "CLEAR LEFT", "Delete from cursor to start of input", "", cursor_clear_left }, { "CLEAR LINE", "Delete the input line", "", cursor_clear_line }, { "CLEAR RIGHT", "Delete from cursor to end of input", "", cursor_clear_right }, { "CONVERT META", "Meta convert the next character", "", cursor_convert_meta }, { "CTRL DELETE", "Delete one character, exit on an empty line", "", cursor_delete_exit }, { "DELETE", "Delete character at cursor", "[3~", cursor_delete }, { "DELETE WORD", "Delete next word backward", "", cursor_delete_word_left }, { "ECHO ON", "Turn local echoing on", "", cursor_echo_on }, { "ECHO OFF", "Turn local echoing off", "", cursor_echo_off }, { "END", "Move cursor to end of input", "", cursor_end }, { "ENTER", "Process the input line", "", cursor_enter }, { "EXIT", "Exit current session", "", cursor_exit }, { "FORWARD", "Move cursor forward", "", cursor_right }, { "HISTORY NEXT", "Select next command history entry", "", cursor_history_next }, { "HISTORY PREV", "Select previous command history entry", "", cursor_history_prev }, { "HISTORY SEARCH", "Search command history", "", cursor_history_search }, { "HOME", "Move the cursor to start of input", "", cursor_home }, { "INSERT", "Turn insert mode on or off", "", cursor_insert }, { "MIXED TAB BACKWARD", "Tab completion on last word, search backward", "[Z", // shift-tab cursor_mixed_tab_backward }, { "MIXED TAB FORWARD", "Tab completion on last word, search forward", "\t", cursor_mixed_tab_forward }, { "NEXT WORD", "Move cursor to the next word", "f", cursor_right_word }, { "PASTE BUFFER", "Paste the previously deleted input text", "", cursor_paste_buffer }, { "PREV WORD", "Move cursor to the previous word", "b", cursor_left_word }, { "REDRAW INPUT", "Redraw the input line", "", cursor_redraw_input }, { "SUSPEND", "Suspend program, return with fg", "", cursor_suspend }, { "TAB BACKWARD", "Tab completion from tab list, backward", "", cursor_tab_backward }, { "TAB FORWARD", "Tab completion from tab list, forward", "", cursor_tab_forward }, { "", "", "[5~", cursor_buffer_up }, { "", "", "[6~", cursor_buffer_down }, { "", "", "", cursor_buffer_lock }, { "", "", "OM", cursor_enter }, { "", "", "[7~", cursor_home }, { "", "", "[1~", cursor_home }, { "", "", "OH", cursor_home }, { "", "", "[H", cursor_home }, { "", "", "OD", cursor_left }, { "", "", "[D", cursor_left }, { "", "", "[8~", cursor_end }, { "", "", "[4~", cursor_end }, { "", "", "OF", cursor_end }, { "", "", "[F", cursor_end }, { "", "", "OC", cursor_right }, { "", "", "[C", cursor_right }, { "", "", "", cursor_backspace }, { "", "", "OB", cursor_history_next }, { "", "", "[B", cursor_history_next }, { "", "", "OA", cursor_history_prev }, { "", "", "[A", cursor_history_prev }, { "", "", "", cursor_delete_word_left }, { "", "", "d", cursor_delete_word_right }, { "", "", "", NULL } }; struct timer_type timer_table[] = { { "Poll Stdin" }, { "Poll Sessions" }, { "Poll Chat Server" }, { "Update Tickers" }, { "Update Delays" }, { "Update Packet Patcher" }, { "Update Chat Server" }, { "Update Terminal" }, { "Update Time Events" }, { "Update Memory" }, { "Stall Program" } }; struct event_type event_table[] = { { "DATE", "Triggers on the given date." }, { "DAY", "Triggers each day or given day." }, { "HOUR", "Triggers each hour or given hour." }, { "END OF PATH", "Triggers when walking the last room." }, { "IAC ", "Triggers on telopt negotiation." }, { "MAP ENTER MAP", "Triggers when entering the map." }, { "MAP ENTER ROOM", "Triggers when entering a map room." }, { "MAP EXIT MAP", "Triggers when exiting the map." }, { "MAP EXIT ROOM", "Triggers when exiting a map room." }, { "MINUTE", "Triggers each minute or given minute." }, { "MONTH", "Triggers each month or given month." }, { "PROGRAM START", "Triggers when main session starts." }, { "PROGRAM TERMINATION", "Triggers when main session exists." }, { "RECEIVED INPUT", "Triggers when new input is received." }, { "RECEIVED LINE", "Triggers when a new line is received." }, { "RECEIVED OUTPUT", "Triggers when new output is received." }, { "SCREEN RESIZE", "Triggers when the screen is resized." }, { "SECOND", "Trigers each second or given second." }, { "SEND OUTPUT", "Triggers when sending output." }, { "SESSION ACTIVATED", "Triggers when a session is activated." }, { "SESSION CONNECTED", "Triggers when a new session connects." }, { "SESSION DEACTIVATED", "Triggers when a session is deactivated." }, { "SESSION DISCONNECTED", "Triggers when a session disconnects." }, { "TIME", "Triggers on the given time." }, { "WEEK", "Triggers each week or given week." }, { "YEAR", "Triggers each year or given year." }, { "", "" } }; struct path_type path_table[] = { { "DELETE", path_del }, { "END", path_end }, { "INSERT", path_ins }, { "LOAD", path_load }, { "MAP", path_map }, { "NEW", path_new }, { "RUN", path_run }, { "SAVE", path_save }, { "WALK", path_walk }, { "ZIP", path_zip }, { "", NULL } }; struct line_type line_table[] = { { "GAG", line_gag }, { "LOG", line_log }, { "LOGVERBATIM", line_logverbatim }, { "SUBSTITUTE", line_substitute }, { "VERBOSE", line_verbose }, { "", NULL } }; struct history_type history_table[] = { /* { "CHARACTER", history_character, "Set the character used for repeating commands." }, */ { "DELETE", history_delete, "Delete last command history entry." }, { "INSERT", history_insert, "Insert a new command history entry." }, { "LIST", history_list, "Display command history list." }, { "READ", history_read, "Read a command history list from file." }, /* { "SIZE", history_size, "The size of the command history." }, */ { "WRITE", history_write, "Write a command history list to file." }, { "", NULL, "" } }; struct buffer_type buffer_table[] = { { "CLEAR", buffer_clear, "Clear buffer." }, { "DOWN", buffer_down, "Scroll down one page." }, { "END", buffer_end, "Scroll down to the end of the buffer." }, { "FIND", buffer_find, "Move to the given string in the buffer." }, { "GET", buffer_get, "Store in given variable a given line or range." }, { "HOME", buffer_home, "Scroll up to the start of the buffer." }, { "INFO", buffer_info, "Display statistics about the buffer." }, { "LOCK", buffer_lock, "Toggle the locking state of the buffer." }, { "UP", buffer_up, "Scroll up one page." }, { "WRITE", buffer_write, "Write the buffer to file." }, { "", NULL, "" } }; #define NEG_U 0 struct telopt_type telopt_table[] = { { "BINARY", TEL_N, NEG_U }, { "ECHO", TEL_Y, NEG_U }, { "RCP", TEL_N, NEG_U }, { "SGA", TEL_Y, NEG_U }, { "NAME", TEL_N, NEG_U }, { "STATUS", TEL_N, NEG_U }, { "TIMING MARK", TEL_N, NEG_U }, { "RCTE", TEL_N, NEG_U }, { "NAOL", TEL_N, NEG_U }, { "NAOP", TEL_N, NEG_U }, { "NAORCD", TEL_N, NEG_U }, /* 10 */ { "NAOHTS", TEL_N, NEG_U }, { "NAOHTD", TEL_N, NEG_U }, { "NAOFFD", TEL_N, NEG_U }, { "NAOVTS", TEL_N, NEG_U }, { "NAOVTD", TEL_N, NEG_U }, { "NAOLFD", TEL_N, NEG_U }, { "EXTEND ASCII", TEL_N, NEG_U }, { "LOGOUT", TEL_N, NEG_U }, { "BYTE MACRO", TEL_N, NEG_U }, { "DATA ENTRY TERML", TEL_N, NEG_U }, /* 20 */ { "SUPDUP", TEL_N, NEG_U }, { "SUPDUP OUTPUT", TEL_N, NEG_U }, { "SEND LOCATION", TEL_N, NEG_U }, { "TTYPE", TEL_Y, NEG_U }, { "EOR", TEL_Y, NEG_U }, { "TACACS UID", TEL_N, NEG_U }, { "OUTPUT MARKING", TEL_N, NEG_U }, { "TTYLOC", TEL_N, NEG_U }, { "3270 REGIME", TEL_N, NEG_U }, { "X.3 PAD", TEL_N, NEG_U }, /* 30 */ { "NAWS", TEL_Y, NEG_U }, { "TSPEED", TEL_Y, NEG_U }, { "LFLOW", TEL_N, NEG_U }, { "LINEMODE", TEL_N, NEG_U }, { "XDISPLOC", TEL_N, NEG_U }, { "OLD-ENVIRON", TEL_N, NEG_U }, { "AUTH", TEL_N, NEG_U }, { "ENCRYPT", TEL_N, NEG_U }, { "NEW-ENVIRON", TEL_N, NEG_U }, { "TN3270E", TEL_N, NEG_U }, /* 40 */ { "XAUTH", TEL_N, NEG_U }, { "CHARSET", TEL_N, NEG_U }, { "RSP", TEL_N, NEG_U }, { "COM PORT", TEL_N, NEG_U }, { "SLE", TEL_N, NEG_U }, { "STARTTLS", TEL_N, NEG_U }, { "KERMIT", TEL_N, NEG_U }, { "SEND-URL", TEL_N, NEG_U }, { "FORWARD_X", TEL_N, NEG_U }, { "50", TEL_N, NEG_U }, { "51", TEL_N, NEG_U }, { "52", TEL_N, NEG_U }, { "53", TEL_N, NEG_U }, { "54", TEL_N, NEG_U }, { "55", TEL_N, NEG_U }, { "56", TEL_N, NEG_U }, { "57", TEL_N, NEG_U }, { "58", TEL_N, NEG_U }, { "59", TEL_N, NEG_U }, { "60", TEL_N, NEG_U }, { "61", TEL_N, NEG_U }, { "62", TEL_N, NEG_U }, { "63", TEL_N, NEG_U }, { "64", TEL_N, NEG_U }, { "65", TEL_N, NEG_U }, { "66", TEL_N, NEG_U }, { "67", TEL_N, NEG_U }, { "68", TEL_N, NEG_U }, { "MSDP", TEL_N, NEG_U }, /* Mud Server Data Protocol */ { "MSSP", TEL_N, NEG_U }, /* Mud Server Status Protocol */ { "71", TEL_N, NEG_U }, { "72", TEL_N, NEG_U }, { "73", TEL_N, NEG_U }, { "74", TEL_N, NEG_U }, { "75", TEL_N, NEG_U }, { "76", TEL_N, NEG_U }, { "77", TEL_N, NEG_U }, { "78", TEL_N, NEG_U }, { "79", TEL_N, NEG_U }, { "80", TEL_N, NEG_U }, { "81", TEL_N, NEG_U }, { "82", TEL_N, NEG_U }, { "83", TEL_N, NEG_U }, { "84", TEL_N, NEG_U }, { "MCCP1", TEL_N, NEG_U }, /* Obsolete */ { "MCCP2", TEL_Y, NEG_U }, /* Mud Client Compression Protocol */ { "87", TEL_N, NEG_U }, { "88", TEL_N, NEG_U }, { "89", TEL_N, NEG_U }, { "MSP", TEL_N, NEG_U }, /* Mud Sound Protocl */ { "MXP", TEL_N, NEG_U }, /* Mud eXtension Protocol */ { "92", TEL_N, NEG_U }, /* MSP2 draft */ { "ZMP", TEL_N, NEG_U }, /* Zenith Mud Protocl */ { "94", TEL_N, NEG_U }, { "95", TEL_N, NEG_U }, { "96", TEL_N, NEG_U }, { "97", TEL_N, NEG_U }, { "98", TEL_N, NEG_U }, { "99", TEL_N, NEG_U }, { "100", TEL_N, NEG_U }, { "101", TEL_N, NEG_U }, { "102", TEL_N, NEG_U }, /* Used by Aardwolf */ { "103", TEL_N, NEG_U }, { "104", TEL_N, NEG_U }, { "105", TEL_N, NEG_U }, { "106", TEL_N, NEG_U }, { "107", TEL_N, NEG_U }, { "108", TEL_N, NEG_U }, { "109", TEL_N, NEG_U }, { "110", TEL_N, NEG_U }, { "111", TEL_N, NEG_U }, { "112", TEL_N, NEG_U }, { "113", TEL_N, NEG_U }, { "114", TEL_N, NEG_U }, { "115", TEL_N, NEG_U }, { "116", TEL_N, NEG_U }, { "117", TEL_N, NEG_U }, { "118", TEL_N, NEG_U }, { "119", TEL_N, NEG_U }, { "120", TEL_N, NEG_U }, { "121", TEL_N, NEG_U }, { "122", TEL_N, NEG_U }, { "123", TEL_N, NEG_U }, { "124", TEL_N, NEG_U }, { "125", TEL_N, NEG_U }, { "126", TEL_N, NEG_U }, { "127", TEL_N, NEG_U }, { "128", TEL_N, NEG_U }, { "129", TEL_N, NEG_U }, { "130", TEL_N, NEG_U }, { "131", TEL_N, NEG_U }, { "132", TEL_N, NEG_U }, { "133", TEL_N, NEG_U }, { "134", TEL_N, NEG_U }, { "135", TEL_N, NEG_U }, { "136", TEL_N, NEG_U }, { "137", TEL_N, NEG_U }, { "138", TEL_N, NEG_U }, { "139", TEL_N, NEG_U }, { "140", TEL_N, NEG_U }, { "141", TEL_N, NEG_U }, { "142", TEL_N, NEG_U }, { "143", TEL_N, NEG_U }, { "144", TEL_N, NEG_U }, { "145", TEL_N, NEG_U }, { "146", TEL_N, NEG_U }, { "147", TEL_N, NEG_U }, { "148", TEL_N, NEG_U }, { "149", TEL_N, NEG_U }, { "150", TEL_N, NEG_U }, { "151", TEL_N, NEG_U }, { "152", TEL_N, NEG_U }, { "153", TEL_N, NEG_U }, { "154", TEL_N, NEG_U }, { "155", TEL_N, NEG_U }, { "156", TEL_N, NEG_U }, { "157", TEL_N, NEG_U }, { "158", TEL_N, NEG_U }, { "159", TEL_N, NEG_U }, { "160", TEL_N, NEG_U }, { "161", TEL_N, NEG_U }, { "162", TEL_N, NEG_U }, { "163", TEL_N, NEG_U }, { "164", TEL_N, NEG_U }, { "165", TEL_N, NEG_U }, { "166", TEL_N, NEG_U }, { "167", TEL_N, NEG_U }, { "168", TEL_N, NEG_U }, { "169", TEL_N, NEG_U }, { "170", TEL_N, NEG_U }, { "171", TEL_N, NEG_U }, { "172", TEL_N, NEG_U }, { "173", TEL_N, NEG_U }, { "174", TEL_N, NEG_U }, { "175", TEL_N, NEG_U }, { "176", TEL_N, NEG_U }, { "177", TEL_N, NEG_U }, { "178", TEL_N, NEG_U }, { "179", TEL_N, NEG_U }, { "180", TEL_N, NEG_U }, { "181", TEL_N, NEG_U }, { "182", TEL_N, NEG_U }, { "183", TEL_N, NEG_U }, { "184", TEL_N, NEG_U }, { "185", TEL_N, NEG_U }, { "186", TEL_N, NEG_U }, { "187", TEL_N, NEG_U }, { "188", TEL_N, NEG_U }, { "189", TEL_N, NEG_U }, { "190", TEL_N, NEG_U }, { "191", TEL_N, NEG_U }, { "192", TEL_N, NEG_U }, { "193", TEL_N, NEG_U }, { "194", TEL_N, NEG_U }, { "195", TEL_N, NEG_U }, { "196", TEL_N, NEG_U }, { "197", TEL_N, NEG_U }, { "198", TEL_N, NEG_U }, { "199", TEL_N, NEG_U }, { "200", TEL_N, NEG_U }, /* Used by Achaea */ { "GMCP", TEL_N, NEG_U }, /* Generic Mud Communication Protocol */ { "202", TEL_N, NEG_U }, { "203", TEL_N, NEG_U }, { "204", TEL_N, NEG_U }, { "205", TEL_N, NEG_U }, { "206", TEL_N, NEG_U }, { "207", TEL_N, NEG_U }, { "208", TEL_N, NEG_U }, { "209", TEL_N, NEG_U }, { "210", TEL_N, NEG_U }, { "211", TEL_N, NEG_U }, { "212", TEL_N, NEG_U }, { "213", TEL_N, NEG_U }, { "214", TEL_N, NEG_U }, { "215", TEL_N, NEG_U }, { "216", TEL_N, NEG_U }, { "217", TEL_N, NEG_U }, { "218", TEL_N, NEG_U }, { "219", TEL_N, NEG_U }, { "220", TEL_N, NEG_U }, { "221", TEL_N, NEG_U }, { "222", TEL_N, NEG_U }, { "223", TEL_N, NEG_U }, { "224", TEL_N, NEG_U }, { "225", TEL_N, NEG_U }, { "226", TEL_N, NEG_U }, { "227", TEL_N, NEG_U }, { "228", TEL_N, NEG_U }, { "229", TEL_N, NEG_U }, { "230", TEL_N, NEG_U }, { "231", TEL_N, NEG_U }, { "232", TEL_N, NEG_U }, { "233", TEL_N, NEG_U }, { "234", TEL_N, NEG_U }, { "235", TEL_N, NEG_U }, { "236", TEL_N, NEG_U }, { "237", TEL_N, NEG_U }, { "238", TEL_N, NEG_U }, { "239", TEL_N, NEG_U }, { "240", TEL_N, NEG_U }, { "241", TEL_N, NEG_U }, { "242", TEL_N, NEG_U }, { "243", TEL_N, NEG_U }, { "244", TEL_N, NEG_U }, { "245", TEL_N, NEG_U }, { "246", TEL_N, NEG_U }, { "247", TEL_N, NEG_U }, { "248", TEL_N, NEG_U }, { "249", TEL_N, NEG_U }, { "250", TEL_N, NEG_U }, { "251", TEL_N, NEG_U }, { "252", TEL_N, NEG_U }, { "253", TEL_N, NEG_U }, { "254", TEL_N, NEG_U }, { "255", TEL_N, NEG_U } };