option.h revision 195941
1/*
2 * Copyright (C) 1984-2009  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
47struct optname
48{
49	char *oname;            /* Long (GNU-style) option name */
50	struct optname *onext;  /* List of synonymous option names */
51};
52
53struct 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