From: Lennart Poettering Date: Thu, 30 Apr 2026 06:52:35 +0000 (+0200) Subject: options: get rid of "on_error" parameter to FOREACH_OPTION X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=99ce7a0770bd3eb53ebde3e93c35d8c684eb1abb;p=thirdparty%2Fsystemd.git options: get rid of "on_error" parameter to FOREACH_OPTION 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. --- diff --git a/src/ac-power/ac-power.c b/src/ac-power/ac-power.c index 530ee82ff06..2a9c5173293 100644 --- a/src/ac-power/ac-power.c +++ b/src/ac-power/ac-power.c @@ -43,7 +43,7 @@ static int parse_argv(int argc, char *argv[]) { 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(); diff --git a/src/ask-password/ask-password.c b/src/ask-password/ask-password.c index 129fbf4d7e7..6a1abf5f999 100644 --- a/src/ask-password/ask-password.c +++ b/src/ask-password/ask-password.c @@ -75,7 +75,7 @@ static int parse_argv(int argc, char *argv[]) { 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(); diff --git a/src/battery-check/battery-check.c b/src/battery-check/battery-check.c index 3e957d9fa71..13dc8960f2e 100644 --- a/src/battery-check/battery-check.c +++ b/src/battery-check/battery-check.c @@ -83,7 +83,7 @@ static int parse_argv(int argc, char *argv[]) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/binfmt/binfmt.c b/src/binfmt/binfmt.c index ed37fba276a..4e24b35db74 100644 --- a/src/binfmt/binfmt.c +++ b/src/binfmt/binfmt.c @@ -141,7 +141,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { 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(); diff --git a/src/bless-boot/bless-boot.c b/src/bless-boot/bless-boot.c index 8d2fe21a11f..e0afb3611c2 100644 --- a/src/bless-boot/bless-boot.c +++ b/src/bless-boot/bless-boot.c @@ -81,7 +81,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { 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(); diff --git a/src/bless-boot/boot-check-no-failures.c b/src/bless-boot/boot-check-no-failures.c index 37b0f7fd6d2..9fa42a7ed66 100644 --- a/src/bless-boot/boot-check-no-failures.c +++ b/src/bless-boot/boot-check-no-failures.c @@ -46,7 +46,7 @@ static int parse_argv(int argc, char *argv[]) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/bootctl/bootctl.c b/src/bootctl/bootctl.c index 967c21458d9..6869e838cfc 100644 --- a/src/bootctl/bootctl.c +++ b/src/bootctl/bootctl.c @@ -420,7 +420,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { 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"): {} diff --git a/src/cgls/cgls.c b/src/cgls/cgls.c index 9ed57c35cdf..cdb47ba8bdc 100644 --- a/src/cgls/cgls.c +++ b/src/cgls/cgls.c @@ -72,7 +72,7 @@ static int parse_argv(int argc, char *argv[]) { 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: diff --git a/src/cgtop/cgtop.c b/src/cgtop/cgtop.c index d1d20992bd1..dfee990a0f8 100644 --- a/src/cgtop/cgtop.c +++ b/src/cgtop/cgtop.c @@ -722,7 +722,7 @@ static int parse_argv(int argc, char *argv[]) { 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: diff --git a/src/core/executor.c b/src/core/executor.c index 20bc65b63e6..00761c6e3f7 100644 --- a/src/core/executor.c +++ b/src/core/executor.c @@ -64,7 +64,7 @@ static int parse_argv(int argc, char *argv[]) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/creds/creds.c b/src/creds/creds.c index e14a9a921cd..95af91c120d 100644 --- a/src/creds/creds.c +++ b/src/creds/creds.c @@ -826,7 +826,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { 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: diff --git a/src/cryptenroll/cryptenroll.c b/src/cryptenroll/cryptenroll.c index 6561d861078..bcc4b6cca66 100644 --- a/src/cryptenroll/cryptenroll.c +++ b/src/cryptenroll/cryptenroll.c @@ -279,7 +279,7 @@ static int parse_argv(int argc, char *argv[]) { 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: diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c index 43f2873da26..2130c54047c 100644 --- a/src/cryptsetup/cryptsetup.c +++ b/src/cryptsetup/cryptsetup.c @@ -2507,7 +2507,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/delta/delta.c b/src/delta/delta.c index 92b77f9ddce..27dfc105ee7 100644 --- a/src/delta/delta.c +++ b/src/delta/delta.c @@ -520,7 +520,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { 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: diff --git a/src/detect-virt/detect-virt.c b/src/detect-virt/detect-virt.c index f88528fccf9..be39634583f 100644 --- a/src/detect-virt/detect-virt.c +++ b/src/detect-virt/detect-virt.c @@ -55,7 +55,7 @@ static int parse_argv(int argc, char *argv[]) { 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(); diff --git a/src/dissect/dissect.c b/src/dissect/dissect.c index 338aed8391d..280d1ada5fd 100644 --- a/src/dissect/dissect.c +++ b/src/dissect/dissect.c @@ -232,7 +232,7 @@ static int parse_argv(int argc, char *argv[]) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_NO_PAGER: diff --git a/src/escape/escape-tool.c b/src/escape/escape-tool.c index 98f0b9a0146..09e0338c348 100644 --- a/src/escape/escape-tool.c +++ b/src/escape/escape-tool.c @@ -58,7 +58,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/factory-reset/factory-reset-tool.c b/src/factory-reset/factory-reset-tool.c index 975c391fc8f..e26e948e934 100644 --- a/src/factory-reset/factory-reset-tool.c +++ b/src/factory-reset/factory-reset-tool.c @@ -72,7 +72,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { 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(); diff --git a/src/firstboot/firstboot.c b/src/firstboot/firstboot.c index 721fbba21e1..3d768b491f8 100644 --- a/src/firstboot/firstboot.c +++ b/src/firstboot/firstboot.c @@ -1270,7 +1270,7 @@ static int parse_argv(int argc, char *argv[]) { 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: diff --git a/src/growfs/growfs.c b/src/growfs/growfs.c index efb94e37650..30d371200d4 100644 --- a/src/growfs/growfs.c +++ b/src/growfs/growfs.c @@ -162,7 +162,7 @@ static int parse_argv(int argc, char *argv[]) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/hibernate-resume/hibernate-resume.c b/src/hibernate-resume/hibernate-resume.c index 5f42097194e..d2dccd59bda 100644 --- a/src/hibernate-resume/hibernate-resume.c +++ b/src/hibernate-resume/hibernate-resume.c @@ -57,7 +57,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/hostname/hostnamectl.c b/src/hostname/hostnamectl.c index 9ad2a0b4ec0..2989840b364 100644 --- a/src/hostname/hostnamectl.c +++ b/src/hostname/hostnamectl.c @@ -767,7 +767,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { 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(); diff --git a/src/hwdb/hwdb.c b/src/hwdb/hwdb.c index 286ea000dbe..5ad3bac3211 100644 --- a/src/hwdb/hwdb.c +++ b/src/hwdb/hwdb.c @@ -83,7 +83,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/id128/id128.c b/src/id128/id128.c index fbcacdbe460..ceac8a832e5 100644 --- a/src/id128/id128.c +++ b/src/id128/id128.c @@ -239,7 +239,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { 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(); diff --git a/src/imds/imds-tool.c b/src/imds/imds-tool.c index 7752e1f769c..06bc6c4487d 100644 --- a/src/imds/imds-tool.c +++ b/src/imds/imds-tool.c @@ -84,7 +84,7 @@ static int parse_argv(int argc, char *argv[]) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/imds/imdsd.c b/src/imds/imdsd.c index c803b27829a..a0c54ad84d7 100644 --- a/src/imds/imdsd.c +++ b/src/imds/imdsd.c @@ -2251,7 +2251,7 @@ static int parse_argv(int argc, char *argv[]) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/import/export.c b/src/import/export.c index 5b233e71a5b..a77333643c6 100644 --- a/src/import/export.c +++ b/src/import/export.c @@ -240,7 +240,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/import/import-fs.c b/src/import/import-fs.c index 878d0c5b8f1..513a2c62d39 100644 --- a/src/import/import-fs.c +++ b/src/import/import-fs.c @@ -316,7 +316,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { 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: diff --git a/src/import/import.c b/src/import/import.c index 43740aeac7d..798b6b743a2 100644 --- a/src/import/import.c +++ b/src/import/import.c @@ -319,7 +319,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/import/importctl.c b/src/import/importctl.c index 65fff5f5f3a..d4a6483f36d 100644 --- a/src/import/importctl.c +++ b/src/import/importctl.c @@ -1115,7 +1115,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/import/pull.c b/src/import/pull.c index 0cc23dc6ed4..6a1f913ff8a 100644 --- a/src/import/pull.c +++ b/src/import/pull.c @@ -366,7 +366,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/journal-remote/journal-gatewayd.c b/src/journal-remote/journal-gatewayd.c index ffef7edea5e..e70fc4f6dbf 100644 --- a/src/journal-remote/journal-gatewayd.c +++ b/src/journal-remote/journal-gatewayd.c @@ -1121,7 +1121,7 @@ static int parse_argv(int argc, char *argv[]) { 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: diff --git a/src/journal-remote/journal-remote-main.c b/src/journal-remote/journal-remote-main.c index 5709f87f746..614ec61be90 100644 --- a/src/journal-remote/journal-remote-main.c +++ b/src/journal-remote/journal-remote-main.c @@ -907,7 +907,7 @@ static int parse_argv(int argc, char *argv[]) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/journal/bsod.c b/src/journal/bsod.c index 17016055902..e380e08b1c2 100644 --- a/src/journal/bsod.c +++ b/src/journal/bsod.c @@ -250,7 +250,7 @@ static int parse_argv(int argc, char *argv[]) { 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: diff --git a/src/journal/cat.c b/src/journal/cat.c index f8b5e0df317..b2b1689ff26 100644 --- a/src/journal/cat.c +++ b/src/journal/cat.c @@ -62,7 +62,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { 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: diff --git a/src/keyutil/keyutil.c b/src/keyutil/keyutil.c index 474f42fec72..2a66fabb195 100644 --- a/src/keyutil/keyutil.c +++ b/src/keyutil/keyutil.c @@ -90,7 +90,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { 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: diff --git a/src/libsystemd-network/test-ndisc-send.c b/src/libsystemd-network/test-ndisc-send.c index de04198d370..87b8abefd58 100644 --- a/src/libsystemd-network/test-ndisc-send.c +++ b/src/libsystemd-network/test-ndisc-send.c @@ -80,7 +80,7 @@ static int parse_argv(int argc, char *argv[]) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_VERSION: diff --git a/src/libsystemd/sd-journal/test-journal-append.c b/src/libsystemd/sd-journal/test-journal-append.c index 75a1fce6fc9..c71240660dc 100644 --- a/src/libsystemd/sd-journal/test-journal-append.c +++ b/src/libsystemd/sd-journal/test-journal-append.c @@ -153,7 +153,7 @@ int main(int argc, char *argv[]) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: { diff --git a/src/libudev/test-libudev.c b/src/libudev/test-libudev.c index a653f0c6c8f..06feb1ffbc6 100644 --- a/src/libudev/test-libudev.c +++ b/src/libudev/test-libudev.c @@ -430,7 +430,7 @@ static int parse_args(int argc, char *argv[], const char **syspath, const char * OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/login/inhibit.c b/src/login/inhibit.c index 4abfc1c6d3a..78c784c30fa 100644 --- a/src/login/inhibit.c +++ b/src/login/inhibit.c @@ -203,7 +203,7 @@ static int parse_argv(int argc, char *argv[], char ***remaining_args) { 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: diff --git a/src/machine-id-setup/machine-id-setup-main.c b/src/machine-id-setup/machine-id-setup-main.c index 9dd389dbaa4..2363427b5f5 100644 --- a/src/machine-id-setup/machine-id-setup-main.c +++ b/src/machine-id-setup/machine-id-setup-main.c @@ -78,7 +78,7 @@ static int parse_argv(int argc, char *argv[]) { 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: diff --git a/src/measure/measure-tool.c b/src/measure/measure-tool.c index a92a418f61f..eeb001f3fed 100644 --- a/src/measure/measure-tool.c +++ b/src/measure/measure-tool.c @@ -139,7 +139,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { 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: diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c index f6806d604ab..0917f800a1a 100644 --- a/src/modules-load/modules-load.c +++ b/src/modules-load/modules-load.c @@ -361,7 +361,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/mute-console/mute-console.c b/src/mute-console/mute-console.c index be6b5fac091..d5788de09b3 100644 --- a/src/mute-console/mute-console.c +++ b/src/mute-console/mute-console.c @@ -63,7 +63,7 @@ static int parse_argv(int argc, char *argv[]) { 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: diff --git a/src/network/generator/network-generator-main.c b/src/network/generator/network-generator-main.c index 721d36b8319..df9ce9265db 100644 --- a/src/network/generator/network-generator-main.c +++ b/src/network/generator/network-generator-main.c @@ -174,7 +174,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/notify/notify.c b/src/notify/notify.c index 00f915dc7bf..6c50e4c57c3 100644 --- a/src/notify/notify.c +++ b/src/notify/notify.c @@ -155,7 +155,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index f96a6b08b98..efe927f36e9 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -605,7 +605,7 @@ static int parse_argv(int argc, char *argv[]) { 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: diff --git a/src/oom/oomctl.c b/src/oom/oomctl.c index b73e2eb5abf..82ffe0e8379 100644 --- a/src/oom/oomctl.c +++ b/src/oom/oomctl.c @@ -93,7 +93,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/oom/oomd.c b/src/oom/oomd.c index 2250d7ec7f1..62eecfc065c 100644 --- a/src/oom/oomd.c +++ b/src/oom/oomd.c @@ -53,7 +53,7 @@ static int parse_argv(int argc, char *argv[]) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/path/path-tool.c b/src/path/path-tool.c index 22544b94638..29696501d03 100644 --- a/src/path/path-tool.c +++ b/src/path/path-tool.c @@ -206,7 +206,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/pcrextend/pcrextend.c b/src/pcrextend/pcrextend.c index 5b846b9d3a9..f452363209d 100644 --- a/src/pcrextend/pcrextend.c +++ b/src/pcrextend/pcrextend.c @@ -84,7 +84,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { 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: diff --git a/src/pcrlock/pcrlock.c b/src/pcrlock/pcrlock.c index 752f67cbdb9..09f49b2ed25 100644 --- a/src/pcrlock/pcrlock.c +++ b/src/pcrlock/pcrlock.c @@ -5193,7 +5193,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { 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: diff --git a/src/ptyfwd/ptyfwd-tool.c b/src/ptyfwd/ptyfwd-tool.c index 6d98a8e7ef0..e7b531c8730 100644 --- a/src/ptyfwd/ptyfwd-tool.c +++ b/src/ptyfwd/ptyfwd-tool.c @@ -65,7 +65,7 @@ static int parse_argv(int argc, char *argv[], char ***remaining_args) { 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: diff --git a/src/random-seed/random-seed-tool.c b/src/random-seed/random-seed-tool.c index 2eabcea176c..f573e84412f 100644 --- a/src/random-seed/random-seed-tool.c +++ b/src/random-seed/random-seed-tool.c @@ -352,7 +352,7 @@ static int parse_argv(int argc, char *argv[]) { 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: diff --git a/src/repart/repart.c b/src/repart/repart.c index 26588c6242b..ad19f0ab1ec 100644 --- a/src/repart/repart.c +++ b/src/repart/repart.c @@ -9689,7 +9689,7 @@ static int parse_argv(int argc, char *argv[]) { 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"): {} diff --git a/src/report/report-basic-server.c b/src/report/report-basic-server.c index 1e2eca31eae..bca943fd7fa 100644 --- a/src/report/report-basic-server.c +++ b/src/report/report-basic-server.c @@ -59,7 +59,7 @@ static int parse_argv(int argc, char *argv[]) { 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(); diff --git a/src/report/report.c b/src/report/report.c index fef01c094ef..390871e9428 100644 --- a/src/report/report.c +++ b/src/report/report.c @@ -987,7 +987,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { 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(); diff --git a/src/run/run.c b/src/run/run.c index 9d1042e845a..46b8014e580 100644 --- a/src/run/run.c +++ b/src/run/run.c @@ -255,7 +255,7 @@ static int parse_argv(int argc, char *argv[]) { 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"): {} @@ -783,7 +783,7 @@ static int parse_argv_sudo_mode(int argc, char *argv[]) { 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"): {} diff --git a/src/sbsign/sbsign.c b/src/sbsign/sbsign.c index 7d866fde875..f5a88b2849f 100644 --- a/src/sbsign/sbsign.c +++ b/src/sbsign/sbsign.c @@ -96,7 +96,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { 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: diff --git a/src/shared/options.h b/src/shared/options.h index 5803eb120ef..1f28dab8ad5 100644 --- a/src/shared/options.h +++ b/src/shared/options.h @@ -216,13 +216,15 @@ int option_parse( 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. */ diff --git a/src/shutdown/shutdown.c b/src/shutdown/shutdown.c index c572138596d..131550c46b2 100644 --- a/src/shutdown/shutdown.c +++ b/src/shutdown/shutdown.c @@ -66,7 +66,7 @@ static int parse_argv(int argc, char *argv[]) { 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: diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c index 3b2f9d698bb..53f306a8fae 100644 --- a/src/sleep/sleep.c +++ b/src/sleep/sleep.c @@ -731,7 +731,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/socket-activate/socket-activate.c b/src/socket-activate/socket-activate.c index 03cf327b625..768a2a3ea72 100644 --- a/src/socket-activate/socket-activate.c +++ b/src/socket-activate/socket-activate.c @@ -358,7 +358,7 @@ static int parse_argv(int argc, char *argv[], char ***remaining_args) { 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: diff --git a/src/socket-proxy/socket-proxyd.c b/src/socket-proxy/socket-proxyd.c index ea68009b358..77dc9035356 100644 --- a/src/socket-proxy/socket-proxyd.c +++ b/src/socket-proxy/socket-proxyd.c @@ -423,7 +423,7 @@ static int parse_argv(int argc, char *argv[]) { 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: diff --git a/src/ssh-generator/ssh-issue.c b/src/ssh-generator/ssh-issue.c index ee128b5e181..2028d3f9423 100644 --- a/src/ssh-generator/ssh-issue.c +++ b/src/ssh-generator/ssh-issue.c @@ -163,7 +163,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { 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: diff --git a/src/stdio-bridge/stdio-bridge.c b/src/stdio-bridge/stdio-bridge.c index 4be5205d598..01686d2cd6c 100644 --- a/src/stdio-bridge/stdio-bridge.c +++ b/src/stdio-bridge/stdio-bridge.c @@ -49,7 +49,7 @@ static int parse_argv(int argc, char *argv[]) { 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: diff --git a/src/storage/storage-block.c b/src/storage/storage-block.c index 4c21795c360..e5454a29c28 100644 --- a/src/storage/storage-block.c +++ b/src/storage/storage-block.c @@ -408,7 +408,7 @@ static int parse_argv(int argc, char *argv[]) { 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: diff --git a/src/storage/storage-fs.c b/src/storage/storage-fs.c index 47ec9829c49..c01e91a4cef 100644 --- a/src/storage/storage-fs.c +++ b/src/storage/storage-fs.c @@ -768,7 +768,7 @@ static int parse_argv(int argc, char *argv[]) { 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: diff --git a/src/storage/storagectl.c b/src/storage/storagectl.c index a21072e78f2..2bc7b7c2a3e 100644 --- a/src/storage/storagectl.c +++ b/src/storage/storagectl.c @@ -406,7 +406,7 @@ static int parse_argv(int argc, char *argv[], char ***args) { 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: diff --git a/src/storagetm/storagetm.c b/src/storagetm/storagetm.c index 5129887d795..384e88f7b88 100644 --- a/src/storagetm/storagetm.c +++ b/src/storagetm/storagetm.c @@ -80,7 +80,7 @@ static int parse_argv(int argc, char *argv[]) { 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: diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c index 6a9e33e6e6f..e124b56fc9c 100644 --- a/src/sysctl/sysctl.c +++ b/src/sysctl/sysctl.c @@ -362,7 +362,7 @@ static int parse_argv(int argc, char *argv[], char ***remaining_args) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/sysupdate/sysupdate.c b/src/sysupdate/sysupdate.c index 648dd093e61..ff882911514 100644 --- a/src/sysupdate/sysupdate.c +++ b/src/sysupdate/sysupdate.c @@ -1865,7 +1865,7 @@ static int parse_argv(int argc, char *argv[], char ***remaining_args) { 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: diff --git a/src/sysupdate/updatectl.c b/src/sysupdate/updatectl.c index 65d2c7675ed..f09c18cd173 100644 --- a/src/sysupdate/updatectl.c +++ b/src/sysupdate/updatectl.c @@ -1689,7 +1689,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { 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"): diff --git a/src/sysusers/sysusers.c b/src/sysusers/sysusers.c index 38fe4f45151..05a3e2db509 100644 --- a/src/sysusers/sysusers.c +++ b/src/sysusers/sysusers.c @@ -2103,7 +2103,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_CAT_CONFIG: diff --git a/src/test/test-chase-manual.c b/src/test/test-chase-manual.c index daa8713f480..410522ceb16 100644 --- a/src/test/test-chase-manual.c +++ b/src/test/test-chase-manual.c @@ -39,7 +39,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/test/test-options.c b/src/test/test-options.c index efa3a73d69e..d00262fa34b 100644 --- a/src/test/test-options.c +++ b/src/test/test-options.c @@ -842,7 +842,10 @@ static void test_macros_parse_one( 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 ?: "", diff --git a/src/timedate/timedatectl.c b/src/timedate/timedatectl.c index 211f7d7a6d2..c35b090035e 100644 --- a/src/timedate/timedatectl.c +++ b/src/timedate/timedatectl.c @@ -949,7 +949,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { 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(); diff --git a/src/tmpfiles/test-offline-passwd.c b/src/tmpfiles/test-offline-passwd.c index 21b2697ceea..f357ef8865d 100644 --- a/src/tmpfiles/test-offline-passwd.c +++ b/src/tmpfiles/test-offline-passwd.c @@ -45,7 +45,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { 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"): diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index 0cc06ca8ec0..44843f3ca77 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -4189,7 +4189,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { 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"): diff --git a/src/tpm2-setup/tpm2-clear.c b/src/tpm2-setup/tpm2-clear.c index b65905c03db..19186ecc02f 100644 --- a/src/tpm2-setup/tpm2-clear.c +++ b/src/tpm2-setup/tpm2-clear.c @@ -52,7 +52,7 @@ static int parse_argv(int argc, char *argv[]) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/tpm2-setup/tpm2-setup.c b/src/tpm2-setup/tpm2-setup.c index b8e585225be..bb08e31a81c 100644 --- a/src/tpm2-setup/tpm2-setup.c +++ b/src/tpm2-setup/tpm2-setup.c @@ -78,7 +78,7 @@ static int parse_argv(int argc, char *argv[]) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/tty-ask-password-agent/tty-ask-password-agent.c b/src/tty-ask-password-agent/tty-ask-password-agent.c index cd49503156d..d675e4269ac 100644 --- a/src/tty-ask-password-agent/tty-ask-password-agent.c +++ b/src/tty-ask-password-agent/tty-ask-password-agent.c @@ -475,7 +475,7 @@ static int parse_argv(int argc, char *argv[]) { 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: diff --git a/src/udev/ata_id/ata_id.c b/src/udev/ata_id/ata_id.c index ea28ad027d3..c2fabdcdb84 100644 --- a/src/udev/ata_id/ata_id.c +++ b/src/udev/ata_id/ata_id.c @@ -379,7 +379,7 @@ static int parse_argv(int argc, char *argv[]) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/udev/cdrom_id/cdrom_id.c b/src/udev/cdrom_id/cdrom_id.c index b78096bde63..27423e98515 100644 --- a/src/udev/cdrom_id/cdrom_id.c +++ b/src/udev/cdrom_id/cdrom_id.c @@ -920,7 +920,7 @@ static int parse_argv(int argc, char *argv[]) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/udev/dmi_memory_id/dmi_memory_id.c b/src/udev/dmi_memory_id/dmi_memory_id.c index 269ea152521..a1708c128c9 100644 --- a/src/udev/dmi_memory_id/dmi_memory_id.c +++ b/src/udev/dmi_memory_id/dmi_memory_id.c @@ -664,7 +664,7 @@ static int parse_argv(int argc, char *argv[]) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/udev/fido_id/fido_id.c b/src/udev/fido_id/fido_id.c index 6b31f49a480..a19c7eebec6 100644 --- a/src/udev/fido_id/fido_id.c +++ b/src/udev/fido_id/fido_id.c @@ -49,7 +49,7 @@ static int parse_argv(int argc, char *argv[]) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/udev/iocost/iocost.c b/src/udev/iocost/iocost.c index 3b926fa4a24..eadab1cb8a0 100644 --- a/src/udev/iocost/iocost.c +++ b/src/udev/iocost/iocost.c @@ -86,7 +86,7 @@ static int parse_argv(int argc, char *argv[], char ***remaining_args) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/udev/mtd_probe/mtd_probe.c b/src/udev/mtd_probe/mtd_probe.c index 3e5f162343d..fe9924f1b6e 100644 --- a/src/udev/mtd_probe/mtd_probe.c +++ b/src/udev/mtd_probe/mtd_probe.c @@ -56,7 +56,7 @@ static int parse_argv(int argc, char *argv[]) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/udev/scsi_id/scsi_id.c b/src/udev/scsi_id/scsi_id.c index f272648c420..d7970722848 100644 --- a/src/udev/scsi_id/scsi_id.c +++ b/src/udev/scsi_id/scsi_id.c @@ -228,7 +228,7 @@ static int set_options(int argc, char **argv, char *maj_min_dev) { 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: @@ -319,7 +319,7 @@ static int per_dev_options(struct scsi_id_device *dev_scsi, int *good_bad, enum /* 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') diff --git a/src/udev/udev-builtin-blkid.c b/src/udev/udev-builtin-blkid.c index 16eaced0dcf..4cd22a889fc 100644 --- a/src/udev/udev-builtin-blkid.c +++ b/src/udev/udev-builtin-blkid.c @@ -517,7 +517,7 @@ static int builtin_blkid(UdevEvent *event, int argc, char *argv[]) { 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"): {} diff --git a/src/udev/udev-builtin-hwdb.c b/src/udev/udev-builtin-hwdb.c index 4817c3af24e..dececd9c037 100644 --- a/src/udev/udev-builtin-hwdb.c +++ b/src/udev/udev-builtin-hwdb.c @@ -138,7 +138,7 @@ static int builtin_hwdb(UdevEvent *event, int argc, char *argv[]) { 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"): {} diff --git a/src/udev/udev-config.c b/src/udev/udev-config.c index e234d6fe6d9..541ba16dd90 100644 --- a/src/udev/udev-config.c +++ b/src/udev/udev-config.c @@ -179,7 +179,7 @@ static int parse_argv(int argc, char *argv[], UdevConfig *config) { 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"): {} diff --git a/src/udev/udevadm-cat.c b/src/udev/udevadm-cat.c index 48ca7204162..62d30d0234d 100644 --- a/src/udev/udevadm-cat.c +++ b/src/udev/udevadm-cat.c @@ -46,7 +46,7 @@ static int parse_argv(int argc, char *argv[], char ***remaining_args) { 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"): {} diff --git a/src/udev/udevadm-control.c b/src/udev/udevadm-control.c index ed586d5542d..a6ffe83ceca 100644 --- a/src/udev/udevadm-control.c +++ b/src/udev/udevadm-control.c @@ -74,7 +74,7 @@ static int parse_argv(int argc, char *argv[]) { 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"): {} diff --git a/src/udev/udevadm-hwdb.c b/src/udev/udevadm-hwdb.c index f4060673ebf..b029db2262a 100644 --- a/src/udev/udevadm-hwdb.c +++ b/src/udev/udevadm-hwdb.c @@ -42,7 +42,7 @@ static int parse_argv(int argc, char *argv[]) { 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"): {} diff --git a/src/udev/udevadm-info.c b/src/udev/udevadm-info.c index 3795856592c..a5cbedc8dee 100644 --- a/src/udev/udevadm-info.c +++ b/src/udev/udevadm-info.c @@ -985,7 +985,7 @@ static int parse_argv(int argc, char *argv[]) { 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"): {} diff --git a/src/udev/udevadm-lock.c b/src/udev/udevadm-lock.c index cebce08007e..c1c3211d349 100644 --- a/src/udev/udevadm-lock.c +++ b/src/udev/udevadm-lock.c @@ -62,7 +62,7 @@ static int parse_argv(int argc, char *argv[]) { 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"): {} diff --git a/src/udev/udevadm-monitor.c b/src/udev/udevadm-monitor.c index 0c165241a2e..c7d1f40fc49 100644 --- a/src/udev/udevadm-monitor.c +++ b/src/udev/udevadm-monitor.c @@ -126,7 +126,7 @@ static int parse_argv(int argc, char *argv[]) { 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"): {} diff --git a/src/udev/udevadm-settle.c b/src/udev/udevadm-settle.c index 1292462d28c..211a8ff1fbf 100644 --- a/src/udev/udevadm-settle.c +++ b/src/udev/udevadm-settle.c @@ -56,7 +56,7 @@ static int parse_argv(int argc, char *argv[]) { 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"): {} diff --git a/src/udev/udevadm-test-builtin.c b/src/udev/udevadm-test-builtin.c index 31ac5699570..9c0082800f3 100644 --- a/src/udev/udevadm-test-builtin.c +++ b/src/udev/udevadm-test-builtin.c @@ -42,7 +42,7 @@ static int parse_argv(int argc, char *argv[]) { 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"): {} diff --git a/src/udev/udevadm-test.c b/src/udev/udevadm-test.c index a7841333016..ac368e0f00e 100644 --- a/src/udev/udevadm-test.c +++ b/src/udev/udevadm-test.c @@ -61,7 +61,7 @@ static int parse_argv(int argc, char *argv[]) { 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"): {} diff --git a/src/udev/udevadm-trigger.c b/src/udev/udevadm-trigger.c index 62ccba37c5b..583d85be0b8 100644 --- a/src/udev/udevadm-trigger.c +++ b/src/udev/udevadm-trigger.c @@ -348,7 +348,7 @@ static int parse_argv(int argc, char *argv[]) { 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"): {} diff --git a/src/udev/udevadm-verify.c b/src/udev/udevadm-verify.c index 1ecc1fbee9c..f4388f843ad 100644 --- a/src/udev/udevadm-verify.c +++ b/src/udev/udevadm-verify.c @@ -51,7 +51,7 @@ static int parse_argv(int argc, char *argv[], char ***remaining_args) { 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"): {} diff --git a/src/udev/udevadm-wait.c b/src/udev/udevadm-wait.c index a361bac61a3..60174014406 100644 --- a/src/udev/udevadm-wait.c +++ b/src/udev/udevadm-wait.c @@ -324,7 +324,7 @@ static int parse_argv(int argc, char *argv[]) { 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"): {} diff --git a/src/udev/udevadm.c b/src/udev/udevadm.c index 856d1fc4c23..47d4335baec 100644 --- a/src/udev/udevadm.c +++ b/src/udev/udevadm.c @@ -71,7 +71,7 @@ static int parse_argv(int argc, char *argv[], char ***remaining_args) { 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"): {} diff --git a/src/udev/v4l_id/v4l_id.c b/src/udev/v4l_id/v4l_id.c index 93ca2d3b997..1a53e1092fb 100644 --- a/src/udev/v4l_id/v4l_id.c +++ b/src/udev/v4l_id/v4l_id.c @@ -43,7 +43,7 @@ static int parse_argv(int argc, char *argv[]) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/update-done/update-done.c b/src/update-done/update-done.c index b55c9941a9d..67ce353e114 100644 --- a/src/update-done/update-done.c +++ b/src/update-done/update-done.c @@ -98,7 +98,7 @@ static int parse_argv(int argc, char *argv[]) { 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(); diff --git a/src/validatefs/validatefs.c b/src/validatefs/validatefs.c index 58f8feb805d..506b8198709 100644 --- a/src/validatefs/validatefs.c +++ b/src/validatefs/validatefs.c @@ -66,7 +66,7 @@ static int parse_argv(int argc, char *argv[]) { 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(); diff --git a/src/varlinkctl/varlinkctl.c b/src/varlinkctl/varlinkctl.c index fbf4b217ff6..fbd5e2499a5 100644 --- a/src/varlinkctl/varlinkctl.c +++ b/src/varlinkctl/varlinkctl.c @@ -126,7 +126,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { OptionParser opts = { argc, argv }; - FOREACH_OPTION(c, &opts, /* on_error= */ return c) + FOREACH_OPTION_OR_RETURN(c, &opts) switch (c) { OPTION_COMMON_HELP: diff --git a/src/vmspawn/vmspawn.c b/src/vmspawn/vmspawn.c index 8e4cbf3e806..81c035c250d 100644 --- a/src/vmspawn/vmspawn.c +++ b/src/vmspawn/vmspawn.c @@ -328,7 +328,7 @@ static int parse_argv(int argc, char *argv[]) { 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: diff --git a/src/vpick/vpick-tool.c b/src/vpick/vpick-tool.c index f18edb263f8..f0b5ef44dfb 100644 --- a/src/vpick/vpick-tool.c +++ b/src/vpick/vpick-tool.c @@ -101,7 +101,7 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { 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"):