From 8f46bf2446884995c4729381bf156fa2c009080f Mon Sep 17 00:00:00 2001 From: Zachery Casey Date: Wed, 19 Sep 2018 10:05:41 -0400 Subject: [PATCH] Ignore time delay in terminfo to avoid garbage The current parser does not support a time delay feature in terminfo. This commit adds a state to the parser state machine during terminfo field expansion to prevent printing this unsupported feature. --- src/terminfo/parm.rs | 9 +++++++++ tests/data/vt100 | Bin 0 -> 1190 bytes 2 files changed, 9 insertions(+) create mode 100644 tests/data/vt100 diff --git a/src/terminfo/parm.rs b/src/terminfo/parm.rs index 259e2769..99b2467e 100644 --- a/src/terminfo/parm.rs +++ b/src/terminfo/parm.rs @@ -18,6 +18,7 @@ use std::iter::repeat; #[derive(Clone, Copy, PartialEq)] enum States { Nothing, + Delay, Percent, SetVar, GetVar, @@ -164,10 +165,18 @@ pub fn expand(cap: &[u8], params: &[Param], vars: &mut Variables) -> Result { if cur == '%' { state = Percent; + } else if cur == '$' { + state = Delay; } else { output.push(c); } } + Delay => { + old_state = Nothing; + if cur == '>' { + state = Nothing; + } + } Percent => { match cur { '%' => { diff --git a/tests/data/vt100 b/tests/data/vt100 new file mode 100644 index 0000000000000000000000000000000000000000..d9d7ead9de3fe2109f48ef40678bee06cde3fe52 GIT binary patch literal 1190 zcmdT?OKTHR6h1cwT8k#Q2uKG?7P;DjkC{A7bz(wW7eTG9RS+7*hE85>CYih@Nt+hj zx)rxBU5bdJprD|jpbHl+T)1%I!i7thV*Ku%N!y@*z{`B+eCIolJ9Cn8c8reD2>IBA z$8Kt>+LQKp*6bO%)u0T5lkJmP!_HP#b4JiE8M*2d5t9!&2LTQf;@-m+X_O9AU!HyN zL>}@|fW~p>38}~FB3%MolF?Pz>ykM=2IZ-`C+_zRq$`iHig{r_0N zGeQSR$?y`lG;ZkJ3Ui|lAyR-zE1C15L`+SBUkD{4!tV$}Eoqb`X-xFspQmKzLW!`b zo{`=M7BgK*8<6;4BJhJ>lE+trmk^a#9`2=Ly?NeRNRT9NX58rin7zZ>Ek&+*PWfD zX+J)v1~dTNwO|1iT3N|v^Z7zyZEbzMTsF;0rCPPDTCHAhG@8v;%eLF?PN&=5*x20c d^|rRQxA6_Bcu`txYjReZQZZ>Bg690*e*k`ZKK}p! literal 0 HcmV?d00001