Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Typedefs | Enumerations | Functions
parse-options.h File Reference
#include <linux/kernel.h>
#include <stdbool.h>

Go to the source code of this file.

Data Structures

struct  option
 
struct  parse_opt_ctx_t
 

Macros

#define check_vtype(v, type)   ( BUILD_BUG_ON_ZERO(!__builtin_types_compatible_p(typeof(v), type)) + v )
 
#define OPT_END()   { .type = OPTION_END }
 
#define OPT_ARGUMENT(l, h)   { .type = OPTION_ARGUMENT, .long_name = (l), .help = (h) }
 
#define OPT_GROUP(h)   { .type = OPTION_GROUP, .help = (h) }
 
#define OPT_BIT(s, l, v, h, b)   { .type = OPTION_BIT, .short_name = (s), .long_name = (l), .value = check_vtype(v, int *), .help = (h), .defval = (b) }
 
#define OPT_BOOLEAN(s, l, v, h)   { .type = OPTION_BOOLEAN, .short_name = (s), .long_name = (l), .value = check_vtype(v, bool *), .help = (h) }
 
#define OPT_INCR(s, l, v, h)   { .type = OPTION_INCR, .short_name = (s), .long_name = (l), .value = check_vtype(v, int *), .help = (h) }
 
#define OPT_SET_UINT(s, l, v, h, i)   { .type = OPTION_SET_UINT, .short_name = (s), .long_name = (l), .value = check_vtype(v, unsigned int *), .help = (h), .defval = (i) }
 
#define OPT_SET_PTR(s, l, v, h, p)   { .type = OPTION_SET_PTR, .short_name = (s), .long_name = (l), .value = (v), .help = (h), .defval = (p) }
 
#define OPT_INTEGER(s, l, v, h)   { .type = OPTION_INTEGER, .short_name = (s), .long_name = (l), .value = check_vtype(v, int *), .help = (h) }
 
#define OPT_UINTEGER(s, l, v, h)   { .type = OPTION_UINTEGER, .short_name = (s), .long_name = (l), .value = check_vtype(v, unsigned int *), .help = (h) }
 
#define OPT_LONG(s, l, v, h)   { .type = OPTION_LONG, .short_name = (s), .long_name = (l), .value = check_vtype(v, long *), .help = (h) }
 
#define OPT_U64(s, l, v, h)   { .type = OPTION_U64, .short_name = (s), .long_name = (l), .value = check_vtype(v, u64 *), .help = (h) }
 
#define OPT_STRING(s, l, v, a, h)   { .type = OPTION_STRING, .short_name = (s), .long_name = (l), .value = check_vtype(v, const char **), (a), .help = (h) }
 
#define OPT_DATE(s, l, v, h)   { .type = OPTION_CALLBACK, .short_name = (s), .long_name = (l), .value = (v), .argh = "time", .help = (h), .callback = parse_opt_approxidate_cb }
 
#define OPT_CALLBACK(s, l, v, a, h, f)   { .type = OPTION_CALLBACK, .short_name = (s), .long_name = (l), .value = (v), (a), .help = (h), .callback = (f) }
 
#define OPT_CALLBACK_NOOPT(s, l, v, a, h, f)   { .type = OPTION_CALLBACK, .short_name = (s), .long_name = (l), .value = (v), (a), .help = (h), .callback = (f), .flags = PARSE_OPT_NOARG }
 
#define OPT_CALLBACK_DEFAULT(s, l, v, a, h, f, d)   { .type = OPTION_CALLBACK, .short_name = (s), .long_name = (l), .value = (v), (a), .help = (h), .callback = (f), .defval = (intptr_t)d, .flags = PARSE_OPT_LASTARG_DEFAULT }
 
#define OPT_CALLBACK_DEFAULT_NOOPT(s, l, v, a, h, f, d)
 
#define OPT__VERBOSE(var)   OPT_BOOLEAN('v', "verbose", (var), "be verbose")
 
#define OPT__QUIET(var)   OPT_BOOLEAN('q', "quiet", (var), "be quiet")
 
#define OPT__VERBOSITY(var)
 
#define OPT__DRY_RUN(var)   OPT_BOOLEAN('n', "dry-run", (var), "dry run")
 
#define OPT__ABBREV(var)
 

Typedefs

typedef int parse_opt_cb (const struct option *, const char *arg, int unset)
 

Enumerations

enum  parse_opt_type {
  OPTION_END, OPTION_ARGUMENT, OPTION_GROUP, OPTION_BIT,
  OPTION_BOOLEAN, OPTION_INCR, OPTION_SET_UINT, OPTION_SET_PTR,
  OPTION_STRING, OPTION_INTEGER, OPTION_LONG, OPTION_CALLBACK,
  OPTION_U64, OPTION_UINTEGER
}
 
enum  parse_opt_flags {
  PARSE_OPT_KEEP_DASHDASH = 1, PARSE_OPT_STOP_AT_NON_OPTION = 2, PARSE_OPT_KEEP_ARGV0 = 4, PARSE_OPT_KEEP_UNKNOWN = 8,
  PARSE_OPT_NO_INTERNAL_HELP = 16
}
 
