mirror of
https://github.com/morgan9e/systemd
synced 2026-04-15 00:47:10 +09:00
udevadm: introduce parse_resolve_name_timing()
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user