diff-parseopt: convert --[no-]abbrev
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Sun, 24 Mar 2019 08:20:04 +0000 (15:20 +0700)
committerJunio C Hamano <gitster@pobox.com>
Sun, 24 Mar 2019 13:21:22 +0000 (22:21 +0900)
OPT__ABBREV() has the same behavior as the deleted code with one
difference: it does check for valid number and error out if not. And the
'40' change is self explanatory.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
diff.c
parse-options-cb.c
diff --git a/diff.c b/diff.c
index 47146c33f5ad2f234896aa53ed5487f2a122085c..8d387280a4a63171361ae4f3c1294c7e5997d35e 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -5254,6 +5254,7 @@ static void prep_parse_options(struct diff_options *options)
                OPT_SET_INT('z', NULL, &options->line_termination,
                            N_("do not munge pathnames and use NULs as output field terminators in --raw or --numstat"),
                            0),
+               OPT__ABBREV(&options->abbrev),
                OPT_CALLBACK_F(0, "output-indicator-new",
                               &options->output_indicators[OUTPUT_INDICATOR_NEW],
                               N_("<char>"),
@@ -5448,17 +5449,6 @@ int diff_opt_parse(struct diff_options *options,
        }
 
        /* misc options */
-       else if (!strcmp(arg, "--no-abbrev"))
-               options->abbrev = 0;
-       else if (!strcmp(arg, "--abbrev"))
-               options->abbrev = DEFAULT_ABBREV;
-       else if (skip_prefix(arg, "--abbrev=", &arg)) {
-               options->abbrev = strtoul(arg, NULL, 10);
-               if (options->abbrev < MINIMUM_ABBREV)
-                       options->abbrev = MINIMUM_ABBREV;
-               else if (the_hash_algo->hexsz < options->abbrev)
-                       options->abbrev = the_hash_algo->hexsz;
-       }
        else if ((argcount = parse_long_opt("src-prefix", av, &optarg))) {
                options->a_prefix = optarg;
                return argcount;
index 2733393546d4d4dd9a55c5934531398f4a827ead..6e2e8d6273a2b3c35248a956f77a19925ded3e7d 100644 (file)
@@ -22,8 +22,8 @@ int parse_opt_abbrev_cb(const struct option *opt, const char *arg, int unset)
                                     opt->long_name);
                if (v && v < MINIMUM_ABBREV)
                        v = MINIMUM_ABBREV;
-               else if (v > 40)
-                       v = 40;
+               else if (v > the_hash_algo->hexsz)
+                       v = the_hash_algo->hexsz;
        }
        *(int *)(opt->value) = v;
        return 0;