diff options
author | Case Duckworth | 2022-08-22 11:46:37 -0500 |
---|---|---|
committer | Case Duckworth | 2022-08-22 11:46:37 -0500 |
commit | 75debbed8b644722346c493293bcb722428d652d (patch) | |
tree | 3bcb4dd21aa1a9bb0998e708413ad890c1f7486e | |
parent | Correctly escape everything from heredoc (diff) | |
download | ht-75debbed8b644722346c493293bcb722428d652d.tar.gz ht-75debbed8b644722346c493293bcb722428d652d.zip |
Escape shell constructions earlier
-rwxr-xr-x | ht.awk | 16 |
1 files 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"] { | |||
31 | next | 31 | next |
32 | } | 32 | } |
33 | 33 | ||
34 | # Shell expansion escape hatch | ||
35 | { | ||
36 | gsub(/\\/, "\\\\", $0) | ||
37 | gsub(/\$\$/, "$\a", $0) | ||
38 | gsub(/\$[^\a]/, "\\\\&", $0) | ||
39 | gsub(/\$\a/, "$", $0) | ||
40 | gsub(/`/, "\\`", $0) | ||
41 | } | ||
42 | |||
34 | RAW { | 43 | RAW { |
35 | gsub(/[\\\$]/, "\\\\&", $0) | ||
36 | bufpush(html_escape($0)) | 44 | bufpush(html_escape($0)) |
37 | next | 45 | next |
38 | } | 46 | } |
@@ -130,11 +138,6 @@ $0 ~ ("^" COMMENT_DELIM) { | |||
130 | $0 = templ | 138 | $0 = templ |
131 | } | 139 | } |
132 | } | 140 | } |
133 | # Escape stuff for the shell -- allow $$ to expand | ||
134 | gsub(/\$\$/, "$\a", $0) | ||
135 | gsub(/\$[^\a]/, "\\\\&", $0) | ||
136 | gsub(/\$\a/, "$", $0) | ||
137 | gsub(/`/, "\\`", $0) | ||
138 | # Push to buffer | 141 | # Push to buffer |
139 | bufpush($0, sep) | 142 | bufpush($0, sep) |
140 | } | 143 | } |
@@ -161,7 +164,6 @@ END { | |||
161 | } | 164 | } |
162 | } | 165 | } |
163 | 166 | ||
164 | |||
165 | ### Buffer-y functions | 167 | ### Buffer-y functions |
166 | function buflush() | 168 | function buflush() |
167 | { | 169 | { |