From: Tanushree Tumane <tanushreetum...@gmail.com>

introduce `decide_next()` helper function from `bisect_next_check()`
for better and clear understanding.

convert `*...warning` char pointers to `...warning[]`char arrays, as
char [] only creates char array while char * creates both char array
and a pointer to that char array.

Mentored-by: Christian Couder <chrisc...@tuxfamily.org>
Signed-off-by: Tanushree Tumane <tanushreetum...@gmail.com>
---
 builtin/bisect--helper.c | 66 +++++++++++++++++++++-------------------
 1 file changed, 34 insertions(+), 32 deletions(-)

diff --git a/builtin/bisect--helper.c b/builtin/bisect--helper.c
index 5093e55273..f441ea85ff 100644
--- a/builtin/bisect--helper.c
+++ b/builtin/bisect--helper.c
@@ -282,35 +282,23 @@ static int mark_good(const char *refname, const struct 
object_id *oid,
        return 1;
 }
 
-static const char *need_bad_and_good_revision_warning =
+static const char need_bad_and_good_revision_warning[] =
        N_("You need to give me at least one %s and %s revision.\n"
           "You can use \"git bisect %s\" and \"git bisect %s\" for that.");
 
-static const char *need_bisect_start_warning =
+static const char need_bisect_start_warning[] =
        N_("You need to start by \"git bisect start\".\n"
           "You then need to give me at least one %s and %s revision.\n"
           "You can use \"git bisect %s\" and \"git bisect %s\" for that.");
 
-static int bisect_next_check(const struct bisect_terms *terms,
-                            const char *current_term)
+static int decide_next(const struct bisect_terms *terms,
+                      const char *current_term, int missing_good,
+                      int missing_bad)
 {
-       int missing_good = 1, missing_bad = 1, res = 0;
-       const char *bad_ref = xstrfmt("refs/bisect/%s", terms->term_bad);
-       const char *good_glob = xstrfmt("%s-*", terms->term_good);
-
-       if (ref_exists(bad_ref))
-               missing_bad = 0;
-
-       for_each_glob_ref_in(mark_good, good_glob, "refs/bisect/",
-                            (void *) &missing_good);
-
        if (!missing_good && !missing_bad)
-               goto finish;
-
-       if (!current_term) {
-               res = -1;
-               goto finish;
-       }
+               return 0;
+       if (!current_term)
+               return -1;
 
        if (missing_good && !missing_bad &&
            !strcmp(current_term, terms->term_good)) {
@@ -321,7 +309,7 @@ static int bisect_next_check(const struct bisect_terms 
*terms,
                 */
                warning(_("bisecting only with a %s commit"), terms->term_bad);
                if (!isatty(0))
-                       goto finish;
+                       return 0;
                /*
                 * TRANSLATORS: Make sure to include [Y] and [n] in your
                 * translation. The program will only accept English input
@@ -329,21 +317,35 @@ static int bisect_next_check(const struct bisect_terms 
*terms,
                 */
                yesno = git_prompt(_("Are you sure [Y/n]? "), PROMPT_ECHO);
                if (starts_with(yesno, "N") || starts_with(yesno, "n"))
-                       res = -1;
-               goto finish;
-       }
-       if (!is_empty_or_missing_file(git_path_bisect_start())) {
-               res = error(_(need_bad_and_good_revision_warning),
-                              vocab_bad, vocab_good, vocab_bad, vocab_good);
-       } else {
-               res = error(_(need_bisect_start_warning),
-                              vocab_good, vocab_bad, vocab_good, vocab_bad);
+                       return -1;
+               return 0;
        }
 
-finish:
+       if (!is_empty_or_missing_file(git_path_bisect_start()))
+               return error(_(need_bad_and_good_revision_warning),
+                            vocab_bad, vocab_good, vocab_bad, vocab_good);
+       else
+               return error(_(need_bisect_start_warning),
+                            vocab_good, vocab_bad, vocab_good, vocab_bad);
+}
+
+static int bisect_next_check(const struct bisect_terms *terms,
+                            const char *current_term)
+{
+       int missing_good = 1, missing_bad = 1;
+       const char *bad_ref = xstrfmt("refs/bisect/%s", terms->term_bad);
+       const char *good_glob = xstrfmt("%s-*", terms->term_good);
+
+       if (ref_exists(bad_ref))
+               missing_bad = 0;
+
+       for_each_glob_ref_in(mark_good, good_glob, "refs/bisect/",
+                            (void *) &missing_good);
+
        free((void *) good_glob);
        free((void *) bad_ref);
-       return res;
+
+       return decide_next(terms, current_term, missing_good, missing_bad);
 }
 
 static int get_terms(struct bisect_terms *terms)
-- 
gitgitgadget

Reply via email to