53299: zparseopts: improve accuracy of bad-option message

This commit is contained in:
dana
2025-01-02 17:28:46 -06:00
parent b6c83b47e6
commit fa571f7099
3 changed files with 11 additions and 2 deletions

View File

@@ -1,3 +1,8 @@
2026-04-05 dana <dana@dana.is>
* 53299: Src/Modules/zutil.c, Test/V12zparseopts.ztst:
zparseopts: improve accuracy of bad-option message
2026-04-05 Oliver Kiddle <opk@zsh.org>
* Ronan Pigott: 54208: Completion/Unix/Command/_cp:

View File

@@ -1980,7 +1980,7 @@ bin_zparseopts(char *nam, char **args, UNUSED(Options ops), UNUSED(int func))
while (*++o) {
if (!(d = sopts[(unsigned char) *o])) {
if (fail) {
if (*o != '-')
if (*o != '-' || o > *pp + 1)
zwarnnam(nam, "bad option: -%c", *o);
else
zwarnnam(nam, "bad option: -%s", o);

View File

@@ -57,7 +57,7 @@
0:zparseopts -D -E
>ret: 0, optv: -a -b 1 -c-d -z, argv: -e
for 1 in '-a -x -z' '-ax -z' '-a --x -z'; do
for 1 in '-a -x -z' '-ax -z' '-a --x -z' -axy -a-xy; do
() {
local -a optv
zparseopts -D -E -F -a optv - a b: c:- z
@@ -71,6 +71,10 @@
>ret: 1, optv: , argv: -ax -z
?(anon):zparseopts:2: bad option: --x
>ret: 1, optv: , argv: -a --x -z
?(anon):zparseopts:2: bad option: -x
>ret: 1, optv: , argv: -axy
?(anon):zparseopts:2: bad option: --
>ret: 1, optv: , argv: -a-xy
for 1 in '-a 1 2 3' '1 2 3'; do
() {