xref: /dragonfly/contrib/less/lesskey.h (revision 320d7c8a)
11133e27eSPeter Avalos /*
2*320d7c8aSAaron LI  * Copyright (C) 1984-2023  Mark Nudelman
31133e27eSPeter Avalos  *
41133e27eSPeter Avalos  * You may distribute under the terms of either the GNU General Public
51133e27eSPeter Avalos  * License or the Less License, as specified in the README file.
61133e27eSPeter Avalos  *
7e639dc31SJohn Marino  * For more information, see the README file.
81133e27eSPeter Avalos  */
91133e27eSPeter Avalos 
100c7ad07eSAntonio Huete Jimenez #include "xbuf.h"
111133e27eSPeter Avalos 
121133e27eSPeter Avalos /*
131133e27eSPeter Avalos  * Format of a lesskey file:
141133e27eSPeter Avalos  *
151133e27eSPeter Avalos  *      LESSKEY_MAGIC (4 bytes)
161133e27eSPeter Avalos  *       sections...
171133e27eSPeter Avalos  *      END_LESSKEY_MAGIC (4 bytes)
181133e27eSPeter Avalos  *
191133e27eSPeter Avalos  * Each section is:
201133e27eSPeter Avalos  *
211133e27eSPeter Avalos  *      section_MAGIC (1 byte)
221133e27eSPeter Avalos  *      section_length (2 bytes)
231133e27eSPeter Avalos  *      key table (section_length bytes)
241133e27eSPeter Avalos  */
251133e27eSPeter Avalos #define C0_LESSKEY_MAGIC        '\0'
261133e27eSPeter Avalos #define C1_LESSKEY_MAGIC        'M'
271133e27eSPeter Avalos #define C2_LESSKEY_MAGIC        '+'
281133e27eSPeter Avalos #define C3_LESSKEY_MAGIC        'G'
291133e27eSPeter Avalos 
301133e27eSPeter Avalos #define CMD_SECTION             'c'
311133e27eSPeter Avalos #define EDIT_SECTION            'e'
321133e27eSPeter Avalos #define VAR_SECTION             'v'
331133e27eSPeter Avalos #define END_SECTION             'x'
341133e27eSPeter Avalos 
351133e27eSPeter Avalos #define C0_END_LESSKEY_MAGIC    'E'
361133e27eSPeter Avalos #define C1_END_LESSKEY_MAGIC    'n'
371133e27eSPeter Avalos #define C2_END_LESSKEY_MAGIC    'd'
381133e27eSPeter Avalos 
391133e27eSPeter Avalos /* */
401133e27eSPeter Avalos #define KRADIX          64
410c7ad07eSAntonio Huete Jimenez 
420c7ad07eSAntonio Huete Jimenez struct lesskey_cmdname
430c7ad07eSAntonio Huete Jimenez {
440c7ad07eSAntonio Huete Jimenez 	char *cn_name;
450c7ad07eSAntonio Huete Jimenez 	int cn_action;
460c7ad07eSAntonio Huete Jimenez };
470c7ad07eSAntonio Huete Jimenez 
480c7ad07eSAntonio Huete Jimenez struct lesskey_table
490c7ad07eSAntonio Huete Jimenez {
500c7ad07eSAntonio Huete Jimenez 	struct lesskey_cmdname *names;
510c7ad07eSAntonio Huete Jimenez 	struct xbuffer buf;
520c7ad07eSAntonio Huete Jimenez 	int is_var;
530c7ad07eSAntonio Huete Jimenez };
540c7ad07eSAntonio Huete Jimenez 
550c7ad07eSAntonio Huete Jimenez struct lesskey_tables
560c7ad07eSAntonio Huete Jimenez {
570c7ad07eSAntonio Huete Jimenez 	struct lesskey_table *currtable;
580c7ad07eSAntonio Huete Jimenez 	struct lesskey_table cmdtable;
590c7ad07eSAntonio Huete Jimenez 	struct lesskey_table edittable;
600c7ad07eSAntonio Huete Jimenez 	struct lesskey_table vartable;
610c7ad07eSAntonio Huete Jimenez };
620c7ad07eSAntonio Huete Jimenez 
630c7ad07eSAntonio Huete Jimenez extern int parse_lesskey(char *infile, struct lesskey_tables *tables);
64