summaryrefslogtreecommitdiffstats
path: root/parse-options.c
diff options
context:
space:
mode:
Diffstat (limited to 'parse-options.c')
-rw-r--r--parse-options.c45
1 files changed, 43 insertions, 2 deletions
diff --git a/parse-options.c b/parse-options.c
index f5594114ed..8546d8526f 100644
--- a/parse-options.c
+++ b/parse-options.c
@@ -2,6 +2,10 @@
#include "parse-options.h"
#include "cache.h"
#include "commit.h"
+#include "color.h"
+
+static int parse_options_usage(const char * const *usagestr,
+ const struct option *opts);
#define OPT_SHORT 1
#define OPT_UNSET 2
@@ -560,8 +564,8 @@ void usage_msg_opt(const char *msg,
usage_with_options(usagestr, options);
}
-int parse_options_usage(const char * const *usagestr,
- const struct option *opts)
+static int parse_options_usage(const char * const *usagestr,
+ const struct option *opts)
{
return usage_with_options_internal(usagestr, opts, 0);
}
@@ -596,6 +600,21 @@ int parse_opt_approxidate_cb(const struct option *opt, const char *arg,
return 0;
}
+int parse_opt_color_flag_cb(const struct option *opt, const char *arg,
+ int unset)
+{
+ int value;
+
+ if (!arg)
+ arg = unset ? "never" : (const char *)opt->defval;
+ value = git_config_colorbool(NULL, arg, -1);
+ if (value < 0)
+ return opterror(opt,
+ "expects \"always\", \"auto\", or \"never\"", 0);
+ *(int *)opt->value = value;
+ return 0;
+}
+
int parse_opt_verbosity_cb(const struct option *opt, const char *arg,
int unset)
{
@@ -633,3 +652,25 @@ int parse_opt_with_commit(const struct option *opt, const char *arg, int unset)
commit_list_insert(commit, opt->value);
return 0;
}
+
+int parse_opt_tertiary(const struct option *opt, const char *arg, int unset)
+{
+ int *target = opt->value;
+ *target = unset ? 2 : 1;
+ return 0;
+}
+
+int parse_options_concat(struct option *dst, size_t dst_size, struct option *src)
+{
+ int i, j;
+
+ for (i = 0; i < dst_size; i++)
+ if (dst[i].type == OPTION_END)
+ break;
+ for (j = 0; i < dst_size; i++, j++) {
+ dst[i] = src[j];
+ if (src[j].type == OPTION_END)
+ return 0;
+ }
+ return -1;
+}