mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -04:00
patch 9.1.0028: win32: Ctrl-D cannot be used to close a pipe
Problem: win32: Ctrl-D cannot be used to close a pipe Solution: Properly detect Ctrl-D when reading from a pipe (GuyBrush) Enabling Ctrl-D for gvim pipeline input and apply defensive programming on account of PR #12752 so that once PR 12752 is merged, CTRL-D will keep on working closes: #13849 Signed-off-by: GuyBrush <miguel.barro@live.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
8102a4c463
commit
1f13fcc934
@@ -5176,7 +5176,7 @@ mch_system_piped(char *cmd, int options)
|
|||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* For pipes: Check for CTRL-C: send interrupt signal to
|
* For pipes: Check for CTRL-C: send interrupt signal to
|
||||||
* child. Check for CTRL-D: EOF, close pipe to child.
|
* child.
|
||||||
*/
|
*/
|
||||||
if (len == 1 && cmd != NULL)
|
if (len == 1 && cmd != NULL)
|
||||||
{
|
{
|
||||||
@@ -5186,10 +5186,22 @@ mch_system_piped(char *cmd, int options)
|
|||||||
// now put 9 as SIGKILL
|
// now put 9 as SIGKILL
|
||||||
TerminateProcess(pi.hProcess, 9);
|
TerminateProcess(pi.hProcess, 9);
|
||||||
}
|
}
|
||||||
if (ta_buf[ta_len] == Ctrl_D)
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check for CTRL-D: EOF, close pipe to child.
|
||||||
|
* Ctrl_D may be decorated by _OnChar()
|
||||||
|
*/
|
||||||
|
if ((len == 1 || len == 4 ) && cmd != NULL)
|
||||||
|
{
|
||||||
|
if (ta_buf[0] == Ctrl_D
|
||||||
|
|| (ta_buf[0] == CSI
|
||||||
|
&& ta_buf[1] == KS_MODIFIER
|
||||||
|
&& ta_buf[3] == Ctrl_D))
|
||||||
{
|
{
|
||||||
CloseHandle(g_hChildStd_IN_Wr);
|
CloseHandle(g_hChildStd_IN_Wr);
|
||||||
g_hChildStd_IN_Wr = NULL;
|
g_hChildStd_IN_Wr = NULL;
|
||||||
|
len = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -704,6 +704,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
28,
|
||||||
/**/
|
/**/
|
||||||
27,
|
27,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user