Home | History | Annotate | Line # | Download | only in dist
      1 /*	$NetBSD: option.h,v 1.5 2023/10/06 05:49:49 simonb Exp $	*/
      2 
      3 /*
      4  * Copyright (C) 1984-2023  Mark Nudelman
      5  *
      6  * You may distribute under the terms of either the GNU General Public
      7  * License or the Less License, as specified in the README file.
      8  *
      9  * For more information, see the README file.
     10  */
     11 
     12 
     13 #define END_OPTION_STRING       ('$')
     14 
     15 /*
     16  * Types of options.
     17  */
     18 #define BOOL            01      /* Boolean option: 0 or 1 */
     19 #define TRIPLE          02      /* Triple-valued option: 0, 1 or 2 */
     20 #define NUMBER          04      /* Numeric option */
     21 #define STRING          010     /* String-valued option */
     22 #define NOVAR           020     /* No associated variable */
     23 #define REPAINT         040     /* Repaint screen after toggling option */
     24 #define NO_TOGGLE       0100    /* Option cannot be toggled with "-" cmd */
     25 #define HL_REPAINT      0200    /* Repaint hilites after toggling option */
     26 #define NO_QUERY        0400    /* Option cannot be queried with "_" cmd */
     27 #define INIT_HANDLER    01000   /* Call option handler function at startup */
     28 
     29 #define OTYPE           (BOOL|TRIPLE|NUMBER|STRING|NOVAR)
     30 
     31 #define OLETTER_NONE    '\1'     /* Invalid option letter */
     32 
     33 /*
     34  * Argument to a handling function tells what type of activity:
     35  */
     36 #define INIT    0       /* Initialization (from command line) */
     37 #define QUERY   1       /* Query (from _ or - command) */
     38 #define TOGGLE  2       /* Change value (from - command) */
     39 
     40 /* Flag to toggle_option to specify how to "toggle" */
     41 #define OPT_NO_TOGGLE   0
     42 #define OPT_TOGGLE      1
     43 #define OPT_UNSET       2
     44 #define OPT_SET         3
     45 #define OPT_NO_PROMPT   0100
     46 
     47 /* Error code from findopt_name */
     48 #define OPT_AMBIG       1
     49 
     50 struct optname
     51 {
     52         char *oname;            /* Long (GNU-style) option name */
     53         struct optname *onext;  /* List of synonymous option names */
     54 };
     55 
     56 #define OPTNAME_MAX     32      /* Max length of long option name */
     57 
     58 struct loption
     59 {
     60         char oletter;           /* The controlling letter (a-z) */
     61         struct optname *onames; /* Long (GNU-style) option name */
     62         int otype;              /* Type of the option */
     63         int odefault;           /* Default value */
     64         int *ovar;              /* Pointer to the associated variable */
     65         void (*ofunc)(int, char*); /* Pointer to special handling function */
     66         char *odesc[3];         /* Description of each value */
     67 };
     68 
     69