Re: [PATCH/RFC] launch_editor: ignore SIGINT while the editor has control
- From
- Krzysztof Mazur <krzysiek@podlesie.net>
- Date
- Nov 7, 2012, 22:00 UTC
- Message-ID
- <20121107220027.GA17463@shrek.podlesie.net>
- In-Reply-To
- <20121107191652.842C52E8089@grass.foxharp.boston.ma.us>
On Wed, Nov 07, 2012 at 02:16:52PM -0500, Paul Fox wrote:
Show 28 quoted lines
> the user's editor likely catches SIGINT (ctrl-C). but if the user
> spawns a command from the editor and uses ctrl-C to kill that command,
> the SIGINT will likely also kill git itself. (depending on the
> editor, this can leave the terminal in an unusable state.)
>
> Signed-off-by: Paul Fox <pgf@foxharp.boston.ma.us>
>
> editor.c | 6 +++++-
> 1 files changed, 5 insertions(+), 1 deletions(-)
>
> diff --git a/editor.c b/editor.c
> index d834003..775f22d 100644
> --- a/editor.c
> +++ b/editor.c
> @@ -37,8 +37,12 @@ int launch_editor(const char *path, struct strbuf *buffer, const char *const *en
>
> if (strcmp(editor, ":")) {
> const char *args[] = { editor, path, NULL };
> + int ret;
>
> - if (run_command_v_opt_cd_env(args, RUN_USING_SHELL, NULL, env))
> + sigchain_push(SIGINT, SIG_IGN);
> + ret = run_command_v_opt_cd_env(args, RUN_USING_SHELL, NULL, env);
> + sigchain_pop(SIGINT);
> + if (ret)
> return error("There was a problem with the editor '%s'.",
> editor);
> }Looks and works good, except for warnings:
editor.c: In function 'launch_editor': editor.c:42:3: warning: implicit declaration of function 'sigchain_push' [-Wimplicit-function-declaration] editor.c:44:3: warning: implicit declaration of function 'sigchain_pop' [-Wimplicit-function-declaration]
"sigchain.h" should be included, something like:
diff --git a/editor.c b/editor.c index 775f22d..3ca361b 100644 --- a/editor.c +++ b/editor.c @@ -1,6 +1,7 @@ #include "cache.h" #include "strbuf.h" #include "run-command.h" +#include "sigchain.h" #ifndef DEFAULT_EDITOR #define DEFAULT_EDITOR "vi" Krzysiek