Blame


1 76193d7c 2003-09-30 devnull typedef struct Addr Addr;
2 76193d7c 2003-09-30 devnull typedef struct Cmd Cmd;
3 76193d7c 2003-09-30 devnull struct Addr
4 76193d7c 2003-09-30 devnull {
5 76193d7c 2003-09-30 devnull char type; /* # (char addr), l (line addr), / ? . $ + - , ; */
6 76193d7c 2003-09-30 devnull union{
7 76193d7c 2003-09-30 devnull String *re;
8 76193d7c 2003-09-30 devnull Addr *aleft; /* left side of , and ; */
9 76193d7c 2003-09-30 devnull } g;
10 76193d7c 2003-09-30 devnull Posn num;
11 76193d7c 2003-09-30 devnull Addr *next; /* or right side of , and ; */
12 76193d7c 2003-09-30 devnull };
13 76193d7c 2003-09-30 devnull
14 76193d7c 2003-09-30 devnull #define are g.re
15 76193d7c 2003-09-30 devnull #define left g.aleft
16 76193d7c 2003-09-30 devnull
17 76193d7c 2003-09-30 devnull struct Cmd
18 76193d7c 2003-09-30 devnull {
19 76193d7c 2003-09-30 devnull Addr *addr; /* address (range of text) */
20 76193d7c 2003-09-30 devnull String *re; /* regular expression for e.g. 'x' */
21 76193d7c 2003-09-30 devnull union{
22 76193d7c 2003-09-30 devnull Cmd *cmd; /* target of x, g, {, etc. */
23 76193d7c 2003-09-30 devnull String *text; /* text of a, c, i; rhs of s */
24 76193d7c 2003-09-30 devnull Addr *addr; /* address for m, t */
25 76193d7c 2003-09-30 devnull } g;
26 76193d7c 2003-09-30 devnull Cmd *next; /* pointer to next element in {} */
27 76193d7c 2003-09-30 devnull short num;
28 76193d7c 2003-09-30 devnull ushort flag; /* whatever */
29 76193d7c 2003-09-30 devnull ushort cmdc; /* command character; 'x' etc. */
30 76193d7c 2003-09-30 devnull };
31 76193d7c 2003-09-30 devnull
32 76193d7c 2003-09-30 devnull #define ccmd g.cmd
33 76193d7c 2003-09-30 devnull #define ctext g.text
34 76193d7c 2003-09-30 devnull #define caddr g.addr
35 76193d7c 2003-09-30 devnull
36 7f6458b0 2021-01-06 rsc typedef struct Cmdtab Cmdtab;
37 7f6458b0 2021-01-06 rsc struct Cmdtab {
38 76193d7c 2003-09-30 devnull ushort cmdc; /* command character */
39 76193d7c 2003-09-30 devnull uchar text; /* takes a textual argument? */
40 76193d7c 2003-09-30 devnull uchar regexp; /* takes a regular expression? */
41 76193d7c 2003-09-30 devnull uchar addr; /* takes an address (m or t)? */
42 76193d7c 2003-09-30 devnull uchar defcmd; /* default command; 0==>none */
43 76193d7c 2003-09-30 devnull uchar defaddr; /* default address */
44 76193d7c 2003-09-30 devnull uchar count; /* takes a count e.g. s2/// */
45 76193d7c 2003-09-30 devnull char *token; /* takes text terminated by one of these */
46 76193d7c 2003-09-30 devnull int (*fn)(File*, Cmd*); /* function to call with parse tree */
47 7f6458b0 2021-01-06 rsc };
48 7f6458b0 2021-01-06 rsc extern Cmdtab cmdtab[];
49 76193d7c 2003-09-30 devnull
50 76193d7c 2003-09-30 devnull enum Defaddr{ /* default addresses */
51 76193d7c 2003-09-30 devnull aNo,
52 76193d7c 2003-09-30 devnull aDot,
53 cbeb0b26 2006-04-01 devnull aAll
54 76193d7c 2003-09-30 devnull };
55 76193d7c 2003-09-30 devnull
56 76193d7c 2003-09-30 devnull int nl_cmd(File*, Cmd*), a_cmd(File*, Cmd*), b_cmd(File*, Cmd*);
57 76193d7c 2003-09-30 devnull int c_cmd(File*, Cmd*), cd_cmd(File*, Cmd*), d_cmd(File*, Cmd*);
58 76193d7c 2003-09-30 devnull int D_cmd(File*, Cmd*), e_cmd(File*, Cmd*);
59 76193d7c 2003-09-30 devnull int f_cmd(File*, Cmd*), g_cmd(File*, Cmd*), i_cmd(File*, Cmd*);
60 76193d7c 2003-09-30 devnull int k_cmd(File*, Cmd*), m_cmd(File*, Cmd*), n_cmd(File*, Cmd*);
61 76193d7c 2003-09-30 devnull int p_cmd(File*, Cmd*), q_cmd(File*, Cmd*);
62 76193d7c 2003-09-30 devnull int s_cmd(File*, Cmd*), u_cmd(File*, Cmd*), w_cmd(File*, Cmd*);
63 76193d7c 2003-09-30 devnull int x_cmd(File*, Cmd*), X_cmd(File*, Cmd*), plan9_cmd(File*, Cmd*);
64 76193d7c 2003-09-30 devnull int eq_cmd(File*, Cmd*);
65 76193d7c 2003-09-30 devnull
66 76193d7c 2003-09-30 devnull
67 76193d7c 2003-09-30 devnull String *getregexp(int);
68 76193d7c 2003-09-30 devnull Addr *newaddr(void);
69 76193d7c 2003-09-30 devnull Address address(Addr*, Address, int);
70 76193d7c 2003-09-30 devnull int cmdexec(File*, Cmd*);