]> asedeno.scripts.mit.edu Git - PuTTY.git/blobdiff - unix/pty.c
Reinstate the textual service name in port forwarding Event Log
[PuTTY.git] / unix / pty.c
index b621d8be0d0ae9787306c097255fd24410094fb8..19ec8d71e3c0414d1a0c0c28e8290ea97265e0da 100644 (file)
@@ -11,7 +11,7 @@
  * a null pointer and ignored everywhere.
  */
 
-#define _XOPEN_SOURCE
+#define _XOPEN_SOURCE 600
 #define _XOPEN_SOURCE_EXTENDED
 #define _GNU_SOURCE
 
@@ -474,6 +474,8 @@ int pty_select_result(int fd, int event)
 #endif
            from_backend(pty_frontend, 0, message, strlen(message));
        }
+
+       notify_remote_exit(pty_frontend);
     }
     return !finished;
 }
@@ -619,10 +621,13 @@ static const char *pty_init(void *frontend, void **backend_handle, Config *cfg,
        /*
         * SIGINT and SIGQUIT may have been set to ignored by our
         * parent, particularly by things like sh -c 'pterm &' and
-        * some window managers. Reverse this for our child process.
+        * some window managers. SIGCHLD, meanwhile, was blocked
+        * during pt_main() startup. Reverse all this for our child
+        * process.
         */
        putty_signal(SIGINT, SIG_DFL);
        putty_signal(SIGQUIT, SIG_DFL);
+       block_signal(SIGCHLD, 0);
        if (pty_argv)
            execvp(pty_argv[0], pty_argv);
        else {
@@ -799,6 +804,11 @@ static int pty_exitcode(void *handle)
        return pty_exit_code;
 }
 
+static int pty_cfg_info(void *handle)
+{
+    return 0;
+}
+
 Backend pty_backend = {
     pty_init,
     pty_free,
@@ -815,5 +825,6 @@ Backend pty_backend = {
     pty_provide_ldisc,
     pty_provide_logctx,
     pty_unthrottle,
+    pty_cfg_info,
     1
 };