diff options
author | Eric Sunshine <sunshine@sunshineco.com> | 2021-12-13 09:30:55 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2021-12-14 01:15:29 +0300 |
commit | 2d53614210919c2a4eac4a03e9d34da7b9e7ff31 (patch) | |
tree | 76d0de2024e2841307f182fd9c1a996da1dfb03f /t | |
parent | 5be30d0cd301f50e5f4dd992bc11ce75f457cf46 (diff) |
chainlint.sed: make here-doc "<<-" operator recognition more POSIX-like
According to POSIX, "<<" and "<<-" are distinct shell operators. For the
latter to be recognized, no whitespace is allowed before the "-", though
whitespace is allowed after the operator. However, the chainlint
patterns which identify here-docs are both too loose and too tight,
incorrectly allowing whitespace between "<<" and "-" but disallowing it
between "-" and the here-doc tag. Fix the patterns to better match
POSIX.
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't')
-rw-r--r-- | t/chainlint.sed | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/t/chainlint.sed b/t/chainlint.sed index 2689e13636..b382746526 100644 --- a/t/chainlint.sed +++ b/t/chainlint.sed @@ -88,8 +88,8 @@ # here-doc -- swallow it to avoid false hits within its body (but keep the # command to which it was attached) -/<<[ ]*[-\\'"]*[A-Za-z0-9_]/ { - s/^\(.*\)<<[ ]*[-\\'"]*\([A-Za-z0-9_][A-Za-z0-9_]*\)['"]*/<\2>\1<</ +/<<-*[ ]*[\\'"]*[A-Za-z0-9_]/ { + s/^\(.*\)<<-*[ ]*[\\'"]*\([A-Za-z0-9_][A-Za-z0-9_]*\)['"]*/<\2>\1<</ s/[ ]*<<// :hered N @@ -152,7 +152,7 @@ s/.*\n// } :folded # here-doc -- swallow it -/<<[ ]*[-\\'"]*[A-Za-z0-9_]/bheredoc +/<<-*[ ]*[\\'"]*[A-Za-z0-9_]/bheredoc # comment or empty line -- discard since final non-comment, non-empty line # before closing ")", "done", "elsif", "else", or "fi" will need to be # re-visited to drop "suspect" marking since final line of those constructs @@ -274,7 +274,7 @@ bfolded # found here-doc -- swallow it to avoid false hits within its body (but keep # the command to which it was attached) :heredoc -s/^\(.*\)<<[ ]*[-\\'"]*\([A-Za-z0-9_][A-Za-z0-9_]*\)['"]*/<\2>\1<</ +s/^\(.*\)<<-*[ ]*[\\'"]*\([A-Za-z0-9_][A-Za-z0-9_]*\)['"]*/<\2>\1<</ s/[ ]*<<// :hdocsub N |