summaryrefslogtreecommitdiff
path: root/string-list.h
diff options
context:
space:
mode:
authorLibravatar Eric Sunshine <sunshine@sunshineco.com>2018-07-13 01:52:05 -0400
committerLibravatar Junio C Hamano <gitster@pobox.com>2018-07-16 14:55:01 -0700
commita0a630192dca77794b2ea94aeb2e6dff0cc1810b (patch)
tree8578141f292e066bc5df620947e5c05e3fe4c77c /string-list.h
parentt/check-non-portable-shell: make error messages more compact (diff)
downloadtgif-a0a630192dca77794b2ea94aeb2e6dff0cc1810b.tar.xz
t/check-non-portable-shell: detect "FOO=bar shell_func"
One-shot environment variable assignments, such as 'FOO' in "FOO=bar cmd", exist only during the invocation of 'cmd'. However, if 'cmd' happens to be a shell function, then 'FOO' is assigned in the executing shell itself, and that assignment remains until the process exits (unless explicitly unset). Since this side-effect of "FOO=bar shell_func" is unlikely to be intentional, detect and report such usage. To distinguish shell functions from other commands, perform a pre-scan of shell scripts named as input, gleaning a list of function names by recognizing lines of the form (loosely matching whitespace): shell_func () { and later report suspect lines of the form (loosely matching quoted values): FOO=bar [BAR=foo ...] shell_func Also take care to stitch together incomplete lines (those ending with "\") since suspect invocations may be split over multiple lines: FOO=bar BAR=foo \ shell_func Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'string-list.h')
0 files changed, 0 insertions, 0 deletions