[PATCH v2 9/9] built-in add -i: offer the `quit` command
- From
Johannes Schindelin via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Nov 29, 2019, 21:11 UTC
- Message-ID
- <5ba6cd31ab5bba6828f4e195ebd17de9c0758ba7.1575061909.git.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.171.v2.git.1575061909.gitgitgadget@gmail.com>
From: Johannes Schindelin <johannes.schindelin@gmx.de>
We do not really want to `exit()` here, of course, as this is safely libified code.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> --- 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