diff.c: move ws-error-highlight parsing helpers up

These need to be usable from git_diff_ui_config() code to help parsing a configuration variable, so move them up. Signed-off-by: Junio C Hamano <gitster@pobox.com>

Junio C Hamano committed Oct 4, 2016 at 15:09 UTC 0b4b42e7fe1b507fb387c18d9a2748768359bf5d
1 file changed +37 -37
diff.c
+37 -37
@@ -163,6 +163,43 @@ long parse_algorithm_value(const char *value)
163 return -1;
164 }
165
166 +static int parse_one_token(const char **arg, const char *token)
167 +{
168 + const char *rest;
169 + if (skip_prefix(*arg, token, &rest) && (!*rest || *rest == ',')) {
170 + *arg = rest;
171 + return 1;
172 + }
173 + return 0;
174 +}
175 +
176 +static int parse_ws_error_highlight(const char *arg)
177 +{
178 + const char *orig_arg = arg;
179 + unsigned val = 0;
180 +
181 + while (*arg) {
182 + if (parse_one_token(&arg, "none"))
183 + val = 0;
184 + else if (parse_one_token(&arg, "default"))
185 + val = WSEH_NEW;
186 + else if (parse_one_token(&arg, "all"))
187 + val = WSEH_NEW | WSEH_OLD | WSEH_CONTEXT;
188 + else if (parse_one_token(&arg, "new"))
189 + val |= WSEH_NEW;
190 + else if (parse_one_token(&arg, "old"))
191 + val |= WSEH_OLD;
192 + else if (parse_one_token(&arg, "context"))
193 + val |= WSEH_CONTEXT;
194 + else {
195 + return -1 - (int)(arg - orig_arg);
196 + }
197 + if (*arg)
198 + arg++;
199 + }
200 + return val;
201 +}
202 +
203 /*
204 * These are to give UI layer defaults.
205 * The core-level commands such as git-diff-files should
@@ -3656,43 +3693,6 @@ static void enable_patch_output(int *fmt) {
3693 *fmt |= DIFF_FORMAT_PATCH;
3694 }
3695
3659 -static int parse_one_token(const char **arg, const char *token)
3660 -{
3661 - const char *rest;
3662 - if (skip_prefix(*arg, token, &rest) && (!*rest || *rest == ',')) {
3663 - *arg = rest;
3664 - return 1;
3665 - }
3666 - return 0;
3667 -}
3668 -
3669 -static int parse_ws_error_highlight(const char *arg)
3670 -{
3671 - const char *orig_arg = arg;
3672 - unsigned val = 0;
3673 -
3674 - while (*arg) {
3675 - if (parse_one_token(&arg, "none"))
3676 - val = 0;
3677 - else if (parse_one_token(&arg, "default"))
3678 - val = WSEH_NEW;
3679 - else if (parse_one_token(&arg, "all"))
3680 - val = WSEH_NEW | WSEH_OLD | WSEH_CONTEXT;
3681 - else if (parse_one_token(&arg, "new"))
3682 - val |= WSEH_NEW;
3683 - else if (parse_one_token(&arg, "old"))
3684 - val |= WSEH_OLD;
3685 - else if (parse_one_token(&arg, "context"))
3686 - val |= WSEH_CONTEXT;
3687 - else {
3688 - return -1 - (int)(arg - orig_arg);
3689 - }
3690 - if (*arg)
3691 - arg++;
3692 - }
3693 - return val;
3694 -}
3695 -
3696 static int parse_ws_error_highlight_opt(struct diff_options *opt, const char *arg)
3697 {
3698 int val = parse_ws_error_highlight(arg);