summaryrefslogtreecommitdiff
path: root/Src/Modules/zpty.c
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Modules/zpty.c')
-rw-r--r--Src/Modules/zpty.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/Src/Modules/zpty.c b/Src/Modules/zpty.c
index f96ffa0e3..c69aa4e97 100644
--- a/Src/Modules/zpty.c
+++ b/Src/Modules/zpty.c
@@ -430,13 +430,19 @@ deleteallptycmds(void)
static void
checkptycmd(Ptycmd cmd)
{
- if (cmd->read != -1)
+ char c;
+ int r;
+
+ if (cmd->read != -1 || cmd->fin)
+ return;
+ if ((r = read(cmd->fd, &c, 1)) < 0) {
+ if (kill(cmd->pid, 0) < 0) {
+ cmd->fin = 1;
+ zclose(cmd->fd);
+ }
return;
- if (!read_poll(cmd->fd, &cmd->read, 0) &&
- kill(cmd->pid, 0) < 0) {
- cmd->fin = 1;
- zclose(cmd->fd);
}
+ if (r) cmd->read = (int) c;
}
static int