0
0
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:
GuyBrush
2024-01-14 20:08:40 +01:00
committed by Christian Brabandt
parent 8102a4c463
commit 1f13fcc934
2 changed files with 16 additions and 2 deletions

View File

@@ -5176,7 +5176,7 @@ mch_system_piped(char *cmd, int options)
{
/*
* 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)
{
@@ -5186,10 +5186,22 @@ mch_system_piped(char *cmd, int options)
// now put 9 as SIGKILL
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);
g_hChildStd_IN_Wr = NULL;
len = 0;
}
}

View File

@@ -704,6 +704,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
28,
/**/
27,
/**/