From: Zbigniew Jędrzejewski-Szmek Date: Mon, 8 Dec 2025 09:52:11 +0000 (+0100) Subject: journal-upload: drop custom option error handling X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c1fcc8042180b2b6e3c9acb525e730bd6d0c75d7;p=thirdparty%2Fsystemd.git journal-upload: drop custom option error handling The line to set opterr=0 was added in the initial commit in 3d090cc6f34e5970765dd1e7ee5e648a056d180d. But afaict, this never worked as intended, because ':' must be the first char in optstring given to getopt_long() for it to return ':' for a missing option value. Since this wasn't set, getopt_long() would return '?', and the missing value would be handled as an unknown option: $ build/systemd-journal-upload --key Unknown option --key. $ build/systemd-journal-upload --asdf Unknown option --asdf. Let's just do the standard thing: $ build/systemd-journal-upload --key build/systemd-journal-upload: option '--key' requires an argument $ build/systemd-journal-upload --asdf build/systemd-journal-upload: unrecognized option '--asdf' --- diff --git a/src/journal-remote/journal-upload.c b/src/journal-remote/journal-upload.c index decb6df5da8..c6123146a55 100644 --- a/src/journal-remote/journal-upload.c +++ b/src/journal-remote/journal-upload.c @@ -776,8 +776,6 @@ static int parse_argv(int argc, char *argv[]) { assert(argc >= 0); assert(argv); - opterr = 0; - while ((c = getopt_long(argc, argv, "hu:mM:D:", options, NULL)) >= 0) switch (c) { case 'h': @@ -882,14 +880,7 @@ static int parse_argv(int argc, char *argv[]) { break; case '?': - return log_error_errno(SYNTHETIC_ERRNO(EINVAL), - "Unknown option %s.", - argv[optind - 1]); - - case ':': - return log_error_errno(SYNTHETIC_ERRNO(EINVAL), - "Missing argument to %s.", - argv[optind - 1]); + return -EINVAL; default: assert_not_reached();