From 75debbed8b644722346c493293bcb722428d652d Mon Sep 17 00:00:00 2001 From: Case Duckworth Date: Mon, 22 Aug 2022 11:46:37 -0500 Subject: Escape shell constructions earlier --- ht.awk | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/ht.awk b/ht.awk index 2e8c5d2..59fa393 100755 --- a/ht.awk +++ b/ht.awk @@ -31,8 +31,16 @@ $0 ~ CONFIG["raw_delim"] { next } +# Shell expansion escape hatch +{ + gsub(/\\/, "\\\\", $0) + gsub(/\$\$/, "$\a", $0) + gsub(/\$[^\a]/, "\\\\&", $0) + gsub(/\$\a/, "$", $0) + gsub(/`/, "\\`", $0) +} + RAW { - gsub(/[\\\$]/, "\\\\&", $0) bufpush(html_escape($0)) next } @@ -130,11 +138,6 @@ $0 ~ ("^" COMMENT_DELIM) { $0 = templ } } - # Escape stuff for the shell -- allow $$ to expand - gsub(/\$\$/, "$\a", $0) - gsub(/\$[^\a]/, "\\\\&", $0) - gsub(/\$\a/, "$", $0) - gsub(/`/, "\\`", $0) # Push to buffer bufpush($0, sep) } @@ -161,7 +164,6 @@ END { } } - ### Buffer-y functions function buflush() { -- cgit 1.4.1-21-gabe81