Going back to the introduction of the env parameter for the editor in 8babab95af (builtin-commit.c: export GIT_INDEX_FILE for launch_editor as well., 2007-11-26), we pass a constant array of strings: as the surrounding APIs evolved to use strvecs, the editor code did not. There is only one caller of all 3 editor APIs that does not pass a NULL environment (the same caller for which this parameter was added), and it already has a strvec available to use. Signed-off-by: D. Ben Knoble <ben.knoble+github@xxxxxxxxx> Helped-by: Johannes Schindelin <johannes.schindelin@xxxxxx> --- builtin/commit.c | 2 +- editor.c | 10 +++++----- editor.h | 7 ++++--- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/builtin/commit.c b/builtin/commit.c index 66bd91fd52..fdda1d1df0 100644 --- a/builtin/commit.c +++ b/builtin/commit.c @@ -1100,7 +1100,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix, struct strvec env = STRVEC_INIT; strvec_pushf(&env, "GIT_INDEX_FILE=%s", index_file); - if (launch_editor(git_path_commit_editmsg(), NULL, env.v)) { + if (launch_editor(git_path_commit_editmsg(), NULL, &env)) { fprintf(stderr, _("Please supply the message using either -m or -F option.\n")); exit(1); diff --git a/editor.c b/editor.c index b79d97b0e7..5bc9d39178 100644 --- a/editor.c +++ b/editor.c @@ -58,7 +58,7 @@ const char *git_sequence_editor(void) } static int launch_specified_editor(const char *editor, const char *path, - struct strbuf *buffer, const char *const *env) + struct strbuf *buffer, const struct strvec *env) { if (!editor) return error("Terminal is dumb, but EDITOR unset"); @@ -89,7 +89,7 @@ static int launch_specified_editor(const char *editor, const char *path, strvec_pushl(&p.args, editor, realpath.buf, NULL); if (env) - strvec_pushv(&p.env, (const char **)env); + strvec_pushv(&p.env, env->v); p.use_shell = 1; p.trace2_child_class = "editor"; if (start_command(&p) < 0) { @@ -124,20 +124,20 @@ static int launch_specified_editor(const char *editor, const char *path, return 0; } -int launch_editor(const char *path, struct strbuf *buffer, const char *const *env) +int launch_editor(const char *path, struct strbuf *buffer, const struct strvec *env) { return launch_specified_editor(git_editor(), path, buffer, env); } int launch_sequence_editor(const char *path, struct strbuf *buffer, - const char *const *env) + const struct strvec *env) { return launch_specified_editor(git_sequence_editor(), path, buffer, env); } int strbuf_edit_interactively(struct repository *r, struct strbuf *buffer, const char *path, - const char *const *env) + const struct strvec *env) { struct strbuf sb = STRBUF_INIT; int fd, res = 0; diff --git a/editor.h b/editor.h index f1c41df378..627e992f4d 100644 --- a/editor.h +++ b/editor.h @@ -3,6 +3,7 @@ struct repository; struct strbuf; +struct strvec; const char *git_editor(void); const char *git_sequence_editor(void); @@ -16,10 +17,10 @@ int is_terminal_dumb(void); * file's contents are not read into the buffer upon completion. */ int launch_editor(const char *path, struct strbuf *buffer, - const char *const *env); + const struct strvec *env); int launch_sequence_editor(const char *path, struct strbuf *buffer, - const char *const *env); + const struct strvec *env); /* * In contrast to `launch_editor()`, this function writes out the contents @@ -30,6 +31,6 @@ int launch_sequence_editor(const char *path, struct strbuf *buffer, * If `path` is relative, it refers to a file in the `.git` directory. */ int strbuf_edit_interactively(struct repository *r, struct strbuf *buffer, - const char *path, const char *const *env); + const char *path, const struct strvec *env); #endif -- 2.48.1