summaryrefslogtreecommitdiff
path: root/src/comm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/comm.c')
-rw-r--r--src/comm.c342
1 files changed, 342 insertions, 0 deletions
diff --git a/src/comm.c b/src/comm.c
new file mode 100644
index 0000000..5f4af8a
--- /dev/null
+++ b/src/comm.c
@@ -0,0 +1,342 @@
+/* Copyright (c) 2008, 2009
+ * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
+ * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
+ * Micah Cowan (micah@cowan.name)
+ * Sadrul Habib Chowdhury (sadrul@users.sourceforge.net)
+ * Copyright (c) 1993-2002, 2003, 2005, 2006, 2007
+ * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
+ * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
+ * Copyright (c) 1987 Oliver Laumann
+ *
+#ifdef HAVE_BRAILLE
+ * Modified by:
+ * Authors: Hadi Bargi Rangin bargi@dots.physics.orst.edu
+ * Bill Barry barryb@dots.physics.orst.edu
+ *
+ * Modifications Copyright (c) 1995 by
+ * Science Access Project, Oregon State University.
+#endif
+ *
+ * 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 3, 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 (see the file COPYING); if not, see
+ * http://www.gnu.org/licenses/, or contact Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ *
+ ****************************************************************
+ */
+
+#include "config.h"
+#include "acls.h"
+#include "comm.h"
+
+#define bcopy :-( /* or include screen.h here */
+
+/* Must be in alpha order ! */
+
+struct comm comms[RC_LAST + 1] =
+{
+#ifdef MULTIUSER
+ { "acladd", ARGS_1234 },
+ { "aclchg", ARGS_23 },
+ { "acldel", ARGS_1 },
+ { "aclgrp", ARGS_12 },
+ { "aclumask", ARGS_1|ARGS_ORMORE },
+#endif
+ { "activity", ARGS_1 },
+#ifdef MULTIUSER
+ { "addacl", ARGS_1234 },
+#endif
+ { "allpartial", NEED_DISPLAY|ARGS_1 },
+ { "altscreen", ARGS_01 },
+ { "at", ARGS_2|ARGS_ORMORE },
+#ifdef COLOR
+ { "attrcolor", ARGS_12 },
+#endif
+ { "autodetach", ARGS_1 },
+#ifdef AUTO_NUKE
+ { "autonuke", NEED_DISPLAY|ARGS_1 },
+#endif
+ { "backtick", ARGS_1|ARGS_ORMORE },
+#ifdef COLOR
+ { "bce", NEED_FORE|ARGS_01 },
+#endif
+
+#ifdef HAVE_BRAILLE
+/* keywords for braille display (bd) */
+ { "bd_bc_down", ARGS_0 },
+ { "bd_bc_left", ARGS_0 },
+ { "bd_bc_right", ARGS_0 },
+ { "bd_bc_up", ARGS_0 },
+ { "bd_bell", ARGS_01 },
+ { "bd_braille_table", ARGS_01 },
+ { "bd_eightdot", ARGS_01 },
+ { "bd_info", ARGS_01 },
+ { "bd_link", ARGS_01 },
+ { "bd_lower_left", ARGS_0 },
+ { "bd_lower_right", ARGS_0 },
+ { "bd_ncrc", ARGS_01 },
+ { "bd_port", ARGS_01 },
+ { "bd_scroll", ARGS_01 },
+ { "bd_skip", ARGS_01 },
+ { "bd_start_braille", ARGS_01 },
+ { "bd_type", ARGS_01 },
+ { "bd_upper_left", ARGS_0 },
+ { "bd_upper_right", ARGS_0 },
+ { "bd_width", ARGS_01 },
+#endif
+
+ { "bell", ARGS_01 },
+ { "bell_msg", ARGS_01 },
+ { "bind", ARGS_1|ARGS_ORMORE },
+#ifdef MAPKEYS
+ { "bindkey", ARGS_0|ARGS_ORMORE },
+#endif
+ { "blanker", NEED_DISPLAY|ARGS_0},
+#ifdef BLANKER_PRG
+ { "blankerprg", ARGS_0|ARGS_ORMORE },
+#endif
+ { "break", NEED_FORE|ARGS_01 },
+ { "breaktype", NEED_FORE|ARGS_01 },
+#ifdef COPY_PASTE
+ { "bufferfile", ARGS_01 },
+#endif
+ { "c1", NEED_FORE|ARGS_01 },
+ { "caption", ARGS_12 },
+#ifdef MULTIUSER
+ { "chacl", ARGS_23 },
+#endif
+ { "charset", NEED_FORE|ARGS_1 },
+ { "chdir", ARGS_01 },
+#ifdef DW_CHARS
+ { "cjkwidth", ARGS_01 },
+#endif
+ { "clear", NEED_FORE|ARGS_0 },
+ { "colon", NEED_LAYER|ARGS_01 },
+ { "command", NEED_DISPLAY|ARGS_02 },
+#ifdef COPY_PASTE
+ { "compacthist", ARGS_01 },
+#endif
+ { "console", NEED_FORE|ARGS_01 },
+#ifdef COPY_PASTE
+ { "copy", NEED_FORE|NEED_DISPLAY|ARGS_0 },
+ { "crlf", ARGS_01 },
+#endif
+ { "debug", ARGS_01 },
+#ifdef AUTO_NUKE
+ { "defautonuke", ARGS_1 },
+#endif
+#ifdef COLOR
+ { "defbce", ARGS_1 },
+#endif
+ { "defbreaktype", ARGS_01 },
+ { "defc1", ARGS_1 },
+ { "defcharset", ARGS_01 },
+#ifdef ENCODINGS
+ { "defencoding", ARGS_1 },
+#endif
+ { "defescape", ARGS_1 },
+ { "defflow", ARGS_12 },
+ { "defgr", ARGS_1 },
+ { "defhstatus", ARGS_01 },
+#ifdef ENCODINGS
+ { "defkanji", ARGS_1 },
+#endif
+ { "deflog", ARGS_1 },
+#if defined(UTMPOK) && defined(LOGOUTOK)
+ { "deflogin", ARGS_1 },
+#endif
+ { "defmode", ARGS_1 },
+ { "defmonitor", ARGS_1 },
+ { "defmousetrack", ARGS_1 },
+#ifdef MULTI
+ { "defnonblock", ARGS_1 },
+#endif
+ { "defobuflimit", ARGS_1 },
+#ifdef COPY_PASTE
+ { "defscrollback", ARGS_1 },
+#endif
+ { "defshell", ARGS_1 },
+ { "defsilence", ARGS_1 },
+ { "defslowpaste", ARGS_1 },
+#ifdef UTF8
+ { "defutf8", ARGS_1 },
+#endif
+ { "defwrap", ARGS_1 },
+ { "defwritelock", ARGS_1 },
+#ifdef DETACH
+ { "detach", NEED_DISPLAY|ARGS_01 },
+#endif
+ { "digraph", NEED_LAYER|ARGS_012 },
+ { "dinfo", NEED_DISPLAY|ARGS_0 },
+ { "displays", NEED_LAYER|ARGS_0 },
+ { "dumptermcap", NEED_FORE|ARGS_0 },
+ { "echo", CAN_QUERY|ARGS_12 },
+#ifdef ENCODINGS
+ { "encoding", ARGS_12 },
+#endif
+ { "escape", ARGS_1 },
+ { "eval", ARGS_1|ARGS_ORMORE },
+#ifdef PSEUDOS
+ { "exec", ARGS_0|ARGS_ORMORE },
+#endif
+ { "fit", NEED_DISPLAY|ARGS_0 },
+ { "flow", NEED_FORE|ARGS_01 },
+ { "focus", NEED_DISPLAY|ARGS_01 },
+ { "focusminsize", ARGS_02 },
+ { "gr", NEED_FORE|ARGS_01 },
+ { "group", NEED_FORE|ARGS_01 },
+ { "hardcopy", NEED_FORE|ARGS_012 },
+ { "hardcopy_append", ARGS_1 },
+ { "hardcopydir", ARGS_01 },
+ { "hardstatus", ARGS_012 },
+ { "height", ARGS_0123 },
+ { "help", NEED_LAYER|ARGS_02 },
+#ifdef COPY_PASTE
+ { "history", NEED_DISPLAY|NEED_FORE|ARGS_0 },
+#endif
+ { "hstatus", NEED_FORE|ARGS_1 },
+ { "idle", ARGS_0|ARGS_ORMORE },
+ { "ignorecase", ARGS_01 },
+ { "info", CAN_QUERY|NEED_LAYER|ARGS_0 },
+#ifdef ENCODINGS
+ { "kanji", NEED_FORE|ARGS_12 },
+#endif
+ { "kill", NEED_FORE|ARGS_0 },
+ { "lastmsg", CAN_QUERY|NEED_DISPLAY|ARGS_0 },
+ { "layout", ARGS_1|ARGS_ORMORE},
+ { "license", NEED_LAYER|ARGS_0 },
+#ifdef LOCK
+ { "lockscreen", NEED_DISPLAY|ARGS_0 },
+#endif
+ { "log", NEED_FORE|ARGS_01 },
+ { "logfile", ARGS_012 },
+#if defined(UTMPOK) && defined(LOGOUTOK)
+ { "login", NEED_FORE|ARGS_01 },
+#endif
+ { "logtstamp", ARGS_012 },
+#ifdef MAPKEYS
+ { "mapdefault", NEED_DISPLAY|ARGS_0 },
+ { "mapnotnext", NEED_DISPLAY|ARGS_0 },
+ { "maptimeout", ARGS_01 },
+#endif
+#ifdef COPY_PASTE
+ { "markkeys", ARGS_1 },
+#endif
+ { "maxwin", ARGS_01 },
+ { "meta", NEED_LAYER|ARGS_0 },
+ { "monitor", NEED_FORE|ARGS_01 },
+ { "mousetrack", NEED_DISPLAY | ARGS_01 },
+ { "msgminwait", ARGS_1 },
+ { "msgwait", ARGS_1 },
+#ifdef MULTIUSER
+ { "multiuser", ARGS_1 },
+#endif
+#ifdef NETHACK
+ { "nethack", ARGS_1 },
+#endif
+ { "next", ARGS_0 },
+#ifdef MULTI
+ { "nonblock", NEED_DISPLAY|ARGS_01 },
+#endif
+ { "number", CAN_QUERY|NEED_FORE|ARGS_01 },
+ { "obuflimit", NEED_DISPLAY|ARGS_01 },
+ { "only", NEED_DISPLAY|ARGS_0 },
+ { "other", ARGS_0 },
+ { "partial", NEED_FORE|ARGS_01 },
+#ifdef PASSWORD
+ { "password", ARGS_01 },
+#endif
+#ifdef COPY_PASTE
+ { "paste", NEED_LAYER|ARGS_012 },
+ { "pastefont", ARGS_01 },
+#endif
+ { "pow_break", NEED_FORE|ARGS_01 },
+#if defined(DETACH) && defined(POW_DETACH)
+ { "pow_detach", NEED_DISPLAY|ARGS_0 },
+ { "pow_detach_msg", ARGS_01 },
+#endif
+ { "prev", ARGS_0 },
+ { "printcmd", ARGS_01 },
+ { "process", NEED_DISPLAY|ARGS_01 },
+ { "quit", ARGS_0 },
+#ifdef COPY_PASTE
+ { "readbuf", ARGS_0123 },
+#endif
+ { "readreg", ARGS_0|ARGS_ORMORE },
+ { "redisplay", NEED_DISPLAY|ARGS_0 },
+ { "register", ARGS_24 },
+ { "remove", NEED_DISPLAY|ARGS_0 },
+#ifdef COPY_PASTE
+ { "removebuf", ARGS_0 },
+#endif
+ { "rendition", ARGS_23 },
+ { "reset", NEED_FORE|ARGS_0 },
+ { "resize", NEED_DISPLAY|ARGS_0|ARGS_ORMORE },
+ { "screen", ARGS_0|ARGS_ORMORE },
+#ifdef COPY_PASTE
+ { "scrollback", NEED_FORE|ARGS_1 },
+#endif
+ { "select", CAN_QUERY|ARGS_01 },
+ { "sessionname", ARGS_01 },
+ { "setenv", ARGS_012 },
+ { "setsid", ARGS_1 },
+ { "shell", ARGS_1 },
+ { "shelltitle", ARGS_1 },
+ { "silence", NEED_FORE|ARGS_01 },
+ { "silencewait", ARGS_1 },
+ { "sleep", ARGS_1 },
+ { "slowpaste", NEED_FORE|ARGS_01 },
+ { "sorendition", ARGS_012 },
+ { "source", ARGS_1 },
+ { "split", NEED_DISPLAY|ARGS_01 },
+ { "startup_message", ARGS_1 },
+ { "stuff", NEED_LAYER|ARGS_012 },
+#ifdef MULTIUSER
+ { "su", NEED_DISPLAY|ARGS_012 },
+#endif
+#ifdef BSDJOBS
+ { "suspend", NEED_DISPLAY|ARGS_0 },
+#endif
+ { "term", ARGS_1 },
+ { "termcap", ARGS_23 },
+ { "termcapinfo", ARGS_23 },
+ { "terminfo", ARGS_23 },
+ { "time", CAN_QUERY|ARGS_01 },
+ { "title", CAN_QUERY|NEED_FORE|ARGS_01 },
+ { "umask", ARGS_1|ARGS_ORMORE },
+ { "unbindall", ARGS_0 },
+ { "unsetenv", ARGS_1 },
+#ifdef UTF8
+ { "utf8", NEED_FORE|ARGS_012 },
+#endif
+ { "vbell", ARGS_01 },
+ { "vbell_msg", ARGS_01 },
+ { "vbellwait", ARGS_1 },
+ { "verbose", ARGS_01 },
+ { "version", ARGS_0 },
+ { "wall", NEED_DISPLAY|ARGS_1},
+ { "width", ARGS_0123 },
+ { "windowlist", ARGS_012 },
+ { "windows", CAN_QUERY|ARGS_0 },
+ { "wrap", NEED_FORE|ARGS_01 },
+#ifdef COPY_PASTE
+ { "writebuf", ARGS_0123 },
+#endif
+ { "writelock", NEED_FORE|ARGS_01 },
+ { "xoff", NEED_LAYER|ARGS_0 },
+ { "xon", NEED_LAYER|ARGS_0 },
+#ifdef ZMODEM
+ { "zmodem", ARGS_012 },
+#endif
+ { "zombie", ARGS_012 }
+};