new ARG_LIST flag for commands
[unix-history] / usr / src / usr.bin / window / lcmd.c
CommitLineData
6a571c25 1#ifndef lint
855d0f8f 2static char sccsid[] = "@(#)lcmd.c 3.21 %G%";
6a571c25
EW
3#endif
4
5#include "defs.h"
1c0ca238
EW
6#include "value.h"
7#include "lcmd.h"
6a571c25 8
bb4a0c0b 9int l_alias();
1c0ca238 10int l_close();
7a57b3e2 11int l_cursormodes();
b0640643 12int l_debug();
6a571c25 13int l_escape();
e1dba5dd 14int l_foreground();
94a746af 15int l_iostat();
6a571c25 16int l_label();
e404c17a 17int l_list();
1f12ea41 18int l_nline();
1c0ca238 19int l_select();
7ecf4dca 20int l_shell();
6a571c25 21int l_source();
1c0ca238 22int l_terse();
94a746af 23int l_time();
bb4a0c0b 24int l_unalias();
b65b69eb 25int l_unset();
e404c17a 26int l_variable();
1c0ca238 27int l_window();
6a571c25
EW
28int l_write();
29
bb4a0c0b 30struct lcmd_arg arg_alias[];
7a57b3e2 31struct lcmd_arg arg_cursormodes[];
b0640643 32struct lcmd_arg arg_debug[];
1c0ca238 33struct lcmd_arg arg_escape[];
e1dba5dd 34struct lcmd_arg arg_foreground[];
1c0ca238 35struct lcmd_arg arg_label[];
1f12ea41 36struct lcmd_arg arg_nline[];
855d0f8f 37struct lcmd_arg arg_close[];
1c0ca238 38struct lcmd_arg arg_select[];
7ecf4dca 39struct lcmd_arg arg_shell[];
1c0ca238
EW
40struct lcmd_arg arg_source[];
41struct lcmd_arg arg_terse[];
94a746af 42struct lcmd_arg arg_time[];
bb4a0c0b 43struct lcmd_arg arg_unalias[];
b65b69eb 44struct lcmd_arg arg_unset[];
1c0ca238 45struct lcmd_arg arg_window[];
855d0f8f 46struct lcmd_arg arg_write[];
e404c17a 47struct lcmd_arg arg_null[] = 0;
1c0ca238
EW
48
49struct lcmd_tab lcmd_tab[] = {
50 "%", 1, l_select, arg_select,
bb4a0c0b 51 "alias", 1, l_alias, arg_alias,
1f12ea41 52 "buffer", 2, l_nline, arg_nline,
855d0f8f 53 "close", 2, l_close, arg_close,
7a57b3e2 54 "cursormodes", 2, l_cursormodes, arg_cursormodes,
b0640643 55 "debug", 1, l_debug, arg_debug,
1c0ca238 56 "escape", 1, l_escape, arg_escape,
e1dba5dd 57 "foreground", 1, l_foreground, arg_foreground,
e404c17a
EW
58 "iostat", 1, l_iostat, arg_null,
59 "label", 2, l_label, arg_label,
60 "list", 2, l_list, arg_null,
1f12ea41 61 "nlines", 1, l_nline, arg_nline,
1c0ca238 62 "select", 2, l_select, arg_select,
7ecf4dca 63 "shell", 2, l_shell, arg_shell,
1c0ca238 64 "source", 2, l_source, arg_source,
94a746af
EW
65 "terse", 2, l_terse, arg_terse,
66 "time", 2, l_time, arg_time,
bb4a0c0b
EW
67 "unalias", 3, l_unalias, arg_unalias,
68 "unset", 3, l_unset, arg_unset,
e404c17a 69 "variable", 1, l_variable, arg_null,
1c0ca238 70 "window", 2, l_window, arg_window,
855d0f8f 71 "write", 2, l_write, arg_write,
e1dba5dd 72 0
6a571c25
EW
73};
74
1c0ca238
EW
75struct lcmd_tab *
76lcmd_lookup(name)
77char *name;
6a571c25 78{
1c0ca238 79 register struct lcmd_tab *p;
6a571c25 80
1c0ca238
EW
81 for (p = lcmd_tab; p->lc_name != 0; p++)
82 if (str_match(name, p->lc_name, p->lc_minlen))
83 return p;
6a571c25
EW
84 return 0;
85}
86
1c0ca238
EW
87dosource(filename)
88char *filename;
6a571c25 89{
a40a2f9a 90 if (cx_beginfile(filename) < 0)
1c0ca238
EW
91 return -1;
92 p_start();
93 err_end();
94 cx_end();
95 return 0;
6a571c25
EW
96}
97
bb4a0c0b 98dolongcmd(buffer, arg, narg)
1c0ca238 99char *buffer;
bb4a0c0b
EW
100struct value *arg;
101int narg;
6a571c25 102{
bb4a0c0b 103 if (cx_beginbuf(buffer, arg, narg) < 0)
1c0ca238
EW
104 return -1;
105 p_start();
106 err_end();
107 cx_end();
108 return 0;
6a571c25 109}