[PATCH v2 9/9] built-in add -i: offer the `quit` command
From: Johannes Schindelin via GitGitGadget <hidden>
Date: 2019-11-29 21:12:06
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: Johannes Schindelin via GitGitGadget <hidden>
Date: 2019-11-29 21:12:06
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: Johannes Schindelin <redacted> We do not really want to `exit()` here, of course, as this is safely libified code. Signed-off-by: Johannes Schindelin <redacted> --- add-interactive.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/add-interactive.c b/add-interactive.c
index 4d7d44a917..f395d54c08 100644
--- a/add-interactive.c
+++ b/add-interactive.c@@ -1071,6 +1071,7 @@ int run_add_i(struct repository *r, const struct pathspec *ps) { "add untracked", run_add_untracked }, { "patch", run_patch }, { "diff", run_diff }, + { "quit", NULL }, { "help", run_help }, }; struct prefix_item_list commands = PREFIX_ITEM_LIST_INIT;
@@ -1122,17 +1123,22 @@ int run_add_i(struct repository *r, const struct pathspec *ps) res = run_status(&s, ps, &files, &opts); for (;;) { + struct command_item *util; + i = list_and_choose(&s, &commands, &main_loop_opts); - if (i == LIST_AND_CHOOSE_QUIT) { + if (i < 0 || i >= commands.items.nr) + util = NULL; + else + util = commands.items.items[i].util; + + if (i == LIST_AND_CHOOSE_QUIT || (util && !util->command)) { printf(_("Bye.\n")); res = 0; break; } - if (i != LIST_AND_CHOOSE_ERROR) { - struct command_item *util = - commands.items.items[i].util; + + if (util) res = util->command(&s, ps, &files, &opts); - } } prefix_item_list_clear(&files);
--
gitgitgadget