From: Yu Watanabe Date: Sun, 2 Feb 2025 06:24:17 +0000 (+0900) Subject: udevadm: introduce parse_resolve_name_timing() X-Git-Tag: v258-rc1~1413^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8623980980d3798f26f23aa56c1491cfd6ceb7b2;p=thirdparty%2Fsystemd.git udevadm: introduce parse_resolve_name_timing() --- diff --git a/src/udev/udevadm-test.c b/src/udev/udevadm-test.c index a6da337d7cb..c00cc67d7c0 100644 --- a/src/udev/udevadm-test.c +++ b/src/udev/udevadm-test.c @@ -64,10 +64,9 @@ static int parse_argv(int argc, char *argv[]) { return r; break; case 'N': - arg_resolve_name_timing = resolve_name_timing_from_string(optarg); - if (arg_resolve_name_timing < 0) - return log_error_errno(SYNTHETIC_ERRNO(EINVAL), - "--resolve-names= must be early, late or never"); + r = parse_resolve_name_timing(optarg, &arg_resolve_name_timing); + if (r <= 0) + return r; break; case 'D': { _cleanup_free_ char *p = NULL; diff --git a/src/udev/udevadm-util.c b/src/udev/udevadm-util.c index 858c23f586d..bc7b277d91b 100644 --- a/src/udev/udevadm-util.c +++ b/src/udev/udevadm-util.c @@ -12,6 +12,7 @@ #include "path-util.h" #include "string-table.h" #include "udev-ctrl.h" +#include "udev-rules.h" #include "udev-varlink.h" #include "udevadm-util.h" #include "unit-name.h" @@ -127,6 +128,21 @@ int parse_device_action(const char *str, sd_device_action_t *ret) { return 1; } +int parse_resolve_name_timing(const char *str, ResolveNameTiming *ret) { + assert(str); + + if (streq(str, "help")) + return DUMP_STRING_TABLE(resolve_name_timing, ResolveNameTiming, _RESOLVE_NAME_TIMING_MAX); + + ResolveNameTiming v = resolve_name_timing_from_string(optarg); + if (v < 0) + return log_error_errno(v, "--resolve-names= must be 'early', 'late', or 'never'."); + + if (ret) + *ret = v; + return 1; +} + static int udev_ping_via_ctrl(usec_t timeout_usec, bool ignore_connection_failure) { _cleanup_(udev_ctrl_unrefp) UdevCtrl *uctrl = NULL; int r; diff --git a/src/udev/udevadm-util.h b/src/udev/udevadm-util.h index 08462985022..cd0dcacf3c7 100644 --- a/src/udev/udevadm-util.h +++ b/src/udev/udevadm-util.h @@ -3,8 +3,11 @@ #include "sd-device.h" +#include "udev-def.h" + int find_device(const char *id, const char *prefix, sd_device **ret); int find_device_with_action(const char *id, sd_device_action_t action, sd_device **ret); int parse_device_action(const char *str, sd_device_action_t *ret); +int parse_resolve_name_timing(const char *str, ResolveNameTiming *ret); int udev_ping(usec_t timeout, bool ignore_connection_failure); int search_rules_files(char * const *a, const char *root, char ***ret); diff --git a/src/udev/udevadm-verify.c b/src/udev/udevadm-verify.c index fb8cdee4f24..9286a632e83 100644 --- a/src/udev/udevadm-verify.c +++ b/src/udev/udevadm-verify.c @@ -77,10 +77,9 @@ static int parse_argv(int argc, char *argv[]) { case 'V': return print_version(); case 'N': - arg_resolve_name_timing = resolve_name_timing_from_string(optarg); - if (arg_resolve_name_timing < 0) - return log_error_errno(arg_resolve_name_timing, - "--resolve-names= takes \"early\" or \"never\""); + r = parse_resolve_name_timing(optarg, &arg_resolve_name_timing); + if (r <= 0) + return r; /* * In the verifier "late" has the effect of "never", * and "never" would generate irrelevant diagnostics,