diff --git a/add-interactive.c b/add-interactive.c index f395d54c08..034c1dc02f 100644 --- a/add-interactive.c +++ b/add-interactive.c @@ -917,15 +917,18 @@ static int run_patch(struct add_i_state *s, const struct pathspec *ps, count = list_and_choose(s, files, opts); if (count >= 0) { struct argv_array args = ARGV_ARRAY_INIT; + struct pathspec ps_selected = { 0 }; - argv_array_pushl(&args, "git", "add--interactive", "--patch", - "--", NULL); for (i = 0; i < files->items.nr; i++) if (files->selected[i]) argv_array_push(&args, files->items.items[i].string); - res = run_command_v_opt(args.argv, 0); + parse_pathspec(&ps_selected, + PATHSPEC_ALL_MAGIC & ~PATHSPEC_LITERAL, + PATHSPEC_LITERAL_PATH, "", args.argv); + res = run_add_p(s->r, &ps_selected); argv_array_clear(&args); + clear_pathspec(&ps_selected); } return res;