with F_GETFD and F_SETFD.
git-svn-id: svn://svn.tartarus.org/sgt/putty@6978
cda61777-01e9-0310-a592-
d414129be87e
void (*putty_signal(int sig, void (*func)(int)))(int);
void block_signal(int sig, int block_it);
void (*putty_signal(int sig, void (*func)(int)))(int);
void block_signal(int sig, int block_it);
+/* uxmisc.c */
+int cloexec(int);
+
/*
* Exports from unicode.c.
*/
/*
* Exports from unicode.c.
*/
- fcntl(sock, F_SETFD, FD_CLOEXEC);
addr.sun_family = AF_UNIX;
strncpy(addr.sun_path, name, sizeof(addr.sun_path));
addr.sun_family = AF_UNIX;
strncpy(addr.sun_path, name, sizeof(addr.sun_path));
* PuTTY miscellaneous Unix stuff
*/
* PuTTY miscellaneous Unix stuff
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
"PuTTY Master Key (DSA), 1024-bit:\n"
" " PGP_DSA_MASTER_KEY_FP "\n", stdout);
}
"PuTTY Master Key (DSA), 1024-bit:\n"
" " PGP_DSA_MASTER_KEY_FP "\n", stdout);
}
+
+/*
+ * Set FD_CLOEXEC on a file descriptor
+ */
+int cloexec(int fd) {
+ int fdflags;
+
+ fdflags = fcntl(fd, F_GETFD);
+ if (fdflags == -1) return -1;
+ return fcntl(fd, F_SETFD, fdflags | FD_CLOEXEC);
+}
- fcntl(s, F_SETFD, FD_CLOEXEC);
if (sock->oobinline) {
int b = TRUE;
if (sock->oobinline) {
int b = TRUE;
- fcntl(s, F_SETFD, FD_CLOEXEC);
{
if (pty->slave_fd < 0) {
pty->slave_fd = open(pty->name, O_RDWR);
{
if (pty->slave_fd < 0) {
pty->slave_fd = open(pty->name, O_RDWR);
- fcntl(pty->slave_fd, F_SETFD, FD_CLOEXEC);
+ cloexec(pty->slave_fd);
strcpy(pty->name, master_name);
pty->name[5] = 't'; /* /dev/ptyXX -> /dev/ttyXX */
strcpy(pty->name, master_name);
pty->name[5] = 't'; /* /dev/ptyXX -> /dev/ttyXX */
- fcntl(pty->master_fd, F_SETFD, FD_CLOEXEC);
+ cloexec(pty->master_fd);
if (pty_open_slave(pty) >= 0 &&
access(pty->name, R_OK | W_OK) == 0)
if (pty_open_slave(pty) >= 0 &&
access(pty->name, R_OK | W_OK) == 0)
- fcntl(pty->master_fd, F_SETFD, FD_CLOEXEC);
+ cloexec(pty->master_fd);
pty->name[FILENAME_MAX-1] = '\0';
strncpy(pty->name, ptsname(pty->master_fd), FILENAME_MAX-1);
pty->name[FILENAME_MAX-1] = '\0';
strncpy(pty->name, ptsname(pty->master_fd), FILENAME_MAX-1);
if (serial->fd < 0)
return "Unable to open serial port";
if (serial->fd < 0)
return "Unable to open serial port";
- fcntl(serial->fd, F_SETFD, FD_CLOEXEC);
err = serial_configure(serial, cfg);
if (err)
err = serial_configure(serial, cfg);
if (err)