shebang.req: Allow env with split-string arguments

Check for -S/--split-string= options, former could be (out of all
other options) prefixed only with `i`.

For now, this covers only the simplest cases where the first non-blank
word is the command name itself.

NB: /usr/bin/env -v is deliberately not supported.

Link: https://bugzilla.altlinux.org/50059
Signed-off-by: Vitaly Chikunov <vt@altlinux.org>
This commit is contained in:
Виталий Чикунов 2024-04-18 04:29:10 +03:00 committed by Arseny Maslennikov
parent 6d5ff56099
commit c0a25528e8

View File

@ -41,6 +41,13 @@ ShebangReq()
Warning "$f: trailing <CR> in arguments: $line" Warning "$f: trailing <CR> in arguments: $line"
} }
GetEnvCmd()
{
shift
expr match "$*" "-i*S\s*\(\S\+\)" ||
expr match "$*" "--split-string=\s*\(\S\+\)"
}
local RPM_FINDPACKAGE_MANDATORY=1 local RPM_FINDPACKAGE_MANDATORY=1
case "$#,$1" in case "$#,$1" in
1,*) 1,*)
@ -57,7 +64,10 @@ ShebangReq()
;; ;;
*,/usr/bin/env) *,/usr/bin/env)
CheckArgs "$*" CheckArgs "$*"
Fatal "$f: too many arguments: $line" local cmd
cmd=$(GetEnvCmd "$@") ||
Fatal "$f: too many arguments: $line"
FindPackage "$f" "$cmd"
;; ;;
*) *)
CheckArgs "$*" CheckArgs "$*"