enum  parse_opt_option_flags {
  PARSE_OPT_OPTARG = 1, PARSE_OPT_NOARG = 2, PARSE_OPT_NONEG = 4, PARSE_OPT_HIDDEN = 8,
  PARSE_OPT_LASTARG_DEFAULT = 16
}
 
enum  { PARSE_OPT_HELP = -1, PARSE_OPT_DONE, PARSE_OPT_LIST, PARSE_OPT_UNKNOWN }
 

Functions

int parse_options (int argc, const char **argv, const struct option *options, const char *const usagestr[], int flags)
 
NORETURN void usage_with_options (const char *const *usagestr, const struct option *options)
 
int parse_options_usage (const char *const *usagestr, const struct option *opts)
 
void parse_options_start (struct parse_opt_ctx_t *ctx, int argc, const char **argv, int flags)
 
int parse_options_step (struct parse_opt_ctx_t *ctx, const struct option *options, const char *const usagestr[])
 
int parse_options_end (struct parse_opt_ctx_t *ctx)
 
int parse_opt_abbrev_cb (const struct option *, const char *, int)
 
int parse_opt_approxidate_cb (const struct option *, const char *, int)
 
int parse_opt_verbosity_cb (const struct option *, const char *, int)
 
const charparse_options_fix_filename (const char *prefix, const char *file)
 

Macro Definition Documentation

#define check_vtype (   v,
  type 
)    ( BUILD_BUG_ON_ZERO(!__builtin_types_compatible_p(typeof(v), type)) + v )

Definition at line 99 of file parse-options.h.

#define OPT__ABBREV (   var)
Value:
{ OPTION_CALLBACK, 0, "abbrev", (var), "n", \
"use <n> digits to display SHA-1s", \

Definition at line 186 of file parse-options.h.

#define OPT__DRY_RUN (   var)    OPT_BOOLEAN('n', "dry-run", (var), "dry run")

Definition at line 185 of file parse-options.h.

#define OPT__QUIET (   var)    OPT_BOOLEAN('q', "quiet", (var), "be quiet")

Definition at line 179 of file parse-options.h.

#define OPT__VERBOSE (   var)    OPT_BOOLEAN('v', "verbose", (var), "be verbose")

Definition at line 178 of file parse-options.h.

#define OPT__VERBOSITY (   var)
Value:
{ OPTION_CALLBACK, 'v', "verbose", (var), NULL, "be more verbose", \
{ OPTION_CALLBACK, 'q', "quiet", (var), NULL, "be more quiet", \

Definition at line 180 of file parse-options.h.

#define OPT_ARGUMENT (   l,
  h 
)    { .type = OPTION_ARGUMENT, .long_name = (l), .help = (h) }

Definition at line 102 of file parse-options.h.

#define OPT_BIT (   s,
  l,
  v,
  h,
  b 
)    { .type = OPTION_BIT, .short_name = (s), .long_name = (l), .value = check_vtype(v, int *), .help = (h), .defval = (b) }

Definition at line 104 of file parse-options.h.

#define OPT_BOOLEAN (   s,
  l,
  v,
  h 
)    { .type = OPTION_BOOLEAN, .short_name = (s), .long_name = (l), .value = check_vtype(v, bool *), .help = (h) }

Definition at line 105 of file parse-options.h.

#define OPT_CALLBACK (   s,
  l,
  v,
  a,
  h,
  f 
)    { .type = OPTION_CALLBACK, .short_name = (s), .long_name = (l), .value = (v), (a), .help = (h), .callback = (f) }

Definition at line 116 of file parse-options.h.

#define OPT_CALLBACK_DEFAULT (   s,
  l,
  v,
  a,
  h,
  f,
  d 
)    { .type = OPTION_CALLBACK, .short_name = (s), .long_name = (l), .value = (v), (a), .help = (h), .callback = (f), .defval = (intptr_t)d, .flags = PARSE_OPT_LASTARG_DEFAULT }

Definition at line 120 of file parse-options.h.

#define OPT_CALLBACK_DEFAULT_NOOPT (   s,
  l,
  v,
  a,
  h,
  f,
  d 
)
Value:
{ .type = OPTION_CALLBACK, .short_name = (s), .long_name = (l),\
.value = (v), (a), .help = (h), .callback = (f), .defval = (intptr_t)d,\

Definition at line 122 of file parse-options.h.

#define OPT_CALLBACK_NOOPT (   s,
  l,
  v,
  a,
  h,
  f 
)    { .type = OPTION_CALLBACK, .short_name = (s), .long_name = (l), .value = (v), (a), .help = (h), .callback = (f), .flags = PARSE_OPT_NOARG }

Definition at line 118 of file parse-options.h.

#define OPT_DATE (   s,
  l,
  v,
  h 
)    { .type = OPTION_CALLBACK, .short_name = (s), .long_name = (l), .value = (v), .argh = "time", .help = (h), .callback = parse_opt_approxidate_cb }

