1 /* 2 * Copyright (c) 1983, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * Edward Wang at The University of California, Berkeley. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 1. Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 3. All advertising materials mentioning features or use of this software 17 * must display the following acknowledgement: 18 * This product includes software developed by the University of 19 * California, Berkeley and its contributors. 20 * 4. Neither the name of the University nor the names of its contributors 21 * may be used to endorse or promote products derived from this software 22 * without specific prior written permission. 23 * 24 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 25 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 27 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 34 * SUCH DAMAGE. 35 * 36 * @(#)lcmd.c 8.1 (Berkeley) 6/6/93 37 * $FreeBSD: src/usr.bin/window/lcmd.c,v 1.1.1.1.14.1 2001/05/17 09:45:00 obrien Exp $ 38 * $DragonFly: src/usr.bin/window/lcmd.c,v 1.3 2005/04/15 17:55:29 drhodus Exp $ 39 */ 40 41 #include "defs.h" 42 #include "value.h" 43 #include "lcmd.h" 44 45 int l_alias(); 46 int l_close(); 47 int l_cursormodes(); 48 int l_debug(); 49 int l_def_nline(); 50 int l_def_shell(); 51 int l_def_smooth(); 52 int l_echo(); 53 int l_escape(); 54 int l_foreground(); 55 int l_iostat(); 56 int l_label(); 57 int l_list(); 58 int l_select(); 59 int l_smooth(); 60 int l_source(); 61 int l_terse(); 62 int l_time(); 63 int l_unalias(); 64 int l_unset(); 65 int l_variable(); 66 int l_window(); 67 int l_write(); 68 69 extern struct lcmd_arg arg_alias[]; 70 extern struct lcmd_arg arg_cursormodes[]; 71 extern struct lcmd_arg arg_debug[]; 72 extern struct lcmd_arg arg_echo[]; 73 extern struct lcmd_arg arg_escape[]; 74 extern struct lcmd_arg arg_foreground[]; 75 extern struct lcmd_arg arg_label[]; 76 extern struct lcmd_arg arg_def_nline[]; 77 extern struct lcmd_arg arg_def_shell[]; 78 extern struct lcmd_arg arg_def_smooth[]; 79 extern struct lcmd_arg arg_close[]; 80 extern struct lcmd_arg arg_select[]; 81 extern struct lcmd_arg arg_smooth[]; 82 extern struct lcmd_arg arg_source[]; 83 extern struct lcmd_arg arg_terse[]; 84 extern struct lcmd_arg arg_time[]; 85 extern struct lcmd_arg arg_unalias[]; 86 extern struct lcmd_arg arg_unset[]; 87 extern struct lcmd_arg arg_window[]; 88 extern struct lcmd_arg arg_write[]; 89 struct lcmd_arg arg_null[1] = { { 0 } }; 90 91 struct lcmd_tab lcmd_tab[] = { 92 "alias", 1, l_alias, arg_alias, 93 "close", 2, l_close, arg_close, 94 "cursormodes", 2, l_cursormodes, arg_cursormodes, 95 "debug", 1, l_debug, arg_debug, 96 "default_nlines", 9, l_def_nline, arg_def_nline, 97 "default_shell", 10, l_def_shell, arg_def_shell, 98 "default_smooth", 10, l_def_smooth, arg_def_smooth, 99 "echo", 2, l_echo, arg_echo, 100 "escape", 2, l_escape, arg_escape, 101 "foreground", 1, l_foreground, arg_foreground, 102 "iostat", 1, l_iostat, arg_null, 103 "label", 2, l_label, arg_label, 104 "list", 2, l_list, arg_null, 105 "nlines", 1, l_def_nline, arg_def_nline, 106 "select", 2, l_select, arg_select, 107 "shell", 2, l_def_shell, arg_def_shell, 108 "smooth", 2, l_smooth, arg_smooth, 109 "source", 2, l_source, arg_source, 110 "terse", 2, l_terse, arg_terse, 111 "time", 2, l_time, arg_time, 112 "unalias", 3, l_unalias, arg_unalias, 113 "unset", 3, l_unset, arg_unset, 114 "variable", 1, l_variable, arg_null, 115 "window", 2, l_window, arg_window, 116 "write", 2, l_write, arg_write, 117 0 118 }; 119 120 struct lcmd_tab * 121 lcmd_lookup(name) 122 char *name; 123 { 124 struct lcmd_tab *p; 125 126 for (p = lcmd_tab; p->lc_name != 0; p++) 127 if (str_match(name, p->lc_name, p->lc_minlen)) 128 return p; 129 return 0; 130 } 131 132 dosource(filename) 133 char *filename; 134 { 135 if (cx_beginfile(filename) < 0) 136 return -1; 137 p_start(); 138 err_end(); 139 cx_end(); 140 return 0; 141 } 142 143 dolongcmd(buffer, arg, narg) 144 char *buffer; 145 struct value *arg; 146 int narg; 147 { 148 if (cx_beginbuf(buffer, arg, narg) < 0) 149 return -1; 150 p_start(); 151 err_end(); 152 cx_end(); 153 return 0; 154 } 155