logo

utils-std

Collection of commonly available Unix tools git clone https://anongit.hacktivis.me/git/utils-std.git/
commit: 9a9eb5d03f4f5e6b07ddcd52be19c954de5e25e0
parent 0e70da2b3e6a1f8a0ceacd5e53a88de54a9f1da4
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date:   Sat, 21 Feb 2026 21:27:03 +0100

cmd/getconf: properly handle unknown opt

Diffstat:

Mcmd/getconf.c9+++++++--
Mtest-cmd/getconf.sh6+++++-
2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/cmd/getconf.c b/cmd/getconf.c @@ -145,8 +145,7 @@ main(int argc, char *argv[]) { bool o_all = false; - int c = -1; - while((c = getopt_nolong(argc, argv, ":av:")) != -1) + for(int c = -1; (c = getopt_nolong(argc, argv, ":av:")) != -1;) { switch(c) { @@ -156,6 +155,12 @@ main(int argc, char *argv[]) case 'v': fputs("getconf: -v option is unsupported\n", stderr); return 1; + case ':': + fprintf(stderr, "getconf: error: Missing operand for option: '-%c'\n", optopt); + return 1; + case '?': + GETOPT_UNKNOWN_OPT + return 1; } } diff --git a/test-cmd/getconf.sh b/test-cmd/getconf.sh @@ -2,9 +2,10 @@ # SPDX-FileCopyrightText: 2017 Haelwenn (lanodan) Monnier <contact+utils@hacktivis.me> # SPDX-License-Identifier: MPL-2.0 +plans=4 + WD="$(dirname "$0")" target="${WD}/../cmd/getconf" -plans=3 . "${WD}/tap.sh" getconf_dupes() { "$target" -a 2>/dev/null | cut -d: -f1 | sort | uniq -d; } @@ -21,3 +22,6 @@ t_args --exit=1 wrong_sys_var:NAME_MAX 'getconf: error: unknown system_var "NAME t_args --exit=1 wrong_path_var:LOGIN_NAME_MAX 'getconf: error: unknown path_var "LOGIN_NAME_MAX" ' LOGIN_NAME_MAX . + +t_args --exit=1 unknown_opt "getconf: error: Long options unsupported: '--foo' +" --foo