static int pty_open_slave(Pty pty)
{
- if (pty->slave_fd < 0)
+ if (pty->slave_fd < 0) {
pty->slave_fd = open(pty->name, O_RDWR);
+ cloexec(pty->slave_fd);
+ }
return pty->slave_fd;
}
strcpy(pty->name, master_name);
pty->name[5] = 't'; /* /dev/ptyXX -> /dev/ttyXX */
+ cloexec(pty->master_fd);
+
if (pty_open_slave(pty) >= 0 &&
access(pty->name, R_OK | W_OK) == 0)
goto got_one;
exit(1);
}
+ cloexec(pty->master_fd);
+
pty->name[FILENAME_MAX-1] = '\0';
strncpy(pty->name, ptsname(pty->master_fd), FILENAME_MAX-1);
#endif
*backend_handle = pty;
+ *realhost = dupprintf("\0");
+
return NULL;
}
return NULL;
}
-static Socket pty_socket(void *handle)
+static int pty_connected(void *handle)
{
/* Pty pty = (Pty)handle; */
- return NULL; /* shouldn't ever be needed */
+ return TRUE;
}
static int pty_sendok(void *handle)
pty_size,
pty_special,
pty_get_specials,
- pty_socket,
+ pty_connected,
pty_exitcode,
pty_sendok,
pty_ldisc,