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