From 3965fd4f65f04541db4f8addb5440a5c1854465d Mon Sep 17 00:00:00 2001
From: Benedek Racz <betontalpfa@gmail.com>
Date: Wed, 22 Jan 2020 12:33:09 +0100
Subject: [PATCH] [ADD] terminal local echo feature

---
 wexpect/console_reader.py | 4 ++--
 wexpect/spawn.py          | 5 +++--
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/wexpect/console_reader.py b/wexpect/console_reader.py
index a971b27..92363c0 100644
--- a/wexpect/console_reader.py
+++ b/wexpect/console_reader.py
@@ -85,7 +85,7 @@ class ConsoleReaderBase:
     """
 
     def __init__(self, path, host_pid, cp=None, window_size_x=80, window_size_y=25,
-                 buffer_size_x=80, buffer_size_y=16000, **kwargs):
+                 buffer_size_x=80, buffer_size_y=16000, local_echo=True, **kwargs):
         """Initialize the console starts the child in it and reads the console periodically.        
 
         Args:
@@ -103,7 +103,7 @@ class ConsoleReaderBase:
         self.connection = None
         self.consin = None
         self.consout = None
-        self.local_echo = True
+        self.local_echo = local_echo
         self.console_pid = os.getpid()
         self.host_pid = host_pid
         self.host_process = psutil.Process(host_pid)
diff --git a/wexpect/spawn.py b/wexpect/spawn.py
index f18b04b..3c9376c 100644
--- a/wexpect/spawn.py
+++ b/wexpect/spawn.py
@@ -242,6 +242,7 @@ class SpawnBase:
         self.delimiter = EOF
         self.cwd = cwd
         self.env = env
+        self.echo = echo
         self.maxread = maxread # max bytes to read at one time into buffer
         self.delaybeforesend = 0.05 # Sets sleep time used just before sending data to child. Time in seconds.
         self.delayafterterminate = 0.1 # Sets delay in terminate() method to allow kernel time to update process status. Time in seconds.
@@ -913,7 +914,7 @@ class SpawnPipe(SpawnBase):
                                         "import wexpect;"
                                         "import time;"
                                         "wexpect.console_reader.logger.info('loggerStart.');"
-                                        f"wexpect.ConsoleReaderPipe(wexpect.join_args({args}), {pid});"
+                                        f"wexpect.ConsoleReaderPipe(wexpect.join_args({args}), {pid}, local_echo={self.echo});"
                                         "wexpect.console_reader.logger.info('Console finished2.');"
                                         )
         
@@ -1030,7 +1031,7 @@ class SpawnSocket(SpawnBase):
                                         "import wexpect;"
                                         "import time;"
                                         "wexpect.console_reader.logger.info('loggerStart.');"
-                                        f"wexpect.ConsoleReaderSocket(wexpect.join_args({args}), {pid}, port={self.port});"
+                                        f"wexpect.ConsoleReaderSocket(wexpect.join_args({args}), {pid}, port={self.port}, local_echo={self.echo});"
                                         "wexpect.console_reader.logger.info('Console finished2.');"
                                         )