Browse Source

built-in add -i: offer the `quit` command

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>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Johannes Schindelin 5 years ago committed by Junio C Hamano
parent
commit
2e697ced9d
  1. 16
      add-interactive.c

16
add-interactive.c

@ -1071,6 +1071,7 @@ int run_add_i(struct repository *r, const struct pathspec *ps) @@ -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) @@ -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);

Loading…
Cancel
Save