X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=unix%2Fuxpty.c;h=54ba082c3a0e6a74107a1e923c2ff1001d9a418f;hb=f004bcca17a789356c32527a396b68b71a773db2;hp=5ebd05047746199aeccdc3d3bb5daa044d36bb15;hpb=5a04ae342012c649c4ba6529a0f832aa2534456b;p=PuTTY.git diff --git a/unix/uxpty.c b/unix/uxpty.c index 5ebd0504..54ba082c 100644 --- a/unix/uxpty.c +++ b/unix/uxpty.c @@ -373,15 +373,7 @@ static void pty_open_master(Pty pty) strncpy(pty->name, ptsname(pty->master_fd), FILENAME_MAX-1); #endif - { - /* - * Set the pty master into non-blocking mode. - */ - int fl; - fl = fcntl(pty->master_fd, F_GETFL); - if (fl != -1 && !(fl & O_NONBLOCK)) - fcntl(pty->master_fd, F_SETFL, fl | O_NONBLOCK); - } + nonblock(pty->master_fd); if (!ptys_by_fd) ptys_by_fd = newtree234(pty_compare_by_fd); @@ -808,7 +800,7 @@ static const char *pty_init(void *frontend, void **backend_handle, Conf *conf, } close(pty->master_fd); - fcntl(slavefd, F_SETFD, 0); /* don't close on exec */ + noncloexec(slavefd); dup2(slavefd, 0); dup2(slavefd, 1); dup2(slavefd, 2); @@ -820,7 +812,11 @@ static const char *pty_init(void *frontend, void **backend_handle, Conf *conf, pgrp = getpid(); tcsetpgrp(0, pgrp); setpgid(pgrp, pgrp); - close(open(pty->name, O_WRONLY, 0)); + { + int ptyfd = open(pty->name, O_WRONLY, 0); + if (ptyfd >= 0) + close(ptyfd); + } setpgid(pgrp, pgrp); { char *term_env_var = dupprintf("TERM=%s", @@ -942,7 +938,7 @@ static const char *pty_init(void *frontend, void **backend_handle, Conf *conf, *backend_handle = pty; - *realhost = dupprintf("\0"); + *realhost = dupstr(""); return NULL; }