Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/less/lesskey.h
39476 views
1
/*
2
* Copyright (C) 1984-2025 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 "lang.h"
11
#include "xbuf.h"
12
13
/*
14
* Format of a lesskey file:
15
*
16
* LESSKEY_MAGIC (4 bytes)
17
* sections...
18
* END_LESSKEY_MAGIC (4 bytes)
19
*
20
* Each section is:
21
*
22
* section_MAGIC (1 byte)
23
* section_length (2 bytes)
24
* key table (section_length bytes)
25
*/
26
#define C0_LESSKEY_MAGIC '\0'
27
#define C1_LESSKEY_MAGIC 'M'
28
#define C2_LESSKEY_MAGIC '+'
29
#define C3_LESSKEY_MAGIC 'G'
30
31
#define CMD_SECTION 'c'
32
#define EDIT_SECTION 'e'
33
#define VAR_SECTION 'v'
34
#define END_SECTION 'x'
35
36
#define C0_END_LESSKEY_MAGIC 'E'
37
#define C1_END_LESSKEY_MAGIC 'n'
38
#define C2_END_LESSKEY_MAGIC 'd'
39
40
/* */
41
#define KRADIX 64
42
43
struct lesskey_cmdname
44
{
45
constant char *cn_name;
46
int cn_action;
47
};
48
49
struct lesskey_table
50
{
51
constant struct lesskey_cmdname *names;
52
struct xbuffer buf;
53
int is_var;
54
};
55
56
struct lesskey_tables
57
{
58
struct lesskey_table *currtable;
59
struct lesskey_table cmdtable;
60
struct lesskey_table edittable;
61
struct lesskey_table vartable;
62
};
63
64
extern int parse_lesskey(constant char *infile, struct lesskey_tables *tables);
65
extern int parse_lesskey_content(constant char *content, struct lesskey_tables *tables);
66
67
/* keep in sync with less.h */
68
#if HAVE_SNPRINTF
69
#define SNPRINTF1(str, size, fmt, v1) snprintf((str), (size), (fmt), (v1))
70
#define SNPRINTF2(str, size, fmt, v1, v2) snprintf((str), (size), (fmt), (v1), (v2))
71
#define SNPRINTF3(str, size, fmt, v1, v2, v3) snprintf((str), (size), (fmt), (v1), (v2), (v3))
72
#define SNPRINTF4(str, size, fmt, v1, v2, v3, v4) snprintf((str), (size), (fmt), (v1), (v2), (v3), (v4))
73
#else
74
/* Use unsafe sprintf if we don't have snprintf. */
75
#define SNPRINTF1(str, size, fmt, v1) sprintf((str), (fmt), (v1))
76
#define SNPRINTF2(str, size, fmt, v1, v2) sprintf((str), (fmt), (v1), (v2))
77
#define SNPRINTF3(str, size, fmt, v1, v2, v3) sprintf((str), (fmt), (v1), (v2), (v3))
78
#define SNPRINTF4(str, size, fmt, v1, v2, v3, v4) sprintf((str), (fmt), (v1), (v2), (v3), (v4))
79
#endif
80
81