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'
assert(argc >= 0);
assert(argv);
- opterr = 0;
-
while ((c = getopt_long(argc, argv, "hu:mM:D:", options, NULL)) >= 0)
switch (c) {
case 'h':
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();