Definition at line 114 of file parse-options.h.

#define OPT_END ( )    { .type = OPTION_END }

Definition at line 101 of file parse-options.h.

#define OPT_GROUP (   h)    { .type = OPTION_GROUP, .help = (h) }

Definition at line 103 of file parse-options.h.

#define OPT_INCR (   s,
  l,
  v,
  h 
)    { .type = OPTION_INCR, .short_name = (s), .long_name = (l), .value = check_vtype(v, int *), .help = (h) }

Definition at line 106 of file parse-options.h.

#define OPT_INTEGER (   s,
  l,
  v,
  h 
)    { .type = OPTION_INTEGER, .short_name = (s), .long_name = (l), .value = check_vtype(v, int *), .help = (h) }

Definition at line 109 of file parse-options.h.

#define OPT_LONG (   s,
  l,
  v,
  h 
)    { .type = OPTION_LONG, .short_name = (s), .long_name = (l), .value = check_vtype(v, long *), .help = (h) }

Definition at line 111 of file parse-options.h.

#define OPT_SET_PTR (   s,
  l,
  v,
  h,
  p 
)    { .type = OPTION_SET_PTR, .short_name = (s), .long_name = (l), .value = (v), .help = (h), .defval = (p) }

Definition at line 108 of file parse-options.h.

#define OPT_SET_UINT (   s,
  l,
  v,
  h,
  i 
)    { .type = OPTION_SET_UINT, .short_name = (s), .long_name = (l), .value = check_vtype(v, unsigned int *), .help = (h), .defval = (i) }

Definition at line 107 of file parse-options.h.

#define OPT_STRING (   s,
  l,
  v,
  a,
  h 
)    { .type = OPTION_STRING, .short_name = (s), .long_name = (l), .value = check_vtype(v, const char **), (a), .help = (h) }

Definition at line 113 of file parse-options.h.

#define OPT_U64 (   s,
  l,
  v,
  h 
)    { .type = OPTION_U64, .short_name = (s), .long_name = (l), .value = check_vtype(v, u64 *), .help = (h) }

Definition at line 112 of file parse-options.h.

#define OPT_UINTEGER (   s,
  l,
  v,
  h 
)    { .type = OPTION_UINTEGER, .short_name = (s), .long_name = (l), .value = check_vtype(v, unsigned int *), .help = (h) }

Definition at line 110 of file parse-options.h.

Typedef Documentation

typedef int parse_opt_cb(const struct option *, const char *arg, int unset)

Definition at line 44 of file parse-options.h.

Enumeration Type Documentation

anonymous enum
Enumerator:
PARSE_OPT_HELP 
PARSE_OPT_DONE 
PARSE_OPT_LIST 
PARSE_OPT_UNKNOWN 

Definition at line 140 of file parse-options.h.

Enumerator:
PARSE_OPT_KEEP_DASHDASH 
PARSE_OPT_STOP_AT_NON_OPTION 
PARSE_OPT_KEEP_ARGV0 
PARSE_OPT_KEEP_UNKNOWN 
PARSE_OPT_NO_INTERNAL_HELP 

Definition at line 27 of file parse-options.h.

Enumerator:
PARSE_OPT_OPTARG 
PARSE_OPT_NOARG 
PARSE_OPT_NONEG 
PARSE_OPT_HIDDEN 
PARSE_OPT_LASTARG_DEFAULT 

Definition at line 35 of file parse-options.h.

Enumerator:
OPTION_END 
OPTION_ARGUMENT 
OPTION_GROUP 
OPTION_BIT 
OPTION_BOOLEAN 
OPTION_INCR 
OPTION_SET_UINT 
OPTION_SET_PTR 
OPTION_STRING 
OPTION_INTEGER 
OPTION_LONG 
OPTION_CALLBACK 
OPTION_U64 
OPTION_UINTEGER 

Definition at line 7 of file parse-options.h.

Function Documentation

int parse_opt_abbrev_cb ( const struct option ,
const char ,
int   
)
int parse_opt_approxidate_cb ( const struct option ,
const char ,
int   
)
int parse_opt_verbosity_cb ( const struct option ,
const char ,
int   
)
int parse_options ( int  argc,
const char **  argv,
const struct option options,
const char *const  usagestr[],
int  flags 
)

Definition at line 414 of file parse-options.c.

int parse_options_end ( struct parse_opt_ctx_t ctx)

Definition at line 407 of file parse-options.c.

const char* parse_options_fix_filename ( const char prefix,
const char file 
)
void parse_options_start ( struct parse_opt_ctx_t ctx,
int  argc,
const char **  argv,
int  flags 
)

Definition at line 303 of file parse-options.c.

int parse_options_step ( struct parse_opt_ctx_t ctx,
const struct option options,
const char *const  usagestr[] 
)

Definition at line 320 of file parse-options.c.

int parse_options_usage ( const char *const usagestr,
const struct option opts 
)

Definition at line 561 of file parse-options.c.

NORETURN void usage_with_options ( const char *const usagestr,
const struct option options 
)

Definition at line 553 of file parse-options.c.