From 99ce7a0770bd3eb53ebde3e93c35d8c684eb1abb Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 30 Apr 2026 08:52:35 +0200 Subject: [PATCH] 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. --- src/ac-power/ac-power.c | 2 +- src/ask-password/ask-password.c | 2 +- src/battery-check/battery-check.c | 2 +- src/binfmt/binfmt.c | 2 +- src/bless-boot/bless-boot.c | 2 +- src/bless-boot/boot-check-no-failures.c | 2 +- src/bootctl/bootctl.c | 2 +- src/cgls/cgls.c | 2 +- src/cgtop/cgtop.c | 2 +- src/core/executor.c | 2 +- src/creds/creds.c | 2 +- src/cryptenroll/cryptenroll.c | 2 +- src/cryptsetup/cryptsetup.c | 2 +- src/delta/delta.c | 2 +- src/detect-virt/detect-virt.c | 2 +- src/dissect/dissect.c | 2 +- src/escape/escape-tool.c | 2 +- src/factory-reset/factory-reset-tool.c | 2 +- src/firstboot/firstboot.c | 2 +- src/growfs/growfs.c | 2 +- src/hibernate-resume/hibernate-resume.c | 2 +- src/hostname/hostnamectl.c | 2 +- src/hwdb/hwdb.c | 2 +- src/id128/id128.c | 2 +- src/imds/imds-tool.c | 2 +- src/imds/imdsd.c | 2 +- src/import/export.c | 2 +- src/import/import-fs.c | 2 +- src/import/import.c | 2 +- src/import/importctl.c | 2 +- src/import/pull.c | 2 +- src/journal-remote/journal-gatewayd.c | 2 +- src/journal-remote/journal-remote-main.c | 2 +- src/journal/bsod.c | 2 +- src/journal/cat.c | 2 +- src/keyutil/keyutil.c | 2 +- src/libsystemd-network/test-ndisc-send.c | 2 +- src/libsystemd/sd-journal/test-journal-append.c | 2 +- src/libudev/test-libudev.c | 2 +- src/login/inhibit.c | 2 +- src/machine-id-setup/machine-id-setup-main.c | 2 +- src/measure/measure-tool.c | 2 +- src/modules-load/modules-load.c | 2 +- src/mute-console/mute-console.c | 2 +- src/network/generator/network-generator-main.c | 2 +- src/notify/notify.c | 2 +- src/nspawn/nspawn.c | 2 +- src/oom/oomctl.c | 2 +- src/oom/oomd.c | 2 +- src/path/path-tool.c | 2 +- src/pcrextend/pcrextend.c | 2 +- src/pcrlock/pcrlock.c | 2 +- src/ptyfwd/ptyfwd-tool.c | 2 +- src/random-seed/random-seed-tool.c | 2 +- src/repart/repart.c | 2 +- src/report/report-basic-server.c | 2 +- src/report/report.c | 2 +- src/run/run.c | 4 ++-- src/sbsign/sbsign.c | 2 +- src/shared/options.h | 14 ++++++++------ src/shutdown/shutdown.c | 2 +- src/sleep/sleep.c | 2 +- src/socket-activate/socket-activate.c | 2 +- src/socket-proxy/socket-proxyd.c | 2 +- src/ssh-generator/ssh-issue.c | 2 +- src/stdio-bridge/stdio-bridge.c | 2 +- src/storage/storage-block.c | 2 +- src/storage/storage-fs.c | 2 +- src/storage/storagectl.c | 2 +- src/storagetm/storagetm.c | 2 +- src/sysctl/sysctl.c | 2 +- src/sysupdate/sysupdate.c | 2 +- src/sysupdate/updatectl.c | 2 +- src/sysusers/sysusers.c | 2 +- src/test/test-chase-manual.c | 2 +- src/test/test-options.c | 5 ++++- src/timedate/timedatectl.c | 2 +- src/tmpfiles/test-offline-passwd.c | 2 +- src/tmpfiles/tmpfiles.c | 2 +- src/tpm2-setup/tpm2-clear.c | 2 +- src/tpm2-setup/tpm2-setup.c | 2 +- .../tty-ask-password-agent.c | 2 +- src/udev/ata_id/ata_id.c | 2 +- src/udev/cdrom_id/cdrom_id.c | 2 +- src/udev/dmi_memory_id/dmi_memory_id.c | 2 +- src/udev/fido_id/fido_id.c | 2 +- src/udev/iocost/iocost.c | 2 +- src/udev/mtd_probe/mtd_probe.c | 2 +- src/udev/scsi_id/scsi_id.c | 4 ++-- src/udev/udev-builtin-blkid.c | 2 +- src/udev/udev-builtin-hwdb.c | 2 +- src/udev/udev-config.c | 2 +- src/udev/udevadm-cat.c | 2 +- src/udev/udevadm-control.c | 2 +- src/udev/udevadm-hwdb.c | 2 +- src/udev/udevadm-info.c | 2 +- src/udev/udevadm-lock.c | 2 +- src/udev/udevadm-monitor.c | 2 +- src/udev/udevadm-settle.c | 2 +- src/udev/udevadm-test-builtin.c | 2 +- src/udev/udevadm-test.c | 2 +- src/udev/udevadm-trigger.c | 2 +- src/udev/udevadm-verify.c | 2 +- src/udev/udevadm-wait.c | 2 +- src/udev/udevadm.c | 2 +- src/udev/v4l_id/v4l_id.c | 2 +- src/update-done/update-done.c | 2 +- src/validatefs/validatefs.c | 2 +- src/varlinkctl/varlinkctl.c | 2 +- src/vmspawn/vmspawn.c | 2 +- src/vpick/vpick-tool.c | 2 +- 111 files changed, 123 insertions(+), 118 deletions(-) diff --git a/src/ac-power/ac-power.c b/src/ac-power/ac-power.c index 530ee82ff0..2a9c517329 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 129fbf4d7e..6a1abf5f99 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 3e957d9fa7..13dc8960f2 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 ed37fba276..4e24b35db7 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 8d2fe21a11..e0afb3611c 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 37b0f7fd6d..9fa42a7ed6 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 967c21458d..6869e838cf 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 9ed57c35cd..cdb47ba8bd 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 d1d20992bd..dfee990a0f 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 20bc65b63e..00761c6e3f 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 e14a9a921c..95af91c120 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 6561d86107..bcc4b6cca6 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 43f2873da2..2130c54047 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 92b77f9ddc..27dfc105ee 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 f88528fccf..be39634583 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 338aed8391..280d1ada5f 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 98f0b9a014..09e0338c34 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 975c391fc8..e26e948e93 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 721fbba21e..3d768b491f 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 efb94e3765..30d371200d 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 5f42097194..d2dccd59bd 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 9ad2a0b4ec..2989840b36 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 286ea000db..5ad3bac321 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 fbcacdbe46..ceac8a832e 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 7752e1f769..06bc6c4487 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 c803b27829..a0c54ad84d 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 5b233e71a5..a77333643c 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 878d0c5b8f..513a2c62d3 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 43740aeac7..798b6b743a 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 65fff5f5f3..d4a6483f36 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 0cc23dc6ed..6a1f913ff8 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 ffef7edea5..e70fc4f6db 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 5709f87f74..614ec61be9 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 1701605590..e380e08b1c 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 f8b5e0df31..b2b1689ff2 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 474f42fec7..2a66fabb19 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 de04198d37..87b8abefd5 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 75a1fce6fc..c71240660d 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 a653f0c6c8..06feb1ffbc 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 4abfc1c6d3..78c784c30f 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 9dd389dbaa..2363427b5f 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 a92a418f61..eeb001f3fe 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 f6806d604a..0917f800a1 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 be6b5fac09..d5788de09b 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 721d36b831..df9ce9265d 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 00f915dc7b..6c50e4c57c 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 f96a6b08b9..efe927f36e 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 b73e2eb5ab..82ffe0e837 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 2250d7ec7f..62eecfc065 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 22544b9463..29696501d0 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 5b846b9d3a..f452363209 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 752f67cbdb..09f49b2ed2 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 6d98a8e7ef..e7b531c873 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 2eabcea176..f573e84412 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 26588c6242..ad19f0ab1e 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 1e2eca31ea..bca943fd7f 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 fef01c094e..390871e942 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 9d1042e845..46b8014e58 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 7d866fde87..f5a88b2849 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 5803eb120e..1f28dab8ad 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 c572138596..131550c46b 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 3b2f9d698b..53f306a8fa 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 03cf327b62..768a2a3ea7 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 ea68009b35..77dc903535 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 ee128b5e18..2028d3f942 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 4be5205d59..01686d2cd6 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 4c21795c36..e5454a29c2 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 47ec9829c4..c01e91a4ce 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 a21072e78f..2bc7b7c2a3 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 5129887d79..384e88f7b8 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 6a9e33e6e6..e124b56fc9 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 648dd093e6..ff88291151 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 65d2c7675e..f09c18cd17 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 38fe4f4515..05a3e2db50 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 daa8713f48..410522ceb1 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 efa3a73d69..d00262fa34 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 211f7d7a6d..c35b090035 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 21b2697cee..f357ef8865 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 0cc06ca8ec..44843f3ca7 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 b65905c03d..19186ecc02 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 b8e585225b..bb08e31a81 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 cd49503156..d675e4269a 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 ea28ad027d..c2fabdcdb8 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 b78096bde6..27423e9851 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 269ea15252..a1708c128c 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 6b31f49a48..a19c7eebec 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 3b926fa4a2..eadab1cb8a 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 3e5f162343..fe9924f1b6 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 f272648c42..d797072284 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 16eaced0dc..4cd22a889f 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 4817c3af24..dececd9c03 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 e234d6fe6d..541ba16dd9 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 48ca720416..62d30d0234 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 ed586d5542..a6ffe83cec 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 f4060673eb..b029db2262 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 3795856592..a5cbedc8de 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 cebce08007..c1c3211d34 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 0c165241a2..c7d1f40fc4 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 1292462d28..211a8ff1fb 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 31ac569957..9c0082800f 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 a784133301..ac368e0f00 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 62ccba37c5..583d85be0b 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 1ecc1fbee9..f4388f843a 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 a361bac61a..6017401440 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 856d1fc4c2..47d4335bae 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 93ca2d3b99..1a53e1092f 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 b55c9941a9..67ce353e11 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 58f8feb805..506b819870 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 fbf4b217ff..fbd5e2499a 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 8e4cbf3e80..81c035c250 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 f18edb263f..f0b5ef44df 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"):