62 lines
1.6 KiB
C
Executable File
62 lines
1.6 KiB
C
Executable File
/*
|
|
* Command line options parser.
|
|
*
|
|
* $Copyright Open Broadcom Corporation$
|
|
* $Id: miniopt.h 484281 2014-06-12 22:42:26Z $
|
|
*/
|
|
|
|
|
|
#ifndef MINI_OPT_H
|
|
#define MINI_OPT_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* ---- Include Files ---------------------------------------------------- */
|
|
|
|
|
|
/* ---- Constants and Types ---------------------------------------------- */
|
|
|
|
#define MINIOPT_MAXKEY 128 /* Max options */
|
|
typedef struct miniopt {
|
|
|
|
/* These are persistent after miniopt_init() */
|
|
const char* name; /* name for prompt in error strings */
|
|
const char* flags; /* option chars that take no args */
|
|
bool longflags; /* long options may be flags */
|
|
bool opt_end; /* at end of options (passed a "--") */
|
|
|
|
/* These are per-call to miniopt() */
|
|
|
|
int consumed; /* number of argv entries cosumed in
|
|
* the most recent call to miniopt()
|
|
*/
|
|
bool positional;
|
|
bool good_int; /* 'val' member is the result of a sucessful
|
|
* strtol conversion of the option value
|
|
*/
|
|
char opt;
|
|
char key[MINIOPT_MAXKEY];
|
|
char* valstr; /* positional param, or value for the option,
|
|
* or null if the option had
|
|
* no accompanying value
|
|
*/
|
|
uint uval; /* strtol translation of valstr */
|
|
int val; /* strtol translation of valstr */
|
|
} miniopt_t;
|
|
|
|
void miniopt_init(miniopt_t *t, const char* name, const char* flags, bool longflags);
|
|
int miniopt(miniopt_t *t, char **argv);
|
|
|
|
|
|
/* ---- Variable Externs ------------------------------------------------- */
|
|
/* ---- Function Prototypes ---------------------------------------------- */
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* MINI_OPT_H */
|