• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Command line options parser.
3  *
4  * Copyright (C) 1999-2019, Broadcom.
5  *
6  *      Unless you and Broadcom execute a separate written software license
7  * agreement governing use of this software, this software is licensed to you
8  * under the terms of the GNU General Public License version 2 (the "GPL"),
9  * available at http://www.broadcom.com/licenses/GPLv2.php, with the
10  * following added to such license:
11  *
12  *      As a special exception, the copyright holders of this software give you
13  * permission to link this software with independent modules, and to copy and
14  * distribute the resulting executable under terms of your choice, provided that
15  * you also meet, for each linked independent module, the terms and conditions
16  * of the license of that module.  An independent module is a module which is
17  * not derived from this software.  The special exception does not apply to any
18  * modifications of the software.
19  *
20  *      Notwithstanding the above, under no circumstances may you combine this
21  * software in any way with any other Broadcom software provided under a license
22  * other than the GPL, without Broadcom's express prior written consent.
23  *
24  *
25  * <<Broadcom-WL-IPTag/Open:>>
26  *
27  * $Id: miniopt.h 672943 2016-11-30 08:54:06Z $
28  */
29 
30 #ifndef MINI_OPT_H
31 #define MINI_OPT_H
32 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif // endif
36 
37 /* ---- Include Files ---------------------------------------------------- */
38 
39 /* ---- Constants and Types ---------------------------------------------- */
40 
41 #define MINIOPT_MAXKEY 128 /* Max options */
42 typedef struct miniopt {
43     /* These are persistent after miniopt_init() */
44     const char *name;  /* name for prompt in error strings */
45     const char *flags; /* option chars that take no args */
46     bool longflags;    /* long options may be flags */
47     bool opt_end;      /* at end of options (passed a "--") */
48 
49     /* These are per-call to miniopt() */
50 
51     int consumed; /* number of argv entries cosumed in
52                    * the most recent call to miniopt()
53                    */
54     bool positional;
55     bool good_int; /* 'val' member is the result of a sucessful
56                     * strtol conversion of the option value
57                     */
58     char opt;
59     char key[MINIOPT_MAXKEY];
60     char *valstr; /* positional param, or value for the option,
61                    * or null if the option had
62                    * no accompanying value
63                    */
64     uint uval;    /* strtol translation of valstr */
65     int val;      /* strtol translation of valstr */
66 } miniopt_t;
67 
68 void miniopt_init(miniopt_t *t, const char *name, const char *flags,
69                   bool longflags);
70 int miniopt(miniopt_t *t, char **argv);
71 
72 /* ---- Variable Externs ------------------------------------------------- */
73 /* ---- Function Prototypes ---------------------------------------------- */
74 
75 #ifdef __cplusplus
76 }
77 #endif // endif
78 
79 #endif /* MINI_OPT_H  */
80