I am really not a fan of full code lines passed to macros as parameters.
Let's get rid of the 3rd parameter of FOREACH_OPTION() hence:
1. Let's return errors just as a regular value (though a negative one),
that can be handled via a OPTION_ERROR case statement for the switch.
This normalizes handling of the error, just like any other event
returned by the option parser.
2. In order to avoid exploding the amount of boilerplate in each use
(that just propagates the error on OPTION_ERROR), let's then
introduce an explicit FOREACH_OPTION_OR_RETURN(), that returns from
the calling function on its own (and makes that clear in the name).
Together this cleans up, normalizes the logic and shortens the code.
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
return help();
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
return help();
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
return help();
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
return help();
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_GROUP("Block Device Discovery Commands"): {}
OptionParser opts = { argc, argv, OPTION_PARSER_RETURN_POSITIONAL_ARGS };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
return help();
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_NO_PAGER:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
return help();
OptionParser opts = { argc, argv };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
return help();
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
return help();
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv, OPTION_PARSER_STOP_AT_FIRST_NONOPTION };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_VERSION:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP: {
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv, OPTION_PARSER_STOP_AT_FIRST_NONOPTION };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv, OPTION_PARSER_STOP_AT_FIRST_NONOPTION };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c) {
+ FOREACH_OPTION_OR_RETURN(c, &opts) {
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
bool auto_location = true;
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv, OPTION_PARSER_STOP_AT_FIRST_NONOPTION };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
bool auto_public_key_pcr_mask = true, auto_pcrlock = true;
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_GROUP("Options"): {}
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
return help();
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
return help();
OptionParser opts = { argc, argv, OPTION_PARSER_STOP_AT_FIRST_NONOPTION, "systemd-run" };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_NAMESPACE("systemd-run"): {}
OptionParser opts = { argc, argv, OPTION_PARSER_STOP_AT_FIRST_NONOPTION, "run0" };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_NAMESPACE("run0"): {}
OptionParser opts = { argc, argv };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
const Option options_end[],
OptionParser *state);
-/* Iterate over options. */
-#define FOREACH_OPTION(c, state, on_error) \
+/* Iterate over options. Don't forget to handle errors (negative c)! */
+#define FOREACH_OPTION(c, state) \
+ for (int c; (c = option_parse(ALIGN_PTR(__start_SYSTEMD_OPTIONS), __stop_SYSTEMD_OPTIONS, state)) != 0; )
+
+#define FOREACH_OPTION_OR_RETURN(c, state) \
for (int c; (c = option_parse(ALIGN_PTR(__start_SYSTEMD_OPTIONS), __stop_SYSTEMD_OPTIONS, state)) != 0; ) \
- if (c < 0) { \
- on_error; \
- break; \
- } else
+ if (c < 0) \
+ return c; \
+ else
/* Those helpers are used *during* option parsing and allow looking at or taking the next item in
* the argv array, either an option or a positional parameter. */
OptionParser opts = { argc, argv, OPTION_PARSER_RETURN_POSITIONAL_ARGS };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_LOG_LEVEL:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv, OPTION_PARSER_STOP_AT_FIRST_NONOPTION };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
const char *verb = NULL;
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
assert(argv);
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
assert(argv);
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
assert(argv);
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_LONG("reboot", NULL, "Reboot after updating to newer version"):
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_CAT_CONFIG:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv, mode, namespace };
- FOREACH_OPTION(c, &opts, assert_not_reached()) {
+ FOREACH_OPTION(c, &opts) {
+
+ assert(c >= 0);
+
log_debug("%c %s: %s=%s",
opts.opt->short_code != 0 ? opts.opt->short_code : ' ',
opts.opt->long_code ?: "",
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
return help();
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION('r', "root", "PATH", "Operate on an alternate filesystem root"):
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_LONG("create", NULL, "Create and adjust files and directories"):
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
int r;
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
/* We reuse the option parser, but only a subset of the options is supported here.
* If any others are encountered, return an error. */
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
if (opts.opt->short_code == 'b')
*good_bad = 0;
else if (opts.opt->short_code == 'g')
OptionParser opts = { argc, argv, .namespace = "udev-builtin-blkid" };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_NAMESPACE("udev-builtin-blkid"): {}
OptionParser opts = { argc, argv, .namespace = "udev-builtin-hwdb" };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_NAMESPACE("udev-builtin-hwdb"): {}
OptionParser opts = { argc, argv, OPTION_PARSER_NORMAL, "udevd" };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_NAMESPACE("udevd"): {}
OptionParser opts = { argc, argv, .namespace = "udevadm-cat" };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_NAMESPACE("udevadm-cat"): {}
OptionParser opts = { argc, argv, .namespace = "udevadm-control" };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_NAMESPACE("udevadm-control"): {}
OptionParser opts = { argc, argv, .namespace = "udevadm-hwdb" };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_NAMESPACE("udevadm-hwdb"): {}
OptionParser opts = { argc, argv, .namespace = "udevadm-info" };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_NAMESPACE("udevadm-info"): {}
OptionParser opts = { argc, argv, OPTION_PARSER_STOP_AT_FIRST_NONOPTION, "udevadm-lock" };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_NAMESPACE("udevadm-lock"): {}
OptionParser opts = { argc, argv, .namespace = "udevadm-monitor" };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_NAMESPACE("udevadm-monitor"): {}
OptionParser opts = { argc, argv, .namespace = "udevadm-settle" };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_NAMESPACE("udevadm-settle"): {}
OptionParser opts = { argc, argv, .namespace = "udevadm-test-builtin" };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_NAMESPACE("udevadm-test-builtin"): {}
OptionParser opts = { argc, argv, .namespace = "udevadm-test" };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_NAMESPACE("udevadm-test"): {}
OptionParser opts = { argc, argv, .namespace = "udevadm-trigger" };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_NAMESPACE("udevadm-trigger"): {}
OptionParser opts = { argc, argv, .namespace = "udevadm-verify" };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_NAMESPACE("udevadm-verify"): {}
OptionParser opts = { argc, argv, .namespace = "udevadm-wait" };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_NAMESPACE("udevadm-wait"): {}
OptionParser opts = { argc, argv, OPTION_PARSER_STOP_AT_FIRST_NONOPTION, "udevadm" };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_NAMESPACE("udevadm"): {}
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
return help();
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
return help();
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv, OPTION_PARSER_STOP_AT_FIRST_NONOPTION };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION_COMMON_HELP:
OptionParser opts = { argc, argv };
- FOREACH_OPTION(c, &opts, /* on_error= */ return c)
+ FOREACH_OPTION_OR_RETURN(c, &opts)
switch (c) {
OPTION('B', "basename", "BASENAME", "Look for specified basename"):