* fhandler_termios.cc (fhandler_termios::line_edit): Don't do special character

handling when stopped by CTRL-S.
* fhandler_tty.cc (bytes_available): Add arguments to debug_only_printf call.
* sigproc.cc (proc_subproc): Simplify some if logic.
This commit is contained in:
Christopher Faylor 2012-11-08 17:27:00 +00:00
parent 61746d6ae8
commit aaa812cbd0
4 changed files with 30 additions and 24 deletions

View File

@ -1,3 +1,11 @@
2012-11-08 Christopher Faylor <me.cygwin2012@cgf.cx>
* fhandler_termios.cc (fhandler_termios::line_edit): Don't do special
character handling when stopped by CTRL-S.
* fhandler_tty.cc (bytes_available): Add arguments to debug_only_printf
call.
* sigproc.cc (proc_subproc): Simplify some if logic.
2012-11-04 Yaakov Selkowitz <yselkowitz@users.sourceforge.net> 2012-11-04 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
* include/sys/termios.h (CBRK): Define as alias of CEOL. * include/sys/termios.h (CBRK): Define as alias of CEOL.

View File

@ -239,26 +239,6 @@ fhandler_termios::line_edit (const char *rptr, int nread, termios& ti)
paranoid_printf ("char %0c", c); paranoid_printf ("char %0c", c);
/* Check for special chars */
if (c == '\r')
{
if (ti.c_iflag & IGNCR)
continue;
if (ti.c_iflag & ICRNL)
{
c = '\n';
set_input_done (iscanon);
}
}
else if (c == '\n')
{
if (ti.c_iflag & INLCR)
c = '\r';
else
set_input_done (iscanon);
}
if (ti.c_iflag & ISTRIP) if (ti.c_iflag & ISTRIP)
c &= 0x7f; c &= 0x7f;
if (ti.c_lflag & ISIG) if (ti.c_lflag & ISIG)
@ -298,11 +278,31 @@ fhandler_termios::line_edit (const char *rptr, int nread, termios& ti)
else if ((ti.c_iflag & IXANY) && tc ()->output_stopped) else if ((ti.c_iflag & IXANY) && tc ()->output_stopped)
goto restart_output; goto restart_output;
} }
/* Check for special chars */
if (c == '\r')
{
if (ti.c_iflag & IGNCR)
continue;
if (ti.c_iflag & ICRNL)
{
c = '\n';
set_input_done (iscanon);
}
}
else if (c == '\n')
{
if (ti.c_iflag & INLCR)
c = '\r';
else
set_input_done (iscanon);
}
if (iscanon && ti.c_lflag & IEXTEN && CCEQ (ti.c_cc[VDISCARD], c)) if (iscanon && ti.c_lflag & IEXTEN && CCEQ (ti.c_cc[VDISCARD], c))
{ {
ti.c_lflag ^= FLUSHO; ti.c_lflag ^= FLUSHO;
continue; continue;
} }
if (!iscanon) if (!iscanon)
/* nothing */; /* nothing */;
else if (CCEQ (ti.c_cc[VERASE], c)) else if (CCEQ (ti.c_cc[VERASE], c))

View File

@ -67,7 +67,7 @@ bytes_available (DWORD& n, HANDLE h)
termios_printf ("PeekNamedPipe(%p) failed, %E", h); termios_printf ("PeekNamedPipe(%p) failed, %E", h);
n = 0; n = 0;
} }
debug_only_printf ("n %u, nleft %u, navail %u"); debug_only_printf ("n %u, nleft %u, navail %u", n, nleft, navail);
return succeeded; return succeeded;
} }

View File

@ -247,9 +247,7 @@ proc_subproc (DWORD what, DWORD val)
case PROC_WAIT: case PROC_WAIT:
wval->ev = NULL; // Don't know event flag yet wval->ev = NULL; // Don't know event flag yet
if (wval->pid == -1 || !wval->pid) if (wval->pid != -1 && wval->pid && !mychild (wval->pid))
child = NULL; // Not looking for a specific pid
else if (!mychild (wval->pid))
goto out; // invalid pid. flag no such child goto out; // invalid pid. flag no such child
wval->status = 0; // Don't know status yet wval->status = 0; // Don't know status yet