summaryrefslogtreecommitdiffstats
path: root/src/poem/read/parse.rs
diff options
context:
space:
mode:
authorRory Dudley2024-03-31 00:14:46 -0600
committerRory Dudley2024-03-31 00:14:46 -0600
commitf03f4e0fcf62c9b3267bc5d8b62068d89ec593cd (patch)
tree59601f4d451a462572ebe024121ce396749d8f03 /src/poem/read/parse.rs
parentc433dd2c400d9f2e8421f074be1b287d27b709df (diff)
downloaddwarvish-compose.tar.gz
Don't interpret environment variables in single quoted stringscompose
Previously, if an environment variable was given in a string, such as: '$PATH' or "$PATH", both would be replaced with the value of $PATH from the environment. However, for single quotes strings, any values inside should be taken at face value. In other words, echo '$PATH' should simply write out: $PATH, and not whatever environment value $PATH happens to be. This patch replaced '$' in single quoted strings with the ASCII shift out (x0e) character. Any ASCII SO placeholder is replaced with a '$' in recite(), after the environment variables have been accounted for.
Diffstat (limited to 'src/poem/read/parse.rs')
-rw-r--r--src/poem/read/parse.rs4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/poem/read/parse.rs b/src/poem/read/parse.rs
index c1dec44..0836eea 100644
--- a/src/poem/read/parse.rs
+++ b/src/poem/read/parse.rs
@@ -31,6 +31,10 @@ macro_rules! string {
match $chars.next() {
None => return Err(Mishap::PartialMishap($j, $i, $c)),
Some(c) if c == token => break,
+ Some(c) if token == '\'' && c == '$' => {
+ $word.push('\x0e');
+ $i += 1;
+ }
Some(c) => {
$word.push(c);
$i += 1;