#ifndef PARSE_OPTIONS_H
#define PARSE_OPTIONS_H
#include "gettext.h"
enum parse_opt_type { … };
enum parse_opt_flags { … };
enum parse_opt_option_flags { … };
enum parse_opt_result { … };
struct option;
parse_opt_cb;
struct parse_opt_ctx_t;
parse_opt_ll_cb;
parse_opt_subcommand_fn;
struct option { … };
#define OPT_BIT_F(s, l, v, h, b, f) …
#define OPT_COUNTUP_F(s, l, v, h, f) …
#define OPT_SET_INT_F(s, l, v, h, i, f) …
#define OPT_BOOL_F(s, l, v, h, f) …
#define OPT_CALLBACK_F(s, l, v, a, h, f, cb) …
#define OPT_STRING_F(s, l, v, a, h, f) …
#define OPT_INTEGER_F(s, l, v, h, f) …
#define OPT_END() …
#define OPT_GROUP(h) …
#define OPT_BIT(s, l, v, h, b) …
#define OPT_BITOP(s, l, v, h, set, clear) …
#define OPT_NEGBIT(s, l, v, h, b) …
#define OPT_COUNTUP(s, l, v, h) …
#define OPT_SET_INT(s, l, v, h, i) …
#define OPT_BOOL(s, l, v, h) …
#define OPT_HIDDEN_BOOL(s, l, v, h) …
#define OPT_CMDMODE_F(s, l, v, h, i, f) …
#define OPT_CMDMODE(s, l, v, h, i) …
#define OPT_INTEGER(s, l, v, h) …
#define OPT_MAGNITUDE(s, l, v, h) …
#define OPT_STRING(s, l, v, a, h) …
#define OPT_STRING_LIST(s, l, v, a, h) …
#define OPT_STRVEC(s, l, v, a, h) …
#define OPT_UYN(s, l, v, h) …
#define OPT_EXPIRY_DATE(s, l, v, h) …
#define OPT_CALLBACK(s, l, v, a, h, cb) …
#define OPT_NUMBER_CALLBACK(v, h, cb) …
#define OPT_FILENAME(s, l, v, h) …
#define OPT_COLOR_FLAG(s, l, v, h) …
#define OPT_NOOP_NOARG(s, l) …
#define OPT_ALIAS(s, l, source_long_name) …
#define OPT_SUBCOMMAND_F(l, v, fn, f) …
#define OPT_SUBCOMMAND(l, v, fn) …
int parse_options(int argc, const char **argv, const char *prefix,
const struct option *options,
const char * const usagestr[],
enum parse_opt_flags flags);
NORETURN void usage_with_options(const char * const *usagestr,
const struct option *options);
NORETURN void usage_msg_opt(const char *msg,
const char * const *usagestr,
const struct option *options);
__attribute__((format (printf,1,4)))
void NORETURN usage_msg_optf(const char *fmt,
const char * const *usagestr,
const struct option *options, ...);
void die_for_incompatible_opt4(int opt1, const char *opt1_name,
int opt2, const char *opt2_name,
int opt3, const char *opt3_name,
int opt4, const char *opt4_name);
static inline void die_for_incompatible_opt3(int opt1, const char *opt1_name,
int opt2, const char *opt2_name,
int opt3, const char *opt3_name)
{ … }
#define BUG_ON_OPT_NEG(unset) …
#define BUG_ON_OPT_ARG(arg) …
#define BUG_ON_OPT_NEG_NOARG(unset, arg) …
struct parse_opt_cmdmode_list;
struct parse_opt_ctx_t { … };
void parse_options_start(struct parse_opt_ctx_t *ctx,
int argc, const char **argv, const char *prefix,
const struct option *options,
enum parse_opt_flags flags);
enum parse_opt_result 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);
struct option *parse_options_dup(const struct option *a);
struct option *parse_options_concat(const struct option *a, const struct option *b);
int parse_opt_abbrev_cb(const struct option *, const char *, int);
int parse_opt_expiry_date_cb(const struct option *, const char *, int);
int parse_opt_color_flag_cb(const struct option *, const char *, int);
int parse_opt_verbosity_cb(const struct option *, const char *, int);
int parse_opt_object_name(const struct option *, const char *, int);
int parse_opt_object_id(const struct option *, const char *, int);
int parse_opt_commits(const struct option *, const char *, int);
int parse_opt_commit(const struct option *, const char *, int);
int parse_opt_tertiary(const struct option *, const char *, int);
int parse_opt_string_list(const struct option *, const char *, int);
int parse_opt_strvec(const struct option *, const char *, int);
int parse_opt_noop_cb(const struct option *, const char *, int);
int parse_opt_passthru(const struct option *, const char *, int);
int parse_opt_passthru_argv(const struct option *, const char *, int);
int parse_opt_tracking_mode(const struct option *, const char *, int);
#define OPT__VERBOSE(var, h) …
#define OPT__QUIET(var, h) …
#define OPT__VERBOSITY(var) …
#define OPT__DRY_RUN(var, h) …
#define OPT__FORCE(var, h, f) …
#define OPT__ABBREV(var) …
#define OPT__SUPER_PREFIX(var) …
#define OPT__COLOR(var, h) …
#define OPT_COLUMN(s, l, v, h) …
#define OPT_PASSTHRU(s, l, v, a, h, f) …
#define OPT_PASSTHRU_ARGV(s, l, v, a, h, f) …
#define _OPT_CONTAINS_OR_WITH(l, v, h, f) …
#define OPT_CONTAINS(v, h) …
#define OPT_NO_CONTAINS(v, h) …
#define OPT_WITH(v, h) …
#define OPT_WITHOUT(v, h) …
#define OPT_CLEANUP(v) …
#define OPT_PATHSPEC_FROM_FILE(v) …
#define OPT_PATHSPEC_FILE_NUL(v) …
#define OPT_AUTOSTASH(v) …
#define OPT_IPVERSION(v) …
#endif