parse-opt: Export a non NORETURN usage dumper.
Signed-off-by: Pierre Habouzit <madcoder@debian.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
7e7bbcb4b3
commit
ee68b87a62
@ -257,8 +257,8 @@ int parse_options_end(struct parse_opt_ctx_t *ctx)
|
|||||||
return ctx->cpidx + ctx->argc;
|
return ctx->cpidx + ctx->argc;
|
||||||
}
|
}
|
||||||
|
|
||||||
static NORETURN void usage_with_options_internal(const char * const *,
|
static int usage_with_options_internal(const char * const *,
|
||||||
const struct option *, int);
|
const struct option *, int, int);
|
||||||
|
|
||||||
int parse_options(int argc, const char **argv, const struct option *options,
|
int parse_options(int argc, const char **argv, const struct option *options,
|
||||||
const char * const usagestr[], int flags)
|
const char * const usagestr[], int flags)
|
||||||
@ -302,7 +302,7 @@ int parse_options(int argc, const char **argv, const struct option *options,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(arg + 2, "help-all"))
|
if (!strcmp(arg + 2, "help-all"))
|
||||||
usage_with_options_internal(usagestr, options, 1);
|
usage_with_options_internal(usagestr, options, 1, 1);
|
||||||
if (!strcmp(arg + 2, "help"))
|
if (!strcmp(arg + 2, "help"))
|
||||||
usage_with_options(usagestr, options);
|
usage_with_options(usagestr, options);
|
||||||
if (parse_long_opt(&ctx, arg + 2, options))
|
if (parse_long_opt(&ctx, arg + 2, options))
|
||||||
@ -315,8 +315,8 @@ int parse_options(int argc, const char **argv, const struct option *options,
|
|||||||
#define USAGE_OPTS_WIDTH 24
|
#define USAGE_OPTS_WIDTH 24
|
||||||
#define USAGE_GAP 2
|
#define USAGE_GAP 2
|
||||||
|
|
||||||
void usage_with_options_internal(const char * const *usagestr,
|
int usage_with_options_internal(const char * const *usagestr,
|
||||||
const struct option *opts, int full)
|
const struct option *opts, int full, int do_exit)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "usage: %s\n", *usagestr++);
|
fprintf(stderr, "usage: %s\n", *usagestr++);
|
||||||
while (*usagestr && **usagestr)
|
while (*usagestr && **usagestr)
|
||||||
@ -401,15 +401,25 @@ void usage_with_options_internal(const char * const *usagestr,
|
|||||||
}
|
}
|
||||||
fputc('\n', stderr);
|
fputc('\n', stderr);
|
||||||
|
|
||||||
exit(129);
|
if (do_exit)
|
||||||
|
exit(129);
|
||||||
|
return PARSE_OPT_HELP;
|
||||||
}
|
}
|
||||||
|
|
||||||
void usage_with_options(const char * const *usagestr,
|
void usage_with_options(const char * const *usagestr,
|
||||||
const struct option *opts)
|
const struct option *opts)
|
||||||
{
|
{
|
||||||
usage_with_options_internal(usagestr, opts, 0);
|
usage_with_options_internal(usagestr, opts, 0, 1);
|
||||||
|
exit(129); /* make gcc happy */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int parse_options_usage(const char * const *usagestr,
|
||||||
|
const struct option *opts)
|
||||||
|
{
|
||||||
|
return usage_with_options_internal(usagestr, opts, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*----- some often used options -----*/
|
/*----- some often used options -----*/
|
||||||
#include "cache.h"
|
#include "cache.h"
|
||||||
|
|
||||||
|
@ -113,6 +113,12 @@ extern NORETURN void usage_with_options(const char * const *usagestr,
|
|||||||
|
|
||||||
/*----- incremantal advanced APIs -----*/
|
/*----- incremantal advanced APIs -----*/
|
||||||
|
|
||||||
|
enum {
|
||||||
|
PARSE_OPT_HELP = -1,
|
||||||
|
PARSE_OPT_DONE,
|
||||||
|
PARSE_OPT_UNKNOWN,
|
||||||
|
};
|
||||||
|
|
||||||
struct parse_opt_ctx_t {
|
struct parse_opt_ctx_t {
|
||||||
const char **argv;
|
const char **argv;
|
||||||
const char **out;
|
const char **out;
|
||||||
@ -121,6 +127,9 @@ struct parse_opt_ctx_t {
|
|||||||
int flags;
|
int flags;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern int parse_options_usage(const char * const *usagestr,
|
||||||
|
const struct option *opts);
|
||||||
|
|
||||||
extern void parse_options_start(struct parse_opt_ctx_t *ctx,
|
extern void parse_options_start(struct parse_opt_ctx_t *ctx,
|
||||||
int argc, const char **argv, int flags);
|
int argc, const char **argv, int flags);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user