Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 137 lines (117 sloc) 2.749 kb
0687628 divanorama Reduce parse-options.o dependencies
divanorama authored
1 #include "git-compat-util.h"
2 #include "parse-options.h"
3 #include "cache.h"
4 #include "commit.h"
5 #include "color.h"
6 #include "string-list.h"
7
8 /*----- some often used options -----*/
9
10 int parse_opt_abbrev_cb(const struct option *opt, const char *arg, int unset)
11 {
12 int v;
13
14 if (!arg) {
15 v = unset ? 0 : DEFAULT_ABBREV;
16 } else {
17 v = strtol(arg, (char **)&arg, 10);
18 if (*arg)
19 return opterror(opt, "expects a numerical value", 0);
20 if (v && v < MINIMUM_ABBREV)
21 v = MINIMUM_ABBREV;
22 else if (v > 40)
23 v = 40;
24 }
25 *(int *)(opt->value) = v;
26 return 0;
27 }
28
29 int parse_opt_approxidate_cb(const struct option *opt, const char *arg,
30 int unset)
31 {
32 *(unsigned long *)(opt->value) = approxidate(arg);
33 return 0;
34 }
35
27ec394 Junio C Hamano prune: introduce OPT_EXPIRY_DATE() and use it
gitster authored
36 int parse_opt_expiry_date_cb(const struct option *opt, const char *arg,
37 int unset)
38 {
39 return parse_expiry_date(arg, (unsigned long *)opt->value);
40 }
41
0687628 divanorama Reduce parse-options.o dependencies
divanorama authored
42 int parse_opt_color_flag_cb(const struct option *opt, const char *arg,
43 int unset)
44 {
45 int value;
46
47 if (!arg)
48 arg = unset ? "never" : (const char *)opt->defval;
f946b46 Junio C Hamano Merge branch 'jk/color-and-pager'
gitster authored
49 value = git_config_colorbool(NULL, arg);
0687628 divanorama Reduce parse-options.o dependencies
divanorama authored
50 if (value < 0)
51 return opterror(opt,
52 "expects \"always\", \"auto\", or \"never\"", 0);
53 *(int *)opt->value = value;
54 return 0;
55 }
56
57 int parse_opt_verbosity_cb(const struct option *opt, const char *arg,
58 int unset)
59 {
60 int *target = opt->value;
61
62 if (unset)
63 /* --no-quiet, --no-verbose */
64 *target = 0;
65 else if (opt->short_name == 'v') {
66 if (*target >= 0)
67 (*target)++;
68 else
69 *target = 1;
70 } else {
71 if (*target <= 0)
72 (*target)--;
73 else
74 *target = -1;
75 }
76 return 0;
77 }
78
79 int parse_opt_with_commit(const struct option *opt, const char *arg, int unset)
80 {
81 unsigned char sha1[20];
82 struct commit *commit;
83
84 if (!arg)
85 return -1;
86 if (get_sha1(arg, sha1))
87 return error("malformed object name %s", arg);
88 commit = lookup_commit_reference(sha1);
89 if (!commit)
90 return error("no such commit %s", arg);
91 commit_list_insert(commit, opt->value);
92 return 0;
93 }
94
95 int parse_opt_tertiary(const struct option *opt, const char *arg, int unset)
96 {
97 int *target = opt->value;
98 *target = unset ? 2 : 1;
99 return 0;
100 }
101
102 int parse_options_concat(struct option *dst, size_t dst_size, struct option *src)
103 {
104 int i, j;
105
106 for (i = 0; i < dst_size; i++)
107 if (dst[i].type == OPTION_END)
108 break;
109 for (j = 0; i < dst_size; i++, j++) {
110 dst[i] = src[j];
111 if (src[j].type == OPTION_END)
112 return 0;
113 }
114 return -1;
115 }
116
117 int parse_opt_string_list(const struct option *opt, const char *arg, int unset)
118 {
119 struct string_list *v = opt->value;
120
121 if (unset) {
122 string_list_clear(v, 0);
123 return 0;
124 }
125
126 if (!arg)
127 return -1;
128
129 string_list_append(v, xstrdup(arg));
130 return 0;
131 }
6acec03 parseopt: add OPT_NOOP_NOARG
René Scharfe authored
132
133 int parse_opt_noop_cb(const struct option *opt, const char *arg, int unset)
134 {
135 return 0;
136 }
Something went wrong with that request. Please try again.