Imported Upstream version 643
[platform/upstream/less.git] / lesskey.h
1 /*
2  * Copyright (C) 1984-2023  Mark Nudelman
3  *
4  * You may distribute under the terms of either the GNU General Public
5  * License or the Less License, as specified in the README file.
6  *
7  * For more information, see the README file.
8  */
9
10 #include "xbuf.h"
11
12 /*
13  * Format of a lesskey file:
14  *
15  *      LESSKEY_MAGIC (4 bytes)
16  *       sections...
17  *      END_LESSKEY_MAGIC (4 bytes)
18  *
19  * Each section is:
20  *
21  *      section_MAGIC (1 byte)
22  *      section_length (2 bytes)
23  *      key table (section_length bytes)
24  */
25 #define C0_LESSKEY_MAGIC        '\0'
26 #define C1_LESSKEY_MAGIC        'M'
27 #define C2_LESSKEY_MAGIC        '+'
28 #define C3_LESSKEY_MAGIC        'G'
29
30 #define CMD_SECTION             'c'
31 #define EDIT_SECTION            'e'
32 #define VAR_SECTION             'v'
33 #define END_SECTION             'x'
34
35 #define C0_END_LESSKEY_MAGIC    'E'
36 #define C1_END_LESSKEY_MAGIC    'n'
37 #define C2_END_LESSKEY_MAGIC    'd'
38
39 /* */
40 #define KRADIX          64
41
42 struct lesskey_cmdname
43 {
44         char *cn_name;
45         int cn_action;
46 };
47
48 struct lesskey_table
49 {
50         struct lesskey_cmdname *names;
51         struct xbuffer buf;
52         int is_var;
53 };
54
55 struct lesskey_tables
56 {
57         struct lesskey_table *currtable;
58         struct lesskey_table cmdtable;
59         struct lesskey_table edittable;
60         struct lesskey_table vartable;
61 };
62
63 extern int parse_lesskey(char *infile, struct lesskey_tables *tables);