Re: [PATCH 5/5] launch_editor: propagate SIGINT from editor to git
- From
Jeff King <peff@peff.net>
- Date
- Nov 30, 2012, 20:24 UTC
- Message-ID
- <20121130202435.GA7933@sigill.intra.peff.net>
- In-Reply-To
- <50A00116.8060604@kdbg.org>
On Sun, Nov 11, 2012 at 08:48:38PM +0100, Johannes Sixt wrote:
Show 18 quoted lines
> Am 11.11.2012 17:57, schrieb Jeff King: > > @@ -51,6 +51,8 @@ int launch_editor(const char *path, struct strbuf *buffer, const char *const *en > > sigchain_push(SIGINT, SIG_IGN); > > ret = finish_command(&p); > > sigchain_pop(SIGINT); > > + if (WIFSIGNALED(ret) && WTERMSIG(ret) == SIGINT) > > + raise(SIGINT); > > The return value of finish_command() is already a digested version of > waitpid's status value. According to > Documentation/technical/api-run-command.txt: > > . If the program terminated due to a signal, then the return value is > the signal number - 128, ... > > the correct condition would be > > if (ret == SIGINT - 128)
Yeah, that is the same thing as WTERMSIG (which uses "ret & 0x7f") for the range of -127..-1. I do not mind changing it to match run-command's stated output, but I am curious whether there are systems where WTERMSIG is not defined in the same way, and the code would break.
-Peff