On Wed, Nov 07, 2012 at 02:16:52PM -0500, Paul Fox wrote: > 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@xxxxxxxxxxxxxxxxxxxx> > > 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html