]> asedeno.scripts.mit.edu Git - PuTTY.git/blobdiff - unix/uxpty.c
Giant const-correctness patch of doom!
[PuTTY.git] / unix / uxpty.c
index 5ebd05047746199aeccdc3d3bb5daa044d36bb15..84f36ef87bef2c5062829933dd5d48c77c0b11f5 100644 (file)
@@ -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);
@@ -714,8 +706,8 @@ static void pty_uxsel_setup(Pty pty)
  * freed by the caller.
  */
 static const char *pty_init(void *frontend, void **backend_handle, Conf *conf,
-                           char *host, int port, char **realhost, int nodelay,
-                           int keepalive)
+                           const char *host, int port, char **realhost,
+                            int nodelay, int keepalive)
 {
     int slavefd;
     pid_t pid, pgrp;
@@ -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;
 }
@@ -1012,7 +1008,7 @@ static void pty_try_write(Pty pty)
 /*
  * Called to send data down the pty.
  */
-static int pty_send(void *handle, char *buf, int len)
+static int pty_send(void *handle, const char *buf, int len)
 {
     Pty pty = (Pty)handle;