mirror of
https://github.com/morgan9e/systemd
synced 2026-04-15 00:47:10 +09:00
udevadm-verify: document '--resolve-names=late' and accept 'never' as is
When '--resolve-names=late', systemd-udevd resolves user/group names during each event being processed, and does not verify names on parse. When '--resolve-names=never', systemd-udevd refuses any user/group names on parse. Hence, the parser of udev rules behaves diffrently. Let's not convert 'never' -> 'late' silently, and use the specified option as is. This also updates man page and shell completion for --resolve-names option.
This commit is contained in:
@@ -882,13 +882,11 @@
|
||||
<term><option>-N</option></term>
|
||||
<term><option>--resolve-names=<constant>early</constant>|<constant>late</constant>|<constant>never</constant></option></term>
|
||||
<listitem>
|
||||
<para>Specify when udevadm should resolve names of users
|
||||
and groups. When set to <constant>early</constant> (the
|
||||
default), names will be resolved when the rules are
|
||||
parsed. When set to <constant>late</constant>, names will
|
||||
be resolved for every event. When set to
|
||||
<constant>never</constant>, names will never be resolved
|
||||
and all devices will be owned by root.</para>
|
||||
<para>Specify when <command>udevadm</command> should resolve names of users and groups specified
|
||||
in udev rules. When set to <constant>early</constant> (the default), names will be resolved when
|
||||
the rules are parsed. When set to <constant>late</constant>, names will be resolved during the
|
||||
event being processed. When set to <constant>never</constant>, names will never be resolved and
|
||||
relevant udev rules will be ignored.</para>
|
||||
|
||||
<xi:include href="version-info.xml" xpointer="v209"/>
|
||||
</listitem>
|
||||
@@ -976,13 +974,14 @@
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><option>-N</option></term>
|
||||
<term><option>--resolve-names=<constant>early</constant>|<constant>never</constant></option></term>
|
||||
<term><option>--resolve-names=<constant>early</constant>|<constant>late</constant>|<constant>never</constant></option></term>
|
||||
<listitem>
|
||||
<para>Specify when udevadm should resolve names of users
|
||||
and groups. When set to <constant>early</constant> (the
|
||||
default), names will be resolved when the rules are
|
||||
parsed. When set to <constant>never</constant>, names will
|
||||
never be resolved.</para>
|
||||
<para>Specify when <command>udevadm</command> should resolve names of users and groups specified
|
||||
in udev rules. When set to <constant>early</constant> (the default), names will be resolved when
|
||||
the rules are parsed. When set to <constant>late</constant>, names will not be verified, as
|
||||
<command>systemd-udevd</command> resolves names during each event being processed. When set to
|
||||
<constant>never</constant>, names will never be resolved and relevant rules will be ignored.
|
||||
</para>
|
||||
|
||||
<xi:include href="version-info.xml" xpointer="v254"/>
|
||||
</listitem>
|
||||
|
||||
@@ -258,7 +258,7 @@ _udevadm() {
|
||||
comps=$( udevadm test --action help )
|
||||
;;
|
||||
-N|--resolve-names)
|
||||
comps='early late never'
|
||||
comps=$( udevadm test --resolve-names help )
|
||||
;;
|
||||
-D|--extra-rules-dir)
|
||||
comps=''
|
||||
@@ -304,7 +304,7 @@ _udevadm() {
|
||||
if __contains_word "$prev" ${OPTS[VERIFY_ARG]}; then
|
||||
case $prev in
|
||||
-N|--resolve-names)
|
||||
comps='early never'
|
||||
comps=$( udevadm test --resolve-names help )
|
||||
;;
|
||||
--root)
|
||||
comps=''
|
||||
|
||||
@@ -88,7 +88,8 @@ _udevadm_test(){
|
||||
'(-)'{-h,--help}'[Show help]' \
|
||||
'(-)'{-V,--version}'[Show package version]' \
|
||||
'--action=[The action string.]:actions:(add change remove move online offline bind unbind)' \
|
||||
'--subsystem=[The subsystem string.]' \
|
||||
'(-N --resolve-names)'{-N,--resolve-names=}'[When to resolve names.]:resolve:(early late never)' \
|
||||
'--subsystem=[The subsystem string.]' \
|
||||
'(-D --extra-rules-dir=)'{-D,--extra-rules-dir=}'[Also load rules from the directory.]' \
|
||||
'(-v --verbose)'{-v,--verbose}'[Show verbose logs.]' \
|
||||
'*::devpath:_files -P /sys/ -W /sys'
|
||||
@@ -119,7 +120,7 @@ _udevadm_verify(){
|
||||
_arguments \
|
||||
'(- *)'{-h,--help}'[Show help]' \
|
||||
'(- *)'{-V,--version}'[Show package version]' \
|
||||
'(-N --resolve-names)'{-N+,--resolve-names=}'[When to resolve names.]:resolve:(early never)' \
|
||||
'(-N --resolve-names)'{-N,--resolve-names=}'[When to resolve names.]:resolve:(early late never)' \
|
||||
'--root=[Operate on catalog hierarchy under specified directory]:directories:_directories' \
|
||||
--no-summary'[Do not show summary.]' \
|
||||
--no-style'[Ignore style issues.]' \
|
||||
|
||||
@@ -36,7 +36,7 @@ static int help(void) {
|
||||
"\n%sVerify udev rules files.%s\n\n"
|
||||
" -h --help Show this help\n"
|
||||
" -V --version Show package version\n"
|
||||
" -N --resolve-names=early|never When to resolve names\n"
|
||||
" -N --resolve-names=early|late|never When to resolve names\n"
|
||||
" --root=PATH Operate on an alternate filesystem root\n"
|
||||
" --no-summary Do not show summary\n"
|
||||
" --no-style Ignore style issues\n"
|
||||
@@ -80,13 +80,6 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
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,
|
||||
* so map "never" to "late".
|
||||
*/
|
||||
if (arg_resolve_name_timing == RESOLVE_NAME_NEVER)
|
||||
arg_resolve_name_timing = RESOLVE_NAME_LATE;
|
||||
break;
|
||||
case ARG_ROOT:
|
||||
r = parse_path_argument(optarg, /* suppress_root= */ true, &arg_root);
|
||||
|
||||
@@ -136,7 +136,7 @@ if want_tests != 'false'
|
||||
test('udev-rules-check',
|
||||
exe,
|
||||
suite : 'udev',
|
||||
args : ['verify', '--resolve-names=never', all_rules])
|
||||
args : ['verify', '--resolve-names=late', all_rules])
|
||||
endif
|
||||
|
||||
############################################################
|
||||
|
||||
@@ -103,6 +103,8 @@ assert_0 -h
|
||||
assert_0 --help
|
||||
assert_0 -V
|
||||
assert_0 --version
|
||||
assert_0 -N help
|
||||
assert_0 --resolve-names help
|
||||
|
||||
# unrecognized option '--unknown'
|
||||
assert_1 --unknown
|
||||
@@ -112,7 +114,7 @@ assert_1 -N
|
||||
assert_1 -N now
|
||||
# option '--resolve-names' requires an argument
|
||||
assert_1 --resolve-names
|
||||
# --resolve-names= takes "early" or "never"
|
||||
# --resolve-names= takes "early", "late", or "never"
|
||||
assert_1 --resolve-names=now
|
||||
# Failed to parse rules file ./nosuchfile: No such file or directory
|
||||
assert_1 ./nosuchfile
|
||||
|
||||
Reference in New Issue
Block a user