xref: /freebsd/contrib/less/option.h (revision 2be1a816b9ff69588e55be0a84cbe2a31efc0f2f)
1 /*
2  * Copyright (C) 1984-2007  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 about less, or for information on how to
8  * contact the author, see the README file.
9  */
10 
11 
12 #define	END_OPTION_STRING	('$')
13 
14 /*
15  * Types of options.
16  */
17 #define	BOOL		01	/* Boolean option: 0 or 1 */
18 #define	TRIPLE		02	/* Triple-valued option: 0, 1 or 2 */
19 #define	NUMBER		04	/* Numeric option */
20 #define	STRING		010	/* String-valued option */
21 #define	NOVAR		020	/* No associated variable */
22 #define	REPAINT		040	/* Repaint screen after toggling option */
23 #define	NO_TOGGLE	0100	/* Option cannot be toggled with "-" cmd */
24 #define	HL_REPAINT	0200	/* Repaint hilites after toggling option */
25 #define	NO_QUERY	0400	/* Option cannot be queried with "_" cmd */
26 #define	INIT_HANDLER	01000	/* Call option handler function at startup */
27 
28 #define	OTYPE		(BOOL|TRIPLE|NUMBER|STRING|NOVAR)
29 
30 /*
31  * Argument to a handling function tells what type of activity:
32  */
33 #define	INIT	0	/* Initialization (from command line) */
34 #define	QUERY	1	/* Query (from _ or - command) */
35 #define	TOGGLE	2	/* Change value (from - command) */
36 
37 /* Flag to toggle_option to specify how to "toggle" */
38 #define	OPT_NO_TOGGLE	0
39 #define	OPT_TOGGLE	1
40 #define	OPT_UNSET	2
41 #define	OPT_SET		3
42 #define OPT_NO_PROMPT	0100
43 
44 /* Error code from findopt_name */
45 #define OPT_AMBIG       1
46 
47 struct optname
48 {
49 	char *oname;            /* Long (GNU-style) option name */
50 	struct optname *onext;  /* List of synonymous option names */
51 };
52 
53 struct loption
54 {
55 	char oletter;		/* The controlling letter (a-z) */
56 	struct optname *onames; /* Long (GNU-style) option name */
57 	int otype;		/* Type of the option */
58 	int odefault;		/* Default value */
59 	int *ovar;		/* Pointer to the associated variable */
60 	void (*ofunc)();	/* Pointer to special handling function */
61 	char *odesc[3];		/* Description of each value */
62 };
63 
64