From e23c6e28e4c77ea99570f49fad15b947b9b6b552 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 31 Jul 2017 21:47:11 -0600 Subject: [PATCH] Echonl and better creation of output vec --- src/pty.rs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/pty.rs b/src/pty.rs index 11da5d5138..7f783cd063 100644 --- a/src/pty.rs +++ b/src/pty.rs @@ -50,6 +50,7 @@ impl Pty { let icrnl = ifl & ICRNL == ICRNL; let echo = lfl & ECHO == ECHO; + let echonl = lfl & ECHONL == ECHONL; let icanon = lfl & ICANON == ICANON; let isig = lfl & ISIG == ISIG; let iexten = lfl & IEXTEN == IEXTEN; @@ -166,7 +167,7 @@ impl Pty { if ! ignore { self.mosi.push_back(b); - if echo { + if echo || echonl && b == b'\n' { self.output(&[b]); } } @@ -174,9 +175,17 @@ impl Pty { } pub fn output(&mut self, buf: &[u8]) { - let mut vec = Vec::new(); + //TODO: Output flags + + let mut vec = Vec::with_capacity(buf.len() + 1); vec.push(0); - vec.extend_from_slice(buf); + + for &byte in buf.iter() { + let b = byte; + + vec.push(b); + } + self.miso.push_back(vec); } }