From 14fa40fa0407e725aaaefd10dca107c70c6928e8 Mon Sep 17 00:00:00 2001 From: Roland Kovacs <zen3ger@gmail.com> Date: Mon, 21 Jan 2019 14:24:31 +0100 Subject: [PATCH] Fixed globing after variable --- src/lib/parser/shell_expand/mod.rs | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/src/lib/parser/shell_expand/mod.rs b/src/lib/parser/shell_expand/mod.rs index 6c13a550..df93ff23 100644 --- a/src/lib/parser/shell_expand/mod.rs +++ b/src/lib/parser/shell_expand/mod.rs @@ -559,13 +559,37 @@ fn expand<E: Expander>( do_glob: bool, tilde: bool, ) { + let concat: small::String = match output.rfind(char::is_whitespace) { + Some(sep) => { + if sep != output.len() - 1 { + let word_start = sep + 1; + let mut t: small::String = output.split_at(word_start).1.into(); + t.push_str(text); + output.truncate(word_start); + t + } else { + text.into() + } + } + None => { + if output.is_empty() { + text.into() + } else { + let mut t = output.clone(); + t.push_str(text); + output.clear(); + t + } + } + }; + let expanded: small::String = if tilde { - match expand_func.tilde(text) { + match expand_func.tilde(&concat) { Some(s) => s.into(), - None => text.into(), + None => concat, } } else { - text.into() + concat }; if do_glob { -- GitLab